@doist/comms-cli 0.0.1 → 1.1.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.
Files changed (442) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +165 -29
  3. package/dist/commands/account/index.d.ts +3 -0
  4. package/dist/commands/account/index.d.ts.map +1 -0
  5. package/dist/commands/account/index.js +104 -0
  6. package/dist/commands/account/index.js.map +1 -0
  7. package/dist/commands/auth/helpers.d.ts +22 -0
  8. package/dist/commands/auth/helpers.d.ts.map +1 -0
  9. package/dist/commands/auth/helpers.js +29 -0
  10. package/dist/commands/auth/helpers.js.map +1 -0
  11. package/dist/commands/auth/index.d.ts +3 -0
  12. package/dist/commands/auth/index.d.ts.map +1 -0
  13. package/dist/commands/auth/index.js +32 -0
  14. package/dist/commands/auth/index.js.map +1 -0
  15. package/dist/commands/auth/login.d.ts +4 -0
  16. package/dist/commands/auth/login.d.ts.map +1 -0
  17. package/dist/commands/auth/login.js +29 -0
  18. package/dist/commands/auth/login.js.map +1 -0
  19. package/dist/commands/auth/logout.d.ts +11 -0
  20. package/dist/commands/auth/logout.d.ts.map +1 -0
  21. package/dist/commands/auth/logout.js +16 -0
  22. package/dist/commands/auth/logout.js.map +1 -0
  23. package/dist/commands/auth/status.d.ts +16 -0
  24. package/dist/commands/auth/status.d.ts.map +1 -0
  25. package/dist/commands/auth/status.js +102 -0
  26. package/dist/commands/auth/status.js.map +1 -0
  27. package/dist/commands/auth/store-wrap.d.ts +4 -0
  28. package/dist/commands/auth/store-wrap.d.ts.map +1 -0
  29. package/dist/commands/auth/store-wrap.js +24 -0
  30. package/dist/commands/auth/store-wrap.js.map +1 -0
  31. package/dist/commands/auth/token.d.ts +2 -0
  32. package/dist/commands/auth/token.d.ts.map +1 -0
  33. package/dist/commands/auth/token.js +56 -0
  34. package/dist/commands/auth/token.js.map +1 -0
  35. package/dist/commands/changelog.d.ts +3 -0
  36. package/dist/commands/changelog.d.ts.map +1 -0
  37. package/dist/commands/changelog.js +16 -0
  38. package/dist/commands/changelog.js.map +1 -0
  39. package/dist/commands/channel/add.d.ts +3 -0
  40. package/dist/commands/channel/add.d.ts.map +1 -0
  41. package/dist/commands/channel/add.js +5 -0
  42. package/dist/commands/channel/add.js.map +1 -0
  43. package/dist/commands/channel/create.d.ts +11 -0
  44. package/dist/commands/channel/create.d.ts.map +1 -0
  45. package/dist/commands/channel/create.js +35 -0
  46. package/dist/commands/channel/create.js.map +1 -0
  47. package/dist/commands/channel/helpers.d.ts +9 -0
  48. package/dist/commands/channel/helpers.d.ts.map +1 -0
  49. package/dist/commands/channel/helpers.js +51 -0
  50. package/dist/commands/channel/helpers.js.map +1 -0
  51. package/dist/commands/channel/index.d.ts +3 -0
  52. package/dist/commands/channel/index.d.ts.map +1 -0
  53. package/dist/commands/channel/index.js +181 -0
  54. package/dist/commands/channel/index.js.map +1 -0
  55. package/dist/commands/channel/list.d.ts +8 -0
  56. package/dist/commands/channel/list.d.ts.map +1 -0
  57. package/dist/commands/channel/list.js +144 -0
  58. package/dist/commands/channel/list.js.map +1 -0
  59. package/dist/commands/channel/members.d.ts +5 -0
  60. package/dist/commands/channel/members.d.ts.map +1 -0
  61. package/dist/commands/channel/members.js +57 -0
  62. package/dist/commands/channel/members.js.map +1 -0
  63. package/dist/commands/channel/membership-helpers.d.ts +20 -0
  64. package/dist/commands/channel/membership-helpers.d.ts.map +1 -0
  65. package/dist/commands/channel/membership-helpers.js +125 -0
  66. package/dist/commands/channel/membership-helpers.js.map +1 -0
  67. package/dist/commands/channel/remove.d.ts +3 -0
  68. package/dist/commands/channel/remove.d.ts.map +1 -0
  69. package/dist/commands/channel/remove.js +5 -0
  70. package/dist/commands/channel/remove.js.map +1 -0
  71. package/dist/commands/channel/set.d.ts +7 -0
  72. package/dist/commands/channel/set.d.ts.map +1 -0
  73. package/dist/commands/channel/set.js +79 -0
  74. package/dist/commands/channel/set.js.map +1 -0
  75. package/dist/commands/channel/threads.d.ts +11 -0
  76. package/dist/commands/channel/threads.d.ts.map +1 -0
  77. package/dist/commands/channel/threads.js +100 -0
  78. package/dist/commands/channel/threads.js.map +1 -0
  79. package/dist/commands/channel/update.d.ts +12 -0
  80. package/dist/commands/channel/update.d.ts.map +1 -0
  81. package/dist/commands/channel/update.js +84 -0
  82. package/dist/commands/channel/update.js.map +1 -0
  83. package/dist/commands/comment/delete.d.ts +5 -0
  84. package/dist/commands/comment/delete.d.ts.map +1 -0
  85. package/dist/commands/comment/delete.js +33 -0
  86. package/dist/commands/comment/delete.js.map +1 -0
  87. package/dist/commands/comment/index.d.ts +3 -0
  88. package/dist/commands/comment/index.d.ts.map +1 -0
  89. package/dist/commands/comment/index.js +49 -0
  90. package/dist/commands/comment/index.js.map +1 -0
  91. package/dist/commands/comment/update.d.ts +5 -0
  92. package/dist/commands/comment/update.d.ts.map +1 -0
  93. package/dist/commands/comment/update.js +37 -0
  94. package/dist/commands/comment/update.js.map +1 -0
  95. package/dist/commands/comment/view.d.ts +3 -0
  96. package/dist/commands/comment/view.d.ts.map +1 -0
  97. package/dist/commands/comment/view.js +31 -0
  98. package/dist/commands/comment/view.js.map +1 -0
  99. package/dist/commands/completion/helpers.d.ts +14 -0
  100. package/dist/commands/completion/helpers.d.ts.map +1 -0
  101. package/dist/commands/completion/helpers.js +37 -0
  102. package/dist/commands/completion/helpers.js.map +1 -0
  103. package/dist/commands/completion/index.d.ts +3 -0
  104. package/dist/commands/completion/index.d.ts.map +1 -0
  105. package/dist/commands/completion/index.js +22 -0
  106. package/dist/commands/completion/index.js.map +1 -0
  107. package/dist/commands/completion/install.d.ts +2 -0
  108. package/dist/commands/completion/install.d.ts.map +1 -0
  109. package/dist/commands/completion/install.js +19 -0
  110. package/dist/commands/completion/install.js.map +1 -0
  111. package/dist/commands/completion/server.d.ts +3 -0
  112. package/dist/commands/completion/server.d.ts.map +1 -0
  113. package/dist/commands/completion/server.js +35 -0
  114. package/dist/commands/completion/server.js.map +1 -0
  115. package/dist/commands/completion/uninstall.d.ts +2 -0
  116. package/dist/commands/completion/uninstall.d.ts.map +1 -0
  117. package/dist/commands/completion/uninstall.js +19 -0
  118. package/dist/commands/completion/uninstall.js.map +1 -0
  119. package/dist/commands/config/index.d.ts +3 -0
  120. package/dist/commands/config/index.d.ts.map +1 -0
  121. package/dist/commands/config/index.js +29 -0
  122. package/dist/commands/config/index.js.map +1 -0
  123. package/dist/commands/config/set.d.ts +3 -0
  124. package/dist/commands/config/set.d.ts.map +1 -0
  125. package/dist/commands/config/set.js +41 -0
  126. package/dist/commands/config/set.js.map +1 -0
  127. package/dist/commands/config/view.d.ts +6 -0
  128. package/dist/commands/config/view.d.ts.map +1 -0
  129. package/dist/commands/config/view.js +121 -0
  130. package/dist/commands/config/view.js.map +1 -0
  131. package/dist/commands/conversation/done.d.ts +3 -0
  132. package/dist/commands/conversation/done.d.ts.map +1 -0
  133. package/dist/commands/conversation/done.js +23 -0
  134. package/dist/commands/conversation/done.js.map +1 -0
  135. package/dist/commands/conversation/helpers.d.ts +28 -0
  136. package/dist/commands/conversation/helpers.d.ts.map +1 -0
  137. package/dist/commands/conversation/helpers.js +119 -0
  138. package/dist/commands/conversation/helpers.js.map +1 -0
  139. package/dist/commands/conversation/index.d.ts +3 -0
  140. package/dist/commands/conversation/index.d.ts.map +1 -0
  141. package/dist/commands/conversation/index.js +107 -0
  142. package/dist/commands/conversation/index.js.map +1 -0
  143. package/dist/commands/conversation/mute.d.ts +3 -0
  144. package/dist/commands/conversation/mute.d.ts.map +1 -0
  145. package/dist/commands/conversation/mute.js +30 -0
  146. package/dist/commands/conversation/mute.js.map +1 -0
  147. package/dist/commands/conversation/reply.d.ts +3 -0
  148. package/dist/commands/conversation/reply.d.ts.map +1 -0
  149. package/dist/commands/conversation/reply.js +37 -0
  150. package/dist/commands/conversation/reply.js.map +1 -0
  151. package/dist/commands/conversation/unmute.d.ts +3 -0
  152. package/dist/commands/conversation/unmute.d.ts.map +1 -0
  153. package/dist/commands/conversation/unmute.js +28 -0
  154. package/dist/commands/conversation/unmute.js.map +1 -0
  155. package/dist/commands/conversation/unread.d.ts +3 -0
  156. package/dist/commands/conversation/unread.d.ts.map +1 -0
  157. package/dist/commands/conversation/unread.js +56 -0
  158. package/dist/commands/conversation/unread.js.map +1 -0
  159. package/dist/commands/conversation/view.d.ts +3 -0
  160. package/dist/commands/conversation/view.d.ts.map +1 -0
  161. package/dist/commands/conversation/view.js +77 -0
  162. package/dist/commands/conversation/view.js.map +1 -0
  163. package/dist/commands/conversation/with.d.ts +3 -0
  164. package/dist/commands/conversation/with.d.ts.map +1 -0
  165. package/dist/commands/conversation/with.js +48 -0
  166. package/dist/commands/conversation/with.js.map +1 -0
  167. package/dist/commands/doctor.d.ts +9 -0
  168. package/dist/commands/doctor.d.ts.map +1 -0
  169. package/dist/commands/doctor.js +325 -0
  170. package/dist/commands/doctor.js.map +1 -0
  171. package/dist/commands/groups/create.d.ts +8 -0
  172. package/dist/commands/groups/create.d.ts.map +1 -0
  173. package/dist/commands/groups/create.js +27 -0
  174. package/dist/commands/groups/create.js.map +1 -0
  175. package/dist/commands/groups/delete.d.ts +7 -0
  176. package/dist/commands/groups/delete.d.ts.map +1 -0
  177. package/dist/commands/groups/delete.js +30 -0
  178. package/dist/commands/groups/delete.js.map +1 -0
  179. package/dist/commands/groups/index.d.ts +3 -0
  180. package/dist/commands/groups/index.d.ts.map +1 -0
  181. package/dist/commands/groups/index.js +98 -0
  182. package/dist/commands/groups/index.js.map +1 -0
  183. package/dist/commands/groups/list.d.ts +7 -0
  184. package/dist/commands/groups/list.d.ts.map +1 -0
  185. package/dist/commands/groups/list.js +42 -0
  186. package/dist/commands/groups/list.js.map +1 -0
  187. package/dist/commands/groups/members.d.ts +4 -0
  188. package/dist/commands/groups/members.d.ts.map +1 -0
  189. package/dist/commands/groups/members.js +90 -0
  190. package/dist/commands/groups/members.js.map +1 -0
  191. package/dist/commands/groups/rename.d.ts +3 -0
  192. package/dist/commands/groups/rename.d.ts.map +1 -0
  193. package/dist/commands/groups/rename.js +28 -0
  194. package/dist/commands/groups/rename.js.map +1 -0
  195. package/dist/commands/groups/view.d.ts +7 -0
  196. package/dist/commands/groups/view.d.ts.map +1 -0
  197. package/dist/commands/groups/view.js +52 -0
  198. package/dist/commands/groups/view.js.map +1 -0
  199. package/dist/commands/inbox.d.ts +3 -0
  200. package/dist/commands/inbox.d.ts.map +1 -0
  201. package/dist/commands/inbox.js +147 -0
  202. package/dist/commands/inbox.js.map +1 -0
  203. package/dist/commands/mentions.d.ts +3 -0
  204. package/dist/commands/mentions.d.ts.map +1 -0
  205. package/dist/commands/mentions.js +23 -0
  206. package/dist/commands/mentions.js.map +1 -0
  207. package/dist/commands/msg/delete.d.ts +5 -0
  208. package/dist/commands/msg/delete.d.ts.map +1 -0
  209. package/dist/commands/msg/delete.js +31 -0
  210. package/dist/commands/msg/delete.js.map +1 -0
  211. package/dist/commands/msg/index.d.ts +3 -0
  212. package/dist/commands/msg/index.d.ts.map +1 -0
  213. package/dist/commands/msg/index.js +47 -0
  214. package/dist/commands/msg/index.js.map +1 -0
  215. package/dist/commands/msg/update.d.ts +5 -0
  216. package/dist/commands/msg/update.d.ts.map +1 -0
  217. package/dist/commands/msg/update.js +37 -0
  218. package/dist/commands/msg/update.js.map +1 -0
  219. package/dist/commands/msg/view.d.ts +3 -0
  220. package/dist/commands/msg/view.d.ts.map +1 -0
  221. package/dist/commands/msg/view.js +31 -0
  222. package/dist/commands/msg/view.js.map +1 -0
  223. package/dist/commands/react.d.ts +3 -0
  224. package/dist/commands/react.d.ts.map +1 -0
  225. package/dist/commands/react.js +149 -0
  226. package/dist/commands/react.js.map +1 -0
  227. package/dist/commands/search.d.ts +3 -0
  228. package/dist/commands/search.d.ts.map +1 -0
  229. package/dist/commands/search.js +30 -0
  230. package/dist/commands/search.js.map +1 -0
  231. package/dist/commands/skill/index.d.ts +3 -0
  232. package/dist/commands/skill/index.d.ts.map +1 -0
  233. package/dist/commands/skill/index.js +29 -0
  234. package/dist/commands/skill/index.js.map +1 -0
  235. package/dist/commands/skill/install.d.ts +3 -0
  236. package/dist/commands/skill/install.d.ts.map +1 -0
  237. package/dist/commands/skill/install.js +16 -0
  238. package/dist/commands/skill/install.js.map +1 -0
  239. package/dist/commands/skill/list.d.ts +6 -0
  240. package/dist/commands/skill/list.d.ts.map +1 -0
  241. package/dist/commands/skill/list.js +22 -0
  242. package/dist/commands/skill/list.js.map +1 -0
  243. package/dist/commands/skill/uninstall.d.ts +3 -0
  244. package/dist/commands/skill/uninstall.d.ts.map +1 -0
  245. package/dist/commands/skill/uninstall.js +15 -0
  246. package/dist/commands/skill/uninstall.js.map +1 -0
  247. package/dist/commands/skill/update.d.ts +3 -0
  248. package/dist/commands/skill/update.d.ts.map +1 -0
  249. package/dist/commands/skill/update.js +37 -0
  250. package/dist/commands/skill/update.js.map +1 -0
  251. package/dist/commands/thread/create.d.ts +8 -0
  252. package/dist/commands/thread/create.d.ts.map +1 -0
  253. package/dist/commands/thread/create.js +70 -0
  254. package/dist/commands/thread/create.js.map +1 -0
  255. package/dist/commands/thread/delete.d.ts +7 -0
  256. package/dist/commands/thread/delete.d.ts.map +1 -0
  257. package/dist/commands/thread/delete.js +38 -0
  258. package/dist/commands/thread/delete.js.map +1 -0
  259. package/dist/commands/thread/helpers.d.ts +24 -0
  260. package/dist/commands/thread/helpers.d.ts.map +1 -0
  261. package/dist/commands/thread/helpers.js +45 -0
  262. package/dist/commands/thread/helpers.js.map +1 -0
  263. package/dist/commands/thread/index.d.ts +3 -0
  264. package/dist/commands/thread/index.d.ts.map +1 -0
  265. package/dist/commands/thread/index.js +134 -0
  266. package/dist/commands/thread/index.js.map +1 -0
  267. package/dist/commands/thread/mutate.d.ts +5 -0
  268. package/dist/commands/thread/mutate.d.ts.map +1 -0
  269. package/dist/commands/thread/mutate.js +23 -0
  270. package/dist/commands/thread/mutate.js.map +1 -0
  271. package/dist/commands/thread/mute.d.ts +8 -0
  272. package/dist/commands/thread/mute.d.ts.map +1 -0
  273. package/dist/commands/thread/mute.js +63 -0
  274. package/dist/commands/thread/mute.js.map +1 -0
  275. package/dist/commands/thread/rename.d.ts +3 -0
  276. package/dist/commands/thread/rename.d.ts.map +1 -0
  277. package/dist/commands/thread/rename.js +29 -0
  278. package/dist/commands/thread/rename.js.map +1 -0
  279. package/dist/commands/thread/reply.d.ts +9 -0
  280. package/dist/commands/thread/reply.d.ts.map +1 -0
  281. package/dist/commands/thread/reply.js +85 -0
  282. package/dist/commands/thread/reply.js.map +1 -0
  283. package/dist/commands/thread/update.d.ts +5 -0
  284. package/dist/commands/thread/update.d.ts.map +1 -0
  285. package/dist/commands/thread/update.js +45 -0
  286. package/dist/commands/thread/update.js.map +1 -0
  287. package/dist/commands/thread/view.d.ts +9 -0
  288. package/dist/commands/thread/view.d.ts.map +1 -0
  289. package/dist/commands/thread/view.js +171 -0
  290. package/dist/commands/thread/view.js.map +1 -0
  291. package/dist/commands/update/index.d.ts +3 -0
  292. package/dist/commands/update/index.d.ts.map +1 -0
  293. package/dist/commands/update/index.js +14 -0
  294. package/dist/commands/update/index.js.map +1 -0
  295. package/dist/commands/user.d.ts +3 -0
  296. package/dist/commands/user.d.ts.map +1 -0
  297. package/dist/commands/user.js +90 -0
  298. package/dist/commands/user.js.map +1 -0
  299. package/dist/commands/view.d.ts +3 -0
  300. package/dist/commands/view.d.ts.map +1 -0
  301. package/dist/commands/view.js +68 -0
  302. package/dist/commands/view.js.map +1 -0
  303. package/dist/commands/workspace.d.ts +3 -0
  304. package/dist/commands/workspace.d.ts.map +1 -0
  305. package/dist/commands/workspace.js +56 -0
  306. package/dist/commands/workspace.js.map +1 -0
  307. package/dist/index.d.ts +3 -0
  308. package/dist/index.d.ts.map +1 -0
  309. package/dist/index.js +190 -0
  310. package/dist/index.js.map +1 -0
  311. package/dist/lib/api.d.ts +37 -0
  312. package/dist/lib/api.d.ts.map +1 -0
  313. package/dist/lib/api.js +316 -0
  314. package/dist/lib/api.js.map +1 -0
  315. package/dist/lib/auth-constants.d.ts +3 -0
  316. package/dist/lib/auth-constants.d.ts.map +1 -0
  317. package/dist/lib/auth-constants.js +3 -0
  318. package/dist/lib/auth-constants.js.map +1 -0
  319. package/dist/lib/auth-pages.d.ts +3 -0
  320. package/dist/lib/auth-pages.d.ts.map +1 -0
  321. package/dist/lib/auth-pages.js +707 -0
  322. package/dist/lib/auth-pages.js.map +1 -0
  323. package/dist/lib/auth-provider.d.ts +74 -0
  324. package/dist/lib/auth-provider.d.ts.map +1 -0
  325. package/dist/lib/auth-provider.js +240 -0
  326. package/dist/lib/auth-provider.js.map +1 -0
  327. package/dist/lib/auth.d.ts +39 -0
  328. package/dist/lib/auth.d.ts.map +1 -0
  329. package/dist/lib/auth.js +57 -0
  330. package/dist/lib/auth.js.map +1 -0
  331. package/dist/lib/comms-account.d.ts +22 -0
  332. package/dist/lib/comms-account.d.ts.map +1 -0
  333. package/dist/lib/comms-account.js +23 -0
  334. package/dist/lib/comms-account.js.map +1 -0
  335. package/dist/lib/completion.d.ts +31 -0
  336. package/dist/lib/completion.d.ts.map +1 -0
  337. package/dist/lib/completion.js +173 -0
  338. package/dist/lib/completion.js.map +1 -0
  339. package/dist/lib/config.d.ts +61 -0
  340. package/dist/lib/config.d.ts.map +1 -0
  341. package/dist/lib/config.js +184 -0
  342. package/dist/lib/config.js.map +1 -0
  343. package/dist/lib/dates.d.ts +3 -0
  344. package/dist/lib/dates.d.ts.map +1 -0
  345. package/dist/lib/dates.js +44 -0
  346. package/dist/lib/dates.js.map +1 -0
  347. package/dist/lib/errors.d.ts +28 -0
  348. package/dist/lib/errors.d.ts.map +1 -0
  349. package/dist/lib/errors.js +34 -0
  350. package/dist/lib/errors.js.map +1 -0
  351. package/dist/lib/global-args.d.ts +52 -0
  352. package/dist/lib/global-args.d.ts.map +1 -0
  353. package/dist/lib/global-args.js +124 -0
  354. package/dist/lib/global-args.js.map +1 -0
  355. package/dist/lib/input.d.ts +3 -0
  356. package/dist/lib/input.d.ts.map +1 -0
  357. package/dist/lib/input.js +80 -0
  358. package/dist/lib/input.js.map +1 -0
  359. package/dist/lib/markdown.d.ts +3 -0
  360. package/dist/lib/markdown.d.ts.map +1 -0
  361. package/dist/lib/markdown.js +15 -0
  362. package/dist/lib/markdown.js.map +1 -0
  363. package/dist/lib/options.d.ts +16 -0
  364. package/dist/lib/options.d.ts.map +1 -0
  365. package/dist/lib/options.js +2 -0
  366. package/dist/lib/options.js.map +1 -0
  367. package/dist/lib/output.d.ts +41 -0
  368. package/dist/lib/output.d.ts.map +1 -0
  369. package/dist/lib/output.js +184 -0
  370. package/dist/lib/output.js.map +1 -0
  371. package/dist/lib/permissions.d.ts +4 -0
  372. package/dist/lib/permissions.d.ts.map +1 -0
  373. package/dist/lib/permissions.js +41 -0
  374. package/dist/lib/permissions.js.map +1 -0
  375. package/dist/lib/progress.d.ts +29 -0
  376. package/dist/lib/progress.d.ts.map +1 -0
  377. package/dist/lib/progress.js +86 -0
  378. package/dist/lib/progress.js.map +1 -0
  379. package/dist/lib/public-channels.d.ts +4 -0
  380. package/dist/lib/public-channels.d.ts.map +1 -0
  381. package/dist/lib/public-channels.js +32 -0
  382. package/dist/lib/public-channels.js.map +1 -0
  383. package/dist/lib/refs.d.ts +82 -0
  384. package/dist/lib/refs.d.ts.map +1 -0
  385. package/dist/lib/refs.js +468 -0
  386. package/dist/lib/refs.js.map +1 -0
  387. package/dist/lib/search-api.d.ts +25 -0
  388. package/dist/lib/search-api.d.ts.map +1 -0
  389. package/dist/lib/search-api.js +93 -0
  390. package/dist/lib/search-api.js.map +1 -0
  391. package/dist/lib/search-helpers.d.ts +32 -0
  392. package/dist/lib/search-helpers.d.ts.map +1 -0
  393. package/dist/lib/search-helpers.js +183 -0
  394. package/dist/lib/search-helpers.js.map +1 -0
  395. package/dist/lib/skills/content.d.ts +8 -0
  396. package/dist/lib/skills/content.d.ts.map +1 -0
  397. package/dist/lib/skills/content.js +419 -0
  398. package/dist/lib/skills/content.js.map +1 -0
  399. package/dist/lib/skills/create-installer.d.ts +9 -0
  400. package/dist/lib/skills/create-installer.d.ts.map +1 -0
  401. package/dist/lib/skills/create-installer.js +65 -0
  402. package/dist/lib/skills/create-installer.js.map +1 -0
  403. package/dist/lib/skills/index.d.ts +7 -0
  404. package/dist/lib/skills/index.d.ts.map +1 -0
  405. package/dist/lib/skills/index.js +54 -0
  406. package/dist/lib/skills/index.js.map +1 -0
  407. package/dist/lib/skills/types.d.ts +30 -0
  408. package/dist/lib/skills/types.d.ts.map +1 -0
  409. package/dist/lib/skills/types.js +2 -0
  410. package/dist/lib/skills/types.js.map +1 -0
  411. package/dist/lib/skills/update-installed.d.ts +9 -0
  412. package/dist/lib/skills/update-installed.d.ts.map +1 -0
  413. package/dist/lib/skills/update-installed.js +20 -0
  414. package/dist/lib/skills/update-installed.js.map +1 -0
  415. package/dist/lib/spinner.d.ts +3 -0
  416. package/dist/lib/spinner.d.ts.map +1 -0
  417. package/dist/lib/spinner.js +10 -0
  418. package/dist/lib/spinner.js.map +1 -0
  419. package/dist/lib/threads.d.ts +4 -0
  420. package/dist/lib/threads.d.ts.map +1 -0
  421. package/dist/lib/threads.js +6 -0
  422. package/dist/lib/threads.js.map +1 -0
  423. package/dist/lib/update.d.ts +13 -0
  424. package/dist/lib/update.d.ts.map +1 -0
  425. package/dist/lib/update.js +23 -0
  426. package/dist/lib/update.js.map +1 -0
  427. package/dist/lib/user-records.d.ts +15 -0
  428. package/dist/lib/user-records.d.ts.map +1 -0
  429. package/dist/lib/user-records.js +84 -0
  430. package/dist/lib/user-records.js.map +1 -0
  431. package/dist/lib/validation.d.ts +2 -0
  432. package/dist/lib/validation.d.ts.map +1 -0
  433. package/dist/lib/validation.js +7 -0
  434. package/dist/lib/validation.js.map +1 -0
  435. package/dist/postinstall.d.ts +2 -0
  436. package/dist/postinstall.d.ts.map +1 -0
  437. package/dist/postinstall.js +4 -0
  438. package/dist/postinstall.js.map +1 -0
  439. package/package.json +77 -8
  440. package/scripts/check-skill-sync.js +40 -0
  441. package/scripts/postinstall.js +12 -0
  442. 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,2 @@
