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,80 @@
|
|
|
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/player/update.ts
|
|
9
|
+
/**
|
|
10
|
+
* Player update command — updates settings for an existing player configuration.
|
|
11
|
+
*
|
|
12
|
+
* Only the flags explicitly provided are sent to the API (Pitfall 3 mitigation).
|
|
13
|
+
* If --data JSON is provided it is merged into the request body for untyped player properties.
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-06-07: extends AuthenticatedCommand — anonymous mode rejected
|
|
17
|
+
*/
|
|
18
|
+
var PlayerUpdate = class PlayerUpdate extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Update settings for a player";
|
|
20
|
+
static agentMetadata = {
|
|
21
|
+
api_endpoint: "POST /player/update",
|
|
22
|
+
auth_scope: "write",
|
|
23
|
+
output_shape: { type: "none" },
|
|
24
|
+
side_effects: "updates"
|
|
25
|
+
};
|
|
26
|
+
static examples = ["<%= config.bin %> player update 42 --name \"My Player\"", "<%= config.bin %> player update 42 --description \"New description\""];
|
|
27
|
+
static enableJsonFlag = true;
|
|
28
|
+
static flags = {
|
|
29
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
30
|
+
name: _oclif_core.Flags.string({
|
|
31
|
+
description: "New name for the player",
|
|
32
|
+
required: false
|
|
33
|
+
}),
|
|
34
|
+
description: _oclif_core.Flags.string({
|
|
35
|
+
description: "New description for the player",
|
|
36
|
+
required: false
|
|
37
|
+
}),
|
|
38
|
+
data: _oclif_core.Flags.string({
|
|
39
|
+
description: "JSON-encoded player properties to merge into the request body",
|
|
40
|
+
required: false
|
|
41
|
+
})
|
|
42
|
+
};
|
|
43
|
+
static args = { id: _oclif_core.Args.string({
|
|
44
|
+
description: "Player ID",
|
|
45
|
+
required: true
|
|
46
|
+
}) };
|
|
47
|
+
async run() {
|
|
48
|
+
const { args, flags } = await this.parse(PlayerUpdate);
|
|
49
|
+
this.printWorkspaceHeader();
|
|
50
|
+
const body = { player_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
|
+
if (flags.data !== void 0) {
|
|
54
|
+
let extra;
|
|
55
|
+
try {
|
|
56
|
+
extra = JSON.parse(flags.data);
|
|
57
|
+
} catch {
|
|
58
|
+
this.error("--data must be valid JSON", { exit: 1 });
|
|
59
|
+
}
|
|
60
|
+
Object.assign(body, extra);
|
|
61
|
+
}
|
|
62
|
+
const { data: updateData, error: updateError } = await this.apiClient.POST("/player/update", {
|
|
63
|
+
body,
|
|
64
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
65
|
+
});
|
|
66
|
+
if (updateError) this.error(require_lib_term_map.applyCliTerms(formatApiError(updateError)), { exit: 1 });
|
|
67
|
+
this.log(chalk.default.green("Player updated"));
|
|
68
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
69
|
+
ok: true,
|
|
70
|
+
data: updateData,
|
|
71
|
+
summary: `Player ${args.id} updated`,
|
|
72
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
73
|
+
resource: "player",
|
|
74
|
+
id: args.id
|
|
75
|
+
}]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
module.exports = PlayerUpdate;
|
|
@@ -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
|
+
let _clack_prompts = require("@clack/prompts");
|
|
9
|
+
//#region src/commands/poll/add.ts
|
|
10
|
+
/**
|
|
11
|
+
* Poll add command — creates a new poll for a webinar.
|
|
12
|
+
*
|
|
13
|
+
* CRITICAL (Pitfall 5): Uses `object_id` NOT `live_id` for the webinar ID.
|
|
14
|
+
* Falls back to interactive prompt for question if not provided.
|
|
15
|
+
*
|
|
16
|
+
* Threat mitigations:
|
|
17
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
18
|
+
*/
|
|
19
|
+
var PollAdd = class PollAdd extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Create a new poll for a webinar";
|
|
21
|
+
static agentMetadata = {
|
|
22
|
+
api_endpoint: "POST /poll/add",
|
|
23
|
+
auth_scope: "write",
|
|
24
|
+
output_shape: { type: "none" },
|
|
25
|
+
side_effects: "creates"
|
|
26
|
+
};
|
|
27
|
+
static examples = ["<%= config.bin %> poll add --object-id 12345 --question \"What is your preference?\"", "<%= config.bin %> poll add --object-id 12345 --question \"How are you?\" --json"];
|
|
28
|
+
static enableJsonFlag = true;
|
|
29
|
+
static flags = {
|
|
30
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
31
|
+
"object-id": _oclif_core.Flags.string({
|
|
32
|
+
description: "Object ID (webinar or live object)",
|
|
33
|
+
required: true
|
|
34
|
+
}),
|
|
35
|
+
question: _oclif_core.Flags.string({
|
|
36
|
+
description: "Poll question",
|
|
37
|
+
required: false
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
static args = {};
|
|
41
|
+
async run() {
|
|
42
|
+
const { flags } = await this.parse(PollAdd);
|
|
43
|
+
this.printWorkspaceHeader();
|
|
44
|
+
let question = flags.question;
|
|
45
|
+
if (!question && !this.jsonEnabled()) {
|
|
46
|
+
const result = await (0, _clack_prompts.text)({
|
|
47
|
+
message: "Poll question",
|
|
48
|
+
placeholder: "What do you want to ask?"
|
|
49
|
+
});
|
|
50
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
51
|
+
question = result;
|
|
52
|
+
}
|
|
53
|
+
if (!question) this.error("--question is required in non-interactive mode", { exit: 1 });
|
|
54
|
+
const { data, error } = await this.apiClient.POST("/poll/add", {
|
|
55
|
+
body: {
|
|
56
|
+
object_id: Number(flags["object-id"]),
|
|
57
|
+
question
|
|
58
|
+
},
|
|
59
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
60
|
+
});
|
|
61
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
62
|
+
const pollId = data?.data?.poll_id ?? data?.poll_id;
|
|
63
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
64
|
+
ok: true,
|
|
65
|
+
data,
|
|
66
|
+
summary: "Poll created",
|
|
67
|
+
breadcrumbs: [
|
|
68
|
+
{ domain: this.activeWorkspace.domain },
|
|
69
|
+
{
|
|
70
|
+
resource: "object",
|
|
71
|
+
id: flags["object-id"]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
resource: "poll",
|
|
75
|
+
id: String(pollId ?? "")
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
});
|
|
79
|
+
this.log(chalk.default.green("Poll created"));
|
|
80
|
+
if (pollId) this.log(`ID: ${pollId}`);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
module.exports = PollAdd;
|
|
@@ -0,0 +1,89 @@
|
|
|
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/poll/answer.ts
|
|
10
|
+
/**
|
|
11
|
+
* Poll answer command — submits a poll answer.
|
|
12
|
+
*
|
|
13
|
+
* CRITICAL (Pitfall 5): Uses `object_id` and `object_token` (NOT `live_id`).
|
|
14
|
+
* Token auto-looked up via fetchWebinarToken if --token not provided.
|
|
15
|
+
*
|
|
16
|
+
* Threat mitigations:
|
|
17
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
18
|
+
*/
|
|
19
|
+
var PollAnswer = class PollAnswer extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Submit a poll answer";
|
|
21
|
+
static agentMetadata = {
|
|
22
|
+
api_endpoint: "POST /poll/answer",
|
|
23
|
+
auth_scope: "anonymous",
|
|
24
|
+
output_shape: { type: "none" },
|
|
25
|
+
side_effects: "creates"
|
|
26
|
+
};
|
|
27
|
+
static examples = ["<%= config.bin %> poll answer 99 --object-id 12345 --option-id 3", "<%= config.bin %> poll answer 99 --object-id 12345 --option-id 3 --json"];
|
|
28
|
+
static enableJsonFlag = true;
|
|
29
|
+
static flags = {
|
|
30
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
31
|
+
"object-id": _oclif_core.Flags.string({
|
|
32
|
+
description: "Object ID (webinar or live object)",
|
|
33
|
+
required: false
|
|
34
|
+
}),
|
|
35
|
+
"object-token": _oclif_core.Flags.string({
|
|
36
|
+
description: "Object token (auto-looked up if omitted)",
|
|
37
|
+
required: false
|
|
38
|
+
}),
|
|
39
|
+
"option-id": _oclif_core.Flags.string({
|
|
40
|
+
description: "Poll option ID",
|
|
41
|
+
required: false
|
|
42
|
+
})
|
|
43
|
+
};
|
|
44
|
+
static args = { id: _oclif_core.Args.string({
|
|
45
|
+
description: "Poll ID",
|
|
46
|
+
required: true
|
|
47
|
+
}) };
|
|
48
|
+
async run() {
|
|
49
|
+
const { args, flags } = await this.parse(PollAnswer);
|
|
50
|
+
this.printWorkspaceHeader();
|
|
51
|
+
let objectId = flags["object-id"];
|
|
52
|
+
let optionId = flags["option-id"];
|
|
53
|
+
if (!objectId && !this.jsonEnabled()) {
|
|
54
|
+
const result = await (0, _clack_prompts.text)({ message: "Object ID" });
|
|
55
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
56
|
+
objectId = result;
|
|
57
|
+
}
|
|
58
|
+
if (!objectId) this.error("--object-id is required in non-interactive mode", { exit: 1 });
|
|
59
|
+
if (!optionId && !this.jsonEnabled()) {
|
|
60
|
+
const result = await (0, _clack_prompts.text)({ message: "Poll option ID" });
|
|
61
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
62
|
+
optionId = result;
|
|
63
|
+
}
|
|
64
|
+
if (!optionId) this.error("--option-id is required in non-interactive mode", { exit: 1 });
|
|
65
|
+
const objectToken = flags["object-token"] ?? await this.fetchWebinarToken(Number(objectId));
|
|
66
|
+
const { data, error } = await this.apiClient.POST("/poll/answer", {
|
|
67
|
+
body: {
|
|
68
|
+
poll_id: Number(args.id),
|
|
69
|
+
object_id: Number(objectId),
|
|
70
|
+
object_token: objectToken,
|
|
71
|
+
poll_option_id: Number(optionId)
|
|
72
|
+
},
|
|
73
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
74
|
+
});
|
|
75
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
76
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
77
|
+
ok: true,
|
|
78
|
+
data,
|
|
79
|
+
summary: "Poll answer submitted",
|
|
80
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
81
|
+
resource: "poll",
|
|
82
|
+
id: args.id
|
|
83
|
+
}]
|
|
84
|
+
});
|
|
85
|
+
this.log(chalk.default.green("Poll answer submitted"));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
//#endregion
|
|
89
|
+
module.exports = PollAnswer;
|
|
@@ -0,0 +1,92 @@
|
|
|
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/poll/list.ts
|
|
9
|
+
/**
|
|
10
|
+
* Poll list command — lists polls for a webinar.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL (Pitfall 5): Poll endpoints use `object_id` NOT `live_id`.
|
|
13
|
+
* Token field is `object_token` (auto-looked up via fetchWebinarToken).
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var PollList = class PollList extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "List polls for a webinar";
|
|
20
|
+
static agentMetadata = {
|
|
21
|
+
api_endpoint: "GET /poll/list",
|
|
22
|
+
auth_scope: "anonymous",
|
|
23
|
+
output_shape: {
|
|
24
|
+
type: "table",
|
|
25
|
+
columns: [
|
|
26
|
+
"ID",
|
|
27
|
+
"Question",
|
|
28
|
+
"Open",
|
|
29
|
+
"Results Visible"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
side_effects: "none"
|
|
33
|
+
};
|
|
34
|
+
static examples = ["<%= config.bin %> poll list --object-id 12345", "<%= config.bin %> poll list --object-id 12345 --json"];
|
|
35
|
+
static enableJsonFlag = true;
|
|
36
|
+
static flags = {
|
|
37
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
38
|
+
"object-id": _oclif_core.Flags.string({
|
|
39
|
+
description: "Object ID (webinar or live object)",
|
|
40
|
+
required: true
|
|
41
|
+
}),
|
|
42
|
+
"object-token": _oclif_core.Flags.string({
|
|
43
|
+
description: "Object token (auto-looked up if omitted)",
|
|
44
|
+
required: false
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
static args = {};
|
|
48
|
+
async run() {
|
|
49
|
+
const { flags } = await this.parse(PollList);
|
|
50
|
+
this.printWorkspaceHeader();
|
|
51
|
+
const objectId = Number(flags["object-id"]);
|
|
52
|
+
const objectToken = flags["object-token"] ?? await this.fetchWebinarToken(objectId);
|
|
53
|
+
const { data, error } = await this.apiClient.GET("/poll/list", { params: { query: {
|
|
54
|
+
object_id: objectId,
|
|
55
|
+
object_token: objectToken
|
|
56
|
+
} } });
|
|
57
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
58
|
+
const polls = Array.isArray(data?.data) ? data.data : data?.data ? [data.data] : [];
|
|
59
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
60
|
+
ok: true,
|
|
61
|
+
data: polls,
|
|
62
|
+
summary: `${polls.length} poll${polls.length === 1 ? "" : "s"}`,
|
|
63
|
+
breadcrumbs: [
|
|
64
|
+
{ domain: this.activeWorkspace.domain },
|
|
65
|
+
{
|
|
66
|
+
resource: "object",
|
|
67
|
+
id: flags["object-id"]
|
|
68
|
+
},
|
|
69
|
+
{ resource: "poll" }
|
|
70
|
+
]
|
|
71
|
+
});
|
|
72
|
+
if (polls.length === 0) {
|
|
73
|
+
this.log("No polls found.");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const table = require_lib_output.renderTable([
|
|
77
|
+
"ID",
|
|
78
|
+
"Question",
|
|
79
|
+
"Open",
|
|
80
|
+
"Results Visible"
|
|
81
|
+
], polls.map((p) => [
|
|
82
|
+
String(p.poll_id ?? ""),
|
|
83
|
+
require_lib_term_map.applyCliTerms(String(p.question ?? "")),
|
|
84
|
+
p.open_p ? "yes" : "no",
|
|
85
|
+
p.display_results_p ? "yes" : "no"
|
|
86
|
+
]));
|
|
87
|
+
this.log(table.toString());
|
|
88
|
+
this.log(chalk.default.dim(`${polls.length} poll${polls.length === 1 ? "" : "s"}`));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
//#endregion
|
|
92
|
+
module.exports = PollList;
|
|
@@ -0,0 +1,57 @@
|
|
|
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/poll/remove.ts
|
|
10
|
+
/**
|
|
11
|
+
* Poll remove command — removes a poll after confirmation.
|
|
12
|
+
*
|
|
13
|
+
* Threat mitigations:
|
|
14
|
+
* T-05-19: Confirmation prompt includes domain
|
|
15
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
16
|
+
*/
|
|
17
|
+
var PollRemove = class PollRemove extends require_lib_base_command.AuthenticatedCommand {
|
|
18
|
+
static description = "Remove a poll";
|
|
19
|
+
static agentMetadata = {
|
|
20
|
+
api_endpoint: "POST /poll/remove",
|
|
21
|
+
auth_scope: "write",
|
|
22
|
+
output_shape: { type: "none" },
|
|
23
|
+
side_effects: "destructive"
|
|
24
|
+
};
|
|
25
|
+
static examples = ["<%= config.bin %> poll remove 99", "<%= config.bin %> poll remove 99 --json"];
|
|
26
|
+
static enableJsonFlag = true;
|
|
27
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
28
|
+
static args = { id: _oclif_core.Args.string({
|
|
29
|
+
description: "Poll ID",
|
|
30
|
+
required: true
|
|
31
|
+
}) };
|
|
32
|
+
async run() {
|
|
33
|
+
const { args } = await this.parse(PollRemove);
|
|
34
|
+
this.printWorkspaceHeader();
|
|
35
|
+
if (!this.jsonEnabled()) {
|
|
36
|
+
const confirmed = await (0, _clack_prompts.confirm)({ message: `Remove poll ${args.id} from ${this.activeWorkspace.domain}? This cannot be undone.` });
|
|
37
|
+
if ((0, _clack_prompts.isCancel)(confirmed) || !confirmed) process.exit(2);
|
|
38
|
+
}
|
|
39
|
+
const { data, error } = await this.apiClient.POST("/poll/remove", {
|
|
40
|
+
body: { poll_id: Number(args.id) },
|
|
41
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
42
|
+
});
|
|
43
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
44
|
+
this.log(chalk.default.green(`Poll ${args.id} removed`));
|
|
45
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
46
|
+
ok: true,
|
|
47
|
+
data,
|
|
48
|
+
summary: `Poll ${args.id} removed`,
|
|
49
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
50
|
+
resource: "poll",
|
|
51
|
+
id: args.id
|
|
52
|
+
}]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
module.exports = PollRemove;
|
|
@@ -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
|
+
let _clack_prompts = require("@clack/prompts");
|
|
9
|
+
//#region src/commands/poll/set-options.ts
|
|
10
|
+
/**
|
|
11
|
+
* Poll set-options command — sets options for a poll.
|
|
12
|
+
*
|
|
13
|
+
* Decision D-2: uses repeated --option flags: `--option "Yes" --option "No"`
|
|
14
|
+
* CRITICAL (Pitfall 7): options must be serialized as JSON string, not array.
|
|
15
|
+
* Correct: options='["Yes","No","Maybe"]'
|
|
16
|
+
* Incorrect: options[]=Yes&options[]=No (would fail silently)
|
|
17
|
+
*
|
|
18
|
+
* Threat mitigations:
|
|
19
|
+
* T-05-20: Options validated as non-empty before serialization
|
|
20
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
21
|
+
*/
|
|
22
|
+
var PollSetOptions = class PollSetOptions extends require_lib_base_command.AuthenticatedCommand {
|
|
23
|
+
static description = "Set options for a poll";
|
|
24
|
+
static agentMetadata = {
|
|
25
|
+
api_endpoint: "POST /poll/set-options",
|
|
26
|
+
auth_scope: "write",
|
|
27
|
+
output_shape: { type: "none" },
|
|
28
|
+
side_effects: "updates"
|
|
29
|
+
};
|
|
30
|
+
static examples = ["<%= config.bin %> poll set-options 99 --option \"Yes\" --option \"No\" --option \"Maybe\"", "<%= config.bin %> poll set-options 99 --option \"Option A\" --option \"Option B\" --json"];
|
|
31
|
+
static enableJsonFlag = true;
|
|
32
|
+
static flags = {
|
|
33
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
34
|
+
option: _oclif_core.Flags.string({
|
|
35
|
+
description: "Poll option (repeat for multiple)",
|
|
36
|
+
multiple: true,
|
|
37
|
+
required: false
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
static args = { id: _oclif_core.Args.string({
|
|
41
|
+
description: "Poll ID",
|
|
42
|
+
required: true
|
|
43
|
+
}) };
|
|
44
|
+
async run() {
|
|
45
|
+
const { args, flags } = await this.parse(PollSetOptions);
|
|
46
|
+
this.printWorkspaceHeader();
|
|
47
|
+
let options = flags.option ?? [];
|
|
48
|
+
if (options.length === 0 && !this.jsonEnabled()) {
|
|
49
|
+
this.log("Enter poll options one at a time. Press Enter on an empty line when done.");
|
|
50
|
+
while (true) {
|
|
51
|
+
const result = await (0, _clack_prompts.text)({
|
|
52
|
+
message: `Option ${options.length + 1} (leave empty to finish)`,
|
|
53
|
+
placeholder: options.length >= 2 ? "Press Enter to finish" : "e.g. Yes"
|
|
54
|
+
});
|
|
55
|
+
if ((0, _clack_prompts.isCancel)(result)) process.exit(2);
|
|
56
|
+
const val = result.trim();
|
|
57
|
+
if (!val) break;
|
|
58
|
+
options.push(val);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (options.length === 0) this.error("At least one --option is required", { exit: 1 });
|
|
62
|
+
const optionsJson = JSON.stringify(options);
|
|
63
|
+
const { data, error } = await this.apiClient.POST("/poll/set-options", {
|
|
64
|
+
body: {
|
|
65
|
+
poll_id: Number(args.id),
|
|
66
|
+
options: optionsJson
|
|
67
|
+
},
|
|
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: `Poll options set (${options.length} options)`,
|
|
75
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
76
|
+
resource: "poll",
|
|
77
|
+
id: args.id
|
|
78
|
+
}]
|
|
79
|
+
});
|
|
80
|
+
this.log(chalk.default.green(`Poll options set (${options.length} options)`));
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
module.exports = PollSetOptions;
|
|
@@ -0,0 +1,79 @@
|
|
|
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/poll/update.ts
|
|
9
|
+
/**
|
|
10
|
+
* Poll update command — updates a poll's settings.
|
|
11
|
+
*
|
|
12
|
+
* Sends only fields where flags are explicitly provided.
|
|
13
|
+
* Boolean flags map to _p suffix fields (open_p, display_results_p).
|
|
14
|
+
*
|
|
15
|
+
* Threat mitigations:
|
|
16
|
+
* T-05-18: applyCliTerms() on all error messages
|
|
17
|
+
*/
|
|
18
|
+
var PollUpdate = class PollUpdate extends require_lib_base_command.AuthenticatedCommand {
|
|
19
|
+
static description = "Update a poll";
|
|
20
|
+
static agentMetadata = {
|
|
21
|
+
api_endpoint: "POST /poll/update",
|
|
22
|
+
auth_scope: "write",
|
|
23
|
+
output_shape: { type: "none" },
|
|
24
|
+
side_effects: "updates"
|
|
25
|
+
};
|
|
26
|
+
static examples = [
|
|
27
|
+
"<%= config.bin %> poll update 99 --question \"Updated question?\"",
|
|
28
|
+
"<%= config.bin %> poll update 99 --open",
|
|
29
|
+
"<%= config.bin %> poll update 99 --no-display-results",
|
|
30
|
+
"<%= config.bin %> poll update 99 --question \"New?\" --open --json"
|
|
31
|
+
];
|
|
32
|
+
static enableJsonFlag = true;
|
|
33
|
+
static flags = {
|
|
34
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
35
|
+
question: _oclif_core.Flags.string({
|
|
36
|
+
description: "Poll question",
|
|
37
|
+
required: false
|
|
38
|
+
}),
|
|
39
|
+
open: _oclif_core.Flags.boolean({
|
|
40
|
+
description: "Open or close the poll",
|
|
41
|
+
allowNo: true,
|
|
42
|
+
required: false
|
|
43
|
+
}),
|
|
44
|
+
"display-results": _oclif_core.Flags.boolean({
|
|
45
|
+
description: "Show or hide results",
|
|
46
|
+
allowNo: true,
|
|
47
|
+
required: false
|
|
48
|
+
})
|
|
49
|
+
};
|
|
50
|
+
static args = { id: _oclif_core.Args.string({
|
|
51
|
+
description: "Poll ID",
|
|
52
|
+
required: true
|
|
53
|
+
}) };
|
|
54
|
+
async run() {
|
|
55
|
+
const { args, flags } = await this.parse(PollUpdate);
|
|
56
|
+
this.printWorkspaceHeader();
|
|
57
|
+
const body = { poll_id: Number(args.id) };
|
|
58
|
+
if (flags.question !== void 0) body.question = flags.question;
|
|
59
|
+
if (flags.open !== void 0) body.open_p = flags.open ? 1 : 0;
|
|
60
|
+
if (flags["display-results"] !== void 0) body.display_results_p = flags["display-results"] ? 1 : 0;
|
|
61
|
+
const { data, error } = await this.apiClient.POST("/poll/update", {
|
|
62
|
+
body,
|
|
63
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
64
|
+
});
|
|
65
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
66
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
67
|
+
ok: true,
|
|
68
|
+
data,
|
|
69
|
+
summary: "Poll updated",
|
|
70
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
71
|
+
resource: "poll",
|
|
72
|
+
id: args.id
|
|
73
|
+
}]
|
|
74
|
+
});
|
|
75
|
+
this.log(chalk.default.green("Poll updated"));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
module.exports = PollUpdate;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_term_map = require("../../../lib/term-map.cjs");
|
|
3
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
4
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
5
|
+
let chalk = require("chalk");
|
|
6
|
+
chalk = require_runtime.__toESM(chalk);
|
|
7
|
+
//#region src/commands/presentation/page/link-locations.ts
|
|
8
|
+
/**
|
|
9
|
+
* Presentation page link-locations command — lists available link locations (PRS-03).
|
|
10
|
+
*
|
|
11
|
+
* Uses GET /presentation/page/link-locations — returns a list of link location options.
|
|
12
|
+
* Pattern A: standard GET list with table output.
|
|
13
|
+
*
|
|
14
|
+
* 3-level oclif topic via directory structure (presentation/page/link-locations.ts).
|
|
15
|
+
*
|
|
16
|
+
* Threat mitigations:
|
|
17
|
+
* T-08-16: extends AuthenticatedCommand — anonymous mode rejected
|
|
18
|
+
*/
|
|
19
|
+
var PresentationPageLinkLocations = class PresentationPageLinkLocations extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "List available presentation page link locations";
|
|
21
|
+
static examples = ["<%= config.bin %> presentation page link-locations", "<%= config.bin %> presentation page link-locations --json"];
|
|
22
|
+
static enableJsonFlag = true;
|
|
23
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
24
|
+
static args = {};
|
|
25
|
+
static agentMetadata = {
|
|
26
|
+
api_endpoint: "GET /presentation/page/link-locations",
|
|
27
|
+
auth_scope: "read",
|
|
28
|
+
output_shape: {
|
|
29
|
+
type: "table",
|
|
30
|
+
columns: ["Link Location", "Label"]
|
|
31
|
+
},
|
|
32
|
+
side_effects: "none"
|
|
33
|
+
};
|
|
34
|
+
async run() {
|
|
35
|
+
const {} = await this.parse(PresentationPageLinkLocations);
|
|
36
|
+
this.printWorkspaceHeader();
|
|
37
|
+
const { data, error } = await this.apiClient.GET("/presentation/page/link-locations", {});
|
|
38
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
39
|
+
const resp = data;
|
|
40
|
+
const rows = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
|
|
41
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
42
|
+
ok: true,
|
|
43
|
+
data: rows,
|
|
44
|
+
summary: `${rows.length} link location(s)`,
|
|
45
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "presentation" }]
|
|
46
|
+
});
|
|
47
|
+
if (rows.length === 0) {
|
|
48
|
+
this.log("No link locations found.");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const table = require_lib_output.renderTable(["Link Location", "Label"], rows.map((r) => [String(r.link_location ?? ""), require_lib_term_map.applyCliTerms(String(r.label ?? ""))]));
|
|
52
|
+
this.log(table.toString());
|
|
53
|
+
this.log(chalk.default.dim(`${rows.length} link location(s)`));
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
module.exports = PresentationPageLinkLocations;
|
|
@@ -0,0 +1,44 @@
|
|
|
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/presentation/setting/list.ts
|
|
5
|
+
/**
|
|
6
|
+
* Presentation setting list command — retrieves workspace presentation settings (PRS-01).
|
|
7
|
+
*
|
|
8
|
+
* Uses GET /presentation/setting/list — returns a large settings object.
|
|
9
|
+
* Output is key-value format iterating all top-level keys.
|
|
10
|
+
*
|
|
11
|
+
* Threat mitigations:
|
|
12
|
+
* T-08-16: extends AuthenticatedCommand — anonymous mode rejected
|
|
13
|
+
*/
|
|
14
|
+
var PresentationSettingList = class PresentationSettingList extends require_lib_base_command.AuthenticatedCommand {
|
|
15
|
+
static description = "List workspace presentation settings";
|
|
16
|
+
static examples = ["<%= config.bin %> presentation setting list", "<%= config.bin %> presentation setting list --json"];
|
|
17
|
+
static enableJsonFlag = true;
|
|
18
|
+
static flags = { ...require_lib_base_command.AuthenticatedCommand.baseFlags };
|
|
19
|
+
static args = {};
|
|
20
|
+
static agentMetadata = {
|
|
21
|
+
api_endpoint: "GET /presentation/setting/list",
|
|
22
|
+
auth_scope: "read",
|
|
23
|
+
output_shape: { type: "key-value" },
|
|
24
|
+
side_effects: "none"
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const {} = await this.parse(PresentationSettingList);
|
|
28
|
+
this.printWorkspaceHeader();
|
|
29
|
+
const { data, error } = await this.apiClient.GET("/presentation/setting/list", {});
|
|
30
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
31
|
+
const resp = data;
|
|
32
|
+
const obj = resp?.data ?? resp;
|
|
33
|
+
if (!obj) this.error("No presentation settings returned", { exit: 1 });
|
|
34
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
35
|
+
ok: true,
|
|
36
|
+
data: obj,
|
|
37
|
+
summary: "Presentation settings",
|
|
38
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "presentation" }]
|
|
39
|
+
});
|
|
40
|
+
for (const [k, v] of Object.entries(obj)) this.log(`${k}: ${require_lib_term_map.applyCliTerms(String(v ?? ""))}`);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//#endregion
|
|
44
|
+
module.exports = PresentationSettingList;
|