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.
- package/README.md +25 -0
- package/bin/dev.cmd +2 -0
- package/bin/dev.js +28 -0
- package/bin/run.cmd +2 -0
- package/bin/run.js +23 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/api/client.cjs +24 -0
- package/dist/api/types.cjs +0 -0
- package/dist/auth/credential-store.cjs +22 -0
- package/dist/auth/token-refresh.cjs +70 -0
- package/dist/auth/workspace-config.cjs +61 -0
- package/dist/commands/action/add.cjs +75 -0
- package/dist/commands/action/delete.cjs +64 -0
- package/dist/commands/action/exclude.cjs +70 -0
- package/dist/commands/action/get.cjs +112 -0
- package/dist/commands/action/include.cjs +70 -0
- package/dist/commands/action/list.cjs +119 -0
- package/dist/commands/action/types.cjs +63 -0
- package/dist/commands/action/update.cjs +86 -0
- package/dist/commands/action/upload.cjs +89 -0
- package/dist/commands/analytics/conversions/index.cjs +83 -0
- package/dist/commands/analytics/conversions/timeseries.cjs +83 -0
- package/dist/commands/analytics/conversions/totals.cjs +83 -0
- package/dist/commands/analytics/live/event-timeseries.cjs +86 -0
- package/dist/commands/analytics/live/event-totals.cjs +86 -0
- package/dist/commands/analytics/live/event.cjs +88 -0
- package/dist/commands/analytics/live/index.cjs +89 -0
- package/dist/commands/analytics/live/timeseries.cjs +85 -0
- package/dist/commands/analytics/live/totals.cjs +85 -0
- package/dist/commands/analytics/live/weekday/timeseries.cjs +85 -0
- package/dist/commands/analytics/live/weekday/totals.cjs +85 -0
- package/dist/commands/analytics/live/weekday.cjs +88 -0
- package/dist/commands/analytics/usage/devices/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/devices/totals.cjs +86 -0
- package/dist/commands/analytics/usage/devices.cjs +89 -0
- package/dist/commands/analytics/usage/domains/totals.cjs +83 -0
- package/dist/commands/analytics/usage/domains.cjs +89 -0
- package/dist/commands/analytics/usage/locations/totals.cjs +83 -0
- package/dist/commands/analytics/usage/locations.cjs +89 -0
- package/dist/commands/analytics/usage/sourceids/totals.cjs +83 -0
- package/dist/commands/analytics/usage/sourceids.cjs +89 -0
- package/dist/commands/analytics/usage/sources/totals.cjs +83 -0
- package/dist/commands/analytics/usage/sources.cjs +89 -0
- package/dist/commands/analytics/usage/spots/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/spots/totals.cjs +83 -0
- package/dist/commands/analytics/usage/spots.cjs +89 -0
- package/dist/commands/analytics/usage/storage.cjs +52 -0
- package/dist/commands/analytics/usage/traffic/timeseries.cjs +83 -0
- package/dist/commands/analytics/usage/traffic/totals.cjs +86 -0
- package/dist/commands/analytics/usage/traffic.cjs +89 -0
- package/dist/commands/analytics/video/index.cjs +89 -0
- package/dist/commands/analytics/video/performance/timeseries.cjs +83 -0
- package/dist/commands/analytics/video/performance/totals.cjs +80 -0
- package/dist/commands/analytics/video/performance.cjs +89 -0
- package/dist/commands/analytics/video/published/timeseries.cjs +83 -0
- package/dist/commands/analytics/video/published/totals.cjs +80 -0
- package/dist/commands/analytics/video/published.cjs +89 -0
- package/dist/commands/analytics/video/timeseries.cjs +86 -0
- package/dist/commands/analytics/video/totals.cjs +86 -0
- package/dist/commands/analytics/video/weekday/timeseries.cjs +86 -0
- package/dist/commands/analytics/video/weekday/totals.cjs +83 -0
- package/dist/commands/analytics/video/weekday.cjs +89 -0
- package/dist/commands/app/add.cjs +76 -0
- package/dist/commands/app/delete.cjs +57 -0
- package/dist/commands/app/update.cjs +77 -0
- package/dist/commands/audience/companies.cjs +116 -0
- package/dist/commands/audience/field/list.cjs +83 -0
- package/dist/commands/audience/field/remove.cjs +63 -0
- package/dist/commands/audience/field/set.cjs +78 -0
- package/dist/commands/audience/field/types.cjs +57 -0
- package/dist/commands/audience/funnel.cjs +77 -0
- package/dist/commands/audience/identity-sources.cjs +64 -0
- package/dist/commands/audience/list-collectors.cjs +88 -0
- package/dist/commands/audience/list.cjs +122 -0
- package/dist/commands/audience/metrics.cjs +89 -0
- package/dist/commands/audience/register.cjs +106 -0
- package/dist/commands/audience/remove.cjs +72 -0
- package/dist/commands/audience/search.cjs +106 -0
- package/dist/commands/audience/timelines.cjs +115 -0
- package/dist/commands/audience/unregister.cjs +65 -0
- package/dist/commands/auth/credentials.cjs +89 -0
- package/dist/commands/auth/status.cjs +34 -0
- package/dist/commands/category/create.cjs +80 -0
- package/dist/commands/category/delete.cjs +70 -0
- package/dist/commands/category/index.cjs +11 -0
- package/dist/commands/category/list.cjs +98 -0
- package/dist/commands/category/update.cjs +134 -0
- package/dist/commands/collector/exclude.cjs +56 -0
- package/dist/commands/collector/include.cjs +56 -0
- package/dist/commands/collector/list.cjs +81 -0
- package/dist/commands/comment/add.cjs +102 -0
- package/dist/commands/comment/clone.cjs +59 -0
- package/dist/commands/comment/delete.cjs +55 -0
- package/dist/commands/comment/list.cjs +126 -0
- package/dist/commands/comment/promote.cjs +65 -0
- package/dist/commands/comment/reaction/add.cjs +81 -0
- package/dist/commands/comment/reaction/list.cjs +92 -0
- package/dist/commands/comment/reaction/remove.cjs +81 -0
- package/dist/commands/comment/set-order.cjs +63 -0
- package/dist/commands/comment/update.cjs +63 -0
- package/dist/commands/doctor.cjs +129 -0
- package/dist/commands/openupload/list.cjs +95 -0
- package/dist/commands/openupload/update-file.cjs +85 -0
- package/dist/commands/openupload/upload-file.cjs +130 -0
- package/dist/commands/player/delete.cjs +66 -0
- package/dist/commands/player/embed-versions.cjs +83 -0
- package/dist/commands/player/embed.cjs +134 -0
- package/dist/commands/player/list.cjs +86 -0
- package/dist/commands/player/styles.cjs +70 -0
- package/dist/commands/player/update.cjs +80 -0
- package/dist/commands/poll/add.cjs +84 -0
- package/dist/commands/poll/answer.cjs +89 -0
- package/dist/commands/poll/list.cjs +92 -0
- package/dist/commands/poll/remove.cjs +57 -0
- package/dist/commands/poll/set-options.cjs +84 -0
- package/dist/commands/poll/update.cjs +79 -0
- package/dist/commands/presentation/page/link-locations.cjs +57 -0
- package/dist/commands/presentation/setting/list.cjs +44 -0
- package/dist/commands/presentation/setting/update.cjs +67 -0
- package/dist/commands/protection/protect.cjs +68 -0
- package/dist/commands/protection/unprotect.cjs +65 -0
- package/dist/commands/protection/verify.cjs +80 -0
- package/dist/commands/session/get-token.cjs +75 -0
- package/dist/commands/session/redeem-token.cjs +56 -0
- package/dist/commands/setting/update.cjs +79 -0
- package/dist/commands/site/get.cjs +73 -0
- package/dist/commands/site/search.cjs +93 -0
- package/dist/commands/spot/check.cjs +52 -0
- package/dist/commands/spot/create.cjs +79 -0
- package/dist/commands/spot/delete.cjs +68 -0
- package/dist/commands/spot/list.cjs +120 -0
- package/dist/commands/spot/reset-version.cjs +53 -0
- package/dist/commands/spot/set-videos.cjs +64 -0
- package/dist/commands/spot/update.cjs +78 -0
- package/dist/commands/tag/list.cjs +98 -0
- package/dist/commands/tag/related.cjs +57 -0
- package/dist/commands/thumbnail/add.cjs +66 -0
- package/dist/commands/thumbnail/data.cjs +60 -0
- package/dist/commands/thumbnail/delete.cjs +61 -0
- package/dist/commands/thumbnail/duplicate.cjs +67 -0
- package/dist/commands/thumbnail/file/delete.cjs +71 -0
- package/dist/commands/thumbnail/file/list.cjs +74 -0
- package/dist/commands/thumbnail/file/upload.cjs +79 -0
- package/dist/commands/thumbnail/index.cjs +11 -0
- package/dist/commands/thumbnail/list.cjs +89 -0
- package/dist/commands/thumbnail/update.cjs +87 -0
- package/dist/commands/user/create.cjs +87 -0
- package/dist/commands/user/get-login-token.cjs +72 -0
- package/dist/commands/user/get.cjs +67 -0
- package/dist/commands/user/list.cjs +95 -0
- package/dist/commands/user/redeem-login-token.cjs +55 -0
- package/dist/commands/user/send-invitation.cjs +63 -0
- package/dist/commands/user/tokens.cjs +80 -0
- package/dist/commands/user/update.cjs +121 -0
- package/dist/commands/video/delete.cjs +67 -0
- package/dist/commands/video/frame.cjs +69 -0
- package/dist/commands/video/get.cjs +68 -0
- package/dist/commands/video/index.cjs +11 -0
- package/dist/commands/video/list.cjs +98 -0
- package/dist/commands/video/replace.cjs +126 -0
- package/dist/commands/video/section/create.cjs +73 -0
- package/dist/commands/video/section/delete.cjs +78 -0
- package/dist/commands/video/section/index.cjs +11 -0
- package/dist/commands/video/section/list.cjs +75 -0
- package/dist/commands/video/section/set-thumbnail.cjs +73 -0
- package/dist/commands/video/section/update.cjs +84 -0
- package/dist/commands/video/subtitle/archive.cjs +76 -0
- package/dist/commands/video/subtitle/create.cjs +80 -0
- package/dist/commands/video/subtitle/data.cjs +75 -0
- package/dist/commands/video/subtitle/delete.cjs +84 -0
- package/dist/commands/video/subtitle/duplicate.cjs +89 -0
- package/dist/commands/video/subtitle/index.cjs +11 -0
- package/dist/commands/video/subtitle/list.cjs +94 -0
- package/dist/commands/video/subtitle/locales.cjs +60 -0
- package/dist/commands/video/subtitle/set-primary.cjs +64 -0
- package/dist/commands/video/subtitle/types.cjs +42 -0
- package/dist/commands/video/subtitle/update.cjs +93 -0
- package/dist/commands/video/subtitle/upload.cjs +104 -0
- package/dist/commands/video/transcoding-progress.cjs +71 -0
- package/dist/commands/video/update.cjs +184 -0
- package/dist/commands/video/upload.cjs +151 -0
- package/dist/commands/webhook/events.cjs +68 -0
- package/dist/commands/webhook/list.cjs +64 -0
- package/dist/commands/webhook/sample.cjs +47 -0
- package/dist/commands/webhook/subscribe.cjs +66 -0
- package/dist/commands/webhook/unsubscribe.cjs +71 -0
- package/dist/commands/webinar/attachment/delete.cjs +79 -0
- package/dist/commands/webinar/attachment/list.cjs +94 -0
- package/dist/commands/webinar/attachment/set-hidden.cjs +85 -0
- package/dist/commands/webinar/attachment/upload.cjs +128 -0
- package/dist/commands/webinar/clips.cjs +77 -0
- package/dist/commands/webinar/create.cjs +107 -0
- package/dist/commands/webinar/delete.cjs +62 -0
- package/dist/commands/webinar/highlights.cjs +84 -0
- package/dist/commands/webinar/index.cjs +11 -0
- package/dist/commands/webinar/list-formats.cjs +50 -0
- package/dist/commands/webinar/list.cjs +134 -0
- package/dist/commands/webinar/log.cjs +69 -0
- package/dist/commands/webinar/mail/add.cjs +101 -0
- package/dist/commands/webinar/mail/list.cjs +83 -0
- package/dist/commands/webinar/mail/preview.cjs +75 -0
- package/dist/commands/webinar/mail/remove.cjs +75 -0
- package/dist/commands/webinar/mail/send.cjs +68 -0
- package/dist/commands/webinar/mail/test.cjs +86 -0
- package/dist/commands/webinar/mail/update.cjs +84 -0
- package/dist/commands/webinar/metrics.cjs +59 -0
- package/dist/commands/webinar/queued-video/add.cjs +81 -0
- package/dist/commands/webinar/queued-video/remove.cjs +81 -0
- package/dist/commands/webinar/recording/split.cjs +53 -0
- package/dist/commands/webinar/recording/start.cjs +53 -0
- package/dist/commands/webinar/recording/status.cjs +52 -0
- package/dist/commands/webinar/recording/stop.cjs +53 -0
- package/dist/commands/webinar/repeat.cjs +65 -0
- package/dist/commands/webinar/room/connect.cjs +60 -0
- package/dist/commands/webinar/room/info.cjs +60 -0
- package/dist/commands/webinar/room/send-recording.cjs +59 -0
- package/dist/commands/webinar/room/themes.cjs +63 -0
- package/dist/commands/webinar/section/add.cjs +98 -0
- package/dist/commands/webinar/section/list.cjs +86 -0
- package/dist/commands/webinar/section/remove.cjs +75 -0
- package/dist/commands/webinar/section/update.cjs +85 -0
- package/dist/commands/webinar/series/apply-recurrence.cjs +68 -0
- package/dist/commands/webinar/series/cancel.cjs +73 -0
- package/dist/commands/webinar/series/create.cjs +80 -0
- package/dist/commands/webinar/series/delete.cjs +73 -0
- package/dist/commands/webinar/series/list.cjs +79 -0
- package/dist/commands/webinar/series/mapped-objects.cjs +69 -0
- package/dist/commands/webinar/series/metrics.cjs +57 -0
- package/dist/commands/webinar/series/recurrences.cjs +72 -0
- package/dist/commands/webinar/series/set-ondemand.cjs +67 -0
- package/dist/commands/webinar/series/skip-recurrence.cjs +79 -0
- package/dist/commands/webinar/series/update.cjs +71 -0
- package/dist/commands/webinar/series/upload-thumbnail.cjs +117 -0
- package/dist/commands/webinar/speaker/add-from-speaker.cjs +78 -0
- package/dist/commands/webinar/speaker/add-from-user.cjs +78 -0
- package/dist/commands/webinar/speaker/add.cjs +112 -0
- package/dist/commands/webinar/speaker/cancel-guest-request.cjs +62 -0
- package/dist/commands/webinar/speaker/connection-types.cjs +66 -0
- package/dist/commands/webinar/speaker/library.cjs +59 -0
- package/dist/commands/webinar/speaker/list.cjs +90 -0
- package/dist/commands/webinar/speaker/remove-avatar.cjs +62 -0
- package/dist/commands/webinar/speaker/remove.cjs +69 -0
- package/dist/commands/webinar/speaker/request-guest.cjs +62 -0
- package/dist/commands/webinar/speaker/send-invitation.cjs +62 -0
- package/dist/commands/webinar/speaker/set-avatar.cjs +130 -0
- package/dist/commands/webinar/speaker/set-order.cjs +95 -0
- package/dist/commands/webinar/speaker/update.cjs +90 -0
- package/dist/commands/webinar/transcription/connect.cjs +69 -0
- package/dist/commands/webinar/transcription/list.cjs +88 -0
- package/dist/commands/webinar/transcription/locales.cjs +76 -0
- package/dist/commands/webinar/transcription/transcriptionlist.cjs +67 -0
- package/dist/commands/webinar/update.cjs +192 -0
- package/dist/commands/webinar/upload-image.cjs +133 -0
- package/dist/commands/workspace/list.cjs +47 -0
- package/dist/commands/workspace/use.cjs +52 -0
- package/dist/index.cjs +6 -0
- package/dist/lib/analytics-flags.cjs +60 -0
- package/dist/lib/audit.cjs +44 -0
- package/dist/lib/base-command.cjs +156 -0
- package/dist/lib/output.cjs +82 -0
- package/dist/lib/pagination.cjs +36 -0
- package/dist/lib/term-map.cjs +48 -0
- package/dist/upload/chunk-pool.cjs +47 -0
- package/dist/upload/chunked-upload.cjs +131 -0
- package/dist/upload/types.cjs +9 -0
- package/docs/commands/README.md +31 -0
- package/docs/commands/action/add.md +36 -0
- package/docs/commands/action/delete.md +32 -0
- package/docs/commands/action/exclude.md +38 -0
- package/docs/commands/action/get.md +47 -0
- package/docs/commands/action/include.md +38 -0
- package/docs/commands/action/list.md +43 -0
- package/docs/commands/action/types.md +34 -0
- package/docs/commands/action/update.md +42 -0
- package/docs/commands/action/upload.md +36 -0
- package/docs/commands/action.md +306 -0
- package/docs/commands/analytics/conversions.md +113 -0
- package/docs/commands/analytics/live.md +338 -0
- package/docs/commands/analytics/usage.md +674 -0
- package/docs/commands/analytics/video.md +449 -0
- package/docs/commands/analytics.md +1559 -0
- package/docs/commands/app/add.md +38 -0
- package/docs/commands/app/delete.md +32 -0
- package/docs/commands/app/update.md +41 -0
- package/docs/commands/app.md +101 -0
- package/docs/commands/audience/companies.md +41 -0
- package/docs/commands/audience/field.md +119 -0
- package/docs/commands/audience/funnel.md +38 -0
- package/docs/commands/audience/identity-sources.md +29 -0
- package/docs/commands/audience/list-collectors.md +35 -0
- package/docs/commands/audience/list.md +42 -0
- package/docs/commands/audience/metrics.md +40 -0
- package/docs/commands/audience/register.md +45 -0
- package/docs/commands/audience/remove.md +35 -0
- package/docs/commands/audience/search.md +39 -0
- package/docs/commands/audience/timelines.md +41 -0
- package/docs/commands/audience/unregister.md +36 -0
- package/docs/commands/audience.md +485 -0
- package/docs/commands/auth/credentials.md +23 -0
- package/docs/commands/auth/status.md +27 -0
- package/docs/commands/auth.md +45 -0
- package/docs/commands/category/create.md +36 -0
- package/docs/commands/category/delete.md +32 -0
- package/docs/commands/category/list.md +34 -0
- package/docs/commands/category/update.md +39 -0
- package/docs/commands/category.md +141 -0
- package/docs/commands/collector/exclude.md +33 -0
- package/docs/commands/collector/include.md +33 -0
- package/docs/commands/collector/list.md +37 -0
- package/docs/commands/collector.md +93 -0
- package/docs/commands/comment/add.md +43 -0
- package/docs/commands/comment/clone.md +35 -0
- package/docs/commands/comment/delete.md +32 -0
- package/docs/commands/comment/list.md +42 -0
- package/docs/commands/comment/promote.md +37 -0
- package/docs/commands/comment/reaction.md +106 -0
- package/docs/commands/comment/set-order.md +34 -0
- package/docs/commands/comment/update.md +36 -0
- package/docs/commands/comment.md +330 -0
- package/docs/commands/doctor.md +28 -0
- package/docs/commands/openupload/list.md +36 -0
- package/docs/commands/openupload/update-file.md +40 -0
- package/docs/commands/openupload/upload-file.md +39 -0
- package/docs/commands/openupload.md +105 -0
- package/docs/commands/player/delete.md +32 -0
- package/docs/commands/player/embed-versions.md +34 -0
- package/docs/commands/player/embed.md +51 -0
- package/docs/commands/player/list.md +32 -0
- package/docs/commands/player/styles.md +32 -0
- package/docs/commands/player/update.md +37 -0
- package/docs/commands/player.md +193 -0
- package/docs/commands/poll/add.md +33 -0
- package/docs/commands/poll/answer.md +38 -0
- package/docs/commands/poll/list.md +33 -0
- package/docs/commands/poll/remove.md +32 -0
- package/docs/commands/poll/set-options.md +35 -0
- package/docs/commands/poll/update.md +41 -0
- package/docs/commands/poll.md +187 -0
- package/docs/commands/presentation/page.md +29 -0
- package/docs/commands/presentation/setting.md +58 -0
- package/docs/commands/presentation.md +82 -0
- package/docs/commands/protection/protect.md +37 -0
- package/docs/commands/protection/unprotect.md +34 -0
- package/docs/commands/protection/verify.md +39 -0
- package/docs/commands/protection.md +100 -0
- package/docs/commands/session/get-token.md +38 -0
- package/docs/commands/session/redeem-token.md +32 -0
- package/docs/commands/session.md +65 -0
- package/docs/commands/setting/update.md +37 -0
- package/docs/commands/setting.md +37 -0
- package/docs/commands/site/get.md +35 -0
- package/docs/commands/site/search.md +38 -0
- package/docs/commands/site.md +68 -0
- package/docs/commands/spot/check.md +32 -0
- package/docs/commands/spot/create.md +38 -0
- package/docs/commands/spot/delete.md +32 -0
- package/docs/commands/spot/list.md +43 -0
- package/docs/commands/spot/reset-version.md +32 -0
- package/docs/commands/spot/set-videos.md +35 -0
- package/docs/commands/spot/update.md +40 -0
- package/docs/commands/spot.md +222 -0
- package/docs/commands/tag/list.md +44 -0
- package/docs/commands/tag/related.md +32 -0
- package/docs/commands/tag.md +71 -0
- package/docs/commands/thumbnail/add.md +33 -0
- package/docs/commands/thumbnail/data.md +35 -0
- package/docs/commands/thumbnail/delete.md +32 -0
- package/docs/commands/thumbnail/duplicate.md +37 -0
- package/docs/commands/thumbnail/file.md +90 -0
- package/docs/commands/thumbnail/list.md +37 -0
- package/docs/commands/thumbnail/update.md +44 -0
- package/docs/commands/thumbnail.md +293 -0
- package/docs/commands/user/create.md +41 -0
- package/docs/commands/user/get-login-token.md +37 -0
- package/docs/commands/user/get.md +37 -0
- package/docs/commands/user/list.md +40 -0
- package/docs/commands/user/redeem-login-token.md +32 -0
- package/docs/commands/user/send-invitation.md +37 -0
- package/docs/commands/user/tokens.md +34 -0
- package/docs/commands/user/update.md +44 -0
- package/docs/commands/user.md +267 -0
- package/docs/commands/video/delete.md +32 -0
- package/docs/commands/video/frame.md +37 -0
- package/docs/commands/video/get.md +32 -0
- package/docs/commands/video/list.md +33 -0
- package/docs/commands/video/replace.md +37 -0
- package/docs/commands/video/section.md +177 -0
- package/docs/commands/video/subtitle.md +362 -0
- package/docs/commands/video/transcoding-progress.md +32 -0
- package/docs/commands/video/update.md +45 -0
- package/docs/commands/video/upload.md +44 -0
- package/docs/commands/video.md +801 -0
- package/docs/commands/webhook/events.md +34 -0
- package/docs/commands/webhook/list.md +29 -0
- package/docs/commands/webhook/sample.md +32 -0
- package/docs/commands/webhook/subscribe.md +33 -0
- package/docs/commands/webhook/unsubscribe.md +35 -0
- package/docs/commands/webhook.md +143 -0
- package/docs/commands/webinar/attachment.md +135 -0
- package/docs/commands/webinar/clips.md +32 -0
- package/docs/commands/webinar/create.md +40 -0
- package/docs/commands/webinar/delete.md +32 -0
- package/docs/commands/webinar/highlights.md +37 -0
- package/docs/commands/webinar/list-formats.md +29 -0
- package/docs/commands/webinar/list.md +41 -0
- package/docs/commands/webinar/log.md +32 -0
- package/docs/commands/webinar/mail.md +238 -0
- package/docs/commands/webinar/metrics.md +32 -0
- package/docs/commands/webinar/queued-video.md +65 -0
- package/docs/commands/webinar/recording.md +113 -0
- package/docs/commands/webinar/repeat.md +35 -0
- package/docs/commands/webinar/room.md +110 -0
- package/docs/commands/webinar/section.md +134 -0
- package/docs/commands/webinar/series.md +365 -0
- package/docs/commands/webinar/speaker.md +430 -0
- package/docs/commands/webinar/transcription.md +125 -0
- package/docs/commands/webinar/update.md +43 -0
- package/docs/commands/webinar/upload-image.md +42 -0
- package/docs/commands/webinar.md +2030 -0
- package/docs/commands/workspace/list.md +27 -0
- package/docs/commands/workspace/use.md +32 -0
- package/docs/commands/workspace.md +54 -0
- package/docs/guides/api-spec-upgrade.md +92 -0
- package/docs/guides/getting-started.md +66 -0
- package/oclif.manifest.json +21609 -0
- package/package.json +71 -0
|
@@ -0,0 +1,86 @@
|
|
|
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/mail/test.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar mail test command — sends a test email to a specified address.
|
|
12
|
+
*
|
|
13
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
14
|
+
* Interactive fallback when --email not provided (Decision D-2).
|
|
15
|
+
*
|
|
16
|
+
* Threat mitigations:
|
|
17
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
18
|
+
*/
|
|
19
|
+
var WebinarMailTest = class WebinarMailTest extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Send a test email";
|
|
21
|
+
static examples = [
|
|
22
|
+
"<%= config.bin %> webinar mail test 555 --webinar-id 12345 --email me@example.com",
|
|
23
|
+
"<%= config.bin %> webinar mail test 555 --series-id 67890",
|
|
24
|
+
"<%= config.bin %> webinar mail test 555 --webinar-id 12345 --email me@example.com --json"
|
|
25
|
+
];
|
|
26
|
+
static enableJsonFlag = true;
|
|
27
|
+
static flags = {
|
|
28
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
29
|
+
"webinar-id": _oclif_core.Flags.string({
|
|
30
|
+
description: "Webinar ID (mutually exclusive with --series-id)",
|
|
31
|
+
exclusive: ["series-id"]
|
|
32
|
+
}),
|
|
33
|
+
"series-id": _oclif_core.Flags.string({
|
|
34
|
+
description: "Series ID (mutually exclusive with --webinar-id)",
|
|
35
|
+
exclusive: ["webinar-id"]
|
|
36
|
+
}),
|
|
37
|
+
email: _oclif_core.Flags.string({
|
|
38
|
+
description: "Recipient email for test",
|
|
39
|
+
required: false
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
static args = { id: _oclif_core.Args.string({
|
|
43
|
+
description: "Mail ID",
|
|
44
|
+
required: true
|
|
45
|
+
}) };
|
|
46
|
+
static agentMetadata = {
|
|
47
|
+
api_endpoint: "POST /live/mail/test",
|
|
48
|
+
auth_scope: "write",
|
|
49
|
+
output_shape: { type: "none" },
|
|
50
|
+
side_effects: "updates"
|
|
51
|
+
};
|
|
52
|
+
async run() {
|
|
53
|
+
const { args, flags } = await this.parse(WebinarMailTest);
|
|
54
|
+
this.printWorkspaceHeader();
|
|
55
|
+
const contextField = flags["webinar-id"] ? { live_id: Number(flags["webinar-id"]) } : flags["series-id"] ? { live_series_id: Number(flags["series-id"]) } : null;
|
|
56
|
+
if (!contextField) this.error(require_lib_term_map.applyCliTerms("Either --webinar-id or --series-id is required"), { exit: 1 });
|
|
57
|
+
let email = flags.email;
|
|
58
|
+
if (!email && !this.jsonEnabled()) {
|
|
59
|
+
const result = await (0, _clack_prompts.text)({ message: "Recipient email for test" });
|
|
60
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
61
|
+
email = result;
|
|
62
|
+
}
|
|
63
|
+
if (!email) this.error("--email is required in non-interactive mode", { exit: 1 });
|
|
64
|
+
const { data, error } = await this.apiClient.POST("/live/mail/test", {
|
|
65
|
+
body: {
|
|
66
|
+
...contextField,
|
|
67
|
+
live_mail_id: Number(args.id),
|
|
68
|
+
email
|
|
69
|
+
},
|
|
70
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
71
|
+
});
|
|
72
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
73
|
+
this.log(chalk.default.green("Test email sent"));
|
|
74
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
75
|
+
ok: true,
|
|
76
|
+
data,
|
|
77
|
+
summary: "Test email sent",
|
|
78
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
79
|
+
resource: "mail",
|
|
80
|
+
id: args.id
|
|
81
|
+
}]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
//#endregion
|
|
86
|
+
module.exports = WebinarMailTest;
|
|
@@ -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/mail/update.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar mail update command — updates fields on an existing webinar email.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL: uses live_mail_id (the mail ID), NOT live_id.
|
|
13
|
+
* Only fields explicitly provided are included in the body — prevents clearing unset fields.
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var WebinarMailUpdate = class WebinarMailUpdate extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Update a webinar email";
|
|
20
|
+
static examples = [
|
|
21
|
+
"<%= config.bin %> webinar mail update 555 --webinar-id 12345 --subject \"Updated Subject\"",
|
|
22
|
+
"<%= config.bin %> webinar mail update 555 --series-id 67890 --message \"New content\"",
|
|
23
|
+
"<%= config.bin %> webinar mail update 555 --webinar-id 12345 --subject \"Updated\" --json"
|
|
24
|
+
];
|
|
25
|
+
static enableJsonFlag = true;
|
|
26
|
+
static flags = {
|
|
27
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
28
|
+
"webinar-id": _oclif_core.Flags.string({
|
|
29
|
+
description: "Webinar ID (mutually exclusive with --series-id)",
|
|
30
|
+
exclusive: ["series-id"]
|
|
31
|
+
}),
|
|
32
|
+
"series-id": _oclif_core.Flags.string({
|
|
33
|
+
description: "Series ID (mutually exclusive with --webinar-id)",
|
|
34
|
+
exclusive: ["webinar-id"]
|
|
35
|
+
}),
|
|
36
|
+
subject: _oclif_core.Flags.string({
|
|
37
|
+
description: "Email subject",
|
|
38
|
+
required: false
|
|
39
|
+
}),
|
|
40
|
+
message: _oclif_core.Flags.string({
|
|
41
|
+
description: "Email message body",
|
|
42
|
+
required: false
|
|
43
|
+
})
|
|
44
|
+
};
|
|
45
|
+
static args = { id: _oclif_core.Args.string({
|
|
46
|
+
description: "Mail ID",
|
|
47
|
+
required: true
|
|
48
|
+
}) };
|
|
49
|
+
static agentMetadata = {
|
|
50
|
+
api_endpoint: "POST /live/mail/update",
|
|
51
|
+
auth_scope: "write",
|
|
52
|
+
output_shape: { type: "none" },
|
|
53
|
+
side_effects: "updates"
|
|
54
|
+
};
|
|
55
|
+
async run() {
|
|
56
|
+
const { args, flags } = await this.parse(WebinarMailUpdate);
|
|
57
|
+
this.printWorkspaceHeader();
|
|
58
|
+
const contextField = flags["webinar-id"] ? { live_id: Number(flags["webinar-id"]) } : flags["series-id"] ? { live_series_id: Number(flags["series-id"]) } : null;
|
|
59
|
+
if (!contextField) this.error(require_lib_term_map.applyCliTerms("Either --webinar-id or --series-id is required"), { exit: 1 });
|
|
60
|
+
const body = {
|
|
61
|
+
...contextField,
|
|
62
|
+
live_mail_id: Number(args.id)
|
|
63
|
+
};
|
|
64
|
+
if (flags.subject !== void 0) body.subject = flags.subject;
|
|
65
|
+
if (flags.message !== void 0) body.message = flags.message;
|
|
66
|
+
const { data, error } = await this.apiClient.POST("/live/mail/update", {
|
|
67
|
+
body,
|
|
68
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
69
|
+
});
|
|
70
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
71
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
72
|
+
ok: true,
|
|
73
|
+
data,
|
|
74
|
+
summary: "Mail updated",
|
|
75
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
76
|
+
resource: "mail",
|
|
77
|
+
id: args.id
|
|
78
|
+
}]
|
|
79
|
+
});
|
|
80
|
+
this.log(chalk.default.green("Mail updated"));
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
module.exports = WebinarMailUpdate;
|
|
@@ -0,0 +1,59 @@
|
|
|
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/metrics.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar metrics command — retrieves aggregate metrics for a webinar.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL: API response uses `formated` (one t) not `formatted` for the display value.
|
|
13
|
+
* Falls back to `value` if `formated` is absent.
|
|
14
|
+
*/
|
|
15
|
+
var WebinarMetrics = class WebinarMetrics extends require_lib_base_command.AuthenticatedCommand {
|
|
16
|
+
static description = "Retrieve metrics for a webinar";
|
|
17
|
+
static examples = ["<%= config.bin %> webinar metrics 12345", "<%= config.bin %> webinar metrics 12345 --json"];
|
|
18
|
+
static enableJsonFlag = true;
|
|
19
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
20
|
+
static args = { id: _oclif_core.Args.string({
|
|
21
|
+
description: "Webinar ID",
|
|
22
|
+
required: true
|
|
23
|
+
}) };
|
|
24
|
+
static agentMetadata = {
|
|
25
|
+
api_endpoint: "GET /live/metrics",
|
|
26
|
+
auth_scope: "read",
|
|
27
|
+
output_shape: {
|
|
28
|
+
type: "table",
|
|
29
|
+
columns: ["Metric", "Value"]
|
|
30
|
+
},
|
|
31
|
+
side_effects: "none"
|
|
32
|
+
};
|
|
33
|
+
async run() {
|
|
34
|
+
const { args } = await this.parse(WebinarMetrics);
|
|
35
|
+
this.printWorkspaceHeader();
|
|
36
|
+
const { data, error } = await this.apiClient.GET("/live/metrics", { params: { query: { live_id: Number(args.id) } } });
|
|
37
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
38
|
+
const resp = data;
|
|
39
|
+
const metrics = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
|
|
40
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
41
|
+
ok: true,
|
|
42
|
+
data: metrics,
|
|
43
|
+
summary: `${metrics.length} metric${metrics.length === 1 ? "" : "s"}`,
|
|
44
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
45
|
+
resource: "webinar",
|
|
46
|
+
id: args.id
|
|
47
|
+
}]
|
|
48
|
+
});
|
|
49
|
+
if (metrics.length === 0) {
|
|
50
|
+
this.log("No metrics available.");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const table = require_lib_output.renderTable(["Metric", "Value"], metrics.map((m) => [require_lib_term_map.applyCliTerms(String(m.metric ?? "")), String(m.formated ?? m.value ?? "")]));
|
|
54
|
+
this.log(table.toString());
|
|
55
|
+
this.log(chalk.default.dim(`${metrics.length} metric${metrics.length === 1 ? "" : "s"}`));
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
//#endregion
|
|
59
|
+
module.exports = WebinarMetrics;
|
|
@@ -0,0 +1,81 @@
|
|
|
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/queued-video/add.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar queued-video add command — adds a queued video to a webinar.
|
|
12
|
+
*
|
|
13
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
14
|
+
*
|
|
15
|
+
* CRITICAL terminology mapping (T-05-13):
|
|
16
|
+
* CLI flag: --video-id (user-facing, maps to "video" terminology)
|
|
17
|
+
* API body field: photo_id (internal API term)
|
|
18
|
+
*
|
|
19
|
+
* Threat mitigations:
|
|
20
|
+
* T-05-12: applyCliTerms() on all error messages
|
|
21
|
+
* T-05-13: Validate video-id is numeric before sending as photo_id
|
|
22
|
+
*/
|
|
23
|
+
var WebinarQueuedVideoAdd = class WebinarQueuedVideoAdd extends require_lib_base_command.AuthenticatedCommand {
|
|
24
|
+
static description = "Add a queued video to a webinar";
|
|
25
|
+
static examples = ["<%= config.bin %> webinar queued-video add 12345 --video-id 67890", "<%= config.bin %> webinar queued-video add 12345 --video-id 67890 --json"];
|
|
26
|
+
static enableJsonFlag = true;
|
|
27
|
+
static flags = {
|
|
28
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
29
|
+
"video-id": _oclif_core.Flags.string({
|
|
30
|
+
description: "Video ID to queue",
|
|
31
|
+
required: false
|
|
32
|
+
})
|
|
33
|
+
};
|
|
34
|
+
static args = { id: _oclif_core.Args.string({
|
|
35
|
+
description: "Webinar ID",
|
|
36
|
+
required: true
|
|
37
|
+
}) };
|
|
38
|
+
static agentMetadata = {
|
|
39
|
+
api_endpoint: "POST /live/queuedvideos/add",
|
|
40
|
+
auth_scope: "write",
|
|
41
|
+
output_shape: { type: "none" },
|
|
42
|
+
side_effects: "creates"
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { args, flags } = await this.parse(WebinarQueuedVideoAdd);
|
|
46
|
+
this.printWorkspaceHeader();
|
|
47
|
+
let videoId = flags["video-id"];
|
|
48
|
+
if (!videoId && !this.jsonEnabled()) {
|
|
49
|
+
const result = await (0, _clack_prompts.text)({ message: "Video ID to queue" });
|
|
50
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
51
|
+
videoId = result;
|
|
52
|
+
}
|
|
53
|
+
if (!videoId) this.error("--video-id is required in non-interactive mode", { exit: 1 });
|
|
54
|
+
const photoId = Number(videoId);
|
|
55
|
+
if (!Number.isFinite(photoId) || photoId <= 0) this.error("--video-id must be a positive integer", { exit: 1 });
|
|
56
|
+
const { data, error } = await this.apiClient.POST("/live/queuedvideos/add", {
|
|
57
|
+
body: {
|
|
58
|
+
live_id: Number(args.id),
|
|
59
|
+
photo_id: photoId
|
|
60
|
+
},
|
|
61
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
62
|
+
});
|
|
63
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
64
|
+
this.log(chalk.default.green("Video queued"));
|
|
65
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
66
|
+
ok: true,
|
|
67
|
+
data,
|
|
68
|
+
summary: "Video queued",
|
|
69
|
+
breadcrumbs: [
|
|
70
|
+
{ domain: this.activeWorkspace.domain },
|
|
71
|
+
{
|
|
72
|
+
resource: "webinar",
|
|
73
|
+
id: args.id
|
|
74
|
+
},
|
|
75
|
+
{ resource: "queued-video" }
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
//#endregion
|
|
81
|
+
module.exports = WebinarQueuedVideoAdd;
|
|
@@ -0,0 +1,81 @@
|
|
|
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/queued-video/remove.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar queued-video remove command — removes a queued video from a webinar.
|
|
12
|
+
*
|
|
13
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
14
|
+
*
|
|
15
|
+
* CRITICAL terminology mapping:
|
|
16
|
+
* CLI flag: --video-id (user-facing, maps to "video" terminology)
|
|
17
|
+
* API body field: photo_id (internal API term)
|
|
18
|
+
*
|
|
19
|
+
* Threat mitigations:
|
|
20
|
+
* T-05-12: applyCliTerms() on all error messages
|
|
21
|
+
* T-05-13: Validate video-id is numeric before sending as photo_id
|
|
22
|
+
*/
|
|
23
|
+
var WebinarQueuedVideoRemove = class WebinarQueuedVideoRemove extends require_lib_base_command.AuthenticatedCommand {
|
|
24
|
+
static description = "Remove a queued video from a webinar";
|
|
25
|
+
static examples = ["<%= config.bin %> webinar queued-video remove 12345 --video-id 67890", "<%= config.bin %> webinar queued-video remove 12345 --video-id 67890 --json"];
|
|
26
|
+
static enableJsonFlag = true;
|
|
27
|
+
static flags = {
|
|
28
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
29
|
+
"video-id": _oclif_core.Flags.string({
|
|
30
|
+
description: "Video ID to remove from queue",
|
|
31
|
+
required: false
|
|
32
|
+
})
|
|
33
|
+
};
|
|
34
|
+
static args = { id: _oclif_core.Args.string({
|
|
35
|
+
description: "Webinar ID",
|
|
36
|
+
required: true
|
|
37
|
+
}) };
|
|
38
|
+
static agentMetadata = {
|
|
39
|
+
api_endpoint: "POST /live/queuedvideos/remove",
|
|
40
|
+
auth_scope: "write",
|
|
41
|
+
output_shape: { type: "none" },
|
|
42
|
+
side_effects: "destructive"
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { args, flags } = await this.parse(WebinarQueuedVideoRemove);
|
|
46
|
+
this.printWorkspaceHeader();
|
|
47
|
+
let videoId = flags["video-id"];
|
|
48
|
+
if (!videoId && !this.jsonEnabled()) {
|
|
49
|
+
const result = await (0, _clack_prompts.text)({ message: "Video ID to remove from queue" });
|
|
50
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
51
|
+
videoId = result;
|
|
52
|
+
}
|
|
53
|
+
if (!videoId) this.error("--video-id is required in non-interactive mode", { exit: 1 });
|
|
54
|
+
const photoId = Number(videoId);
|
|
55
|
+
if (!Number.isFinite(photoId) || photoId <= 0) this.error("--video-id must be a positive integer", { exit: 1 });
|
|
56
|
+
const { data, error } = await this.apiClient.POST("/live/queuedvideos/remove", {
|
|
57
|
+
body: {
|
|
58
|
+
live_id: Number(args.id),
|
|
59
|
+
photo_id: photoId
|
|
60
|
+
},
|
|
61
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
62
|
+
});
|
|
63
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
64
|
+
this.log(chalk.default.green("Video removed from queue"));
|
|
65
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
66
|
+
ok: true,
|
|
67
|
+
data,
|
|
68
|
+
summary: "Video removed from queue",
|
|
69
|
+
breadcrumbs: [
|
|
70
|
+
{ domain: this.activeWorkspace.domain },
|
|
71
|
+
{
|
|
72
|
+
resource: "webinar",
|
|
73
|
+
id: args.id
|
|
74
|
+
},
|
|
75
|
+
{ resource: "queued-video" }
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
//#endregion
|
|
81
|
+
module.exports = WebinarQueuedVideoRemove;
|
|
@@ -0,0 +1,53 @@
|
|
|
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/recording/split.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar recording split command — splits the current recording into a new segment.
|
|
11
|
+
*
|
|
12
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
13
|
+
*
|
|
14
|
+
* Threat mitigations:
|
|
15
|
+
* T-05-12: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
|
|
16
|
+
*/
|
|
17
|
+
var WebinarRecordingSplit = class WebinarRecordingSplit extends require_lib_base_command.AuthenticatedCommand {
|
|
18
|
+
static description = "Split the current recording into a new segment";
|
|
19
|
+
static examples = ["<%= config.bin %> webinar recording split 12345", "<%= config.bin %> webinar recording split 12345 --json"];
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
22
|
+
static args = { id: _oclif_core.Args.string({
|
|
23
|
+
description: "Webinar ID",
|
|
24
|
+
required: true
|
|
25
|
+
}) };
|
|
26
|
+
static agentMetadata = {
|
|
27
|
+
api_endpoint: "POST /live/recording/split",
|
|
28
|
+
auth_scope: "write",
|
|
29
|
+
output_shape: { type: "none" },
|
|
30
|
+
side_effects: "updates"
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
const { args } = await this.parse(WebinarRecordingSplit);
|
|
34
|
+
this.printWorkspaceHeader();
|
|
35
|
+
const { data, error } = await this.apiClient.POST("/live/recording/split", {
|
|
36
|
+
body: { live_id: Number(args.id) },
|
|
37
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
38
|
+
});
|
|
39
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
40
|
+
this.log(chalk.default.green("Recording split"));
|
|
41
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
42
|
+
ok: true,
|
|
43
|
+
data,
|
|
44
|
+
summary: "Recording split",
|
|
45
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
46
|
+
resource: "webinar",
|
|
47
|
+
id: args.id
|
|
48
|
+
}]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
module.exports = WebinarRecordingSplit;
|
|
@@ -0,0 +1,53 @@
|
|
|
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/recording/start.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar recording start command — starts recording a webinar.
|
|
11
|
+
*
|
|
12
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
13
|
+
*
|
|
14
|
+
* Threat mitigations:
|
|
15
|
+
* T-05-12: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
|
|
16
|
+
*/
|
|
17
|
+
var WebinarRecordingStart = class WebinarRecordingStart extends require_lib_base_command.AuthenticatedCommand {
|
|
18
|
+
static description = "Start recording a webinar";
|
|
19
|
+
static examples = ["<%= config.bin %> webinar recording start 12345", "<%= config.bin %> webinar recording start 12345 --json"];
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
22
|
+
static args = { id: _oclif_core.Args.string({
|
|
23
|
+
description: "Webinar ID",
|
|
24
|
+
required: true
|
|
25
|
+
}) };
|
|
26
|
+
static agentMetadata = {
|
|
27
|
+
api_endpoint: "POST /live/recording/start",
|
|
28
|
+
auth_scope: "write",
|
|
29
|
+
output_shape: { type: "none" },
|
|
30
|
+
side_effects: "updates"
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
const { args } = await this.parse(WebinarRecordingStart);
|
|
34
|
+
this.printWorkspaceHeader();
|
|
35
|
+
const { data, error } = await this.apiClient.POST("/live/recording/start", {
|
|
36
|
+
body: { live_id: Number(args.id) },
|
|
37
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
38
|
+
});
|
|
39
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
40
|
+
this.log(chalk.default.green("Recording started"));
|
|
41
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
42
|
+
ok: true,
|
|
43
|
+
data,
|
|
44
|
+
summary: "Recording started",
|
|
45
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
46
|
+
resource: "webinar",
|
|
47
|
+
id: args.id
|
|
48
|
+
}]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
module.exports = WebinarRecordingStart;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
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
|
+
//#region src/commands/webinar/recording/status.ts
|
|
7
|
+
/**
|
|
8
|
+
* Webinar recording status command — gets recording status for a webinar.
|
|
9
|
+
*
|
|
10
|
+
* Threat mitigations:
|
|
11
|
+
* T-05-12: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
|
|
12
|
+
*/
|
|
13
|
+
var WebinarRecordingStatus = class WebinarRecordingStatus extends require_lib_base_command.AuthenticatedCommand {
|
|
14
|
+
static description = "Get recording status for a webinar";
|
|
15
|
+
static examples = ["<%= config.bin %> webinar recording status 12345", "<%= config.bin %> webinar recording status 12345 --json"];
|
|
16
|
+
static enableJsonFlag = true;
|
|
17
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
18
|
+
static args = { id: _oclif_core.Args.string({
|
|
19
|
+
description: "Webinar ID",
|
|
20
|
+
required: true
|
|
21
|
+
}) };
|
|
22
|
+
static agentMetadata = {
|
|
23
|
+
api_endpoint: "GET /live/recording/status",
|
|
24
|
+
auth_scope: "read",
|
|
25
|
+
output_shape: { type: "key-value" },
|
|
26
|
+
side_effects: "none"
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { args } = await this.parse(WebinarRecordingStatus);
|
|
30
|
+
this.printWorkspaceHeader();
|
|
31
|
+
const { data, error } = await this.apiClient.GET("/live/recording/status", { params: { query: { live_id: Number(args.id) } } });
|
|
32
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
33
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
34
|
+
ok: true,
|
|
35
|
+
data,
|
|
36
|
+
summary: `Recording status for webinar ${args.id}`,
|
|
37
|
+
breadcrumbs: [
|
|
38
|
+
{ domain: this.activeWorkspace.domain },
|
|
39
|
+
{
|
|
40
|
+
resource: "webinar",
|
|
41
|
+
id: args.id
|
|
42
|
+
},
|
|
43
|
+
{ resource: "recording" }
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
const d = data?.data ?? data ?? {};
|
|
47
|
+
const table = require_lib_output.renderTable(["Field", "Value"], Object.entries(d).map(([k, v]) => [k, String(v ?? "")]));
|
|
48
|
+
this.log(table.toString());
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
module.exports = WebinarRecordingStatus;
|
|
@@ -0,0 +1,53 @@
|
|
|
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/recording/stop.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar recording stop command — stops recording a webinar.
|
|
11
|
+
*
|
|
12
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
13
|
+
*
|
|
14
|
+
* Threat mitigations:
|
|
15
|
+
* T-05-12: applyCliTerms() on all error messages — no 'live'/'photo'/'album' leaks
|
|
16
|
+
*/
|
|
17
|
+
var WebinarRecordingStop = class WebinarRecordingStop extends require_lib_base_command.AuthenticatedCommand {
|
|
18
|
+
static description = "Stop recording a webinar";
|
|
19
|
+
static examples = ["<%= config.bin %> webinar recording stop 12345", "<%= config.bin %> webinar recording stop 12345 --json"];
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
22
|
+
static args = { id: _oclif_core.Args.string({
|
|
23
|
+
description: "Webinar ID",
|
|
24
|
+
required: true
|
|
25
|
+
}) };
|
|
26
|
+
static agentMetadata = {
|
|
27
|
+
api_endpoint: "POST /live/recording/stop",
|
|
28
|
+
auth_scope: "write",
|
|
29
|
+
output_shape: { type: "none" },
|
|
30
|
+
side_effects: "updates"
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
const { args } = await this.parse(WebinarRecordingStop);
|
|
34
|
+
this.printWorkspaceHeader();
|
|
35
|
+
const { data, error } = await this.apiClient.POST("/live/recording/stop", {
|
|
36
|
+
body: { live_id: Number(args.id) },
|
|
37
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
38
|
+
});
|
|
39
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
40
|
+
this.log(chalk.default.green("Recording stopped"));
|
|
41
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
42
|
+
ok: true,
|
|
43
|
+
data,
|
|
44
|
+
summary: "Recording stopped",
|
|
45
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
46
|
+
resource: "webinar",
|
|
47
|
+
id: args.id
|
|
48
|
+
}]
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
module.exports = WebinarRecordingStop;
|
|
@@ -0,0 +1,65 @@
|
|
|
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/repeat.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar repeat command — duplicates a webinar and schedules the copy at a new date/time.
|
|
11
|
+
* Sends POST /live/repeat with live_id + schedule_start_time.
|
|
12
|
+
* Returns the new webinar's live_id and admin URL.
|
|
13
|
+
*/
|
|
14
|
+
var WebinarRepeat = class WebinarRepeat extends require_lib_base_command.AuthenticatedCommand {
|
|
15
|
+
static description = "Duplicate a webinar and schedule the copy at a new date/time";
|
|
16
|
+
static examples = ["<%= config.bin %> webinar repeat 12345 --date \"2024-12-01T14:00:00Z\"", "<%= config.bin %> webinar repeat 12345 --date \"2024-12-01T14:00:00Z\" --json"];
|
|
17
|
+
static enableJsonFlag = true;
|
|
18
|
+
static flags = {
|
|
19
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
20
|
+
date: _oclif_core.Flags.string({
|
|
21
|
+
description: "Schedule date/time for the new webinar (ISO 8601)",
|
|
22
|
+
required: true
|
|
23
|
+
})
|
|
24
|
+
};
|
|
25
|
+
static args = { id: _oclif_core.Args.string({
|
|
26
|
+
description: "Webinar ID",
|
|
27
|
+
required: true
|
|
28
|
+
}) };
|
|
29
|
+
static agentMetadata = {
|
|
30
|
+
api_endpoint: "POST /live/repeat",
|
|
31
|
+
auth_scope: "write",
|
|
32
|
+
output_shape: { type: "key-value" },
|
|
33
|
+
side_effects: "creates"
|
|
34
|
+
};
|
|
35
|
+
async run() {
|
|
36
|
+
const { args, flags } = await this.parse(WebinarRepeat);
|
|
37
|
+
this.printWorkspaceHeader();
|
|
38
|
+
const body = {
|
|
39
|
+
live_id: Number(args.id),
|
|
40
|
+
schedule_start_time: flags.date
|
|
41
|
+
};
|
|
42
|
+
const { data: repeatData, error: repeatError } = await this.apiClient.POST("/live/repeat", {
|
|
43
|
+
body,
|
|
44
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
45
|
+
});
|
|
46
|
+
if (repeatError) this.error(require_lib_term_map.applyCliTerms(formatApiError(repeatError)), { exit: 1 });
|
|
47
|
+
const newLiveId = repeatData?.data?.live_id;
|
|
48
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
49
|
+
ok: true,
|
|
50
|
+
data: repeatData,
|
|
51
|
+
summary: "Webinar duplicated and scheduled",
|
|
52
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
53
|
+
resource: "webinar",
|
|
54
|
+
id: String(newLiveId ?? "")
|
|
55
|
+
}]
|
|
56
|
+
});
|
|
57
|
+
this.log(chalk.default.green("Webinar duplicated and scheduled"));
|
|
58
|
+
if (newLiveId) {
|
|
59
|
+
this.log(`ID: ${newLiveId}`);
|
|
60
|
+
this.log(`Admin: https://${this.activeWorkspace.domain}/manage/webinar/${newLiveId}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
module.exports = WebinarRepeat;
|