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,65 @@
|
|
|
1
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_term_map = require("../../lib/term-map.cjs");
|
|
3
|
+
const require_lib_base_command = require("../../lib/base-command.cjs");
|
|
4
|
+
const require_lib_output = require("../../lib/output.cjs");
|
|
5
|
+
let _oclif_core = require("@oclif/core");
|
|
6
|
+
let chalk = require("chalk");
|
|
7
|
+
chalk = require_runtime.__toESM(chalk);
|
|
8
|
+
//#region src/commands/comment/promote.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment promote command — toggles or sets promoted status on a comment (CMT-05).
|
|
11
|
+
*
|
|
12
|
+
* If --promoted / --no-promoted is provided, the value is sent explicitly.
|
|
13
|
+
* If the flag is omitted entirely, promoted_p is not sent — the API will toggle the current state.
|
|
14
|
+
*/
|
|
15
|
+
var CommentPromote = class CommentPromote extends require_lib_base_command.AuthenticatedCommand {
|
|
16
|
+
static description = "Promote or toggle promoted status of a comment";
|
|
17
|
+
static agentMetadata = {
|
|
18
|
+
api_endpoint: "POST /comment/promote",
|
|
19
|
+
auth_scope: "write",
|
|
20
|
+
output_shape: { type: "none" },
|
|
21
|
+
side_effects: "updates"
|
|
22
|
+
};
|
|
23
|
+
static examples = [
|
|
24
|
+
"<%= config.bin %> comment promote 789",
|
|
25
|
+
"<%= config.bin %> comment promote 789 --promoted",
|
|
26
|
+
"<%= config.bin %> comment promote 789 --no-promoted"
|
|
27
|
+
];
|
|
28
|
+
static enableJsonFlag = true;
|
|
29
|
+
static flags = {
|
|
30
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
31
|
+
promoted: _oclif_core.Flags.boolean({
|
|
32
|
+
description: "Set promoted status (omit to toggle)",
|
|
33
|
+
allowNo: true,
|
|
34
|
+
required: false
|
|
35
|
+
})
|
|
36
|
+
};
|
|
37
|
+
static args = { id: _oclif_core.Args.string({
|
|
38
|
+
description: "Comment ID",
|
|
39
|
+
required: true
|
|
40
|
+
}) };
|
|
41
|
+
async run() {
|
|
42
|
+
const { args, flags } = await this.parse(CommentPromote);
|
|
43
|
+
this.printWorkspaceHeader();
|
|
44
|
+
const body = { comment_id: Number(args.id) };
|
|
45
|
+
if (flags.promoted !== void 0) body.promoted_p = flags.promoted ? 1 : 0;
|
|
46
|
+
const { data, error } = await this.apiClient.POST("/comment/promote", {
|
|
47
|
+
body,
|
|
48
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
49
|
+
});
|
|
50
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
51
|
+
const message = flags.promoted !== void 0 ? chalk.default.green("Comment promoted") : chalk.default.green("Comment promotion toggled");
|
|
52
|
+
this.log(message);
|
|
53
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
54
|
+
ok: true,
|
|
55
|
+
data,
|
|
56
|
+
summary: flags.promoted !== void 0 ? "Comment promoted" : "Comment promotion toggled",
|
|
57
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
58
|
+
resource: "comment",
|
|
59
|
+
id: args.id
|
|
60
|
+
}]
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
module.exports = CommentPromote;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_term_map = require("../../../lib/term-map.cjs");
|
|
3
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
4
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
5
|
+
let _oclif_core = require("@oclif/core");
|
|
6
|
+
let chalk = require("chalk");
|
|
7
|
+
chalk = require_runtime.__toESM(chalk);
|
|
8
|
+
//#region src/commands/comment/reaction/add.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment reaction add command — adds a reaction to a comment (CMT-08).
|
|
11
|
+
*
|
|
12
|
+
* D-3: 3-level oclif topic discovered by directory structure (comment/reaction/add.ts).
|
|
13
|
+
* Class name follows Topic1+Topic2+Verb convention: CommentReactionAdd.
|
|
14
|
+
*
|
|
15
|
+
* Uses GET (not POST) per API spec — all reaction endpoints are GET queries.
|
|
16
|
+
*
|
|
17
|
+
* Threat mitigation T-06-06: --object-token is required; no auto-lookup to prevent token leakage.
|
|
18
|
+
*/
|
|
19
|
+
var CommentReactionAdd = class CommentReactionAdd extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Add a reaction to a comment";
|
|
21
|
+
static agentMetadata = {
|
|
22
|
+
api_endpoint: "GET /comment/reaction/add",
|
|
23
|
+
auth_scope: "write",
|
|
24
|
+
output_shape: { type: "none" },
|
|
25
|
+
side_effects: "creates"
|
|
26
|
+
};
|
|
27
|
+
static examples = ["<%= config.bin %> comment reaction add 789 --object-id 123 --object-token abc --reaction \"👍\"", "<%= config.bin %> comment reaction add 789 --object-id 123 --object-token abc --reaction \"❤️\" --object-type photo"];
|
|
28
|
+
static enableJsonFlag = true;
|
|
29
|
+
static flags = {
|
|
30
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
31
|
+
reaction: _oclif_core.Flags.string({
|
|
32
|
+
description: "Reaction emoji to add",
|
|
33
|
+
required: true
|
|
34
|
+
}),
|
|
35
|
+
"object-id": _oclif_core.Flags.string({
|
|
36
|
+
description: "Object ID the comment belongs to",
|
|
37
|
+
required: true
|
|
38
|
+
}),
|
|
39
|
+
"object-token": _oclif_core.Flags.string({
|
|
40
|
+
description: "Object token for the target object",
|
|
41
|
+
required: true
|
|
42
|
+
}),
|
|
43
|
+
"object-type": _oclif_core.Flags.string({
|
|
44
|
+
description: "Object type (live, photo, album)",
|
|
45
|
+
required: false
|
|
46
|
+
}),
|
|
47
|
+
uuid: _oclif_core.Flags.string({
|
|
48
|
+
description: "UUID identifier",
|
|
49
|
+
required: false
|
|
50
|
+
})
|
|
51
|
+
};
|
|
52
|
+
static args = { id: _oclif_core.Args.string({
|
|
53
|
+
description: "Comment ID",
|
|
54
|
+
required: true
|
|
55
|
+
}) };
|
|
56
|
+
async run() {
|
|
57
|
+
const { args, flags } = await this.parse(CommentReactionAdd);
|
|
58
|
+
this.printWorkspaceHeader();
|
|
59
|
+
const { data, error } = await this.apiClient.GET("/comment/reaction/add", { params: { query: {
|
|
60
|
+
comment_id: Number(args.id),
|
|
61
|
+
reaction_emoji: flags.reaction,
|
|
62
|
+
object_id: Number(flags["object-id"]),
|
|
63
|
+
object_token: flags["object-token"],
|
|
64
|
+
object_type: flags["object-type"],
|
|
65
|
+
uuid: flags.uuid
|
|
66
|
+
} } });
|
|
67
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
68
|
+
this.log(chalk.default.green("Reaction added"));
|
|
69
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
70
|
+
ok: true,
|
|
71
|
+
data,
|
|
72
|
+
summary: "Reaction added",
|
|
73
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
74
|
+
resource: "comment",
|
|
75
|
+
id: args.id
|
|
76
|
+
}]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
//#endregion
|
|
81
|
+
module.exports = CommentReactionAdd;
|
|
@@ -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/comment/reaction/list.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment reaction list command — lists reactions on comments for an object (CMT-08).
|
|
11
|
+
*
|
|
12
|
+
* D-3: 3-level oclif topic discovered by directory structure (comment/reaction/list.ts).
|
|
13
|
+
* Class name follows Topic1+Topic2+Verb convention: CommentReactionList.
|
|
14
|
+
*
|
|
15
|
+
* Uses GET (not POST) per API spec.
|
|
16
|
+
*
|
|
17
|
+
* Threat mitigation T-06-06: --object-token is required; no auto-lookup to prevent token exposure.
|
|
18
|
+
*/
|
|
19
|
+
var CommentReactionList = class CommentReactionList extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "List reactions on comments for an object";
|
|
21
|
+
static agentMetadata = {
|
|
22
|
+
api_endpoint: "GET /comment/reaction/list",
|
|
23
|
+
auth_scope: "read",
|
|
24
|
+
output_shape: {
|
|
25
|
+
type: "table",
|
|
26
|
+
columns: [
|
|
27
|
+
"Comment ID",
|
|
28
|
+
"Emoji",
|
|
29
|
+
"Count"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
side_effects: "none"
|
|
33
|
+
};
|
|
34
|
+
static examples = ["<%= config.bin %> comment reaction list --object-id 123 --object-token abc", "<%= config.bin %> comment reaction list --object-id 123 --object-token abc --object-type photo"];
|
|
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 to list reactions for",
|
|
40
|
+
required: true
|
|
41
|
+
}),
|
|
42
|
+
"object-token": _oclif_core.Flags.string({
|
|
43
|
+
description: "Object token for the target object",
|
|
44
|
+
required: true
|
|
45
|
+
}),
|
|
46
|
+
"object-type": _oclif_core.Flags.string({
|
|
47
|
+
description: "Object type (live, photo, album)",
|
|
48
|
+
required: false
|
|
49
|
+
}),
|
|
50
|
+
uuid: _oclif_core.Flags.string({
|
|
51
|
+
description: "UUID identifier",
|
|
52
|
+
required: false
|
|
53
|
+
})
|
|
54
|
+
};
|
|
55
|
+
static args = {};
|
|
56
|
+
async run() {
|
|
57
|
+
const { flags } = await this.parse(CommentReactionList);
|
|
58
|
+
this.printWorkspaceHeader();
|
|
59
|
+
const { data, error } = await this.apiClient.GET("/comment/reaction/list", { params: { query: {
|
|
60
|
+
object_id: Number(flags["object-id"]),
|
|
61
|
+
object_token: flags["object-token"],
|
|
62
|
+
object_type: flags["object-type"],
|
|
63
|
+
uuid: flags.uuid
|
|
64
|
+
} } });
|
|
65
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
66
|
+
const resp = data;
|
|
67
|
+
const reactions = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
|
|
68
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
69
|
+
ok: true,
|
|
70
|
+
data: reactions,
|
|
71
|
+
summary: `${reactions.length} reaction${reactions.length === 1 ? "" : "s"}`,
|
|
72
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "comment" }]
|
|
73
|
+
});
|
|
74
|
+
if (reactions.length === 0) {
|
|
75
|
+
this.log("No reactions found.");
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const table = require_lib_output.renderTable([
|
|
79
|
+
"Comment ID",
|
|
80
|
+
"Emoji",
|
|
81
|
+
"Count"
|
|
82
|
+
], reactions.map((r) => [
|
|
83
|
+
String(r.comment_id ?? ""),
|
|
84
|
+
String(r.reaction_emoji ?? r.emoji ?? ""),
|
|
85
|
+
String(r.count ?? r.reaction_count ?? "")
|
|
86
|
+
]));
|
|
87
|
+
this.log(table.toString());
|
|
88
|
+
this.log(chalk.default.dim(`${reactions.length} reaction${reactions.length === 1 ? "" : "s"}`));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
//#endregion
|
|
92
|
+
module.exports = CommentReactionList;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_lib_term_map = require("../../../lib/term-map.cjs");
|
|
3
|
+
const require_lib_base_command = require("../../../lib/base-command.cjs");
|
|
4
|
+
const require_lib_output = require("../../../lib/output.cjs");
|
|
5
|
+
let _oclif_core = require("@oclif/core");
|
|
6
|
+
let chalk = require("chalk");
|
|
7
|
+
chalk = require_runtime.__toESM(chalk);
|
|
8
|
+
//#region src/commands/comment/reaction/remove.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment reaction remove command — removes a reaction from a comment (CMT-08).
|
|
11
|
+
*
|
|
12
|
+
* D-3: 3-level oclif topic discovered by directory structure (comment/reaction/remove.ts).
|
|
13
|
+
* Class name follows Topic1+Topic2+Verb convention: CommentReactionRemove.
|
|
14
|
+
*
|
|
15
|
+
* Uses GET (not POST) per API spec — all reaction endpoints are GET queries.
|
|
16
|
+
*
|
|
17
|
+
* Threat mitigation T-06-06: --object-token is required; no auto-lookup to prevent token leakage.
|
|
18
|
+
*/
|
|
19
|
+
var CommentReactionRemove = class CommentReactionRemove extends require_lib_base_command.AuthenticatedCommand {
|
|
20
|
+
static description = "Remove a reaction from a comment";
|
|
21
|
+
static agentMetadata = {
|
|
22
|
+
api_endpoint: "GET /comment/reaction/remove",
|
|
23
|
+
auth_scope: "write",
|
|
24
|
+
output_shape: { type: "none" },
|
|
25
|
+
side_effects: "destructive"
|
|
26
|
+
};
|
|
27
|
+
static examples = ["<%= config.bin %> comment reaction remove 789 --object-id 123 --object-token abc --reaction \"👍\"", "<%= config.bin %> comment reaction remove 789 --object-id 123 --object-token abc --reaction \"❤️\" --object-type photo"];
|
|
28
|
+
static enableJsonFlag = true;
|
|
29
|
+
static flags = {
|
|
30
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
31
|
+
reaction: _oclif_core.Flags.string({
|
|
32
|
+
description: "Reaction emoji to remove",
|
|
33
|
+
required: true
|
|
34
|
+
}),
|
|
35
|
+
"object-id": _oclif_core.Flags.string({
|
|
36
|
+
description: "Object ID the comment belongs to",
|
|
37
|
+
required: true
|
|
38
|
+
}),
|
|
39
|
+
"object-token": _oclif_core.Flags.string({
|
|
40
|
+
description: "Object token for the target object",
|
|
41
|
+
required: true
|
|
42
|
+
}),
|
|
43
|
+
"object-type": _oclif_core.Flags.string({
|
|
44
|
+
description: "Object type (live, photo, album)",
|
|
45
|
+
required: false
|
|
46
|
+
}),
|
|
47
|
+
uuid: _oclif_core.Flags.string({
|
|
48
|
+
description: "UUID identifier",
|
|
49
|
+
required: false
|
|
50
|
+
})
|
|
51
|
+
};
|
|
52
|
+
static args = { id: _oclif_core.Args.string({
|
|
53
|
+
description: "Comment ID",
|
|
54
|
+
required: true
|
|
55
|
+
}) };
|
|
56
|
+
async run() {
|
|
57
|
+
const { args, flags } = await this.parse(CommentReactionRemove);
|
|
58
|
+
this.printWorkspaceHeader();
|
|
59
|
+
const { data, error } = await this.apiClient.GET("/comment/reaction/remove", { params: { query: {
|
|
60
|
+
comment_id: Number(args.id),
|
|
61
|
+
reaction_emoji: flags.reaction,
|
|
62
|
+
object_id: Number(flags["object-id"]),
|
|
63
|
+
object_token: flags["object-token"],
|
|
64
|
+
object_type: flags["object-type"],
|
|
65
|
+
uuid: flags.uuid
|
|
66
|
+
} } });
|
|
67
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
68
|
+
this.log(chalk.default.green("Reaction removed"));
|
|
69
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
70
|
+
ok: true,
|
|
71
|
+
data,
|
|
72
|
+
summary: "Reaction removed",
|
|
73
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
74
|
+
resource: "comment",
|
|
75
|
+
id: args.id
|
|
76
|
+
}]
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
//#endregion
|
|
81
|
+
module.exports = CommentReactionRemove;
|
|
@@ -0,0 +1,63 @@
|
|
|
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/comment/set-order.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment set-order command — reorders comments on an object (CMT-07).
|
|
11
|
+
*
|
|
12
|
+
* The --order flag takes a comma-separated list of comment IDs in the desired display order.
|
|
13
|
+
*/
|
|
14
|
+
var CommentSetOrder = class CommentSetOrder extends require_lib_base_command.AuthenticatedCommand {
|
|
15
|
+
static description = "Set display order of comments on an object";
|
|
16
|
+
static agentMetadata = {
|
|
17
|
+
api_endpoint: "POST /comment/set-order",
|
|
18
|
+
auth_scope: "write",
|
|
19
|
+
output_shape: { type: "none" },
|
|
20
|
+
side_effects: "updates"
|
|
21
|
+
};
|
|
22
|
+
static examples = ["<%= config.bin %> comment set-order --object-id 123 --order \"789,456,123\"", "<%= config.bin %> comment set-order --object-id 123 --order \"789,456\" --comment-type question"];
|
|
23
|
+
static enableJsonFlag = true;
|
|
24
|
+
static flags = {
|
|
25
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
26
|
+
"object-id": _oclif_core.Flags.string({
|
|
27
|
+
description: "Object ID whose comments are being reordered",
|
|
28
|
+
required: true
|
|
29
|
+
}),
|
|
30
|
+
order: _oclif_core.Flags.string({
|
|
31
|
+
description: "Comma-separated list of comment IDs in desired display order",
|
|
32
|
+
required: true
|
|
33
|
+
}),
|
|
34
|
+
"comment-type": _oclif_core.Flags.string({
|
|
35
|
+
description: "Comment type to reorder (default: question)",
|
|
36
|
+
required: false
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
static args = {};
|
|
40
|
+
async run() {
|
|
41
|
+
const { flags } = await this.parse(CommentSetOrder);
|
|
42
|
+
this.printWorkspaceHeader();
|
|
43
|
+
const body = {
|
|
44
|
+
object_id: Number(flags["object-id"]),
|
|
45
|
+
order: flags.order,
|
|
46
|
+
comment_type: flags["comment-type"] ?? "question"
|
|
47
|
+
};
|
|
48
|
+
const { data, error } = await this.apiClient.POST("/comment/set-order", {
|
|
49
|
+
body,
|
|
50
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
51
|
+
});
|
|
52
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
53
|
+
this.log(chalk.default.green("Comment order updated"));
|
|
54
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
55
|
+
ok: true,
|
|
56
|
+
data,
|
|
57
|
+
summary: "Comment order updated",
|
|
58
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "comment" }]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
module.exports = CommentSetOrder;
|
|
@@ -0,0 +1,63 @@
|
|
|
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/comment/update.ts
|
|
9
|
+
/**
|
|
10
|
+
* Comment update command — modifies a comment's status (CMT-03).
|
|
11
|
+
*/
|
|
12
|
+
var CommentUpdate = class CommentUpdate extends require_lib_base_command.AuthenticatedCommand {
|
|
13
|
+
static description = "Update a comment's status";
|
|
14
|
+
static agentMetadata = {
|
|
15
|
+
api_endpoint: "POST /comment/update",
|
|
16
|
+
auth_scope: "write",
|
|
17
|
+
output_shape: { type: "none" },
|
|
18
|
+
side_effects: "updates"
|
|
19
|
+
};
|
|
20
|
+
static examples = ["<%= config.bin %> comment update 789 --object-id 123 --status answered", "<%= config.bin %> comment update 789 --object-id 123 --status dismissed"];
|
|
21
|
+
static enableJsonFlag = true;
|
|
22
|
+
static flags = {
|
|
23
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
24
|
+
"object-id": _oclif_core.Flags.string({
|
|
25
|
+
description: "Object ID the comment belongs to",
|
|
26
|
+
required: true
|
|
27
|
+
}),
|
|
28
|
+
status: _oclif_core.Flags.string({
|
|
29
|
+
description: "Comment status (answered, dismissed, or empty to clear)",
|
|
30
|
+
required: false
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
static args = { id: _oclif_core.Args.string({
|
|
34
|
+
description: "Comment ID",
|
|
35
|
+
required: true
|
|
36
|
+
}) };
|
|
37
|
+
async run() {
|
|
38
|
+
const { args, flags } = await this.parse(CommentUpdate);
|
|
39
|
+
this.printWorkspaceHeader();
|
|
40
|
+
const body = {
|
|
41
|
+
object_id: Number(flags["object-id"]),
|
|
42
|
+
comment_id: Number(args.id)
|
|
43
|
+
};
|
|
44
|
+
if (flags.status !== void 0) body.comment_status = flags.status;
|
|
45
|
+
const { data, error } = await this.apiClient.POST("/comment/update", {
|
|
46
|
+
body,
|
|
47
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" }
|
|
48
|
+
});
|
|
49
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
50
|
+
this.log(chalk.default.green("Comment updated"));
|
|
51
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
52
|
+
ok: true,
|
|
53
|
+
data,
|
|
54
|
+
summary: `Comment ${args.id} updated`,
|
|
55
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, {
|
|
56
|
+
resource: "comment",
|
|
57
|
+
id: args.id
|
|
58
|
+
}]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
//#endregion
|
|
63
|
+
module.exports = CommentUpdate;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_api_client = require("../api/client.cjs");
|
|
3
|
+
const require_auth_workspace_config = require("../auth/workspace-config.cjs");
|
|
4
|
+
let _oclif_core = require("@oclif/core");
|
|
5
|
+
let cli_table3 = require("cli-table3");
|
|
6
|
+
cli_table3 = require_runtime.__toESM(cli_table3);
|
|
7
|
+
let chalk = require("chalk");
|
|
8
|
+
chalk = require_runtime.__toESM(chalk);
|
|
9
|
+
//#region src/commands/doctor.ts
|
|
10
|
+
var Doctor = class extends _oclif_core.Command {
|
|
11
|
+
static description = "Check CLI credentials, connectivity, and token validity";
|
|
12
|
+
static examples = ["<%= config.bin %> doctor", "<%= config.bin %> doctor --json"];
|
|
13
|
+
static enableJsonFlag = true;
|
|
14
|
+
static flags = {};
|
|
15
|
+
async run() {
|
|
16
|
+
const checks = [];
|
|
17
|
+
let domain;
|
|
18
|
+
let ws = null;
|
|
19
|
+
try {
|
|
20
|
+
domain = require_auth_workspace_config.getActiveWorkspace();
|
|
21
|
+
if (!domain) checks.push({
|
|
22
|
+
name: "Credentials stored",
|
|
23
|
+
passed: false,
|
|
24
|
+
detail: "No workspace configured"
|
|
25
|
+
});
|
|
26
|
+
else {
|
|
27
|
+
ws = require_auth_workspace_config.getWorkspaceForDomain(domain);
|
|
28
|
+
if (!ws) checks.push({
|
|
29
|
+
name: "Credentials stored",
|
|
30
|
+
passed: false,
|
|
31
|
+
detail: "No workspace configured"
|
|
32
|
+
});
|
|
33
|
+
else if (!ws.bearer_token) checks.push({
|
|
34
|
+
name: "Credentials stored",
|
|
35
|
+
passed: false,
|
|
36
|
+
detail: "No bearer token stored"
|
|
37
|
+
});
|
|
38
|
+
else checks.push({
|
|
39
|
+
name: "Credentials stored",
|
|
40
|
+
passed: true,
|
|
41
|
+
detail: domain
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
} catch {
|
|
45
|
+
checks.push({
|
|
46
|
+
name: "Credentials stored",
|
|
47
|
+
passed: false,
|
|
48
|
+
detail: "Error reading credentials"
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (!checks[0].passed) checks.push({
|
|
52
|
+
name: "Connectivity",
|
|
53
|
+
passed: false,
|
|
54
|
+
detail: "Skipped (no credentials)"
|
|
55
|
+
});
|
|
56
|
+
else {
|
|
57
|
+
const baseUrl = ws.api_base_url.replace(/\/?$/, "/");
|
|
58
|
+
try {
|
|
59
|
+
const resp = await fetch(baseUrl, {
|
|
60
|
+
method: "HEAD",
|
|
61
|
+
signal: AbortSignal.timeout(1e4)
|
|
62
|
+
});
|
|
63
|
+
checks.push({
|
|
64
|
+
name: "Connectivity",
|
|
65
|
+
passed: true,
|
|
66
|
+
detail: `${domain} (HTTP ${resp.status})`
|
|
67
|
+
});
|
|
68
|
+
} catch (err) {
|
|
69
|
+
const message = err instanceof Error ? err.message : "Connection failed";
|
|
70
|
+
checks.push({
|
|
71
|
+
name: "Connectivity",
|
|
72
|
+
passed: false,
|
|
73
|
+
detail: message
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!checks[1].passed) checks.push({
|
|
78
|
+
name: "Token valid",
|
|
79
|
+
passed: false,
|
|
80
|
+
detail: "Skipped (no connectivity)"
|
|
81
|
+
});
|
|
82
|
+
else {
|
|
83
|
+
const { error } = await require_api_client.createApiClient({
|
|
84
|
+
baseUrl: ws.api_base_url.replace(/\/?$/, "/") + "api/2/",
|
|
85
|
+
token: ws.bearer_token
|
|
86
|
+
}).GET("/photo/list", { params: { query: { size: 1 } } });
|
|
87
|
+
if (error) {
|
|
88
|
+
const status = error?.status ?? error?.code ?? "unknown";
|
|
89
|
+
const message = error?.message ?? "Unauthorized";
|
|
90
|
+
checks.push({
|
|
91
|
+
name: "Token valid",
|
|
92
|
+
passed: false,
|
|
93
|
+
detail: `${status} ${message}`
|
|
94
|
+
});
|
|
95
|
+
} else checks.push({
|
|
96
|
+
name: "Token valid",
|
|
97
|
+
passed: true,
|
|
98
|
+
detail: "Authenticated"
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const allPassed = checks.every((c) => c.passed);
|
|
102
|
+
if (this.jsonEnabled()) return {
|
|
103
|
+
ok: allPassed,
|
|
104
|
+
checks
|
|
105
|
+
};
|
|
106
|
+
const table = new cli_table3.default({
|
|
107
|
+
head: [
|
|
108
|
+
"Check",
|
|
109
|
+
"Status",
|
|
110
|
+
"Detail"
|
|
111
|
+
],
|
|
112
|
+
style: { head: ["cyan"] },
|
|
113
|
+
colWidths: [
|
|
114
|
+
25,
|
|
115
|
+
10,
|
|
116
|
+
50
|
|
117
|
+
]
|
|
118
|
+
});
|
|
119
|
+
for (const check of checks) table.push([
|
|
120
|
+
check.name,
|
|
121
|
+
check.passed ? chalk.default.green("✓ OK") : chalk.default.red("✗ FAIL"),
|
|
122
|
+
check.detail
|
|
123
|
+
]);
|
|
124
|
+
this.log(table.toString());
|
|
125
|
+
if (!allPassed) process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
//#endregion
|
|
129
|
+
module.exports = Doctor;
|
|
@@ -0,0 +1,95 @@
|
|
|
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/openupload/list.ts
|
|
9
|
+
/**
|
|
10
|
+
* Open upload list command — lists open upload tokens in the workspace.
|
|
11
|
+
*
|
|
12
|
+
* Threat mitigations:
|
|
13
|
+
* T-08-21: extends AuthenticatedCommand — anonymous mode rejected
|
|
14
|
+
*/
|
|
15
|
+
var OpenuploadList = class OpenuploadList extends require_lib_base_command.AuthenticatedCommand {
|
|
16
|
+
static description = "List open upload tokens in the active workspace";
|
|
17
|
+
static examples = [
|
|
18
|
+
"<%= config.bin %> openupload list",
|
|
19
|
+
"<%= config.bin %> openupload list --token-upload-id 123",
|
|
20
|
+
"<%= config.bin %> openupload list --json"
|
|
21
|
+
];
|
|
22
|
+
static enableJsonFlag = true;
|
|
23
|
+
static flags = {
|
|
24
|
+
...require_lib_base_command.AuthenticatedCommand.baseFlags,
|
|
25
|
+
"token-upload-id": _oclif_core.Flags.string({
|
|
26
|
+
description: "Filter by open upload token upload ID",
|
|
27
|
+
required: false
|
|
28
|
+
}),
|
|
29
|
+
token: _oclif_core.Flags.string({
|
|
30
|
+
description: "Filter by open upload token",
|
|
31
|
+
required: false
|
|
32
|
+
}),
|
|
33
|
+
app: _oclif_core.Flags.boolean({
|
|
34
|
+
description: "Filter by app open uploads",
|
|
35
|
+
allowNo: false,
|
|
36
|
+
required: false
|
|
37
|
+
}),
|
|
38
|
+
"app-p": _oclif_core.Flags.string({
|
|
39
|
+
hidden: true,
|
|
40
|
+
required: false
|
|
41
|
+
})
|
|
42
|
+
};
|
|
43
|
+
static agentMetadata = {
|
|
44
|
+
api_endpoint: "GET /openupload/list",
|
|
45
|
+
auth_scope: "read",
|
|
46
|
+
output_shape: {
|
|
47
|
+
type: "table",
|
|
48
|
+
columns: [
|
|
49
|
+
"ID",
|
|
50
|
+
"Name",
|
|
51
|
+
"Token",
|
|
52
|
+
"Public"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
side_effects: "none"
|
|
56
|
+
};
|
|
57
|
+
async run() {
|
|
58
|
+
const { flags } = await this.parse(OpenuploadList);
|
|
59
|
+
this.printWorkspaceHeader();
|
|
60
|
+
const appVal = parseBoolParam(flags.app, flags["app-p"]);
|
|
61
|
+
const { data, error } = await this.apiClient.GET("/openupload/list", { params: { query: {
|
|
62
|
+
token_upload_id: flags["token-upload-id"] !== void 0 ? Number(flags["token-upload-id"]) : void 0,
|
|
63
|
+
token: flags.token,
|
|
64
|
+
app_p: appVal
|
|
65
|
+
} } });
|
|
66
|
+
if (error) this.error(require_lib_term_map.applyCliTerms(formatApiError(error)), { exit: 1 });
|
|
67
|
+
const resp = data;
|
|
68
|
+
const rows = Array.isArray(resp?.data) ? resp.data : resp?.data ? [resp.data] : [];
|
|
69
|
+
if (this.jsonEnabled()) return require_lib_output.formatJsonOutput({
|
|
70
|
+
ok: true,
|
|
71
|
+
data: rows,
|
|
72
|
+
summary: `${rows.length} open upload(s)`,
|
|
73
|
+
breadcrumbs: [{ domain: this.activeWorkspace.domain }, { resource: "openupload" }]
|
|
74
|
+
});
|
|
75
|
+
if (rows.length === 0) {
|
|
76
|
+
this.log("No open uploads found.");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const table = require_lib_output.renderTable([
|
|
80
|
+
"ID",
|
|
81
|
+
"Name",
|
|
82
|
+
"Token",
|
|
83
|
+
"Public"
|
|
84
|
+
], rows.map((r) => [
|
|
85
|
+
String(r.token_upload_id ?? ""),
|
|
86
|
+
String(r.name ?? ""),
|
|
87
|
+
r.token ? String(r.token).slice(0, 8) + "…" : "",
|
|
88
|
+
String(r.public_p ?? "")
|
|
89
|
+
]));
|
|
90
|
+
this.log(table.toString());
|
|
91
|
+
this.log(chalk.default.dim(`${rows.length} open upload(s)`));
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
//#endregion
|
|
95
|
+
module.exports = OpenuploadList;
|