@trillboards/cli 0.1.0 → 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.
Files changed (59) hide show
  1. package/README.md +415 -43
  2. package/dist/ads-client.d.ts +146 -0
  3. package/dist/ads-client.js +310 -0
  4. package/dist/agent-hook.d.ts +64 -0
  5. package/dist/agent-hook.js +96 -0
  6. package/dist/capability.d.ts +31 -0
  7. package/dist/capability.js +67 -0
  8. package/dist/claude-settings.d.ts +64 -0
  9. package/dist/claude-settings.js +126 -0
  10. package/dist/commands/ads/disable.d.ts +10 -0
  11. package/dist/commands/ads/disable.js +25 -0
  12. package/dist/commands/ads/enable.d.ts +11 -0
  13. package/dist/commands/ads/enable.js +32 -0
  14. package/dist/commands/ads/hook.d.ts +16 -0
  15. package/dist/commands/ads/hook.js +90 -0
  16. package/dist/commands/ads/login.d.ts +21 -0
  17. package/dist/commands/ads/login.js +108 -0
  18. package/dist/commands/ads/start.d.ts +20 -0
  19. package/dist/commands/ads/start.js +175 -0
  20. package/dist/commands/code.d.ts +12 -0
  21. package/dist/commands/code.js +84 -0
  22. package/dist/commands/devices/reconcile.d.ts +10 -0
  23. package/dist/commands/devices/reconcile.js +94 -0
  24. package/dist/commands/generated/generated-csi-venue-history.d.ts +15 -0
  25. package/dist/commands/generated/generated-csi-venue-history.js +35 -0
  26. package/dist/commands/generated/generated-csi-venue-occupancy.d.ts +14 -0
  27. package/dist/commands/generated/generated-csi-venue-occupancy.js +32 -0
  28. package/dist/commands/generated/generated-federated-get-latest-model-descriptor.d.ts +19 -0
  29. package/dist/commands/generated/generated-federated-get-latest-model-descriptor.js +47 -0
  30. package/dist/commands/generated/generated-federated-get-model-weights.d.ts +19 -0
  31. package/dist/commands/generated/generated-federated-get-model-weights.js +47 -0
  32. package/dist/commands/generated/generated-federated-gradient-upload.d.ts +13 -0
  33. package/dist/commands/generated/generated-federated-gradient-upload.js +32 -0
  34. package/dist/commands/generated/generated-federated-performance-upload.d.ts +13 -0
  35. package/dist/commands/generated/generated-federated-performance-upload.js +32 -0
  36. package/dist/commands/generated/generated-federated-taste-upload.d.ts +13 -0
  37. package/dist/commands/generated/generated-federated-taste-upload.js +32 -0
  38. package/dist/commands/listen.js +9 -1
  39. package/dist/commands/logs/tail.js +10 -1
  40. package/dist/config.d.ts +21 -0
  41. package/dist/config.js +34 -9
  42. package/dist/dead-time.d.ts +51 -0
  43. package/dist/dead-time.js +119 -0
  44. package/dist/format-helpers.d.ts +37 -0
  45. package/dist/format-helpers.js +41 -0
  46. package/dist/http.d.ts +8 -1
  47. package/dist/http.js +6 -1
  48. package/dist/machine-id.d.ts +12 -0
  49. package/dist/machine-id.js +22 -0
  50. package/dist/pty-wrapper.d.ts +88 -0
  51. package/dist/pty-wrapper.js +287 -0
  52. package/dist/render-runner.d.ts +48 -0
  53. package/dist/render-runner.js +151 -0
  54. package/dist/render.d.ts +82 -0
  55. package/dist/render.js +124 -0
  56. package/dist/user-auth.d.ts +57 -0
  57. package/dist/user-auth.js +110 -0
  58. package/oclif.manifest.json +1186 -301
  59. package/package.json +9 -2
@@ -133,6 +133,60 @@
133
133
  "billing.js"
134
134
  ]
135
135
  },
136
+ "code": {
137
+ "aliases": [],
138
+ "args": {},
139
+ "description": "Wrap your coding agent and earn from its dead-time (plays text/image/video ads while it thinks)",
140
+ "examples": [
141
+ "<%= config.bin %> code",
142
+ "<%= config.bin %> code claude",
143
+ "<%= config.bin %> code -- codex --foo"
144
+ ],
145
+ "flags": {
146
+ "api-key": {
147
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
148
+ "env": "TRILLBOARDS_API_KEY",
149
+ "name": "api-key",
150
+ "hasDynamicHelp": false,
151
+ "multiple": false,
152
+ "type": "option"
153
+ },
154
+ "base-url": {
155
+ "description": "API base URL",
156
+ "name": "base-url",
157
+ "default": "https://api.trillboards.com",
158
+ "hasDynamicHelp": false,
159
+ "multiple": false,
160
+ "type": "option"
161
+ },
162
+ "format": {
163
+ "description": "Output format",
164
+ "name": "format",
165
+ "hasDynamicHelp": false,
166
+ "multiple": false,
167
+ "options": [
168
+ "json",
169
+ "table",
170
+ "yaml"
171
+ ],
172
+ "type": "option"
173
+ }
174
+ },
175
+ "hasDynamicHelp": false,
176
+ "hiddenAliases": [],
177
+ "id": "code",
178
+ "pluginAlias": "@trillboards/cli",
179
+ "pluginName": "@trillboards/cli",
180
+ "pluginType": "core",
181
+ "strict": false,
182
+ "enableJsonFlag": false,
183
+ "isESM": true,
184
+ "relativePath": [
185
+ "dist",
186
+ "commands",
187
+ "code.js"
188
+ ]
189
+ },
136
190
  "debug": {
137
191
  "aliases": [],
138
192
  "args": {
@@ -754,20 +808,12 @@
754
808
  "whoami.js"
755
809
  ]
756
810
  },
757
- "audience:live": {
811
+ "ads:disable": {
758
812
  "aliases": [],
759
- "args": {
760
- "screen_id": {
761
- "description": "Screen ID to monitor",
762
- "name": "screen_id",
763
- "required": true
764
- }
765
- },
766
- "description": "Real-time audience sensing data for a screen",
813
+ "args": {},
814
+ "description": "Turn off the in-place sponsored lines (removes the Claude Code dead-time hook).",
767
815
  "examples": [
768
- "<%= config.bin %> audience live scr_abc123",
769
- "<%= config.bin %> audience live scr_abc123 --format json",
770
- "<%= config.bin %> audience live scr_abc123 --interval 3"
816
+ "<%= config.bin %> ads disable"
771
817
  ],
772
818
  "flags": {
773
819
  "api-key": {
@@ -797,19 +843,11 @@
797
843
  "yaml"
798
844
  ],
799
845
  "type": "option"
800
- },
801
- "interval": {
802
- "description": "Polling interval in seconds",
803
- "name": "interval",
804
- "default": 5,
805
- "hasDynamicHelp": false,
806
- "multiple": false,
807
- "type": "option"
808
846
  }
809
847
  },
810
848
  "hasDynamicHelp": false,
811
849
  "hiddenAliases": [],
812
- "id": "audience:live",
850
+ "id": "ads:disable",
813
851
  "pluginAlias": "@trillboards/cli",
814
852
  "pluginName": "@trillboards/cli",
815
853
  "pluginType": "core",
@@ -819,18 +857,16 @@
819
857
  "relativePath": [
820
858
  "dist",
821
859
  "commands",
822
- "audience",
823
- "live.js"
860
+ "ads",
861
+ "disable.js"
824
862
  ]
825
863
  },
826
- "billing:usage": {
864
+ "ads:enable": {
827
865
  "aliases": [],
828
866
  "args": {},
829
- "description": "Billing usage details with optional per-product breakdown",
867
+ "description": "Turn on in-place sponsored lines in Claude Code (installs the dead-time hook). Opt-in; undo with `ads disable`.",
830
868
  "examples": [
831
- "<%= config.bin %> billing usage",
832
- "<%= config.bin %> billing usage --breakdown",
833
- "<%= config.bin %> billing usage --format json"
869
+ "<%= config.bin %> ads enable"
834
870
  ],
835
871
  "flags": {
836
872
  "api-key": {
@@ -860,17 +896,11 @@
860
896
  "yaml"
861
897
  ],
862
898
  "type": "option"
863
- },
864
- "breakdown": {
865
- "description": "Show per-product breakdown table",
866
- "name": "breakdown",
867
- "allowNo": false,
868
- "type": "boolean"
869
899
  }
870
900
  },
871
901
  "hasDynamicHelp": false,
872
902
  "hiddenAliases": [],
873
- "id": "billing:usage",
903
+ "id": "ads:enable",
874
904
  "pluginAlias": "@trillboards/cli",
875
905
  "pluginName": "@trillboards/cli",
876
906
  "pluginType": "core",
@@ -880,24 +910,40 @@
880
910
  "relativePath": [
881
911
  "dist",
882
912
  "commands",
883
- "billing",
884
- "usage.js"
913
+ "ads",
914
+ "enable.js"
885
915
  ]
886
916
  },
