@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,468 @@
1
+ import { fetchWorkspaces, getGroup, getWorkspaceGroups, getCommsClient } from './api.js';
2
+ import { CliError } from './errors.js';
3
+ function normalizeRef(ref) {
4
+ return ref.trim();
5
+ }
6
+ export function isIdRef(ref) {
7
+ return normalizeRef(ref).startsWith('id:');
8
+ }
9
+ /**
10
+ * Returns the raw id portion of `123`, `id:123`, or `id:abc-xyz`. The Comms
11
+ * backend uses numeric ids for users and workspaces and base58 UUIDv7 strings
12
+ * for everything else, so this stays string-typed and consumers narrow as
13
+ * needed (`Number(...)` for numeric refs after validation).
14
+ */
15
+ export function extractId(ref) {
16
+ const normalized = normalizeRef(ref);
17
+ const idStr = isIdRef(normalized) ? normalized.slice(3).trim() : normalized;
18
+ if (!idStr) {
19
+ throw new CliError('INVALID_ID', `Invalid ID: ${ref}`);
20
+ }
21
+ return idStr;
22
+ }
23
+ export function extractNumericId(ref) {
24
+ const idStr = extractId(ref);
25
+ if (!/^\d+$/.test(idStr)) {
26
+ throw new CliError('INVALID_ID', `Invalid numeric ID: ${ref}`);
27
+ }
28
+ return Number(idStr);
29
+ }
30
+ export function parseNumericIdRefs(refs, label = 'reference') {
31
+ const ids = [];
32
+ for (const rawRef of refs.split(',')) {
33
+ const ref = rawRef.trim();
34
+ if (!ref) {
35
+ throw new CliError('INVALID_REF', `Invalid ${label} reference list: found empty value`);
36
+ }
37
+ const id = extractId(ref);
38
+ if (!/^\d+$/.test(id)) {
39
+ return null;
40
+ }
41
+ ids.push(Number(id));
42
+ }
43
+ return ids;
44
+ }
45
+ export function looksLikeRawId(ref) {
46
+ const normalized = normalizeRef(ref);
47
+ if (!normalized || normalized.includes(' '))
48
+ return false;
49
+ return /^[A-Za-z0-9_-]+$/.test(normalized) && /\d/.test(normalized);
50
+ }
51
+ export function parseCommsUrl(url) {
52
+ try {
53
+ const parsed = new URL(url);
54
+ if (!parsed.hostname.includes('comms.todoist.com')) {
55
+ return null;
56
+ }
57
+ const path = parsed.pathname;
58
+ const result = {};
59
+ // Pattern: /a/{workspaceId}/ch/{channelId}/t/{threadId}/c/{commentId}
60
+ // Pattern: /a/{workspaceId}/msg/{conversationId}/m/{messageId}
61
+ const workspaceMatch = path.match(/\/a\/(\d+)/);
62
+ if (workspaceMatch) {
63
+ result.workspaceId = parseInt(workspaceMatch[1], 10);
64
+ }
65
+ const channelMatch = path.match(/\/ch\/([A-Za-z0-9_-]+)/);
66
+ if (channelMatch) {
67
+ result.channelId = channelMatch[1];
68
+ }
69
+ const threadMatch = path.match(/\/t\/([A-Za-z0-9_-]+)/);
70
+ if (threadMatch) {
71
+ result.threadId = threadMatch[1];
72
+ }
73
+ const commentMatch = path.match(/\/c\/([A-Za-z0-9_-]+)/);
74
+ if (commentMatch) {
75
+ result.commentId = commentMatch[1];
76
+ }
77
+ const conversationMatch = path.match(/\/msg\/([A-Za-z0-9_-]+)/);
78
+ if (conversationMatch) {
79
+ result.conversationId = conversationMatch[1];
80
+ }
81
+ const messageMatch = path.match(/\/m\/([A-Za-z0-9_-]+)/);
82
+ if (messageMatch) {
83
+ result.messageId = messageMatch[1];
84
+ }
85
+ return Object.keys(result).length > 0 ? result : null;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ }
91
+ export function parseRef(ref) {
92
+ const normalized = normalizeRef(ref);
93
+ if (isIdRef(normalized)) {
94
+ return { type: 'id', id: extractId(normalized) };
95
+ }
96
+ if (normalized.startsWith('http://') || normalized.startsWith('https://')) {
97
+ const parsed = parseCommsUrl(normalized);
98
+ if (parsed) {
99
+ return { type: 'url', parsed };
100
+ }
101
+ }
102
+ if (looksLikeRawId(normalized)) {
103
+ return { type: 'id', id: normalized };
104
+ }
105
+ return { type: 'name', name: normalized };
106
+ }
107
+ /**
108
+ * Match an entity by name: exact (case-insensitive) → unique substring → ambiguous/not-found.
109
+ */
110
+ function matchByName(items, query, opts) {
111
+ const lower = query.toLowerCase();
112
+ const exact = items.find((item) => item.name.toLowerCase() === lower);
113
+ if (exact)
114
+ return exact;
115
+ const partial = items.filter((item) => item.name.toLowerCase().includes(lower));
116
+ if (partial.length === 1)
117
+ return partial[0];
118
+ if (partial.length > 1) {
119
+ const matches = partial
120
+ .slice(0, 5)
121
+ .map((item) => `"${item.name}" (id:${item.id})`)
122
+ .join(', ');
123
+ throw new CliError(opts.ambiguousCode, `Multiple matches for "${opts.ref}": ${matches}`, [
124
+ 'Use the numeric ID (e.g. id:123) to specify exactly which one.',
125
+ ]);
126
+ }
127
+ throw new CliError(opts.notFoundCode, `"${opts.ref}" not found`, [opts.listHint]);
128
+ }
129
+ export async function resolveWorkspaceRef(ref) {
130
+ const workspaces = await fetchWorkspaces();
131
+ const parsed = parseRef(ref);
132
+ if (parsed.type === 'id') {
133
+ const numericId = Number(parsed.id);
134
+ if (!Number.isFinite(numericId)) {
135
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace with ID ${parsed.id} not found`, [
136
+ 'Run: tdc workspaces to list available workspaces',
137
+ ]);
138
+ }
139
+ const workspace = workspaces.find((w) => w.id === numericId);
140
+ if (!workspace) {
141
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace with ID ${parsed.id} not found`, [
142
+ 'Run: tdc workspaces to list available workspaces',
143
+ ]);
144
+ }
145
+ return workspace;
146
+ }
147
+ if (parsed.type === 'url' && parsed.parsed.workspaceId) {
148
+ const workspace = workspaces.find((w) => w.id === parsed.parsed.workspaceId);
149
+ if (!workspace) {
150
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace with ID ${parsed.parsed.workspaceId} not found`, ['Run: tdc workspaces to list available workspaces']);
151
+ }
152
+ return workspace;
153
+ }
154
+ if (parsed.type === 'name') {
155
+ return matchByName(workspaces, parsed.name, {
156
+ ambiguousCode: 'AMBIGUOUS_WORKSPACE',
157
+ notFoundCode: 'WORKSPACE_NOT_FOUND',
158
+ ref,
159
+ listHint: 'Run: tdc workspaces to list available workspaces',
160
+ });
161
+ }
162
+ throw new CliError('WORKSPACE_NOT_FOUND', `Workspace "${ref}" not found`, [
163
+ 'Run: tdc workspaces to list available workspaces',
164
+ ]);
165
+ }
166
+ export function resolveThreadId(ref) {
167
+ const parsed = parseRef(ref);
168
+ if (parsed.type === 'id') {
169
+ return parsed.id;
170
+ }
171
+ if (parsed.type === 'url' && parsed.parsed.threadId) {
172
+ return parsed.parsed.threadId;
173
+ }
174
+ throw new CliError('INVALID_REF', `Invalid thread reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
175
+ }
176
+ function assertChannelInWorkspace(channel, workspaceId) {
177
+ if (channel.workspaceId !== workspaceId) {
178
+ throw new CliError('CHANNEL_NOT_FOUND', `Channel ${channel.id} does not belong to workspace ${workspaceId}`);
179
+ }
180
+ }
181
+ export async function resolveChannelRef(ref, workspaceId) {
182
+ const parsed = parseRef(ref);
183
+ const client = await getCommsClient();
184
+ if (parsed.type === 'id') {
185
+ const channel = await client.channels.getChannel(parsed.id);
186
+ assertChannelInWorkspace(channel, workspaceId);
187
+ return channel;
188
+ }
189
+ if (parsed.type === 'url' && parsed.parsed.channelId) {
190
+ if (parsed.parsed.workspaceId && parsed.parsed.workspaceId !== workspaceId) {
191
+ throw new CliError('CHANNEL_NOT_FOUND', `Channel URL belongs to workspace ${parsed.parsed.workspaceId}, but the current workspace is ${workspaceId}`, ['Pass the matching workspace-ref or use the default workspace that owns the URL.']);
192
+ }
193
+ const channel = await client.channels.getChannel(parsed.parsed.channelId);
194
+ assertChannelInWorkspace(channel, workspaceId);
195
+ return channel;
196
+ }
197
+ if (parsed.type === 'name') {
198
+ const channels = await client.channels.getChannels({ workspaceId });
199
+ return matchByName(channels, parsed.name, {
200
+ ambiguousCode: 'AMBIGUOUS_CHANNEL',
201
+ notFoundCode: 'CHANNEL_NOT_FOUND',
202
+ ref,
203
+ listHint: 'Run: tdc channels to list available channels',
204
+ });
205
+ }
206
+ throw new CliError('CHANNEL_NOT_FOUND', `Channel "${ref}" not found`, [
207
+ 'Run: tdc channels to list available channels',
208
+ ]);
209
+ }
210
+ export function resolveChannelId(ref) {
211
+ const channelId = getDirectChannelId(ref);
212
+ if (channelId)
213
+ return channelId;
214
+ throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
215
+ }
216
+ export function getDirectChannelId(ref) {
217
+ const parsed = parseRef(ref);
218
+ if (parsed.type === 'id') {
219
+ return parsed.id;
220
+ }
221
+ if (parsed.type === 'url') {
222
+ if (parsed.parsed.channelId) {
223
+ return parsed.parsed.channelId;
224
+ }
225
+ throw new CliError('INVALID_REF', `Invalid channel reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
226
+ }
227
+ return null;
228
+ }
229
+ export function resolveCommentId(ref) {
230
+ const parsed = parseRef(ref);
231
+ if (parsed.type === 'id') {
232
+ return parsed.id;
233
+ }
234
+ if (parsed.type === 'url' && parsed.parsed.commentId) {
235
+ return parsed.parsed.commentId;
236
+ }
237
+ throw new CliError('INVALID_REF', `Invalid comment reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
238
+ }
239
+ export function resolveConversationId(ref) {
240
+ const parsed = parseRef(ref);
241
+ if (parsed.type === 'id') {
242
+ return parsed.id;
243
+ }
244
+ if (parsed.type === 'url' && parsed.parsed.conversationId) {
245
+ return parsed.parsed.conversationId;
246
+ }
247
+ throw new CliError('INVALID_REF', `Invalid conversation reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
248
+ }
249
+ export function resolveMessageId(ref) {
250
+ const parsed = parseRef(ref);
251
+ if (parsed.type === 'id') {
252
+ return parsed.id;
253
+ }
254
+ if (parsed.type === 'url' && parsed.parsed.messageId) {
255
+ return parsed.parsed.messageId;
256
+ }
257
+ throw new CliError('INVALID_REF', `Invalid message reference: ${ref}. Use an id, id:<id>, or a Comms URL.`);
258
+ }
259
+ export function classifyCommsUrl(url) {
260
+ const parsed = parseCommsUrl(url);
261
+ if (!parsed)
262
+ return null;
263
+ if (parsed.messageId)
264
+ return { entityType: 'message', url };
265
+ if (parsed.conversationId && !parsed.messageId)
266
+ return { entityType: 'conversation', url };
267
+ if (parsed.commentId)
268
+ return { entityType: 'comment', url };
269
+ if (parsed.threadId && !parsed.commentId)
270
+ return { entityType: 'thread', url };
271
+ return null;
272
+ }
273
+ /**
274
+ * Split a list of notify refs into numeric user IDs and base58 group IDs by
275
+ * checking each ref against the workspace's known group IDs. Anything not in
276
+ * the group set is treated as a user ID and parsed as a number.
277
+ */
278
+ export function partitionNotifyIds(ids, groupIds) {
279
+ const users = [];
280
+ const groups = [];
281
+ for (const id of ids) {
282
+ if (groupIds.has(id)) {
283
+ groups.push(id);
284
+ continue;
285
+ }
286
+ const num = Number(id);
287
+ if (!Number.isFinite(num) || !/^\d+$/.test(id)) {
288
+ throw new CliError('INVALID_REF', `Invalid notify ID "${id}": expected a numeric user ID or a known group ID.`);
289
+ }
290
+ users.push(num);
291
+ }
292
+ return { userIds: users, groupIds: groups };
293
+ }
294
+ /**
295
+ * Parse a comma-separated list of notify refs into raw IDs (untyped — callers
296
+ * use {@link partitionNotifyIds} to split into users vs. groups).
297
+ */
298
+ export function parseNotifyIdRefs(refs) {
299
+ return refs.split(',').map((userRef) => {
300
+ const trimmed = userRef.trim();
301
+ if (!trimmed) {
302
+ throw new CliError('INVALID_REF', 'Invalid notify reference list: found empty value');
303
+ }
304
+ try {
305
+ return extractId(trimmed);
306
+ }
307
+ catch {
308
+ throw new CliError('INVALID_REF', `Invalid notify reference: ${trimmed}. Use a user or group id.`);
309
+ }
310
+ });
311
+ }
312
+ export async function resolveGroupRef(ref, workspaceId) {
313
+ const parsed = parseRef(ref);
314
+ if (parsed.type === 'id') {
315
+ try {
316
+ const group = await getGroup(parsed.id, workspaceId);
317
+ if (group.workspaceId !== workspaceId) {
318
+ throw new CliError('GROUP_NOT_FOUND', `Group ${parsed.id} does not belong to workspace ${workspaceId}`);
319
+ }
320
+ return group;
321
+ }
322
+ catch (error) {
323
+ if (error instanceof CliError)
324
+ throw error;
325
+ throw new CliError('GROUP_NOT_FOUND', `Group with ID ${parsed.id} not found`, [
326
+ 'Run: tdc groups to list available groups',
327
+ ]);
328
+ }
329
+ }
330
+ if (parsed.type === 'name') {
331
+ const groups = await getWorkspaceGroups(workspaceId);
332
+ return matchByName(groups, parsed.name, {
333
+ ambiguousCode: 'AMBIGUOUS_GROUP',
334
+ notFoundCode: 'GROUP_NOT_FOUND',
335
+ ref,
336
+ listHint: 'Run: tdc groups to list available groups',
337
+ });
338
+ }
339
+ throw new CliError('GROUP_NOT_FOUND', `Group "${ref}" not found`, [
340
+ 'Run: tdc groups to list available groups',
341
+ ]);
342
+ }
343
+ const GROUP_REF_PREFIX = 'group:';
344
+ /**
345
+ * Resolve a mixed list of user and `group:<ref>` references for channel membership.
346
+ *
347
+ * Groups are expanded to their current `userIds` at call time. The group itself
348
+ * is not persistently linked to the channel — callers should surface that
349
+ * caveat in user-facing help text.
350
+ *
351
+ * Returns deduped userIds in input order, with a parallel `expandedFrom` list
352
+ * recording which groups contributed (and which users each group brought in,
353
+ * pre-dedup) for reporting purposes.
354
+ */
355
+ export async function resolveChannelMemberRefs(refs, workspaceId) {
356
+ if (refs.length === 0) {
357
+ throw new CliError('MISSING_USERS', 'Provide at least one user or group:<ref> reference.');
358
+ }
359
+ const slots = refs.map((ref, index) => {
360
+ const trimmed = normalizeRef(ref);
361
+ if (trimmed.toLowerCase().startsWith(GROUP_REF_PREFIX)) {
362
+ const inner = trimmed.slice(GROUP_REF_PREFIX.length).trim();
363
+ if (!inner) {
364
+ throw new CliError('INVALID_REF', `Empty group reference: "${ref}". Use group:<id|name>.`);
365
+ }
366
+ return { kind: 'group', ref: inner, index };
367
+ }
368
+ return { kind: 'user', ref: trimmed, index };
369
+ });
370
+ const userSlots = slots.filter((s) => s.kind === 'user');
371
+ const groupSlots = slots.filter((s) => s.kind === 'group');
372
+ // A group ref resolves by id (single fetch) or by name (matched against the
373
+ // workspace group list). Split here so name refs share one list fetch
374
+ // instead of re-fetching the whole list per ref.
375
+ const groupIdSlots = groupSlots.filter((s) => parseRef(s.ref).type === 'id');
376
+ const groupNameSlots = groupSlots.filter((s) => parseRef(s.ref).type !== 'id');
377
+ // Resolve each user slot individually (a single ref may expand to several
378
+ // ids, e.g. a comma list or a name match), all groups by id, and the
379
+ // workspace group list (once, only when there are name refs) concurrently.
380
+ const [userIdsPerSlot, idGroups, workspaceGroups] = await Promise.all([
381
+ Promise.all(userSlots.map((s) => resolveUserRefs(s.ref, workspaceId))),
382
+ Promise.all(groupIdSlots.map((s) => resolveGroupRef(s.ref, workspaceId))),
383
+ groupNameSlots.length > 0
384
+ ? getWorkspaceGroups(workspaceId)
385
+ : Promise.resolve([]),
386
+ ]);
387
+ const userIdsByIndex = new Map();
388
+ userSlots.forEach((s, i) => {
389
+ userIdsByIndex.set(s.index, userIdsPerSlot[i]);
390
+ });
391
+ const groupByIndex = new Map();
392
+ groupIdSlots.forEach((s, i) => {
393
+ groupByIndex.set(s.index, idGroups[i]);
394
+ });
395
+ for (const s of groupNameSlots) {
396
+ groupByIndex.set(s.index, matchByName(workspaceGroups, s.ref, {
397
+ ambiguousCode: 'AMBIGUOUS_GROUP',
398
+ notFoundCode: 'GROUP_NOT_FOUND',
399
+ ref: s.ref,
400
+ listHint: 'Run: tdc groups to list available groups',
401
+ }));
402
+ }
403
+ // Walk the original input order to assemble dedup'd userIds and expandedFrom.
404
+ const expandedFrom = [];
405
+ const seen = new Set();
406
+ const userIds = [];
407
+ const pushId = (id) => {
408
+ if (!seen.has(id)) {
409
+ seen.add(id);
410
+ userIds.push(id);
411
+ }
412
+ };
413
+ for (let i = 0; i < refs.length; i++) {
414
+ const slotUserIds = userIdsByIndex.get(i);
415
+ if (slotUserIds) {
416
+ for (const id of slotUserIds)
417
+ pushId(id);
418
+ continue;
419
+ }
420
+ const group = groupByIndex.get(i);
421
+ if (!group)
422
+ continue;
423
+ expandedFrom.push({
424
+ groupId: group.id,
425
+ groupName: group.name,
426
+ userIds: [...group.userIds],
427
+ });
428
+ for (const id of group.userIds)
429
+ pushId(id);
430
+ }
431
+ return { userIds, expandedFrom };
432
+ }
433
+ export async function resolveUserRefs(refs, workspaceId) {
434
+ const numericIds = parseNumericIdRefs(refs, 'user');
435
+ if (numericIds)
436
+ return numericIds;
437
+ const { getWorkspaceUsers } = await import('./api.js');
438
+ const users = await getWorkspaceUsers(workspaceId);
439
+ const parts = refs.split(',').map((r) => r.trim());
440
+ const ids = [];
441
+ for (const ref of parts) {
442
+ const parsed = parseRef(ref);
443
+ if (parsed.type === 'id') {
444
+ const num = Number(parsed.id);
445
+ if (!Number.isFinite(num) || !/^\d+$/.test(parsed.id)) {
446
+ throw new CliError('INVALID_REF', `Invalid user ID: ${ref}`);
447
+ }
448
+ ids.push(num);
449
+ continue;
450
+ }
451
+ const query = ref.toLowerCase();
452
+ const matches = users.filter((u) => u.fullName.toLowerCase().includes(query) || u.email?.toLowerCase().includes(query));
453
+ if (matches.length === 0) {
454
+ throw new CliError('USER_NOT_FOUND', `No user found matching "${ref}"`, [
455
+ 'Run: tdc users to list workspace members',
456
+ ]);
457
+ }
458
+ if (matches.length > 1) {
459
+ const list = matches
460
+ .map((u) => ` ${u.id} ${u.fullName} <${u.email ?? ''}>`)
461
+ .join('\n');
462
+ throw new CliError('AMBIGUOUS_USER', `Multiple users match "${ref}":\n${list}\n\nUse numeric ID to specify.`);
463
+ }
464
+ ids.push(matches[0].id);
465
+ }
466
+ return ids;
467
+ }
468
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/lib/refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { SearchResult } from '@doist/comms-sdk';
2
+ export type SearchType = 'threads' | 'messages' | 'all';
3
+ export interface ExtendedSearchParams {
4
+ workspaceId: number;
5
+ query?: string;
6
+ title?: string;
7
+ type?: SearchType;
8
+ channelIds?: string[];
9
+ conversationIds?: string[];
10
+ authorIds?: number[];
11
+ toUserIds?: number[];
12
+ mentionSelf?: boolean;
13
+ dateFrom?: string;
14
+ dateTo?: string;
15
+ limit?: number;
16
+ cursor?: string;
17
+ }
18
+ export interface ExtendedSearchResponse {
19
+ items: SearchResult[];
20
+ nextCursorMark?: string;
21
+ hasMore: boolean;
22
+ isPlanRestricted: boolean;
23
+ }
24
+ export declare function extendedSearch(params: ExtendedSearchParams): Promise<ExtendedSearchResponse>;
25
+ //# sourceMappingURL=search-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-api.d.ts","sourceRoot":"","sources":["../../src/lib/search-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAapD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAA;AAEvD,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;CAC5B;AA8BD,wBAAsB,cAAc,CAChC,MAAM,EAAE,oBAAoB,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAqDjC"}
@@ -0,0 +1,93 @@
1
+ import { getApiToken } from './auth.js';
2
+ import { CliError } from './errors.js';
3
+ function getBaseUrl() {
4
+ const override = process.env.COMMS_BASE_URL;
5
+ if (override) {
6
+ const trimmed = override.endsWith('/') ? override.slice(0, -1) : override;
7
+ return `${trimmed}/api/v1`;
8
+ }
9
+ return 'https://api.comms.todoist.com/api/v1';
10
+ }
11
+ function toCamelCase(str) {
12
+ return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
13
+ }
14
+ function camelCaseKeys(obj) {
15
+ if (Array.isArray(obj)) {
16
+ return obj.map((item) => camelCaseKeys(item));
17
+ }
18
+ if (obj !== null && typeof obj === 'object') {
19
+ const result = {};
20
+ for (const [key, value] of Object.entries(obj)) {
21
+ const camelKey = toCamelCase(key);
22
+ result[camelKey] = camelCaseKeys(value);
23
+ }
24
+ return result;
25
+ }
26
+ return obj;
27
+ }
28
+ function transformSearchResult(item) {
29
+ const result = camelCaseKeys(item);
30
+ if (typeof result.snippetLastUpdatedTs === 'number') {
31
+ result.snippetLastUpdated = new Date(result.snippetLastUpdatedTs * 1000);
32
+ delete result.snippetLastUpdatedTs;
33
+ }
34
+ return result;
35
+ }
36
+ export async function extendedSearch(params) {
37
+ const token = await getApiToken();
38
+ const apiParams = {
39
+ workspace_id: params.workspaceId,
40
+ };
41
+ if (params.query)
42
+ apiParams.query = params.query;
43
+ if (params.title) {
44
+ apiParams.title = params.title;
45
+ if (!params.query)
46
+ apiParams.query = params.title;
47
+ }
48
+ if (params.type)
49
+ apiParams.type = params.type;
50
+ if (params.channelIds)
51
+ apiParams.channel_ids = JSON.stringify(params.channelIds);
52
+ if (params.conversationIds)
53
+ apiParams.conversation_ids = JSON.stringify(params.conversationIds);
54
+ if (params.authorIds)
55
+ apiParams.from_user_id = params.authorIds[0];
56
+ if (params.toUserIds)
57
+ apiParams.to_user_id = params.toUserIds[0];
58
+ if (params.mentionSelf)
59
+ apiParams.mention_self = params.mentionSelf;
60
+ if (params.dateFrom)
61
+ apiParams.after_ts = new Date(params.dateFrom).getTime() / 1000;
62
+ if (params.dateTo)
63
+ apiParams.before_ts = new Date(params.dateTo).getTime() / 1000;
64
+ if (params.limit)
65
+ apiParams.limit = params.limit;
66
+ if (params.cursor)
67
+ apiParams.cursor_mark = params.cursor;
68
+ const searchParams = new URLSearchParams();
69
+ for (const [key, value] of Object.entries(apiParams)) {
70
+ searchParams.append(key, String(value));
71
+ }
72
+ const url = `${getBaseUrl()}/search?${searchParams.toString()}`;
73
+ const response = await fetch(url, {
74
+ method: 'GET',
75
+ headers: {
76
+ Authorization: `Bearer ${token}`,
77
+ 'Content-Type': 'application/json',
78
+ },
79
+ });
80
+ if (!response.ok) {
81
+ const errorText = await response.text();
82
+ throw new CliError('API_ERROR', `Search API error (${response.status}): ${errorText}`);
83
+ }
84
+ const data = await response.json();
85
+ const items = (data.items || []).map((item) => transformSearchResult(item));
86
+ return {
87
+ items,
88
+ nextCursorMark: data.next_cursor_mark,
89
+ hasMore: data.has_more ?? false,
90
+ isPlanRestricted: data.is_plan_restricted ?? false,
91
+ };
92
+ }
93
+ //# sourceMappingURL=search-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-api.js","sourceRoot":"","sources":["../../src/lib/search-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Command } from 'commander';
2
+ import type { PaginatedViewOptions } from './options.js';
3
+ import { type ExtendedSearchResponse, type SearchType } from './search-api.js';
4
+ export type SharedSearchOptions = PaginatedViewOptions & {
5
+ workspace?: string;
6
+ channel?: string;
7
+ author?: string;
8
+ to?: string;
9
+ type?: SearchType;
10
+ conversation?: string;
11
+ cursor?: string;
12
+ all?: boolean;
13
+ };
14
+ type SearchRequestOptions = SharedSearchOptions & {
15
+ query?: string;
16
+ title?: string;
17
+ mentionSelf?: boolean;
18
+ };
19
+ interface SearchRunResult {
20
+ workspaceId: number;
21
+ response: ExtendedSearchResponse;
22
+ }
23
+ type SharedSearchOptionConfig = {
24
+ addUniqueFilters?: (command: Command) => void;
25
+ limitDescription?: string;
26
+ };
27
+ export declare function addSharedSearchOptions<T extends Command>(command: T, config?: SharedSearchOptionConfig): T;
28
+ export declare function runSearch(workspaceRef: string | undefined, options: SearchRequestOptions): Promise<SearchRunResult>;
29
+ type SearchOutputOptions = Pick<SharedSearchOptions, 'all' | 'json' | 'ndjson' | 'full'>;
30
+ export declare function printSearchResults(workspaceId: number, response: ExtendedSearchResponse, options: SearchOutputOptions): void;
31
+ export {};
32
+ //# sourceMappingURL=search-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/search-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAM3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AASxD,OAAO,EAGH,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAClB,MAAM,iBAAiB,CAAA;AAoBxB,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG;IACrD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,KAAK,oBAAoB,GAAG,mBAAmB,GAAG;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,UAAU,eAAe;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,sBAAsB,CAAA;CACnC;AAED,KAAK,wBAAwB,GAAG;IAC5B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,OAAO,EACpD,OAAO,EAAE,CAAC,EACV,MAAM,GAAE,wBAA6B,GACtC,CAAC,CA2BH;AAmGD,wBAAsB,SAAS,CAC3B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAiCD,KAAK,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAA;AAExF,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,mBAAmB,GAC7B,IAAI,CA4DN"}