twentythree-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/README.md +25 -0
  2. package/bin/dev.cmd +2 -0
  3. package/bin/dev.js +28 -0
  4. package/bin/run.cmd +2 -0
  5. package/bin/run.js +23 -0
  6. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  7. package/dist/api/client.cjs +24 -0
  8. package/dist/api/types.cjs +0 -0
  9. package/dist/auth/credential-store.cjs +22 -0
  10. package/dist/auth/token-refresh.cjs +70 -0
  11. package/dist/auth/workspace-config.cjs +61 -0
  12. package/dist/commands/action/add.cjs +75 -0
  13. package/dist/commands/action/delete.cjs +64 -0
  14. package/dist/commands/action/exclude.cjs +70 -0
  15. package/dist/commands/action/get.cjs +112 -0
  16. package/dist/commands/action/include.cjs +70 -0
  17. package/dist/commands/action/list.cjs +119 -0
  18. package/dist/commands/action/types.cjs +63 -0
  19. package/dist/commands/action/update.cjs +86 -0
  20. package/dist/commands/action/upload.cjs +89 -0
  21. package/dist/commands/analytics/conversions/index.cjs +83 -0
  22. package/dist/commands/analytics/conversions/timeseries.cjs +83 -0
  23. package/dist/commands/analytics/conversions/totals.cjs +83 -0
  24. package/dist/commands/analytics/live/event-timeseries.cjs +86 -0
  25. package/dist/commands/analytics/live/event-totals.cjs +86 -0
  26. package/dist/commands/analytics/live/event.cjs +88 -0
  27. package/dist/commands/analytics/live/index.cjs +89 -0
  28. package/dist/commands/analytics/live/timeseries.cjs +85 -0
  29. package/dist/commands/analytics/live/totals.cjs +85 -0
  30. package/dist/commands/analytics/live/weekday/timeseries.cjs +85 -0
  31. package/dist/commands/analytics/live/weekday/totals.cjs +85 -0
  32. package/dist/commands/analytics/live/weekday.cjs +88 -0
  33. package/dist/commands/analytics/usage/devices/timeseries.cjs +83 -0
  34. package/dist/commands/analytics/usage/devices/totals.cjs +86 -0
  35. package/dist/commands/analytics/usage/devices.cjs +89 -0
  36. package/dist/commands/analytics/usage/domains/totals.cjs +83 -0
  37. package/dist/commands/analytics/usage/domains.cjs +89 -0
  38. package/dist/commands/analytics/usage/locations/totals.cjs +83 -0
  39. package/dist/commands/analytics/usage/locations.cjs +89 -0
  40. package/dist/commands/analytics/usage/sourceids/totals.cjs +83 -0
  41. package/dist/commands/analytics/usage/sourceids.cjs +89 -0
  42. package/dist/commands/analytics/usage/sources/totals.cjs +83 -0
  43. package/dist/commands/analytics/usage/sources.cjs +89 -0
  44. package/dist/commands/analytics/usage/spots/timeseries.cjs +83 -0
  45. package/dist/commands/analytics/usage/spots/totals.cjs +83 -0
  46. package/dist/commands/analytics/usage/spots.cjs +89 -0
  47. package/dist/commands/analytics/usage/storage.cjs +52 -0
  48. package/dist/commands/analytics/usage/traffic/timeseries.cjs +83 -0
  49. package/dist/commands/analytics/usage/traffic/totals.cjs +86 -0
  50. package/dist/commands/analytics/usage/traffic.cjs +89 -0
  51. package/dist/commands/analytics/video/index.cjs +89 -0
  52. package/dist/commands/analytics/video/performance/timeseries.cjs +83 -0
  53. package/dist/commands/analytics/video/performance/totals.cjs +80 -0
  54. package/dist/commands/analytics/video/performance.cjs +89 -0
  55. package/dist/commands/analytics/video/published/timeseries.cjs +83 -0
  56. package/dist/commands/analytics/video/published/totals.cjs +80 -0
  57. package/dist/commands/analytics/video/published.cjs +89 -0
  58. package/dist/commands/analytics/video/timeseries.cjs +86 -0
  59. package/dist/commands/analytics/video/totals.cjs +86 -0
  60. package/dist/commands/analytics/video/weekday/timeseries.cjs +86 -0
  61. package/dist/commands/analytics/video/weekday/totals.cjs +83 -0
  62. package/dist/commands/analytics/video/weekday.cjs +89 -0
  63. package/dist/commands/app/add.cjs +76 -0
  64. package/dist/commands/app/delete.cjs +57 -0
  65. package/dist/commands/app/update.cjs +77 -0
  66. package/dist/commands/audience/companies.cjs +116 -0
  67. package/dist/commands/audience/field/list.cjs +83 -0
  68. package/dist/commands/audience/field/remove.cjs +63 -0
  69. package/dist/commands/audience/field/set.cjs +78 -0
  70. package/dist/commands/audience/field/types.cjs +57 -0
  71. package/dist/commands/audience/funnel.cjs +77 -0
  72. package/dist/commands/audience/identity-sources.cjs +64 -0
  73. package/dist/commands/audience/list-collectors.cjs +88 -0
  74. package/dist/commands/audience/list.cjs +122 -0
  75. package/dist/commands/audience/metrics.cjs +89 -0
  76. package/dist/commands/audience/register.cjs +106 -0
  77. package/dist/commands/audience/remove.cjs +72 -0
  78. package/dist/commands/audience/search.cjs +106 -0
  79. package/dist/commands/audience/timelines.cjs +115 -0
  80. package/dist/commands/audience/unregister.cjs +65 -0
  81. package/dist/commands/auth/credentials.cjs +89 -0
  82. package/dist/commands/auth/status.cjs +34 -0
  83. package/dist/commands/category/create.cjs +80 -0
  84. package/dist/commands/category/delete.cjs +70 -0
  85. package/dist/commands/category/index.cjs +11 -0
  86. package/dist/commands/category/list.cjs +98 -0
  87. package/dist/commands/category/update.cjs +134 -0
  88. package/dist/commands/collector/exclude.cjs +56 -0
  89. package/dist/commands/collector/include.cjs +56 -0
  90. package/dist/commands/collector/list.cjs +81 -0
  91. package/dist/commands/comment/add.cjs +102 -0
  92. package/dist/commands/comment/clone.cjs +59 -0
  93. package/dist/commands/comment/delete.cjs +55 -0
  94. package/dist/commands/comment/list.cjs +126 -0
  95. package/dist/commands/comment/promote.cjs +65 -0
  96. package/dist/commands/comment/reaction/add.cjs +81 -0
  97. package/dist/commands/comment/reaction/list.cjs +92 -0
  98. package/dist/commands/comment/reaction/remove.cjs +81 -0
  99. package/dist/commands/comment/set-order.cjs +63 -0
  100. package/dist/commands/comment/update.cjs +63 -0
  101. package/dist/commands/doctor.cjs +129 -0
  102. package/dist/commands/openupload/list.cjs +95 -0
  103. package/dist/commands/openupload/update-file.cjs +85 -0
  104. package/dist/commands/openupload/upload-file.cjs +130 -0
  105. package/dist/commands/player/delete.cjs +66 -0
  106. package/dist/commands/player/embed-versions.cjs +83 -0
  107. package/dist/commands/player/embed.cjs +134 -0
  108. package/dist/commands/player/list.cjs +86 -0
  109. package/dist/commands/player/styles.cjs +70 -0
  110. package/dist/commands/player/update.cjs +80 -0
  111. package/dist/commands/poll/add.cjs +84 -0
  112. package/dist/commands/poll/answer.cjs +89 -0
  113. package/dist/commands/poll/list.cjs +92 -0
  114. package/dist/commands/poll/remove.cjs +57 -0
  115. package/dist/commands/poll/set-options.cjs +84 -0
  116. package/dist/commands/poll/update.cjs +79 -0
  117. package/dist/commands/presentation/page/link-locations.cjs +57 -0
  118. package/dist/commands/presentation/setting/list.cjs +44 -0
  119. package/dist/commands/presentation/setting/update.cjs +67 -0
  120. package/dist/commands/protection/protect.cjs +68 -0
  121. package/dist/commands/protection/unprotect.cjs +65 -0
  122. package/dist/commands/protection/verify.cjs +80 -0
  123. package/dist/commands/session/get-token.cjs +75 -0
  124. package/dist/commands/session/redeem-token.cjs +56 -0
  125. package/dist/commands/setting/update.cjs +79 -0
  126. package/dist/commands/site/get.cjs +73 -0
  127. package/dist/commands/site/search.cjs +93 -0
  128. package/dist/commands/spot/check.cjs +52 -0
  129. package/dist/commands/spot/create.cjs +79 -0
  130. package/dist/commands/spot/delete.cjs +68 -0
  131. package/dist/commands/spot/list.cjs +120 -0
  132. package/dist/commands/spot/reset-version.cjs +53 -0
  133. package/dist/commands/spot/set-videos.cjs +64 -0
  134. package/dist/commands/spot/update.cjs +78 -0
  135. package/dist/commands/tag/list.cjs +98 -0
  136. package/dist/commands/tag/related.cjs +57 -0
  137. package/dist/commands/thumbnail/add.cjs +66 -0
  138. package/dist/commands/thumbnail/data.cjs +60 -0
  139. package/dist/commands/thumbnail/delete.cjs +61 -0
  140. package/dist/commands/thumbnail/duplicate.cjs +67 -0
  141. package/dist/commands/thumbnail/file/delete.cjs +71 -0
  142. package/dist/commands/thumbnail/file/list.cjs +74 -0
  143. package/dist/commands/thumbnail/file/upload.cjs +79 -0
  144. package/dist/commands/thumbnail/index.cjs +11 -0
  145. package/dist/commands/thumbnail/list.cjs +89 -0
  146. package/dist/commands/thumbnail/update.cjs +87 -0
  147. package/dist/commands/user/create.cjs +87 -0
  148. package/dist/commands/user/get-login-token.cjs +72 -0
  149. package/dist/commands/user/get.cjs +67 -0
  150. package/dist/commands/user/list.cjs +95 -0
  151. package/dist/commands/user/redeem-login-token.cjs +55 -0
  152. package/dist/commands/user/send-invitation.cjs +63 -0
  153. package/dist/commands/user/tokens.cjs +80 -0
  154. package/dist/commands/user/update.cjs +121 -0
  155. package/dist/commands/video/delete.cjs +67 -0
  156. package/dist/commands/video/frame.cjs +69 -0
  157. package/dist/commands/video/get.cjs +68 -0
  158. package/dist/commands/video/index.cjs +11 -0
  159. package/dist/commands/video/list.cjs +98 -0
  160. package/dist/commands/video/replace.cjs +126 -0
  161. package/dist/commands/video/section/create.cjs +73 -0
  162. package/dist/commands/video/section/delete.cjs +78 -0
  163. package/dist/commands/video/section/index.cjs +11 -0
  164. package/dist/commands/video/section/list.cjs +75 -0
  165. package/dist/commands/video/section/set-thumbnail.cjs +73 -0
  166. package/dist/commands/video/section/update.cjs +84 -0
  167. package/dist/commands/video/subtitle/archive.cjs +76 -0
  168. package/dist/commands/video/subtitle/create.cjs +80 -0
  169. package/dist/commands/video/subtitle/data.cjs +75 -0
  170. package/dist/commands/video/subtitle/delete.cjs +84 -0
  171. package/dist/commands/video/subtitle/duplicate.cjs +89 -0
  172. package/dist/commands/video/subtitle/index.cjs +11 -0
  173. package/dist/commands/video/subtitle/list.cjs +94 -0
  174. package/dist/commands/video/subtitle/locales.cjs +60 -0
  175. package/dist/commands/video/subtitle/set-primary.cjs +64 -0
  176. package/dist/commands/video/subtitle/types.cjs +42 -0
  177. package/dist/commands/video/subtitle/update.cjs +93 -0
  178. package/dist/commands/video/subtitle/upload.cjs +104 -0
  179. package/dist/commands/video/transcoding-progress.cjs +71 -0
  180. package/dist/commands/video/update.cjs +184 -0
  181. package/dist/commands/video/upload.cjs +151 -0
  182. package/dist/commands/webhook/events.cjs +68 -0
  183. package/dist/commands/webhook/list.cjs +64 -0
  184. package/dist/commands/webhook/sample.cjs +47 -0
  185. package/dist/commands/webhook/subscribe.cjs +66 -0
  186. package/dist/commands/webhook/unsubscribe.cjs +71 -0
  187. package/dist/commands/webinar/attachment/delete.cjs +79 -0
  188. package/dist/commands/webinar/attachment/list.cjs +94 -0
  189. package/dist/commands/webinar/attachment/set-hidden.cjs +85 -0
  190. package/dist/commands/webinar/attachment/upload.cjs +128 -0
  191. package/dist/commands/webinar/clips.cjs +77 -0
  192. package/dist/commands/webinar/create.cjs +107 -0
  193. package/dist/commands/webinar/delete.cjs +62 -0
  194. package/dist/commands/webinar/highlights.cjs +84 -0
  195. package/dist/commands/webinar/index.cjs +11 -0
  196. package/dist/commands/webinar/list-formats.cjs +50 -0
  197. package/dist/commands/webinar/list.cjs +134 -0
  198. package/dist/commands/webinar/log.cjs +69 -0
  199. package/dist/commands/webinar/mail/add.cjs +101 -0
  200. package/dist/commands/webinar/mail/list.cjs +83 -0
  201. package/dist/commands/webinar/mail/preview.cjs +75 -0
  202. package/dist/commands/webinar/mail/remove.cjs +75 -0
  203. package/dist/commands/webinar/mail/send.cjs +68 -0
  204. package/dist/commands/webinar/mail/test.cjs +86 -0
  205. package/dist/commands/webinar/mail/update.cjs +84 -0
  206. package/dist/commands/webinar/metrics.cjs +59 -0
  207. package/dist/commands/webinar/queued-video/add.cjs +81 -0
  208. package/dist/commands/webinar/queued-video/remove.cjs +81 -0
  209. package/dist/commands/webinar/recording/split.cjs +53 -0
  210. package/dist/commands/webinar/recording/start.cjs +53 -0
  211. package/dist/commands/webinar/recording/status.cjs +52 -0
  212. package/dist/commands/webinar/recording/stop.cjs +53 -0
  213. package/dist/commands/webinar/repeat.cjs +65 -0
  214. package/dist/commands/webinar/room/connect.cjs +60 -0
  215. package/dist/commands/webinar/room/info.cjs +60 -0
  216. package/dist/commands/webinar/room/send-recording.cjs +59 -0
  217. package/dist/commands/webinar/room/themes.cjs +63 -0
  218. package/dist/commands/webinar/section/add.cjs +98 -0
  219. package/dist/commands/webinar/section/list.cjs +86 -0
  220. package/dist/commands/webinar/section/remove.cjs +75 -0
  221. package/dist/commands/webinar/section/update.cjs +85 -0
  222. package/dist/commands/webinar/series/apply-recurrence.cjs +68 -0
  223. package/dist/commands/webinar/series/cancel.cjs +73 -0
  224. package/dist/commands/webinar/series/create.cjs +80 -0
  225. package/dist/commands/webinar/series/delete.cjs +73 -0
  226. package/dist/commands/webinar/series/list.cjs +79 -0
  227. package/dist/commands/webinar/series/mapped-objects.cjs +69 -0
  228. package/dist/commands/webinar/series/metrics.cjs +57 -0
  229. package/dist/commands/webinar/series/recurrences.cjs +72 -0
  230. package/dist/commands/webinar/series/set-ondemand.cjs +67 -0
  231. package/dist/commands/webinar/series/skip-recurrence.cjs +79 -0
  232. package/dist/commands/webinar/series/update.cjs +71 -0
  233. package/dist/commands/webinar/series/upload-thumbnail.cjs +117 -0
  234. package/dist/commands/webinar/speaker/add-from-speaker.cjs +78 -0
  235. package/dist/commands/webinar/speaker/add-from-user.cjs +78 -0
  236. package/dist/commands/webinar/speaker/add.cjs +112 -0
  237. package/dist/commands/webinar/speaker/cancel-guest-request.cjs +62 -0
  238. package/dist/commands/webinar/speaker/connection-types.cjs +66 -0
  239. package/dist/commands/webinar/speaker/library.cjs +59 -0
  240. package/dist/commands/webinar/speaker/list.cjs +90 -0
  241. package/dist/commands/webinar/speaker/remove-avatar.cjs +62 -0
  242. package/dist/commands/webinar/speaker/remove.cjs +69 -0
  243. package/dist/commands/webinar/speaker/request-guest.cjs +62 -0
  244. package/dist/commands/webinar/speaker/send-invitation.cjs +62 -0
  245. package/dist/commands/webinar/speaker/set-avatar.cjs +130 -0
  246. package/dist/commands/webinar/speaker/set-order.cjs +95 -0
  247. package/dist/commands/webinar/speaker/update.cjs +90 -0
  248. package/dist/commands/webinar/transcription/connect.cjs +69 -0
  249. package/dist/commands/webinar/transcription/list.cjs +88 -0
  250. package/dist/commands/webinar/transcription/locales.cjs +76 -0
  251. package/dist/commands/webinar/transcription/transcriptionlist.cjs +67 -0
  252. package/dist/commands/webinar/update.cjs +192 -0
  253. package/dist/commands/webinar/upload-image.cjs +133 -0
  254. package/dist/commands/workspace/list.cjs +47 -0
  255. package/dist/commands/workspace/use.cjs +52 -0
  256. package/dist/index.cjs +6 -0
  257. package/dist/lib/analytics-flags.cjs +60 -0
  258. package/dist/lib/audit.cjs +44 -0
  259. package/dist/lib/base-command.cjs +156 -0
  260. package/dist/lib/output.cjs +82 -0
  261. package/dist/lib/pagination.cjs +36 -0
  262. package/dist/lib/term-map.cjs +48 -0
  263. package/dist/upload/chunk-pool.cjs +47 -0
  264. package/dist/upload/chunked-upload.cjs +131 -0
  265. package/dist/upload/types.cjs +9 -0
  266. package/docs/commands/README.md +31 -0
  267. package/docs/commands/action/add.md +36 -0
  268. package/docs/commands/action/delete.md +32 -0
  269. package/docs/commands/action/exclude.md +38 -0
  270. package/docs/commands/action/get.md +47 -0
  271. package/docs/commands/action/include.md +38 -0
  272. package/docs/commands/action/list.md +43 -0
  273. package/docs/commands/action/types.md +34 -0
  274. package/docs/commands/action/update.md +42 -0
  275. package/docs/commands/action/upload.md +36 -0
  276. package/docs/commands/action.md +306 -0
  277. package/docs/commands/analytics/conversions.md +113 -0
  278. package/docs/commands/analytics/live.md +338 -0
  279. package/docs/commands/analytics/usage.md +674 -0
  280. package/docs/commands/analytics/video.md +449 -0
  281. package/docs/commands/analytics.md +1559 -0
  282. package/docs/commands/app/add.md +38 -0
  283. package/docs/commands/app/delete.md +32 -0
  284. package/docs/commands/app/update.md +41 -0
  285. package/docs/commands/app.md +101 -0
  286. package/docs/commands/audience/companies.md +41 -0
  287. package/docs/commands/audience/field.md +119 -0
  288. package/docs/commands/audience/funnel.md +38 -0
  289. package/docs/commands/audience/identity-sources.md +29 -0
  290. package/docs/commands/audience/list-collectors.md +35 -0
  291. package/docs/commands/audience/list.md +42 -0
  292. package/docs/commands/audience/metrics.md +40 -0
  293. package/docs/commands/audience/register.md +45 -0
  294. package/docs/commands/audience/remove.md +35 -0
  295. package/docs/commands/audience/search.md +39 -0
  296. package/docs/commands/audience/timelines.md +41 -0
  297. package/docs/commands/audience/unregister.md +36 -0
  298. package/docs/commands/audience.md +485 -0
  299. package/docs/commands/auth/credentials.md +23 -0
  300. package/docs/commands/auth/status.md +27 -0
  301. package/docs/commands/auth.md +45 -0
  302. package/docs/commands/category/create.md +36 -0
  303. package/docs/commands/category/delete.md +32 -0
  304. package/docs/commands/category/list.md +34 -0
  305. package/docs/commands/category/update.md +39 -0
  306. package/docs/commands/category.md +141 -0
  307. package/docs/commands/collector/exclude.md +33 -0
  308. package/docs/commands/collector/include.md +33 -0
  309. package/docs/commands/collector/list.md +37 -0
  310. package/docs/commands/collector.md +93 -0
  311. package/docs/commands/comment/add.md +43 -0
  312. package/docs/commands/comment/clone.md +35 -0
  313. package/docs/commands/comment/delete.md +32 -0
  314. package/docs/commands/comment/list.md +42 -0
  315. package/docs/commands/comment/promote.md +37 -0
  316. package/docs/commands/comment/reaction.md +106 -0
  317. package/docs/commands/comment/set-order.md +34 -0
  318. package/docs/commands/comment/update.md +36 -0
  319. package/docs/commands/comment.md +330 -0
  320. package/docs/commands/doctor.md +28 -0
  321. package/docs/commands/openupload/list.md +36 -0
  322. package/docs/commands/openupload/update-file.md +40 -0
  323. package/docs/commands/openupload/upload-file.md +39 -0
  324. package/docs/commands/openupload.md +105 -0
  325. package/docs/commands/player/delete.md +32 -0
  326. package/docs/commands/player/embed-versions.md +34 -0
  327. package/docs/commands/player/embed.md +51 -0
  328. package/docs/commands/player/list.md +32 -0
  329. package/docs/commands/player/styles.md +32 -0
  330. package/docs/commands/player/update.md +37 -0
  331. package/docs/commands/player.md +193 -0
  332. package/docs/commands/poll/add.md +33 -0
  333. package/docs/commands/poll/answer.md +38 -0
  334. package/docs/commands/poll/list.md +33 -0
  335. package/docs/commands/poll/remove.md +32 -0
  336. package/docs/commands/poll/set-options.md +35 -0
  337. package/docs/commands/poll/update.md +41 -0
  338. package/docs/commands/poll.md +187 -0
  339. package/docs/commands/presentation/page.md +29 -0
  340. package/docs/commands/presentation/setting.md +58 -0
  341. package/docs/commands/presentation.md +82 -0
  342. package/docs/commands/protection/protect.md +37 -0
  343. package/docs/commands/protection/unprotect.md +34 -0
  344. package/docs/commands/protection/verify.md +39 -0
  345. package/docs/commands/protection.md +100 -0
  346. package/docs/commands/session/get-token.md +38 -0
  347. package/docs/commands/session/redeem-token.md +32 -0
  348. package/docs/commands/session.md +65 -0
  349. package/docs/commands/setting/update.md +37 -0
  350. package/docs/commands/setting.md +37 -0
  351. package/docs/commands/site/get.md +35 -0
  352. package/docs/commands/site/search.md +38 -0
  353. package/docs/commands/site.md +68 -0
  354. package/docs/commands/spot/check.md +32 -0
  355. package/docs/commands/spot/create.md +38 -0
  356. package/docs/commands/spot/delete.md +32 -0
  357. package/docs/commands/spot/list.md +43 -0
  358. package/docs/commands/spot/reset-version.md +32 -0
  359. package/docs/commands/spot/set-videos.md +35 -0
  360. package/docs/commands/spot/update.md +40 -0
  361. package/docs/commands/spot.md +222 -0
  362. package/docs/commands/tag/list.md +44 -0
  363. package/docs/commands/tag/related.md +32 -0
  364. package/docs/commands/tag.md +71 -0
  365. package/docs/commands/thumbnail/add.md +33 -0
  366. package/docs/commands/thumbnail/data.md +35 -0
  367. package/docs/commands/thumbnail/delete.md +32 -0
  368. package/docs/commands/thumbnail/duplicate.md +37 -0
  369. package/docs/commands/thumbnail/file.md +90 -0
  370. package/docs/commands/thumbnail/list.md +37 -0
  371. package/docs/commands/thumbnail/update.md +44 -0
  372. package/docs/commands/thumbnail.md +293 -0
  373. package/docs/commands/user/create.md +41 -0
  374. package/docs/commands/user/get-login-token.md +37 -0
  375. package/docs/commands/user/get.md +37 -0
  376. package/docs/commands/user/list.md +40 -0
  377. package/docs/commands/user/redeem-login-token.md +32 -0
  378. package/docs/commands/user/send-invitation.md +37 -0
  379. package/docs/commands/user/tokens.md +34 -0
  380. package/docs/commands/user/update.md +44 -0
  381. package/docs/commands/user.md +267 -0
  382. package/docs/commands/video/delete.md +32 -0
  383. package/docs/commands/video/frame.md +37 -0
  384. package/docs/commands/video/get.md +32 -0
  385. package/docs/commands/video/list.md +33 -0
  386. package/docs/commands/video/replace.md +37 -0
  387. package/docs/commands/video/section.md +177 -0
  388. package/docs/commands/video/subtitle.md +362 -0
  389. package/docs/commands/video/transcoding-progress.md +32 -0
  390. package/docs/commands/video/update.md +45 -0
  391. package/docs/commands/video/upload.md +44 -0
  392. package/docs/commands/video.md +801 -0
  393. package/docs/commands/webhook/events.md +34 -0
  394. package/docs/commands/webhook/list.md +29 -0
  395. package/docs/commands/webhook/sample.md +32 -0
  396. package/docs/commands/webhook/subscribe.md +33 -0
  397. package/docs/commands/webhook/unsubscribe.md +35 -0
  398. package/docs/commands/webhook.md +143 -0
  399. package/docs/commands/webinar/attachment.md +135 -0
  400. package/docs/commands/webinar/clips.md +32 -0
  401. package/docs/commands/webinar/create.md +40 -0
  402. package/docs/commands/webinar/delete.md +32 -0
  403. package/docs/commands/webinar/highlights.md +37 -0
  404. package/docs/commands/webinar/list-formats.md +29 -0
  405. package/docs/commands/webinar/list.md +41 -0
  406. package/docs/commands/webinar/log.md +32 -0
  407. package/docs/commands/webinar/mail.md +238 -0
  408. package/docs/commands/webinar/metrics.md +32 -0
  409. package/docs/commands/webinar/queued-video.md +65 -0
  410. package/docs/commands/webinar/recording.md +113 -0
  411. package/docs/commands/webinar/repeat.md +35 -0
  412. package/docs/commands/webinar/room.md +110 -0
  413. package/docs/commands/webinar/section.md +134 -0
  414. package/docs/commands/webinar/series.md +365 -0
  415. package/docs/commands/webinar/speaker.md +430 -0
  416. package/docs/commands/webinar/transcription.md +125 -0
  417. package/docs/commands/webinar/update.md +43 -0
  418. package/docs/commands/webinar/upload-image.md +42 -0
  419. package/docs/commands/webinar.md +2030 -0
  420. package/docs/commands/workspace/list.md +27 -0
  421. package/docs/commands/workspace/use.md +32 -0
  422. package/docs/commands/workspace.md +54 -0
  423. package/docs/guides/api-spec-upgrade.md +92 -0
  424. package/docs/guides/getting-started.md +66 -0
  425. package/oclif.manifest.json +21609 -0
  426. package/package.json +71 -0
