monday-cli 0.2.0 → 0.4.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 (479) hide show
  1. package/CHANGELOG.md +675 -2
  2. package/README.md +223 -31
  3. package/dist/api/assets.d.ts +326 -0
  4. package/dist/api/assets.d.ts.map +1 -0
  5. package/dist/api/assets.js +519 -0
  6. package/dist/api/assets.js.map +1 -0
  7. package/dist/api/board-favorites.d.ts +329 -0
  8. package/dist/api/board-favorites.d.ts.map +1 -0
  9. package/dist/api/board-favorites.js +353 -0
  10. package/dist/api/board-favorites.js.map +1 -0
  11. package/dist/api/board-mutation-result.d.ts +9 -5
  12. package/dist/api/board-mutation-result.d.ts.map +1 -1
  13. package/dist/api/board-mutation-result.js +9 -5
  14. package/dist/api/board-mutation-result.js.map +1 -1
  15. package/dist/api/board-relation-validation.d.ts +161 -0
  16. package/dist/api/board-relation-validation.d.ts.map +1 -0
  17. package/dist/api/board-relation-validation.js +317 -0
  18. package/dist/api/board-relation-validation.js.map +1 -0
  19. package/dist/api/cache.d.ts +14 -5
  20. package/dist/api/cache.d.ts.map +1 -1
  21. package/dist/api/cache.js +8 -10
  22. package/dist/api/cache.js.map +1 -1
  23. package/dist/api/column-mapping.js +2 -2
  24. package/dist/api/column-mapping.js.map +1 -1
  25. package/dist/api/column-mutation-result.d.ts +9 -5
  26. package/dist/api/column-mutation-result.d.ts.map +1 -1
  27. package/dist/api/column-mutation-result.js +9 -5
  28. package/dist/api/column-mutation-result.js.map +1 -1
  29. package/dist/api/column-types.d.ts +37 -14
  30. package/dist/api/column-types.d.ts.map +1 -1
  31. package/dist/api/column-types.js +47 -6
  32. package/dist/api/column-types.js.map +1 -1
  33. package/dist/api/column-values.d.ts +234 -31
  34. package/dist/api/column-values.d.ts.map +1 -1
  35. package/dist/api/column-values.js +560 -124
  36. package/dist/api/column-values.js.map +1 -1
  37. package/dist/api/cross-board-search.d.ts +501 -0
  38. package/dist/api/cross-board-search.d.ts.map +1 -0
  39. package/dist/api/cross-board-search.js +547 -0
  40. package/dist/api/cross-board-search.js.map +1 -0
  41. package/dist/api/dev-conventions.d.ts +1038 -0
  42. package/dist/api/dev-conventions.d.ts.map +1 -0
  43. package/dist/api/dev-conventions.js +1556 -0
  44. package/dist/api/dev-conventions.js.map +1 -0
  45. package/dist/api/documents.d.ts +519 -0
  46. package/dist/api/documents.d.ts.map +1 -0
  47. package/dist/api/documents.js +586 -0
  48. package/dist/api/documents.js.map +1 -0
  49. package/dist/api/dry-run.d.ts +32 -5
  50. package/dist/api/dry-run.d.ts.map +1 -1
  51. package/dist/api/dry-run.js +149 -32
  52. package/dist/api/dry-run.js.map +1 -1
  53. package/dist/api/errors.d.ts.map +1 -1
  54. package/dist/api/errors.js +28 -7
  55. package/dist/api/errors.js.map +1 -1
  56. package/dist/api/group-mutation-result.d.ts +9 -5
  57. package/dist/api/group-mutation-result.d.ts.map +1 -1
  58. package/dist/api/group-mutation-result.js +9 -5
  59. package/dist/api/group-mutation-result.js.map +1 -1
  60. package/dist/api/item-history-projection.d.ts +919 -0
  61. package/dist/api/item-history-projection.d.ts.map +1 -0
  62. package/dist/api/item-history-projection.js +1104 -0
  63. package/dist/api/item-history-projection.js.map +1 -0
  64. package/dist/api/item-mutation-execute.d.ts +82 -0
  65. package/dist/api/item-mutation-execute.d.ts.map +1 -0
  66. package/dist/api/item-mutation-execute.js +199 -0
  67. package/dist/api/item-mutation-execute.js.map +1 -0
  68. package/dist/api/item-watch.d.ts +263 -0
  69. package/dist/api/item-watch.d.ts.map +1 -0
  70. package/dist/api/item-watch.js +709 -0
  71. package/dist/api/item-watch.js.map +1 -0
  72. package/dist/api/multipart-transport.d.ts +223 -0
  73. package/dist/api/multipart-transport.d.ts.map +1 -0
  74. package/dist/api/multipart-transport.js +274 -0
  75. package/dist/api/multipart-transport.js.map +1 -0
  76. package/dist/api/notifications.d.ts +156 -0
  77. package/dist/api/notifications.d.ts.map +1 -0
  78. package/dist/api/notifications.js +215 -0
  79. package/dist/api/notifications.js.map +1 -0
  80. package/dist/api/oauth-test-helper.d.ts +64 -0
  81. package/dist/api/oauth-test-helper.d.ts.map +1 -0
  82. package/dist/api/oauth-test-helper.js +179 -0
  83. package/dist/api/oauth-test-helper.js.map +1 -0
  84. package/dist/api/oauth.d.ts +198 -0
  85. package/dist/api/oauth.d.ts.map +1 -0
  86. package/dist/api/oauth.js +471 -0
  87. package/dist/api/oauth.js.map +1 -0
  88. package/dist/api/parallel-dispatch.d.ts +155 -0
  89. package/dist/api/parallel-dispatch.d.ts.map +1 -0
  90. package/dist/api/parallel-dispatch.js +243 -0
  91. package/dist/api/parallel-dispatch.js.map +1 -0
  92. package/dist/api/partial-success-bulk.d.ts +480 -0
  93. package/dist/api/partial-success-bulk.d.ts.map +1 -0
  94. package/dist/api/partial-success-bulk.js +436 -0
  95. package/dist/api/partial-success-bulk.js.map +1 -0
  96. package/dist/api/partial-success-mutation.d.ts +13 -1
  97. package/dist/api/partial-success-mutation.d.ts.map +1 -1
  98. package/dist/api/partial-success-mutation.js +5 -1
  99. package/dist/api/partial-success-mutation.js.map +1 -1
  100. package/dist/api/people.d.ts +54 -1
  101. package/dist/api/people.d.ts.map +1 -1
  102. package/dist/api/people.js +27 -3
  103. package/dist/api/people.js.map +1 -1
  104. package/dist/api/probes.d.ts +487 -0
  105. package/dist/api/probes.d.ts.map +1 -0
  106. package/dist/api/probes.js +881 -0
  107. package/dist/api/probes.js.map +1 -0
  108. package/dist/api/raw-document.d.ts.map +1 -1
  109. package/dist/api/raw-document.js +2 -2
  110. package/dist/api/raw-document.js.map +1 -1
  111. package/dist/api/raw-write.d.ts +12 -4
  112. package/dist/api/raw-write.d.ts.map +1 -1
  113. package/dist/api/raw-write.js +32 -14
  114. package/dist/api/raw-write.js.map +1 -1
  115. package/dist/api/resolution-context.d.ts +23 -11
  116. package/dist/api/resolution-context.d.ts.map +1 -1
  117. package/dist/api/resolution-context.js +53 -12
  118. package/dist/api/resolution-context.js.map +1 -1
  119. package/dist/api/resolution-pass.d.ts +30 -1
  120. package/dist/api/resolution-pass.d.ts.map +1 -1
  121. package/dist/api/resolution-pass.js +36 -1
  122. package/dist/api/resolution-pass.js.map +1 -1
  123. package/dist/api/resolve-client.d.ts +22 -0
  124. package/dist/api/resolve-client.d.ts.map +1 -1
  125. package/dist/api/resolve-client.js +9 -1
  126. package/dist/api/resolve-client.js.map +1 -1
  127. package/dist/api/response-root.d.ts +92 -46
  128. package/dist/api/response-root.d.ts.map +1 -1
  129. package/dist/api/response-root.js +93 -41
  130. package/dist/api/response-root.js.map +1 -1
  131. package/dist/api/tag-directory.d.ts +154 -0
  132. package/dist/api/tag-directory.d.ts.map +1 -0
  133. package/dist/api/tag-directory.js +325 -0
  134. package/dist/api/tag-directory.js.map +1 -0
  135. package/dist/api/time-tracking.d.ts +165 -0
  136. package/dist/api/time-tracking.d.ts.map +1 -0
  137. package/dist/api/time-tracking.js +135 -0
  138. package/dist/api/time-tracking.js.map +1 -0
  139. package/dist/api/transport.js +3 -3
  140. package/dist/api/transport.js.map +1 -1
  141. package/dist/api/usage.d.ts +190 -0
  142. package/dist/api/usage.d.ts.map +1 -0
  143. package/dist/api/usage.js +194 -0
  144. package/dist/api/usage.js.map +1 -0
  145. package/dist/api/users-fan-out-mutation.d.ts.map +1 -1
  146. package/dist/api/users-fan-out-mutation.js +10 -5
  147. package/dist/api/users-fan-out-mutation.js.map +1 -1
  148. package/dist/api/webhooks.d.ts +357 -0
  149. package/dist/api/webhooks.d.ts.map +1 -0
  150. package/dist/api/webhooks.js +333 -0
  151. package/dist/api/webhooks.js.map +1 -0
  152. package/dist/cli/envelope-out.d.ts +18 -1
  153. package/dist/cli/envelope-out.d.ts.map +1 -1
  154. package/dist/cli/envelope-out.js +16 -2
  155. package/dist/cli/envelope-out.js.map +1 -1
  156. package/dist/cli/program.d.ts.map +1 -1
  157. package/dist/cli/program.js +120 -1
  158. package/dist/cli/program.js.map +1 -1
  159. package/dist/cli/run.d.ts +32 -0
  160. package/dist/cli/run.d.ts.map +1 -1
  161. package/dist/cli/run.js +3 -0
  162. package/dist/cli/run.js.map +1 -1
  163. package/dist/commands/account/tags.d.ts +37 -0
  164. package/dist/commands/account/tags.d.ts.map +1 -0
  165. package/dist/commands/account/tags.js +84 -0
  166. package/dist/commands/account/tags.js.map +1 -0
  167. package/dist/commands/auth/login.d.ts +14 -0
  168. package/dist/commands/auth/login.d.ts.map +1 -0
  169. package/dist/commands/auth/login.js +314 -0
  170. package/dist/commands/auth/login.js.map +1 -0
  171. package/dist/commands/auth/logout.d.ts +28 -0
  172. package/dist/commands/auth/logout.d.ts.map +1 -0
  173. package/dist/commands/auth/logout.js +94 -0
  174. package/dist/commands/auth/logout.js.map +1 -0
  175. package/dist/commands/board/archive.d.ts.map +1 -1
  176. package/dist/commands/board/archive.js +14 -14
  177. package/dist/commands/board/archive.js.map +1 -1
  178. package/dist/commands/board/column-create.d.ts +9 -8
  179. package/dist/commands/board/column-create.d.ts.map +1 -1
  180. package/dist/commands/board/column-create.js +61 -51
  181. package/dist/commands/board/column-create.js.map +1 -1
  182. package/dist/commands/board/column-delete.d.ts.map +1 -1
  183. package/dist/commands/board/column-delete.js +15 -16
  184. package/dist/commands/board/column-delete.js.map +1 -1
  185. package/dist/commands/board/column-update.d.ts.map +1 -1
  186. package/dist/commands/board/column-update.js +23 -22
  187. package/dist/commands/board/column-update.js.map +1 -1
  188. package/dist/commands/board/create.d.ts.map +1 -1
  189. package/dist/commands/board/create.js +14 -17
  190. package/dist/commands/board/create.js.map +1 -1
  191. package/dist/commands/board/delete.d.ts.map +1 -1
  192. package/dist/commands/board/delete.js +12 -15
  193. package/dist/commands/board/delete.js.map +1 -1
  194. package/dist/commands/board/describe.d.ts.map +1 -1
  195. package/dist/commands/board/describe.js +30 -0
  196. package/dist/commands/board/describe.js.map +1 -1
  197. package/dist/commands/board/duplicate.d.ts.map +1 -1
  198. package/dist/commands/board/duplicate.js +12 -13
  199. package/dist/commands/board/duplicate.js.map +1 -1
  200. package/dist/commands/board/favorites.d.ts +33 -0
  201. package/dist/commands/board/favorites.d.ts.map +1 -0
  202. package/dist/commands/board/favorites.js +74 -0
  203. package/dist/commands/board/favorites.js.map +1 -0
  204. package/dist/commands/board/find.d.ts +1 -1
  205. package/dist/commands/board/group-archive.d.ts.map +1 -1
  206. package/dist/commands/board/group-archive.js +12 -16
  207. package/dist/commands/board/group-archive.js.map +1 -1
  208. package/dist/commands/board/group-create.d.ts.map +1 -1
  209. package/dist/commands/board/group-create.js +9 -19
  210. package/dist/commands/board/group-create.js.map +1 -1
  211. package/dist/commands/board/group-delete.d.ts.map +1 -1
  212. package/dist/commands/board/group-delete.js +12 -16
  213. package/dist/commands/board/group-delete.js.map +1 -1
  214. package/dist/commands/board/group-duplicate.d.ts.map +1 -1
  215. package/dist/commands/board/group-duplicate.js +12 -16
  216. package/dist/commands/board/group-duplicate.js.map +1 -1
  217. package/dist/commands/board/group-update.d.ts.map +1 -1
  218. package/dist/commands/board/group-update.js +12 -11
  219. package/dist/commands/board/group-update.js.map +1 -1
  220. package/dist/commands/board/list.d.ts +1 -1
  221. package/dist/commands/board/update.d.ts.map +1 -1
  222. package/dist/commands/board/update.js +16 -11
  223. package/dist/commands/board/update.js.map +1 -1
  224. package/dist/commands/cache/list.d.ts +2 -0
  225. package/dist/commands/cache/list.d.ts.map +1 -1
  226. package/dist/commands/cache/list.js +2 -2
  227. package/dist/commands/cache/list.js.map +1 -1
  228. package/dist/commands/completion.d.ts +188 -0
  229. package/dist/commands/completion.d.ts.map +1 -0
  230. package/dist/commands/completion.js +418 -0
  231. package/dist/commands/completion.js.map +1 -0
  232. package/dist/commands/dev/_shared.d.ts +40 -0
  233. package/dist/commands/dev/_shared.d.ts.map +1 -0
  234. package/dist/commands/dev/_shared.js +104 -0
  235. package/dist/commands/dev/_shared.js.map +1 -0
  236. package/dist/commands/dev/configure.d.ts +36 -0
  237. package/dist/commands/dev/configure.d.ts.map +1 -0
  238. package/dist/commands/dev/configure.js +145 -0
  239. package/dist/commands/dev/configure.js.map +1 -0
  240. package/dist/commands/dev/discover.d.ts +34 -0
  241. package/dist/commands/dev/discover.d.ts.map +1 -0
  242. package/dist/commands/dev/discover.js +117 -0
  243. package/dist/commands/dev/discover.js.map +1 -0
  244. package/dist/commands/dev/doctor.d.ts +39 -0
  245. package/dist/commands/dev/doctor.d.ts.map +1 -0
  246. package/dist/commands/dev/doctor.js +91 -0
  247. package/dist/commands/dev/doctor.js.map +1 -0
  248. package/dist/commands/dev/epic/items.d.ts +24 -0
  249. package/dist/commands/dev/epic/items.d.ts.map +1 -0
  250. package/dist/commands/dev/epic/items.js +103 -0
  251. package/dist/commands/dev/epic/items.js.map +1 -0
  252. package/dist/commands/dev/epic/list.d.ts +36 -0
  253. package/dist/commands/dev/epic/list.d.ts.map +1 -0
  254. package/dist/commands/dev/epic/list.js +120 -0
  255. package/dist/commands/dev/epic/list.js.map +1 -0
  256. package/dist/commands/dev/release/list.d.ts +21 -0
  257. package/dist/commands/dev/release/list.d.ts.map +1 -0
  258. package/dist/commands/dev/release/list.js +73 -0
  259. package/dist/commands/dev/release/list.js.map +1 -0
  260. package/dist/commands/dev/sprint/current.d.ts +24 -0
  261. package/dist/commands/dev/sprint/current.d.ts.map +1 -0
  262. package/dist/commands/dev/sprint/current.js +90 -0
  263. package/dist/commands/dev/sprint/current.js.map +1 -0
  264. package/dist/commands/dev/sprint/items.d.ts +34 -0
  265. package/dist/commands/dev/sprint/items.d.ts.map +1 -0
  266. package/dist/commands/dev/sprint/items.js +118 -0
  267. package/dist/commands/dev/sprint/items.js.map +1 -0
  268. package/dist/commands/dev/sprint/list.d.ts +41 -0
  269. package/dist/commands/dev/sprint/list.d.ts.map +1 -0
  270. package/dist/commands/dev/sprint/list.js +104 -0
  271. package/dist/commands/dev/sprint/list.js.map +1 -0
  272. package/dist/commands/dev/task/block.d.ts +29 -0
  273. package/dist/commands/dev/task/block.d.ts.map +1 -0
  274. package/dist/commands/dev/task/block.js +106 -0
  275. package/dist/commands/dev/task/block.js.map +1 -0
  276. package/dist/commands/dev/task/done.d.ts +30 -0
  277. package/dist/commands/dev/task/done.d.ts.map +1 -0
  278. package/dist/commands/dev/task/done.js +113 -0
  279. package/dist/commands/dev/task/done.js.map +1 -0
  280. package/dist/commands/dev/task/list.d.ts +42 -0
  281. package/dist/commands/dev/task/list.d.ts.map +1 -0
  282. package/dist/commands/dev/task/list.js +227 -0
  283. package/dist/commands/dev/task/list.js.map +1 -0
  284. package/dist/commands/dev/task/start.d.ts +29 -0
  285. package/dist/commands/dev/task/start.d.ts.map +1 -0
  286. package/dist/commands/dev/task/start.js +90 -0
  287. package/dist/commands/dev/task/start.js.map +1 -0
  288. package/dist/commands/doc/get.d.ts +46 -0
  289. package/dist/commands/doc/get.d.ts.map +1 -0
  290. package/dist/commands/doc/get.js +95 -0
  291. package/dist/commands/doc/get.js.map +1 -0
  292. package/dist/commands/doc/list.d.ts +83 -0
  293. package/dist/commands/doc/list.d.ts.map +1 -0
  294. package/dist/commands/doc/list.js +248 -0
  295. package/dist/commands/doc/list.js.map +1 -0
  296. package/dist/commands/emit.d.ts.map +1 -1
  297. package/dist/commands/emit.js +5 -3
  298. package/dist/commands/emit.js.map +1 -1
  299. package/dist/commands/index.d.ts.map +1 -1
  300. package/dist/commands/index.js +141 -0
  301. package/dist/commands/index.js.map +1 -1
  302. package/dist/commands/item/archive.d.ts.map +1 -1
  303. package/dist/commands/item/archive.js +11 -0
  304. package/dist/commands/item/archive.js.map +1 -1
  305. package/dist/commands/item/clear.d.ts.map +1 -1
  306. package/dist/commands/item/clear.js +15 -0
  307. package/dist/commands/item/clear.js.map +1 -1
  308. package/dist/commands/item/create.d.ts.map +1 -1
  309. package/dist/commands/item/create.js +41 -8
  310. package/dist/commands/item/create.js.map +1 -1
  311. package/dist/commands/item/delete.d.ts.map +1 -1
  312. package/dist/commands/item/delete.js +11 -0
  313. package/dist/commands/item/delete.js.map +1 -1
  314. package/dist/commands/item/duplicate.d.ts.map +1 -1
  315. package/dist/commands/item/duplicate.js +12 -0
  316. package/dist/commands/item/duplicate.js.map +1 -1
  317. package/dist/commands/item/history.d.ts +60 -0
  318. package/dist/commands/item/history.d.ts.map +1 -0
  319. package/dist/commands/item/history.js +309 -0
  320. package/dist/commands/item/history.js.map +1 -0
  321. package/dist/commands/item/list.d.ts.map +1 -1
  322. package/dist/commands/item/list.js +16 -13
  323. package/dist/commands/item/list.js.map +1 -1
  324. package/dist/commands/item/move.d.ts.map +1 -1
  325. package/dist/commands/item/move.js +41 -7
  326. package/dist/commands/item/move.js.map +1 -1
  327. package/dist/commands/item/search.d.ts +99 -15
  328. package/dist/commands/item/search.d.ts.map +1 -1
  329. package/dist/commands/item/search.js +480 -36
  330. package/dist/commands/item/search.js.map +1 -1
  331. package/dist/commands/item/set.d.ts.map +1 -1
  332. package/dist/commands/item/set.js +52 -8
  333. package/dist/commands/item/set.js.map +1 -1
  334. package/dist/commands/item/time-track/start.d.ts +61 -0
  335. package/dist/commands/item/time-track/start.d.ts.map +1 -0
  336. package/dist/commands/item/time-track/start.js +138 -0
  337. package/dist/commands/item/time-track/start.js.map +1 -0
  338. package/dist/commands/item/time-track/stop.d.ts +32 -0
  339. package/dist/commands/item/time-track/stop.d.ts.map +1 -0
  340. package/dist/commands/item/time-track/stop.js +97 -0
  341. package/dist/commands/item/time-track/stop.js.map +1 -0
  342. package/dist/commands/item/update.d.ts +2 -0
  343. package/dist/commands/item/update.d.ts.map +1 -1
  344. package/dist/commands/item/update.js +164 -113
  345. package/dist/commands/item/update.js.map +1 -1
  346. package/dist/commands/item/upload.d.ts +108 -0
  347. package/dist/commands/item/upload.d.ts.map +1 -0
  348. package/dist/commands/item/upload.js +370 -0
  349. package/dist/commands/item/upload.js.map +1 -0
  350. package/dist/commands/item/upsert.d.ts.map +1 -1
  351. package/dist/commands/item/upsert.js +48 -1
  352. package/dist/commands/item/upsert.js.map +1 -1
  353. package/dist/commands/item/watch.d.ts +90 -0
  354. package/dist/commands/item/watch.d.ts.map +1 -0
  355. package/dist/commands/item/watch.js +342 -0
  356. package/dist/commands/item/watch.js.map +1 -0
  357. package/dist/commands/notification/send.d.ts +60 -0
  358. package/dist/commands/notification/send.d.ts.map +1 -0
  359. package/dist/commands/notification/send.js +147 -0
  360. package/dist/commands/notification/send.js.map +1 -0
  361. package/dist/commands/parse-argv.d.ts.map +1 -1
  362. package/dist/commands/parse-argv.js +14 -4
  363. package/dist/commands/parse-argv.js.map +1 -1
  364. package/dist/commands/raw/index.d.ts.map +1 -1
  365. package/dist/commands/raw/index.js +13 -15
  366. package/dist/commands/raw/index.js.map +1 -1
  367. package/dist/commands/run-by-id-lookup.d.ts.map +1 -1
  368. package/dist/commands/run-by-id-lookup.js +2 -2
  369. package/dist/commands/run-by-id-lookup.js.map +1 -1
  370. package/dist/commands/schema/index.d.ts +2 -0
  371. package/dist/commands/schema/index.d.ts.map +1 -1
  372. package/dist/commands/status.d.ts +120 -0
  373. package/dist/commands/status.d.ts.map +1 -0
  374. package/dist/commands/status.js +365 -0
  375. package/dist/commands/status.js.map +1 -0
  376. package/dist/commands/update/body-source.d.ts.map +1 -1
  377. package/dist/commands/update/body-source.js +2 -2
  378. package/dist/commands/update/body-source.js.map +1 -1
  379. package/dist/commands/update/create.d.ts +2 -3
  380. package/dist/commands/update/create.d.ts.map +1 -1
  381. package/dist/commands/update/create.js +15 -3
  382. package/dist/commands/update/create.js.map +1 -1
  383. package/dist/commands/update/delete.d.ts.map +1 -1
  384. package/dist/commands/update/delete.js +11 -0
  385. package/dist/commands/update/delete.js.map +1 -1
  386. package/dist/commands/update/edit.d.ts.map +1 -1
  387. package/dist/commands/update/edit.js +11 -0
  388. package/dist/commands/update/edit.js.map +1 -1
  389. package/dist/commands/update/list.d.ts.map +1 -1
  390. package/dist/commands/update/list.js +15 -12
  391. package/dist/commands/update/list.js.map +1 -1
  392. package/dist/commands/update/reply.d.ts.map +1 -1
  393. package/dist/commands/update/reply.js +11 -0
  394. package/dist/commands/update/reply.js.map +1 -1
  395. package/dist/commands/update/toggle.d.ts.map +1 -1
  396. package/dist/commands/update/toggle.js +13 -0
  397. package/dist/commands/update/toggle.js.map +1 -1
  398. package/dist/commands/update/upload.d.ts +69 -0
  399. package/dist/commands/update/upload.d.ts.map +1 -0
  400. package/dist/commands/update/upload.js +235 -0
  401. package/dist/commands/update/upload.js.map +1 -0
  402. package/dist/commands/usage.d.ts +58 -0
  403. package/dist/commands/usage.d.ts.map +1 -0
  404. package/dist/commands/usage.js +94 -0
  405. package/dist/commands/usage.js.map +1 -0
  406. package/dist/commands/webhook/create.d.ts +74 -0
  407. package/dist/commands/webhook/create.d.ts.map +1 -0
  408. package/dist/commands/webhook/create.js +150 -0
  409. package/dist/commands/webhook/create.js.map +1 -0
  410. package/dist/commands/webhook/delete.d.ts +46 -0
  411. package/dist/commands/webhook/delete.d.ts.map +1 -0
  412. package/dist/commands/webhook/delete.js +141 -0
  413. package/dist/commands/webhook/delete.js.map +1 -0
  414. package/dist/commands/webhook/list.d.ts +23 -0
  415. package/dist/commands/webhook/list.d.ts.map +1 -0
  416. package/dist/commands/webhook/list.js +68 -0
  417. package/dist/commands/webhook/list.js.map +1 -0
  418. package/dist/commands/workspace/create.d.ts.map +1 -1
  419. package/dist/commands/workspace/create.js +16 -0
  420. package/dist/commands/workspace/create.js.map +1 -1
  421. package/dist/commands/workspace/delete.d.ts.map +1 -1
  422. package/dist/commands/workspace/delete.js +13 -13
  423. package/dist/commands/workspace/delete.js.map +1 -1
  424. package/dist/commands/workspace/list.d.ts +1 -1
  425. package/dist/commands/workspace/update.d.ts.map +1 -1
  426. package/dist/commands/workspace/update.js +15 -15
  427. package/dist/commands/workspace/update.js.map +1 -1
  428. package/dist/config/credentials.d.ts +189 -0
  429. package/dist/config/credentials.d.ts.map +1 -0
  430. package/dist/config/credentials.js +300 -0
  431. package/dist/config/credentials.js.map +1 -0
  432. package/dist/config/profiles.d.ts +125 -0
  433. package/dist/config/profiles.d.ts.map +1 -0
  434. package/dist/config/profiles.js +227 -0
  435. package/dist/config/profiles.js.map +1 -0
  436. package/dist/types/global-flags.d.ts +1 -1
  437. package/dist/types/global-flags.d.ts.map +1 -1
  438. package/dist/types/global-flags.js +28 -16
  439. package/dist/types/global-flags.js.map +1 -1
  440. package/dist/types/ids.d.ts +4 -0
  441. package/dist/types/ids.d.ts.map +1 -1
  442. package/dist/types/ids.js +12 -3
  443. package/dist/types/ids.js.map +1 -1
  444. package/dist/utils/errors.d.ts +57 -3
  445. package/dist/utils/errors.d.ts.map +1 -1
  446. package/dist/utils/errors.js +69 -2
  447. package/dist/utils/errors.js.map +1 -1
  448. package/dist/utils/fs.d.ts +35 -0
  449. package/dist/utils/fs.d.ts.map +1 -0
  450. package/dist/utils/fs.js +36 -0
  451. package/dist/utils/fs.js.map +1 -0
  452. package/dist/utils/json.d.ts +60 -0
  453. package/dist/utils/json.d.ts.map +1 -0
  454. package/dist/utils/json.js +86 -0
  455. package/dist/utils/json.js.map +1 -0
  456. package/dist/utils/mime.d.ts +24 -0
  457. package/dist/utils/mime.d.ts.map +1 -0
  458. package/dist/utils/mime.js +64 -0
  459. package/dist/utils/mime.js.map +1 -0
  460. package/dist/utils/output/envelope.d.ts +30 -0
  461. package/dist/utils/output/envelope.d.ts.map +1 -1
  462. package/dist/utils/output/envelope.js +26 -0
  463. package/dist/utils/output/envelope.js.map +1 -1
  464. package/dist/utils/output/ndjson.d.ts +90 -3
  465. package/dist/utils/output/ndjson.d.ts.map +1 -1
  466. package/dist/utils/output/ndjson.js +33 -0
  467. package/dist/utils/output/ndjson.js.map +1 -1
  468. package/dist/utils/redact.d.ts.map +1 -1
  469. package/dist/utils/redact.js +31 -0
  470. package/dist/utils/redact.js.map +1 -1
  471. package/dist/utils/signal.d.ts +42 -0
  472. package/dist/utils/signal.d.ts.map +1 -0
  473. package/dist/utils/signal.js +45 -0
  474. package/dist/utils/signal.js.map +1 -0
  475. package/package.json +2 -1
  476. package/dist/commands/account/client-helper.d.ts +0 -37
  477. package/dist/commands/account/client-helper.d.ts.map +0 -1
  478. package/dist/commands/account/client-helper.js +0 -55
  479. package/dist/commands/account/client-helper.js.map +0 -1
