@doist/comms-cli 0.0.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/CHANGELOG.md +8 -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/create.d.ts +11 -0
  40. package/dist/commands/channel/create.d.ts.map +1 -0
  41. package/dist/commands/channel/create.js +35 -0
  42. package/dist/commands/channel/create.js.map +1 -0
  43. package/dist/commands/channel/helpers.d.ts +9 -0
  44. package/dist/commands/channel/helpers.d.ts.map +1 -0
  45. package/dist/commands/channel/helpers.js +51 -0
  46. package/dist/commands/channel/helpers.js.map +1 -0
  47. package/dist/commands/channel/index.d.ts +3 -0
  48. package/dist/commands/channel/index.d.ts.map +1 -0
  49. package/dist/commands/channel/index.js +104 -0
  50. package/dist/commands/channel/index.js.map +1 -0
  51. package/dist/commands/channel/list.d.ts +8 -0
  52. package/dist/commands/channel/list.d.ts.map +1 -0
  53. package/dist/commands/channel/list.js +144 -0
  54. package/dist/commands/channel/list.js.map +1 -0
  55. package/dist/commands/channel/threads.d.ts +11 -0
  56. package/dist/commands/channel/threads.d.ts.map +1 -0
  57. package/dist/commands/channel/threads.js +100 -0
  58. package/dist/commands/channel/threads.js.map +1 -0
  59. package/dist/commands/channel/update.d.ts +12 -0
  60. package/dist/commands/channel/update.d.ts.map +1 -0
  61. package/dist/commands/channel/update.js +84 -0
  62. package/dist/commands/channel/update.js.map +1 -0
  63. package/dist/commands/comment/delete.d.ts +5 -0
  64. package/dist/commands/comment/delete.d.ts.map +1 -0
  65. package/dist/commands/comment/delete.js +33 -0
  66. package/dist/commands/comment/delete.js.map +1 -0
  67. package/dist/commands/comment/index.d.ts +3 -0
  68. package/dist/commands/comment/index.d.ts.map +1 -0
  69. package/dist/commands/comment/index.js +49 -0
  70. package/dist/commands/comment/index.js.map +1 -0
  71. package/dist/commands/comment/update.d.ts +5 -0
  72. package/dist/commands/comment/update.d.ts.map +1 -0
  73. package/dist/commands/comment/update.js +37 -0
  74. package/dist/commands/comment/update.js.map +1 -0
  75. package/dist/commands/comment/view.d.ts +3 -0
  76. package/dist/commands/comment/view.d.ts.map +1 -0
  77. package/dist/commands/comment/view.js +31 -0
  78. package/dist/commands/comment/view.js.map +1 -0
  79. package/dist/commands/completion/helpers.d.ts +14 -0
  80. package/dist/commands/completion/helpers.d.ts.map +1 -0
  81. package/dist/commands/completion/helpers.js +37 -0
  82. package/dist/commands/completion/helpers.js.map +1 -0
  83. package/dist/commands/completion/index.d.ts +3 -0
  84. package/dist/commands/completion/index.d.ts.map +1 -0
  85. package/dist/commands/completion/index.js +22 -0
  86. package/dist/commands/completion/index.js.map +1 -0
  87. package/dist/commands/completion/install.d.ts +2 -0
  88. package/dist/commands/completion/install.d.ts.map +1 -0
  89. package/dist/commands/completion/install.js +19 -0
  90. package/dist/commands/completion/install.js.map +1 -0
  91. package/dist/commands/completion/server.d.ts +3 -0
  92. package/dist/commands/completion/server.d.ts.map +1 -0
  93. package/dist/commands/completion/server.js +35 -0
  94. package/dist/commands/completion/server.js.map +1 -0
  95. package/dist/commands/completion/uninstall.d.ts +2 -0
  96. package/dist/commands/completion/uninstall.d.ts.map +1 -0
  97. package/dist/commands/completion/uninstall.js +19 -0
  98. package/dist/commands/completion/uninstall.js.map +1 -0
  99. package/dist/commands/config/index.d.ts +3 -0
  100. package/dist/commands/config/index.d.ts.map +1 -0
  101. package/dist/commands/config/index.js +29 -0
  102. package/dist/commands/config/index.js.map +1 -0
  103. package/dist/commands/config/set.d.ts +3 -0
  104. package/dist/commands/config/set.d.ts.map +1 -0
  105. package/dist/commands/config/set.js +41 -0
  106. package/dist/commands/config/set.js.map +1 -0
  107. package/dist/commands/config/view.d.ts +6 -0
  108. package/dist/commands/config/view.d.ts.map +1 -0
  109. package/dist/commands/config/view.js +121 -0
  110. package/dist/commands/config/view.js.map +1 -0
  111. package/dist/commands/conversation/done.d.ts +3 -0
  112. package/dist/commands/conversation/done.d.ts.map +1 -0
  113. package/dist/commands/conversation/done.js +23 -0
  114. package/dist/commands/conversation/done.js.map +1 -0
  115. package/dist/commands/conversation/helpers.d.ts +28 -0
  116. package/dist/commands/conversation/helpers.d.ts.map +1 -0
  117. package/dist/commands/conversation/helpers.js +119 -0
  118. package/dist/commands/conversation/helpers.js.map +1 -0
  119. package/dist/commands/conversation/index.d.ts +3 -0
  120. package/dist/commands/conversation/index.d.ts.map +1 -0
  121. package/dist/commands/conversation/index.js +107 -0
  122. package/dist/commands/conversation/index.js.map +1 -0
  123. package/dist/commands/conversation/mute.d.ts +3 -0
  124. package/dist/commands/conversation/mute.d.ts.map +1 -0
  125. package/dist/commands/conversation/mute.js +30 -0
  126. package/dist/commands/conversation/mute.js.map +1 -0
  127. package/dist/commands/conversation/reply.d.ts +3 -0
  128. package/dist/commands/conversation/reply.d.ts.map +1 -0
  129. package/dist/commands/conversation/reply.js +37 -0
  130. package/dist/commands/conversation/reply.js.map +1 -0
  131. package/dist/commands/conversation/unmute.d.ts +3 -0
  132. package/dist/commands/conversation/unmute.d.ts.map +1 -0
  133. package/dist/commands/conversation/unmute.js +28 -0
  134. package/dist/commands/conversation/unmute.js.map +1 -0
  135. package/dist/commands/conversation/unread.d.ts +3 -0
  136. package/dist/commands/conversation/unread.d.ts.map +1 -0
  137. package/dist/commands/conversation/unread.js +56 -0
  138. package/dist/commands/conversation/unread.js.map +1 -0
  139. package/dist/commands/conversation/view.d.ts +3 -0
  140. package/dist/commands/conversation/view.d.ts.map +1 -0
  141. package/dist/commands/conversation/view.js +77 -0
  142. package/dist/commands/conversation/view.js.map +1 -0
  143. package/dist/commands/conversation/with.d.ts +3 -0
  144. package/dist/commands/conversation/with.d.ts.map +1 -0
  145. package/dist/commands/conversation/with.js +48 -0
  146. package/dist/commands/conversation/with.js.map +1 -0
  147. package/dist/commands/doctor.d.ts +9 -0
  148. package/dist/commands/doctor.d.ts.map +1 -0
  149. package/dist/commands/doctor.js +325 -0
  150. package/dist/commands/doctor.js.map +1 -0
  151. package/dist/commands/groups/create.d.ts +8 -0
  152. package/dist/commands/groups/create.d.ts.map +1 -0
  153. package/dist/commands/groups/create.js +27 -0
  154. package/dist/commands/groups/create.js.map +1 -0
  155. package/dist/commands/groups/delete.d.ts +7 -0
  156. package/dist/commands/groups/delete.d.ts.map +1 -0
  157. package/dist/commands/groups/delete.js +30 -0
  158. package/dist/commands/groups/delete.js.map +1 -0
  159. package/dist/commands/groups/index.d.ts +3 -0
  160. package/dist/commands/groups/index.d.ts.map +1 -0
  161. package/dist/commands/groups/index.js +98 -0
  162. package/dist/commands/groups/index.js.map +1 -0
  163. package/dist/commands/groups/list.d.ts +7 -0
  164. package/dist/commands/groups/list.d.ts.map +1 -0
  165. package/dist/commands/groups/list.js +42 -0
  166. package/dist/commands/groups/list.js.map +1 -0
  167. package/dist/commands/groups/members.d.ts +4 -0
  168. package/dist/commands/groups/members.d.ts.map +1 -0
  169. package/dist/commands/groups/members.js +90 -0
  170. package/dist/commands/groups/members.js.map +1 -0
  171. package/dist/commands/groups/rename.d.ts +3 -0
  172. package/dist/commands/groups/rename.d.ts.map +1 -0
  173. package/dist/commands/groups/rename.js +28 -0
  174. package/dist/commands/groups/rename.js.map +1 -0
  175. package/dist/commands/groups/view.d.ts +7 -0
  176. package/dist/commands/groups/view.d.ts.map +1 -0
  177. package/dist/commands/groups/view.js +52 -0
  178. package/dist/commands/groups/view.js.map +1 -0
  179. package/dist/commands/inbox.d.ts +3 -0
  180. package/dist/commands/inbox.d.ts.map +1 -0
  181. package/dist/commands/inbox.js +147 -0
  182. package/dist/commands/inbox.js.map +1 -0
  183. package/dist/commands/mentions.d.ts +3 -0
  184. package/dist/commands/mentions.d.ts.map +1 -0
  185. package/dist/commands/mentions.js +23 -0
  186. package/dist/commands/mentions.js.map +1 -0
  187. package/dist/commands/msg/delete.d.ts +5 -0
  188. package/dist/commands/msg/delete.d.ts.map +1 -0
  189. package/dist/commands/msg/delete.js +31 -0
  190. package/dist/commands/msg/delete.js.map +1 -0
  191. package/dist/commands/msg/index.d.ts +3 -0
  192. package/dist/commands/msg/index.d.ts.map +1 -0
  193. package/dist/commands/msg/index.js +47 -0
  194. package/dist/commands/msg/index.js.map +1 -0
  195. package/dist/commands/msg/update.d.ts +5 -0
  196. package/dist/commands/msg/update.d.ts.map +1 -0
  197. package/dist/commands/msg/update.js +37 -0
  198. package/dist/commands/msg/update.js.map +1 -0
  199. package/dist/commands/msg/view.d.ts +3 -0
  200. package/dist/commands/msg/view.d.ts.map +1 -0
  201. package/dist/commands/msg/view.js +31 -0
  202. package/dist/commands/msg/view.js.map +1 -0
  203. package/dist/commands/react.d.ts +3 -0
  204. package/dist/commands/react.d.ts.map +1 -0
  205. package/dist/commands/react.js +149 -0
  206. package/dist/commands/react.js.map +1 -0
  207. package/dist/commands/search.d.ts +3 -0
  208. package/dist/commands/search.d.ts.map +1 -0
  209. package/dist/commands/search.js +30 -0
  210. package/dist/commands/search.js.map +1 -0
  211. package/dist/commands/skill/index.d.ts +3 -0
  212. package/dist/commands/skill/index.d.ts.map +1 -0
  213. package/dist/commands/skill/index.js +29 -0
  214. package/dist/commands/skill/index.js.map +1 -0
  215. package/dist/commands/skill/install.d.ts +3 -0
  216. package/dist/commands/skill/install.d.ts.map +1 -0
  217. package/dist/commands/skill/install.js +16 -0
  218. package/dist/commands/skill/install.js.map +1 -0
  219. package/dist/commands/skill/list.d.ts +6 -0
  220. package/dist/commands/skill/list.d.ts.map +1 -0
  221. package/dist/commands/skill/list.js +22 -0
  222. package/dist/commands/skill/list.js.map +1 -0
  223. package/dist/commands/skill/uninstall.d.ts +3 -0
  224. package/dist/commands/skill/uninstall.d.ts.map +1 -0
  225. package/dist/commands/skill/uninstall.js +15 -0
  226. package/dist/commands/skill/uninstall.js.map +1 -0
  227. package/dist/commands/skill/update.d.ts +3 -0
  228. package/dist/commands/skill/update.d.ts.map +1 -0
  229. package/dist/commands/skill/update.js +37 -0
  230. package/dist/commands/skill/update.js.map +1 -0
  231. package/dist/commands/thread/create.d.ts +8 -0
  232. package/dist/commands/thread/create.d.ts.map +1 -0
  233. package/dist/commands/thread/create.js +70 -0
  234. package/dist/commands/thread/create.js.map +1 -0
  235. package/dist/commands/thread/delete.d.ts +7 -0
  236. package/dist/commands/thread/delete.d.ts.map +1 -0
  237. package/dist/commands/thread/delete.js +38 -0
  238. package/dist/commands/thread/delete.js.map +1 -0
  239. package/dist/commands/thread/helpers.d.ts +24 -0
  240. package/dist/commands/thread/helpers.d.ts.map +1 -0
  241. package/dist/commands/thread/helpers.js +45 -0
  242. package/dist/commands/thread/helpers.js.map +1 -0
  243. package/dist/commands/thread/index.d.ts +3 -0
  244. package/dist/commands/thread/index.d.ts.map +1 -0
  245. package/dist/commands/thread/index.js +134 -0
  246. package/dist/commands/thread/index.js.map +1 -0
  247. package/dist/commands/thread/mutate.d.ts +5 -0
  248. package/dist/commands/thread/mutate.d.ts.map +1 -0
  249. package/dist/commands/thread/mutate.js +23 -0
  250. package/dist/commands/thread/mutate.js.map +1 -0
  251. package/dist/commands/thread/mute.d.ts +8 -0
  252. package/dist/commands/thread/mute.d.ts.map +1 -0
  253. package/dist/commands/thread/mute.js +63 -0
  254. package/dist/commands/thread/mute.js.map +1 -0
  255. package/dist/commands/thread/rename.d.ts +3 -0
  256. package/dist/commands/thread/rename.d.ts.map +1 -0
  257. package/dist/commands/thread/rename.js +29 -0
  258. package/dist/commands/thread/rename.js.map +1 -0
  259. package/dist/commands/thread/reply.d.ts +9 -0
  260. package/dist/commands/thread/reply.d.ts.map +1 -0
  261. package/dist/commands/thread/reply.js +85 -0
  262. package/dist/commands/thread/reply.js.map +1 -0
  263. package/dist/commands/thread/update.d.ts +5 -0
  264. package/dist/commands/thread/update.d.ts.map +1 -0
  265. package/dist/commands/thread/update.js +45 -0
  266. package/dist/commands/thread/update.js.map +1 -0
  267. package/dist/commands/thread/view.d.ts +9 -0
  268. package/dist/commands/thread/view.d.ts.map +1 -0
  269. package/dist/commands/thread/view.js +171 -0
  270. package/dist/commands/thread/view.js.map +1 -0
  271. package/dist/commands/update/index.d.ts +3 -0
  272. package/dist/commands/update/index.d.ts.map +1 -0
  273. package/dist/commands/update/index.js +14 -0
  274. package/dist/commands/update/index.js.map +1 -0
  275. package/dist/commands/user.d.ts +3 -0
  276. package/dist/commands/user.d.ts.map +1 -0
  277. package/dist/commands/user.js +90 -0
  278. package/dist/commands/user.js.map +1 -0
  279. package/dist/commands/view.d.ts +3 -0
  280. package/dist/commands/view.d.ts.map +1 -0
  281. package/dist/commands/view.js +68 -0
  282. package/dist/commands/view.js.map +1 -0
  283. package/dist/commands/workspace.d.ts +3 -0
  284. package/dist/commands/workspace.d.ts.map +1 -0
  285. package/dist/commands/workspace.js +56 -0
  286. package/dist/commands/workspace.js.map +1 -0
  287. package/dist/index.d.ts +3 -0
  288. package/dist/index.d.ts.map +1 -0
  289. package/dist/index.js +190 -0
  290. package/dist/index.js.map +1 -0
  291. package/dist/lib/api.d.ts +35 -0
  292. package/dist/lib/api.d.ts.map +1 -0
  293. package/dist/lib/api.js +306 -0
  294. package/dist/lib/api.js.map +1 -0
  295. package/dist/lib/auth-constants.d.ts +3 -0
  296. package/dist/lib/auth-constants.d.ts.map +1 -0
  297. package/dist/lib/auth-constants.js +3 -0
  298. package/dist/lib/auth-constants.js.map +1 -0
  299. package/dist/lib/auth-pages.d.ts +3 -0
  300. package/dist/lib/auth-pages.d.ts.map +1 -0
  301. package/dist/lib/auth-pages.js +707 -0
  302. package/dist/lib/auth-pages.js.map +1 -0
  303. package/dist/lib/auth-provider.d.ts +74 -0
  304. package/dist/lib/auth-provider.d.ts.map +1 -0
  305. package/dist/lib/auth-provider.js +238 -0
  306. package/dist/lib/auth-provider.js.map +1 -0
  307. package/dist/lib/auth.d.ts +39 -0
  308. package/dist/lib/auth.d.ts.map +1 -0
  309. package/dist/lib/auth.js +57 -0
  310. package/dist/lib/auth.js.map +1 -0
  311. package/dist/lib/comms-account.d.ts +22 -0
  312. package/dist/lib/comms-account.d.ts.map +1 -0
  313. package/dist/lib/comms-account.js +23 -0
  314. package/dist/lib/comms-account.js.map +1 -0
  315. package/dist/lib/completion.d.ts +31 -0
  316. package/dist/lib/completion.d.ts.map +1 -0
  317. package/dist/lib/completion.js +173 -0
  318. package/dist/lib/completion.js.map +1 -0
  319. package/dist/lib/config.d.ts +61 -0
  320. package/dist/lib/config.d.ts.map +1 -0
  321. package/dist/lib/config.js +184 -0
  322. package/dist/lib/config.js.map +1 -0
  323. package/dist/lib/dates.d.ts +3 -0
  324. package/dist/lib/dates.d.ts.map +1 -0
  325. package/dist/lib/dates.js +44 -0
  326. package/dist/lib/dates.js.map +1 -0
  327. package/dist/lib/errors.d.ts +28 -0
  328. package/dist/lib/errors.d.ts.map +1 -0
  329. package/dist/lib/errors.js +34 -0
  330. package/dist/lib/errors.js.map +1 -0
  331. package/dist/lib/global-args.d.ts +52 -0
  332. package/dist/lib/global-args.d.ts.map +1 -0
  333. package/dist/lib/global-args.js +124 -0
  334. package/dist/lib/global-args.js.map +1 -0
  335. package/dist/lib/input.d.ts +3 -0
  336. package/dist/lib/input.d.ts.map +1 -0
  337. package/dist/lib/input.js +80 -0
  338. package/dist/lib/input.js.map +1 -0
  339. package/dist/lib/markdown.d.ts +3 -0
  340. package/dist/lib/markdown.d.ts.map +1 -0
  341. package/dist/lib/markdown.js +15 -0
  342. package/dist/lib/markdown.js.map +1 -0
  343. package/dist/lib/options.d.ts +16 -0
  344. package/dist/lib/options.d.ts.map +1 -0
  345. package/dist/lib/options.js +2 -0
  346. package/dist/lib/options.js.map +1 -0
  347. package/dist/lib/output.d.ts +41 -0
  348. package/dist/lib/output.d.ts.map +1 -0
  349. package/dist/lib/output.js +184 -0
  350. package/dist/lib/output.js.map +1 -0
  351. package/dist/lib/permissions.d.ts +4 -0
  352. package/dist/lib/permissions.d.ts.map +1 -0
  353. package/dist/lib/permissions.js +41 -0
  354. package/dist/lib/permissions.js.map +1 -0
  355. package/dist/lib/progress.d.ts +29 -0
  356. package/dist/lib/progress.d.ts.map +1 -0
  357. package/dist/lib/progress.js +86 -0
  358. package/dist/lib/progress.js.map +1 -0
  359. package/dist/lib/public-channels.d.ts +4 -0
  360. package/dist/lib/public-channels.d.ts.map +1 -0
  361. package/dist/lib/public-channels.js +32 -0
  362. package/dist/lib/public-channels.js.map +1 -0
  363. package/dist/lib/refs.d.ts +62 -0
  364. package/dist/lib/refs.d.ts.map +1 -0
  365. package/dist/lib/refs.js +378 -0
  366. package/dist/lib/refs.js.map +1 -0
  367. package/dist/lib/search-api.d.ts +25 -0
  368. package/dist/lib/search-api.d.ts.map +1 -0
  369. package/dist/lib/search-api.js +93 -0
  370. package/dist/lib/search-api.js.map +1 -0
  371. package/dist/lib/search-helpers.d.ts +32 -0
  372. package/dist/lib/search-helpers.d.ts.map +1 -0
  373. package/dist/lib/search-helpers.js +183 -0
  374. package/dist/lib/search-helpers.js.map +1 -0
  375. package/dist/lib/skills/content.d.ts +8 -0
  376. package/dist/lib/skills/content.d.ts.map +1 -0
  377. package/dist/lib/skills/content.js +410 -0
  378. package/dist/lib/skills/content.js.map +1 -0
  379. package/dist/lib/skills/create-installer.d.ts +9 -0
  380. package/dist/lib/skills/create-installer.d.ts.map +1 -0
  381. package/dist/lib/skills/create-installer.js +65 -0
  382. package/dist/lib/skills/create-installer.js.map +1 -0
  383. package/dist/lib/skills/index.d.ts +7 -0
  384. package/dist/lib/skills/index.d.ts.map +1 -0
  385. package/dist/lib/skills/index.js +54 -0
  386. package/dist/lib/skills/index.js.map +1 -0
  387. package/dist/lib/skills/types.d.ts +30 -0
  388. package/dist/lib/skills/types.d.ts.map +1 -0
  389. package/dist/lib/skills/types.js +2 -0
  390. package/dist/lib/skills/types.js.map +1 -0
  391. package/dist/lib/skills/update-installed.d.ts +9 -0
  392. package/dist/lib/skills/update-installed.d.ts.map +1 -0
  393. package/dist/lib/skills/update-installed.js +20 -0
  394. package/dist/lib/skills/update-installed.js.map +1 -0
  395. package/dist/lib/spinner.d.ts +3 -0
  396. package/dist/lib/spinner.d.ts.map +1 -0
  397. package/dist/lib/spinner.js +10 -0
  398. package/dist/lib/spinner.js.map +1 -0
  399. package/dist/lib/threads.d.ts +4 -0
  400. package/dist/lib/threads.d.ts.map +1 -0
  401. package/dist/lib/threads.js +6 -0
  402. package/dist/lib/threads.js.map +1 -0
  403. package/dist/lib/update.d.ts +13 -0
  404. package/dist/lib/update.d.ts.map +1 -0
  405. package/dist/lib/update.js +23 -0
  406. package/dist/lib/update.js.map +1 -0
  407. package/dist/lib/user-records.d.ts +15 -0
  408. package/dist/lib/user-records.d.ts.map +1 -0
  409. package/dist/lib/user-records.js +84 -0
  410. package/dist/lib/user-records.js.map +1 -0
  411. package/dist/lib/validation.d.ts +2 -0
  412. package/dist/lib/validation.d.ts.map +1 -0
  413. package/dist/lib/validation.js +7 -0
  414. package/dist/lib/validation.js.map +1 -0
  415. package/dist/postinstall.d.ts +2 -0
  416. package/dist/postinstall.d.ts.map +1 -0
  417. package/dist/postinstall.js +4 -0
  418. package/dist/postinstall.js.map +1 -0
  419. package/package.json +77 -8
  420. package/scripts/check-skill-sync.js +40 -0
  421. package/scripts/postinstall.js +12 -0
  422. package/scripts/sync-skill.js +29 -0
