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,71 @@
|
|
|
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/series/update.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar series update command — updates an existing webinar series.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL: Uses live_series_id (NOT live_id) for identifying the series.
|
|
13
|
+
* Only includes fields in the body where flags are explicitly provided.
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-16: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var WebinarSeriesUpdate = class WebinarSeriesUpdate extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Update a webinar series";
|
|
20
|
+
static examples = [
|
|
21
|
+
"<%= config.bin %> webinar series update 42 --name \"Updated Series\"",
|
|
22
|
+
"<%= config.bin %> webinar series update 42 --description \"New description\"",
|
|
23
|
+
"<%= config.bin %> webinar series update 42 --name \"Updated\" --json"
|
|
24
|
+
];
|
|
25
|
+
static enableJsonFlag = true;
|
|
26
|
+
static flags = {
|
|
27
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
28
|
+
name: _oclif_core.Flags.string({
|
|
29
|
+
description: "Series name",
|
|
30
|
+
required: false
|
|
31
|
+
}),
|
|
32
|
+
description: _oclif_core.Flags.string({
|
|
33
|
+
description: "Series description",
|
|
34
|
+
required: false
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
static args = { id: _oclif_core.Args.string({
|
|
38
|
+
description: "Series ID",
|
|
39
|
+
required: true
|
|
40
|
+
}) };
|
|
41
|
+
static agentMetadata = {
|
|
42
|
+
api_endpoint: "POST /live/series/update",
|
|
43
|
+
auth_scope: "write",
|
|
44
|
+
output_shape: { type: "none" },
|
|
45
|
+
side_effects: "updates"
|
|
46
|
+
};
|
|
47
|
+
async run() {
|
|
48
|
+
const { args, flags } = await this.parse(WebinarSeriesUpdate);
|
|
49
|
+
this.printWorkspaceHeader();
|
|
50
|
+
const body = { live_series_id: Number(args.id) };
|
|
51
|
+
if (flags.name !== void 0) body.name = flags.name;
|
|
52
|
+
if (flags.description !== void 0) body.description = flags.description;
|
|
53
|
+
const { data, error } = await this.apiClient.POST("/live/series/update", {
|
|
54
|
+
body,
|
|
55
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
56
|
+
});
|
|
57
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
58
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
59
|
+
ok: true,
|
|
60
|
+
data,
|
|
61
|
+
summary: "Series updated",
|
|
62
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
63
|
+
resource: "series",
|
|
64
|
+
id: args.id
|
|
65
|
+
}]
|
|
66
|
+
});
|
|
67
|
+
this.log(chalk.default.green("Series updated"));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
71
|
+
module.exports = WebinarSeriesUpdate;
|
|
@@ -0,0 +1,117 @@
|
|
|
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/series/upload-thumbnail.ts
|
|
12
|
+
/**
|
|
13
|
+
* Simple inline progress bar that writes directly to stderr using \r.
|
|
14
|
+
* T-05-14: shows only byte counts, never the series token.
|
|
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 series upload-thumbnail command — uploads a thumbnail for a series.
|
|
33
|
+
*
|
|
34
|
+
* Uses the chunked upload engine with live_series_id as the token field name.
|
|
35
|
+
*
|
|
36
|
+
* Threat mitigations:
|
|
37
|
+
* T-05-14: live_series_id never logged to stdout — only byte counts shown in progress bar
|
|
38
|
+
* T-05-15: tokenFieldName explicitly set to 'live_series_id'
|
|
39
|
+
*/
|
|
40
|
+
var WebinarSeriesUploadThumbnail = class WebinarSeriesUploadThumbnail extends require_lib_base_command.AuthenticatedCommand {
|
|
41
|
+
static description = "Upload a thumbnail for a webinar series";
|
|
42
|
+
static examples = ["<%= config.bin %> webinar series upload-thumbnail 42 ./thumb.jpg", "<%= config.bin %> webinar series upload-thumbnail 42 ./thumbnail.png --json"];
|
|
43
|
+
static enableJsonFlag = true;
|
|
44
|
+
static flags = {
|
|
45
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
46
|
+
"chunk-size": _oclif_core.Flags.integer({
|
|
47
|
+
description: `Chunk size in bytes (default: ${require_upload_types.DEFAULT_CHUNK_SIZE})`,
|
|
48
|
+
default: require_upload_types.DEFAULT_CHUNK_SIZE
|
|
49
|
+
}),
|
|
50
|
+
concurrency: _oclif_core.Flags.integer({
|
|
51
|
+
description: `Number of chunks to upload in parallel (default: 5)`,
|
|
52
|
+
default: 5
|
|
53
|
+
})
|
|
54
|
+
};
|
|
55
|
+
static args = {
|
|
56
|
+
id: _oclif_core.Args.string({
|
|
57
|
+
description: "Series ID",
|
|
58
|
+
required: true
|
|
59
|
+
}),
|
|
60
|
+
file: _oclif_core.Args.string({
|
|
61
|
+
description: "Path to the image file to upload",
|
|
62
|
+
required: true
|
|
63
|
+
})
|
|
64
|
+
};
|
|
65
|
+
static agentMetadata = {
|
|
66
|
+
api_endpoint: "POST /live/series/upload-thumbnail",
|
|
67
|
+
auth_scope: "write",
|
|
68
|
+
output_shape: { type: "none" },
|
|
69
|
+
side_effects: "creates"
|
|
70
|
+
};
|
|
71
|
+
async run() {
|
|
72
|
+
const { args, flags } = await this.parse(WebinarSeriesUploadThumbnail);
|
|
73
|
+
this.printWorkspaceHeader();
|
|
74
|
+
try {
|
|
75
|
+
await (0, node_fs_promises.stat)(args.file);
|
|
76
|
+
} catch {
|
|
77
|
+
this.error(require_lib_term_map.applyCliTerms(`File not found: ${args.file}`), { exit: 1 });
|
|
78
|
+
}
|
|
79
|
+
const totalBytes = (await (0, node_fs_promises.stat)(args.file)).size;
|
|
80
|
+
const bar = new ProgressBar();
|
|
81
|
+
const startTime = Date.now();
|
|
82
|
+
let result;
|
|
83
|
+
bar.render(0, totalBytes, 0);
|
|
84
|
+
try {
|
|
85
|
+
result = await require_upload_chunked_upload.uploadChunked({
|
|
86
|
+
filePath: args.file,
|
|
87
|
+
uploadToken: String(args.id),
|
|
88
|
+
tokenFieldName: "live_series_id",
|
|
89
|
+
uploadUrl: `${this.apiBaseUrl}live/series/upload-thumbnail`,
|
|
90
|
+
bearerToken: this.activeWorkspace.bearer_token || void 0,
|
|
91
|
+
chunkSize: flags["chunk-size"],
|
|
92
|
+
concurrency: flags.concurrency,
|
|
93
|
+
onProgress(bytesUploaded, total) {
|
|
94
|
+
const elapsed = (Date.now() - startTime) / 1e3;
|
|
95
|
+
const speed = elapsed > 0 ? bytesUploaded / elapsed : 0;
|
|
96
|
+
bar.render(bytesUploaded, total, speed);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
} finally {
|
|
100
|
+
bar.finish();
|
|
101
|
+
}
|
|
102
|
+
this.log(chalk.default.green("Series thumbnail uploaded"));
|
|
103
|
+
this.log(`ID: ${args.id}`);
|
|
104
|
+
this.log(`Admin: https://${this.activeWorkspace.domain}/manage/webinar/series/${args.id}`);
|
|
105
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
106
|
+
ok: true,
|
|
107
|
+
data: result,
|
|
108
|
+
summary: "Series thumbnail uploaded",
|
|
109
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
110
|
+
resource: "series",
|
|
111
|
+
id: args.id
|
|
112
|
+
}]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
//#endregion
|
|
117
|
+
module.exports = WebinarSeriesUploadThumbnail;
|
|
@@ -0,0 +1,78 @@
|
|
|
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/speaker/add-from-speaker.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar speaker add-from-speaker command — adds a speaker from the library.
|
|
12
|
+
*
|
|
13
|
+
* Interactive fallback when --speaker-id is not provided.
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var WebinarSpeakerAddFromSpeaker = class WebinarSpeakerAddFromSpeaker extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Add a speaker from the workspace speaker library";
|
|
20
|
+
static examples = [
|
|
21
|
+
"<%= config.bin %> webinar speaker add-from-speaker 12345 --speaker-id 99",
|
|
22
|
+
"<%= config.bin %> webinar speaker add-from-speaker 12345",
|
|
23
|
+
"<%= config.bin %> webinar speaker add-from-speaker 12345 --speaker-id 99 --json"
|
|
24
|
+
];
|
|
25
|
+
static enableJsonFlag = true;
|
|
26
|
+
static flags = {
|
|
27
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
28
|
+
"speaker-id": _oclif_core.Flags.string({
|
|
29
|
+
description: "Library speaker ID to add",
|
|
30
|
+
required: false
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
static args = { id: _oclif_core.Args.string({
|
|
34
|
+
description: "Webinar ID",
|
|
35
|
+
required: true
|
|
36
|
+
}) };
|
|
37
|
+
static agentMetadata = {
|
|
38
|
+
api_endpoint: "POST /live/speaker/add-from-speaker",
|
|
39
|
+
auth_scope: "write",
|
|
40
|
+
output_shape: { type: "none" },
|
|
41
|
+
side_effects: "creates"
|
|
42
|
+
};
|
|
43
|
+
async run() {
|
|
44
|
+
const { args, flags } = await this.parse(WebinarSpeakerAddFromSpeaker);
|
|
45
|
+
this.printWorkspaceHeader();
|
|
46
|
+
let speakerId = flags["speaker-id"];
|
|
47
|
+
if (!speakerId && !this.jsonEnabled()) {
|
|
48
|
+
const result = await (0, _clack_prompts.text)({ message: "Speaker ID from library" });
|
|
49
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
50
|
+
speakerId = result;
|
|
51
|
+
}
|
|
52
|
+
if (!speakerId) this.error("--speaker-id is required in non-interactive mode", { exit: 1 });
|
|
53
|
+
const { data, error } = await this.apiClient.POST("/live/speaker/add-from-speaker", {
|
|
54
|
+
body: {
|
|
55
|
+
live_id: Number(args.id),
|
|
56
|
+
live_speaker_id: Number(speakerId)
|
|
57
|
+
},
|
|
58
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
59
|
+
});
|
|
60
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
61
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
62
|
+
ok: true,
|
|
63
|
+
data,
|
|
64
|
+
summary: "Speaker added from library",
|
|
65
|
+
breadcrumbs: [
|
|
66
|
+
{ domain: this.activeWorkspace.domain },
|
|
67
|
+
{
|
|
68
|
+
resource: "webinar",
|
|
69
|
+
id: args.id
|
|
70
|
+
},
|
|
71
|
+
{ resource: "speaker" }
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
this.log(chalk.default.green("Speaker added from library"));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
//#endregion
|
|
78
|
+
module.exports = WebinarSpeakerAddFromSpeaker;
|
|
@@ -0,0 +1,78 @@
|
|
|
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/speaker/add-from-user.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar speaker add-from-user command — adds a workspace user as a speaker.
|
|
12
|
+
*
|
|
13
|
+
* Interactive fallback when --user-id is not provided.
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var WebinarSpeakerAddFromUser = class WebinarSpeakerAddFromUser extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Add a workspace user as a speaker on a webinar";
|
|
20
|
+
static examples = [
|
|
21
|
+
"<%= config.bin %> webinar speaker add-from-user 12345 --user-id 42",
|
|
22
|
+
"<%= config.bin %> webinar speaker add-from-user 12345",
|
|
23
|
+
"<%= config.bin %> webinar speaker add-from-user 12345 --user-id 42 --json"
|
|
24
|
+
];
|
|
25
|
+
static enableJsonFlag = true;
|
|
26
|
+
static flags = {
|
|
27
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
28
|
+
"user-id": _oclif_core.Flags.string({
|
|
29
|
+
description: "User ID to add as speaker",
|
|
30
|
+
required: false
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
static args = { id: _oclif_core.Args.string({
|
|
34
|
+
description: "Webinar ID",
|
|
35
|
+
required: true
|
|
36
|
+
}) };
|
|
37
|
+
static agentMetadata = {
|
|
38
|
+
api_endpoint: "POST /live/speaker/add-from-user",
|
|
39
|
+
auth_scope: "write",
|
|
40
|
+
output_shape: { type: "none" },
|
|
41
|
+
side_effects: "creates"
|
|
42
|
+
};
|
|
43
|
+
async run() {
|
|
44
|
+
const { args, flags } = await this.parse(WebinarSpeakerAddFromUser);
|
|
45
|
+
this.printWorkspaceHeader();
|
|
46
|
+
let userId = flags["user-id"];
|
|
47
|
+
if (!userId && !this.jsonEnabled()) {
|
|
48
|
+
const result = await (0, _clack_prompts.text)({ message: "User ID" });
|
|
49
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
50
|
+
userId = result;
|
|
51
|
+
}
|
|
52
|
+
if (!userId) this.error("--user-id is required in non-interactive mode", { exit: 1 });
|
|
53
|
+
const { data, error } = await this.apiClient.POST("/live/speaker/add-from-user", {
|
|
54
|
+
body: {
|
|
55
|
+
live_id: Number(args.id),
|
|
56
|
+
user_id: Number(userId)
|
|
57
|
+
},
|
|
58
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
59
|
+
});
|
|
60
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
61
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
62
|
+
ok: true,
|
|
63
|
+
data,
|
|
64
|
+
summary: "Speaker added from user",
|
|
65
|
+
breadcrumbs: [
|
|
66
|
+
{ domain: this.activeWorkspace.domain },
|
|
67
|
+
{
|
|
68
|
+
resource: "webinar",
|
|
69
|
+
id: args.id
|
|
70
|
+
},
|
|
71
|
+
{ resource: "speaker" }
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
this.log(chalk.default.green("Speaker added from user"));
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
//#endregion
|
|
78
|
+
module.exports = WebinarSpeakerAddFromUser;
|
|
@@ -0,0 +1,112 @@
|
|
|
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/speaker/add.ts
|
|
10
|
+
/**
|
|
11
|
+
* Webinar speaker add command — adds a speaker to a webinar.
|
|
12
|
+
*
|
|
13
|
+
* Interactive fallback (Decision D-2): if --name or --email not provided and
|
|
14
|
+
* not in JSON mode, prompts interactively via @clack/prompts.
|
|
15
|
+
*
|
|
16
|
+
* Threat mitigations:
|
|
17
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
18
|
+
*/
|
|
19
|
+
var WebinarSpeakerAdd = class WebinarSpeakerAdd extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Add a speaker to a webinar";
|
|
21
|
+
static examples = [
|
|
22
|
+
"<%= config.bin %> webinar speaker add 12345 --name \"Jane Doe\" --email jane@example.com",
|
|
23
|
+
"<%= config.bin %> webinar speaker add 12345",
|
|
24
|
+
"<%= config.bin %> webinar speaker add 12345 --name \"Jane Doe\" --email jane@example.com --json"
|
|
25
|
+
];
|
|
26
|
+
static enableJsonFlag = true;
|
|
27
|
+
static flags = {
|
|
28
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
29
|
+
name: _oclif_core.Flags.string({
|
|
30
|
+
description: "Speaker name",
|
|
31
|
+
required: false
|
|
32
|
+
}),
|
|
33
|
+
email: _oclif_core.Flags.string({
|
|
34
|
+
description: "Speaker email",
|
|
35
|
+
required: false
|
|
36
|
+
}),
|
|
37
|
+
title: _oclif_core.Flags.string({
|
|
38
|
+
description: "Speaker title or job title",
|
|
39
|
+
required: false
|
|
40
|
+
}),
|
|
41
|
+
description: _oclif_core.Flags.string({
|
|
42
|
+
description: "Speaker bio or description",
|
|
43
|
+
required: false
|
|
44
|
+
})
|
|
45
|
+
};
|
|
46
|
+
static args = { id: _oclif_core.Args.string({
|
|
47
|
+
description: "Webinar ID",
|
|
48
|
+
required: true
|
|
49
|
+
}) };
|
|
50
|
+
static agentMetadata = {
|
|
51
|
+
api_endpoint: "POST /live/speaker/add",
|
|
52
|
+
auth_scope: "write",
|
|
53
|
+
output_shape: { type: "key-value" },
|
|
54
|
+
side_effects: "creates"
|
|
55
|
+
};
|
|
56
|
+
async run() {
|
|
57
|
+
const { args, flags } = await this.parse(WebinarSpeakerAdd);
|
|
58
|
+
this.printWorkspaceHeader();
|
|
59
|
+
let name = flags.name;
|
|
60
|
+
let email = flags.email;
|
|
61
|
+
if ((!name || !email) && !this.jsonEnabled()) {
|
|
62
|
+
if (!name) {
|
|
63
|
+
const result = await (0, _clack_prompts.text)({ message: "Speaker name" });
|
|
64
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
65
|
+
name = result;
|
|
66
|
+
}
|
|
67
|
+
if (!email) {
|
|
68
|
+
const result = await (0, _clack_prompts.text)({ message: "Speaker email" });
|
|
69
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
70
|
+
email = result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!name) this.error("--name is required in non-interactive mode", { exit: 1 });
|
|
74
|
+
if (!email) this.error("--email is required in non-interactive mode", { exit: 1 });
|
|
75
|
+
const body = {
|
|
76
|
+
live_id: Number(args.id),
|
|
77
|
+
name,
|
|
78
|
+
email
|
|
79
|
+
};
|
|
80
|
+
if (flags.title !== void 0) body.title = flags.title;
|
|
81
|
+
if (flags.description !== void 0) body.description = flags.description;
|
|
82
|
+
const { data, error } = await this.apiClient.POST("/live/speaker/add", {
|
|
83
|
+
body,
|
|
84
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
85
|
+
});
|
|
86
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
87
|
+
const speakerId = data?.data?.live_speaker_id ?? data?.live_speaker_id;
|
|
88
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
89
|
+
ok: true,
|
|
90
|
+
data,
|
|
91
|
+
summary: "Speaker added",
|
|
92
|
+
breadcrumbs: [
|
|
93
|
+
{ domain: this.activeWorkspace.domain },
|
|
94
|
+
{
|
|
95
|
+
resource: "webinar",
|
|
96
|
+
id: args.id
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
resource: "speaker",
|
|
100
|
+
id: String(speakerId ?? "")
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
this.log(chalk.default.green("Speaker added"));
|
|
105
|
+
if (speakerId) {
|
|
106
|
+
this.log(`ID: ${speakerId}`);
|
|
107
|
+
this.log(`Admin: https://${this.activeWorkspace.domain}/manage/webinar/${args.id}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//#endregion
|
|
112
|
+
module.exports = WebinarSpeakerAdd;
|
|
@@ -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
|
+
//#region src/commands/webinar/speaker/cancel-guest-request.ts
|
|
9
|
+
/**
|
|
10
|
+
* Webinar speaker cancel-guest-request command — cancels a pending guest request for a speaker.
|
|
11
|
+
*
|
|
12
|
+
* Action command pattern (Decision D-1): outputs a single green success line only.
|
|
13
|
+
*
|
|
14
|
+
* Threat mitigations:
|
|
15
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
16
|
+
*/
|
|
17
|
+
var WebinarSpeakerCancelGuestRequest = class WebinarSpeakerCancelGuestRequest extends require_lib_base_command.AuthenticatedCommand {
|
|
18
|
+
static description = "Cancel a guest request for a speaker";
|
|
19
|
+
static examples = ["<%= config.bin %> webinar speaker cancel-guest-request 12345 9900", "<%= config.bin %> webinar speaker cancel-guest-request 12345 9900 --json"];
|
|
20
|
+
static enableJsonFlag = true;
|
|
21
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
22
|
+
static args = {
|
|
23
|
+
webinarId: _oclif_core.Args.string({
|
|
24
|
+
description: "Webinar ID",
|
|
25
|
+
required: true
|
|
26
|
+
}),
|
|
27
|
+
id: _oclif_core.Args.string({
|
|
28
|
+
description: "Speaker ID",
|
|
29
|
+
required: true
|
|
30
|
+
})
|
|
31
|
+
};
|
|
32
|
+
static agentMetadata = {
|
|
33
|
+
api_endpoint: "POST /live/speaker/cancel-guest-request",
|
|
34
|
+
auth_scope: "write",
|
|
35
|
+
output_shape: { type: "none" },
|
|
36
|
+
side_effects: "destructive"
|
|
37
|
+
};
|
|
38
|
+
async run() {
|
|
39
|
+
const { args } = await this.parse(WebinarSpeakerCancelGuestRequest);
|
|
40
|
+
this.printWorkspaceHeader();
|
|
41
|
+
const { data, error } = await this.apiClient.POST("/live/speaker/cancel-guest-request", {
|
|
42
|
+
body: {
|
|
43
|
+
live_id: Number(args.webinarId),
|
|
44
|
+
live_speaker_id: Number(args.id)
|
|
45
|
+
},
|
|
46
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
47
|
+
});
|
|
48
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
49
|
+
this.log(chalk.default.green("Guest request cancelled"));
|
|
50
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
51
|
+
ok: true,
|
|
52
|
+
data,
|
|
53
|
+
summary: "Guest request cancelled",
|
|
54
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
55
|
+
resource: "speaker",
|
|
56
|
+
id: args.id
|
|
57
|
+
}]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
//#endregion
|
|
62
|
+
module.exports = WebinarSpeakerCancelGuestRequest;
|
|
@@ -0,0 +1,66 @@
|
|
|
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/speaker/connection-types.ts
|
|
7
|
+
/**
|
|
8
|
+
* Webinar speaker connection-types command — lists available speaker connection types.
|
|
9
|
+
*
|
|
10
|
+
* Requires live_id (webinar ID) per API schema.
|
|
11
|
+
*
|
|
12
|
+
* Threat mitigations:
|
|
13
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
14
|
+
*/
|
|
15
|
+
var WebinarSpeakerConnectionTypes = class WebinarSpeakerConnectionTypes extends require_lib_base_command.AuthenticatedCommand {
|
|
16
|
+
static description = "List available speaker connection types";
|
|
17
|
+
static examples = ["<%= config.bin %> webinar speaker connection-types 12345", "<%= config.bin %> webinar speaker connection-types 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/speaker/connection-types",
|
|
26
|
+
auth_scope: "read",
|
|
27
|
+
output_shape: {
|
|
28
|
+
type: "table",
|
|
29
|
+
columns: [
|
|
30
|
+
"Type",
|
|
31
|
+
"Label",
|
|
32
|
+
"Description"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
side_effects: "none"
|
|
36
|
+
};
|
|
37
|
+
async run() {
|
|
38
|
+
const { args } = await this.parse(WebinarSpeakerConnectionTypes);
|
|
39
|
+
this.printWorkspaceHeader();
|
|
40
|
+
const { data, error } = await this.apiClient.GET("/live/speaker/connection-types", { params: { query: { live_id: Number(args.id) } } });
|
|
41
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
42
|
+
const types = Array.isArray(data?.data) ? data.data : Array.isArray(data) ? data : [];
|
|
43
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
44
|
+
ok: true,
|
|
45
|
+
data: types,
|
|
46
|
+
summary: `${types.length} connection type${types.length === 1 ? "" : "s"}`,
|
|
47
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "speaker-connection-types" }]
|
|
48
|
+
});
|
|
49
|
+
if (types.length === 0) {
|
|
50
|
+
this.log("No connection types found.");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const table = require_lib_output.renderTable([
|
|
54
|
+
"Type",
|
|
55
|
+
"Label",
|
|
56
|
+
"Description"
|
|
57
|
+
], types.map((t) => [
|
|
58
|
+
String(t.type ?? t.id ?? ""),
|
|
59
|
+
String(t.label ?? t.name ?? ""),
|
|
60
|
+
String(t.description ?? "")
|
|
61
|
+
]));
|
|
62
|
+
this.log(table.toString());
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
module.exports = WebinarSpeakerConnectionTypes;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
const require_lib_term_map = require("../../../lib/term-map.cjs");
|
|
2
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
3
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
4
|
+
//#region src/commands/webinar/speaker/library.ts
|
|
5
|
+
/**
|
|
6
|
+
* Webinar speaker library command — lists speakers in the workspace speaker library.
|
|
7
|
+
*
|
|
8
|
+
* Threat mitigations:
|
|
9
|
+
* T-05-07: applyCliTerms() on all error messages
|
|
10
|
+
*/
|
|
11
|
+
var WebinarSpeakerLibrary = class WebinarSpeakerLibrary extends require_lib_base_command.AuthenticatedCommand {
|
|
12
|
+
static description = "List speakers in the workspace library";
|
|
13
|
+
static examples = ["<%= config.bin %> webinar speaker library", "<%= config.bin %> webinar speaker library --json"];
|
|
14
|
+
static enableJsonFlag = true;
|
|
15
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
16
|
+
static args = {};
|
|
17
|
+
static agentMetadata = {
|
|
18
|
+
api_endpoint: "GET /live/speaker/library/list",
|
|
19
|
+
auth_scope: "read",
|
|
20
|
+
output_shape: {
|
|
21
|
+
type: "table",
|
|
22
|
+
columns: [
|
|
23
|
+
"ID",
|
|
24
|
+
"Name",
|
|
25
|
+
"Email"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
side_effects: "none"
|
|
29
|
+
};
|
|
30
|
+
async run() {
|
|
31
|
+
await this.parse(WebinarSpeakerLibrary);
|
|
32
|
+
this.printWorkspaceHeader();
|
|
33
|
+
const { data, error } = await this.apiClient.GET("/live/speaker/library/list", { params: { query: {} } });
|
|
34
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
35
|
+
const speakers = Array.isArray(data?.data) ? data.data : data?.data ? [data.data] : [];
|
|
36
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
37
|
+
ok: true,
|
|
38
|
+
data: speakers,
|
|
39
|
+
summary: `${speakers.length} speaker${speakers.length === 1 ? "" : "s"} in library`,
|
|
40
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "speaker-library" }]
|
|
41
|
+
});
|
|
42
|
+
if (speakers.length === 0) {
|
|
43
|
+
this.log("No speakers in library.");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const table = require_lib_output.renderTable([
|
|
47
|
+
"ID",
|
|
48
|
+
"Name",
|
|
49
|
+
"Email"
|
|
50
|
+
], speakers.map((s) => [
|
|
51
|
+
String(s.live_speaker_id ?? ""),
|
|
52
|
+
String(s.name ?? ""),
|
|
53
|
+
String(s.email ?? "")
|
|
54
|
+
]));
|
|
55
|
+
this.log(table.toString());
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
//#endregion
|
|
59
|
+
module.exports = WebinarSpeakerLibrary;
|