887
- "errors": {
917
+ "ads:hook": {
888
918
  "aliases": [],
889
- "args": {
890
- "code": {
891
- "description": "Error code to look up (e.g. screen_not_found)",
892
- "name": "code",
893
- "required": false
894
- }
895
- },
896
- "description": "Look up error codes from the error catalog",
919
+ "args": {},
920
+ "description": "Internal: Claude Code dead-time hook handler (renders an in-place sponsor line).",
921
+ "flags": {},
922
+ "hasDynamicHelp": false,
923
+ "hidden": true,
924
+ "hiddenAliases": [],
925
+ "id": "ads:hook",
926
+ "pluginAlias": "@trillboards/cli",
927
+ "pluginName": "@trillboards/cli",
928
+ "pluginType": "core",
929
+ "strict": false,
930
+ "enableJsonFlag": false,
931
+ "isESM": true,
932
+ "relativePath": [
933
+ "dist",
934
+ "commands",
935
+ "ads",
936
+ "hook.js"
937
+ ]
938
+ },
939
+ "ads:login": {
940
+ "aliases": [],
941
+ "args": {},
942
+ "description": "Log in to the agent-ads program with your Trillboards account (email + password)",
897
943
  "examples": [
898
- "<%= config.bin %> errors",
899
- "<%= config.bin %> errors screen_not_found",
900
- "<%= config.bin %> errors --format json"
944
+ "<%= config.bin %> ads login",
945
+ "<%= config.bin %> ads login --email you@example.com",
946
+ "TRILLBOARDS_USER_TOKEN=<jwt> <%= config.bin %> ads login"
901
947
  ],
902
948
  "flags": {
903
949
  "api-key": {
@@ -927,11 +973,25 @@
927
973
  "yaml"
928
974
  ],
929
975
  "type": "option"
976
+ },
977
+ "email": {
978
+ "description": "Account email (prompts if omitted)",
979
+ "name": "email",
980
+ "hasDynamicHelp": false,
981
+ "multiple": false,
982
+ "type": "option"
983
+ },
984
+ "password": {
985
+ "description": "Account password (prompts hidden if omitted; avoid passing on the command line)",
986
+ "name": "password",
987
+ "hasDynamicHelp": false,
988
+ "multiple": false,
989
+ "type": "option"
930
990
  }
931
991
  },
932
992
  "hasDynamicHelp": false,
933
993
  "hiddenAliases": [],
934
- "id": "errors",
994
+ "id": "ads:login",
935
995
  "pluginAlias": "@trillboards/cli",
936
996
  "pluginName": "@trillboards/cli",
937
997
  "pluginType": "core",
@@ -941,18 +1001,18 @@
941
1001
  "relativePath": [
942
1002
  "dist",
943
1003
  "commands",
944
- "errors",
945
- "index.js"
1004
+ "ads",
1005
+ "login.js"
946
1006
  ]
947
1007
  },