1
+ export declare function loginWithToken(): Promise<void>;
2
+ //# sourceMappingURL=token.d.ts.map
@@ -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,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerChangelogCommand(program: Command): void;
3
+ //# sourceMappingURL=changelog.d.ts.map
@@ -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,3 @@
1
+ import { type ChannelMutationOptions } from './membership-helpers.js';
2
+ export declare function addChannelMembers(channelRef: string, refs: string[], options: ChannelMutationOptions): Promise<void>;
3
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/channel/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAA2B,MAAM,yBAAyB,CAAA;AAE9F,wBAAsB,iBAAiB,CACnC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,5 @@
1
+ import { mutateChannelMembership } from './membership-helpers.js';
2
+ export async function addChannelMembers(channelRef, refs, options) {
3
+ return mutateChannelMembership(channelRef, refs, 'add', options);
4
+ }
5
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/channel/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAE9F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,UAAkB,EAClB,IAAc,EACd,OAA+B;IAE/B,OAAO,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACpE,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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerChannelCommand(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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;AAW3C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwN7D"}
@@ -0,0 +1,181 @@
1
+ import { Option } from 'commander';
2
+ import { withCaseInsensitiveChoices } from '../../lib/completion.js';
3
+ import { addChannelMembers } from './add.js';
4
+ import { createChannel } from './create.js';
5
+ import { listChannels } from './list.js';
6
+ import { listChannelMembers } from './members.js';
7
+ import { removeChannelMembers } from './remove.js';
8
+ import { setChannelMembers } from './set.js';
9
+ import { showChannelThreads } from './threads.js';
10
+ import { updateChannel } from './update.js';
11
+ export function registerChannelCommand(program) {
12
+ const channel = program
13
+ .command('channel')
14
+ .alias('channels')
15
+ .description('Channel operations (list, create, update, threads, members)');
16
+ channel
17
+ .command('list [workspace-ref]', { isDefault: true })
18
+ .description('List joined channels or discoverable public channels in a workspace')
19
+ .option('--workspace <ref>', 'Workspace ID or name')
20
+ .option('--scope <scope>', 'Channel set to list: joined, public, or discoverable (default: joined)')
21
+ .option('--state <state>', 'Channel state to list: active, all, or archived (default: active)')
22
+ .option('--json', 'Output as JSON')
23
+ .option('--ndjson', 'Output as newline-delimited JSON')
24
+ .option('--full', 'Include all fields in JSON output')
25
+ .addHelpText('after', `
26
+ Examples:
27
+ tdc channels
28
+ tdc channels --state all
29
+ tdc channels --scope discoverable
30
+ tdc channels --scope public --state archived
31
+ tdc channels --scope public --state all --json
32
+ tdc channels --json
33
+ tdc channels "My Workspace" --scope discoverable --json
34
+
35
+ Notes:
36
+ Defaults to active channels that you have joined.
37
+ joined Channels you have joined (private channels require --include-private-channels)
38
+ public Public channels visible in the workspace, whether joined or not
39
+ discoverable Public channels visible in the workspace that you have not joined
40
+ active Non-archived channels only
41
+ all Both active and archived channels
42
+ archived Archived channels only
43
+
44
+ Comms does not expose unjoined private channels, so public/discoverable scopes never include them.`)
45
+ .action(listChannels);
46
+ channel
47
+ .command('create <name>')
48
+ .description('Create a channel')
49
+ .option('--workspace <ref>', 'Workspace ID or name')
50
+ .option('--description <text>', 'Channel description')
51
+ .option('--users <refs>', 'Comma-separated user references to add (id:N, email, or name)')
52
+ .option('--public', 'Create a public channel')
53
+ .option('--private', 'Create a private channel')
54
+ .option('--dry-run', 'Show what would be created without creating')
55
+ .option('--json', 'Output created channel as JSON')
56
+ .option('--full', 'Include all fields in JSON output')
57
+ .addHelpText('after', `
58
+ Examples:
59
+ tdc channel create "Engineering"
60
+ tdc channel create "Leadership Team" --private --users id:10,id:20
61
+ tdc channel create "Product" --workspace "Doist" --description "Product discussions" --json`)
62
+ .action(createChannel);
63
+ channel
64
+ .command('update <channel-ref> [name]')
65
+ .description('Update channel metadata')
66
+ .option('--workspace <ref>', 'Workspace ID or name')
67
+ .option('--name <name>', 'New channel name')
68
+ .option('--description <text>', 'New channel description')
69
+ .option('--clear-description', 'Clear the channel description')
70
+ .option('--public', 'Make the channel public')
71
+ .option('--private', 'Make the channel private')
72
+ .option('--dry-run', 'Show what would be updated without updating')
73
+ .option('--json', 'Output updated channel as JSON')
74
+ .option('--full', 'Include all fields in JSON output')
75
+ .addHelpText('after', `
76
+ Examples:
77
+ tdc channel update "Engineering" "Platform Engineering"
78
+ tdc channel update id:abc123 --description "Team discussions"
79
+ tdc channel update "Leadership" --private --json`)
80
+ .action(updateChannel);
81
+ channel
82
+ .command('threads <channel-ref> [workspace-ref]')
83
+ .description('List threads in a channel with pagination and filtering')
84
+ .option('--workspace <ref>', 'Workspace ID or name')
85
+ .option('--unread', 'Only show unread threads')
86
+ .addOption(withCaseInsensitiveChoices(new Option('--archive-filter <filter>', 'Show active, archived, or all threads (default: active)'), ['active', 'archived', 'all']))
87
+ .option('--since <date>', 'Threads updated on/after this date (ISO format)')
88
+ .option('--until <date>', 'Threads updated before this date (ISO format)')
89
+ .option('--limit <n>', 'Max threads per page (default: 50)')
90
+ .option('--cursor <cursor>', 'Pagination cursor from a previous response')
91
+ .option('--json', 'Output as JSON')
92
+ .option('--ndjson', 'Output as newline-delimited JSON')
93
+ .option('--full', 'Include all fields in JSON output')
94
+ .addHelpText('after', `
95
+ Examples:
96
+ tdc channel threads 12345
97
+ tdc channel threads "general"
98
+ tdc channel threads id:12345 --unread
99
+ tdc channel threads 12345 --archive-filter all --since 2026-01-01
100
+ tdc channel threads 12345 --limit 20 --json
101
+ tdc channel threads 12345 --limit 20 --cursor <cursor-from-previous>
102
+
103
+ Notes:
104
+ Sorted newest-first by last activity. --limit, --cursor, --since, --until,
105
+ and --unread are applied client-side; --archive-filter is applied server-side.`)
106
+ .action(showChannelThreads);
107
+ const members = channel
108
+ .command('members')
109
+ .description('Channel membership operations (list, add, remove, set)');
110
+ members
111
+ .command('list <channel-ref>', { isDefault: true })
112
+ .description("List a channel's members and groups fully present in the channel")
113
+ .option('--json', 'Output as JSON')
114
+ .option('--ndjson', 'Output as newline-delimited JSON')
115
+ .option('--full', 'Include all fields in JSON output')
116
+ .addHelpText('after', `
117
+ Examples:
118
+ tdc channel members 12345
119
+ tdc channel members "general" --json
120
+ tdc channel members add 12345 alice group:Design
121
+ tdc channel members remove 12345 alice
122
+ tdc channel members set 12345 group:Squad --apply
123
+
124
+ Notes:
125
+ "Groups fully in channel" lists groups whose entire current membership is
126
+ already in the channel — a hint, not a persistent link.`)
127
+ .action(listChannelMembers);
128
+ members
129
+ .command('add <channel-ref> [refs...]')
130
+ .description('Add users and/or groups to a channel')
131
+ .option('--dry-run', 'Show what would change without changing')
132
+ .option('--json', 'Output result as JSON')
133
+ .option('--full', 'Include the full updated channel in JSON output')
134
+ .addHelpText('after', `
135
+ Examples:
136
+ tdc channel members add 12345 alice@doist.com bob@doist.com
137
+ tdc channel members add "general" group:Frontend
138
+ tdc channel members add 12345 alice group:Design id:789 --json
139
+
140
+ Notes:
141
+ Refs accept user identifiers (id:N, email, name) or "group:<ref>" to expand
142
+ a group to its current members. Group expansion is one-shot — users added
143
+ later to the group will not auto-join the channel.`)
144
+ .action(addChannelMembers);
145
+ members
146
+ .command('remove <channel-ref> [refs...]')
147
+ .description('Remove users and/or groups from a channel')
148
+ .option('--dry-run', 'Show what would change without changing')
149
+ .option('--json', 'Output result as JSON')
150
+ .option('--full', 'Include the full updated channel in JSON output')
151
+ .addHelpText('after', `
152
+ Examples:
153
+ tdc channel members remove 12345 alice@doist.com
154
+ tdc channel members remove "general" group:Frontend
155
+
156
+ Notes:
157
+ Refs accept user identifiers (id:N, email, name) or "group:<ref>" to expand
158
+ a group to its current members.`)
159
+ .action(removeChannelMembers);
160
+ members
161
+ .command('set <channel-ref> [refs...]')
162
+ .description('Replace channel membership with the resolved set of refs')
163
+ .option('--apply', 'Actually mutate (otherwise dry-run)')
164
+ .option('--include-self', 'Allow set to remove the acting user')
165
+ .option('--dry-run', 'Force dry-run (default behaviour)')
166
+ .option('--json', 'Output result as JSON')
167
+ .option('--full', 'Include the full updated channel in JSON output')
168
+ .addHelpText('after', `
169
+ Examples:
170
+ tdc channel members set 12345 group:Frontend group:Design
171
+ tdc channel members set "general" alice bob carol --apply
172
+ tdc channel members set 12345 group:Squad --apply --include-self
173
+
174
+ Notes:
175
+ Dry-run by default. Pass --apply to mutate.
176
+ Refuses to remove the acting user unless --include-self is also passed.
177
+ Group expansion is one-shot — users added later to a referenced group will
178
+ not auto-join the channel.`)
179
+ .action(setChannelMembers);
180
+ }
181
+ //# 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"}