@@ -0,0 +1,90 @@
1
+ /**
2
+ * `monday item watch <iid>` — polling-based event stream over the
3
+ * v0.3-M24 `item-history-projection.ts` projector. Runtime body
4
+ * shipped at v0.4-M29 IMPL (`7b83a3a` + round-1 fix-ups). Pinned
5
+ * per cli-design §13 v0.4 entry + §14.4 closure (`31713fb`) +
6
+ * v0.4-plan §3 M29.
7
+ *
8
+ * **What this verb answers:** "wait for changes on this item + emit
9
+ * them as they arrive". Single CLI invocation polls Monday's
10
+ * `boards(ids:){ activity_logs(item_ids:, from:, limit:) }` surface
11
+ * each tick, projects new rows through the M24 projector, emits one
12
+ * NDJSON record per new event plus a session-summary trailer on exit.
13
+ *
14
+ * **GraphQL operation:** `ItemWatchPoll` (one per poll tick;
15
+ * R-NEW-37 W2 audit-point — operationName pinned in
16
+ * `WATCH_POLL_QUERY` literal at `src/api/item-watch.ts`).
17
+ *
18
+ * **Action shape (M29 IMPL).** Item-board lookup via
19
+ * `lookupItemBoard` → `watchItem` polling loop with NDJSON
20
+ * `onEvent` streaming hook + per-event projection via M24's
21
+ * `projectActivityLogRow` → trailer-meta emit on graceful exit.
22
+ * SIGINT graceful drain via `ctx.signal` (the same AbortSignal seam
23
+ * M22 status uses). The polling loop owns:
24
+ *
25
+ * - Cadence (default 30s; range 1s–1h; `--interval <ms>`).
26
+ * - Watermark advance (last-seen-event-id; `--since <event-id>`
27
+ * bootstraps).
28
+ * - Circuit breaker (reactive on Monday wire errors; trip after 5
29
+ * consecutive failures; per-failure warnings accumulate on
30
+ * `WatchItemResult.warnings` and fold into the trailer's
31
+ * `_meta.warnings` slot at session end per cli-design §6.3 —
32
+ * NOT interleaved with event lines).
33
+ * - Limit enforcement (`--max-events <n>` / `--max-duration
34
+ * <seconds>`).
35
+ * - `--once` short-circuit (drain backlog and exit; do NOT poll).
36
+ *
37
+ * **Output:** NDJSON only at v0.4-M29 — `--json` / `--table` /
38
+ * `--output` global flags ignored (this is a streaming verb).
39
+ * Trailer-meta carries seven M29-specific slots:
40
+ * `events_emitted` + `polls_made` + `failed_polls` +
41
+ * `watch_duration_seconds` + `last_seen_event_id` +
42
+ * `circuit_broken_at` + `exit_reason`. Plus the standard §6.3
43
+ * `_meta.warnings[]` slot collects any `WatchSessionWarning`
44
+ * records the polling loop accumulated (poll_failed,
45
+ * circuit_breaker_armed, unknown_event_kind) — warnings are NOT
46
+ * interleaved with event lines.
47
+ *
48
+ * Idempotent: yes (pure read; re-running with the same `--since` is
49
+ * safe).
50
+ */
51
+ import { z } from 'zod';
52
+ import { type CommandModule } from '../types.js';
53
+ import { type HistoryEvent } from '../../api/item-history-projection.js';
54
+ /**
55
+ * Argv input schema for `monday item watch <iid>`. Validates at the
56
+ * parse boundary; the action body consumes the validated shape
57
+ * directly (no defensive re-checks).
58
+ *
59
+ * Mutual-exclusion rules (superRefine):
60
+ *
61
+ * - `--once` is incompatible with `--max-events` / `--max-duration`.
62
+ * `--once` already pins the exit (drain then return); a max-event
63
+ * ceiling would be redundant and a max-duration ceiling could
64
+ * race the backlog drain.
65
+ * - `--interval <ms>` requires the bare-integer ms form; the closure
66
+ * pins ms semantics (not bare seconds) to disambiguate 30 vs
67
+ * 30000 unambiguously. Range 1000–3600000 (1s–1h).
68
+ */
69
+ declare const inputSchema: z.ZodObject<{
70
+ iid: z.core.$ZodBranded<z.ZodString, "ItemId", "out">;
71
+ interval: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
72
+ since: z.ZodOptional<z.ZodString>;
73
+ once: z.ZodOptional<z.ZodBoolean>;
74
+ maxEvents: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
75
+ maxDuration: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
76
+ include: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string[], string>>, z.ZodArray<z.ZodEnum<{
77
+ unknown: "unknown";
78
+ update_column_value: "update_column_value";
79
+ create_column: "create_column";
80
+ create_group: "create_group";
81
+ update_board_name: "update_board_name";
82
+ update_board_nickname: "update_board_nickname";
83
+ board_workspace_id_changed: "board_workspace_id_changed";
84
+ update_posted: "update_posted";
85
+ update_replied: "update_replied";
86
+ }>>>>;
87
+ }, z.core.$strict>;
88
+ export declare const itemWatchCommand: CommandModule<z.infer<typeof inputSchema>, HistoryEvent>;
89
+ export {};
90
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/commands/item/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAsBnE,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAkD9C;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;kBAsEb,CAAC;AAEL,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,YAAY,CA8Lb,CAAC"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * `monday item watch <iid>` — polling-based event stream over the
3
+ * v0.3-M24 `item-history-projection.ts` projector. Runtime body
4
+ * shipped at v0.4-M29 IMPL (`7b83a3a` + round-1 fix-ups). Pinned
5
+ * per cli-design §13 v0.4 entry + §14.4 closure (`31713fb`) +
6
+ * v0.4-plan §3 M29.
7
+ *
8
+ * **What this verb answers:** "wait for changes on this item + emit
9
+ * them as they arrive". Single CLI invocation polls Monday's
10
+ * `boards(ids:){ activity_logs(item_ids:, from:, limit:) }` surface
11
+ * each tick, projects new rows through the M24 projector, emits one
12
+ * NDJSON record per new event plus a session-summary trailer on exit.
13
+ *
14
+ * **GraphQL operation:** `ItemWatchPoll` (one per poll tick;
15
+ * R-NEW-37 W2 audit-point — operationName pinned in
16
+ * `WATCH_POLL_QUERY` literal at `src/api/item-watch.ts`).
17
+ *
18
+ * **Action shape (M29 IMPL).** Item-board lookup via
19
+ * `lookupItemBoard` → `watchItem` polling loop with NDJSON
20
+ * `onEvent` streaming hook + per-event projection via M24's
21
+ * `projectActivityLogRow` → trailer-meta emit on graceful exit.
22
+ * SIGINT graceful drain via `ctx.signal` (the same AbortSignal seam
23
+ * M22 status uses). The polling loop owns:
24
+ *
25
+ * - Cadence (default 30s; range 1s–1h; `--interval <ms>`).
26
+ * - Watermark advance (last-seen-event-id; `--since <event-id>`
27
+ * bootstraps).
28
+ * - Circuit breaker (reactive on Monday wire errors; trip after 5
29
+ * consecutive failures; per-failure warnings accumulate on
30
+ * `WatchItemResult.warnings` and fold into the trailer's
31
+ * `_meta.warnings` slot at session end per cli-design §6.3 —
32
+ * NOT interleaved with event lines).
33
+ * - Limit enforcement (`--max-events <n>` / `--max-duration
34
+ * <seconds>`).
35
+ * - `--once` short-circuit (drain backlog and exit; do NOT poll).
36
+ *
37
+ * **Output:** NDJSON only at v0.4-M29 — `--json` / `--table` /
38
+ * `--output` global flags ignored (this is a streaming verb).
39
+ * Trailer-meta carries seven M29-specific slots:
40
+ * `events_emitted` + `polls_made` + `failed_polls` +
41
+ * `watch_duration_seconds` + `last_seen_event_id` +
42
+ * `circuit_broken_at` + `exit_reason`. Plus the standard §6.3
43
+ * `_meta.warnings[]` slot collects any `WatchSessionWarning`
44
+ * records the polling loop accumulated (poll_failed,
45
+ * circuit_breaker_armed, unknown_event_kind) — warnings are NOT
46
+ * interleaved with event lines.
47
+ *
48
+ * Idempotent: yes (pure read; re-running with the same `--since` is
49
+ * safe).
50
+ */
51
+ import { z } from 'zod';
52
+ import { ensureSubcommand } from '../types.js';
53
+ import { parseArgv } from '../parse-argv.js';
54
+ import { resolveClient } from '../../api/resolve-client.js';
55
+ import { lookupItemBoard } from '../../api/item-board-lookup.js';
56
+ import { SourceAggregator } from '../../api/source-aggregator.js';
57
+ import { buildStreamingTrailerMeta, startNdjsonStream, } from '../../utils/output/ndjson.js';
58
+ import { collectSecrets } from '../../cli/envelope-out.js';
59
+ import { ApiError } from '../../utils/errors.js';
60
+ import { ItemIdSchema } from '../../types/ids.js';
61
+ import { CIRCUIT_BREAKER_CONSECUTIVE_FAILS, DEFAULT_WATCH_INTERVAL_MS, MAX_WATCH_INTERVAL_MS, MIN_WATCH_INTERVAL_MS, watchItem, } from '../../api/item-watch.js';
62
+ import { historyEventSchema, } from '../../api/item-history-projection.js';
63
+ /**
64
+ * The `--include` flag accepts a comma-separated list of literal kind
65
+ * values from the M24 closed event-kind taxonomy (9 kinds). Mirrors
66
+ * `item history`'s `--kinds` enum verbatim — forward-compat at the
67
+ * argv boundary even though v0.4-M29 only emits activity-log-sourced
68
+ * kinds (the projector's `update_posted` / `update_replied` variants
69
+ * are from the updates source, which v0.4-M29 doesn't poll; agents
70
+ * passing those kinds get no events at v0.4 but the argv accepts them
71
+ * for v0.5+ comment-polling compatibility).
72
+ */
73
+ const WATCH_KIND_LITERALS = [
74
+ 'update_column_value',
75
+ 'create_column',
76
+ 'create_group',
77
+ 'update_board_name',
78
+ 'update_board_nickname',
79
+ 'board_workspace_id_changed',
80
+ 'update_posted',
81
+ 'update_replied',
82
+ 'unknown',
83
+ ];
84
+ const watchKindSchema = z.enum(WATCH_KIND_LITERALS);
85
+ /**
86
+ * Parses `--include <list>` (comma-separated; commander hands it over
87
+ * as a raw string). Empty entries filtered before validation so
88
+ * `--include update_column_value,` doesn't raise `usage_error`. Empty
89
+ * arrays after the filter raise `usage_error` rather than silently
90
+ * meaning "include everything" — an agent passing `--include ,,` is
91
+ * almost certainly bug, not intent.
92
+ */
93
+ const includeListSchema = z
94
+ .string()
95
+ .transform((raw) => raw.split(',').map((s) => s.trim()).filter((s) => s.length > 0))
96
+ .pipe(z.array(watchKindSchema).min(1));
97
+ /**
98
+ * Event-ID validator for `--since <event-id>`. Numeric string per
99
+ * Monday's `ActivityLogType.id` shape (NON_NULL String at the wire
100
+ * level but always digits in practice per the M24 probe). Open shape
101
+ * (no length cap) — Monday's event IDs are typically 13+ digits.
102
+ */
103
+ const eventIdSchema = z
104
+ .string()
105
+ .min(1)
106
+ .regex(/^\d+$/u, { message: 'must be a numeric event ID (digits only)' });
107
+ /**
108
+ * Argv input schema for `monday item watch <iid>`. Validates at the
109
+ * parse boundary; the action body consumes the validated shape
110
+ * directly (no defensive re-checks).
111
+ *
112
+ * Mutual-exclusion rules (superRefine):
113
+ *
114
+ * - `--once` is incompatible with `--max-events` / `--max-duration`.
115
+ * `--once` already pins the exit (drain then return); a max-event
116
+ * ceiling would be redundant and a max-duration ceiling could
117
+ * race the backlog drain.
118
+ * - `--interval <ms>` requires the bare-integer ms form; the closure
119
+ * pins ms semantics (not bare seconds) to disambiguate 30 vs
120
+ * 30000 unambiguously. Range 1000–3600000 (1s–1h).
121
+ */
122
+ const inputSchema = z
123
+ .object({
124
+ iid: ItemIdSchema,
125
+ /**
126
+ * Polling cadence in milliseconds. Default
127
+ * {@link DEFAULT_WATCH_INTERVAL_MS} (30000ms / 30s) per cli-design
128
+ * §14.4 closure. Range {@link MIN_WATCH_INTERVAL_MS} (1000ms /
129
+ * 1s; faster trips Monday's request-rate concerns + the
130
+ * propagation-lag floor) to {@link MAX_WATCH_INTERVAL_MS}
131
+ * (3600000ms / 1h; slower crosses the "no longer a watch" line —
132
+ * use `cron + monday item history` for hourly cadences).
133
+ */
134
+ interval: z.coerce
135
+ .number()
136
+ .int()
137
+ .min(MIN_WATCH_INTERVAL_MS)
138
+ .max(MAX_WATCH_INTERVAL_MS)
139
+ .optional(),
140
+ /**
141
+ * Last-seen-event-id watermark for session restart. One-shot
142
+ * bootstrap — the runtime looks up the event's `created_at`
143
+ * once, sets the initial poll-from timestamp, emits any backlog
144
+ * past the watermark, then enters the polling loop. Distinct
145
+ * from a full `--resume <token>` mechanism (still open per
146
+ * cli-design §14.6).
147
+ */
148
+ since: eventIdSchema.optional(),
149
+ /**
150
+ * Drain backlog from `--since` (or recent N if no `--since`) and
151
+ * exit without polling. Distinct from `--max-events 1` which
152
+ * waits for the NEXT event.
153
+ */
154
+ once: z.boolean().optional(),
155
+ /**
156
+ * Cap on emitted events. Session exits with
157
+ * `exit_reason: 'max_events'` once the count is reached
158
+ * (success envelope).
159
+ */
160
+ maxEvents: z.coerce.number().int().positive().optional(),
161
+ /**
162
+ * Wall-clock ceiling in seconds. Session exits with
163
+ * `exit_reason: 'max_duration'` once the duration is reached
164
+ * (current in-flight poll completes first).
165
+ */
166
+ maxDuration: z.coerce.number().int().positive().optional(),
167
+ /**
168
+ * Comma-separated list of event kinds to retain. Filter applied
169
+ * at projection time (Monday doesn't expose a server-side filter
170
+ * on `activity_logs.event`). Accepts all 9 M24 kinds for
171
+ * forward-compat; v0.4-M29 only emits activity-log-sourced
172
+ * kinds.
173
+ */
174
+ include: includeListSchema.optional(),
175
+ })
176
+ .strict()
177
+ .superRefine((value, ctx) => {
178
+ if (value.once === true && value.maxEvents !== undefined) {
179
+ ctx.addIssue({
180
+ code: 'custom',
181
+ message: '--once is incompatible with --max-events (pick one)',
182
+ path: ['once'],
183
+ });
184
+ }
185
+ if (value.once === true && value.maxDuration !== undefined) {
186
+ ctx.addIssue({
187
+ code: 'custom',
188
+ message: '--once is incompatible with --max-duration (pick one)',
189
+ path: ['once'],
190
+ });
191
+ }
192
+ });
193
+ export const itemWatchCommand = {
194
+ name: 'item.watch',
195
+ summary: 'Poll Monday for activity-log events on an item; stream NDJSON as they arrive',
196
+ examples: [
197
+ 'monday item watch 1234567890',
198
+ 'monday item watch 1234567890 --interval 60000 # 60s cadence',
199
+ 'monday item watch 1234567890 --since 999999 # resume from event-id',
200
+ 'monday item watch 1234567890 --once # drain backlog + exit',
201
+ 'monday item watch 1234567890 --max-events 10',
202
+ 'monday item watch 1234567890 --max-duration 3600 # 1h ceiling',
203
+ 'monday item watch 1234567890 --include update_column_value,update_posted',
204
+ ],
205
+ idempotent: true,
206
+ inputSchema,
207
+ // Mirrors M24 `item history`: the output schema describes the
208
+ // per-event record shape an agent sees on the NDJSON stream — NOT
209
+ // the session-summary trailer (the trailer-meta shape is documented
210
+ // in output-shapes.md + cli-design §4.3, but a streaming verb has no
211
+ // buffered `data` payload). `monday schema item.watch` reflects
212
+ // the event-record shape so agents pin their per-line parsers
213
+ // against the same discriminated-union taxonomy `item history`
214
+ // uses.
215
+ outputSchema: historyEventSchema,
216
+ attach: (program, ctx) => {
217
+ const noun = ensureSubcommand(program, 'item', 'Item commands');
218
+ noun
219
+ .command('watch <iid>')
220
+ .description(itemWatchCommand.summary)
221
+ .option('--interval <ms>', `polling cadence in milliseconds (${String(MIN_WATCH_INTERVAL_MS)}–${String(MAX_WATCH_INTERVAL_MS)}, default ${String(DEFAULT_WATCH_INTERVAL_MS)})`)
222
+ .option('--since <event-id>', 'resume from a previous session\'s last-seen-event-id (numeric ID from trailer-meta)')
223
+ .option('--once', 'drain backlog from --since (or recent events) and exit without polling')
224
+ .option('--max-events <n>', 'exit cleanly after emitting N events')
225
+ .option('--max-duration <seconds>', 'exit cleanly after N wall-clock seconds')
226
+ .option('--include <list>', 'comma-separated event kinds to retain (e.g. update_column_value,update_posted)')
227
+ .addHelpText('after', [
228
+ '',
229
+ 'Examples:',
230
+ ...itemWatchCommand.examples.map((e) => ` ${e}`),
231
+ '',
232
+ `NOTE: emits NDJSON only (one event per line + trailing meta).`,
233
+ `Default cadence ${String(DEFAULT_WATCH_INTERVAL_MS)}ms (${String(DEFAULT_WATCH_INTERVAL_MS / 1000)}s); circuit-breaker trips after`,
234
+ `${String(CIRCUIT_BREAKER_CONSECUTIVE_FAILS)} consecutive failed polls. Resume across sessions via`,
235
+ '--since <event-id> from the prior trailer-meta\'s last_seen_event_id.',
236
+ 'SIGINT triggers a graceful drain + trailer emit + exit 130.',
237
+ '',
238
+ 'Monday\'s activity_logs has an empirically-measured propagation lag',
239
+ '>30s on freshly-edited boards (M24 pre-flight finding 2026-05-11);',
240
+ 'cadence faster than 30s would generate polls against unpropagated data.',
241
+ '',
242
+ ].join('\n'))
243
+ .action(async (iid, rawOpts) => {
244
+ const merged = { ...rawOpts, iid };
245
+ const parsed = parseArgv(itemWatchCommand.inputSchema, merged);
246
+ const { client, apiVersion } = resolveClient(ctx, program.opts());
247
+ // Item-board lookup short-circuits a missing-item watch with
248
+ // `not_found` before the polling loop spins up. The lookup is
249
+ // a single wire call; SourceAggregator records it as `'live'`
250
+ // so the trailer's `meta.source` stays correct if a future
251
+ // cache layer lifts in here.
252
+ const { boardId } = await lookupItemBoard({
253
+ client,
254
+ itemId: parsed.iid,
255
+ });
256
+ const aggregator = new SourceAggregator();
257
+ aggregator.record('live', null);
258
+ const stream = startNdjsonStream({
259
+ stream: ctx.stdout,
260
+ secrets: collectSecrets(ctx.env, ctx.runtimeSecrets),
261
+ project: (event) => event,
262
+ });
263
+ const result = await watchItem({
264
+ client,
265
+ itemId: parsed.iid,
266
+ boardId,
267
+ intervalMs: parsed.interval ?? DEFAULT_WATCH_INTERVAL_MS,
268
+ ...(parsed.since === undefined ? {} : { since: parsed.since }),
269
+ ...(parsed.once === undefined ? {} : { once: parsed.once }),
270
+ ...(parsed.maxEvents === undefined ? {} : { maxEvents: parsed.maxEvents }),
271
+ ...(parsed.maxDuration === undefined ? {} : { maxDurationSeconds: parsed.maxDuration }),
272
+ ...(parsed.include === undefined ? {} : { includeKinds: parsed.include }),
273
+ signal: ctx.signal,
274
+ onEvent: stream.onItem,
275
+ });
276
+ aggregator.record(result.source, null);
277
+ const aggregated = aggregator.result('live');
278
+ // `WatchSessionWarning` already structurally satisfies the
279
+ // §6.1 `Warning` shape (code + message + details); the
280
+ // trailer slot accepts the superset directly.
281
+ const trailerWarnings = result.warnings;
282
+ stream.writeTrailer(buildStreamingTrailerMeta({
283
+ ctx: {
284
+ cliVersion: ctx.cliVersion,
285
+ requestId: ctx.requestId,
286
+ clock: ctx.clock,
287
+ },
288
+ apiVersion,
289
+ source: aggregated.source,
290
+ cacheAgeSeconds: aggregated.cacheAgeSeconds,
291
+ result: {
292
+ // `has_more` reflects "the source still has events past
293
+ // this session's exit point" — true for ceiling-driven
294
+ // exits (max_events / max_duration / signal) where the
295
+ // agent might re-invoke with --since; false for
296
+ // once_complete (the backlog was the whole window) and
297
+ // circuit_broken (the session failed, not the source
298
+ // running out).
299
+ hasMore: result.exit_reason === 'max_events' ||
300
+ result.exit_reason === 'max_duration' ||
301
+ result.exit_reason === 'signal',
302
+ totalReturned: result.events_emitted,
303
+ complexity: null,
304
+ },
305
+ session: {
306
+ eventsEmitted: result.events_emitted,
307
+ pollsMade: result.polls_made,
308
+ failedPolls: result.failed_polls,
309
+ watchDurationSeconds: result.watch_duration_seconds,
310
+ lastSeenEventId: result.last_seen_event_id,
311
+ circuitBrokenAt: result.circuit_broken_at,
312
+ exitReason: result.exit_reason,
313
+ },
314
+ warnings: trailerWarnings,
315
+ }));
316
+ // Circuit-broken exit surfaces as a §6.5 failure envelope on
317
+ // stderr AFTER the trailer emitted on stdout. The Monday code
318
+ // that tripped the breaker lives on the last `poll_failed`
319
+ // warning's `details.monday_code` slot (no other source: the
320
+ // ApiError thrown by `client.raw` was caught + converted to a
321
+ // warning inside `watchItem`).
322
+ if (result.exit_reason === 'circuit_broken') {
323
+ const lastPollFailed = [...result.warnings]
324
+ .reverse()
325
+ .find((w) => w.code === 'poll_failed');
326
+ /* c8 ignore next 2 — defensive: circuit_broken always
327
+ trips off a poll_failed accumulation; the find always
328
+ succeeds in production. */
329
+ const mondayCode = lastPollFailed?.details.monday_code ??
330
+ 'complexity_exceeded';
331
+ throw new ApiError(mondayCode, `watch session tripped the circuit breaker after ${String(result.failed_polls)} failed polls (${String(CIRCUIT_BREAKER_CONSECUTIVE_FAILS)} consecutive)`, {
332
+ details: {
333
+ failed_polls: result.failed_polls,
334
+ circuit_broken_at: result.circuit_broken_at,
335
+ events_emitted: result.events_emitted,
336
+ },
337
+ });
338
+ }
339
+ });
340
+ },
341
+ };
342
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/commands/item/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * `monday notification send --user <uid> --target <iid|bid>
3
+ * --target-type item|board --text <t>` — fire a Monday notification
4
+ * to a single recipient (cli-design §2.7 + §4.3 + §13 v0.3 entry;
5
+ * v0.3-plan §3 M27).
6
+ *
7
+ * **Wire shape.** Single `client.raw` round-trip via
8
+ * {@link sendNotification} against `mutation CreateNotification`
9
+ * with `operationName: 'CreateNotification'` (R-NEW-37 W2 audit-
10
+ * point).
11
+ *
12
+ * **Single-recipient at v0.3.** `--user <uid>` accepts ONE user ID;
13
+ * multi-recipient fan-out is a v0.3.x / v0.4 contract-extension
14
+ * (agents needing fan-out call `notification send` N times). Per
15
+ * v0.3-plan §3 M27 sibling decisions list.
16
+ *
17
+ * **`--target-type` argv is `item|board`** (cli-design §4.3). Both
18
+ * CLI values map to Monday's wire `NotificationTargetType.Project`
19
+ * at the runtime boundary inside {@link sendNotification} — Monday's
20
+ * wire enum doesn't distinguish items from boards. The CLI keeps
21
+ * the 2-value vocabulary for argv-validation discipline AND so the
22
+ * output envelope echoes the agent-supplied kind. Monday's `Post`
23
+ * wire value (Update-targeted notifications) is unreachable at v0.3.
24
+ *
25
+ * **The item-vs-board pairing is trusted, not verified.** The CLI
26
+ * validates the enum (`item|board`) + the numeric ID shape at the
27
+ * parse boundary. Monday validates that `target_id` is a visible
28
+ * `Project` (item OR board) — invisible / non-existent targets
29
+ * surface `not_found`. Monday CANNOT validate that the CLI-declared
30
+ * `--target-type` matches what the ID actually names (the wire enum
31
+ * collapses both to `Project`), so passing `--target-type item`
32
+ * with a board ID succeeds and the envelope echoes `target_type:
33
+ * 'item'` even though the underlying record is a board. Agents
34
+ * needing strict kind verification should pre-read `Query.items` /
35
+ * `Query.boards` themselves; the CLI-side pre-read is deferred to
36
+ * a v0.3.x / v0.4 contract-extension because doubling the wire-call
37
+ * count adds no agent-visible recovery surface.
38
+ *
39
+ * **Idempotency.** `create_notification` is NOT idempotent —
40
+ * re-running mints a fresh notification with a new ID. Agents
41
+ * needing send-once-semantics dedup on the CLI side.
42
+ *
43
+ * **`--dry-run` shape** per §3.1 #6 + §6.4. Strictly argv-derived;
44
+ * no wire mutation fires. `meta.source: "none"`.
45
+ */
46
+ import { z } from 'zod';
47
+ import { type CommandModule } from '../types.js';
48
+ import { type NotificationSendOutput } from '../../api/notifications.js';
49
+ declare const inputSchema: z.ZodObject<{
50
+ user: z.core.$ZodBranded<z.ZodString, "UserId", "out">;
51
+ target: z.ZodString;
52
+ targetType: z.ZodEnum<{
53
+ board: "board";
54
+ item: "item";
55
+ }>;
56
+ text: z.ZodString;
57
+ }, z.core.$strict>;
58
+ export declare const notificationSendCommand: CommandModule<z.infer<typeof inputSchema>, NotificationSendOutput>;
59
+ export {};
60
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/notification/send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAKnE,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAWpC,QAAA,MAAM,WAAW;;;;;;;;kBASN,CAAC;AAEZ,eAAO,MAAM,uBAAuB,EAAE,aAAa,CACjD,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,sBAAsB,CA4GvB,CAAC"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * `monday notification send --user <uid> --target <iid|bid>
3
+ * --target-type item|board --text <t>` — fire a Monday notification
4
+ * to a single recipient (cli-design §2.7 + §4.3 + §13 v0.3 entry;
5
+ * v0.3-plan §3 M27).
6
+ *
7
+ * **Wire shape.** Single `client.raw` round-trip via
8
+ * {@link sendNotification} against `mutation CreateNotification`
9
+ * with `operationName: 'CreateNotification'` (R-NEW-37 W2 audit-
10
+ * point).
11
+ *
12
+ * **Single-recipient at v0.3.** `--user <uid>` accepts ONE user ID;
13
+ * multi-recipient fan-out is a v0.3.x / v0.4 contract-extension
14
+ * (agents needing fan-out call `notification send` N times). Per
15
+ * v0.3-plan §3 M27 sibling decisions list.
16
+ *
17
+ * **`--target-type` argv is `item|board`** (cli-design §4.3). Both
18
+ * CLI values map to Monday's wire `NotificationTargetType.Project`
19
+ * at the runtime boundary inside {@link sendNotification} — Monday's
20
+ * wire enum doesn't distinguish items from boards. The CLI keeps
21
+ * the 2-value vocabulary for argv-validation discipline AND so the
22
+ * output envelope echoes the agent-supplied kind. Monday's `Post`
23
+ * wire value (Update-targeted notifications) is unreachable at v0.3.
24
+ *
25
+ * **The item-vs-board pairing is trusted, not verified.** The CLI
26
+ * validates the enum (`item|board`) + the numeric ID shape at the
27
+ * parse boundary. Monday validates that `target_id` is a visible
28
+ * `Project` (item OR board) — invisible / non-existent targets
29
+ * surface `not_found`. Monday CANNOT validate that the CLI-declared
30
+ * `--target-type` matches what the ID actually names (the wire enum
31
+ * collapses both to `Project`), so passing `--target-type item`
32
+ * with a board ID succeeds and the envelope echoes `target_type:
33
+ * 'item'` even though the underlying record is a board. Agents
34
+ * needing strict kind verification should pre-read `Query.items` /
35
+ * `Query.boards` themselves; the CLI-side pre-read is deferred to
36
+ * a v0.3.x / v0.4 contract-extension because doubling the wire-call
37
+ * count adds no agent-visible recovery surface.
38
+ *
39
+ * **Idempotency.** `create_notification` is NOT idempotent —
40
+ * re-running mints a fresh notification with a new ID. Agents
41
+ * needing send-once-semantics dedup on the CLI side.
42
+ *
43
+ * **`--dry-run` shape** per §3.1 #6 + §6.4. Strictly argv-derived;
44
+ * no wire mutation fires. `meta.source: "none"`.
45
+ */
46
+ import { z } from 'zod';
47
+ import { ensureSubcommand } from '../types.js';
48
+ import { emitDryRun, emitMutation } from '../emit.js';
49
+ import { resolveClient } from '../../api/resolve-client.js';
50
+ import { parseArgv } from '../parse-argv.js';
51
+ import { UserIdSchema } from '../../types/ids.js';
52
+ import { notificationSendOutputSchema, notificationTargetTypeSchema, sendNotification, } from '../../api/notifications.js';
53
+ // `target` is either an ItemId or BoardId depending on `target-type`.
54
+ // At the argv parse boundary we accept any numeric ID string. The
55
+ // kind pairing (item|board ↔ target-id) is trusted, not verified —
56
+ // Monday only validates target visibility as a `Project`; the wire
57
+ // enum collapses both kinds, so a passing argv with mismatched kind
58
+ // still succeeds. See the module header for the full trust-the-argv
59
+ // rationale.
60
+ const numericIdRegex = /^\d+$/u;
61
+ const inputSchema = z
62
+ .object({
63
+ user: UserIdSchema,
64
+ target: z.string().regex(numericIdRegex, {
65
+ message: 'expected a numeric ID',
66
+ }),
67
+ targetType: notificationTargetTypeSchema,
68
+ text: z.string().min(1),
69
+ })
70
+ .strict();
71
+ export const notificationSendCommand = {
72
+ name: 'notification.send',
73
+ summary: 'Send a Monday notification to a single recipient about an item or board',
74
+ examples: [
75
+ 'monday notification send --user 12345 --target 67890 --target-type item --text "Please review"',
76
+ 'monday notification send --user 12345 --target 67890 --target-type board --text "Board ownership updated" --json',
77
+ ],
78
+ idempotent: false,
79
+ inputSchema,
80
+ outputSchema: notificationSendOutputSchema,
81
+ attach: (program, ctx) => {
82
+ const noun = ensureSubcommand(program, 'notification', 'Notification commands (outbound writes via Monday\'s create_notification mutation)');
83
+ noun
84
+ .command('send')
85
+ .description(notificationSendCommand.summary)
86
+ .requiredOption('--user <uid>', 'Recipient user ID (single-recipient at v0.3 per cli-design §4.3; multi-recipient is a v0.3.x / v0.4 contract-extension).')
87
+ .requiredOption('--target <id>', 'Target ID — an item ID when --target-type is `item`, a board ID when --target-type is `board`.')
88
+ .requiredOption('--target-type <type>', 'Target kind. One of: item, board. Both map to Monday\'s wire `NotificationTargetType.Project` enum value; the CLI keeps the distinction for argv validation.')
89
+ .requiredOption('--text <t>', 'Notification text. Non-empty.')
90
+ .addHelpText('after', [
91
+ '',
92
+ 'Examples:',
93
+ ...notificationSendCommand.examples.map((e) => ` ${e}`),
94
+ '',
95
+ ].join('\n'))
96
+ .action(async (opts) => {
97
+ const parsed = parseArgv(notificationSendCommand.inputSchema, {
98
+ user: opts.user,
99
+ target: opts.target,
100
+ targetType: opts.targetType,
101
+ text: opts.text,
102
+ });
103
+ const { client, globalFlags, apiVersion } = resolveClient(ctx, program.opts());
104
+ if (globalFlags.dryRun) {
105
+ // Strictly argv-derived per cli-design §6.4 — no wire
106
+ // call fires.
107
+ emitDryRun({
108
+ ctx,
109
+ programOpts: program.opts(),
110
+ plannedChanges: [
111
+ {
112
+ operation: 'create_notification',
113
+ user_id: parsed.user,
114
+ target_id: parsed.target,
115
+ target_type: parsed.targetType,
116
+ text: parsed.text,
117
+ },
118
+ ],
119
+ source: 'none',
120
+ cacheAgeSeconds: null,
121
+ warnings: [],
122
+ apiVersion,
123
+ });
124
+ return;
125
+ }
126
+ const result = await sendNotification({
127
+ client,
128
+ userId: parsed.user,
129
+ targetId: parsed.target,
130
+ targetType: parsed.targetType,
131
+ text: parsed.text,
132
+ });
133
+ emitMutation({
134
+ ctx,
135
+ data: result.notification,
136
+ schema: notificationSendCommand.outputSchema,
137
+ programOpts: program.opts(),
138
+ warnings: [],
139
+ source: result.source,
140
+ cacheAgeSeconds: result.cacheAgeSeconds,
141
+ complexity: result.complexity,
142
+ apiVersion,
143
+ });
144
+ });
145
+ },
146
+ };
147
+ //# sourceMappingURL=send.js.map