948
- "endpoints": {
1008
+ "ads:start": {
949
1009
  "aliases": [],
950
1010
  "args": {},
951
- "description": "Discover available API endpoints",
1011
+ "description": "Register this machine as a virtual screen and rent its AI-coding-agent dead-time for money",
952
1012
  "examples": [
953
- "<%= config.bin %> endpoints",
954
- "<%= config.bin %> endpoints --search screens",
955
- "<%= config.bin %> endpoints --format json"
1013
+ "<%= config.bin %> ads start",
1014
+ "<%= config.bin %> ads start --once",
1015
+ "<%= config.bin %> ads start --simulate --interval 30"
956
1016
  ],
957
1017
  "flags": {
958
1018
  "api-key": {
@@ -983,10 +1043,28 @@
983
1043
  ],
984
1044
  "type": "option"
985
1045
  },
986
- "search": {
987
- "char": "s",
988
- "description": "Search query to filter endpoints",
989
- "name": "search",
1046
+ "name": {
1047
+ "description": "Display name for this virtual screen (defaults to \"Claude Code on <hostname>\")",
1048
+ "name": "name",
1049
+ "hasDynamicHelp": false,
1050
+ "multiple": false,
1051
+ "type": "option"
1052
+ },
1053
+ "once": {
1054
+ "description": "Register, heartbeat once, serve a single ad, then exit (great for testing)",
1055
+ "name": "once",
1056
+ "allowNo": false,
1057
+ "type": "boolean"
1058
+ },
1059
+ "simulate": {
1060
+ "description": "Treat each interval tick as a dead-time trigger (v0 stand-in for real detection)",
1061
+ "name": "simulate",
1062
+ "allowNo": false,
1063
+ "type": "boolean"
1064
+ },
1065
+ "interval": {
1066
+ "description": "Seconds between dead-time fills in --simulate mode (default 60)",
1067
+ "name": "interval",
990
1068
  "hasDynamicHelp": false,
991
1069
  "multiple": false,
992
1070
  "type": "option"
@@ -994,7 +1072,7 @@
994
1072
  },
995
1073
  "hasDynamicHelp": false,
996
1074
  "hiddenAliases": [],
997
- "id": "endpoints",
1075
+ "id": "ads:start",
998
1076
  "pluginAlias": "@trillboards/cli",
999
1077
  "pluginName": "@trillboards/cli",
1000
1078
  "pluginType": "core",
@@ -1004,19 +1082,24 @@
1004
1082
  "relativePath": [
1005
1083
  "dist",
1006
1084
  "commands",
1007
- "endpoints",
1008
- "index.js"
1085
+ "ads",
1086
+ "start.js"
1009
1087
  ]
1010
1088
  },
1011
- "logs:tail": {
1089
+ "audience:live": {
1012
1090
  "aliases": [],
1013
- "args": {},
1014
- "description": "Tail real-time request logs via server-sent events",
1091
+ "args": {
1092
+ "screen_id": {
1093
+ "description": "Screen ID to monitor",
1094
+ "name": "screen_id",
1095
+ "required": true
1096
+ }
1097
+ },
1098
+ "description": "Real-time audience sensing data for a screen",
1015
1099
  "examples": [
1016
- "<%= config.bin %> logs tail",
1017
- "<%= config.bin %> logs tail --events error.occurred",
1018
- "<%= config.bin %> logs tail --status 4xx,5xx",
1019
- "<%= config.bin %> logs tail --events request.logged,error.occurred --status 5xx"
1100
+ "<%= config.bin %> audience live scr_abc123",
1101
+ "<%= config.bin %> audience live scr_abc123 --format json",
1102
+ "<%= config.bin %> audience live scr_abc123 --interval 3"
1020
1103
  ],
1021
1104
  "flags": {
1022
1105
  "api-key": {
@@ -1047,17 +1130,10 @@
1047
1130
  ],
1048
1131
  "type": "option"
1049
1132
  },
1050
- "events": {
1051
- "description": "Comma-separated SSE event types to subscribe to",
1052
- "name": "events",
1053
- "default": "request.logged,error.occurred",
1054
- "hasDynamicHelp": false,
1055
- "multiple": false,
1056
- "type": "option"
1057
- },
1058
- "status": {
1059
- "description": "Filter by status code pattern (e.g. \"4xx\", \"5xx\", \"4xx,5xx\", \"404\")",
1060
- "name": "status",
1133
+ "interval": {
1134
+ "description": "Polling interval in seconds",
1135
+ "name": "interval",
1136
+ "default": 5,
1061
1137
  "hasDynamicHelp": false,
1062
1138
  "multiple": false,
1063
1139
  "type": "option"
@@ -1065,7 +1141,7 @@
1065
1141
  },
1066
1142
  "hasDynamicHelp": false,
1067
1143
  "hiddenAliases": [],
1068
- "id": "logs:tail",
1144
+ "id": "audience:live",
1069
1145
  "pluginAlias": "@trillboards/cli",
1070
1146
  "pluginName": "@trillboards/cli",
1071
1147
  "pluginType": "core",
@@ -1075,19 +1151,18 @@
1075
1151
  "relativePath": [
1076
1152
  "dist",
1077
1153
  "commands",
1078
- "logs",
1079
- "tail.js"
1154
+ "audience",
1155
+ "live.js"
1080
1156
  ]
1081
1157
  },
1082
- "screens:watch": {
1158
+ "billing:usage": {
1083
1159
  "aliases": [],
1084
1160
  "args": {},
1085
- "description": "Live fleet dashboard — watch all screens in real-time",
1161
+ "description": "Billing usage details with optional per-product breakdown",
1086
1162
  "examples": [
1087
- "<%= config.bin %> screens watch",
1088
- "<%= config.bin %> screens watch --filter online",
1089
- "<%= config.bin %> screens watch --sort earnings",
1090
- "<%= config.bin %> screens watch --format json"
1163
+ "<%= config.bin %> billing usage",
1164
+ "<%= config.bin %> billing usage --breakdown",
1165
+ "<%= config.bin %> billing usage --format json"
1091
1166
  ],
1092
1167
  "flags": {
1093
1168
  "api-key": {
@@ -1118,42 +1193,16 @@
1118
1193
  ],
1119
1194
  "type": "option"
1120
1195
  },
1121
- "filter": {
1122
- "description": "Filter screens by status",
1123
- "name": "filter",
1124
- "hasDynamicHelp": false,
1125
- "multiple": false,
1126
- "options": [
1127
- "online",
1128
- "offline"
1129
- ],
1130
- "type": "option"
1131
- },
1132
- "interval": {
1133
- "description": "Refresh interval in seconds",
1134
- "name": "interval",
1135
- "default": 10,
1136
- "hasDynamicHelp": false,
1137
- "multiple": false,
1138
- "type": "option"
1139
- },
1140
- "sort": {
1141
- "description": "Sort column",
1142
- "name": "sort",
1143
- "default": "name",
1144
- "hasDynamicHelp": false,
1145
- "multiple": false,
1146
- "options": [
1147
- "name",
1148
- "earnings",
1149
- "fill-rate"
1150
- ],
1151
- "type": "option"
1196
+ "breakdown": {
1197
+ "description": "Show per-product breakdown table",
1198
+ "name": "breakdown",
1199
+ "allowNo": false,
1200
+ "type": "boolean"
1152
1201
  }
1153
1202
  },
1154
1203
  "hasDynamicHelp": false,
1155
1204
  "hiddenAliases": [],
1156
- "id": "screens:watch",
1205
+ "id": "billing:usage",
1157
1206
  "pluginAlias": "@trillboards/cli",
1158
1207
  "pluginName": "@trillboards/cli",
1159
1208
  "pluginType": "core",
@@ -1163,16 +1212,23 @@
1163
1212
  "relativePath": [
1164
1213
  "dist",
1165
1214
  "commands",
1166
- "screens",
1167
- "watch.js"
1215
+ "billing",
1216
+ "usage.js"
1168
1217
  ]
1169
1218
  },
1170
- "generated:generated-changelog-query": {
1219
+ "devices:reconcile": {
1171
1220
  "aliases": [],
1172
- "args": {},
1173
- "description": "Query API changelog",
1221
+ "args": {
1222
+ "file": {
1223
+ "description": "Path to your device external IDs — a JSON array, {\"external_ids\":[...]}, or one ID per line",
1224
+ "name": "file",
1225
+ "required": true
1226
+ }
1227
+ },
1228
+ "description": "Reconcile your device fleet — diff your external IDs against what Trillboards has registered (matched / missing / orphan / malformed / duplicate)",
1174
1229
  "examples": [
1175
- "$ trillboards generated changelog query"
1230
+ "<%= config.bin %> devices reconcile my-devices.json",
1231
+ "<%= config.bin %> devices reconcile ids.txt --format json"
1176
1232
  ],
1177
1233
  "flags": {
1178
1234
  "api-key": {
@@ -1202,12 +1258,189 @@
1202
1258
  "yaml"
1203
1259
  ],
1204
1260
  "type": "option"
1205
- },
1206
- "since": {
1207
- "description": "Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included.",
1208
- "name": "since",
1209
- "hasDynamicHelp": false,
1210
- "multiple": false,
1261
+ }
1262
+ },
1263
+ "hasDynamicHelp": false,
1264
+ "hiddenAliases": [],
1265
+ "id": "devices:reconcile",
1266
+ "pluginAlias": "@trillboards/cli",
1267
+ "pluginName": "@trillboards/cli",
1268
+ "pluginType": "core",
1269
+ "strict": true,
1270
+ "enableJsonFlag": false,
1271
+ "isESM": true,
1272
+ "relativePath": [
1273
+ "dist",
1274
+ "commands",
1275
+ "devices",
1276
+ "reconcile.js"
1277
+ ]
1278
+ },
1279
+ "endpoints": {
1280
+ "aliases": [],
1281
+ "args": {},
1282
+ "description": "Discover available API endpoints",
1283
+ "examples": [
1284
+ "<%= config.bin %> endpoints",
1285
+ "<%= config.bin %> endpoints --search screens",
1286
+ "<%= config.bin %> endpoints --format json"
1287
+ ],
1288
+ "flags": {
1289
+ "api-key": {
1290
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1291
+ "env": "TRILLBOARDS_API_KEY",
1292
+ "name": "api-key",
1293
+ "hasDynamicHelp": false,
1294
+ "multiple": false,
1295
+ "type": "option"
1296
+ },
1297
+ "base-url": {
1298
+ "description": "API base URL",
1299
+ "name": "base-url",
1300
+ "default": "https://api.trillboards.com",
1301
+ "hasDynamicHelp": false,
1302
+ "multiple": false,
1303
+ "type": "option"
1304
+ },
1305
+ "format": {
1306
+ "description": "Output format",
1307
+ "name": "format",
1308
+ "hasDynamicHelp": false,
1309
+ "multiple": false,
1310
+ "options": [
1311
+ "json",
1312
+ "table",
1313
+ "yaml"
1314
+ ],
1315
+ "type": "option"
1316
+ },
1317
+ "search": {
1318
+ "char": "s",
1319
+ "description": "Search query to filter endpoints",
1320
+ "name": "search",
1321
+ "hasDynamicHelp": false,
1322
+ "multiple": false,
1323
+ "type": "option"
1324
+ }
1325
+ },
1326
+ "hasDynamicHelp": false,
1327
+ "hiddenAliases": [],
1328
+ "id": "endpoints",
1329
+ "pluginAlias": "@trillboards/cli",
1330
+ "pluginName": "@trillboards/cli",
1331
+ "pluginType": "core",
1332
+ "strict": true,
1333
+ "enableJsonFlag": false,
1334
+ "isESM": true,
1335
+ "relativePath": [
1336
+ "dist",
1337
+ "commands",
1338
+ "endpoints",
1339
+ "index.js"
1340
+ ]
1341
+ },
1342
+ "errors": {
1343
+ "aliases": [],
1344
+ "args": {
1345
+ "code": {
1346
+ "description": "Error code to look up (e.g. screen_not_found)",
1347
+ "name": "code",
1348
+ "required": false
1349
+ }
1350
+ },
1351
+ "description": "Look up error codes from the error catalog",
1352
+ "examples": [
1353
+ "<%= config.bin %> errors",
1354
+ "<%= config.bin %> errors screen_not_found",
1355
+ "<%= config.bin %> errors --format json"
1356
+ ],
1357
+ "flags": {
1358
+ "api-key": {
1359
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1360
+ "env": "TRILLBOARDS_API_KEY",
1361
+ "name": "api-key",
1362
+ "hasDynamicHelp": false,
1363
+ "multiple": false,
1364
+ "type": "option"
1365
+ },
1366
+ "base-url": {
1367
+ "description": "API base URL",
1368
+ "name": "base-url",
1369
+ "default": "https://api.trillboards.com",
1370
+ "hasDynamicHelp": false,
1371
+ "multiple": false,
1372
+ "type": "option"
1373
+ },
1374
+ "format": {
1375
+ "description": "Output format",
1376
+ "name": "format",
1377
+ "hasDynamicHelp": false,
1378
+ "multiple": false,
1379
+ "options": [
1380
+ "json",
1381
+ "table",
1382
+ "yaml"
1383
+ ],
1384
+ "type": "option"
1385
+ }
1386
+ },
1387
+ "hasDynamicHelp": false,
1388
+ "hiddenAliases": [],
1389
+ "id": "errors",
1390
+ "pluginAlias": "@trillboards/cli",
1391
+ "pluginName": "@trillboards/cli",
1392
+ "pluginType": "core",
1393
+ "strict": true,
1394
+ "enableJsonFlag": false,
1395
+ "isESM": true,
1396
+ "relativePath": [
1397
+ "dist",
1398
+ "commands",
1399
+ "errors",
1400
+ "index.js"
1401
+ ]
1402
+ },
1403
+ "generated:generated-changelog-query": {
1404
+ "aliases": [],
1405
+ "args": {},
1406
+ "description": "Query API changelog",
1407
+ "examples": [
1408
+ "$ trillboards generated changelog query"
1409
+ ],
1410
+ "flags": {
1411
+ "api-key": {
1412
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1413
+ "env": "TRILLBOARDS_API_KEY",
1414
+ "name": "api-key",
1415
+ "hasDynamicHelp": false,
1416
+ "multiple": false,
1417
+ "type": "option"
1418
+ },
1419
+ "base-url": {
1420
+ "description": "API base URL",
1421
+ "name": "base-url",
1422
+ "default": "https://api.trillboards.com",
1423
+ "hasDynamicHelp": false,
1424
+ "multiple": false,
1425
+ "type": "option"
1426
+ },
1427
+ "format": {
1428
+ "description": "Output format",
1429
+ "name": "format",
1430
+ "hasDynamicHelp": false,
1431
+ "multiple": false,
1432
+ "options": [
1433
+ "json",
1434
+ "table",
1435
+ "yaml"
1436
+ ],
1437
+ "type": "option"
1438
+ },
1439
+ "since": {
1440
+ "description": "Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included.",
1441
+ "name": "since",
1442
+ "hasDynamicHelp": false,
1443
+ "multiple": false,
1211
1444
  "type": "option"
1212
1445
  },
1213
1446
  "type": {
@@ -1234,12 +1467,432 @@
1234
1467
  "generated-changelog-query.js"
1235
1468
  ]
1236
1469
  },
1237
- "generated:generated-data-api-aggregate": {
1470
+ "generated:generated-csi-venue-history": {
1471
+ "aliases": [],
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.",
1480
+ "examples": [
1481
+ "$ trillboards generated csi-venue-history"
1482
+ ],
1483
+ "flags": {
1484
+ "api-key": {
1485
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1486
+ "env": "TRILLBOARDS_API_KEY",
1487
+ "name": "api-key",
1488
+ "hasDynamicHelp": false,
1489
+ "multiple": false,
1490
+ "type": "option"
1491
+ },
1492
+ "base-url": {
1493
+ "description": "API base URL",
1494
+ "name": "base-url",
1495
+ "default": "https://api.trillboards.com",
1496
+ "hasDynamicHelp": false,
1497
+ "multiple": false,
1498
+ "type": "option"
1499
+ },
1500
+ "format": {
1501
+ "description": "Output format",
1502
+ "name": "format",
1503
+ "hasDynamicHelp": false,
1504
+ "multiple": false,
1505
+ "options": [
1506
+ "json",
1507
+ "table",
1508
+ "yaml"
1509
+ ],
1510
+ "type": "option"
1511
+ },
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",
1515
+ "hasDynamicHelp": false,
1516
+ "multiple": false,
1517
+ "type": "option"
1518
+ }
1519
+ },
1520
+ "hasDynamicHelp": false,
1521
+ "hiddenAliases": [],
1522
+ "id": "generated:generated-csi-venue-history",
1523
+ "pluginAlias": "@trillboards/cli",
1524
+ "pluginName": "@trillboards/cli",
1525
+ "pluginType": "core",
1526
+ "strict": true,
1527
+ "enableJsonFlag": false,
1528
+ "isESM": true,
1529
+ "relativePath": [
1530
+ "dist",
1531
+ "commands",
1532
+ "generated",
1533
+ "generated-csi-venue-history.js"
1534
+ ]
1535
+ },
1536
+ "generated:generated-csi-venue-occupancy": {
1537
+ "aliases": [],
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.",
1546
+ "examples": [
1547
+ "$ trillboards generated csi-venue-occupancy"
1548
+ ],
1549
+ "flags": {
1550
+ "api-key": {
1551
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1552
+ "env": "TRILLBOARDS_API_KEY",
1553
+ "name": "api-key",
1554
+ "hasDynamicHelp": false,
1555
+ "multiple": false,
1556
+ "type": "option"
1557
+ },
1558
+ "base-url": {
1559
+ "description": "API base URL",
1560
+ "name": "base-url",
1561
+ "default": "https://api.trillboards.com",
1562
+ "hasDynamicHelp": false,
1563
+ "multiple": false,
1564
+ "type": "option"
1565
+ },
1566
+ "format": {
1567
+ "description": "Output format",
1568
+ "name": "format",
1569
+ "hasDynamicHelp": false,
1570
+ "multiple": false,
1571
+ "options": [
1572
+ "json",
1573
+ "table",
1574
+ "yaml"
1575
+ ],
1576
+ "type": "option"
1577
+ }
1578
+ },
1579
+ "hasDynamicHelp": false,
1580
+ "hiddenAliases": [],
1581
+ "id": "generated:generated-csi-venue-occupancy",
1582
+ "pluginAlias": "@trillboards/cli",
1583
+ "pluginName": "@trillboards/cli",
1584
+ "pluginType": "core",
1585
+ "strict": true,
1586
+ "enableJsonFlag": false,
1587
+ "isESM": true,
1588
+ "relativePath": [
1589
+ "dist",
1590
+ "commands",
1591
+ "generated",
1592
+ "generated-csi-venue-occupancy.js"
1593
+ ]
1594
+ },
1595
+ "generated:generated-data-api-aggregate": {
1596
+ "aliases": [],
1597
+ "args": {},
1598
+ "description": "Aggregate audience analytics for a time window.",
1599
+ "examples": [
1600
+ "$ trillboards generated data-api-aggregate"
1601
+ ],
1602
+ "flags": {
1603
+ "api-key": {
1604
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1605
+ "env": "TRILLBOARDS_API_KEY",
1606
+ "name": "api-key",
1607
+ "hasDynamicHelp": false,
1608
+ "multiple": false,
1609
+ "type": "option"
1610
+ },
1611
+ "base-url": {
1612
+ "description": "API base URL",
1613
+ "name": "base-url",
1614
+ "default": "https://api.trillboards.com",
1615
+ "hasDynamicHelp": false,
1616
+ "multiple": false,
1617
+ "type": "option"
1618
+ },
1619
+ "format": {
1620
+ "description": "Output format",
1621
+ "name": "format",
1622
+ "hasDynamicHelp": false,
1623
+ "multiple": false,
1624
+ "options": [
1625
+ "json",
1626
+ "table",
1627
+ "yaml"
1628
+ ],
1629
+ "type": "option"
1630
+ },
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",
1648
+ "hasDynamicHelp": false,
1649
+ "multiple": false,
1650
+ "type": "option"
1651
+ }
1652
+ },
1653
+ "hasDynamicHelp": false,
1654
+ "hiddenAliases": [],
1655
+ "id": "generated:generated-data-api-aggregate",
1656
+ "pluginAlias": "@trillboards/cli",
1657
+ "pluginName": "@trillboards/cli",
1658
+ "pluginType": "core",
1659
+ "strict": true,
1660
+ "enableJsonFlag": false,
1661
+ "isESM": true,
1662
+ "relativePath": [
1663
+ "dist",
1664
+ "commands",
1665
+ "generated",
1666
+ "generated-data-api-aggregate.js"
1667
+ ]
1668
+ },
1669
+ "generated:generated-data-api-list-screens": {
1670
+ "aliases": [],
1671
+ "args": {},
1672
+ "description": "List screens visible to the caller.",
1673
+ "examples": [
1674
+ "$ trillboards generated data-api-list-screens"
1675
+ ],
1676
+ "flags": {
1677
+ "api-key": {
1678
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1679
+ "env": "TRILLBOARDS_API_KEY",
1680
+ "name": "api-key",
1681
+ "hasDynamicHelp": false,
1682
+ "multiple": false,
1683
+ "type": "option"
1684
+ },
1685
+ "base-url": {
1686
+ "description": "API base URL",
1687
+ "name": "base-url",
1688
+ "default": "https://api.trillboards.com",
1689
+ "hasDynamicHelp": false,
1690
+ "multiple": false,
1691
+ "type": "option"
1692
+ },
1693
+ "format": {
1694
+ "description": "Output format",
1695
+ "name": "format",
1696
+ "hasDynamicHelp": false,
1697
+ "multiple": false,
1698
+ "options": [
1699
+ "json",
1700
+ "table",
1701
+ "yaml"
1702
+ ],
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"
1732
+ }
1733
+ },
1734
+ "hasDynamicHelp": false,
1735
+ "hiddenAliases": [],
1736
+ "id": "generated:generated-data-api-list-screens",
1737
+ "pluginAlias": "@trillboards/cli",
1738
+ "pluginName": "@trillboards/cli",
1739
+ "pluginType": "core",
1740
+ "strict": true,
1741
+ "enableJsonFlag": false,
1742
+ "isESM": true,
1743
+ "relativePath": [
1744
+ "dist",
1745
+ "commands",
1746
+ "generated",
1747
+ "generated-data-api-list-screens.js"
1748
+ ]
1749
+ },
1750
+ "generated:generated-data-api-lookalike-screens": {
1751
+ "aliases": [],
1752
+ "args": {},
1753
+ "description": "Find screens with similar audience profiles.",
1754
+ "examples": [
1755
+ "$ trillboards generated data-api-lookalike-screens"
1756
+ ],
1757
+ "flags": {
1758
+ "api-key": {
1759
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1760
+ "env": "TRILLBOARDS_API_KEY",
1761
+ "name": "api-key",
1762
+ "hasDynamicHelp": false,
1763
+ "multiple": false,
1764
+ "type": "option"
1765
+ },
1766
+ "base-url": {
1767
+ "description": "API base URL",
1768
+ "name": "base-url",
1769
+ "default": "https://api.trillboards.com",
1770
+ "hasDynamicHelp": false,
1771
+ "multiple": false,
1772
+ "type": "option"
1773
+ },
1774
+ "format": {
1775
+ "description": "Output format",
1776
+ "name": "format",
1777
+ "hasDynamicHelp": false,
1778
+ "multiple": false,
1779
+ "options": [
1780
+ "json",
1781
+ "table",
1782
+ "yaml"
1783
+ ],
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"
1806
+ }
1807
+ },
1808
+ "hasDynamicHelp": false,
1809
+ "hiddenAliases": [],
1810
+ "id": "generated:generated-data-api-lookalike-screens",
1811
+ "pluginAlias": "@trillboards/cli",
1812
+ "pluginName": "@trillboards/cli",
1813
+ "pluginType": "core",
1814
+ "strict": true,
1815
+ "enableJsonFlag": false,
1816
+ "isESM": true,
1817
+ "relativePath": [
1818
+ "dist",
1819
+ "commands",
1820
+ "generated",
1821
+ "generated-data-api-lookalike-screens.js"
1822
+ ]
1823
+ },
1824
+ "generated:generated-data-api-query-dsl": {
1825
+ "aliases": [],
1826
+ "args": {},
1827
+ "description": "Composable query DSL over approved datasets.",
1828
+ "examples": [
1829
+ "$ trillboards generated data-api-query-dsl"
1830
+ ],
1831
+ "flags": {
1832
+ "api-key": {
1833
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
1834
+ "env": "TRILLBOARDS_API_KEY",
1835
+ "name": "api-key",
1836
+ "hasDynamicHelp": false,
1837
+ "multiple": false,
1838
+ "type": "option"
1839
+ },
1840
+ "base-url": {
1841
+ "description": "API base URL",
1842
+ "name": "base-url",
1843
+ "default": "https://api.trillboards.com",
1844
+ "hasDynamicHelp": false,
1845
+ "multiple": false,
1846
+ "type": "option"
1847
+ },
1848
+ "format": {
1849
+ "description": "Output format",
1850
+ "name": "format",
1851
+ "hasDynamicHelp": false,
1852
+ "multiple": false,
1853
+ "options": [
1854
+ "json",
1855
+ "table",
1856
+ "yaml"
1857
+ ],
1858
+ "type": "option"
1859
+ },
1860
+ "data": {
1861
+ "description": "JSON request body",
1862
+ "name": "data",
1863
+ "hasDynamicHelp": false,
1864
+ "multiple": false,
1865
+ "type": "option"
1866
+ }
1867
+ },
1868
+ "hasDynamicHelp": false,
1869
+ "hiddenAliases": [],
1870
+ "id": "generated:generated-data-api-query-dsl",
1871
+ "pluginAlias": "@trillboards/cli",
1872
+ "pluginName": "@trillboards/cli",
1873
+ "pluginType": "core",
1874
+ "strict": true,
1875
+ "enableJsonFlag": false,
1876
+ "isESM": true,
1877
+ "relativePath": [
1878
+ "dist",
1879
+ "commands",
1880
+ "generated",
1881
+ "generated-data-api-query-dsl.js"
1882
+ ]
1883
+ },
1884
+ "generated:generated-data-api-screen-audience-history": {
1238
1885
  "aliases": [],
1239
- "args": {},
1240
- "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.",
1241
1894
  "examples": [
1242
- "$ trillboards generated data-api-aggregate"
1895
+ "$ trillboards generated data-api-screen-audience-history"
1243
1896
  ],
1244
1897
  "flags": {
1245
1898
  "api-key": {
@@ -1270,23 +1923,23 @@
1270
1923
  ],
1271
1924
  "type": "option"
1272
1925
  },
1273
- "group_by": {
1274
- "description": "Dimension to group aggregations by.",
1275
- "name": "group_by",
1926
+ "since": {
1927
+ "description": "ISO-8601 start timestamp.",
1928
+ "name": "since",
1276
1929
  "hasDynamicHelp": false,
1277
1930
  "multiple": false,
1278
1931
  "type": "option"
1279
1932
  },
1280
- "metric": {
1281
- "description": "Metric to aggregate on.",
1282
- "name": "metric",
1933
+ "until": {
1934
+ "description": "ISO-8601 end timestamp.",
1935
+ "name": "until",
1283
1936
  "hasDynamicHelp": false,
1284
1937
  "multiple": false,
1285
1938
  "type": "option"
1286
1939
  },
1287
- "since": {
1288
- "description": "Relative time window (e.g. \"24h\", \"7d\").",
1289
- "name": "since",
1940
+ "limit": {
1941
+ "description": "limit",
1942
+ "name": "limit",
1290
1943
  "hasDynamicHelp": false,
1291
1944
  "multiple": false,
1292
1945
  "type": "option"
@@ -1294,7 +1947,7 @@
1294
1947
  },
1295
1948
  "hasDynamicHelp": false,
1296
1949
  "hiddenAliases": [],
1297
- "id": "generated:generated-data-api-aggregate",
1950
+ "id": "generated:generated-data-api-screen-audience-history",
1298
1951
  "pluginAlias": "@trillboards/cli",
1299
1952
  "pluginName": "@trillboards/cli",
1300
1953
  "pluginType": "core",
@@ -1305,15 +1958,21 @@
1305
1958
  "dist",
1306
1959
  "commands",
1307
1960
  "generated",
1308
- "generated-data-api-aggregate.js"
1961
+ "generated-data-api-screen-audience-history.js"
1309
1962
  ]
1310
1963
  },
1311
- "generated:generated-data-api-list-screens": {
1964
+ "generated:generated-data-api-screen-audience-live": {
1312
1965
  "aliases": [],
1313
- "args": {},
1314
- "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.",
1315
1974
  "examples": [
1316
- "$ trillboards generated data-api-list-screens"
1975
+ "$ trillboards generated data-api-screen-audience-live"
1317
1976
  ],
1318
1977
  "flags": {
1319
1978
  "api-key": {
@@ -1343,39 +2002,11 @@
1343
2002
  "yaml"
1344
2003
  ],
1345
2004
  "type": "option"
1346
- },
1347
- "limit": {
1348
- "description": "limit",
1349
- "name": "limit",
1350
- "hasDynamicHelp": false,
1351
- "multiple": false,
1352
- "type": "option"
1353
- },
1354
- "offset": {
1355
- "description": "offset",
1356
- "name": "offset",
1357
- "hasDynamicHelp": false,
1358
- "multiple": false,
1359
- "type": "option"
1360
- },
1361
- "venue_type": {
1362
- "description": "Filter by venue taxonomy type (e.g. bar, restaurant).",
1363
- "name": "venue_type",
1364
- "hasDynamicHelp": false,
1365
- "multiple": false,
1366
- "type": "option"
1367
- },
1368
- "country": {
1369
- "description": "ISO-3166 alpha-2 country code.",
1370
- "name": "country",
1371
- "hasDynamicHelp": false,
1372
- "multiple": false,
1373
- "type": "option"
1374
2005
  }
1375
2006
  },
1376
2007
  "hasDynamicHelp": false,
1377
2008
  "hiddenAliases": [],
1378
- "id": "generated:generated-data-api-list-screens",
2009
+ "id": "generated:generated-data-api-screen-audience-live",
1379
2010
  "pluginAlias": "@trillboards/cli",
1380
2011
  "pluginName": "@trillboards/cli",
1381
2012
  "pluginType": "core",
@@ -1386,15 +2017,15 @@
1386
2017
  "dist",
1387
2018
  "commands",
1388
2019
  "generated",
1389
- "generated-data-api-list-screens.js"
2020
+ "generated-data-api-screen-audience-live.js"
1390
2021
  ]
1391
2022
  },
1392
- "generated:generated-data-api-lookalike-screens": {
2023
+ "generated:generated-data-api-semantic-search": {
1393
2024
  "aliases": [],
1394
2025
  "args": {},
1395
- "description": "Find screens with similar audience profiles.",
2026
+ "description": "Similarity search over scene embeddings.",
1396
2027
  "examples": [
1397
- "$ trillboards generated data-api-lookalike-screens"
2028
+ "$ trillboards generated data-api-semantic-search"
1398
2029
  ],
1399
2030
  "flags": {
1400
2031
  "api-key": {
@@ -1425,9 +2056,9 @@
1425
2056
  ],
1426
2057
  "type": "option"
1427
2058
  },
1428
- "screen_id": {
1429
- "description": "Internal screen identifier.",
1430
- "name": "screen_id",
2059
+ "q": {
2060
+ "description": "q",
2061
+ "name": "q",
1431
2062
  "hasDynamicHelp": false,
1432
2063
  "multiple": false,
1433
2064
  "type": "option"
@@ -1439,6 +2070,13 @@
1439
2070
  "multiple": false,
1440
2071
  "type": "option"
1441
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
+ },
1442
2080
  "min_similarity": {
1443
2081
  "description": "min_similarity",
1444
2082
  "name": "min_similarity",
@@ -1449,7 +2087,7 @@
1449
2087
  },
1450
2088
  "hasDynamicHelp": false,
1451
2089
  "hiddenAliases": [],
1452
- "id": "generated:generated-data-api-lookalike-screens",
2090
+ "id": "generated:generated-data-api-semantic-search",
1453
2091
  "pluginAlias": "@trillboards/cli",
1454
2092
  "pluginName": "@trillboards/cli",
1455
2093
  "pluginType": "core",
@@ -1460,15 +2098,15 @@
1460
2098
  "dist",
1461
2099
  "commands",
1462
2100
  "generated",
1463
- "generated-data-api-lookalike-screens.js"
2101
+ "generated-data-api-semantic-search.js"
1464
2102
  ]
1465
2103
  },
1466
- "generated:generated-data-api-query-dsl": {
2104
+ "generated:generated-data-api-stats": {
1467
2105
  "aliases": [],
1468
2106
  "args": {},
1469
- "description": "Composable query DSL over approved datasets.",
2107
+ "description": "Platform-wide counters.",
1470
2108
  "examples": [
1471
- "$ trillboards generated data-api-query-dsl"
2109
+ "$ trillboards generated data-api-stats"
1472
2110
  ],
1473
2111
  "flags": {
1474
2112
  "api-key": {
@@ -1498,18 +2136,11 @@
1498
2136
  "yaml"
1499
2137
  ],
1500
2138
  "type": "option"
1501
- },
1502
- "data": {
1503
- "description": "JSON request body",
1504
- "name": "data",
1505
- "hasDynamicHelp": false,
1506
- "multiple": false,
1507
- "type": "option"
1508
2139
  }
1509
2140
  },
1510
2141
  "hasDynamicHelp": false,
1511
2142
  "hiddenAliases": [],
1512
- "id": "generated:generated-data-api-query-dsl",
2143
+ "id": "generated:generated-data-api-stats",
1513
2144
  "pluginAlias": "@trillboards/cli",
1514
2145
  "pluginName": "@trillboards/cli",
1515
2146
  "pluginType": "core",
@@ -1520,21 +2151,15 @@
1520
2151
  "dist",
1521
2152
  "commands",
1522
2153
  "generated",
1523
- "generated-data-api-query-dsl.js"
2154
+ "generated-data-api-stats.js"
1524
2155
  ]
1525
2156
  },
1526
- "generated:generated-data-api-screen-audience-history": {
2157
+ "generated:generated-data-api-stream": {
1527
2158
  "aliases": [],
1528
- "args": {
1529
- "screenId": {
1530
- "description": "Internal screen identifier.",
1531
- "name": "screenId",
1532
- "required": true
1533
- }
1534
- },
1535
- "description": "Historical audience_metrics rows for a screen.",
2159
+ "args": {},
2160
+ "description": "Server-Sent Events stream of live audience/observation events.",
1536
2161
  "examples": [
1537
- "$ trillboards generated data-api-screen-audience-history"
2162
+ "$ trillboards generated data-api-stream"
1538
2163
  ],
1539
2164
  "flags": {
1540
2165
  "api-key": {
@@ -1565,23 +2190,16 @@
1565
2190
  ],
1566
2191
  "type": "option"
1567
2192
  },
1568
- "since": {
1569
- "description": "ISO-8601 start timestamp.",
1570
- "name": "since",
1571
- "hasDynamicHelp": false,
1572
- "multiple": false,
1573
- "type": "option"
1574
- },
1575
- "until": {
1576
- "description": "ISO-8601 end timestamp.",
1577
- "name": "until",
2193
+ "observation_family": {
2194
+ "description": "observation_family",
2195
+ "name": "observation_family",
1578
2196
  "hasDynamicHelp": false,
1579
2197
  "multiple": false,
1580
2198
  "type": "option"
1581
2199
  },
1582
- "limit": {
1583
- "description": "limit",
1584
- "name": "limit",
2200
+ "venue_type": {
2201
+ "description": "venue_type",
2202
+ "name": "venue_type",
1585
2203
  "hasDynamicHelp": false,
1586
2204
  "multiple": false,
1587
2205
  "type": "option"
@@ -1589,7 +2207,7 @@
1589
2207
  },
1590
2208
  "hasDynamicHelp": false,
1591
2209
  "hiddenAliases": [],
1592
- "id": "generated:generated-data-api-screen-audience-history",
2210
+ "id": "generated:generated-data-api-stream",
1593
2211
  "pluginAlias": "@trillboards/cli",
1594
2212
  "pluginName": "@trillboards/cli",
1595
2213
  "pluginType": "core",
@@ -1600,21 +2218,15 @@
1600
2218
  "dist",
1601
2219
  "commands",
1602
2220
  "generated",
1603
- "generated-data-api-screen-audience-history.js"
2221
+ "generated-data-api-stream.js"
1604
2222
  ]
1605
2223
  },
1606
- "generated:generated-data-api-screen-audience-live": {
2224
+ "generated:generated-data-api-usage": {
1607
2225
  "aliases": [],
1608
- "args": {
1609
- "screenId": {
1610
- "description": "Internal screen identifier.",
1611
- "name": "screenId",
1612
- "required": true
1613
- }
1614
- },
1615
- "description": "Real-time audience snapshot for a screen.",
2226
+ "args": {},
2227
+ "description": "API usage for the authenticated key (billing dashboard).",
1616
2228
  "examples": [
1617
- "$ trillboards generated data-api-screen-audience-live"
2229
+ "$ trillboards generated data-api-usage"
1618
2230
  ],
1619
2231
  "flags": {
1620
2232
  "api-key": {
@@ -1644,11 +2256,18 @@
1644
2256
  "yaml"
1645
2257
  ],
1646
2258
  "type": "option"
2259
+ },
2260
+ "days": {
2261
+ "description": "days",
2262
+ "name": "days",
2263
+ "hasDynamicHelp": false,
2264
+ "multiple": false,
2265
+ "type": "option"
1647
2266
  }
1648
2267
  },
1649
2268
  "hasDynamicHelp": false,
1650
2269
  "hiddenAliases": [],
1651
- "id": "generated:generated-data-api-screen-audience-live",
2270
+ "id": "generated:generated-data-api-usage",
1652
2271
  "pluginAlias": "@trillboards/cli",
1653
2272
  "pluginName": "@trillboards/cli",
1654
2273
  "pluginType": "core",
@@ -1659,15 +2278,15 @@
1659
2278
  "dist",
1660
2279
  "commands",
1661
2280
  "generated",
1662
- "generated-data-api-screen-audience-live.js"
2281
+ "generated-data-api-usage.js"
1663
2282
  ]
1664
2283
  },
1665
- "generated:generated-data-api-semantic-search": {
2284
+ "generated:generated-device-ota-manifest": {
1666
2285
  "aliases": [],
1667
2286
  "args": {},
1668
- "description": "Similarity search over scene embeddings.",
2287
+ "description": "Signed OTA manifest for managed-device update clients.",
1669
2288
  "examples": [
1670
- "$ trillboards generated data-api-semantic-search"
2289
+ "$ trillboards generated device-ota-manifest"
1671
2290
  ],
1672
2291
  "flags": {
1673
2292
  "api-key": {
@@ -1698,30 +2317,69 @@
1698
2317
  ],
1699
2318
  "type": "option"
1700
2319
  },
1701
- "q": {
1702
- "description": "q",
1703
- "name": "q",
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",
2323
+ "hasDynamicHelp": false,
2324
+ "multiple": false,
2325
+ "type": "option"
2326
+ }
2327
+ },
2328
+ "hasDynamicHelp": false,
2329
+ "hiddenAliases": [],
2330
+ "id": "generated:generated-device-ota-manifest",
2331
+ "pluginAlias": "@trillboards/cli",
2332
+ "pluginName": "@trillboards/cli",
2333
+ "pluginType": "core",
2334
+ "strict": true,
2335
+ "enableJsonFlag": false,
2336
+ "isESM": true,
2337
+ "relativePath": [
2338
+ "dist",
2339
+ "commands",
2340
+ "generated",
2341
+ "generated-device-ota-manifest.js"
2342
+ ]
2343
+ },
2344
+ "generated:generated-example-healthcheck": {
2345
+ "aliases": [],
2346
+ "args": {},
2347
+ "description": "Example healthcheck (Phase 3 pipeline proof)",
2348
+ "examples": [
2349
+ "$ trillboards generated example-healthcheck"
2350
+ ],
2351
+ "flags": {
2352
+ "api-key": {
2353
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
2354
+ "env": "TRILLBOARDS_API_KEY",
2355
+ "name": "api-key",
1704
2356
  "hasDynamicHelp": false,
1705
2357
  "multiple": false,
1706
2358
  "type": "option"
1707
2359
  },
1708
- "limit": {
1709
- "description": "limit",
1710
- "name": "limit",
2360
+ "base-url": {
2361
+ "description": "API base URL",
2362
+ "name": "base-url",
2363
+ "default": "https://api.trillboards.com",
1711
2364
  "hasDynamicHelp": false,
1712
2365
  "multiple": false,
1713
2366
  "type": "option"
1714
2367
  },
1715
- "since": {
1716
- "description": "Relative time window (e.g. \"24h\", \"7d\").",
1717
- "name": "since",
2368
+ "format": {
2369
+ "description": "Output format",
2370
+ "name": "format",
1718
2371
  "hasDynamicHelp": false,
1719
2372
  "multiple": false,
2373
+ "options": [
2374
+ "json",
2375
+ "table",
2376
+ "yaml"
2377
+ ],
1720
2378
  "type": "option"
1721
2379
  },
1722
- "min_similarity": {
1723
- "description": "min_similarity",
1724
- "name": "min_similarity",
2380
+ "verbose": {
2381
+ "description": "When `true`, include diagnostic fields in the response.",
2382
+ "name": "verbose",
1725
2383
  "hasDynamicHelp": false,
1726
2384
  "multiple": false,
1727
2385
  "type": "option"
@@ -1729,7 +2387,7 @@
1729
2387
  },
1730
2388
  "hasDynamicHelp": false,
1731
2389
  "hiddenAliases": [],
1732
- "id": "generated:generated-data-api-semantic-search",
2390
+ "id": "generated:generated-example-healthcheck",
1733
2391
  "pluginAlias": "@trillboards/cli",
1734
2392
  "pluginName": "@trillboards/cli",
1735
2393
  "pluginType": "core",
@@ -1740,15 +2398,21 @@
1740
2398
  "dist",
1741
2399
  "commands",
1742
2400
  "generated",
1743
- "generated-data-api-semantic-search.js"
2401
+ "generated-example-healthcheck.js"
1744
2402
  ]
1745
2403
  },
1746
- "generated:generated-data-api-stats": {
2404
+ "generated:generated-federated-get-latest-model-descriptor": {
1747
2405
  "aliases": [],
1748
- "args": {},
1749
- "description": "Platform-wide counters.",
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).",
1750
2414
  "examples": [
1751
- "$ trillboards generated data-api-stats"
2415
+ "$ trillboards generated federated-get-latest-model-descriptor"
1752
2416
  ],
1753
2417
  "flags": {
1754
2418
  "api-key": {
@@ -1778,11 +2442,46 @@
1778
2442
  "yaml"
1779
2443
  ],
1780
2444
  "type": "option"
2445
+ },
2446
+ "venue_type": {
2447
+ "description": "Venue category (required).",
2448
+ "name": "venue_type",
2449
+ "hasDynamicHelp": false,
2450
+ "multiple": false,
2451
+ "type": "option"
2452
+ },
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",
2477
+ "hasDynamicHelp": false,
2478
+ "multiple": false,
2479
+ "type": "option"
1781
2480
  }
1782
2481
  },
1783
2482
  "hasDynamicHelp": false,
1784
2483
  "hiddenAliases": [],
1785
- "id": "generated:generated-data-api-stats",
2484
+ "id": "generated:generated-federated-get-latest-model-descriptor",
1786
2485
  "pluginAlias": "@trillboards/cli",
1787
2486
  "pluginName": "@trillboards/cli",
1788
2487
  "pluginType": "core",
@@ -1793,15 +2492,21 @@
1793
2492
  "dist",
1794
2493
  "commands",
1795
2494
  "generated",
1796
- "generated-data-api-stats.js"
2495
+ "generated-federated-get-latest-model-descriptor.js"
1797
2496
  ]
1798
2497
  },
1799
- "generated:generated-data-api-stream": {
2498
+ "generated:generated-federated-get-model-weights": {
1800
2499
  "aliases": [],
1801
- "args": {},
1802
- "description": "Server-Sent Events stream of live audience/observation events.",
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.",
1803
2508
  "examples": [
1804
- "$ trillboards generated data-api-stream"
2509
+ "$ trillboards generated federated-get-model-weights"
1805
2510
  ],
1806
2511
  "flags": {
1807
2512
  "api-key": {
@@ -1832,16 +2537,37 @@
1832
2537
  ],
1833
2538
  "type": "option"
1834
2539
  },
1835
- "observation_family": {
1836
- "description": "observation_family",
1837
- "name": "observation_family",
2540
+ "venue_type": {
2541
+ "description": "Venue category for slice lookup. Snake_case query alias of venueType.",
2542
+ "name": "venue_type",
1838
2543
  "hasDynamicHelp": false,
1839
2544
  "multiple": false,
1840
2545
  "type": "option"
1841
2546
  },
1842
- "venue_type": {
1843
- "description": "venue_type",
1844
- "name": "venue_type",
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",
1845
2571
  "hasDynamicHelp": false,
1846
2572
  "multiple": false,
1847
2573
  "type": "option"
@@ -1849,7 +2575,7 @@
1849
2575
  },
1850
2576
  "hasDynamicHelp": false,
1851
2577
  "hiddenAliases": [],
1852
- "id": "generated:generated-data-api-stream",
2578
+ "id": "generated:generated-federated-get-model-weights",
1853
2579
  "pluginAlias": "@trillboards/cli",
1854
2580
  "pluginName": "@trillboards/cli",
1855
2581
  "pluginType": "core",
@@ -1860,15 +2586,15 @@
1860
2586
  "dist",
1861
2587
  "commands",
1862
2588
  "generated",
1863
- "generated-data-api-stream.js"
2589
+ "generated-federated-get-model-weights.js"
1864
2590
  ]
1865
2591
  },
1866
- "generated:generated-data-api-usage": {
2592
+ "generated:generated-federated-gradient-upload": {
1867
2593
  "aliases": [],
1868
2594
  "args": {},
1869
- "description": "API usage for the authenticated key (billing dashboard).",
2595
+ "description": "Upload sparsified gradients for multi-slice federated aggregation.",
1870
2596
  "examples": [
1871
- "$ trillboards generated data-api-usage"
2597
+ "$ trillboards generated federated-gradient-upload"
1872
2598
  ],
1873
2599
  "flags": {
1874
2600
  "api-key": {
@@ -1899,9 +2625,9 @@
1899
2625
  ],
1900
2626
  "type": "option"
1901
2627
  },
1902
- "days": {
1903
- "description": "days",
1904
- "name": "days",
2628
+ "data": {
2629
+ "description": "JSON request body",
2630
+ "name": "data",
1905
2631
  "hasDynamicHelp": false,
1906
2632
  "multiple": false,
1907
2633
  "type": "option"
@@ -1909,7 +2635,7 @@
1909
2635
  },
1910
2636
  "hasDynamicHelp": false,
1911
2637
  "hiddenAliases": [],
1912
- "id": "generated:generated-data-api-usage",
2638
+ "id": "generated:generated-federated-gradient-upload",
1913
2639
  "pluginAlias": "@trillboards/cli",
1914
2640
  "pluginName": "@trillboards/cli",
1915
2641
  "pluginType": "core",
@@ -1920,15 +2646,15 @@
1920
2646
  "dist",
1921
2647
  "commands",
1922
2648
  "generated",
1923
- "generated-data-api-usage.js"
2649
+ "generated-federated-gradient-upload.js"
1924
2650
  ]
1925
2651
  },
1926
- "generated:generated-device-ota-manifest": {
2652
+ "generated:generated-federated-performance-upload": {
1927
2653
  "aliases": [],
1928
2654
  "args": {},
1929
- "description": "Signed OTA manifest for managed-device update clients.",
2655
+ "description": "Report on-device model performance metrics.",
1930
2656
  "examples": [
1931
- "$ trillboards generated device-ota-manifest"
2657
+ "$ trillboards generated federated-performance-upload"
1932
2658
  ],
1933
2659
  "flags": {
1934
2660
  "api-key": {
@@ -1959,9 +2685,9 @@
1959
2685
  ],
1960
2686
  "type": "option"
1961
2687
  },
1962
- "agent": {
1963
- "description": "Optional agent type filter (`agent-core`, `agent-core-lite`, etc.). When omitted the caller receives the default manifest bundle.",
1964
- "name": "agent",
2688
+ "data": {
2689
+ "description": "JSON request body",
2690
+ "name": "data",
1965
2691
  "hasDynamicHelp": false,
1966
2692
  "multiple": false,
1967
2693
  "type": "option"
@@ -1969,7 +2695,7 @@
1969
2695
  },
1970
2696
  "hasDynamicHelp": false,
1971
2697
  "hiddenAliases": [],
1972
- "id": "generated:generated-device-ota-manifest",
2698
+ "id": "generated:generated-federated-performance-upload",
1973
2699
  "pluginAlias": "@trillboards/cli",
1974
2700
  "pluginName": "@trillboards/cli",
1975
2701
  "pluginType": "core",
@@ -1980,15 +2706,15 @@
1980
2706
  "dist",
1981
2707
  "commands",
1982
2708
  "generated",
1983
- "generated-device-ota-manifest.js"
2709
+ "generated-federated-performance-upload.js"
1984
2710
  ]
1985
2711
  },
1986
- "generated:generated-example-healthcheck": {
2712
+ "generated:generated-federated-taste-upload": {
1987
2713
  "aliases": [],
1988
2714
  "args": {},
1989
- "description": "Example healthcheck (Phase 3 pipeline proof)",
2715
+ "description": "Upload a screen-taste embedding for content personalization aggregation.",
1990
2716
  "examples": [
1991
- "$ trillboards generated example-healthcheck"
2717
+ "$ trillboards generated federated-taste-upload"
1992
2718
  ],
1993
2719
  "flags": {
1994
2720
  "api-key": {
@@ -2019,9 +2745,9 @@
2019
2745
  ],
2020
2746
  "type": "option"
2021
2747
  },
2022
- "verbose": {
2023
- "description": "When `true`, include diagnostic fields in the response.",
2024
- "name": "verbose",
2748
+ "data": {
2749
+ "description": "JSON request body",
2750
+ "name": "data",
2025
2751
  "hasDynamicHelp": false,
2026
2752
  "multiple": false,
2027
2753
  "type": "option"
@@ -2029,7 +2755,7 @@
2029
2755
  },
2030
2756
  "hasDynamicHelp": false,
2031
2757
  "hiddenAliases": [],
2032
- "id": "generated:generated-example-healthcheck",
2758
+ "id": "generated:generated-federated-taste-upload",
2033
2759
  "pluginAlias": "@trillboards/cli",
2034
2760
  "pluginName": "@trillboards/cli",
2035
2761
  "pluginType": "core",
@@ -2040,7 +2766,7 @@
2040
2766
  "dist",
2041
2767
  "commands",
2042
2768
  "generated",
2043
- "generated-example-healthcheck.js"
2769
+ "generated-federated-taste-upload.js"
2044
2770
  ]
2045
2771
  },
2046
2772
  "generated:generated-playground-dry-run": {
@@ -2461,6 +3187,165 @@
2461
3187
  "generated-sensing-paired-training-upload.js"
2462
3188
  ]
2463
3189
  },
3190
+ "logs:tail": {
3191
+ "aliases": [],
3192
+ "args": {},
3193
+ "description": "Tail real-time request logs via server-sent events",
3194
+ "examples": [
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"
3199
+ ],
3200
+ "flags": {
3201
+ "api-key": {
3202
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
3203
+ "env": "TRILLBOARDS_API_KEY",
3204
+ "name": "api-key",
3205
+ "hasDynamicHelp": false,
3206
+ "multiple": false,
3207
+ "type": "option"
3208
+ },
3209
+ "base-url": {
3210
+ "description": "API base URL",
3211
+ "name": "base-url",
3212
+ "default": "https://api.trillboards.com",
3213
+ "hasDynamicHelp": false,
3214
+ "multiple": false,
3215
+ "type": "option"
3216
+ },
3217
+ "format": {
3218
+ "description": "Output format",
3219
+ "name": "format",
3220
+ "hasDynamicHelp": false,
3221
+ "multiple": false,
3222
+ "options": [
3223
+ "json",
3224
+ "table",
3225
+ "yaml"
3226
+ ],
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"
3243
+ }
3244
+ },
3245
+ "hasDynamicHelp": false,
3246
+ "hiddenAliases": [],
3247
+ "id": "logs:tail",
3248
+ "pluginAlias": "@trillboards/cli",
3249
+ "pluginName": "@trillboards/cli",
3250
+ "pluginType": "core",
3251
+ "strict": true,
3252
+ "enableJsonFlag": false,
3253
+ "isESM": true,
3254
+ "relativePath": [
3255
+ "dist",
3256
+ "commands",
3257
+ "logs",
3258
+ "tail.js"
3259
+ ]
3260
+ },
3261
+ "screens:watch": {
3262
+ "aliases": [],
3263
+ "args": {},
3264
+ "description": "Live fleet dashboard — watch all screens in real-time",
3265
+ "examples": [
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"
3270
+ ],
3271
+ "flags": {
3272
+ "api-key": {
3273
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
3274
+ "env": "TRILLBOARDS_API_KEY",
3275
+ "name": "api-key",
3276
+ "hasDynamicHelp": false,
3277
+ "multiple": false,
3278
+ "type": "option"
3279
+ },
3280
+ "base-url": {
3281
+ "description": "API base URL",
3282
+ "name": "base-url",
3283
+ "default": "https://api.trillboards.com",
3284
+ "hasDynamicHelp": false,
3285
+ "multiple": false,
3286
+ "type": "option"
3287
+ },
3288
+ "format": {
3289
+ "description": "Output format",
3290
+ "name": "format",
3291
+ "hasDynamicHelp": false,
3292
+ "multiple": false,
3293
+ "options": [
3294
+ "json",
3295
+ "table",
3296
+ "yaml"
3297
+ ],
3298
+ "type": "option"
3299
+ },
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",
3323
+ "hasDynamicHelp": false,
3324
+ "multiple": false,
3325
+ "options": [
3326
+ "name",
3327
+ "earnings",
3328
+ "fill-rate"
3329
+ ],
3330
+ "type": "option"
3331
+ }
3332
+ },
3333
+ "hasDynamicHelp": false,
3334
+ "hiddenAliases": [],
3335
+ "id": "screens:watch",
3336
+ "pluginAlias": "@trillboards/cli",
3337
+ "pluginName": "@trillboards/cli",
3338
+ "pluginType": "core",
3339
+ "strict": true,
3340
+ "enableJsonFlag": false,
3341
+ "isESM": true,
3342
+ "relativePath": [
3343
+ "dist",
3344
+ "commands",
3345
+ "screens",
3346
+ "watch.js"
3347
+ ]
3348
+ },
2464
3349
  "sandbox:create": {
2465
3350
  "aliases": [],
2466
3351
  "args": {},
@@ -2693,5 +3578,5 @@
2693
3578
  ]
2694
3579
  }
2695
3580
  },
2696
- "version": "0.1.0"
3581
+ "version": "0.1.3"
2697
3582
  }