@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,37 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
// pwsh is included because tabtab supports it — installedShells() needs to
|
|
5
|
+
// detect and clean up pwsh completion files even though we don't advertise it.
|
|
6
|
+
export const COMPLETION_EXTENSIONS = {
|
|
7
|
+
bash: 'bash',
|
|
8
|
+
zsh: 'zsh',
|
|
9
|
+
fish: 'fish',
|
|
10
|
+
pwsh: 'ps1',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Find which shells have tdc completions installed by checking for the
|
|
14
|
+
* completion script files that tabtab creates.
|
|
15
|
+
*
|
|
16
|
+
* FIXME: Workaround for https://github.com/pnpm/tabtab/issues/34 —
|
|
17
|
+
* tabtab.uninstall() without a shell tries all shells and throws ENOENT
|
|
18
|
+
* for ones that were never installed. We detect which shells are actually
|
|
19
|
+
* installed and uninstall only those. Remove once the upstream issue is fixed.
|
|
20
|
+
*/
|
|
21
|
+
export function installedShells() {
|
|
22
|
+
return Object.entries(COMPLETION_EXTENSIONS)
|
|
23
|
+
.filter(([shell, ext]) => existsSync(join(homedir(), '.config', 'tabtab', shell, `tdc.${ext}`)))
|
|
24
|
+
.map(([shell]) => shell);
|
|
25
|
+
}
|
|
26
|
+
export function resolveCompleterCommand() {
|
|
27
|
+
const invokedScript = process.argv[1];
|
|
28
|
+
if (!invokedScript) {
|
|
29
|
+
return 'tdc';
|
|
30
|
+
}
|
|
31
|
+
const resolvedScript = resolve(invokedScript);
|
|
32
|
+
if (existsSync(resolvedScript)) {
|
|
33
|
+
return resolvedScript;
|
|
34
|
+
}
|
|
35
|
+
return 'tdc';
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/completion/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGzC,2EAA2E;AAC3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAmC;IACjE,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,KAAK;CACd,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe;IAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CACrB,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CACxE;SACA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAuB,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC7C,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAA;IACzB,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBhE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { installCompletion } from './install.js';
|
|
2
|
+
import { handleCompletionServer } from './server.js';
|
|
3
|
+
import { uninstallCompletion } from './uninstall.js';
|
|
4
|
+
export function registerCompletionCommand(program) {
|
|
5
|
+
const completion = program.command('completion').description('Manage shell completions');
|
|
6
|
+
completion
|
|
7
|
+
.command('install [shell]')
|
|
8
|
+
.description('Install shell completions (bash, zsh, fish)')
|
|
9
|
+
.action(installCompletion);
|
|
10
|
+
completion
|
|
11
|
+
.command('uninstall')
|
|
12
|
+
.description('Remove shell completions')
|
|
13
|
+
.action(uninstallCompletion);
|
|
14
|
+
// Hidden command invoked by the shell completion script at TAB time
|
|
15
|
+
program
|
|
16
|
+
.command('completion-server', { hidden: true })
|
|
17
|
+
.description('Completion server (internal)')
|
|
18
|
+
.allowUnknownOption()
|
|
19
|
+
.allowExcessArguments()
|
|
20
|
+
.action(() => handleCompletionServer(program));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/completion/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IAExF,UAAU;SACL,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAE9B,UAAU;SACL,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAEhC,oEAAoE;IACpE,OAAO;SACF,OAAO,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC9C,WAAW,CAAC,8BAA8B,CAAC;SAC3C,kBAAkB,EAAE;SACpB,oBAAoB,EAAE;SACtB,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/install.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CliError } from '../../lib/errors.js';
|
|
2
|
+
import { resolveCompleterCommand } from './helpers.js';
|
|
3
|
+
export async function installCompletion(shell) {
|
|
4
|
+
const tabtab = await import('@pnpm/tabtab');
|
|
5
|
+
const completer = resolveCompleterCommand();
|
|
6
|
+
if (shell && !tabtab.isShellSupported(shell)) {
|
|
7
|
+
throw new CliError('INVALID_TYPE', `Unsupported shell: ${shell}. Supported: ${tabtab.SUPPORTED_SHELLS.join(', ')}`);
|
|
8
|
+
}
|
|
9
|
+
await tabtab.install({
|
|
10
|
+
name: 'tdc',
|
|
11
|
+
// Use the executable path used to install completions so shell
|
|
12
|
+
// completion doesn't accidentally call an older `tdc` on PATH.
|
|
13
|
+
completer,
|
|
14
|
+
shell: shell,
|
|
15
|
+
});
|
|
16
|
+
console.log('Shell completions installed successfully.');
|
|
17
|
+
console.log('Restart your shell or source your shell config to activate.');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/completion/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAc;IAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAA;IAE3C,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CACd,cAAc,EACd,sBAAsB,KAAK,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAA;IACL,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC;QACjB,IAAI,EAAE,KAAK;QACX,+DAA+D;QAC/D,+DAA+D;QAC/D,SAAS;QACT,KAAK,EAAE,KAAuB;KACjC,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;IACxD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC5E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getCompletions, parseCompLine } from '../../lib/completion.js';
|
|
2
|
+
export async function handleCompletionServer(program) {
|
|
3
|
+
const tabtab = await import('@pnpm/tabtab');
|
|
4
|
+
const env = tabtab.parseEnv(process.env);
|
|
5
|
+
if (!env.complete) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const shell = tabtab.getShellFromEnv(process.env);
|
|
9
|
+
const words = parseCompLine(env.line);
|
|
10
|
+
let current = env.last;
|
|
11
|
+
// The fish/zsh completion templates always append a trailing space
|
|
12
|
+
// to COMP_LINE, making env.last empty even when the cursor is right
|
|
13
|
+
// after '--flag='. Use env.lastPartial (cursor-position-aware) to
|
|
14
|
+
// detect this case and restore the actual word being completed.
|
|
15
|
+
if (current === '' && env.lastPartial.includes('=')) {
|
|
16
|
+
if (words.at(-1) === '')
|
|
17
|
+
words.pop();
|
|
18
|
+
current = env.lastPartial;
|
|
19
|
+
}
|
|
20
|
+
const completions = getCompletions(program, words, current);
|
|
21
|
+
// Bash treats '=' as a word break (COMP_WORDBREAKS), so readline
|
|
22
|
+
// replaces only the part after '=' with COMPREPLY values. If we
|
|
23
|
+
// return '--flag=value', bash produces '--flag=--flag=value'.
|
|
24
|
+
// Strip the flag prefix so bash gets just the value part.
|
|
25
|
+
if (shell === 'bash' && current.includes('=')) {
|
|
26
|
+
const prefix = current.slice(0, current.indexOf('=') + 1);
|
|
27
|
+
const values = completions
|
|
28
|
+
.map((c) => (c.name.startsWith(prefix) ? c.name.slice(prefix.length) : c.name))
|
|
29
|
+
.filter(Boolean);
|
|
30
|
+
console.log(values.join('\n'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
tabtab.log(completions, shell);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/commands/completion/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAgB;IACzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAExC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAM;IACV,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAErC,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAA;IAEtB,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,gEAAgE;IAChE,IAAI,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;YAAE,KAAK,CAAC,GAAG,EAAE,CAAA;QACpC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;IAC7B,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAE3D,iEAAiE;IACjE,gEAAgE;IAChE,8DAA8D;IAC9D,0DAA0D;IAC1D,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,WAAW;aACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC9E,MAAM,CAAC,OAAO,CAAC,CAAA;QACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,OAAM;IACV,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/completion/uninstall.ts"],"names":[],"mappings":"AAEA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { installedShells } from './helpers.js';
|
|
2
|
+
export async function uninstallCompletion() {
|
|
3
|
+
// FIXME: Replace with plain tabtab.uninstall({ name: 'tdc' }) once
|
|
4
|
+
// https://github.com/pnpm/tabtab/issues/34 is fixed.
|
|
5
|
+
const shells = installedShells();
|
|
6
|
+
if (shells.length === 0) {
|
|
7
|
+
console.log('No shell completions installed.');
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const tabtab = await import('@pnpm/tabtab');
|
|
11
|
+
for (const shell of shells) {
|
|
12
|
+
await tabtab.uninstall({
|
|
13
|
+
name: 'tdc',
|
|
14
|
+
shell,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
console.log('Shell completions removed.');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/completion/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,mEAAmE;IACnE,qDAAqD;IACrD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;QAC9C,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,KAAK;YACX,KAAK;SACR,CAAC,CAAA;IACN,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkC5D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { listSettableKeys, setConfigValue } from './set.js';
|
|
2
|
+
import { viewConfig } from './view.js';
|
|
3
|
+
export function registerConfigCommand(program) {
|
|
4
|
+
const config = program.command('config').description('Manage CLI configuration');
|
|
5
|
+
config
|
|
6
|
+
.command('view', { isDefault: true })
|
|
7
|
+
.description('Show the current CLI configuration file')
|
|
8
|
+
.option('--json', 'Output the raw config as JSON')
|
|
9
|
+
.option('--show-token', 'Include the full token instead of masking it')
|
|
10
|
+
.action(viewConfig);
|
|
11
|
+
config
|
|
12
|
+
.command('set <key> <value>')
|
|
13
|
+
.description('Set a user preference in the config file')
|
|
14
|
+
.addHelpText('after', `
|
|
15
|
+
Settable keys:
|
|
16
|
+
${listSettableKeys()}
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
$ tdc config set unarchive-new-threads true
|
|
20
|
+
$ tdc config set unarchive-new-threads false`)
|
|
21
|
+
.action(setConfigValue);
|
|
22
|
+
config.addHelpText('after', `
|
|
23
|
+
Examples:
|
|
24
|
+
$ tdc config view # pretty-printed, token masked
|
|
25
|
+
$ tdc config view --json # raw JSON, token masked
|
|
26
|
+
$ tdc config view --show-token # include the full token
|
|
27
|
+
$ tdc config set unarchive-new-threads true # change a user preference`);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAA;IAEhF,MAAM;SACD,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACpC,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,cAAc,EAAE,8CAA8C,CAAC;SACtE,MAAM,CAAC,UAAU,CAAC,CAAA;IAEvB,MAAM;SACD,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,0CAA0C,CAAC;SACvD,WAAW,CACR,OAAO,EACP;;EAEV,gBAAgB,EAAE;;;;+CAI2B,CACtC;SACA,MAAM,CAAC,cAAc,CAAC,CAAA;IAE3B,MAAM,CAAC,WAAW,CACd,OAAO,EACP;;;;;4EAKoE,CACvE,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/config/set.ts"],"names":[],"mappings":"AA8BA,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9E;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { readConfigStrict, setConfig } from '../../lib/config.js';
|
|
3
|
+
import { CliError } from '../../lib/errors.js';
|
|
4
|
+
const TRUE_VALUES = new Set(['true', 'on', '1', 'yes']);
|
|
5
|
+
const FALSE_VALUES = new Set(['false', 'off', '0', 'no']);
|
|
6
|
+
function parseBoolean(raw, key) {
|
|
7
|
+
const normalized = raw.trim().toLowerCase();
|
|
8
|
+
if (TRUE_VALUES.has(normalized))
|
|
9
|
+
return true;
|
|
10
|
+
if (FALSE_VALUES.has(normalized))
|
|
11
|
+
return false;
|
|
12
|
+
throw new CliError('INVALID_VALUE', `Invalid boolean value "${raw}" for ${key}. Use one of: true, false, on, off, 1, 0.`);
|
|
13
|
+
}
|
|
14
|
+
const SETTERS = {
|
|
15
|
+
'unarchive-new-threads': {
|
|
16
|
+
description: 'Unarchive newly-created threads so they appear in your Inbox',
|
|
17
|
+
apply: (config, value) => {
|
|
18
|
+
const parsed = parseBoolean(value, 'unarchive-new-threads');
|
|
19
|
+
config.userSettings = { ...config.userSettings, unarchiveNewThreads: parsed };
|
|
20
|
+
return `userSettings.unarchiveNewThreads = ${parsed}`;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function setConfigValue(key, value) {
|
|
25
|
+
const setter = SETTERS[key];
|
|
26
|
+
if (!setter) {
|
|
27
|
+
const known = Object.keys(SETTERS).join(', ');
|
|
28
|
+
throw new CliError('UNKNOWN_KEY', `Unknown config key "${key}". Known keys: ${known}.`);
|
|
29
|
+
}
|
|
30
|
+
const read = await readConfigStrict();
|
|
31
|
+
const config = read.state === 'present' ? read.config : {};
|
|
32
|
+
const summary = setter.apply(config, value);
|
|
33
|
+
await setConfig(config);
|
|
34
|
+
console.log(chalk.green('✓'), `Set ${chalk.cyan(summary)}`);
|
|
35
|
+
}
|
|
36
|
+
export function listSettableKeys() {
|
|
37
|
+
return Object.entries(SETTERS)
|
|
38
|
+
.map(([key, { description }]) => ` ${key.padEnd(28)} ${description}`)
|
|
39
|
+
.join('\n');
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/commands/config/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAe,gBAAgB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AACvD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAEzD,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9C,MAAM,IAAI,QAAQ,CACd,eAAe,EACf,0BAA0B,GAAG,SAAS,GAAG,2CAA2C,CACvF,CAAA;AACL,CAAC;AAID,MAAM,OAAO,GAA2D;IACpE,uBAAuB,EAAE;QACrB,WAAW,EAAE,8DAA8D;QAC3E,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAA;YAC3D,MAAM,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAA;YAC7E,OAAO,sCAAsC,MAAM,EAAE,CAAA;QACzD,CAAC;KACJ;CACJ,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,uBAAuB,GAAG,kBAAkB,KAAK,GAAG,CAAC,CAAA;IAC3F,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACrC,MAAM,MAAM,GAAW,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3C,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;IAEvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;SACrE,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/commands/config/view.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAyHD,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B1E"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { SecureStoreUnavailableError } from '@doist/cli-core/auth';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { NoTokenError, probeApiToken, SECURE_STORE_DESCRIPTION, TOKEN_ENV_VAR, } from '../../lib/auth.js';
|
|
4
|
+
import { getConfigPath, readConfigStrict } from '../../lib/config.js';
|
|
5
|
+
import { getDefaultUserRecord } from '../../lib/user-records.js';
|
|
6
|
+
function maskToken(token) {
|
|
7
|
+
if (token.length < 5)
|
|
8
|
+
return '****';
|
|
9
|
+
return `****…${token.slice(-4)}`;
|
|
10
|
+
}
|
|
11
|
+
function describeTokenSource(source) {
|
|
12
|
+
switch (source) {
|
|
13
|
+
case 'env':
|
|
14
|
+
return `environment variable ${TOKEN_ENV_VAR}`;
|
|
15
|
+
case 'secure-store':
|
|
16
|
+
return SECURE_STORE_DESCRIPTION;
|
|
17
|
+
case 'config-file':
|
|
18
|
+
return 'config file (plaintext fallback)';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function probeTokenPresence() {
|
|
22
|
+
try {
|
|
23
|
+
const { token, metadata } = await probeApiToken();
|
|
24
|
+
return { state: 'present', token, metadata };
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof NoTokenError)
|
|
28
|
+
return { state: 'missing' };
|
|
29
|
+
if (error instanceof SecureStoreUnavailableError) {
|
|
30
|
+
return {
|
|
31
|
+
state: 'unavailable',
|
|
32
|
+
reason: `${SECURE_STORE_DESCRIPTION} unavailable (${error.message})`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function formatValue(value) {
|
|
39
|
+
if (value === undefined || value === null)
|
|
40
|
+
return chalk.dim('not set');
|
|
41
|
+
if (typeof value === 'boolean')
|
|
42
|
+
return value ? 'true' : 'false';
|
|
43
|
+
return String(value);
|
|
44
|
+
}
|
|
45
|
+
function renderTokenLine(token, showToken) {
|
|
46
|
+
switch (token.state) {
|
|
47
|
+
case 'present': {
|
|
48
|
+
const value = showToken ? token.token : maskToken(token.token);
|
|
49
|
+
return `${value} ${chalk.dim(`(${describeTokenSource(token.metadata.source)})`)}`;
|
|
50
|
+
}
|
|
51
|
+
case 'unavailable':
|
|
52
|
+
return chalk.dim(`unknown — ${token.reason}`);
|
|
53
|
+
case 'missing':
|
|
54
|
+
return formatValue(undefined);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function formatConfigView(config, token, showToken, configMissing) {
|
|
58
|
+
const lines = [];
|
|
59
|
+
const headerSuffix = configMissing ? ` ${chalk.dim('(not created yet)')}` : '';
|
|
60
|
+
lines.push(`${chalk.dim('Config file:')} ${getConfigPath()}${headerSuffix}`);
|
|
61
|
+
lines.push('');
|
|
62
|
+
const users = config.users ?? [];
|
|
63
|
+
if (users.length > 0) {
|
|
64
|
+
// Mirror runtime first-user fallback so the marker reflects the
|
|
65
|
+
// account the CLI would actually use.
|
|
66
|
+
const defaultId = getDefaultUserRecord(config)?.account.id;
|
|
67
|
+
lines.push(chalk.bold(`Authenticated accounts (${users.length})`));
|
|
68
|
+
for (const user of users) {
|
|
69
|
+
const marker = user.id === defaultId ? chalk.green('*') : ' ';
|
|
70
|
+
lines.push(` ${marker} ${chalk.dim(`id:${user.id}`)} ${user.name}`);
|
|
71
|
+
}
|
|
72
|
+
lines.push('');
|
|
73
|
+
}
|
|
74
|
+
// When a token is present, its metadata is the ground truth for the active
|
|
75
|
+
// mode/scope — this matters most for env-sourced tokens, whose scope the CLI
|
|
76
|
+
// does not know. For missing/unavailable tokens, fall back to the default
|
|
77
|
+
// user record (what the CLI would attempt once auth recovers).
|
|
78
|
+
const defaultRecord = getDefaultUserRecord(config);
|
|
79
|
+
const effectiveMode = token.state === 'present' ? token.metadata.authMode : defaultRecord?.account.authMode;
|
|
80
|
+
const effectiveScope = token.state === 'present' ? token.metadata.authScope : defaultRecord?.account.authScope;
|
|
81
|
+
// When the mode is 'unknown' and no scope is recorded, the scope is
|
|
82
|
+
// genuinely unintrospectable (env-sourced tokens, or tokens saved via
|
|
83
|
+
// `tdc auth token` without metadata). Render 'unknown' rather than
|
|
84
|
+
// 'not set' to avoid reading as an explicit empty scope.
|
|
85
|
+
const scopeDisplay = effectiveMode === 'unknown' && effectiveScope === undefined
|
|
86
|
+
? 'unknown'
|
|
87
|
+
: formatValue(effectiveScope);
|
|
88
|
+
lines.push(chalk.bold('Authentication (active)'));
|
|
89
|
+
lines.push(` Token: ${renderTokenLine(token, showToken)}`);
|
|
90
|
+
lines.push(` Mode: ${formatValue(effectiveMode)}`);
|
|
91
|
+
lines.push(` Scope: ${scopeDisplay}`);
|
|
92
|
+
lines.push('');
|
|
93
|
+
lines.push(chalk.bold('Workspace'));
|
|
94
|
+
lines.push(` Current: ${formatValue(config.currentWorkspace)}`);
|
|
95
|
+
lines.push('');
|
|
96
|
+
lines.push(chalk.bold('Updates'));
|
|
97
|
+
lines.push(` Channel: ${formatValue(config.updateChannel)}`);
|
|
98
|
+
lines.push('');
|
|
99
|
+
lines.push(chalk.bold('User settings'));
|
|
100
|
+
lines.push(` Unarchive new threads: ${formatValue(config.userSettings?.unarchiveNewThreads)}`);
|
|
101
|
+
return lines.join('\n');
|
|
102
|
+
}
|
|
103
|
+
export async function viewConfig(options) {
|
|
104
|
+
const read = await readConfigStrict();
|
|
105
|
+
const config = read.state === 'present' ? read.config : {};
|
|
106
|
+
if (options.json) {
|
|
107
|
+
const output = { ...config };
|
|
108
|
+
if (output.users && !options.showToken) {
|
|
109
|
+
output.users = output.users.map((user) => user.token ? { ...user, token: maskToken(user.token) } : user);
|
|
110
|
+
}
|
|
111
|
+
console.log(JSON.stringify(output, null, 2));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const token = await probeTokenPresence();
|
|
115
|
+
if (read.state === 'missing' && token.state === 'missing') {
|
|
116
|
+
console.log(`${chalk.dim('Config file:')} ${getConfigPath()} ${chalk.dim('(not created yet)')}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
console.log(formatConfigView(config, token, options.showToken ?? false, read.state === 'missing'));
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/config/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"done.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/done.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAElE,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3F"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getCommsClient } from '../../lib/api.js';
|
|
2
|
+
import { formatJson, printDryRun } from '../../lib/output.js';
|
|
3
|
+
import { resolveConversationId } from '../../lib/refs.js';
|
|
4
|
+
import { conversationLabel } from './helpers.js';
|
|
5
|
+
export async function markConversationDone(ref, options) {
|
|
6
|
+
const conversationId = resolveConversationId(ref);
|
|
7
|
+
const client = await getCommsClient();
|
|
8
|
+
if (options.dryRun) {
|
|
9
|
+
const conversation = await client.conversations.getConversation(conversationId);
|
|
10
|
+
printDryRun('archive conversation', {
|
|
11
|
+
Conversation: conversationLabel(conversation),
|
|
12
|
+
Status: conversation.archived ? 'already archived' : undefined,
|
|
13
|
+
});
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
await client.conversations.archiveConversation(conversationId);
|
|
17
|
+
if (options.json) {
|
|
18
|
+
console.log(formatJson({ id: conversationId, archived: true }));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
console.log(`Conversation ${conversationId} archived.`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=done.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"done.js","sourceRoot":"","sources":["../../../src/commands/conversation/done.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAElE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,OAAoB;IACxE,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAEjD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IAErC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;QAC/E,WAAW,CAAC,sBAAsB,EAAE;YAChC,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC7C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,MAAM,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAA;IAE9D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC/D,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,cAAc,YAAY,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Conversation } from '@doist/comms-sdk';
|
|
2
|
+
import type { MutationOptions, PaginatedViewOptions, ViewOptions } from '../../lib/options.js';
|
|
3
|
+
export type UnreadOptions = ViewOptions & {
|
|
4
|
+
workspace?: string;
|
|
5
|
+
};
|
|
6
|
+
export type ConversationViewOptions = PaginatedViewOptions;
|
|
7
|
+
export type ConversationWithOptions = PaginatedViewOptions & {
|
|
8
|
+
workspace?: string;
|
|
9
|
+
includeGroups?: boolean;
|
|
10
|
+
snippet?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type ReplyOptions = MutationOptions;
|
|
13
|
+
export type MuteOptions = MutationOptions & {
|
|
14
|
+
minutes?: string;
|
|
15
|
+
};
|
|
16
|
+
export type DoneOptions = MutationOptions;
|
|
17
|
+
export type ConversationLookupResult = {
|
|
18
|
+
directConversation?: Conversation;
|
|
19
|
+
groupConversationCount: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function buildConversationTitle(conversation: Pick<Conversation, 'title' | 'userIds'>, userMap: Map<number, string>): string;
|
|
22
|
+
export declare function conversationLabel(conversation: Pick<Conversation, 'id' | 'title'>): string;
|
|
23
|
+
export declare function sortByLastActiveDescending(a: Conversation, b: Conversation): number;
|
|
24
|
+
export declare function getAllConversations(workspaceId: number): Promise<Conversation[]>;
|
|
25
|
+
export declare function findDirectConversation(workspaceId: number, sessionUserId: number, targetUserId: number): Promise<ConversationLookupResult>;
|
|
26
|
+
export declare function listConversationsWithUser(conversations: Conversation[], workspaceId: number, options: ConversationWithOptions): Promise<void>;
|
|
27
|
+
export declare function parseMinutes(value: string | undefined): number;
|
|
28
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAOpD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAG9F,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAA;AAE1D,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,eAAe,CAAA;AAE1C,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAA;AAEzC,MAAM,MAAM,wBAAwB,GAAG;IACnC,kBAAkB,CAAC,EAAE,YAAY,CAAA;IACjC,sBAAsB,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,wBAAgB,sBAAsB,CAClC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC,EACrD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,MAAM,CAI1F;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAEnF;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAatF;AAyBD,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,wBAAwB,CAAC,CAkBnC;AAED,wBAAsB,yBAAyB,CAC3C,aAAa,EAAE,YAAY,EAAE,EAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU9D"}
|