@doist/comms-cli 0.0.1 → 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/CHANGELOG.md +8 -0
- package/README.md +165 -29
- package/dist/commands/account/index.d.ts +3 -0
- package/dist/commands/account/index.d.ts.map +1 -0
- package/dist/commands/account/index.js +104 -0
- package/dist/commands/account/index.js.map +1 -0
- package/dist/commands/auth/helpers.d.ts +22 -0
- package/dist/commands/auth/helpers.d.ts.map +1 -0
- package/dist/commands/auth/helpers.js +29 -0
- package/dist/commands/auth/helpers.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +32 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login.d.ts +4 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +29 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +11 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +16 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/status.d.ts +16 -0
- package/dist/commands/auth/status.d.ts.map +1 -0
- package/dist/commands/auth/status.js +102 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/auth/store-wrap.d.ts +4 -0
- package/dist/commands/auth/store-wrap.d.ts.map +1 -0
- package/dist/commands/auth/store-wrap.js +24 -0
- package/dist/commands/auth/store-wrap.js.map +1 -0
- package/dist/commands/auth/token.d.ts +2 -0
- package/dist/commands/auth/token.d.ts.map +1 -0
- package/dist/commands/auth/token.js +56 -0
- package/dist/commands/auth/token.js.map +1 -0
- package/dist/commands/changelog.d.ts +3 -0
- package/dist/commands/changelog.d.ts.map +1 -0
- package/dist/commands/changelog.js +16 -0
- package/dist/commands/changelog.js.map +1 -0
- package/dist/commands/channel/create.d.ts +11 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +35 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/helpers.d.ts +9 -0
- package/dist/commands/channel/helpers.d.ts.map +1 -0
- package/dist/commands/channel/helpers.js +51 -0
- package/dist/commands/channel/helpers.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +104 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/list.d.ts +8 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +144 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/threads.d.ts +11 -0
- package/dist/commands/channel/threads.d.ts.map +1 -0
- package/dist/commands/channel/threads.js +100 -0
- package/dist/commands/channel/threads.js.map +1 -0
- package/dist/commands/channel/update.d.ts +12 -0
- package/dist/commands/channel/update.d.ts.map +1 -0
- package/dist/commands/channel/update.js +84 -0
- package/dist/commands/channel/update.js.map +1 -0
- package/dist/commands/comment/delete.d.ts +5 -0
- package/dist/commands/comment/delete.d.ts.map +1 -0
- package/dist/commands/comment/delete.js +33 -0
- package/dist/commands/comment/delete.js.map +1 -0
- package/dist/commands/comment/index.d.ts +3 -0
- package/dist/commands/comment/index.d.ts.map +1 -0
- package/dist/commands/comment/index.js +49 -0
- package/dist/commands/comment/index.js.map +1 -0
- package/dist/commands/comment/update.d.ts +5 -0
- package/dist/commands/comment/update.d.ts.map +1 -0
- package/dist/commands/comment/update.js +37 -0
- package/dist/commands/comment/update.js.map +1 -0
- package/dist/commands/comment/view.d.ts +3 -0
- package/dist/commands/comment/view.d.ts.map +1 -0
- package/dist/commands/comment/view.js +31 -0
- package/dist/commands/comment/view.js.map +1 -0
- package/dist/commands/completion/helpers.d.ts +14 -0
- package/dist/commands/completion/helpers.d.ts.map +1 -0
- package/dist/commands/completion/helpers.js +37 -0
- package/dist/commands/completion/helpers.js.map +1 -0
- package/dist/commands/completion/index.d.ts +3 -0
- package/dist/commands/completion/index.d.ts.map +1 -0
- package/dist/commands/completion/index.js +22 -0
- package/dist/commands/completion/index.js.map +1 -0
- package/dist/commands/completion/install.d.ts +2 -0
- package/dist/commands/completion/install.d.ts.map +1 -0
- package/dist/commands/completion/install.js +19 -0
- package/dist/commands/completion/install.js.map +1 -0
- package/dist/commands/completion/server.d.ts +3 -0
- package/dist/commands/completion/server.d.ts.map +1 -0
- package/dist/commands/completion/server.js +35 -0
- package/dist/commands/completion/server.js.map +1 -0
- package/dist/commands/completion/uninstall.d.ts +2 -0
- package/dist/commands/completion/uninstall.d.ts.map +1 -0
- package/dist/commands/completion/uninstall.js +19 -0
- package/dist/commands/completion/uninstall.js.map +1 -0
- package/dist/commands/config/index.d.ts +3 -0
- package/dist/commands/config/index.d.ts.map +1 -0
- package/dist/commands/config/index.js +29 -0
- package/dist/commands/config/index.js.map +1 -0
- package/dist/commands/config/set.d.ts +3 -0
- package/dist/commands/config/set.d.ts.map +1 -0
- package/dist/commands/config/set.js +41 -0
- package/dist/commands/config/set.js.map +1 -0
- package/dist/commands/config/view.d.ts +6 -0
- package/dist/commands/config/view.d.ts.map +1 -0
- package/dist/commands/config/view.js +121 -0
- package/dist/commands/config/view.js.map +1 -0
- package/dist/commands/conversation/done.d.ts +3 -0
- package/dist/commands/conversation/done.d.ts.map +1 -0
- package/dist/commands/conversation/done.js +23 -0
- package/dist/commands/conversation/done.js.map +1 -0
- package/dist/commands/conversation/helpers.d.ts +28 -0
- package/dist/commands/conversation/helpers.d.ts.map +1 -0
- package/dist/commands/conversation/helpers.js +119 -0
- package/dist/commands/conversation/helpers.js.map +1 -0
- package/dist/commands/conversation/index.d.ts +3 -0
- package/dist/commands/conversation/index.d.ts.map +1 -0
- package/dist/commands/conversation/index.js +107 -0
- package/dist/commands/conversation/index.js.map +1 -0
- package/dist/commands/conversation/mute.d.ts +3 -0
- package/dist/commands/conversation/mute.d.ts.map +1 -0
- package/dist/commands/conversation/mute.js +30 -0
- package/dist/commands/conversation/mute.js.map +1 -0
- package/dist/commands/conversation/reply.d.ts +3 -0
- package/dist/commands/conversation/reply.d.ts.map +1 -0
- package/dist/commands/conversation/reply.js +37 -0
- package/dist/commands/conversation/reply.js.map +1 -0
- package/dist/commands/conversation/unmute.d.ts +3 -0
- package/dist/commands/conversation/unmute.d.ts.map +1 -0
- package/dist/commands/conversation/unmute.js +28 -0
- package/dist/commands/conversation/unmute.js.map +1 -0
- package/dist/commands/conversation/unread.d.ts +3 -0
- package/dist/commands/conversation/unread.d.ts.map +1 -0
- package/dist/commands/conversation/unread.js +56 -0
- package/dist/commands/conversation/unread.js.map +1 -0
- package/dist/commands/conversation/view.d.ts +3 -0
- package/dist/commands/conversation/view.d.ts.map +1 -0
- package/dist/commands/conversation/view.js +77 -0
- package/dist/commands/conversation/view.js.map +1 -0
- package/dist/commands/conversation/with.d.ts +3 -0
- package/dist/commands/conversation/with.d.ts.map +1 -0
- package/dist/commands/conversation/with.js +48 -0
- package/dist/commands/conversation/with.js.map +1 -0
- package/dist/commands/doctor.d.ts +9 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +325 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/groups/create.d.ts +8 -0
- package/dist/commands/groups/create.d.ts.map +1 -0
- package/dist/commands/groups/create.js +27 -0
- package/dist/commands/groups/create.js.map +1 -0
- package/dist/commands/groups/delete.d.ts +7 -0
- package/dist/commands/groups/delete.d.ts.map +1 -0
- package/dist/commands/groups/delete.js +30 -0
- package/dist/commands/groups/delete.js.map +1 -0
- package/dist/commands/groups/index.d.ts +3 -0
- package/dist/commands/groups/index.d.ts.map +1 -0
- package/dist/commands/groups/index.js +98 -0
- package/dist/commands/groups/index.js.map +1 -0
- package/dist/commands/groups/list.d.ts +7 -0
- package/dist/commands/groups/list.d.ts.map +1 -0
- package/dist/commands/groups/list.js +42 -0
- package/dist/commands/groups/list.js.map +1 -0
- package/dist/commands/groups/members.d.ts +4 -0
- package/dist/commands/groups/members.d.ts.map +1 -0
- package/dist/commands/groups/members.js +90 -0
- package/dist/commands/groups/members.js.map +1 -0
- package/dist/commands/groups/rename.d.ts +3 -0
- package/dist/commands/groups/rename.d.ts.map +1 -0
- package/dist/commands/groups/rename.js +28 -0
- package/dist/commands/groups/rename.js.map +1 -0
- package/dist/commands/groups/view.d.ts +7 -0
- package/dist/commands/groups/view.d.ts.map +1 -0
- package/dist/commands/groups/view.js +52 -0
- package/dist/commands/groups/view.js.map +1 -0
- package/dist/commands/inbox.d.ts +3 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +147 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/mentions.d.ts +3 -0
- package/dist/commands/mentions.d.ts.map +1 -0
- package/dist/commands/mentions.js +23 -0
- package/dist/commands/mentions.js.map +1 -0
- package/dist/commands/msg/delete.d.ts +5 -0
- package/dist/commands/msg/delete.d.ts.map +1 -0
- package/dist/commands/msg/delete.js +31 -0
- package/dist/commands/msg/delete.js.map +1 -0
- package/dist/commands/msg/index.d.ts +3 -0
- package/dist/commands/msg/index.d.ts.map +1 -0
- package/dist/commands/msg/index.js +47 -0
- package/dist/commands/msg/index.js.map +1 -0
- package/dist/commands/msg/update.d.ts +5 -0
- package/dist/commands/msg/update.d.ts.map +1 -0
- package/dist/commands/msg/update.js +37 -0
- package/dist/commands/msg/update.js.map +1 -0
- package/dist/commands/msg/view.d.ts +3 -0
- package/dist/commands/msg/view.d.ts.map +1 -0
- package/dist/commands/msg/view.js +31 -0
- package/dist/commands/msg/view.js.map +1 -0
- package/dist/commands/react.d.ts +3 -0
- package/dist/commands/react.d.ts.map +1 -0
- package/dist/commands/react.js +149 -0
- package/dist/commands/react.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +30 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/skill/index.d.ts +3 -0
- package/dist/commands/skill/index.d.ts.map +1 -0
- package/dist/commands/skill/index.js +29 -0
- package/dist/commands/skill/index.js.map +1 -0
- package/dist/commands/skill/install.d.ts +3 -0
- package/dist/commands/skill/install.d.ts.map +1 -0
- package/dist/commands/skill/install.js +16 -0
- package/dist/commands/skill/install.js.map +1 -0
- package/dist/commands/skill/list.d.ts +6 -0
- package/dist/commands/skill/list.d.ts.map +1 -0
- package/dist/commands/skill/list.js +22 -0
- package/dist/commands/skill/list.js.map +1 -0
- package/dist/commands/skill/uninstall.d.ts +3 -0
- package/dist/commands/skill/uninstall.d.ts.map +1 -0
- package/dist/commands/skill/uninstall.js +15 -0
- package/dist/commands/skill/uninstall.js.map +1 -0
- package/dist/commands/skill/update.d.ts +3 -0
- package/dist/commands/skill/update.d.ts.map +1 -0
- package/dist/commands/skill/update.js +37 -0
- package/dist/commands/skill/update.js.map +1 -0
- package/dist/commands/thread/create.d.ts +8 -0
- package/dist/commands/thread/create.d.ts.map +1 -0
- package/dist/commands/thread/create.js +70 -0
- package/dist/commands/thread/create.js.map +1 -0
- package/dist/commands/thread/delete.d.ts +7 -0
- package/dist/commands/thread/delete.d.ts.map +1 -0
- package/dist/commands/thread/delete.js +38 -0
- package/dist/commands/thread/delete.js.map +1 -0
- package/dist/commands/thread/helpers.d.ts +24 -0
- package/dist/commands/thread/helpers.d.ts.map +1 -0
- package/dist/commands/thread/helpers.js +45 -0
- package/dist/commands/thread/helpers.js.map +1 -0
- package/dist/commands/thread/index.d.ts +3 -0
- package/dist/commands/thread/index.d.ts.map +1 -0
- package/dist/commands/thread/index.js +134 -0
- package/dist/commands/thread/index.js.map +1 -0
- package/dist/commands/thread/mutate.d.ts +5 -0
- package/dist/commands/thread/mutate.d.ts.map +1 -0
- package/dist/commands/thread/mutate.js +23 -0
- package/dist/commands/thread/mutate.js.map +1 -0
- package/dist/commands/thread/mute.d.ts +8 -0
- package/dist/commands/thread/mute.d.ts.map +1 -0
- package/dist/commands/thread/mute.js +63 -0
- package/dist/commands/thread/mute.js.map +1 -0
- package/dist/commands/thread/rename.d.ts +3 -0
- package/dist/commands/thread/rename.d.ts.map +1 -0
- package/dist/commands/thread/rename.js +29 -0
- package/dist/commands/thread/rename.js.map +1 -0
- package/dist/commands/thread/reply.d.ts +9 -0
- package/dist/commands/thread/reply.d.ts.map +1 -0
- package/dist/commands/thread/reply.js +85 -0
- package/dist/commands/thread/reply.js.map +1 -0
- package/dist/commands/thread/update.d.ts +5 -0
- package/dist/commands/thread/update.d.ts.map +1 -0
- package/dist/commands/thread/update.js +45 -0
- package/dist/commands/thread/update.js.map +1 -0
- package/dist/commands/thread/view.d.ts +9 -0
- package/dist/commands/thread/view.d.ts.map +1 -0
- package/dist/commands/thread/view.js +171 -0
- package/dist/commands/thread/view.js.map +1 -0
- package/dist/commands/update/index.d.ts +3 -0
- package/dist/commands/update/index.d.ts.map +1 -0
- package/dist/commands/update/index.js +14 -0
- package/dist/commands/update/index.js.map +1 -0
- package/dist/commands/user.d.ts +3 -0
- package/dist/commands/user.d.ts.map +1 -0
- package/dist/commands/user.js +90 -0
- package/dist/commands/user.js.map +1 -0
- package/dist/commands/view.d.ts +3 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +68 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/workspace.d.ts +3 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +56 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +190 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +35 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +306 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth-constants.d.ts +3 -0
- package/dist/lib/auth-constants.d.ts.map +1 -0
- package/dist/lib/auth-constants.js +3 -0
- package/dist/lib/auth-constants.js.map +1 -0
- package/dist/lib/auth-pages.d.ts +3 -0
- package/dist/lib/auth-pages.d.ts.map +1 -0
- package/dist/lib/auth-pages.js +707 -0
- package/dist/lib/auth-pages.js.map +1 -0
- package/dist/lib/auth-provider.d.ts +74 -0
- package/dist/lib/auth-provider.d.ts.map +1 -0
- package/dist/lib/auth-provider.js +238 -0
- package/dist/lib/auth-provider.js.map +1 -0
- package/dist/lib/auth.d.ts +39 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +57 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/comms-account.d.ts +22 -0
- package/dist/lib/comms-account.d.ts.map +1 -0
- package/dist/lib/comms-account.js +23 -0
- package/dist/lib/comms-account.js.map +1 -0
- package/dist/lib/completion.d.ts +31 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +173 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/config.d.ts +61 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +184 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dates.d.ts +3 -0
- package/dist/lib/dates.d.ts.map +1 -0
- package/dist/lib/dates.js +44 -0
- package/dist/lib/dates.js.map +1 -0
- package/dist/lib/errors.d.ts +28 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +34 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/global-args.d.ts +52 -0
- package/dist/lib/global-args.d.ts.map +1 -0
- package/dist/lib/global-args.js +124 -0
- package/dist/lib/global-args.js.map +1 -0
- package/dist/lib/input.d.ts +3 -0
- package/dist/lib/input.d.ts.map +1 -0
- package/dist/lib/input.js +80 -0
- package/dist/lib/input.js.map +1 -0
- package/dist/lib/markdown.d.ts +3 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +15 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/options.d.ts +16 -0
- package/dist/lib/options.d.ts.map +1 -0
- package/dist/lib/options.js +2 -0
- package/dist/lib/options.js.map +1 -0
- package/dist/lib/output.d.ts +41 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +184 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/permissions.d.ts +4 -0
- package/dist/lib/permissions.d.ts.map +1 -0
- package/dist/lib/permissions.js +41 -0
- package/dist/lib/permissions.js.map +1 -0
- package/dist/lib/progress.d.ts +29 -0
- package/dist/lib/progress.d.ts.map +1 -0
- package/dist/lib/progress.js +86 -0
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/public-channels.d.ts +4 -0
- package/dist/lib/public-channels.d.ts.map +1 -0
- package/dist/lib/public-channels.js +32 -0
- package/dist/lib/public-channels.js.map +1 -0
- package/dist/lib/refs.d.ts +62 -0
- package/dist/lib/refs.d.ts.map +1 -0
- package/dist/lib/refs.js +378 -0
- package/dist/lib/refs.js.map +1 -0
- package/dist/lib/search-api.d.ts +25 -0
- package/dist/lib/search-api.d.ts.map +1 -0
- package/dist/lib/search-api.js +93 -0
- package/dist/lib/search-api.js.map +1 -0
- package/dist/lib/search-helpers.d.ts +32 -0
- package/dist/lib/search-helpers.d.ts.map +1 -0
- package/dist/lib/search-helpers.js +183 -0
- package/dist/lib/search-helpers.js.map +1 -0
- package/dist/lib/skills/content.d.ts +8 -0
- package/dist/lib/skills/content.d.ts.map +1 -0
- package/dist/lib/skills/content.js +410 -0
- package/dist/lib/skills/content.js.map +1 -0
- package/dist/lib/skills/create-installer.d.ts +9 -0
- package/dist/lib/skills/create-installer.d.ts.map +1 -0
- package/dist/lib/skills/create-installer.js +65 -0
- package/dist/lib/skills/create-installer.js.map +1 -0
- package/dist/lib/skills/index.d.ts +7 -0
- package/dist/lib/skills/index.d.ts.map +1 -0
- package/dist/lib/skills/index.js +54 -0
- package/dist/lib/skills/index.js.map +1 -0
- package/dist/lib/skills/types.d.ts +30 -0
- package/dist/lib/skills/types.d.ts.map +1 -0
- package/dist/lib/skills/types.js +2 -0
- package/dist/lib/skills/types.js.map +1 -0
- package/dist/lib/skills/update-installed.d.ts +9 -0
- package/dist/lib/skills/update-installed.d.ts.map +1 -0
- package/dist/lib/skills/update-installed.js +20 -0
- package/dist/lib/skills/update-installed.js.map +1 -0
- package/dist/lib/spinner.d.ts +3 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +10 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/threads.d.ts +4 -0
- package/dist/lib/threads.d.ts.map +1 -0
- package/dist/lib/threads.js +6 -0
- package/dist/lib/threads.js.map +1 -0
- package/dist/lib/update.d.ts +13 -0
- package/dist/lib/update.d.ts.map +1 -0
- package/dist/lib/update.js +23 -0
- package/dist/lib/update.js.map +1 -0
- package/dist/lib/user-records.d.ts +15 -0
- package/dist/lib/user-records.d.ts.map +1 -0
- package/dist/lib/user-records.js +84 -0
- package/dist/lib/user-records.js.map +1 -0
- package/dist/lib/validation.d.ts +2 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +7 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/postinstall.d.ts +2 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +4 -0
- package/dist/postinstall.js.map +1 -0
- package/package.json +77 -8
- package/scripts/check-skill-sync.js +40 -0
- package/scripts/postinstall.js +12 -0
- package/scripts/sync-skill.js +29 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { attachStatusCommand } from '@doist/cli-core/auth';
|
|
2
|
+
import { CommsRequestError } from '@doist/comms-sdk';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { createWrappedCommsClient } from '../../lib/api.js';
|
|
5
|
+
import { getAuthMetadata, NoTokenError } from '../../lib/auth.js';
|
|
6
|
+
import { CliError } from '../../lib/errors.js';
|
|
7
|
+
function formatAuthMode(authMode, authScope) {
|
|
8
|
+
if (authMode === 'read-only') {
|
|
9
|
+
return `read-only (scope: ${authScope ?? 'unknown'})`;
|
|
10
|
+
}
|
|
11
|
+
if (authMode === 'read-write') {
|
|
12
|
+
return 'read-write';
|
|
13
|
+
}
|
|
14
|
+
return 'unknown (manual token or env var; assuming write access)';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Fetch the live session user (via the snapshot token) and the local auth
|
|
18
|
+
* metadata concurrently — the API call dominates and the metadata read is
|
|
19
|
+
* independent. 401-translation lives here so both the snapshot path and any
|
|
20
|
+
* future callers emit the same `NO_TOKEN` envelope when the token is
|
|
21
|
+
* rejected by the API.
|
|
22
|
+
*/
|
|
23
|
+
async function gatherStatusData(token) {
|
|
24
|
+
try {
|
|
25
|
+
const [user, metadata] = await Promise.all([
|
|
26
|
+
createWrappedCommsClient(token).users.getSessionUser(),
|
|
27
|
+
getAuthMetadata(),
|
|
28
|
+
]);
|
|
29
|
+
return { user, metadata };
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (error instanceof CommsRequestError && error.httpStatusCode === 401) {
|
|
33
|
+
throw new CliError('NO_TOKEN', 'Not authenticated (token expired or invalid)', [
|
|
34
|
+
'Run `tdc auth login` to re-authenticate',
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function buildStatusText({ user, metadata }) {
|
|
41
|
+
const modeLabel = formatAuthMode(metadata.authMode, metadata.authScope);
|
|
42
|
+
return [
|
|
43
|
+
`${chalk.green('✓')} Authenticated`,
|
|
44
|
+
` Email: ${user.email}`,
|
|
45
|
+
` Name: ${user.fullName}`,
|
|
46
|
+
` Mode: ${modeLabel}`,
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
function buildStatusJson({ user, metadata }) {
|
|
50
|
+
return {
|
|
51
|
+
id: user.id,
|
|
52
|
+
email: user.email,
|
|
53
|
+
name: user.fullName,
|
|
54
|
+
authMode: metadata.authMode,
|
|
55
|
+
authScope: metadata.authScope,
|
|
56
|
+
source: metadata.source,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Attach `tdc auth status` via cli-core's generic `attachStatusCommand`.
|
|
61
|
+
*
|
|
62
|
+
* `CommsTokenStore.active()` returns a snapshot whenever a token resolves
|
|
63
|
+
* (per the adapter's documented contract — see `auth-provider.ts`), so
|
|
64
|
+
* `fetchLive` covers every token-present path: secure-store, plaintext
|
|
65
|
+
* config fallback, env-token mode, and manual `tdc auth token`. The
|
|
66
|
+
* snapshot's token is reused inside `gatherStatusData` so credentials are
|
|
67
|
+
* read once per invocation. `onNotAuthenticated` only fires when nothing
|
|
68
|
+
* is stored — it throws `NoTokenError` so the standard CliError envelope
|
|
69
|
+
* reaches the operator unchanged.
|
|
70
|
+
*/
|
|
71
|
+
export function attachCommsStatusCommand(auth, store) {
|
|
72
|
+
let data = null;
|
|
73
|
+
return attachStatusCommand(auth, {
|
|
74
|
+
store,
|
|
75
|
+
description: 'Show current authentication status',
|
|
76
|
+
fetchLive: async ({ token }) => {
|
|
77
|
+
data = await gatherStatusData(token);
|
|
78
|
+
return {
|
|
79
|
+
id: String(data.user.id),
|
|
80
|
+
label: data.user.fullName,
|
|
81
|
+
authMode: data.metadata.authMode,
|
|
82
|
+
authScope: data.metadata.authScope ?? '',
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
renderText: () => {
|
|
86
|
+
if (!data) {
|
|
87
|
+
throw new CliError('INTERNAL_ERROR', 'status renderText called before fetchLive');
|
|
88
|
+
}
|
|
89
|
+
return buildStatusText(data);
|
|
90
|
+
},
|
|
91
|
+
renderJson: () => {
|
|
92
|
+
if (!data) {
|
|
93
|
+
throw new CliError('INTERNAL_ERROR', 'status renderJson called before fetchLive');
|
|
94
|
+
}
|
|
95
|
+
return buildStatusJson(data);
|
|
96
|
+
},
|
|
97
|
+
onNotAuthenticated: () => {
|
|
98
|
+
throw new NoTokenError();
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AccountRef } from '@doist/cli-core/auth';
|
|
2
|
+
import { type CommsTokenStore } from '../../lib/auth-provider.js';
|
|
3
|
+
export declare function withUserRefAware(store: CommsTokenStore, requestedRef: AccountRef | undefined): CommsTokenStore;
|
|
4
|
+
//# sourceMappingURL=store-wrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-wrap.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/store-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAYrF,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,UAAU,GAAG,SAAS,GACrC,eAAe,CAWjB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { findAccountInStore } from '../../lib/auth-provider.js';
|
|
2
|
+
// Bridge the global `tdc --user <ref>` (stripped by `src/index.ts`) into
|
|
3
|
+
// cli-core's attachers, which only see per-command `--user`. Explicit ref
|
|
4
|
+
// passed by commander wins over the captured global ref.
|
|
5
|
+
//
|
|
6
|
+
// `active()` passes the substituted ref straight through — cli-core's
|
|
7
|
+
// `KeyringTokenStore.active` returns `null` on a miss, which the attachers
|
|
8
|
+
// surface via `onNotAuthenticated` (status / token view). `clear()` does the
|
|
9
|
+
// extra existence check first via `findAccountInStore`, because cli-core's
|
|
10
|
+
// `KeyringTokenStore.clear` is a silent no-op on a non-matching ref and
|
|
11
|
+
// would otherwise let `tdc --user <wrong> auth logout` print `✓ Logged out`.
|
|
12
|
+
export function withUserRefAware(store, requestedRef) {
|
|
13
|
+
return Object.assign(Object.create(store), {
|
|
14
|
+
active: (ref) => store.active(ref ?? requestedRef),
|
|
15
|
+
clear: async (ref) => {
|
|
16
|
+
if (ref === undefined && requestedRef !== undefined) {
|
|
17
|
+
const account = await findAccountInStore(store, requestedRef);
|
|
18
|
+
return store.clear(account.id);
|
|
19
|
+
}
|
|
20
|
+
return store.clear(ref);
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=store-wrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-wrap.js","sourceRoot":"","sources":["../../../src/commands/auth/store-wrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAwB,MAAM,4BAA4B,CAAA;AAErF,yEAAyE;AACzE,0EAA0E;AAC1E,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAC5B,KAAsB,EACtB,YAAoC;IAEpC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAoB,EAAE;QAC1D,MAAM,EAAE,CAAC,GAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC;QAC/D,KAAK,EAAE,KAAK,EAAE,GAAgB,EAAE,EAAE;YAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;gBAC7D,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YACD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;KACJ,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAiCA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BpD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { createCommsTokenStore, MANUAL_TOKEN_ACCOUNT } from '../../lib/auth-provider.js';
|
|
4
|
+
import { CliError } from '../../lib/errors.js';
|
|
5
|
+
import { isNonInteractive } from '../../lib/global-args.js';
|
|
6
|
+
import { logTokenStorageResult } from './helpers.js';
|
|
7
|
+
function promptHiddenInput(prompt) {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
const rl = createInterface({
|
|
10
|
+
input: process.stdin,
|
|
11
|
+
output: process.stdout,
|
|
12
|
+
});
|
|
13
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private readline property
|
|
14
|
+
const origWrite = rl._writeToOutput;
|
|
15
|
+
rl._writeToOutput = (str) => {
|
|
16
|
+
if (str.includes(prompt)) {
|
|
17
|
+
origWrite.call(rl, prompt);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
rl.question(prompt, (answer) => {
|
|
21
|
+
rl.close();
|
|
22
|
+
process.stdout.write('\n');
|
|
23
|
+
resolve(answer);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Tokens are read interactively or from the COMMS_API_TOKEN env var only —
|
|
28
|
+
// never accepted as a CLI argument. Passing secrets on the command line
|
|
29
|
+
// would leak them via process lists and shell history (Doist Secrets
|
|
30
|
+
// Management Standard).
|
|
31
|
+
export async function loginWithToken() {
|
|
32
|
+
if (isNonInteractive()) {
|
|
33
|
+
throw new CliError('NO_TOKEN', 'Cannot prompt for token in non-interactive mode. Set the COMMS_API_TOKEN environment variable instead.');
|
|
34
|
+
}
|
|
35
|
+
const token = await promptHiddenInput('API token: ');
|
|
36
|
+
const trimmed = token.trim();
|
|
37
|
+
if (!trimmed) {
|
|
38
|
+
throw new CliError('NO_TOKEN', 'No token provided', [
|
|
39
|
+
'Run: tdc auth token (interactive prompt)',
|
|
40
|
+
'Or set COMMS_API_TOKEN environment variable',
|
|
41
|
+
'Or use OAuth: tdc auth login',
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
// Manual token entry has no identity (no API call to resolve the user).
|
|
45
|
+
// Persist the empty-id account; `UserRecordStore.upsert` writes
|
|
46
|
+
// `authUserId: undefined` for it and the synthesised record is what later
|
|
47
|
+
// `active()` / `list()` reads will return.
|
|
48
|
+
const store = createCommsTokenStore();
|
|
49
|
+
await store.set(MANUAL_TOKEN_ACCOUNT, trimmed);
|
|
50
|
+
console.log(chalk.green('✓'), 'API token saved successfully!');
|
|
51
|
+
const result = store.getLastStorageResult();
|
|
52
|
+
if (result) {
|
|
53
|
+
logTokenStorageResult(result, 'Token stored securely in the system credential manager');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/commands/auth/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,SAAS,iBAAiB,CAAC,MAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,eAAe,CAAC;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CAAA;QACF,kFAAkF;QAClF,MAAM,SAAS,GAAI,EAAU,CAAC,cAAc,CAE3C;QAAC,EAAU,CAAC,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;YAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YAC9B,CAAC;QACL,CAAC,CAAA;QACD,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC3B,EAAE,CAAC,KAAK,EAAE,CAAA;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC1B,OAAO,CAAC,MAAM,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,qEAAqE;AACrE,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CACd,UAAU,EACV,wGAAwG,CAC3G,CAAA;IACL,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,mBAAmB,EAAE;YAChD,0CAA0C;YAC1C,6CAA6C;YAC7C,8BAA8B;SACjC,CAAC,CAAA;IACN,CAAC;IACD,wEAAwE;IACxE,gEAAgE;IAChE,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,MAAM,KAAK,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAA;IAC3C,IAAI,MAAM,EAAE,CAAC;QACT,qBAAqB,CAAC,MAAM,EAAE,wDAAwD,CAAC,CAAA;IAC3F,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS/D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { registerChangelogCommand as registerCoreChangelogCommand } from '@doist/cli-core/commands';
|
|
4
|
+
import packageJson from '../../package.json' with { type: 'json' };
|
|
5
|
+
const CHANGELOG_PATH = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'CHANGELOG.md');
|
|
6
|
+
export function registerChangelogCommand(program) {
|
|
7
|
+
registerCoreChangelogCommand(program, {
|
|
8
|
+
path: CHANGELOG_PATH,
|
|
9
|
+
repoUrl: 'https://github.com/Doist/comms-cli',
|
|
10
|
+
version: packageJson.version,
|
|
11
|
+
headingLevel: 'flexible',
|
|
12
|
+
continuationIndent: true,
|
|
13
|
+
filterEmptyVersions: true,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=changelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/commands/changelog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AAEnG,OAAO,WAAW,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAElE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;AAEhG,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACrD,4BAA4B,CAAC,OAAO,EAAE;QAClC,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,YAAY,EAAE,UAAU;QACxB,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;KAC5B,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MutationOptions } from '../../lib/options.js';
|
|
2
|
+
type CreateChannelOptions = MutationOptions & {
|
|
3
|
+
workspace?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
users?: string;
|
|
6
|
+
public?: boolean;
|
|
7
|
+
private?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function createChannel(name: string, options: CreateChannelOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAS3D,KAAK,oBAAoB,GAAG,eAAe,GAAG;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC9F"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getCommsClient } from '../../lib/api.js';
|
|
2
|
+
import { formatJson, printDryRun } from '../../lib/output.js';
|
|
3
|
+
import { resolveUserRefs } from '../../lib/refs.js';
|
|
4
|
+
import { resolveChannelWorkspaceId, resolveVisibilityOption, validateChannelName, } from './helpers.js';
|
|
5
|
+
export async function createChannel(name, options) {
|
|
6
|
+
validateChannelName(name);
|
|
7
|
+
const visibility = resolveVisibilityOption(options);
|
|
8
|
+
const workspaceId = await resolveChannelWorkspaceId(options.workspace);
|
|
9
|
+
const userIds = options.users ? await resolveUserRefs(options.users, workspaceId) : undefined;
|
|
10
|
+
const args = {
|
|
11
|
+
workspaceId,
|
|
12
|
+
name,
|
|
13
|
+
...(options.description !== undefined ? { description: options.description } : {}),
|
|
14
|
+
...(userIds !== undefined ? { userIds } : {}),
|
|
15
|
+
...(visibility !== undefined ? { public: visibility } : {}),
|
|
16
|
+
};
|
|
17
|
+
if (options.dryRun) {
|
|
18
|
+
printDryRun('create channel', {
|
|
19
|
+
Workspace: String(workspaceId),
|
|
20
|
+
Name: name,
|
|
21
|
+
Description: options.description,
|
|
22
|
+
Visibility: visibility === undefined ? undefined : visibility ? 'public' : 'private',
|
|
23
|
+
Users: userIds && userIds.length > 0 ? userIds.join(', ') : undefined,
|
|
24
|
+
});
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const client = await getCommsClient();
|
|
28
|
+
const channel = await client.channels.createChannel(args);
|
|
29
|
+
if (options.json) {
|
|
30
|
+
console.log(formatJson(channel, 'channel', options.full));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log(`Channel "${channel.name}" (id:${channel.id}) created.`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/channel/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EACH,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,GACtB,MAAM,cAAc,CAAA;AAUrB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,OAA6B;IAC3E,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAEnD,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7F,MAAM,IAAI,GAAsB;QAC5B,WAAW;QACX,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,gBAAgB,EAAE;YAC1B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;YAC9B,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACpF,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACxE,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAEzD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACzD,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,SAAS,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function validateChannelName(name: string): void;
|
|
2
|
+
export declare function resolveVisibilityOption(options: {
|
|
3
|
+
public?: boolean;
|
|
4
|
+
private?: boolean;
|
|
5
|
+
}): boolean | undefined;
|
|
6
|
+
export declare function resolveChannelWorkspaceId(workspaceRef: string | undefined): Promise<number>;
|
|
7
|
+
export declare function encodeCursor(offset: number): string;
|
|
8
|
+
export declare function decodeCursor(cursor: string | undefined): number;
|
|
9
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/helpers.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQtD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,OAAO,GAAG,SAAS,CAQtB;AAED,wBAAsB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAqB/D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getCurrentWorkspaceId } from '../../lib/api.js';
|
|
2
|
+
import { CliError } from '../../lib/errors.js';
|
|
3
|
+
import { parseRef, resolveWorkspaceRef } from '../../lib/refs.js';
|
|
4
|
+
import { validateNonEmptyName } from '../../lib/validation.js';
|
|
5
|
+
export function validateChannelName(name) {
|
|
6
|
+
validateNonEmptyName(name, 'Channel');
|
|
7
|
+
if (parseRef(name).type !== 'name') {
|
|
8
|
+
throw new CliError('INVALID_NAME', 'Channel name cannot look like an ID or URL.', [
|
|
9
|
+
'Use a name with letters and no ID-like pattern, such as "Engineering Team".',
|
|
10
|
+
]);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function resolveVisibilityOption(options) {
|
|
14
|
+
if (options.public && options.private) {
|
|
15
|
+
throw new CliError('CONFLICTING_OPTIONS', 'Use either --public or --private, not both.');
|
|
16
|
+
}
|
|
17
|
+
if (options.public)
|
|
18
|
+
return true;
|
|
19
|
+
if (options.private)
|
|
20
|
+
return false;
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
export async function resolveChannelWorkspaceId(workspaceRef) {
|
|
24
|
+
if (workspaceRef) {
|
|
25
|
+
return (await resolveWorkspaceRef(workspaceRef)).id;
|
|
26
|
+
}
|
|
27
|
+
return getCurrentWorkspaceId();
|
|
28
|
+
}
|
|
29
|
+
export function encodeCursor(offset) {
|
|
30
|
+
return Buffer.from(JSON.stringify({ offset })).toString('base64url');
|
|
31
|
+
}
|
|
32
|
+
export function decodeCursor(cursor) {
|
|
33
|
+
if (!cursor)
|
|
34
|
+
return 0;
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = JSON.parse(Buffer.from(cursor, 'base64url').toString('utf8'));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
throw new CliError('INVALID_CURSOR', `Invalid cursor: ${cursor}`);
|
|
41
|
+
}
|
|
42
|
+
if (!parsed ||
|
|
43
|
+
typeof parsed !== 'object' ||
|
|
44
|
+
typeof parsed.offset !== 'number' ||
|
|
45
|
+
!Number.isFinite(parsed.offset) ||
|
|
46
|
+
parsed.offset < 0) {
|
|
47
|
+
throw new CliError('INVALID_CURSOR', `Invalid cursor: ${cursor}`);
|
|
48
|
+
}
|
|
49
|
+
return parsed.offset;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/channel/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAErC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,6CAA6C,EAAE;YAC9E,6EAA6E;SAChF,CAAC,CAAA;IACN,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAGvC;IACG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,6CAA6C,CAAC,CAAA;IAC5F,CAAC;IAED,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IACjC,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,YAAgC;IAC5E,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,CAAC;IAED,OAAO,qBAAqB,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAA;IAErB,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,IACI,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAQ,MAA+B,CAAC,MAAM,KAAK,QAAQ;QAC3D,CAAC,MAAM,CAAC,QAAQ,CAAE,MAA6B,CAAC,MAAM,CAAC;QACtD,MAA6B,CAAC,MAAM,GAAG,CAAC,EAC3C,CAAC;QACC,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAA;IACrE,CAAC;IAED,OAAQ,MAA6B,CAAC,MAAM,CAAA;AAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAO3C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8H7D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
2
|
+
import { withCaseInsensitiveChoices } from '../../lib/completion.js';
|
|
3
|
+
import { createChannel } from './create.js';
|
|
4
|
+
import { listChannels } from './list.js';
|
|
5
|
+
import { showChannelThreads } from './threads.js';
|
|
6
|
+
import { updateChannel } from './update.js';
|
|
7
|
+
export function registerChannelCommand(program) {
|
|
8
|
+
const channel = program
|
|
9
|
+
.command('channel')
|
|
10
|
+
.alias('channels')
|
|
11
|
+
.description('Channel operations (list, create, update, threads)');
|
|
12
|
+
channel
|
|
13
|
+
.command('list [workspace-ref]', { isDefault: true })
|
|
14
|
+
.description('List joined channels or discoverable public channels in a workspace')
|
|
15
|
+
.option('--workspace <ref>', 'Workspace ID or name')
|
|
16
|
+
.option('--scope <scope>', 'Channel set to list: joined, public, or discoverable (default: joined)')
|
|
17
|
+
.option('--state <state>', 'Channel state to list: active, all, or archived (default: active)')
|
|
18
|
+
.option('--json', 'Output as JSON')
|
|
19
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
20
|
+
.option('--full', 'Include all fields in JSON output')
|
|
21
|
+
.addHelpText('after', `
|
|
22
|
+
Examples:
|
|
23
|
+
tdc channels
|
|
24
|
+
tdc channels --state all
|
|
25
|
+
tdc channels --scope discoverable
|
|
26
|
+
tdc channels --scope public --state archived
|
|
27
|
+
tdc channels --scope public --state all --json
|
|
28
|
+
tdc channels --json
|
|
29
|
+
tdc channels "My Workspace" --scope discoverable --json
|
|
30
|
+
|
|
31
|
+
Notes:
|
|
32
|
+
Defaults to active channels that you have joined.
|
|
33
|
+
joined Channels you have joined (private channels require --include-private-channels)
|
|
34
|
+
public Public channels visible in the workspace, whether joined or not
|
|
35
|
+
discoverable Public channels visible in the workspace that you have not joined
|
|
36
|
+
active Non-archived channels only
|
|
37
|
+
all Both active and archived channels
|
|
38
|
+
archived Archived channels only
|
|
39
|
+
|
|
40
|
+
Comms does not expose unjoined private channels, so public/discoverable scopes never include them.`)
|
|
41
|
+
.action(listChannels);
|
|
42
|
+
channel
|
|
43
|
+
.command('create <name>')
|
|
44
|
+
.description('Create a channel')
|
|
45
|
+
.option('--workspace <ref>', 'Workspace ID or name')
|
|
46
|
+
.option('--description <text>', 'Channel description')
|
|
47
|
+
.option('--users <refs>', 'Comma-separated user references to add (id:N, email, or name)')
|
|
48
|
+
.option('--public', 'Create a public channel')
|
|
49
|
+
.option('--private', 'Create a private channel')
|
|
50
|
+
.option('--dry-run', 'Show what would be created without creating')
|
|
51
|
+
.option('--json', 'Output created channel as JSON')
|
|
52
|
+
.option('--full', 'Include all fields in JSON output')
|
|
53
|
+
.addHelpText('after', `
|
|
54
|
+
Examples:
|
|
55
|
+
tdc channel create "Engineering"
|
|
56
|
+
tdc channel create "Leadership Team" --private --users id:10,id:20
|
|
57
|
+
tdc channel create "Product" --workspace "Doist" --description "Product discussions" --json`)
|
|
58
|
+
.action(createChannel);
|
|
59
|
+
channel
|
|
60
|
+
.command('update <channel-ref> [name]')
|
|
61
|
+
.description('Update channel metadata')
|
|
62
|
+
.option('--workspace <ref>', 'Workspace ID or name')
|
|
63
|
+
.option('--name <name>', 'New channel name')
|
|
64
|
+
.option('--description <text>', 'New channel description')
|
|
65
|
+
.option('--clear-description', 'Clear the channel description')
|
|
66
|
+
.option('--public', 'Make the channel public')
|
|
67
|
+
.option('--private', 'Make the channel private')
|
|
68
|
+
.option('--dry-run', 'Show what would be updated without updating')
|
|
69
|
+
.option('--json', 'Output updated channel as JSON')
|
|
70
|
+
.option('--full', 'Include all fields in JSON output')
|
|
71
|
+
.addHelpText('after', `
|
|
72
|
+
Examples:
|
|
73
|
+
tdc channel update "Engineering" "Platform Engineering"
|
|
74
|
+
tdc channel update id:abc123 --description "Team discussions"
|
|
75
|
+
tdc channel update "Leadership" --private --json`)
|
|
76
|
+
.action(updateChannel);
|
|
77
|
+
channel
|
|
78
|
+
.command('threads <channel-ref> [workspace-ref]')
|
|
79
|
+
.description('List threads in a channel with pagination and filtering')
|
|
80
|
+
.option('--workspace <ref>', 'Workspace ID or name')
|
|
81
|
+
.option('--unread', 'Only show unread threads')
|
|
82
|
+
.addOption(withCaseInsensitiveChoices(new Option('--archive-filter <filter>', 'Show active, archived, or all threads (default: active)'), ['active', 'archived', 'all']))
|
|
83
|
+
.option('--since <date>', 'Threads updated on/after this date (ISO format)')
|
|
84
|
+
.option('--until <date>', 'Threads updated before this date (ISO format)')
|
|
85
|
+
.option('--limit <n>', 'Max threads per page (default: 50)')
|
|
86
|
+
.option('--cursor <cursor>', 'Pagination cursor from a previous response')
|
|
87
|
+
.option('--json', 'Output as JSON')
|
|
88
|
+
.option('--ndjson', 'Output as newline-delimited JSON')
|
|
89
|
+
.option('--full', 'Include all fields in JSON output')
|
|
90
|
+
.addHelpText('after', `
|
|
91
|
+
Examples:
|
|
92
|
+
tdc channel threads 12345
|
|
93
|
+
tdc channel threads "general"
|
|
94
|
+
tdc channel threads id:12345 --unread
|
|
95
|
+
tdc channel threads 12345 --archive-filter all --since 2026-01-01
|
|
96
|
+
tdc channel threads 12345 --limit 20 --json
|
|
97
|
+
tdc channel threads 12345 --limit 20 --cursor <cursor-from-previous>
|
|
98
|
+
|
|
99
|
+
Notes:
|
|
100
|
+
Sorted newest-first by last activity. --limit, --cursor, --since, --until,
|
|
101
|
+
and --unread are applied client-side; --archive-filter is applied server-side.`)
|
|
102
|
+
.action(showChannelThreads);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/channel/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ViewOptions } from '../../lib/options.js';
|
|
2
|
+
export type ListChannelsOptions = ViewOptions & {
|
|
3
|
+
workspace?: string;
|
|
4
|
+
scope?: string;
|
|
5
|
+
state?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function listChannels(workspaceRef: string | undefined, options: ListChannelsOptions): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/list.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAWvD,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AA2HD,wBAAsB,YAAY,CAC9B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|