@@ -0,0 +1,410 @@
1
+ import packageJson from '../../../package.json' with { type: 'json' };
2
+ export const SKILL_NAME = 'comms-cli';
3
+ export const SKILL_DESCRIPTION = 'Comms messaging CLI. View and respond to inbox threads, channel threads, direct messages, mentions, and group conversations; search, react, archive, mute, and manage workspaces. Use when the user mentions Comms, asks about their inbox, mentions, threads, DMs, channels, or wants to read or send Comms messages.';
4
+ export const SKILL_AUTHOR = 'Doist';
5
+ export const SKILL_LICENSE = 'MIT';
6
+ export const SKILL_VERSION = packageJson.version;
7
+ export const SKILL_CONTENT = `# Comms CLI (tdc)
8
+
9
+ Access Comms messaging via the \`tdc\` CLI. Use when the user asks about their Comms workspaces, threads, messages, or wants to interact with Comms in any way.
10
+
11
+ ## Setup
12
+
13
+ \`\`\`bash
14
+ tdc auth login # OAuth login (opens browser, read-write)
15
+ tdc auth login --read-only # OAuth login with read-only scope
16
+ tdc auth login --callback-port <n># Override the local OAuth callback port (default 8766)
17
+ tdc auth login --json # Emit a JSON envelope for scripted / agent use
18
+ tdc auth login --ndjson # Emit an NDJSON envelope for scripted / agent use
19
+ tdc auth token # Save API token manually (prompts securely; scope unknown, assumed write-capable)
20
+ tdc auth status # Verify authentication + show mode
21
+ tdc auth status --json # Full status payload as JSON (--ndjson also supported)
22
+ tdc auth status --user <ref> # Target a specific stored account (id, id:<n>, or display name)
23
+ tdc --user <ref> auth <status|logout|token view> # Equivalent to passing --user after the subcommand; other commands accept the flag but ignore it
24
+ tdc auth logout # Remove saved token and auth metadata
25
+ tdc auth logout --json # Emits \`{"ok": true}\` (--ndjson is silent)
26
+ tdc auth logout --user <ref> # Target a specific stored account; mismatched ref errors with ACCOUNT_NOT_FOUND
27
+ tdc auth token view # Print the saved token to stdout (pipe-safe; refuses if COMMS_API_TOKEN is set)
28
+ tdc auth token view --user <ref> # Print the saved token for a specific stored account
29
+ tdc account [list|current|use <ref>|remove <ref>] # Manage stored accounts; all support --json/--ndjson
30
+ # current's payload is {id, label, authMode, authScope, source:"config"} | {source:"env"} | {source:"token-only"}
31
+ tdc auth login # Re-running auth login with a different OAuth grant adds a NEW account; default stays pinned unless none was set
32
+ tdc workspaces # List available workspaces
33
+ tdc workspace use <ref> # Set current workspace
34
+ tdc completion install # Install shell completions
35
+ tdc config view # Show the current CLI configuration file (token masked)
36
+ tdc config set <key> <value> # Set a user preference (e.g. unarchive-new-threads true)
37
+ tdc doctor # Diagnose CLI setup and environment issues
38
+ tdc update # Update CLI to latest version
39
+ tdc changelog # Show recent changelog entries
40
+ \`\`\`
41
+
42
+ Stored auth uses the system credential manager when available. If secure storage is unavailable, \`tdc\` warns and falls back to \`~/.config/comms-cli/config.json\`. \`COMMS_API_TOKEN\` always takes priority over the stored token.
43
+
44
+ In read-only mode (\`tdc auth login --read-only\`), commands that modify Comms data (reply, archive, react, delete, etc.) are blocked by the CLI. Externally provided tokens (\`COMMS_API_TOKEN\` or \`tdc auth token\`) are treated as unknown scope and assumed write-capable.
45
+
46
+ ## View by URL
47
+
48
+ \`\`\`bash
49
+ tdc view <url> # View any Comms entity by URL
50
+ \`\`\`
51
+
52
+ Routes automatically based on URL structure:
53
+ - Message URL → \`tdc msg view\`
54
+ - Conversation URL → \`tdc conversation view\`
55
+ - Thread+comment URL → \`tdc thread view\` (comment ID extracted from URL)
56
+ - Thread URL → \`tdc thread view\`
57
+
58
+ All target command flags pass through (e.g. \`--json\`, \`--raw\`, \`--full\`).
59
+
60
+ ## Inbox
61
+
62
+ \`\`\`bash
63
+ tdc inbox # Show inbox threads
64
+ tdc inbox --unread # Only unread threads
65
+ tdc inbox --archive-filter all # Show active + done threads
66
+ tdc inbox --archive-filter archived # Show only done threads
67
+ tdc inbox --channel <filter> # Filter by channel name (fuzzy)
68
+ tdc inbox --since <date> # Filter by date (ISO format)
69
+ tdc inbox --limit <n> # Max items (default: 50)
70
+ \`\`\`
71
+
72
+ ## Threads
73
+
74
+ \`\`\`bash
75
+ tdc thread <thread-ref> # View thread (shorthand for view)
76
+ tdc thread view <thread-ref> # View thread with comments
77
+ tdc thread view <ref> --comment <id> # View a specific comment
78
+ tdc thread view <url-with-/c/id> # Comment ID extracted from URL
79
+ tdc thread view <ref> --unread # Show only unread comments
80
+ tdc thread view <ref> --context 3 # Include 3 read comments before unread
81
+ tdc thread view <ref> --limit 20 # Limit number of comments
82
+ tdc thread view <ref> --since <date> # Comments newer than date
83
+ tdc thread view <ref> --raw # Show raw markdown
84
+ tdc thread create <channel-ref> "Title" "content" # Create a new thread
85
+ tdc thread create <channel-ref> "Title" "content" --json # Create and return as JSON
86
+ tdc thread create <channel-ref> "Title" "content" --json --full # Include all thread fields
87
+ tdc thread create <channel-ref> "Title" "content" --notify 123,456 # Notify specific users
88
+ tdc thread create <channel-ref> "Title" "content" --unarchive # Land thread in author's Inbox (overrides default Comms auto-archive)
89
+ tdc thread create <channel-ref> "Title" "content" --no-unarchive # Force archive even when userSettings.unarchiveNewThreads=true
90
+ tdc thread create <channel-ref> "Title" "content" --dry-run # Preview without posting
91
+ tdc thread reply <ref> "content" # Post a comment (notifies EVERYONE_IN_THREAD by default)
92
+ tdc thread reply <ref> "content" --notify EVERYONE # Notify all workspace members
93
+ tdc thread reply <ref> "content" --notify 123,id:456 # Notify specific user IDs
94
+ tdc thread reply <ref> "content" --json # Post and return comment as JSON
95
+ tdc thread reply <ref> "content" --json --full # Include all comment fields
96
+ tdc thread reply <ref> "content" --close # Reply and close the thread
97
+ tdc thread reply <ref> "content" --reopen # Reply and reopen a closed thread
98
+ tdc thread done <ref> # Archive thread (mark done)
99
+ tdc thread done <ref> --json # Archive and return status as JSON
100
+ tdc thread mute <ref> # Mute thread for 60 minutes (default)
101
+ tdc thread mute <ref> --minutes 480 # Mute for custom duration
102
+ tdc thread mute <ref> --json # Mute and return { id, mutedUntil } as JSON
103
+ tdc thread mute <ref> --json --full # Mute and return full thread as JSON
104
+ tdc thread unmute <ref> # Unmute a muted thread
105
+ tdc thread unmute <ref> --json # Unmute and return { id, mutedUntil } as JSON
106
+ tdc thread delete <ref> # Preview thread deletion (requires --yes to execute)
107
+ tdc thread delete <ref> --yes # Permanently delete a thread
108
+ tdc thread delete <ref> --yes --json # Delete and return status as JSON
109
+ tdc thread rename <ref> "New title" # Rename a thread (change its title)
110
+ tdc thread rename <ref> "New title" --json # Rename and return { id, title } as JSON
111
+ tdc thread rename <ref> "New title" --json --full # Rename and return full thread as JSON
112
+ tdc thread update <ref> "New body" # Update a thread's body (the first post)
113
+ echo "New body" | tdc thread update <ref> # Update body from stdin
114
+ tdc thread update <ref> "New body" --dry-run # Preview without updating
115
+ tdc thread update <ref> "New body" --json # Update and return { id, content } as JSON
116
+ tdc thread update <ref> "New body" --json --full # Update and return full thread as JSON
117
+ \`\`\`
118
+
119
+ Default \`--notify\` for reply is EVERYONE_IN_THREAD, which may notify more people than intended. Before posting, confirm with the user whether specific people should be notified instead (via \`--notify <user-ids>\`). Options: EVERYONE, EVERYONE_IN_THREAD, or comma-separated ID refs.
120
+
121
+ \`--notify\` automatically resolves IDs: group IDs are routed to the \`groups\` API field, user IDs to \`recipients\`. No special syntax needed.
122
+
123
+ ## Thread Comments
124
+
125
+ \`\`\`bash
126
+ tdc comment <comment-ref> # View a comment (shorthand for view)
127
+ tdc comment view <comment-ref> # View a single thread comment
128
+ tdc comment view <comment-ref> --raw # Show raw markdown
129
+ tdc comment view <comment-ref> --json # Output as JSON
130
+ tdc comment view <comment-ref> --ndjson # Output as newline-delimited JSON
131
+ tdc comment view <comment-ref> --json --full # Include all fields in JSON output
132
+ tdc comment update <comment-ref> "new content" # Update a thread comment
133
+ tdc comment update <comment-ref> "content" --json # Update and return updated comment as JSON
134
+ tdc comment update <comment-ref> "content" --json --full # Include all comment fields
135
+ tdc comment delete <comment-ref> # Delete a thread comment
136
+ tdc comment delete <comment-ref> --json # Delete and return status as JSON
137
+ \`\`\`
138
+
139
+ ## Conversations (DMs/Groups)
140
+
141
+ \`\`\`bash
142
+ tdc conversation unread # List unread conversations
143
+ tdc conversation <conversation-ref> # View conversation (shorthand for view)
144
+ tdc conversation view <conversation-ref> # View conversation messages
145
+ tdc conversation with <user-ref> # Find your 1:1 DM with a user
146
+ tdc conversation with <user-ref> --snippet # Include the latest message preview
147
+ tdc conversation with <user-ref> --include-groups # List any conversations with that user
148
+ tdc conversation reply <ref> "content" # Send a message
149
+ tdc conversation reply <ref> "content" --json # Send and return message as JSON
150
+ tdc conversation reply <ref> "content" --json --full # Include all message fields
151
+ tdc conversation done <ref> # Archive conversation
152
+ tdc conversation done <ref> --json # Archive and return status as JSON
153
+ tdc conversation mute <ref> # Mute conversation for 60 minutes (default)
154
+ tdc conversation mute <ref> --minutes 480 # Mute for custom duration
155
+ tdc conversation mute <ref> --json # Mute and return { id, mutedUntil } as JSON
156
+ tdc conversation mute <ref> --json --full # Mute and return full conversation as JSON
157
+ tdc conversation unmute <ref> # Unmute a muted conversation
158
+ tdc conversation unmute <ref> --json # Unmute and return { id, mutedUntil } as JSON
159
+ \`\`\`
160
+
161
+ Alias: \`tdc convo\` works the same as \`tdc conversation\`.
162
+
163
+ ## Conversation Messages
164
+
165
+ \`\`\`bash
166
+ tdc msg <message-ref> # View a message (shorthand for view)
167
+ tdc msg view <message-ref> # View a single conversation message
168
+ tdc msg update <ref> "content" # Edit a conversation message
169
+ tdc msg update <ref> "content" --json # Edit and return updated message as JSON
170
+ tdc msg update <ref> "content" --json --full # Include all message fields
171
+ tdc msg delete <ref> # Delete a conversation message
172
+ tdc msg delete <ref> --json # Delete and return status as JSON
173
+ \`\`\`
174
+
175
+ Alias: \`tdc message\` works the same as \`tdc msg\`.
176
+
177
+ ## Search
178
+
179
+ \`\`\`bash
180
+ tdc mentions # Show content mentioning current user
181
+ tdc mentions --since 2026-04-01 --all # Fetch every mention since a date
182
+ tdc mentions --type threads --json # Limit mentions to threads
183
+ tdc search "query" # Search content
184
+ tdc search "query" --type threads # Filter: threads, messages, or all
185
+ tdc search "query" --author <ref> # Filter by author
186
+ tdc search "query" --to <ref> # Messages sent to user
187
+ tdc search "query" --title-only # Search thread titles only
188
+ tdc search "query" --mention-me # Results mentioning current user
189
+ tdc search "query" --conversation <refs> # Limit to conversations (comma-separated refs)
190
+ tdc search "query" --since <date> # Content from date
191
+ tdc search "query" --until <date> # Content until date
192
+ tdc search "query" --channel <refs> # Filter by channel refs (comma-separated)
193
+ tdc search "query" --limit <n> # Max results (default: 50)
194
+ tdc search "query" --cursor <cur> # Pagination cursor
195
+ tdc search "query" --all # Fetch all result pages
196
+ \`\`\`
197
+
198
+ ## Users, Channels & Groups
199
+
200
+ \`\`\`bash
201
+ tdc user # Show current user info
202
+ tdc user --json # JSON output
203
+ tdc user --json --full # Include all fields in JSON output
204
+ tdc users # List workspace users
205
+ tdc users --search <text> # Filter by name/email
206
+ tdc channels # List active joined workspace channels (alias of: tdc channel list)
207
+ tdc channels --state all # Include archived joined channels too
208
+ tdc channels --scope discoverable # Active public channels you can see but have not joined
209
+ tdc channels --scope public --state all --json # All visible public channels, with joined status
210
+ tdc channel create "Engineering" # Create a channel in the current workspace
211
+ tdc channel create "Leadership Team" --private --users id:10,id:20 # Create private channel with initial members
212
+ tdc channel create "Product" --workspace "Doist" --description "Product discussions" --json # Create and return channel as JSON
213
+ tdc channel update <channel-ref> "New name" # Rename a channel
214
+ tdc channel update <ref> --name "New name" # Rename with an explicit flag
215
+ tdc channel update <ref> --description "Team discussions" # Update channel description
216
+ tdc channel update <ref> --clear-description # Clear channel description
217
+ tdc channel update <ref> --public # Make a channel public (--private makes it private)
218
+ tdc channel update <ref> --description "Team discussions" --json --full # Update and return all channel fields
219
+ tdc channel threads <channel-ref> # List threads in a channel (fuzzy name, id:, numeric ID, or URL)
220
+ tdc channel threads "general" --unread # Only unread threads
221
+ tdc channel threads <ref> --archive-filter all # Include archived threads (active|archived|all)
222
+ tdc channel threads <ref> --since 2026-01-01 # Filter by last-updated date (ISO)
223
+ tdc channel threads <ref> --limit 20 # Max threads per page (default: 50)
224
+ tdc channel threads <ref> --limit 20 --cursor <cursor-from-prev> # Paginate
225
+ tdc channel threads <ref> --json # { results, nextCursor } with isUnread + url
226
+ tdc groups # List workspace groups
227
+ tdc groups --search "frontend" # Filter groups by name (case-insensitive)
228
+ tdc groups --json # JSON output
229
+ tdc groups --json --full # Include all fields in JSON output
230
+ tdc groups view <group-ref> # Show group with member details
231
+ tdc groups view <ref> --json # JSON output with id, name, workspaceId, members
232
+ tdc groups view <ref> --json --full # Include all fields in JSON output
233
+ tdc groups create "Name" # Create a new group
234
+ tdc groups create "Name" --users alice@doist.com,bob@doist.com # Create with members
235
+ tdc groups create "Name" --json # Output created group as JSON
236
+ tdc groups rename <group-ref> "New name" # Rename a group
237
+ tdc groups rename <ref> "Name" --json # Output renamed group as JSON
238
+ tdc groups delete <group-ref> --yes # Delete a group (requires --yes)
239
+ tdc groups delete <ref> --dry-run # Preview deletion
240
+ tdc groups add-user <group-ref> user1 user2 # Add users to a group
241
+ tdc groups add-user <ref> a@d.com,b@d.com # Comma-separated refs
242
+ tdc groups add-user <ref> id:123 --json # Output result as JSON
243
+ tdc groups remove-user <group-ref> user1 user2 # Remove users from a group
244
+ tdc groups remove-user <ref> id:123,id:456 # Comma-separated ID refs
245
+ \`\`\`
246
+
247
+ If a channel is not found in \`tdc channels\`, widen with broader listings such as \`tdc channels --scope public\`, then \`tdc channels --scope public --state all\`. Check \`tdc channels --help\` for other available filters.
248
+
249
+ \`tdc channel threads\` returns every thread in the channel; pagination filters (\`--limit\`, \`--cursor\`, \`--since\`, \`--until\`, \`--unread\`) are applied client-side after fetch. \`--archive-filter\` is applied server-side. Results are sorted newest-first by last activity. In \`--json\` / \`--ndjson\`, the response includes a \`nextCursor\` string (opaque) you can pass via \`--cursor\` to fetch the next page; NDJSON emits the cursor as a final \`{ "_meta": true, "nextCursor": "..." }\` line.
250
+
251
+ ## Reactions
252
+
253
+ \`\`\`bash
254
+ tdc react thread <ref> 👍 # Add reaction to thread
255
+ tdc react comment <ref> +1 # Add reaction (shortcode)
256
+ tdc react message <ref> heart # Add reaction to DM message
257
+ tdc react thread <ref> 👍 --json # Output result as JSON
258
+ tdc unreact thread <ref> 👍 # Remove reaction
259
+ tdc unreact thread <ref> 👍 --json # Output result as JSON
260
+ \`\`\`
261
+
262
+ Supported shortcodes: +1, -1, heart, tada, smile, laughing, thinking, fire, check, x, eyes, pray, clap, rocket, wave
263
+
264
+ ## Shell Completions
265
+
266
+ \`\`\`bash
267
+ tdc completion install # Install tab completions (prompts for shell)
268
+ tdc completion install bash # Install for specific shell
269
+ tdc completion install zsh
270
+ tdc completion install fish
271
+ tdc completion uninstall # Remove completions
272
+ \`\`\`
273
+
274
+ ### Diagnostics
275
+
276
+ \`\`\`bash
277
+ tdc doctor # Run local + network diagnostics
278
+ tdc doctor --offline # Skip Comms and npm network checks
279
+ tdc doctor --json # JSON output with per-check results
280
+ \`\`\`
281
+
282
+ ### Configuration
283
+
284
+ \`\`\`bash
285
+ tdc config view # Pretty-printed config, token masked, labels actual token source
286
+ tdc config view --json # Raw JSON, token masked
287
+ tdc config view --show-token # Include the full token
288
+ tdc config set unarchive-new-threads true # Persist: always unarchive new threads so they land in your Inbox
289
+ tdc config set unarchive-new-threads false # Persist: keep Comms's default (thread auto-archived for author)
290
+ \`\`\`
291
+
292
+ User preferences are stored under \`userSettings\` in the config file. Currently supported keys: \`unarchive-new-threads\`. The flag on \`tdc thread create\` (\`--unarchive\` / \`--no-unarchive\`) overrides this default per-invocation.
293
+
294
+ ### Update
295
+
296
+ \`\`\`bash
297
+ tdc update # Update CLI to latest version
298
+ tdc update --check # Check for updates without installing, show channel
299
+ tdc update --check --json # Same, JSON envelope
300
+ tdc update --check --ndjson # Same, newline-delimited JSON envelope
301
+ tdc update --channel # Show current update channel
302
+ tdc update switch --stable # Switch to stable release channel
303
+ tdc update switch --pre-release # Switch to pre-release (next) channel
304
+ tdc update switch --pre-release --json # Same, JSON envelope
305
+ tdc update switch --pre-release --ndjson # Same, newline-delimited JSON envelope
306
+ \`\`\`
307
+
308
+ ### Changelog
309
+ \`\`\`bash
310
+ tdc changelog # Show last 5 versions
311
+ tdc changelog -n 3 # Show last 3 versions
312
+ tdc changelog --count 10 # Show last 10 versions
313
+ \`\`\`
314
+
315
+ ## Global Options
316
+
317
+ \`\`\`bash
318
+ --no-spinner # Disable loading animations
319
+ --progress-jsonl # Machine-readable progress events (JSONL to stderr)
320
+ --progress-jsonl=<path> # Same, but write events to <path> instead of stderr
321
+ --progress-jsonl <path> # Same as above (space-separated form also accepted)
322
+ --accessible # Add text labels to color-coded output (also: TDC_ACCESSIBLE=1)
323
+ --non-interactive # Disable interactive prompts (auto-detected when stdin is not a TTY)
324
+ --interactive # Force interactive mode even when stdin is not a TTY
325
+ \`\`\`
326
+
327
+ ## Output Formats
328
+
329
+ All list/view commands support:
330
+
331
+ \`\`\`bash
332
+ --json # Output as JSON
333
+ --ndjson # Output as newline-delimited JSON (for streaming)
334
+ --full # Include all fields (default shows essential fields only)
335
+ \`\`\`
336
+
337
+ ## Dry Run
338
+
339
+ Mutating commands accept \`--dry-run\` to preview the operation without making the change. Where a command performs pre-flight validation (e.g. fetching the target thread to check channel access or ownership), those checks still run in dry-run — only the mutating write is skipped. Commands that have no pre-flight validation parse the reference and print the preview without hitting the API. The preview is structured:
340
+
341
+ \`\`\`
342
+ [dry-run] Would <action>:
343
+ <Key>: <resolved value>
344
+ ...
345
+ Run without --dry-run to execute.
346
+ \`\`\`
347
+
348
+ ## Reference System
349
+
350
+ Commands accept flexible references:
351
+ - **Numeric IDs**: \`123\` or \`id:123\`
352
+ - **Comms URLs**: Full \`https://comms.todoist.com/...\` URLs (parsed automatically)
353
+ - **Fuzzy names**: For workspaces/users - \`"My Workspace"\` or partial matches
354
+
355
+ ## Piping Content
356
+
357
+ Commands that accept content (\`thread create\`, \`thread reply\`, \`comment update\`, \`conversation reply\`, \`msg update\`) auto-detect piped stdin:
358
+
359
+ \`\`\`bash
360
+ cat notes.md | tdc thread reply <ref>
361
+ tdc thread create <channel-ref> "Title" < body.md
362
+ echo "Quick reply" | tdc conversation reply <ref>
363
+ \`\`\`
364
+
365
+ If no content argument is provided and no stdin is piped, the CLI opens \`$EDITOR\` for interactive input. In non-TTY environments (e.g. when called by an agent or in a pipeline), the editor is automatically skipped and the command fails fast with an actionable error message. Use \`--non-interactive\` to force this behavior even in a TTY, or \`--interactive\` to override auto-detection.
366
+
367
+ ## Common Workflows
368
+
369
+ **View by URL (auto-routes to the right command):**
370
+ \`\`\`bash
371
+ tdc view https://comms.todoist.com/a/1585/ch/100/t/200 # View thread
372
+ tdc view https://comms.todoist.com/a/1585/ch/100/t/200/c/300 # View comment
373
+ tdc view https://comms.todoist.com/a/1585/msg/400 # View conversation
374
+ tdc view https://comms.todoist.com/a/1585/msg/400/m/500 --json # View message as JSON
375
+ \`\`\`
376
+
377
+ **Check inbox and respond:**
378
+ \`\`\`bash
379
+ tdc inbox --unread --json
380
+ tdc thread view <id> --unread
381
+ tdc thread reply <id> "Thanks, I'll look into this."
382
+ tdc thread done <id>
383
+ \`\`\`
384
+
385
+ **Search and review:**
386
+ \`\`\`bash
387
+ tdc mentions --since 2026-04-01 --all --json
388
+ tdc search "deployment" --type threads --json
389
+ tdc thread view <thread-id>
390
+ \`\`\`
391
+
392
+ **Check DMs:**
393
+ \`\`\`bash
394
+ tdc conversation unread --json
395
+ tdc conversation view <conversation-id>
396
+ tdc conversation with "Alice Example"
397
+ tdc conversation reply <id> "Got it, thanks!"
398
+ \`\`\`
399
+ `;
400
+ export const SKILL_FILE_CONTENT = `---
401
+ name: ${SKILL_NAME}
402
+ description: ${JSON.stringify(SKILL_DESCRIPTION)}
403
+ license: ${SKILL_LICENSE}
404
+ metadata:
405
+ author: ${SKILL_AUTHOR}
406
+ version: ${JSON.stringify(SKILL_VERSION)}
407
+ ---
408
+
409
+ ${SKILL_CONTENT}`;
410
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/lib/skills/content.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErE,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAC1B,wTAAwT,CAAA;AAE5T,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAA;AAEnC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAA;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwY5B,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;QAC1B,UAAU;eACH,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;WACrC,aAAa;;YAEZ,YAAY;aACX,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;EAGxC,aAAa,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { SkillInstaller } from './types.js';
2
+ interface InstallerConfig {
3
+ name: string;
4
+ description: string;
5
+ dirName: string;
6
+ }
7
+ export declare function createInstaller(config: InstallerConfig): SkillInstaller;
8
+ export {};
9
+ //# sourceMappingURL=create-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-installer.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAkB,cAAc,EAAmC,MAAM,YAAY,CAAA;AAEjG,UAAU,eAAe;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA2EvE"}
@@ -0,0 +1,65 @@
1
+ import { mkdir, rm, stat, writeFile } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ import { CliError } from '../errors.js';
5
+ import { SKILL_FILE_CONTENT, SKILL_NAME } from './content.js';
6
+ export function createInstaller(config) {
7
+ function getInstallPath(options) {
8
+ const base = options.local ? process.cwd() : homedir();
9
+ return join(base, config.dirName, 'skills', SKILL_NAME, 'SKILL.md');
10
+ }
11
+ return {
12
+ name: config.name,
13
+ description: config.description,
14
+ getInstallPath,
15
+ async isInstalled(options) {
16
+ try {
17
+ await stat(getInstallPath(options));
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ },
24
+ async install(options) {
25
+ if (!options.local && config.dirName !== '.agents') {
26
+ const agentDir = join(homedir(), config.dirName);
27
+ try {
28
+ await stat(agentDir);
29
+ }
30
+ catch {
31
+ throw new CliError('NOT_INSTALLED', `${config.name} does not appear to be installed (${agentDir} not found)`);
32
+ }
33
+ }
34
+ const skillPath = getInstallPath(options);
35
+ const exists = await this.isInstalled(options);
36
+ if (exists && !options.force) {
37
+ throw new CliError('ALREADY_INSTALLED', `Skill already installed at ${skillPath}. Use --force to overwrite.`);
38
+ }
39
+ await mkdir(dirname(skillPath), { recursive: true });
40
+ await writeFile(skillPath, SKILL_FILE_CONTENT);
41
+ },
42
+ async update(options) {
43
+ const skillPath = getInstallPath(options);
44
+ const exists = await this.isInstalled(options);
45
+ if (!exists) {
46
+ throw new CliError('NOT_INSTALLED', `Skill not installed at ${skillPath}`, [
47
+ `Run: tdc skill install ${config.name}`,
48
+ ]);
49
+ }
50
+ await writeFile(skillPath, SKILL_FILE_CONTENT);
51
+ },
52
+ async uninstall(options) {
53
+ const skillPath = getInstallPath(options);
54
+ const exists = await this.isInstalled(options);
55
+ if (!exists) {
56
+ throw new CliError('NOT_INSTALLED', `Skill not installed at ${skillPath}`, [
57
+ `Run: tdc skill install ${config.name}`,
58
+ ]);
59
+ }
60
+ const skillDir = dirname(skillPath);
61
+ await rm(skillDir, { recursive: true });
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=create-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-installer.js","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAS7D,MAAM,UAAU,eAAe,CAAC,MAAuB;IACnD,SAAS,cAAc,CAAC,OAA4B;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACtD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACvE,CAAC;IAED,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAE/B,cAAc;QAEd,KAAK,CAAC,WAAW,CAAC,OAA4B;YAC1C,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;YACf,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAuB;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChD,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACL,MAAM,IAAI,QAAQ,CACd,eAAe,EACf,GAAG,MAAM,CAAC,IAAI,qCAAqC,QAAQ,aAAa,CAC3E,CAAA;gBACL,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,QAAQ,CACd,mBAAmB,EACnB,8BAA8B,SAAS,6BAA6B,CACvE,CAAA;YACL,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,MAAM,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAClD,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAsB;YAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,0BAA0B,SAAS,EAAE,EAAE;oBACvE,0BAA0B,MAAM,CAAC,IAAI,EAAE;iBAC1C,CAAC,CAAA;YACN,CAAC;YAED,MAAM,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAClD,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,OAAyB;YACrC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,0BAA0B,SAAS,EAAE,EAAE;oBACvE,0BAA0B,MAAM,CAAC,IAAI,EAAE;iBAC1C,CAAC,CAAA;YACN,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;YACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;KACJ,CAAA;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AgentInfo, SkillInstaller } from './types.js';
2
+ export declare const skillInstallers: Record<string, SkillInstaller>;
3
+ export declare function getInstaller(name: string): SkillInstaller | null;
4
+ export declare function listAgentNames(): string[];
5
+ export declare function listAgents(local: boolean): Promise<AgentInfo[]>;
6
+ export type { AgentInfo, InstallOptions, SkillInstaller, UninstallOptions, UpdateOptions, } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CA+B1D,CAAA;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEhE;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAerE;AAED,YAAY,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,GAChB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { createInstaller } from './create-installer.js';
2
+ export const skillInstallers = {
3
+ 'claude-code': createInstaller({
4
+ name: 'claude-code',
5
+ description: 'Claude Code skill for Comms CLI',
6
+ dirName: '.claude',
7
+ }),
8
+ codex: createInstaller({
9
+ name: 'codex',
10
+ description: 'Codex skill for Comms CLI',
11
+ dirName: '.codex',
12
+ }),
13
+ cursor: createInstaller({
14
+ name: 'cursor',
15
+ description: 'Cursor skill for Comms CLI',
16
+ dirName: '.cursor',
17
+ }),
18
+ gemini: createInstaller({
19
+ name: 'gemini',
20
+ description: 'Gemini CLI skill for Comms CLI',
21
+ dirName: '.gemini',
22
+ }),
23
+ pi: createInstaller({
24
+ name: 'pi',
25
+ description: 'Pi skill for Comms CLI',
26
+ dirName: '.pi',
27
+ }),
28
+ universal: createInstaller({
29
+ name: 'universal',
30
+ description: 'Universal agent skill for Comms CLI',
31
+ dirName: '.agents',
32
+ }),
33
+ };
34
+ export function getInstaller(name) {
35
+ return skillInstallers[name] ?? null;
36
+ }
37
+ export function listAgentNames() {
38
+ return Object.keys(skillInstallers);
39
+ }
40
+ export async function listAgents(local) {
41
+ const agents = [];
42
+ for (const name of listAgentNames()) {
43
+ const installer = skillInstallers[name];
44
+ const installed = await installer.isInstalled({ local });
45
+ agents.push({
46
+ name,
47
+ description: installer.description,
48
+ installed,
49
+ path: installed ? installer.getInstallPath({ local }) : null,
50
+ });
51
+ }
52
+ return agents;
53
+ }
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC3D,aAAa,EAAE,eAAe,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,KAAK,EAAE,eAAe,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,QAAQ;KACpB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,EAAE,EAAE,eAAe,CAAC;QAChB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,KAAK;KACjB,CAAC;IACF,SAAS,EAAE,eAAe,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,SAAS;KACrB,CAAC;CACL,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,IAAI,CAAC;YACR,IAAI;YACJ,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,SAAS;YACT,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;SAC/D,CAAC,CAAA;IACN,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface InstallOptions {
2
+ local?: boolean;
3
+ force?: boolean;
4
+ }
5
+ export interface UninstallOptions {
6
+ local?: boolean;
7
+ }
8
+ export interface UpdateOptions {
9
+ local?: boolean;
10
+ }
11
+ export interface SkillInstaller {
12
+ name: string;
13
+ description: string;
14
+ install(options: InstallOptions): Promise<void>;
15
+ update(options: UpdateOptions): Promise<void>;
16
+ uninstall(options: UninstallOptions): Promise<void>;
17
+ isInstalled(options: {
18
+ local?: boolean;
19
+ }): Promise<boolean>;
20
+ getInstallPath(options: {
21
+ local?: boolean;
22
+ }): string;
23
+ }
24
+ export interface AgentInfo {
25
+ name: string;
26
+ description: string;
27
+ installed: boolean;
28
+ path: string | null;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,WAAW,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3D,cAAc,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAA;CACvD;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/skills/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface UpdateAllResult {
2
+ updated: string[];
3
+ skipped: string[];
4
+ errors: string[];
5
+ }
6
+ export declare function updateAllInstalledSkills(options: {
7
+ local?: boolean;
8
+ }): Promise<UpdateAllResult>;
9
+ //# sourceMappingURL=update-installed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-installed.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/update-installed.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB3B"}
@@ -0,0 +1,20 @@
1
+ import { skillInstallers } from './index.js';
2
+ export async function updateAllInstalledSkills(options) {
3
+ const result = { updated: [], skipped: [], errors: [] };
4
+ for (const [name, installer] of Object.entries(skillInstallers)) {
5
+ try {
6
+ const installed = await installer.isInstalled(options);
7
+ if (!installed) {
8
+ result.skipped.push(name);
9
+ continue;
10
+ }
11
+ await installer.update(options);
12
+ result.updated.push(name);
13
+ }
14
+ catch (err) {
15
+ result.errors.push(`${name}: ${err.message}`);
16
+ }
17
+ }
18
+ return result;
19
+ }
20
+ //# sourceMappingURL=update-installed.js.map