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,547 @@
1
+ /**
2
+ * Cross-board fan-out walker for the v0.3-M23 `monday item search`
3
+ * cross-board path (`cli-design.md` §13 v0.3 entry).
4
+ *
5
+ * **What `monday item search` cross-board answers:** "find items
6
+ * matching `--where` across N boards in one call" without the agent
7
+ * iterating boards by hand. The v0.1 `monday item search --board <bid>`
8
+ * path uses Monday's top-level `items_page_by_column_values(board_id:
9
+ * ID!, ...)` query which is SINGULAR — it accepts ONE board ID. The
10
+ * cross-board path can't reuse that surface; it uses the different
11
+ * shape `boards(ids: [...]) { items_page(query_params: { rules }) }`
12
+ * which fans out a single GraphQL call across N boards and returns
13
+ * each board's first-page results.
14
+ *
15
+ * **Decision 5 closure (`3a2f1db`).** Per-call cap pinned at
16
+ * `--max-boards 25` default + hard cap 100; above-cap surfaces
17
+ * `usage_error` with hint pointing the agent at `--workspace` /
18
+ * `--favorites` to narrow. Empirical-probe finding: complexity is
19
+ * NOT the constraint (~25-30 points per board against a ~999_950
20
+ * per-call budget supports ~30,000+ boards complexity-wise); the
21
+ * REAL constraint is wall-clock latency — the fan-out call scales
22
+ * roughly linearly at ~0.5-1.5s per call at small N, putting N=25
23
+ * comfortably under the 30s `MONDAY_REQUEST_TIMEOUT_MS` default and
24
+ * N≥60 at the timeout ceiling. The 25/100 cap is calibrated for the
25
+ * latency envelope, not the complexity budget.
26
+ *
27
+ * **Three load-bearing empirical probe findings (2026-05-11, API
28
+ * `2026-01`, `scripts/probe/m23-cross-board.ts` +
29
+ * `scripts/probe/m23-cross-board-search-2.ts`):**
30
+ *
31
+ * 1. **Single-call surface; no resumable cross-board cursor at
32
+ * v0.3.** Each board returns its own `items_page.cursor`. The
33
+ * v0.3 walker fans out across N boards in ONE GraphQL call,
34
+ * collects each board's first page, and stops. When any
35
+ * board's per-board cursor comes back non-null (board has
36
+ * more items) OR the aggregate `--limit` short-circuited
37
+ * mid-fan-out, the walker surfaces
38
+ * {@link CrossBoardTruncatedWarning} with per-board state
39
+ * (`exhausted` / `has_more` / `not_started`) for agent
40
+ * introspection — but does NOT expose a resumable
41
+ * cross-board cursor (Codex round-1 P1-2 resolution; v0.4
42
+ * may add an opaque-token cursor envelope-additively). Agents
43
+ * needing pagination today narrow with `--workspace` /
44
+ * `--favorites` or use the v0.1 `--board <bid>` single-board
45
+ * path (which has its own resumable cursor per §5.6).
46
+ * 2. **Inaccessible board IDs silently omitted.**
47
+ * `boards(ids: [<bad-id>])` returns `{"boards":[]}` (empty,
48
+ * not null, not error) even on mixed accessible+inaccessible
49
+ * input. The walker detects `response.boards.length <
50
+ * input_ids.length` and surfaces an `inaccessible_boards`
51
+ * warning rather than silently delivering partial results.
52
+ * 3. **Per-board column resolution required for `--where`.** The
53
+ * `items_page(query_params: { rules })` shape uses each
54
+ * board's own column IDs; passing a column token (e.g.
55
+ * `status`) that doesn't resolve on ONE board errors the
56
+ * WHOLE cross-board query with `"Column not found"`. The
57
+ * cross-board walker MUST resolve column tokens per-board
58
+ * independently, build per-board query_params, and skip
59
+ * boards where the column doesn't resolve (with a
60
+ * `column_not_found_on_board` warning) rather than failing
61
+ * the entire fan-out.
62
+ *
63
+ * **What's stub vs runtime at the pre-flight.** `crossBoardSearch`
64
+ * ships as a `Promise.reject(internal_error)` stub under `c8 ignore
65
+ * start/stop` — M23 implementation lands the runtime body alongside
66
+ * the `monday item search` cross-board action's action. The schema
67
+ * definitions, type exports, the cap constants, the pure-helper
68
+ * `validateMaxBoards`, the per-board input/output shapes ship as
69
+ * REAL implementations so the pre-flight Codex review can verify
70
+ * the contract surface against the empirical-probe findings inline.
71
+ *
72
+ * **Streaming reuse.** Per the v0.3-plan §3 M23 spec, the
73
+ * cross-board path reuses `startNdjsonStream` (R52) + the existing
74
+ * pagination helpers (`walkPages.onItem` / `paginate.onItem`). The
75
+ * fan-out shape is a PARENT stream that merges N child walkers —
76
+ * the child walker per board uses the same cursor-walker shape as
77
+ * the v0.1 `item list` cursor walker, then the parent emits items
78
+ * per-arrival across boards (no buffering — backpressure flows
79
+ * through `startNdjsonStream.onItem`).
80
+ */
81
+ import { z } from 'zod';
82
+ import { ApiError } from '../utils/errors.js';
83
+ import { unwrapOrThrow } from '../utils/parse-boundary.js';
84
+ import { BoardIdSchema } from '../types/ids.js';
85
+ /**
86
+ * Default cross-board fan-out cap per Decision 5 closure (`3a2f1db`).
87
+ * Calibrated against wall-clock latency: at ~0.5-1.5s per cross-board
88
+ * call at small N, N=25 lands ~12-18s — comfortable under the 30s
89
+ * `MONDAY_REQUEST_TIMEOUT_MS` default with margin for slower per-board
90
+ * resolutions.
91
+ */
92
+ export const DEFAULT_MAX_BOARDS = 25;
93
+ /**
94
+ * Hard cap on `--max-boards` per Decision 5 closure (`3a2f1db`).
95
+ * Above-cap surfaces `usage_error` with a hint pointing the agent at
96
+ * `--workspace` / `--favorites` to narrow. The 100-board hard cap
97
+ * lands roughly at the 30s timeout ceiling at the measured per-call
98
+ * latency — above 100 the call risks the `MONDAY_REQUEST_TIMEOUT_MS`
99
+ * default, which is a worse failure mode than a clean `usage_error`
100
+ * at the parse boundary.
101
+ */
102
+ export const HARD_CAP_MAX_BOARDS = 100;
103
+ /**
104
+ * Schema enforcing the `--max-boards` cap at the parse boundary.
105
+ * The runtime walker additionally guards as a defense in depth, but
106
+ * the parse-time enforcement catches obvious mistakes upfront with
107
+ * the cli-design §6.5 `usage_error` envelope rather than letting the
108
+ * fan-out fire N requests on Monday before the cap fires server-side.
109
+ */
110
+ export const maxBoardsSchema = z.coerce
111
+ .number()
112
+ .int()
113
+ .positive()
114
+ .max(HARD_CAP_MAX_BOARDS, {
115
+ message: `--max-boards exceeds the hard cap of ${String(HARD_CAP_MAX_BOARDS)} (wall-clock fan-out latency cap, not a complexity-budget cap; ~0.5-1.5s per call at small N puts N>=60 at the 30s MONDAY_REQUEST_TIMEOUT_MS ceiling per the Decision 5 \`3a2f1db\` empirical-probe finding); narrow the cross-board set with --workspace or --favorites`,
116
+ });
117
+ /**
118
+ * Schema validating an individual cross-board item. Mirrors
119
+ * {@link CrossBoardItem} so the envelope is parse-safe at every
120
+ * emission path (in particular `monday schema` introspection of the
121
+ * cross-board `monday item search` output).
122
+ */
123
+ export const crossBoardItemSchema = z
124
+ .object({
125
+ id: z.string().min(1),
126
+ name: z.string(),
127
+ state: z.string().nullable(),
128
+ board: z.object({ id: z.string().min(1), name: z.string() }).strict(),
129
+ column_values: z.record(z.string(), z.string().nullable()),
130
+ })
131
+ .strict();
132
+ /**
133
+ * Cross-board search-output schema. The v0.1 single-board
134
+ * `monday item search` returns `readonly ProjectedItem[]` (the
135
+ * `itemSearchOutputSchema` in `src/commands/item/search.ts`); the
136
+ * cross-board path returns a richer per-item shape (board ID + name
137
+ * attached) so agents can tell which board each hit came from.
138
+ *
139
+ * **Why a different output shape, not a union.** The single-board
140
+ * path's `ProjectedItem` includes a `meta.columns` title map on the
141
+ * envelope (R52 fold); the cross-board path can't reuse that because
142
+ * `meta.columns` is a single-board concept. Carrying per-board title
143
+ * maps on the envelope would balloon the meta payload; instead,
144
+ * cross-board items carry their column values keyed by the input
145
+ * column TOKEN (resolved per-board) rather than per-board column
146
+ * IDs. Same column token across boards = same key in `column_values`
147
+ * — the resolver step homogenises the keys.
148
+ */
149
+ export const crossBoardSearchOutputSchema = z.array(crossBoardItemSchema);
150
+ export const inaccessibleBoardsWarningSchema = z
151
+ .object({
152
+ code: z.literal('inaccessible_boards'),
153
+ message: z.string().min(1),
154
+ details: z.object({
155
+ requested_count: z.number().int().nonnegative(),
156
+ returned_count: z.number().int().nonnegative(),
157
+ missing_board_ids: z.array(z.string().min(1)),
158
+ hint: z.string().min(1),
159
+ }).strict(),
160
+ })
161
+ .strict();
162
+ export const columnNotFoundOnBoardWarningSchema = z
163
+ .object({
164
+ code: z.literal('column_not_found_on_board'),
165
+ message: z.string().min(1),
166
+ details: z.object({
167
+ board_id: z.string().min(1),
168
+ column: z.string().min(1),
169
+ hint: z.string().min(1),
170
+ }).strict(),
171
+ })
172
+ .strict();
173
+ export const crossBoardTruncatedWarningSchema = z
174
+ .object({
175
+ code: z.literal('cross_board_truncated'),
176
+ message: z.string().min(1),
177
+ details: z
178
+ .object({
179
+ reason: z.enum(['limit_hit', 'board_has_more']),
180
+ total_returned: z.number().int().nonnegative(),
181
+ limit: z.number().int().positive().nullable(),
182
+ per_board_state: z.record(z.string(), z.enum(['exhausted', 'has_more', 'not_started'])),
183
+ hint: z.string().min(1),
184
+ })
185
+ .strict(),
186
+ })
187
+ .strict();
188
+ /**
189
+ * Validates `--max-boards <n>` at the parse boundary. Centralised
190
+ * pure helper so the command-action argv parser and the walker's
191
+ * defensive check share one rule. **Real implementation** at
192
+ * pre-flight (not a stub) — the rule is the contract surface, not
193
+ * the runtime cost.
194
+ *
195
+ * Returns the parsed cap on success; throws `UsageError`-routed
196
+ * `ApiError` on out-of-range. The thrown error's `details.hint`
197
+ * forward-references `--workspace` / `--favorites` per Decision 5's
198
+ * hint wording.
199
+ */
200
+ export const validateMaxBoards = (rawValue) => {
201
+ const fallback = rawValue ?? DEFAULT_MAX_BOARDS;
202
+ // The schema's `.coerce.number().int().positive().max(HARD_CAP_MAX_BOARDS)`
203
+ // does the real check; this re-parse keeps the error shape consistent
204
+ // with the command-action argv parser.
205
+ const parsed = maxBoardsSchema.safeParse(fallback);
206
+ /* c8 ignore start */
207
+ // Defensive: callers (the command action's argv-parser) already
208
+ // run the same schema; this re-parse exists for any future
209
+ // non-CLI consumer that constructs CrossBoardSearchInputs by
210
+ // hand. Reaching this branch from the CLI path is not possible.
211
+ if (!parsed.success) {
212
+ throw new ApiError('usage_error', `invalid --max-boards: ${parsed.error.issues[0]?.message ?? 'out of range'}`, {
213
+ details: {
214
+ max_boards: rawValue,
215
+ hard_cap: HARD_CAP_MAX_BOARDS,
216
+ hint: 'the cap protects against the 30s request timeout (Decision 5 `3a2f1db` wall-clock-latency rationale, not complexity-budget); narrow the cross-board set with --workspace <wid> or --favorites',
217
+ },
218
+ });
219
+ }
220
+ /* c8 ignore stop */
221
+ return parsed.data;
222
+ };
223
+ /**
224
+ * Builds an {@link InaccessibleBoardsWarning} from the response /
225
+ * input deltas. **Real implementation** at pre-flight (pure helper,
226
+ * not a stub) — the warning shape is the contract surface.
227
+ *
228
+ * The `missing_board_ids` slot is deterministic-ordered (input
229
+ * order, filtered to ids NOT in the response set) so cassette
230
+ * fixtures remain stable across re-recordings.
231
+ */
232
+ export const buildInaccessibleBoardsWarning = (requestedIds, returnedIds) => {
233
+ const returnedSet = new Set(returnedIds);
234
+ const missing = requestedIds.filter((id) => !returnedSet.has(id));
235
+ return {
236
+ code: 'inaccessible_boards',
237
+ message: `${String(missing.length)} of ${String(requestedIds.length)} requested boards were inaccessible or do not exist; ${String(returnedIds.length)} returned`,
238
+ details: {
239
+ requested_count: requestedIds.length,
240
+ returned_count: returnedIds.length,
241
+ missing_board_ids: missing,
242
+ hint: 'inaccessible boards are silently omitted by Monday\'s `boards(ids:)` query; verify board IDs or permissions',
243
+ },
244
+ };
245
+ };
246
+ /**
247
+ * Builds a {@link ColumnNotFoundOnBoardWarning} from the per-board
248
+ * column-resolution failure. **Real implementation** at pre-flight
249
+ * (pure helper, not a stub).
250
+ */
251
+ export const buildColumnNotFoundOnBoardWarning = (boardId, columnToken) => ({
252
+ code: 'column_not_found_on_board',
253
+ message: `column "${columnToken}" not found on board ${boardId}; board skipped in cross-board fan-out`,
254
+ details: {
255
+ board_id: boardId,
256
+ column: columnToken,
257
+ hint: 'cross-board search requires the --where column to resolve on every board in the fan-out; boards without the column are skipped',
258
+ },
259
+ });
260
+ /**
261
+ * Builds a {@link CrossBoardTruncatedWarning} from the walker's
262
+ * end-of-walk per-board state. **Real implementation** at pre-flight
263
+ * (pure helper).
264
+ *
265
+ * The `reason` discriminant distinguishes:
266
+ * - `'limit_hit'` — the aggregate `--limit` short-circuited the
267
+ * walk. The hint points the agent at supplying a larger
268
+ * `--limit` or narrowing with `--workspace` / `--favorites`.
269
+ * - `'board_has_more'` — every board's per-board page-cap fired
270
+ * before the board exhausted. The hint points the agent at
271
+ * narrowing the cross-board set or running the v0.1 single-board
272
+ * `--board <bid>` path per board.
273
+ */
274
+ export const buildCrossBoardTruncatedWarning = (reason, totalReturned, limit, perBoardState) => {
275
+ const hint = reason === 'limit_hit'
276
+ ? `--limit ${String(limit ?? '?')} short-circuited the cross-board fan-out; supply a larger --limit, narrow with --workspace / --favorites, or use --board <bid> for the v0.1 single-board path`
277
+ : 'one or more boards still have items beyond the v0.3 cross-board single-call surface; narrow with --workspace / --favorites or use --board <bid> per board for the v0.1 resumable-cursor path';
278
+ return {
279
+ code: 'cross_board_truncated',
280
+ message: `cross-board walk truncated after ${String(totalReturned)} items (reason: ${reason})`,
281
+ details: {
282
+ reason,
283
+ total_returned: totalReturned,
284
+ limit,
285
+ per_board_state: perBoardState,
286
+ hint,
287
+ },
288
+ };
289
+ };
290
+ /**
291
+ * The GraphQL document the walker issues per board. Per the M23
292
+ * empirical probe (`scripts/probe/m23-cross-board-search-2.ts` (1)
293
+ * + (3)), `query_params.rules[].column_id` is `ID!` (not `String!`)
294
+ * and `compare_value` is `[JSON!]`. The cross-board surface uses
295
+ * `boards(ids: [...]) { items_page(query_params: {...}) }`; with
296
+ * per-board column resolution producing distinct rule sets per
297
+ * board, the walker issues ONE call per plan (the surface can't
298
+ * fold per-board rules into a single document without aliased
299
+ * sub-queries — N calls keep the document static and the per-board
300
+ * latency profile transparent per Decision 5's wall-clock-cap
301
+ * rationale). The boards(ids: [$boardId]) shape lets the same
302
+ * document detect inaccessible boards via the empty-array reply
303
+ * from Monday.
304
+ */
305
+ const CROSS_BOARD_SEARCH_QUERY = `
306
+ query CrossBoardSearch($boardId: ID!, $rules: [ItemsQueryRule!]!, $limit: Int!) {
307
+ boards(ids: [$boardId]) {
308
+ id
309
+ name
310
+ items_page(limit: $limit, query_params: { rules: $rules }) {
311
+ cursor
312
+ items {
313
+ id
314
+ name
315
+ state
316
+ column_values {
317
+ id
318
+ text
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ `;
325
+ const wireColumnValueSchema = z
326
+ .object({
327
+ id: z.string().min(1),
328
+ text: z.string().nullable(),
329
+ })
330
+ .loose();
331
+ const wireItemSchema = z
332
+ .object({
333
+ id: z.string().min(1),
334
+ name: z.string(),
335
+ state: z.string().nullable(),
336
+ column_values: z.array(wireColumnValueSchema),
337
+ })
338
+ .loose();
339
+ const wireItemsPageSchema = z
340
+ .object({
341
+ cursor: z.string().nullable(),
342
+ items: z.array(wireItemSchema),
343
+ })
344
+ .loose();
345
+ const wireBoardSchema = z
346
+ .object({
347
+ id: z.string().min(1),
348
+ name: z.string(),
349
+ items_page: wireItemsPageSchema,
350
+ })
351
+ .loose();
352
+ const crossBoardSearchResponseSchema = z
353
+ .object({
354
+ boards: z.array(wireBoardSchema.nullable()).nullable(),
355
+ })
356
+ .loose();
357
+ /**
358
+ * Cross-board fan-out walker entry point. Per the M23 empirical-
359
+ * probe findings, the walker:
360
+ *
361
+ * 1. Issues one `boards(ids: [$boardId]) { items_page(query_params:
362
+ * { rules }) }` GraphQL call per plan (per-board rule sets
363
+ * can't fold into a single document; N calls preserve the
364
+ * static document shape + transparent per-board latency
365
+ * profile that Decision 5's wall-clock cap is calibrated for).
366
+ * 2. Walks plans sequentially so the aggregate `--limit` can
367
+ * short-circuit further fan-out before issuing calls whose
368
+ * results would be discarded.
369
+ * 3. Streams each item via `onItem` as it arrives (push-then-
370
+ * await per `pagination.ts:369`); deterministic per-board-id
371
+ * order matches `inputs.plans`.
372
+ * 4. Detects inaccessibility via Monday's silent-omit shape
373
+ * (`boards(ids: [<bad>])` returns `{boards: []}`). Boards
374
+ * missing from the response surface in
375
+ * `inaccessible_boards.details.missing_board_ids`.
376
+ * 5. Surfaces `cross_board_truncated` (Codex round-1 P1-2) when
377
+ * `--limit` short-circuits OR any board's `items_page.cursor`
378
+ * came back non-null at the v0.3 single-call surface.
379
+ *
380
+ * Boards in `boardIds` that don't appear in `plans` are NOT scanned
381
+ * — the column-resolution pre-pass already filtered them (with a
382
+ * `column_not_found_on_board` warning surfaced by the action, not
383
+ * the walker). The walker's contract is "fan out across `plans` and
384
+ * detect inaccessibility against `boardIds`", separating the two
385
+ * concerns for independent testability.
386
+ *
387
+ * **`source` is always `'live'`** per the Codex round-2 P2-1 fix —
388
+ * the action layer aggregates this with the per-board column-
389
+ * resolution pre-pass cache state via `SourceAggregator` and
390
+ * resolves the envelope's `meta.source` / `meta.cache_age_seconds`
391
+ * from the aggregator's resolved state.
392
+ */
393
+ export const crossBoardSearch = async (inputs) => {
394
+ /* c8 ignore start */
395
+ // Defensive: the action layer's pre-pass filters out boards
396
+ // without resolvable columns before constructing
397
+ // CrossBoardSearchInputs; an empty boardIds array means the
398
+ // pre-pass found NO viable board, which the action should have
399
+ // surfaced as a different error (no plans → nothing to walk).
400
+ // The walker rejects rather than returning `{items: [], hasMore:
401
+ // false}` so the empty-boardIds case can't silently masquerade
402
+ // as a "no items matched" success.
403
+ if (inputs.boardIds.length === 0) {
404
+ throw new ApiError('internal_error', 'crossBoardSearch: boardIds is empty — the column-resolution pre-pass should ensure at least one board is scanned before calling the walker');
405
+ }
406
+ /* c8 ignore stop */
407
+ const pageSize = inputs.pageSize ?? 100;
408
+ const maxItems = inputs.maxItems;
409
+ // Per-board walk-state tracking for the cross_board_truncated
410
+ // warning. The walker writes into `walkedBoardState` only for
411
+ // boards it actually walked (got a wire response back). The
412
+ // final `per_board_state` shape is computed at end-of-walk
413
+ // from this map + the boardIds set (boards never reached →
414
+ // 'not_started'; boards walked but inaccessible → omitted,
415
+ // surfaced separately via `inaccessible_boards`).
416
+ const walkedBoardState = new Map();
417
+ const items = [];
418
+ // Boards we actually issued a GraphQL call for. Distinct from
419
+ // `returnedBoardIds` so we can tell "inaccessible (attempted, wire
420
+ // returned []) " apart from "not_started (--limit short-circuited
421
+ // before reaching the board)".
422
+ const attemptedBoardIds = new Set();
423
+ const returnedBoardIds = new Set();
424
+ let complexity = null;
425
+ let limitHit = false;
426
+ for (const plan of inputs.plans) {
427
+ if (maxItems !== undefined && items.length >= maxItems) {
428
+ limitHit = true;
429
+ break;
430
+ }
431
+ const boardId = plan.board_id;
432
+ attemptedBoardIds.add(boardId);
433
+ const wireRules = plan.rules.map((r) => ({
434
+ column_id: r.column_id,
435
+ compare_value: r.compare_values,
436
+ }));
437
+ // Cap the per-board page size at the remaining --limit budget
438
+ // so the walker doesn't fetch more items than it'll keep.
439
+ // Defensive `Math.max` against zero/negative — the outer
440
+ // `items.length >= maxItems` guard normally catches the
441
+ // exhausted case before we reach here.
442
+ const remaining = maxItems !== undefined ? maxItems - items.length : pageSize;
443
+ const limit = Math.max(1, Math.min(pageSize, remaining));
444
+ const response = await inputs.client.raw(CROSS_BOARD_SEARCH_QUERY, { boardId, rules: wireRules, limit }, { operationName: 'CrossBoardSearch' });
445
+ complexity = response.complexity;
446
+ // R-NEW-19 lift — canonical parse-failure envelope via the
447
+ // existing R18 `unwrapOrThrow` helper; `details.board_id`
448
+ // threads through as a per-call discriminant.
449
+ const parsedData = unwrapOrThrow(crossBoardSearchResponseSchema.safeParse(response.data), {
450
+ context: 'Monday cross-board search response',
451
+ details: { board_id: boardId },
452
+ hint: 'Monday may have amended the `boards(ids:) { items_page }` surface — re-probe via `scripts/probe/m23-cross-board-search-2.ts` and amend cli-design §13 v0.3 entry if so',
453
+ });
454
+ const boards = (parsedData.boards ?? []).filter((b) => b !== null);
455
+ const board = boards[0];
456
+ if (board === undefined) {
457
+ // Inaccessible — Monday returns `boards = []` for IDs the
458
+ // token can't access. We don't record a walk-state for this
459
+ // board; the inaccessibility surfaces separately via
460
+ // `inaccessible_boards` below.
461
+ continue;
462
+ }
463
+ returnedBoardIds.add(board.id);
464
+ const cursor = board.items_page.cursor;
465
+ for (const rawItem of board.items_page.items) {
466
+ if (maxItems !== undefined && items.length >= maxItems) {
467
+ limitHit = true;
468
+ break;
469
+ }
470
+ const columnValues = {};
471
+ for (const cv of rawItem.column_values) {
472
+ columnValues[cv.id] = cv.text;
473
+ }
474
+ const item = {
475
+ id: rawItem.id,
476
+ name: rawItem.name,
477
+ state: rawItem.state,
478
+ board: { id: board.id, name: board.name },
479
+ column_values: columnValues,
480
+ };
481
+ items.push(item);
482
+ if (inputs.onItem !== undefined) {
483
+ // M18 push-then-await: append to the buffer FIRST so a
484
+ // listener exception doesn't tear down the in-flight item;
485
+ // the walker's onItem-hook contract matches paginate's.
486
+ await inputs.onItem(item);
487
+ }
488
+ }
489
+ if (limitHit) {
490
+ // The board still has more items beyond what we collected
491
+ // (the aggregate --limit fired mid-page).
492
+ walkedBoardState.set(boardId, 'has_more');
493
+ break;
494
+ }
495
+ // Drained this board's first page. v0.3 is single-call-only
496
+ // per board — non-null cursor → board has more items;
497
+ // surfaced via cross_board_truncated for agent introspection
498
+ // (no resumable cross-board cursor — narrow with
499
+ // --workspace / --favorites or use the v0.1 --board path).
500
+ walkedBoardState.set(boardId, cursor === null ? 'exhausted' : 'has_more');
501
+ }
502
+ // Materialise the final per_board_state shape. Boards we walked
503
+ // carry their actual state ('exhausted' | 'has_more'). Boards in
504
+ // `boardIds` that we never reached (--limit short-circuit) are
505
+ // 'not_started'. Boards we attempted but Monday omitted are
506
+ // OMITTED here — surfaced separately via `inaccessible_boards`.
507
+ const perBoardState = {};
508
+ for (const bid of inputs.boardIds) {
509
+ const walked = walkedBoardState.get(bid);
510
+ if (walked !== undefined) {
511
+ perBoardState[bid] = walked;
512
+ }
513
+ else if (!attemptedBoardIds.has(bid)) {
514
+ // Never reached — fan-out stopped before this board.
515
+ perBoardState[bid] = 'not_started';
516
+ }
517
+ // Else: attempted but not walked (inaccessible) → omitted.
518
+ }
519
+ const warnings = [];
520
+ // Inaccessibility = boards we attempted but Monday's wire response
521
+ // omitted. Boards we never attempted (--limit short-circuited
522
+ // before reaching them) don't count as inaccessible — they're
523
+ // surfaced via `cross_board_truncated.per_board_state` as
524
+ // `not_started` for agent introspection.
525
+ const attemptedArr = Array.from(attemptedBoardIds);
526
+ if (attemptedArr.length > returnedBoardIds.size) {
527
+ warnings.push(buildInaccessibleBoardsWarning(attemptedArr, Array.from(returnedBoardIds)));
528
+ }
529
+ const anyNotExhausted = Object.values(perBoardState).some((s) => s !== 'exhausted');
530
+ const hasMore = limitHit || anyNotExhausted;
531
+ if (hasMore) {
532
+ const reason = limitHit
533
+ ? 'limit_hit'
534
+ : 'board_has_more';
535
+ warnings.push(buildCrossBoardTruncatedWarning(reason, items.length, maxItems ?? null, perBoardState));
536
+ }
537
+ return {
538
+ items,
539
+ hasMore,
540
+ totalReturned: items.length,
541
+ complexity,
542
+ warnings,
543
+ source: 'live',
544
+ };
545
+ };
546
+ export { BoardIdSchema };
547
+ //# sourceMappingURL=cross-board-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-board-search.js","sourceRoot":"","sources":["../../src/api/cross-board-search.ts"],"names":[],"mappings":"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"}