@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,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,6 @@
1
+ export interface ViewConfigOptions {
2
+ json?: boolean;
3
+ showToken?: boolean;
4
+ }
5
+ export declare function viewConfig(options: ViewConfigOptions): Promise<void>;
6
+ //# sourceMappingURL=view.d.ts.map
@@ -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,3 @@
1
+ import { type DoneOptions } from './helpers.js';
2
+ export declare function markConversationDone(ref: string, options: DoneOptions): Promise<void>;
3
+ //# sourceMappingURL=done.d.ts.map
@@ -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"}
@@ -0,0 +1,119 @@
1
+ import chalk from 'chalk';
2
+ import { buildUserNameMap, getCommsClient } from '../../lib/api.js';
3
+ import { formatRelativeDate } from '../../lib/dates.js';
4
+ import { CliError } from '../../lib/errors.js';
5
+ import { isAccessible } from '../../lib/global-args.js';
6
+ import { renderMarkdown } from '../../lib/markdown.js';
7
+ import { colors, formatJson, formatNdjson, printEmpty } from '../../lib/output.js';
8
+ export function buildConversationTitle(conversation, userMap) {
9
+ const participants = conversation.userIds
10
+ .map((id) => userMap.get(id) || `user:${id}`)
11
+ .join(', ');
12
+ return conversation.title || `Conversation with ${participants}`;
13
+ }
14
+ export function conversationLabel(conversation) {
15
+ return conversation.title
16
+ ? `${conversation.title} (${conversation.id})`
17
+ : `conversation ${conversation.id}`;
18
+ }
19
+ export function sortByLastActiveDescending(a, b) {
20
+ return new Date(b.lastActive).getTime() - new Date(a.lastActive).getTime();
21
+ }
22
+ export async function getAllConversations(workspaceId) {
23
+ const client = await getCommsClient();
24
+ const [active, archived] = await Promise.all([
25
+ client.conversations.getConversations({ workspaceId }),
26
+ client.conversations.getConversations({ workspaceId, archived: true }),
27
+ ]);
28
+ const byId = new Map();
29
+ for (const conversation of [...active, ...archived]) {
30
+ byId.set(conversation.id, conversation);
31
+ }
32
+ return [...byId.values()].sort(sortByLastActiveDescending);
33
+ }
34
+ function scanForDirectConversation(conversations, sessionUserId, targetUserId) {
35
+ let extraGroupCount = 0;
36
+ for (const conversation of conversations) {
37
+ if (!conversation.userIds.includes(targetUserId))
38
+ continue;
39
+ const isSelfConversation = sessionUserId === targetUserId;
40
+ const isDirect = isSelfConversation
41
+ ? conversation.userIds.length === 1
42
+ : conversation.userIds.length === 2 && conversation.userIds.includes(sessionUserId);
43
+ if (isDirect)
44
+ return { match: conversation, extraGroupCount };
45
+ if (conversation.userIds.length > (isSelfConversation ? 1 : 2)) {
46
+ extraGroupCount += 1;
47
+ }
48
+ }
49
+ return { extraGroupCount };
50
+ }
51
+ export async function findDirectConversation(workspaceId, sessionUserId, targetUserId) {
52
+ const client = await getCommsClient();
53
+ // Active first — only scan archived on miss.
54
+ const active = await client.conversations.getConversations({ workspaceId });
55
+ const activeScan = scanForDirectConversation(active, sessionUserId, targetUserId);
56
+ if (activeScan.match) {
57
+ return {
58
+ directConversation: activeScan.match,
59
+ groupConversationCount: activeScan.extraGroupCount,
60
+ };
61
+ }
62
+ const archived = await client.conversations.getConversations({ workspaceId, archived: true });
63
+ const archivedScan = scanForDirectConversation(archived, sessionUserId, targetUserId);
64
+ return {
65
+ directConversation: archivedScan.match,
66
+ groupConversationCount: activeScan.extraGroupCount + archivedScan.extraGroupCount,
67
+ };
68
+ }
69
+ export async function listConversationsWithUser(conversations, workspaceId, options) {
70
+ if (conversations.length === 0) {
71
+ printEmpty({
72
+ options,
73
+ type: 'conversation',
74
+ message: 'No matching conversations found.',
75
+ });
76
+ return;
77
+ }
78
+ const client = await getCommsClient();
79
+ const userMap = await buildUserNameMap(workspaceId, client);
80
+ const output = conversations.map((conversation) => ({
81
+ ...conversation,
82
+ participantNames: conversation.userIds.map((id) => userMap.get(id)),
83
+ }));
84
+ if (options.json) {
85
+ console.log(formatJson(output, 'conversation', options.full));
86
+ return;
87
+ }
88
+ if (options.ndjson) {
89
+ console.log(formatNdjson(output, 'conversation', options.full));
90
+ return;
91
+ }
92
+ for (const conversation of conversations) {
93
+ const title = buildConversationTitle(conversation, userMap);
94
+ const archivedBadge = conversation.archived
95
+ ? chalk.yellow(isAccessible() ? ' (archived)' : ' [archived]')
96
+ : '';
97
+ console.log(`${chalk.bold(title)}${archivedBadge}`);
98
+ const participants = conversation.userIds
99
+ .map((id) => userMap.get(id) || `user:${id}`)
100
+ .join(', ');
101
+ console.log(` ${colors.timestamp(`id:${conversation.id}`)} ${colors.author(participants)}`);
102
+ if (options.snippet && conversation.snippet) {
103
+ console.log(await renderMarkdown(conversation.snippet));
104
+ }
105
+ console.log(` ${colors.timestamp(formatRelativeDate(conversation.lastActive))}`);
106
+ console.log(` ${colors.url(conversation.url)}`);
107
+ console.log('');
108
+ }
109
+ }
110
+ export function parseMinutes(value) {
111
+ if (!value)
112
+ return 60;
113
+ const parsed = Number(value);
114
+ if (!Number.isInteger(parsed) || parsed <= 0) {
115
+ throw new CliError('INVALID_MINUTES', `Invalid --minutes value: ${value} (must be a positive integer)`);
116
+ }
117
+ return parsed;
118
+ }
119
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/commands/conversation/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerConversationCommand(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8HlE"}
@@ -0,0 +1,107 @@
1
+ import { markConversationDone } from './done.js';
2
+ import { muteConversation } from './mute.js';
3
+ import { replyToConversation } from './reply.js';
4
+ import { unmuteConversation } from './unmute.js';
5
+ import { showUnread } from './unread.js';
6
+ import { viewConversation } from './view.js';
7
+ import { findConversationWithUser } from './with.js';
8
+ export function registerConversationCommand(program) {
9
+ const conversation = program
10
+ .command('conversation')
11
+ .alias('convo')
12
+ .description('Conversation (DM/group) operations');
13
+ conversation
14
+ .command('unread [workspace-ref]')
15
+ .description('List unread conversations')
16
+ .option('--workspace <ref>', 'Workspace ID or name')
17
+ .option('--json', 'Output as JSON')
18
+ .option('--ndjson', 'Output as newline-delimited JSON')
19
+ .option('--full', 'Include all fields in JSON output')
20
+ .addHelpText('after', `
21
+ Examples:
22
+ tdc conversation unread
23
+ tdc conversation unread --json`)
24
+ .action(showUnread);
25
+ conversation
26
+ .command('view [conversation-ref]', { isDefault: true })
27
+ .description('Display a conversation with its messages')
28
+ .option('--limit <n>', 'Max messages to show (default: 50)')
29
+ .option('--since <date>', 'Messages newer than')
30
+ .option('--until <date>', 'Messages older than')
31
+ .option('--raw', 'Show raw markdown instead of rendered')
32
+ .option('--json', 'Output as JSON')
33
+ .option('--ndjson', 'Output as newline-delimited JSON')
34
+ .option('--full', 'Include all fields in JSON output')
35
+ .addHelpText('after', `
36
+ Examples:
37
+ tdc conversation 12345
38
+ tdc conversation view 12345 --limit 20
39
+ tdc conversation view 12345 --since 2025-01-01 --json`)
40
+ .action((ref, options) => {
41
+ if (!ref) {
42
+ conversation.help();
43
+ return;
44
+ }
45
+ return viewConversation(ref, options);
46
+ });
47
+ conversation
48
+ .command('with <user-ref> [workspace-ref]')
49
+ .description('Find your 1:1 conversation with a user')
50
+ .option('--workspace <ref>', 'Workspace ID or name')
51
+ .option('--include-groups', 'List any conversation that includes this user')
52
+ .option('--snippet', 'Include the latest message snippet in text output')
53
+ .option('--json', 'Output as JSON')
54
+ .option('--ndjson', 'Output as newline-delimited JSON')
55
+ .option('--full', 'Include all fields in JSON output')
56
+ .addHelpText('after', `
57
+ Examples:
58
+ tdc conversation with "Jane Smith"
59
+ tdc conversation with id:5678 --json
60
+ tdc conversation with "Jane" --include-groups --snippet`)
61
+ .action(findConversationWithUser);
62
+ conversation
63
+ .command('reply <conversation-ref> [content]')
64
+ .description('Send a message in a conversation')
65
+ .option('--dry-run', 'Show what would be sent without sending')
66
+ .option('--json', 'Output sent message as JSON')
67
+ .option('--full', 'Include all fields in JSON output')
68
+ .addHelpText('after', `
69
+ Examples:
70
+ tdc conversation reply 12345 "Hello!"
71
+ echo "Message body" | tdc conversation reply 12345
72
+ tdc conversation reply 12345 "Update" --json`)
73
+ .action(replyToConversation);
74
+ conversation
75
+ .command('done <conversation-ref>')
76
+ .description('Archive a conversation')
77
+ .option('--dry-run', 'Show what would happen without executing')
78
+ .option('--json', 'Output result as JSON')
79
+ .addHelpText('after', `
80
+ Examples:
81
+ tdc conversation done 12345
82
+ tdc conversation done 12345 --dry-run`)
83
+ .action(markConversationDone);
84
+ conversation
85
+ .command('mute <conversation-ref>')
86
+ .description('Mute a conversation (stop notifications)')
87
+ .option('--minutes <n>', 'Number of minutes to mute (default: 60)')
88
+ .option('--dry-run', 'Show what would happen without executing')
89
+ .option('--json', 'Output result as JSON')
90
+ .option('--full', 'Include all fields in JSON output')
91
+ .addHelpText('after', `
92
+ Examples:
93
+ tdc conversation mute 12345
94
+ tdc conversation mute 12345 --minutes 480`)
95
+ .action(muteConversation);
96
+ conversation
97
+ .command('unmute <conversation-ref>')
98
+ .description('Unmute a muted conversation (restore notifications)')
99
+ .option('--dry-run', 'Show what would happen without executing')
100
+ .option('--json', 'Output result as JSON')
101
+ .option('--full', 'Include all fields in JSON output')
102
+ .addHelpText('after', `
103
+ Examples:
104
+ tdc conversation unmute 12345`)
105
+ .action(unmuteConversation);
106
+ }
107
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/conversation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type MuteOptions } from './helpers.js';
2
+ export declare function muteConversation(ref: string, options: MuteOptions): Promise<void>;
3
+ //# sourceMappingURL=mute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mute.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/mute.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAgB,MAAM,cAAc,CAAA;AAEhF,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF"}
@@ -0,0 +1,30 @@
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, parseMinutes } from './helpers.js';
5
+ export async function muteConversation(ref, options) {
6
+ const conversationId = resolveConversationId(ref);
7
+ const minutes = parseMinutes(options.minutes);
8
+ const client = await getCommsClient();
9
+ if (options.dryRun) {
10
+ const conversation = await client.conversations.getConversation(conversationId);
11
+ printDryRun('mute conversation', {
12
+ Conversation: conversationLabel(conversation),
13
+ Duration: `${minutes} minutes`,
14
+ 'Currently muted until': conversation.mutedUntil?.toISOString(),
15
+ });
16
+ return;
17
+ }
18
+ const updated = await client.conversations.muteConversation({ id: conversationId, minutes });
19
+ if (options.json) {
20
+ if (options.full) {
21
+ console.log(formatJson(updated, 'conversation', true));
22
+ }
23
+ else {
24
+ console.log(formatJson({ id: updated.id, mutedUntil: updated.mutedUntil }));
25
+ }
26
+ return;
27
+ }
28
+ console.log(`Conversation ${conversationId} muted for ${minutes} minutes.`);
29
+ }
30
+ //# sourceMappingURL=mute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mute.js","sourceRoot":"","sources":["../../../src/commands/conversation/mute.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,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAoB;IACpE,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7C,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,mBAAmB,EAAE;YAC7B,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC7C,QAAQ,EAAE,GAAG,OAAO,UAAU;YAC9B,uBAAuB,EAAE,YAAY,CAAC,UAAU,EAAE,WAAW,EAAE;SAClE,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAA;IAE5F,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;QAC/E,CAAC;QACD,OAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,cAAc,cAAc,OAAO,WAAW,CAAC,CAAA;AAC/E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ReplyOptions } from './helpers.js';
2
+ export declare function replyToConversation(ref: string, content: string | undefined, options: ReplyOptions): Promise<void>;
3
+ //# sourceMappingURL=reply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/reply.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,wBAAsB,mBAAmB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,GACtB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -0,0 +1,37 @@
1
+ import { getCommsClient } from '../../lib/api.js';
2
+ import { CliError } from '../../lib/errors.js';
3
+ import { openEditor, readStdin } from '../../lib/input.js';
4
+ import { formatJson, printDryRun } from '../../lib/output.js';
5
+ import { resolveConversationId } from '../../lib/refs.js';
6
+ export async function replyToConversation(ref, content, options) {
7
+ const conversationId = resolveConversationId(ref);
8
+ let replyContent = await readStdin();
9
+ if (!replyContent && content) {
10
+ replyContent = content;
11
+ }
12
+ if (!replyContent) {
13
+ replyContent = await openEditor();
14
+ }
15
+ if (!replyContent || replyContent.trim() === '') {
16
+ throw new CliError('MISSING_CONTENT', 'No content provided. Pass content as an argument or pipe via stdin.');
17
+ }
18
+ if (options.dryRun) {
19
+ const preview = replyContent.length > 200 ? `${replyContent.slice(0, 200)}...` : replyContent;
20
+ printDryRun('send message to conversation', {
21
+ Conversation: String(conversationId),
22
+ Content: preview,
23
+ });
24
+ return;
25
+ }
26
+ const client = await getCommsClient();
27
+ const message = await client.conversationMessages.createMessage({
28
+ conversationId,
29
+ content: replyContent,
30
+ });
31
+ if (options.json) {
32
+ console.log(formatJson(message, 'message', options.full));
33
+ return;
34
+ }
35
+ console.log(`Message sent: ${message.url}`);
36
+ }
37
+ //# sourceMappingURL=reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.js","sourceRoot":"","sources":["../../../src/commands/conversation/reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAGzD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,GAAW,EACX,OAA2B,EAC3B,OAAqB;IAErB,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAEjD,IAAI,YAAY,GAAG,MAAM,SAAS,EAAE,CAAA;IACpC,IAAI,CAAC,YAAY,IAAI,OAAO,EAAE,CAAC;QAC3B,YAAY,GAAG,OAAO,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,YAAY,GAAG,MAAM,UAAU,EAAE,CAAA;IACrC,CAAC;IACD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,QAAQ,CACd,iBAAiB,EACjB,qEAAqE,CACxE,CAAA;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,OAAO,GACT,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAA;QACjF,WAAW,CAAC,8BAA8B,EAAE;YACxC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;YACpC,OAAO,EAAE,OAAO;SACnB,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAC5D,cAAc;QACd,OAAO,EAAE,YAAY;KACxB,CAAC,CAAA;IAEF,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,iBAAiB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AAC/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MutationOptions } from '../../lib/options.js';
2
+ export declare function unmuteConversation(ref: string, options: MutationOptions): Promise<void>;
3
+ //# sourceMappingURL=unmute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unmute.d.ts","sourceRoot":"","sources":["../../../src/commands/conversation/unmute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAK3D,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7F"}