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 @@
1
+ {"version":3,"file":"item-watch.js","sourceRoot":"","sources":["../../src/api/item-watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Multipart transport seam for the v0.4-M31 asset-upload verbs
3
+ * (`monday item upload` / `monday update upload`) — first v0.4
4
+ * transport extension touching `multipart/form-data` instead of
5
+ * the existing JSON-only `client.request` seam in `transport.ts`.
6
+ *
7
+ * **Why a sibling module, not an extension of `transport.ts`.** The
8
+ * existing `Transport` interface owns three load-bearing invariants
9
+ * (Codex M2 review §1):
10
+ *
11
+ * 1. Header lockdown — caller-supplied headers can NEVER override
12
+ * `Authorization` / `API-Version` / `Content-Type`.
13
+ * 2. `Content-Type: application/json` is hard-coded into the
14
+ * transport-owned set.
15
+ * 3. The body is always `JSON.stringify({ query, variables,
16
+ * operationName })`.
17
+ *
18
+ * Asset upload violates invariants (2) and (3): Monday's
19
+ * `add_file_to_column` + `add_file_to_update` mutations follow the
20
+ * standard GraphQL multipart-request specification (jaydenseric, used
21
+ * widely across the GraphQL ecosystem). The wire envelope is
22
+ * `multipart/form-data` with three named parts:
23
+ *
24
+ * - `operations` (JSON) — `{query, variables, operationName}` where
25
+ * the file-typed variable's value is `null` (placeholder).
26
+ * - `map` (JSON) — `{"<file-index>": ["variables.<file-var-name>"]}`
27
+ * pointing the multipart file part at the operations variable
28
+ * slot the file should fill.
29
+ * - `<file-index>` (binary) — the file's bytes, with `filename` +
30
+ * `Content-Type` parameters surfacing the upload's metadata
31
+ * (Monday reads `name` from this `filename` parameter).
32
+ *
33
+ * The multipart envelope is incompatible with the JSON transport's
34
+ * `body: JSON.stringify(...)` path; building it inside `transport.ts`
35
+ * would have leaked multipart awareness into the JSON-only seam's
36
+ * type signature OR introduced a discriminator on every JSON request.
37
+ * Keeping the two transports in sibling modules:
38
+ *
39
+ * - Preserves `transport.ts`'s invariants verbatim — its header
40
+ * lockdown + JSON body shape don't grow a multipart branch.
41
+ * - Makes the multipart-only invariants explicit in this module's
42
+ * type signature (`MultipartTransportRequest` carries a stream
43
+ * or buffer, not a query string).
44
+ * - Mirrors `docs/architecture.md` "Wire-vs-CLI semantics
45
+ * documentation conventions" (R-NEW-41 lift, 3rd-consumer
46
+ * trigger at v0.4-M31 pre-flight) — different wire shapes
47
+ * live in different modules, with a per-shape interface;
48
+ * the architecture section is the canonical cross-link
49
+ * target for the asymmetry enumeration.
50
+ *
51
+ * **What this module owns.** A `MultipartTransport` interface
52
+ * mirroring `Transport` (request → response, with `signal` /
53
+ * `timeout` / per-call options) + a `createMultipartFetchTransport`
54
+ * factory that builds an instance over Node's `fetch` (the same
55
+ * platform `fetch` `transport.ts` uses) but assembles the multipart
56
+ * body via the `FormData` Web API instead of `JSON.stringify`.
57
+ *
58
+ * **Header lockdown carries over.** `Authorization` + `API-Version`
59
+ * are transport-owned exactly the same way; `Content-Type` is set
60
+ * automatically by `fetch` when given a `FormData` body (the
61
+ * multipart boundary parameter requires the body builder to set
62
+ * `Content-Type` so we don't preempt it here). Caller-supplied
63
+ * headers with case-insensitive matches against the reserved set
64
+ * are stripped before the spread.
65
+ *
66
+ * **Retry + signal contract.** The transport itself does NOT own
67
+ * retry — callers (the asset-upload fetchers in
68
+ * `src/api/assets.ts`) wrap the dispatch in `withRetry(...)` from
69
+ * `src/api/retry.ts` to honor `--retry <n>` per cli-design §2.5.
70
+ * The transport DOES own signal threading: callers pass `signal`
71
+ * on every `request()` (required slot on
72
+ * {@link MultipartTransportRequest}); abort propagation follows
73
+ * the standard `AbortSignal.any(timeout, caller)` chain mirroring
74
+ * `transport.ts`'s `combineSignals` (lands at IMPL).
75
+ *
76
+ * **Status: runtime body shipped at v0.4-M31 IMPL.** Wire-body
77
+ * builder + fetch dispatch + header lockdown + signal combination +
78
+ * fetch-error mapping all land below. Header lockdown mirrors
79
+ * `transport.ts:createFetchTransport` (caller-supplied headers can
80
+ * never override `Authorization` / `API-Version`); `Content-Type`
81
+ * is intentionally NOT in the transport-owned override set —
82
+ * `fetch` sets it from the `FormData` body's boundary parameter.
83
+ *
84
+ * Per empirical probe `scripts/probe/m31-asset-upload.ts`
85
+ * (2026-05-13, API `2026-01`):
86
+ *
87
+ * - `add_file_to_column(column_id: String!, file: File!,
88
+ * item_id: ID!) → Asset` — note `column_id: String!` (NOT
89
+ * `ID!`).
90
+ * - `add_file_to_update(file: File!, update_id: ID!) → Asset`.
91
+ * - `File` scalar (NOT the spec-standard `Upload!` — Monday's
92
+ * schema names it `File`; the multipart wire shape is otherwise
93
+ * compliant with the jaydenseric spec).
94
+ * - `Asset` returns 10 fields (`id` / `name` / `url` /
95
+ * `public_url` / `file_extension` / `file_size` /
96
+ * `created_at` / `uploaded_by` / `original_geometry` /
97
+ * `url_thumbnail`).
98
+ */
99
+ /**
100
+ * One multipart request: the GraphQL operations payload (query +
101
+ * variables + operationName) plus the binary file content and the
102
+ * upload metadata (filename + content-type). The caller (the fetcher
103
+ * in `src/api/assets.ts`) constructs both the GraphQL document AND
104
+ * the file bytes; this transport only owns the wire-shape assembly
105
+ * (FormData parts + header lockdown + fetch dispatch).
106
+ *
107
+ * `fileVariableName` is the GraphQL variable name in `operations.
108
+ * variables` that the file fills — the multipart `map` JSON pins
109
+ * the binary part at `variables.<fileVariableName>`. Currently
110
+ * always `'file'` (both Monday upload mutations use `$file: File!`)
111
+ * but exposed as a parameter so the spec-compliant `map` JSON
112
+ * generation stays local to this module.
113
+ */
114
+ export interface MultipartTransportRequest {
115
+ readonly query: string;
116
+ readonly variables: Readonly<Record<string, unknown>>;
117
+ readonly operationName: string;
118
+ /**
119
+ * GraphQL variable name in `variables` to populate with the
120
+ * file's binary content. The `variables.<fileVariableName>` slot
121
+ * in the operations payload MUST be `null` (placeholder); the
122
+ * multipart `map` JSON points the binary part at this path.
123
+ *
124
+ * Monday's two upload mutations both use `$file: File!` at the
125
+ * pinned API `2026-01`, so callers pass `'file'`; future Monday
126
+ * surfaces (if any) with a different variable name override
127
+ * this slot.
128
+ */
129
+ readonly fileVariableName: string;
130
+ /**
131
+ * Stream-friendly binary content. At v0.4-M31 IMPL the fetcher
132
+ * passes a `Blob` (Node 22+ supports the Web API `Blob`); the
133
+ * `FormData` `append(name, blob, filename)` form sets the multi-
134
+ * part part's `filename` + inherits `Content-Type` from the blob.
135
+ * Future stdin/streaming support would widen this to a
136
+ * `Blob | ReadableStream` union with a separate `filename` slot.
137
+ */
138
+ readonly file: Blob;
139
+ /**
140
+ * The basename used in the multipart part's `filename` parameter.
141
+ * Monday surfaces `Asset.name` from this field; downstream agents
142
+ * see this string as `data.asset.name` in the success envelope.
143
+ * Required — empty filenames are rejected by Monday's server-side
144
+ * validation (`USER_UNAUTHORIZED` / generic validation errors).
145
+ */
146
+ readonly filename: string;
147
+ /**
148
+ * Caller-supplied signal threaded into the underlying `fetch`'s
149
+ * `signal` option (combined with `AbortSignal.timeout(timeoutMs)`
150
+ * at IMPL via `AbortSignal.any` mirroring `transport.ts`'s
151
+ * `combineSignals`). Required — callers MUST pass `ctx.signal`
152
+ * explicitly so SIGINT + `--timeout` propagate to the in-flight
153
+ * multipart upload.
154
+ */
155
+ readonly signal: AbortSignal;
156
+ }
157
+ export interface MultipartTransportResponse {
158
+ readonly status: number;
159
+ readonly headers: Readonly<Record<string, string>>;
160
+ /**
161
+ * Parsed JSON body — Monday's GraphQL multipart endpoint returns
162
+ * the same `{data?, errors?}` JSON shape as the JSON-body endpoint
163
+ * (the response is JSON regardless of the request being multi-
164
+ * part). Non-JSON responses (HTML error pages, etc.) surface as
165
+ * `ApiError('network_error')` rather than partially-decoded
166
+ * payloads, mirroring `transport.ts:createFetchTransport`.
167
+ */
168
+ readonly body: unknown;
169
+ }
170
+ export interface MultipartTransport {
171
+ readonly request: (req: MultipartTransportRequest) => Promise<MultipartTransportResponse>;
172
+ }
173
+ export interface MultipartFetchTransportConfig {
174
+ readonly endpoint: string;
175
+ readonly apiToken: string;
176
+ readonly apiVersion: string;
177
+ readonly timeoutMs: number;
178
+ /** Override for tests; defaults to global `fetch`. */
179
+ readonly fetchImpl?: typeof fetch;
180
+ }
181
+ /**
182
+ * Builds a `MultipartTransport` over Node's `fetch` using the Web
183
+ * `FormData` API to assemble the multipart body (operations + map
184
+ * + file parts per the standard GraphQL multipart-request
185
+ * specification). Header lockdown mirrors `createFetchTransport`'s
186
+ * discipline: caller-supplied headers never override `Authorization`
187
+ * / `API-Version`; `Content-Type` is set by `fetch` from the
188
+ * `FormData` body's boundary parameter, so it is NOT in the
189
+ * transport-owned override set (different from the JSON transport's
190
+ * hard-coded `application/json`).
191
+ *
192
+ * Pipeline per request:
193
+ *
194
+ * 1. Strip caller-supplied headers whose lowercase names match the
195
+ * reserved set (`authorization`, `api-version`); spread the safe
196
+ * remainder into the request bag, then append the transport-
197
+ * owned `Authorization` + `API-Version` so they always win.
198
+ * 2. Build the `FormData` body — `operations` JSON part with the
199
+ * query + variables + operationName (the file variable's value
200
+ * is `null` at the caller's request, per spec) + `map` JSON
201
+ * part pointing the file part at
202
+ * `variables.<fileVariableName>` + the file `Blob` keyed by
203
+ * index `'0'` with the caller-supplied `filename`.
204
+ * 3. Combine the caller's `signal` with `AbortSignal.timeout
205
+ * (timeoutMs)` so SIGINT + per-request timeout both propagate
206
+ * to the in-flight upload.
207
+ * 4. Dispatch via `fetch` with `method: 'POST'` + the assembled
208
+ * body + the merged signal. Don't set `Content-Type` — fetch
209
+ * derives it from the FormData boundary.
210
+ * 5. Parse the JSON response body. Non-JSON (HTML error page,
211
+ * etc.) surfaces as `ApiError('network_error')` mirroring
212
+ * `transport.ts`'s discipline; abort vs timeout discrimination
213
+ * follows the same rule (the timeout signal wins iff the
214
+ * caller's signal didn't fire first).
215
+ *
216
+ * The transport does NOT own retry — the asset-upload fetchers in
217
+ * `src/api/assets.ts` wrap the `request(...)` call in `withRetry
218
+ * (...)` per cli-design §2.5; Web `Blob.stream()` returns a fresh
219
+ * `ReadableStream` per call so the FormData body re-assembles
220
+ * cleanly on each retry attempt without buffering.
221
+ */
222
+ export declare const createMultipartFetchTransport: (config: MultipartFetchTransportConfig) => MultipartTransport;
223
+ //# sourceMappingURL=multipart-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart-transport.d.ts","sourceRoot":"","sources":["../../src/api/multipart-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,CAChB,GAAG,EAAE,yBAAyB,KAC3B,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,6BAA6B,GACxC,QAAQ,6BAA6B,KACpC,kBAwFF,CAAC"}
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Multipart transport seam for the v0.4-M31 asset-upload verbs
3
+ * (`monday item upload` / `monday update upload`) — first v0.4
4
+ * transport extension touching `multipart/form-data` instead of
5
+ * the existing JSON-only `client.request` seam in `transport.ts`.
6
+ *
7
+ * **Why a sibling module, not an extension of `transport.ts`.** The
8
+ * existing `Transport` interface owns three load-bearing invariants
9
+ * (Codex M2 review §1):
10
+ *
11
+ * 1. Header lockdown — caller-supplied headers can NEVER override
12
+ * `Authorization` / `API-Version` / `Content-Type`.
13
+ * 2. `Content-Type: application/json` is hard-coded into the
14
+ * transport-owned set.
15
+ * 3. The body is always `JSON.stringify({ query, variables,
16
+ * operationName })`.
17
+ *
18
+ * Asset upload violates invariants (2) and (3): Monday's
19
+ * `add_file_to_column` + `add_file_to_update` mutations follow the
20
+ * standard GraphQL multipart-request specification (jaydenseric, used
21
+ * widely across the GraphQL ecosystem). The wire envelope is
22
+ * `multipart/form-data` with three named parts:
23
+ *
24
+ * - `operations` (JSON) — `{query, variables, operationName}` where
25
+ * the file-typed variable's value is `null` (placeholder).
26
+ * - `map` (JSON) — `{"<file-index>": ["variables.<file-var-name>"]}`
27
+ * pointing the multipart file part at the operations variable
28
+ * slot the file should fill.
29
+ * - `<file-index>` (binary) — the file's bytes, with `filename` +
30
+ * `Content-Type` parameters surfacing the upload's metadata
31
+ * (Monday reads `name` from this `filename` parameter).
32
+ *
33
+ * The multipart envelope is incompatible with the JSON transport's
34
+ * `body: JSON.stringify(...)` path; building it inside `transport.ts`
35
+ * would have leaked multipart awareness into the JSON-only seam's
36
+ * type signature OR introduced a discriminator on every JSON request.
37
+ * Keeping the two transports in sibling modules:
38
+ *
39
+ * - Preserves `transport.ts`'s invariants verbatim — its header
40
+ * lockdown + JSON body shape don't grow a multipart branch.
41
+ * - Makes the multipart-only invariants explicit in this module's
42
+ * type signature (`MultipartTransportRequest` carries a stream
43
+ * or buffer, not a query string).
44
+ * - Mirrors `docs/architecture.md` "Wire-vs-CLI semantics
45
+ * documentation conventions" (R-NEW-41 lift, 3rd-consumer
46
+ * trigger at v0.4-M31 pre-flight) — different wire shapes
47
+ * live in different modules, with a per-shape interface;
48
+ * the architecture section is the canonical cross-link
49
+ * target for the asymmetry enumeration.
50
+ *
51
+ * **What this module owns.** A `MultipartTransport` interface
52
+ * mirroring `Transport` (request → response, with `signal` /
53
+ * `timeout` / per-call options) + a `createMultipartFetchTransport`
54
+ * factory that builds an instance over Node's `fetch` (the same
55
+ * platform `fetch` `transport.ts` uses) but assembles the multipart
56
+ * body via the `FormData` Web API instead of `JSON.stringify`.
57
+ *
58
+ * **Header lockdown carries over.** `Authorization` + `API-Version`
59
+ * are transport-owned exactly the same way; `Content-Type` is set
60
+ * automatically by `fetch` when given a `FormData` body (the
61
+ * multipart boundary parameter requires the body builder to set
62
+ * `Content-Type` so we don't preempt it here). Caller-supplied
63
+ * headers with case-insensitive matches against the reserved set
64
+ * are stripped before the spread.
65
+ *
66
+ * **Retry + signal contract.** The transport itself does NOT own
67
+ * retry — callers (the asset-upload fetchers in
68
+ * `src/api/assets.ts`) wrap the dispatch in `withRetry(...)` from
69
+ * `src/api/retry.ts` to honor `--retry <n>` per cli-design §2.5.
70
+ * The transport DOES own signal threading: callers pass `signal`
71
+ * on every `request()` (required slot on
72
+ * {@link MultipartTransportRequest}); abort propagation follows
73
+ * the standard `AbortSignal.any(timeout, caller)` chain mirroring
74
+ * `transport.ts`'s `combineSignals` (lands at IMPL).
75
+ *
76
+ * **Status: runtime body shipped at v0.4-M31 IMPL.** Wire-body
77
+ * builder + fetch dispatch + header lockdown + signal combination +
78
+ * fetch-error mapping all land below. Header lockdown mirrors
79
+ * `transport.ts:createFetchTransport` (caller-supplied headers can
80
+ * never override `Authorization` / `API-Version`); `Content-Type`
81
+ * is intentionally NOT in the transport-owned override set —
82
+ * `fetch` sets it from the `FormData` body's boundary parameter.
83
+ *
84
+ * Per empirical probe `scripts/probe/m31-asset-upload.ts`
85
+ * (2026-05-13, API `2026-01`):
86
+ *
87
+ * - `add_file_to_column(column_id: String!, file: File!,
88
+ * item_id: ID!) → Asset` — note `column_id: String!` (NOT
89
+ * `ID!`).
90
+ * - `add_file_to_update(file: File!, update_id: ID!) → Asset`.
91
+ * - `File` scalar (NOT the spec-standard `Upload!` — Monday's
92
+ * schema names it `File`; the multipart wire shape is otherwise
93
+ * compliant with the jaydenseric spec).
94
+ * - `Asset` returns 10 fields (`id` / `name` / `url` /
95
+ * `public_url` / `file_extension` / `file_size` /
96
+ * `created_at` / `uploaded_by` / `original_geometry` /
97
+ * `url_thumbnail`).
98
+ */
99
+ import { ApiError, errorCode } from '../utils/errors.js';
100
+ /**
101
+ * Builds a `MultipartTransport` over Node's `fetch` using the Web
102
+ * `FormData` API to assemble the multipart body (operations + map
103
+ * + file parts per the standard GraphQL multipart-request
104
+ * specification). Header lockdown mirrors `createFetchTransport`'s
105
+ * discipline: caller-supplied headers never override `Authorization`
106
+ * / `API-Version`; `Content-Type` is set by `fetch` from the
107
+ * `FormData` body's boundary parameter, so it is NOT in the
108
+ * transport-owned override set (different from the JSON transport's
109
+ * hard-coded `application/json`).
110
+ *
111
+ * Pipeline per request:
112
+ *
113
+ * 1. Strip caller-supplied headers whose lowercase names match the
114
+ * reserved set (`authorization`, `api-version`); spread the safe
115
+ * remainder into the request bag, then append the transport-
116
+ * owned `Authorization` + `API-Version` so they always win.
117
+ * 2. Build the `FormData` body — `operations` JSON part with the
118
+ * query + variables + operationName (the file variable's value
119
+ * is `null` at the caller's request, per spec) + `map` JSON
120
+ * part pointing the file part at
121
+ * `variables.<fileVariableName>` + the file `Blob` keyed by
122
+ * index `'0'` with the caller-supplied `filename`.
123
+ * 3. Combine the caller's `signal` with `AbortSignal.timeout
124
+ * (timeoutMs)` so SIGINT + per-request timeout both propagate
125
+ * to the in-flight upload.
126
+ * 4. Dispatch via `fetch` with `method: 'POST'` + the assembled
127
+ * body + the merged signal. Don't set `Content-Type` — fetch
128
+ * derives it from the FormData boundary.
129
+ * 5. Parse the JSON response body. Non-JSON (HTML error page,
130
+ * etc.) surfaces as `ApiError('network_error')` mirroring
131
+ * `transport.ts`'s discipline; abort vs timeout discrimination
132
+ * follows the same rule (the timeout signal wins iff the
133
+ * caller's signal didn't fire first).
134
+ *
135
+ * The transport does NOT own retry — the asset-upload fetchers in
136
+ * `src/api/assets.ts` wrap the `request(...)` call in `withRetry
137
+ * (...)` per cli-design §2.5; Web `Blob.stream()` returns a fresh
138
+ * `ReadableStream` per call so the FormData body re-assembles
139
+ * cleanly on each retry attempt without buffering.
140
+ */
141
+ export const createMultipartFetchTransport = (config) => {
142
+ const fetchImpl = config.fetchImpl ?? fetch;
143
+ return {
144
+ request: async ({ query, variables, operationName, fileVariableName, file, filename, signal, }) => {
145
+ // Header lockdown — same intent as `transport.ts`'s reserved-
146
+ // header set, but `MultipartTransportRequest` carries NO
147
+ // `headers` slot, so the lockdown is closed-by-construction:
148
+ // there's no way for a caller to inject headers that could
149
+ // override the transport-owned `Authorization` / `API-Version`.
150
+ // `Content-Type` is intentionally absent from this bag — fetch
151
+ // sets it from the FormData body's boundary parameter, and
152
+ // preempting it would corrupt the multipart envelope (the
153
+ // boundary delimiter encoded in the header MUST match the one
154
+ // FormData chose internally).
155
+ const requestHeaders = {
156
+ Authorization: config.apiToken,
157
+ 'API-Version': config.apiVersion,
158
+ };
159
+ // Build the multipart body per the spec. The operations JSON
160
+ // carries `null` in the file variable's slot (the caller
161
+ // already populated `variables[fileVariableName] = null`
162
+ // before reaching the transport). The `map` JSON pins the
163
+ // binary part at `variables.<fileVariableName>` so Monday's
164
+ // multipart parser can route the bytes to the right slot.
165
+ const operations = { query, variables };
166
+ operations.operationName = operationName;
167
+ const formData = new FormData();
168
+ formData.append('operations', JSON.stringify(operations));
169
+ formData.append('map', JSON.stringify({ '0': [`variables.${fileVariableName}`] }));
170
+ formData.append('0', file, filename);
171
+ const combinedSignal = combineSignals(signal, AbortSignal.timeout(config.timeoutMs));
172
+ let response;
173
+ try {
174
+ response = await fetchImpl(config.endpoint, {
175
+ method: 'POST',
176
+ headers: requestHeaders,
177
+ body: formData,
178
+ signal: combinedSignal,
179
+ });
180
+ }
181
+ catch (err) {
182
+ if (isAbortError(err) && combinedSignal.reason !== signal.reason) {
183
+ throw new ApiError('timeout', `request timed out after ${String(config.timeoutMs)}ms`, { cause: err, details: { timeout_ms: config.timeoutMs } });
184
+ }
185
+ throw new ApiError('network_error', describeFetchError(err), {
186
+ cause: err,
187
+ });
188
+ }
189
+ const responseHeaders = headersToRecord(response.headers);
190
+ let parsed;
191
+ try {
192
+ parsed = await response.json();
193
+ }
194
+ catch (err) {
195
+ throw new ApiError('network_error', `non-JSON response (status ${String(response.status)})`, { cause: err, httpStatus: response.status });
196
+ }
197
+ return {
198
+ status: response.status,
199
+ headers: responseHeaders,
200
+ body: parsed,
201
+ };
202
+ },
203
+ };
204
+ };
205
+ const isAbortError = (err) => {
206
+ if (err instanceof Error) {
207
+ return err.name === 'AbortError' || err.name === 'TimeoutError';
208
+ }
209
+ return false;
210
+ };
211
+ /**
212
+ * Mirrors `transport.ts:describeFetchError`. Extracted to keep
213
+ * messaging stable across the JSON + multipart paths — agents
214
+ * reading either envelope's `error.message` see the same vocabulary
215
+ * for connection / DNS / TLS failures regardless of which transport
216
+ * issued the call.
217
+ */
218
+ const describeFetchError = (err) => {
219
+ if (err instanceof Error) {
220
+ const code = errorCode(err);
221
+ if (code !== undefined) {
222
+ if (code.startsWith('ENOTFOUND') || code.startsWith('EAI_')) {
223
+ return 'fetch failed: dns lookup failed';
224
+ }
225
+ if (code === 'ECONNREFUSED' || code === 'ECONNRESET') {
226
+ return 'fetch failed: connection refused';
227
+ }
228
+ if (code === 'CERT_HAS_EXPIRED' || code.startsWith('UNABLE_TO_')) {
229
+ return 'fetch failed: tls error';
230
+ }
231
+ }
232
+ const lower = err.message.toLowerCase();
233
+ if (lower.includes('econnrefused') || lower.includes('connection refused')) {
234
+ return 'fetch failed: connection refused';
235
+ }
236
+ if (lower.includes('enotfound') ||
237
+ lower.includes('eai_again') ||
238
+ lower.includes('getaddrinfo')) {
239
+ return 'fetch failed: dns lookup failed';
240
+ }
241
+ return 'fetch failed';
242
+ }
243
+ return 'fetch failed';
244
+ };
245
+ const headersToRecord = (headers) => {
246
+ const out = {};
247
+ headers.forEach((value, key) => {
248
+ out[key] = value;
249
+ });
250
+ return out;
251
+ };
252
+ /**
253
+ * Mirrors `transport.ts:combineSignals` — prefer the platform
254
+ * `AbortSignal.any` when available (Node 22+ pin always satisfies
255
+ * this) and synthesise a controller for the legacy fallback path.
256
+ */
257
+ const combineSignals = (...signals) => {
258
+ const real = signals.filter((s) => s !== undefined);
259
+ const [first, ...rest] = real;
260
+ /* c8 ignore next 3 — defensive guard; production callers always
261
+ pass at least one signal (the caller's `ctx.signal` is REQUIRED
262
+ on `MultipartTransportRequest`). */
263
+ if (first === undefined) {
264
+ return new AbortController().signal;
265
+ }
266
+ /* c8 ignore next 3 — production callers always combine the
267
+ caller's signal with `AbortSignal.timeout(...)`, so this branch
268
+ is unreachable from the request() pipeline. */
269
+ if (rest.length === 0) {
270
+ return first;
271
+ }
272
+ return AbortSignal.any(real);
273
+ };
274
+ //# sourceMappingURL=multipart-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart-transport.js","sourceRoot":"","sources":["../../src/api/multipart-transport.ts"],"names":[],"mappings":"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"}