@@ -0,0 +1,85 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ let _clack_prompts = require("@clack/prompts");
9
+ //#region src/commands/webinar/attachment/set-hidden.ts
10
+ /**
11
+ * Webinar attachment set-hidden command — shows or hides an attachment.
12
+ *
13
+ * Action command pattern (Decision D-1): outputs a single green success line only.
14
+ * Use --hidden to hide, --no-hidden to make visible.
15
+ *
16
+ * Threat mitigations:
17
+ * T-05-03: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
18
+ */
19
+ var WebinarAttachmentSetHidden = class WebinarAttachmentSetHidden extends require_lib_base_command.AuthenticatedCommand {
20
+ static description = "Show or hide a webinar attachment";
21
+ static examples = [
22
+ "<%= config.bin %> webinar attachment set-hidden 12345 --filename slides.pdf --hidden",
23
+ "<%= config.bin %> webinar attachment set-hidden 12345 --filename slides.pdf --no-hidden",
24
+ "<%= config.bin %> webinar attachment set-hidden 12345 --filename slides.pdf --hidden --json"
25
+ ];
26
+ static enableJsonFlag = true;
27
+ static flags = {
28
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
29
+ filename: _oclif_core.Flags.string({
30
+ description: "Filename of the attachment",
31
+ required: false
32
+ }),
33
+ hidden: _oclif_core.Flags.boolean({
34
+ description: "Set hidden (--hidden) or visible (--no-hidden)",
35
+ allowNo: true,
36
+ required: true
37
+ })
38
+ };
39
+ static args = { id: _oclif_core.Args.string({
40
+ description: "Webinar ID",
41
+ required: true
42
+ }) };
43
+ static agentMetadata = {
44
+ api_endpoint: "POST /live/attachment/set-hidden",
45
+ auth_scope: "write",
46
+ output_shape: { type: "none" },
47
+ side_effects: "updates"
48
+ };
49
+ async run() {
50
+ const { args, flags } = await this.parse(WebinarAttachmentSetHidden);
51
+ this.printWorkspaceHeader();
52
+ let filename = flags.filename;
53
+ if (!filename && !this.jsonEnabled()) {
54
+ const result = await (0, _clack_prompts.text)({ message: "Attachment filename" });
55
+ if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
56
+ filename = result;
57
+ }
58
+ if (!filename) this.error("--filename is required in non-interactive mode", { exit: 1 });
59
+ const { data, error } = await this.apiClient.POST("/live/attachment/set-hidden", {
60
+ body: {
61
+ live_id: Number(args.id),
62
+ filename,
63
+ hidden_p: flags.hidden ? 1 : 0
64
+ },
65
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
66
+ });
67
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
68
+ this.log(chalk.default.green(`Attachment "${filename}" ${flags.hidden ? "hidden" : "visible"}`));
69
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
70
+ ok: true,
71
+ data,
72
+ summary: "Attachment visibility updated",
73
+ breadcrumbs: [
74
+ { domain: this.activeWorkspace.domain },
75
+ {
76
+ resource: "webinar",
77
+ id: args.id
78
+ },
79
+ { resource: "attachment" }
80
+ ]
81
+ });
82
+ }
83
+ };
84
+ //#endregion
85
+ module.exports = WebinarAttachmentSetHidden;
@@ -0,0 +1,128 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../../lib/output.cjs");
5
+ const require_upload_types = require("../../../upload/types.cjs");
6
+ const require_upload_chunked_upload = require("../../../upload/chunked-upload.cjs");
7
+ let _oclif_core = require("@oclif/core");
8
+ let chalk = require("chalk");
9
+ chalk = require_runtime.__toESM(chalk);
10
+ let node_fs_promises = require("node:fs/promises");
11
+ //#region src/commands/webinar/attachment/upload.ts
12
+ /**
13
+ * Simple inline progress bar that writes directly to stderr using \r.
14
+ * T-05-01: shows only byte counts, never the live_id token value.
15
+ */
16
+ var ProgressBar = class {
17
+ lastLen = 0;
18
+ render(bytesUploaded, total, speed) {
19
+ const pct = total > 0 ? Math.floor(bytesUploaded / total * 100) : 0;
20
+ const filled = Math.floor(pct / 5);
21
+ const line = `[${"█".repeat(filled) + "░".repeat(20 - filled)}] ${pct}% | ${require_lib_output.formatBytes(bytesUploaded)} / ${require_lib_output.formatBytes(total)} | ${require_lib_output.formatBytes(speed)}/s`;
22
+ const padding = " ".repeat(Math.max(0, this.lastLen - line.length));
23
+ process.stderr.write(`\r${line}${padding}`);
24
+ this.lastLen = line.length;
25
+ }
26
+ finish() {
27
+ process.stderr.write("\n");
28
+ this.lastLen = 0;
29
+ }
30
+ };
31
+ /**
32
+ * Webinar attachment upload command — uploads a file attachment to a webinar.
33
+ *
34
+ * Uses the chunked upload engine with live_id as the token field name.
35
+ *
36
+ * Threat mitigations:
37
+ * T-05-01: Progress bar shows only byte counts, never the live_id token value
38
+ * T-05-02: tokenFieldName explicitly set to 'live_id' — never uses default 'upload_token'
39
+ * T-05-03: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
40
+ */
41
+ var WebinarAttachmentUpload = class WebinarAttachmentUpload extends require_lib_base_command.AuthenticatedCommand {
42
+ static description = "Upload an attachment to a webinar";
43
+ static examples = ["<%= config.bin %> webinar attachment upload 12345 ./slides.pdf", "<%= config.bin %> webinar attachment upload 12345 ./handout.pdf --hidden"];
44
+ static enableJsonFlag = true;
45
+ static flags = {
46
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
47
+ "chunk-size": _oclif_core.Flags.integer({
48
+ description: `Chunk size in bytes (default: ${require_upload_types.DEFAULT_CHUNK_SIZE})`,
49
+ default: require_upload_types.DEFAULT_CHUNK_SIZE
50
+ }),
51
+ concurrency: _oclif_core.Flags.integer({
52
+ description: `Number of chunks to upload in parallel (default: 5)`,
53
+ default: 5
54
+ }),
55
+ hidden: _oclif_core.Flags.boolean({
56
+ description: "Upload attachment as hidden",
57
+ allowNo: true,
58
+ required: false
59
+ })
60
+ };
61
+ static args = {
62
+ id: _oclif_core.Args.string({
63
+ description: "Webinar ID",
64
+ required: true
65
+ }),
66
+ file: _oclif_core.Args.string({
67
+ description: "Path to file to upload",
68
+ required: true
69
+ })
70
+ };
71
+ static agentMetadata = {
72
+ api_endpoint: "POST /live/attachment/upload",
73
+ auth_scope: "write",
74
+ output_shape: { type: "none" },
75
+ side_effects: "creates"
76
+ };
77
+ async run() {
78
+ const { args, flags } = await this.parse(WebinarAttachmentUpload);
79
+ this.printWorkspaceHeader();
80
+ try {
81
+ await (0, node_fs_promises.stat)(args.file);
82
+ } catch {
83
+ this.error(require_lib_term_map.applyCliTerms(`File not found: ${args.file}`), { exit: 1 });
84
+ }
85
+ const totalBytes = (await (0, node_fs_promises.stat)(args.file)).size;
86
+ const bar = new ProgressBar();
87
+ const startTime = Date.now();
88
+ let result;
89
+ bar.render(0, totalBytes, 0);
90
+ try {
91
+ result = await require_upload_chunked_upload.uploadChunked({
92
+ filePath: args.file,
93
+ uploadToken: String(args.id),
94
+ tokenFieldName: "live_id",
95
+ uploadUrl: `${this.apiBaseUrl}live/attachment/upload`,
96
+ bearerToken: this.activeWorkspace.bearer_token || void 0,
97
+ chunkSize: flags["chunk-size"],
98
+ concurrency: flags.concurrency,
99
+ extraFields: flags.hidden !== void 0 ? { hidden_p: flags.hidden ? "1" : "0" } : {},
100
+ onProgress(bytesUploaded, total) {
101
+ const elapsed = (Date.now() - startTime) / 1e3;
102
+ const speed = elapsed > 0 ? bytesUploaded / elapsed : 0;
103
+ bar.render(bytesUploaded, total, speed);
104
+ }
105
+ });
106
+ } finally {
107
+ bar.finish();
108
+ }
109
+ this.log(chalk.default.green("Attachment uploaded"));
110
+ this.log(`ID: ${args.id}`);
111
+ this.log(`Admin: https://${this.activeWorkspace.domain}/manage/webinar/${args.id}`);
112
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
113
+ ok: true,
114
+ data: result,
115
+ summary: "Attachment uploaded",
116
+ breadcrumbs: [
117
+ { domain: this.activeWorkspace.domain },
118
+ {
119
+ resource: "webinar",
120
+ id: args.id
121
+ },
122
+ { resource: "attachment" }
123
+ ]
124
+ });
125
+ }
126
+ };
127
+ //#endregion
128
+ module.exports = WebinarAttachmentUpload;
@@ -0,0 +1,77 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/webinar/clips.ts
9
+ /**
10
+ * Webinar clips command — lists recording clips from a webinar.
11
+ */
12
+ var WebinarClips = class WebinarClips extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "List recording clips from a webinar";
14
+ static examples = ["<%= config.bin %> webinar clips 12345", "<%= config.bin %> webinar clips 12345 --json"];
15
+ static enableJsonFlag = true;
16
+ static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
17
+ static args = { id: _oclif_core.Args.string({
18
+ description: "Webinar ID",
19
+ required: true
20
+ }) };
21
+ static agentMetadata = {
22
+ api_endpoint: "GET /live/clips",
23
+ auth_scope: "read",
24
+ output_shape: {
25
+ type: "table",
26
+ columns: [
27
+ "Video ID",
28
+ "Title",
29
+ "Duration",
30
+ "Type",
31
+ "Published",
32
+ "Views"
33
+ ]
34
+ },
35
+ side_effects: "none"
36
+ };
37
+ async run() {
38
+ const { args } = await this.parse(WebinarClips);
39
+ this.printWorkspaceHeader();
40
+ const { data, error } = await this.apiClient.GET("/live/clips", { params: { query: { live_id: Number(args.id) } } });
41
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
42
+ const resp = data;
43
+ const clips = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
44
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
45
+ ok: true,
46
+ data: clips,
47
+ summary: `${clips.length} clip${clips.length === 1 ? "" : "s"}`,
48
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
49
+ resource: "webinar",
50
+ id: args.id
51
+ }]
52
+ });
53
+ if (clips.length === 0) {
54
+ this.log("No clips found.");
55
+ return;
56
+ }
57
+ const table = require_lib_output.renderTable([
58
+ "Video ID",
59
+ "Title",
60
+ "Duration",
61
+ "Type",
62
+ "Published",
63
+ "Views"
64
+ ], clips.map((c) => [
65
+ String(c.photo_id ?? ""),
66
+ require_lib_term_map.applyCliTerms(String(c.title ?? "")),
67
+ String(c.duration_fmt ?? ""),
68
+ String(c.live_highlight_type ?? ""),
69
+ c.published_p ? "yes" : "no",
70
+ String(c.view_count_fmt ?? c.view_count ?? "")
71
+ ]));
72
+ this.log(table.toString());
73
+ this.log(chalk.default.dim(`${clips.length} clip${clips.length === 1 ? "" : "s"}`));
74
+ }
75
+ };
76
+ //#endregion
77
+ module.exports = WebinarClips;
@@ -0,0 +1,107 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/webinar/create.ts
9
+ /**
10
+ * Webinar create command — creates a new webinar in the active workspace.
11
+ *
12
+ * CRITICAL field mapping: CLI --title flag maps to API body field `name` (NOT `title`).
13
+ * Sending `title` instead of `name` silently fails — the webinar is created without a title.
14
+ *
15
+ * CRITICAL field mapping: CLI --live-date flag maps to API body field `start_time` (NOT `live_date`).
16
+ *
17
+ * Threat mitigations:
18
+ * T-04-07: Admin URL printed — acceptable for authenticated CLI users
19
+ * T-04-08: extends AuthenticatedCommand — anonymous mode rejected
20
+ */
21
+ var WebinarCreate = class WebinarCreate extends require_lib_base_command.AuthenticatedCommand {
22
+ static description = "Create a new webinar";
23
+ static examples = [
24
+ "<%= config.bin %> webinar create --title \"My Webinar\"",
25
+ "<%= config.bin %> webinar create --title \"My Webinar\" --live-date \"2024-12-01T14:00:00Z\"",
26
+ "<%= config.bin %> webinar create --title \"My Webinar\" --json"
27
+ ];
28
+ static enableJsonFlag = true;
29
+ static flags = {
30
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
31
+ title: _oclif_core.Flags.string({
32
+ description: "Title for the new webinar",
33
+ required: true
34
+ }),
35
+ description: _oclif_core.Flags.string({
36
+ description: "Description for the webinar",
37
+ required: false
38
+ }),
39
+ status: _oclif_core.Flags.string({
40
+ description: "Webinar status: upcoming, live, or previous",
41
+ required: false
42
+ }),
43
+ "live-date": _oclif_core.Flags.string({
44
+ description: "Schedule date/time (ISO 8601)",
45
+ required: false
46
+ }),
47
+ draft: _oclif_core.Flags.boolean({
48
+ description: "Set as draft",
49
+ allowNo: true,
50
+ required: false
51
+ }),
52
+ publish: _oclif_core.Flags.boolean({
53
+ description: "Publish the webinar",
54
+ allowNo: true,
55
+ required: false
56
+ }),
57
+ "draft-p": _oclif_core.Flags.string({
58
+ hidden: true,
59
+ required: false
60
+ }),
61
+ "published-p": _oclif_core.Flags.string({
62
+ hidden: true,
63
+ required: false
64
+ })
65
+ };
66
+ static args = {};
67
+ static agentMetadata = {
68
+ api_endpoint: "POST /live/create",
69
+ auth_scope: "write",
70
+ output_shape: { type: "key-value" },
71
+ side_effects: "creates"
72
+ };
73
+ async run() {
74
+ const { flags } = await this.parse(WebinarCreate);
75
+ this.printWorkspaceHeader();
76
+ const body = { name: flags.title };
77
+ if (flags.description !== void 0) body.description = flags.description;
78
+ if (flags.status !== void 0) body.live_status = flags.status;
79
+ if (flags["live-date"] !== void 0) body.start_time = flags["live-date"];
80
+ const draftVal = parseBoolParam(flags.draft, flags["draft-p"]);
81
+ if (draftVal !== void 0) body.draft_p = draftVal ? 1 : 0;
82
+ const publishVal = parseBoolParam(flags.publish, flags["published-p"]);
83
+ if (publishVal !== void 0) body.published_p = publishVal ? 1 : 0;
84
+ const { data: createData, error: createError } = await this.apiClient.POST("/live/create", {
85
+ body,
86
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
87
+ });
88
+ if (createError) this.error(require_lib_term_map.applyCliTerms(formatApiError(createError)), { exit: 1 });
89
+ const liveId = createData?.data?.live_id;
90
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
91
+ ok: true,
92
+ data: createData,
93
+ summary: "Webinar created",
94
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
95
+ resource: "webinar",
96
+ id: String(liveId ?? "")
97
+ }]
98
+ });
99
+ this.log(chalk.default.green("Webinar created"));
100
+ if (liveId) {
101
+ this.log(`ID: ${liveId}`);
102
+ this.log(`Admin: https://${this.activeWorkspace.domain}/manage/webinar/${liveId}`);
103
+ }
104
+ }
105
+ };
106
+ //#endregion
107
+ module.exports = WebinarCreate;
@@ -0,0 +1,62 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ let _clack_prompts = require("@clack/prompts");
9
+ //#region src/commands/webinar/delete.ts
10
+ /**
11
+ * Webinar delete command — deletes a webinar after confirmation.
12
+ *
13
+ * Prompts user to confirm deletion showing the workspace domain and warning
14
+ * that all recordings will be permanently deleted (T-04-06 repudiation mitigation).
15
+ *
16
+ * --json flag skips the confirmation prompt (scripting mode — assume confirmed).
17
+ *
18
+ * Threat mitigations:
19
+ * T-04-06: Confirmation prompt includes domain AND "permanently deletes all recordings" warning
20
+ * T-04-08: extends AuthenticatedCommand — anonymous mode rejected
21
+ */
22
+ var WebinarDelete = class WebinarDelete extends require_lib_base_command.AuthenticatedCommand {
23
+ static description = "Delete a webinar from the active workspace";
24
+ static examples = ["<%= config.bin %> webinar delete 12345", "<%= config.bin %> webinar delete 12345 --json"];
25
+ static enableJsonFlag = true;
26
+ static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
27
+ static args = { id: _oclif_core.Args.string({
28
+ description: "Webinar ID",
29
+ required: true
30
+ }) };
31
+ static agentMetadata = {
32
+ api_endpoint: "POST /live/delete",
33
+ auth_scope: "write",
34
+ output_shape: { type: "none" },
35
+ side_effects: "destructive"
36
+ };
37
+ async run() {
38
+ const { args } = await this.parse(WebinarDelete);
39
+ this.printWorkspaceHeader();
40
+ if (!this.jsonEnabled()) {
41
+ const confirmed = await (0, _clack_prompts.confirm)({ message: `Delete webinar ${args.id} from ${this.activeWorkspace.domain}? This permanently deletes all recordings. This cannot be undone.` });
42
+ if ((0, _clack_prompts.isCancel)(confirmed) || !confirmed) process.exit(2);
43
+ }
44
+ const { data: deleteData, error: deleteError } = await this.apiClient.POST("/live/delete", {
45
+ body: { live_id: Number(args.id) },
46
+ headers: { "Content-Type": "application/x-www-form-urlencoded" }
47
+ });
48
+ if (deleteError) this.error(require_lib_term_map.applyCliTerms(formatApiError(deleteError)), { exit: 1 });
49
+ this.log(chalk.default.green(`Webinar ${args.id} deleted`));
50
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
51
+ ok: true,
52
+ data: deleteData,
53
+ summary: `Webinar ${args.id} deleted`,
54
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
55
+ resource: "webinar",
56
+ id: args.id
57
+ }]
58
+ });
59
+ }
60
+ };
61
+ //#endregion
62
+ module.exports = WebinarDelete;
@@ -0,0 +1,84 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../lib/output.cjs");
5
+ let _oclif_core = require("@oclif/core");
6
+ let chalk = require("chalk");
7
+ chalk = require_runtime.__toESM(chalk);
8
+ //#region src/commands/webinar/highlights.ts
9
+ /**
10
+ * Webinar highlights command — lists highlights from a webinar.
11
+ */
12
+ var WebinarHighlights = class WebinarHighlights extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "List highlights from a webinar";
14
+ static examples = [
15
+ "<%= config.bin %> webinar highlights 12345",
16
+ "<%= config.bin %> webinar highlights 12345 --video-id 67890",
17
+ "<%= config.bin %> webinar highlights 12345 --json"
18
+ ];
19
+ static enableJsonFlag = true;
20
+ static flags = {
21
+ ...require_lib_base_command.AuthenticatedCommand.baseFlags,
22
+ "video-id": _oclif_core.Flags.string({
23
+ description: "Scope to specific recording by video ID",
24
+ required: false
25
+ })
26
+ };
27
+ static args = { id: _oclif_core.Args.string({
28
+ description: "Webinar ID",
29
+ required: true
30
+ }) };
31
+ static agentMetadata = {
32
+ api_endpoint: "GET /live/highlights",
33
+ auth_scope: "read",
34
+ output_shape: {
35
+ type: "table",
36
+ columns: [
37
+ "Type",
38
+ "Start",
39
+ "End",
40
+ "Absolute Start"
41
+ ]
42
+ },
43
+ side_effects: "none"
44
+ };
45
+ async run() {
46
+ const { args, flags } = await this.parse(WebinarHighlights);
47
+ this.printWorkspaceHeader();
48
+ const { data, error } = await this.apiClient.GET("/live/highlights", { params: { query: {
49
+ live_id: Number(args.id),
50
+ photo_id: flags["video-id"] ? Number(flags["video-id"]) : void 0
51
+ } } });
52
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
53
+ const resp = data;
54
+ const highlights = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
55
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
56
+ ok: true,
57
+ data: highlights,
58
+ summary: `${highlights.length} highlight${highlights.length === 1 ? "" : "s"}`,
59
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
60
+ resource: "webinar",
61
+ id: args.id
62
+ }]
63
+ });
64
+ if (highlights.length === 0) {
65
+ this.log("No highlights found.");
66
+ return;
67
+ }
68
+ const table = require_lib_output.renderTable([
69
+ "Type",
70
+ "Start",
71
+ "End",
72
+ "Absolute Start"
73
+ ], highlights.map((h) => [
74
+ String(h.type ?? ""),
75
+ String(h.relative_start_time ?? ""),
76
+ String(h.relative_end_time ?? ""),
77
+ String(h.absolute_start_time ?? "")
78
+ ]));
79
+ this.log(table.toString());
80
+ this.log(chalk.default.dim(`${highlights.length} highlight${highlights.length === 1 ? "" : "s"}`));
81
+ }
82
+ };
83
+ //#endregion
84
+ module.exports = WebinarHighlights;
@@ -0,0 +1,11 @@
1
+ require("../../_virtual/_rolldown/runtime.cjs");
2
+ let _oclif_core = require("@oclif/core");
3
+ //#region src/commands/webinar/index.ts
4
+ var WebinarIndex = class extends _oclif_core.Command {
5
+ static description = "Manage webinars — create, list, update, delete, and more";
6
+ async run() {
7
+ this.log("Run \"twentythree webinar --help\" for available commands");
8
+ }
9
+ };
10
+ //#endregion
11
+ module.exports = WebinarIndex;
@@ -0,0 +1,50 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_lib_term_map = require("../../lib/term-map.cjs");
3
+ const require_lib_base_command = require("../../lib/base-command.cjs");
4
+ const require_lib_output = require("../../lib/output.cjs");
5
+ let chalk = require("chalk");
6
+ chalk = require_runtime.__toESM(chalk);
7
+ //#region src/commands/webinar/list-formats.ts
8
+ /**
9
+ * Webinar list-formats command — lists available webinar formats.
10
+ * This is a workspace-level query — no webinar ID required.
11
+ */
12
+ var WebinarListFormats = class WebinarListFormats extends require_lib_base_command.AuthenticatedCommand {
13
+ static description = "List available webinar formats";
14
+ static examples = ["<%= config.bin %> webinar list-formats", "<%= config.bin %> webinar list-formats --json"];
15
+ static enableJsonFlag = true;
16
+ static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
17
+ static args = {};
18
+ static agentMetadata = {
19
+ api_endpoint: "GET /live/list-formats",
20
+ auth_scope: "read",
21
+ output_shape: {
22
+ type: "table",
23
+ columns: ["Key", "Name"]
24
+ },
25
+ side_effects: "none"
26
+ };
27
+ async run() {
28
+ const {} = await this.parse(WebinarListFormats);
29
+ this.printWorkspaceHeader();
30
+ const { data, error } = await this.apiClient.GET("/live/list-formats", { params: { query: {} } });
31
+ if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
32
+ const resp = data;
33
+ const formats = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
34
+ if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
35
+ ok: true,
36
+ data: formats,
37
+ summary: `${formats.length} format${formats.length === 1 ? "" : "s"}`,
38
+ breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "webinar" }]
39
+ });
40
+ if (formats.length === 0) {
41
+ this.log("No formats available.");
42
+ return;
43
+ }
44
+ const table = require_lib_output.renderTable(["Key", "Name"], formats.map((f) => [String(f.key ?? ""), String(f.name ?? "")]));
45
+ this.log(table.toString());
46
+ this.log(chalk.default.dim(`${formats.length} format${formats.length === 1 ? "" : "s"}`));
47
+ }
48
+ };
49
+ //#endregion
50
+ module.exports = WebinarListFormats;