monday-cli 0.2.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 (596) hide show
  1. package/CHANGELOG.md +439 -0
  2. package/LICENSE +21 -0
  3. package/README.md +431 -0
  4. package/dist/api/board-child-finder.d.ts +95 -0
  5. package/dist/api/board-child-finder.d.ts.map +1 -0
  6. package/dist/api/board-child-finder.js +89 -0
  7. package/dist/api/board-child-finder.js.map +1 -0
  8. package/dist/api/board-metadata.d.ts +162 -0
  9. package/dist/api/board-metadata.d.ts.map +1 -0
  10. package/dist/api/board-metadata.js +238 -0
  11. package/dist/api/board-metadata.js.map +1 -0
  12. package/dist/api/board-mutation-invalidation.d.ts +153 -0
  13. package/dist/api/board-mutation-invalidation.d.ts.map +1 -0
  14. package/dist/api/board-mutation-invalidation.js +136 -0
  15. package/dist/api/board-mutation-invalidation.js.map +1 -0
  16. package/dist/api/board-mutation-result.d.ts +97 -0
  17. package/dist/api/board-mutation-result.d.ts.map +1 -0
  18. package/dist/api/board-mutation-result.js +99 -0
  19. package/dist/api/board-mutation-result.js.map +1 -0
  20. package/dist/api/board-projection.d.ts +68 -0
  21. package/dist/api/board-projection.d.ts.map +1 -0
  22. package/dist/api/board-projection.js +79 -0
  23. package/dist/api/board-projection.js.map +1 -0
  24. package/dist/api/cache.d.ts +150 -0
  25. package/dist/api/cache.d.ts.map +1 -0
  26. package/dist/api/cache.js +418 -0
  27. package/dist/api/cache.js.map +1 -0
  28. package/dist/api/client.d.ts +162 -0
  29. package/dist/api/client.d.ts.map +1 -0
  30. package/dist/api/client.js +205 -0
  31. package/dist/api/client.js.map +1 -0
  32. package/dist/api/column-mapping.d.ts +68 -0
  33. package/dist/api/column-mapping.d.ts.map +1 -0
  34. package/dist/api/column-mapping.js +117 -0
  35. package/dist/api/column-mapping.js.map +1 -0
  36. package/dist/api/column-mutation-result.d.ts +136 -0
  37. package/dist/api/column-mutation-result.d.ts.map +1 -0
  38. package/dist/api/column-mutation-result.js +130 -0
  39. package/dist/api/column-mutation-result.js.map +1 -0
  40. package/dist/api/column-types.d.ts +215 -0
  41. package/dist/api/column-types.d.ts.map +1 -0
  42. package/dist/api/column-types.js +195 -0
  43. package/dist/api/column-types.js.map +1 -0
  44. package/dist/api/column-values.d.ts +446 -0
  45. package/dist/api/column-values.d.ts.map +1 -0
  46. package/dist/api/column-values.js +795 -0
  47. package/dist/api/column-values.js.map +1 -0
  48. package/dist/api/columns.d.ts +205 -0
  49. package/dist/api/columns.d.ts.map +1 -0
  50. package/dist/api/columns.js +343 -0
  51. package/dist/api/columns.js.map +1 -0
  52. package/dist/api/complexity.d.ts +90 -0
  53. package/dist/api/complexity.d.ts.map +1 -0
  54. package/dist/api/complexity.js +194 -0
  55. package/dist/api/complexity.js.map +1 -0
  56. package/dist/api/dates.d.ts +150 -0
  57. package/dist/api/dates.d.ts.map +1 -0
  58. package/dist/api/dates.js +490 -0
  59. package/dist/api/dates.js.map +1 -0
  60. package/dist/api/destructive-gate.d.ts +107 -0
  61. package/dist/api/destructive-gate.d.ts.map +1 -0
  62. package/dist/api/destructive-gate.js +19 -0
  63. package/dist/api/destructive-gate.js.map +1 -0
  64. package/dist/api/dry-run.d.ts +338 -0
  65. package/dist/api/dry-run.d.ts.map +1 -0
  66. package/dist/api/dry-run.js +607 -0
  67. package/dist/api/dry-run.js.map +1 -0
  68. package/dist/api/emails.d.ts +60 -0
  69. package/dist/api/emails.d.ts.map +1 -0
  70. package/dist/api/emails.js +113 -0
  71. package/dist/api/emails.js.map +1 -0
  72. package/dist/api/errors.d.ts +82 -0
  73. package/dist/api/errors.d.ts.map +1 -0
  74. package/dist/api/errors.js +434 -0
  75. package/dist/api/errors.js.map +1 -0
  76. package/dist/api/filters.d.ts +198 -0
  77. package/dist/api/filters.d.ts.map +1 -0
  78. package/dist/api/filters.js +328 -0
  79. package/dist/api/filters.js.map +1 -0
  80. package/dist/api/group-color.d.ts +33 -0
  81. package/dist/api/group-color.d.ts.map +1 -0
  82. package/dist/api/group-color.js +80 -0
  83. package/dist/api/group-color.js.map +1 -0
  84. package/dist/api/group-mutation-result.d.ts +150 -0
  85. package/dist/api/group-mutation-result.d.ts.map +1 -0
  86. package/dist/api/group-mutation-result.js +141 -0
  87. package/dist/api/group-mutation-result.js.map +1 -0
  88. package/dist/api/iso-country-codes.d.ts +45 -0
  89. package/dist/api/iso-country-codes.d.ts.map +1 -0
  90. package/dist/api/iso-country-codes.js +71 -0
  91. package/dist/api/iso-country-codes.js.map +1 -0
  92. package/dist/api/item-board-lookup.d.ts +86 -0
  93. package/dist/api/item-board-lookup.d.ts.map +1 -0
  94. package/dist/api/item-board-lookup.js +140 -0
  95. package/dist/api/item-board-lookup.js.map +1 -0
  96. package/dist/api/item-helpers.d.ts +133 -0
  97. package/dist/api/item-helpers.d.ts.map +1 -0
  98. package/dist/api/item-helpers.js +139 -0
  99. package/dist/api/item-helpers.js.map +1 -0
  100. package/dist/api/item-mutation-result.d.ts +60 -0
  101. package/dist/api/item-mutation-result.d.ts.map +1 -0
  102. package/dist/api/item-mutation-result.js +63 -0
  103. package/dist/api/item-mutation-result.js.map +1 -0
  104. package/dist/api/item-projection.d.ts +165 -0
  105. package/dist/api/item-projection.d.ts.map +1 -0
  106. package/dist/api/item-projection.js +235 -0
  107. package/dist/api/item-projection.js.map +1 -0
  108. package/dist/api/item-source-read.d.ts +45 -0
  109. package/dist/api/item-source-read.d.ts.map +1 -0
  110. package/dist/api/item-source-read.js +57 -0
  111. package/dist/api/item-source-read.js.map +1 -0
  112. package/dist/api/items-page-walker.d.ts +126 -0
  113. package/dist/api/items-page-walker.d.ts.map +1 -0
  114. package/dist/api/items-page-walker.js +256 -0
  115. package/dist/api/items-page-walker.js.map +1 -0
  116. package/dist/api/links.d.ts +70 -0
  117. package/dist/api/links.d.ts.map +1 -0
  118. package/dist/api/links.js +128 -0
  119. package/dist/api/links.js.map +1 -0
  120. package/dist/api/me-token.d.ts +52 -0
  121. package/dist/api/me-token.d.ts.map +1 -0
  122. package/dist/api/me-token.js +55 -0
  123. package/dist/api/me-token.js.map +1 -0
  124. package/dist/api/pagination.d.ts +201 -0
  125. package/dist/api/pagination.d.ts.map +1 -0
  126. package/dist/api/pagination.js +223 -0
  127. package/dist/api/pagination.js.map +1 -0
  128. package/dist/api/partial-success-mutation.d.ts +28 -0
  129. package/dist/api/partial-success-mutation.d.ts.map +1 -0
  130. package/dist/api/partial-success-mutation.js +68 -0
  131. package/dist/api/partial-success-mutation.js.map +1 -0
  132. package/dist/api/people.d.ts +182 -0
  133. package/dist/api/people.d.ts.map +1 -0
  134. package/dist/api/people.js +260 -0
  135. package/dist/api/people.js.map +1 -0
  136. package/dist/api/phones.d.ts +74 -0
  137. package/dist/api/phones.d.ts.map +1 -0
  138. package/dist/api/phones.js +167 -0
  139. package/dist/api/phones.js.map +1 -0
  140. package/dist/api/raw-document.d.ts +53 -0
  141. package/dist/api/raw-document.d.ts.map +1 -0
  142. package/dist/api/raw-document.js +177 -0
  143. package/dist/api/raw-document.js.map +1 -0
  144. package/dist/api/raw-write.d.ts +127 -0
  145. package/dist/api/raw-write.d.ts.map +1 -0
  146. package/dist/api/raw-write.js +233 -0
  147. package/dist/api/raw-write.js.map +1 -0
  148. package/dist/api/resolution-context.d.ts +32 -0
  149. package/dist/api/resolution-context.d.ts.map +1 -0
  150. package/dist/api/resolution-context.js +42 -0
  151. package/dist/api/resolution-context.js.map +1 -0
  152. package/dist/api/resolution-pass.d.ts +163 -0
  153. package/dist/api/resolution-pass.d.ts.map +1 -0
  154. package/dist/api/resolution-pass.js +254 -0
  155. package/dist/api/resolution-pass.js.map +1 -0
  156. package/dist/api/resolve-client.d.ts +69 -0
  157. package/dist/api/resolve-client.d.ts.map +1 -0
  158. package/dist/api/resolve-client.js +70 -0
  159. package/dist/api/resolve-client.js.map +1 -0
  160. package/dist/api/resolver-error-fold.d.ts +176 -0
  161. package/dist/api/resolver-error-fold.d.ts.map +1 -0
  162. package/dist/api/resolver-error-fold.js +230 -0
  163. package/dist/api/resolver-error-fold.js.map +1 -0
  164. package/dist/api/resolvers.d.ts +131 -0
  165. package/dist/api/resolvers.d.ts.map +1 -0
  166. package/dist/api/resolvers.js +262 -0
  167. package/dist/api/resolvers.js.map +1 -0
  168. package/dist/api/response-root.d.ts +65 -0
  169. package/dist/api/response-root.d.ts.map +1 -0
  170. package/dist/api/response-root.js +61 -0
  171. package/dist/api/response-root.js.map +1 -0
  172. package/dist/api/retry.d.ts +112 -0
  173. package/dist/api/retry.d.ts.map +1 -0
  174. package/dist/api/retry.js +181 -0
  175. package/dist/api/retry.js.map +1 -0
  176. package/dist/api/set-expression.d.ts +23 -0
  177. package/dist/api/set-expression.d.ts.map +1 -0
  178. package/dist/api/set-expression.js +31 -0
  179. package/dist/api/set-expression.js.map +1 -0
  180. package/dist/api/sort.d.ts +59 -0
  181. package/dist/api/sort.d.ts.map +1 -0
  182. package/dist/api/sort.js +73 -0
  183. package/dist/api/sort.js.map +1 -0
  184. package/dist/api/source-aggregator.d.ts +94 -0
  185. package/dist/api/source-aggregator.d.ts.map +1 -0
  186. package/dist/api/source-aggregator.js +111 -0
  187. package/dist/api/source-aggregator.js.map +1 -0
  188. package/dist/api/transport.d.ts +58 -0
  189. package/dist/api/transport.d.ts.map +1 -0
  190. package/dist/api/transport.js +190 -0
  191. package/dist/api/transport.js.map +1 -0
  192. package/dist/api/update-mutation-result.d.ts +133 -0
  193. package/dist/api/update-mutation-result.d.ts.map +1 -0
  194. package/dist/api/update-mutation-result.js +145 -0
  195. package/dist/api/update-mutation-result.js.map +1 -0
  196. package/dist/api/users-fan-out-mutation.d.ts +124 -0
  197. package/dist/api/users-fan-out-mutation.d.ts.map +1 -0
  198. package/dist/api/users-fan-out-mutation.js +331 -0
  199. package/dist/api/users-fan-out-mutation.js.map +1 -0
  200. package/dist/api/walk-pages.d.ts +91 -0
  201. package/dist/api/walk-pages.d.ts.map +1 -0
  202. package/dist/api/walk-pages.js +84 -0
  203. package/dist/api/walk-pages.js.map +1 -0
  204. package/dist/api/workspace-projection.d.ts +64 -0
  205. package/dist/api/workspace-projection.d.ts.map +1 -0
  206. package/dist/api/workspace-projection.js +83 -0
  207. package/dist/api/workspace-projection.js.map +1 -0
  208. package/dist/cli/envelope-out.d.ts +128 -0
  209. package/dist/cli/envelope-out.d.ts.map +1 -0
  210. package/dist/cli/envelope-out.js +146 -0
  211. package/dist/cli/envelope-out.js.map +1 -0
  212. package/dist/cli/index.d.ts +3 -0
  213. package/dist/cli/index.d.ts.map +1 -0
  214. package/dist/cli/index.js +27 -0
  215. package/dist/cli/index.js.map +1 -0
  216. package/dist/cli/program.d.ts +29 -0
  217. package/dist/cli/program.d.ts.map +1 -0
  218. package/dist/cli/program.js +109 -0
  219. package/dist/cli/program.js.map +1 -0
  220. package/dist/cli/run.d.ts +108 -0
  221. package/dist/cli/run.d.ts.map +1 -0
  222. package/dist/cli/run.js +105 -0
  223. package/dist/cli/run.js.map +1 -0
  224. package/dist/commands/account/client-helper.d.ts +37 -0
  225. package/dist/commands/account/client-helper.d.ts.map +1 -0
  226. package/dist/commands/account/client-helper.js +55 -0
  227. package/dist/commands/account/client-helper.js.map +1 -0
  228. package/dist/commands/account/complexity.d.ts +29 -0
  229. package/dist/commands/account/complexity.d.ts.map +1 -0
  230. package/dist/commands/account/complexity.js +70 -0
  231. package/dist/commands/account/complexity.js.map +1 -0
  232. package/dist/commands/account/info.d.ts +36 -0
  233. package/dist/commands/account/info.d.ts.map +1 -0
  234. package/dist/commands/account/info.js +74 -0
  235. package/dist/commands/account/info.js.map +1 -0
  236. package/dist/commands/account/version.d.ts +44 -0
  237. package/dist/commands/account/version.d.ts.map +1 -0
  238. package/dist/commands/account/version.js +98 -0
  239. package/dist/commands/account/version.js.map +1 -0
  240. package/dist/commands/account/whoami.d.ts +34 -0
  241. package/dist/commands/account/whoami.d.ts.map +1 -0
  242. package/dist/commands/account/whoami.js +77 -0
  243. package/dist/commands/account/whoami.js.map +1 -0
  244. package/dist/commands/board/add-users.d.ts +60 -0
  245. package/dist/commands/board/add-users.d.ts.map +1 -0
  246. package/dist/commands/board/add-users.js +133 -0
  247. package/dist/commands/board/add-users.js.map +1 -0
  248. package/dist/commands/board/archive.d.ts +64 -0
  249. package/dist/commands/board/archive.d.ts.map +1 -0
  250. package/dist/commands/board/archive.js +226 -0
  251. package/dist/commands/board/archive.js.map +1 -0
  252. package/dist/commands/board/column-create.d.ts +146 -0
  253. package/dist/commands/board/column-create.d.ts.map +1 -0
  254. package/dist/commands/board/column-create.js +564 -0
  255. package/dist/commands/board/column-create.js.map +1 -0
  256. package/dist/commands/board/column-delete.d.ts +76 -0
  257. package/dist/commands/board/column-delete.d.ts.map +1 -0
  258. package/dist/commands/board/column-delete.js +224 -0
  259. package/dist/commands/board/column-delete.js.map +1 -0
  260. package/dist/commands/board/column-update.d.ts +92 -0
  261. package/dist/commands/board/column-update.d.ts.map +1 -0
  262. package/dist/commands/board/column-update.js +364 -0
  263. package/dist/commands/board/column-update.js.map +1 -0
  264. package/dist/commands/board/columns.d.ts +30 -0
  265. package/dist/commands/board/columns.d.ts.map +1 -0
  266. package/dist/commands/board/columns.js +102 -0
  267. package/dist/commands/board/columns.js.map +1 -0
  268. package/dist/commands/board/create.d.ts +67 -0
  269. package/dist/commands/board/create.d.ts.map +1 -0
  270. package/dist/commands/board/create.js +226 -0
  271. package/dist/commands/board/create.js.map +1 -0
  272. package/dist/commands/board/delete.d.ts +60 -0
  273. package/dist/commands/board/delete.d.ts.map +1 -0
  274. package/dist/commands/board/delete.js +192 -0
  275. package/dist/commands/board/delete.js.map +1 -0
  276. package/dist/commands/board/describe.d.ts +68 -0
  277. package/dist/commands/board/describe.d.ts.map +1 -0
  278. package/dist/commands/board/describe.js +241 -0
  279. package/dist/commands/board/describe.js.map +1 -0
  280. package/dist/commands/board/doctor.d.ts +108 -0
  281. package/dist/commands/board/doctor.d.ts.map +1 -0
  282. package/dist/commands/board/doctor.js +417 -0
  283. package/dist/commands/board/doctor.js.map +1 -0
  284. package/dist/commands/board/duplicate.d.ts +85 -0
  285. package/dist/commands/board/duplicate.d.ts.map +1 -0
  286. package/dist/commands/board/duplicate.js +281 -0
  287. package/dist/commands/board/duplicate.js.map +1 -0
  288. package/dist/commands/board/find.d.ts +47 -0
  289. package/dist/commands/board/find.d.ts.map +1 -0
  290. package/dist/commands/board/find.js +153 -0
  291. package/dist/commands/board/find.js.map +1 -0
  292. package/dist/commands/board/get.d.ts +41 -0
  293. package/dist/commands/board/get.d.ts.map +1 -0
  294. package/dist/commands/board/get.js +66 -0
  295. package/dist/commands/board/get.js.map +1 -0
  296. package/dist/commands/board/group-archive.d.ts +83 -0
  297. package/dist/commands/board/group-archive.d.ts.map +1 -0
  298. package/dist/commands/board/group-archive.js +264 -0
  299. package/dist/commands/board/group-archive.js.map +1 -0
  300. package/dist/commands/board/group-create.d.ts +118 -0
  301. package/dist/commands/board/group-create.d.ts.map +1 -0
  302. package/dist/commands/board/group-create.js +239 -0
  303. package/dist/commands/board/group-create.js.map +1 -0
  304. package/dist/commands/board/group-delete.d.ts +79 -0
  305. package/dist/commands/board/group-delete.d.ts.map +1 -0
  306. package/dist/commands/board/group-delete.js +222 -0
  307. package/dist/commands/board/group-delete.js.map +1 -0
  308. package/dist/commands/board/group-duplicate.d.ts +70 -0
  309. package/dist/commands/board/group-duplicate.d.ts.map +1 -0
  310. package/dist/commands/board/group-duplicate.js +219 -0
  311. package/dist/commands/board/group-duplicate.js.map +1 -0
  312. package/dist/commands/board/group-update.d.ts +145 -0
  313. package/dist/commands/board/group-update.d.ts.map +1 -0
  314. package/dist/commands/board/group-update.js +341 -0
  315. package/dist/commands/board/group-update.js.map +1 -0
  316. package/dist/commands/board/groups.d.ts +28 -0
  317. package/dist/commands/board/groups.d.ts.map +1 -0
  318. package/dist/commands/board/groups.js +85 -0
  319. package/dist/commands/board/groups.js.map +1 -0
  320. package/dist/commands/board/list.d.ts +39 -0
  321. package/dist/commands/board/list.d.ts.map +1 -0
  322. package/dist/commands/board/list.js +135 -0
  323. package/dist/commands/board/list.js.map +1 -0
  324. package/dist/commands/board/subscribers.d.ts +24 -0
  325. package/dist/commands/board/subscribers.d.ts.map +1 -0
  326. package/dist/commands/board/subscribers.js +89 -0
  327. package/dist/commands/board/subscribers.js.map +1 -0
  328. package/dist/commands/board/update.d.ts +82 -0
  329. package/dist/commands/board/update.d.ts.map +1 -0
  330. package/dist/commands/board/update.js +328 -0
  331. package/dist/commands/board/update.js.map +1 -0
  332. package/dist/commands/cache/clear.d.ts +34 -0
  333. package/dist/commands/cache/clear.d.ts.map +1 -0
  334. package/dist/commands/cache/clear.js +113 -0
  335. package/dist/commands/cache/clear.js.map +1 -0
  336. package/dist/commands/cache/list.d.ts +50 -0
  337. package/dist/commands/cache/list.d.ts.map +1 -0
  338. package/dist/commands/cache/list.js +77 -0
  339. package/dist/commands/cache/list.js.map +1 -0
  340. package/dist/commands/cache/stats.d.ts +22 -0
  341. package/dist/commands/cache/stats.d.ts.map +1 -0
  342. package/dist/commands/cache/stats.js +56 -0
  343. package/dist/commands/cache/stats.js.map +1 -0
  344. package/dist/commands/config/path.d.ts +22 -0
  345. package/dist/commands/config/path.d.ts.map +1 -0
  346. package/dist/commands/config/path.js +74 -0
  347. package/dist/commands/config/path.js.map +1 -0
  348. package/dist/commands/config/show.d.ts +61 -0
  349. package/dist/commands/config/show.d.ts.map +1 -0
  350. package/dist/commands/config/show.js +137 -0
  351. package/dist/commands/config/show.js.map +1 -0
  352. package/dist/commands/emit.d.ts +156 -0
  353. package/dist/commands/emit.d.ts.map +1 -0
  354. package/dist/commands/emit.js +212 -0
  355. package/dist/commands/emit.js.map +1 -0
  356. package/dist/commands/index.d.ts +5 -0
  357. package/dist/commands/index.d.ts.map +1 -0
  358. package/dist/commands/index.js +195 -0
  359. package/dist/commands/index.js.map +1 -0
  360. package/dist/commands/item/archive.d.ts +81 -0
  361. package/dist/commands/item/archive.d.ts.map +1 -0
  362. package/dist/commands/item/archive.js +187 -0
  363. package/dist/commands/item/archive.js.map +1 -0
  364. package/dist/commands/item/clear.d.ts +140 -0
  365. package/dist/commands/item/clear.d.ts.map +1 -0
  366. package/dist/commands/item/clear.js +748 -0
  367. package/dist/commands/item/clear.js.map +1 -0
  368. package/dist/commands/item/create.d.ts +77 -0
  369. package/dist/commands/item/create.d.ts.map +1 -0
  370. package/dist/commands/item/create.js +802 -0
  371. package/dist/commands/item/create.js.map +1 -0
  372. package/dist/commands/item/delete.d.ts +82 -0
  373. package/dist/commands/item/delete.d.ts.map +1 -0
  374. package/dist/commands/item/delete.js +179 -0
  375. package/dist/commands/item/delete.js.map +1 -0
  376. package/dist/commands/item/duplicate.d.ts +117 -0
  377. package/dist/commands/item/duplicate.d.ts.map +1 -0
  378. package/dist/commands/item/duplicate.js +238 -0
  379. package/dist/commands/item/duplicate.js.map +1 -0
  380. package/dist/commands/item/find.d.ts +55 -0
  381. package/dist/commands/item/find.d.ts.map +1 -0
  382. package/dist/commands/item/find.js +231 -0
  383. package/dist/commands/item/find.js.map +1 -0
  384. package/dist/commands/item/get.d.ts +47 -0
  385. package/dist/commands/item/get.d.ts.map +1 -0
  386. package/dist/commands/item/get.js +66 -0
  387. package/dist/commands/item/get.js.map +1 -0
  388. package/dist/commands/item/list.d.ts +73 -0
  389. package/dist/commands/item/list.d.ts.map +1 -0
  390. package/dist/commands/item/list.js +284 -0
  391. package/dist/commands/item/list.js.map +1 -0
  392. package/dist/commands/item/move.d.ts +181 -0
  393. package/dist/commands/item/move.d.ts.map +1 -0
  394. package/dist/commands/item/move.js +560 -0
  395. package/dist/commands/item/move.js.map +1 -0
  396. package/dist/commands/item/search.d.ts +67 -0
  397. package/dist/commands/item/search.d.ts.map +1 -0
  398. package/dist/commands/item/search.js +322 -0
  399. package/dist/commands/item/search.js.map +1 -0
  400. package/dist/commands/item/set.d.ts +88 -0
  401. package/dist/commands/item/set.d.ts.map +1 -0
  402. package/dist/commands/item/set.js +387 -0
  403. package/dist/commands/item/set.js.map +1 -0
  404. package/dist/commands/item/subitems.d.ts +50 -0
  405. package/dist/commands/item/subitems.d.ts.map +1 -0
  406. package/dist/commands/item/subitems.js +86 -0
  407. package/dist/commands/item/subitems.js.map +1 -0
  408. package/dist/commands/item/update.d.ts +99 -0
  409. package/dist/commands/item/update.d.ts.map +1 -0
  410. package/dist/commands/item/update.js +884 -0
  411. package/dist/commands/item/update.js.map +1 -0
  412. package/dist/commands/item/upsert.d.ts +105 -0
  413. package/dist/commands/item/upsert.d.ts.map +1 -0
  414. package/dist/commands/item/upsert.js +998 -0
  415. package/dist/commands/item/upsert.js.map +1 -0
  416. package/dist/commands/parse-argv.d.ts +20 -0
  417. package/dist/commands/parse-argv.d.ts.map +1 -0
  418. package/dist/commands/parse-argv.js +40 -0
  419. package/dist/commands/parse-argv.js.map +1 -0
  420. package/dist/commands/raw/index.d.ts +23 -0
  421. package/dist/commands/raw/index.d.ts.map +1 -0
  422. package/dist/commands/raw/index.js +416 -0
  423. package/dist/commands/raw/index.js.map +1 -0
  424. package/dist/commands/run-by-id-lookup.d.ts +72 -0
  425. package/dist/commands/run-by-id-lookup.d.ts.map +1 -0
  426. package/dist/commands/run-by-id-lookup.js +58 -0
  427. package/dist/commands/run-by-id-lookup.js.map +1 -0
  428. package/dist/commands/schema/index.d.ts +104 -0
  429. package/dist/commands/schema/index.d.ts.map +1 -0
  430. package/dist/commands/schema/index.js +183 -0
  431. package/dist/commands/schema/index.js.map +1 -0
  432. package/dist/commands/types.d.ts +66 -0
  433. package/dist/commands/types.d.ts.map +1 -0
  434. package/dist/commands/types.js +15 -0
  435. package/dist/commands/types.js.map +1 -0
  436. package/dist/commands/update/body-source.d.ts +38 -0
  437. package/dist/commands/update/body-source.d.ts.map +1 -0
  438. package/dist/commands/update/body-source.js +80 -0
  439. package/dist/commands/update/body-source.js.map +1 -0
  440. package/dist/commands/update/clear-all.d.ts +67 -0
  441. package/dist/commands/update/clear-all.d.ts.map +1 -0
  442. package/dist/commands/update/clear-all.js +281 -0
  443. package/dist/commands/update/clear-all.js.map +1 -0
  444. package/dist/commands/update/create.d.ts +51 -0
  445. package/dist/commands/update/create.d.ts.map +1 -0
  446. package/dist/commands/update/create.js +167 -0
  447. package/dist/commands/update/create.js.map +1 -0
  448. package/dist/commands/update/delete.d.ts +53 -0
  449. package/dist/commands/update/delete.d.ts.map +1 -0
  450. package/dist/commands/update/delete.js +148 -0
  451. package/dist/commands/update/delete.js.map +1 -0
  452. package/dist/commands/update/edit.d.ts +37 -0
  453. package/dist/commands/update/edit.d.ts.map +1 -0
  454. package/dist/commands/update/edit.js +129 -0
  455. package/dist/commands/update/edit.js.map +1 -0
  456. package/dist/commands/update/get.d.ts +37 -0
  457. package/dist/commands/update/get.d.ts.map +1 -0
  458. package/dist/commands/update/get.js +92 -0
  459. package/dist/commands/update/get.js.map +1 -0
  460. package/dist/commands/update/like.d.ts +17 -0
  461. package/dist/commands/update/like.d.ts.map +1 -0
  462. package/dist/commands/update/like.js +23 -0
  463. package/dist/commands/update/like.js.map +1 -0
  464. package/dist/commands/update/list.d.ts +58 -0
  465. package/dist/commands/update/list.d.ts.map +1 -0
  466. package/dist/commands/update/list.js +322 -0
  467. package/dist/commands/update/list.js.map +1 -0
  468. package/dist/commands/update/pin.d.ts +17 -0
  469. package/dist/commands/update/pin.d.ts.map +1 -0
  470. package/dist/commands/update/pin.js +23 -0
  471. package/dist/commands/update/pin.js.map +1 -0
  472. package/dist/commands/update/reply.d.ts +47 -0
  473. package/dist/commands/update/reply.d.ts.map +1 -0
  474. package/dist/commands/update/reply.js +149 -0
  475. package/dist/commands/update/reply.js.map +1 -0
  476. package/dist/commands/update/toggle.d.ts +70 -0
  477. package/dist/commands/update/toggle.d.ts.map +1 -0
  478. package/dist/commands/update/toggle.js +118 -0
  479. package/dist/commands/update/toggle.js.map +1 -0
  480. package/dist/commands/update/unlike.d.ts +17 -0
  481. package/dist/commands/update/unlike.d.ts.map +1 -0
  482. package/dist/commands/update/unlike.js +22 -0
  483. package/dist/commands/update/unlike.js.map +1 -0
  484. package/dist/commands/update/unpin.d.ts +17 -0
  485. package/dist/commands/update/unpin.d.ts.map +1 -0
  486. package/dist/commands/update/unpin.js +21 -0
  487. package/dist/commands/update/unpin.js.map +1 -0
  488. package/dist/commands/user/get.d.ts +31 -0
  489. package/dist/commands/user/get.d.ts.map +1 -0
  490. package/dist/commands/user/get.js +81 -0
  491. package/dist/commands/user/get.js.map +1 -0
  492. package/dist/commands/user/list.d.ts +61 -0
  493. package/dist/commands/user/list.d.ts.map +1 -0
  494. package/dist/commands/user/list.js +148 -0
  495. package/dist/commands/user/list.js.map +1 -0
  496. package/dist/commands/user/me.d.ts +17 -0
  497. package/dist/commands/user/me.d.ts.map +1 -0
  498. package/dist/commands/user/me.js +49 -0
  499. package/dist/commands/user/me.js.map +1 -0
  500. package/dist/commands/workspace/add-users.d.ts +76 -0
  501. package/dist/commands/workspace/add-users.d.ts.map +1 -0
  502. package/dist/commands/workspace/add-users.js +154 -0
  503. package/dist/commands/workspace/add-users.js.map +1 -0
  504. package/dist/commands/workspace/create.d.ts +59 -0
  505. package/dist/commands/workspace/create.d.ts.map +1 -0
  506. package/dist/commands/workspace/create.js +163 -0
  507. package/dist/commands/workspace/create.js.map +1 -0
  508. package/dist/commands/workspace/delete.d.ts +67 -0
  509. package/dist/commands/workspace/delete.d.ts.map +1 -0
  510. package/dist/commands/workspace/delete.js +182 -0
  511. package/dist/commands/workspace/delete.js.map +1 -0
  512. package/dist/commands/workspace/folders.d.ts +40 -0
  513. package/dist/commands/workspace/folders.d.ts.map +1 -0
  514. package/dist/commands/workspace/folders.js +124 -0
  515. package/dist/commands/workspace/folders.js.map +1 -0
  516. package/dist/commands/workspace/get.d.ts +35 -0
  517. package/dist/commands/workspace/get.d.ts.map +1 -0
  518. package/dist/commands/workspace/get.js +62 -0
  519. package/dist/commands/workspace/get.js.map +1 -0
  520. package/dist/commands/workspace/list.d.ts +57 -0
  521. package/dist/commands/workspace/list.d.ts.map +1 -0
  522. package/dist/commands/workspace/list.js +125 -0
  523. package/dist/commands/workspace/list.js.map +1 -0
  524. package/dist/commands/workspace/remove-users.d.ts +47 -0
  525. package/dist/commands/workspace/remove-users.d.ts.map +1 -0
  526. package/dist/commands/workspace/remove-users.js +122 -0
  527. package/dist/commands/workspace/remove-users.js.map +1 -0
  528. package/dist/commands/workspace/update.d.ts +68 -0
  529. package/dist/commands/workspace/update.d.ts.map +1 -0
  530. package/dist/commands/workspace/update.js +237 -0
  531. package/dist/commands/workspace/update.js.map +1 -0
  532. package/dist/config/load.d.ts +33 -0
  533. package/dist/config/load.d.ts.map +1 -0
  534. package/dist/config/load.js +81 -0
  535. package/dist/config/load.js.map +1 -0
  536. package/dist/index.d.ts +3 -0
  537. package/dist/index.d.ts.map +1 -0
  538. package/dist/index.js +4 -0
  539. package/dist/index.js.map +1 -0
  540. package/dist/types/global-flags.d.ts +69 -0
  541. package/dist/types/global-flags.d.ts.map +1 -0
  542. package/dist/types/global-flags.js +170 -0
  543. package/dist/types/global-flags.js.map +1 -0
  544. package/dist/types/ids.d.ts +38 -0
  545. package/dist/types/ids.d.ts.map +1 -0
  546. package/dist/types/ids.js +51 -0
  547. package/dist/types/ids.js.map +1 -0
  548. package/dist/types/json.d.ts +60 -0
  549. package/dist/types/json.d.ts.map +1 -0
  550. package/dist/types/json.js +33 -0
  551. package/dist/types/json.js.map +1 -0
  552. package/dist/utils/errors.d.ts +121 -0
  553. package/dist/utils/errors.d.ts.map +1 -0
  554. package/dist/utils/errors.js +264 -0
  555. package/dist/utils/errors.js.map +1 -0
  556. package/dist/utils/logger.d.ts +39 -0
  557. package/dist/utils/logger.d.ts.map +1 -0
  558. package/dist/utils/logger.js +49 -0
  559. package/dist/utils/logger.js.map +1 -0
  560. package/dist/utils/output/envelope.d.ts +140 -0
  561. package/dist/utils/output/envelope.d.ts.map +1 -0
  562. package/dist/utils/output/envelope.js +120 -0
  563. package/dist/utils/output/envelope.js.map +1 -0
  564. package/dist/utils/output/json.d.ts +10 -0
  565. package/dist/utils/output/json.d.ts.map +1 -0
  566. package/dist/utils/output/json.js +12 -0
  567. package/dist/utils/output/json.js.map +1 -0
  568. package/dist/utils/output/ndjson.d.ts +92 -0
  569. package/dist/utils/output/ndjson.d.ts.map +1 -0
  570. package/dist/utils/output/ndjson.js +33 -0
  571. package/dist/utils/output/ndjson.js.map +1 -0
  572. package/dist/utils/output/select.d.ts +22 -0
  573. package/dist/utils/output/select.d.ts.map +1 -0
  574. package/dist/utils/output/select.js +47 -0
  575. package/dist/utils/output/select.js.map +1 -0
  576. package/dist/utils/output/table.d.ts +32 -0
  577. package/dist/utils/output/table.d.ts.map +1 -0
  578. package/dist/utils/output/table.js +133 -0
  579. package/dist/utils/output/table.js.map +1 -0
  580. package/dist/utils/output/text.d.ts +5 -0
  581. package/dist/utils/output/text.d.ts.map +1 -0
  582. package/dist/utils/output/text.js +32 -0
  583. package/dist/utils/output/text.js.map +1 -0
  584. package/dist/utils/parse-boundary.d.ts +53 -0
  585. package/dist/utils/parse-boundary.d.ts.map +1 -0
  586. package/dist/utils/parse-boundary.js +62 -0
  587. package/dist/utils/parse-boundary.js.map +1 -0
  588. package/dist/utils/redact.d.ts +54 -0
  589. package/dist/utils/redact.d.ts.map +1 -0
  590. package/dist/utils/redact.js +154 -0
  591. package/dist/utils/redact.js.map +1 -0
  592. package/dist/utils/request-id.d.ts +17 -0
  593. package/dist/utils/request-id.d.ts.map +1 -0
  594. package/dist/utils/request-id.js +26 -0
  595. package/dist/utils/request-id.js.map +1 -0
  596. package/package.json +87 -0
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Typed errors for the CLI. Every thrown error carries a stable
3
+ * `code` from `cli-design.md` §6.5 — agents key off the code, never
4
+ * the English `message`. v0.1 froze 26 codes; `ambiguous_match` ships
5
+ * in v0.2 M12 (`item upsert` with 2+ matches), bringing the count to
6
+ * 27. `dev_*` codes ship in v0.3 but are listed here so the M5b agent
7
+ * doesn't need to backfill the type.
8
+ */
9
+ export const ERROR_CODES = [
10
+ 'usage_error',
11
+ 'confirmation_required',
12
+ 'not_found',
13
+ 'ambiguous_name',
14
+ 'ambiguous_column',
15
+ 'ambiguous_match',
16
+ 'column_not_found',
17
+ 'user_not_found',
18
+ 'unsupported_column_type',
19
+ 'column_archived',
20
+ 'unauthorized',
21
+ 'forbidden',
22
+ 'rate_limited',
23
+ 'complexity_exceeded',
24
+ 'daily_limit_exceeded',
25
+ 'concurrency_exceeded',
26
+ 'ip_rate_limited',
27
+ 'resource_locked',
28
+ 'validation_failed',
29
+ 'stale_cursor',
30
+ 'config_error',
31
+ 'cache_error',
32
+ 'network_error',
33
+ 'timeout',
34
+ 'dev_not_configured',
35
+ 'dev_board_misconfigured',
36
+ 'internal_error',
37
+ ];
38
+ /**
39
+ * Base class for everything thrown out of `commands/` and `api/`.
40
+ * The shape mirrors `cli-design.md` §6.5 one-to-one — the runner
41
+ * builds the JSON envelope by reading these fields.
42
+ */
43
+ export class MondayCliError extends Error {
44
+ code;
45
+ httpStatus;
46
+ mondayCode;
47
+ requestId;
48
+ retryable;
49
+ retryAfterSeconds;
50
+ details;
51
+ constructor(code, message, options = {}) {
52
+ super(message, options.cause === undefined ? undefined : { cause: options.cause });
53
+ this.name = new.target.name;
54
+ this.code = code;
55
+ this.httpStatus = options.httpStatus;
56
+ this.mondayCode = options.mondayCode;
57
+ this.requestId = options.requestId;
58
+ // `retryable` defaults from a per-code table so callers can stay
59
+ // terse when the default matches; explicit `false`/`true` always wins.
60
+ this.retryable = options.retryable ?? CODE_RETRYABLE_DEFAULT[code];
61
+ this.retryAfterSeconds = options.retryAfterSeconds;
62
+ this.details = options.details;
63
+ }
64
+ }
65
+ /**
66
+ * `cli-design.md` §6.5 retryable column. Defaults only — callers
67
+ * override when Monday's response says otherwise (e.g. a `cache_error`
68
+ * that's auto-retried without cache becomes non-retryable to the user).
69
+ *
70
+ * Exported because `monday schema` surfaces this per code so agents
71
+ * can decide retry strategy without consuming a real error envelope
72
+ * first (Codex review §3). Frozen so a future import can't mutate
73
+ * the table out from under the schema emitter (the runtime view of
74
+ * the contract should be the same one across the process lifetime).
75
+ */
76
+ export const CODE_RETRYABLE_DEFAULT = Object.freeze({
77
+ usage_error: false,
78
+ confirmation_required: false,
79
+ not_found: false,
80
+ ambiguous_name: false,
81
+ ambiguous_column: false,
82
+ ambiguous_match: false,
83
+ column_not_found: false,
84
+ user_not_found: false,
85
+ unsupported_column_type: false,
86
+ column_archived: false,
87
+ unauthorized: false,
88
+ forbidden: false,
89
+ rate_limited: true,
90
+ complexity_exceeded: true,
91
+ daily_limit_exceeded: false,
92
+ concurrency_exceeded: true,
93
+ ip_rate_limited: true,
94
+ resource_locked: true,
95
+ validation_failed: false,
96
+ stale_cursor: false,
97
+ config_error: false,
98
+ cache_error: true,
99
+ network_error: true,
100
+ timeout: true,
101
+ dev_not_configured: false,
102
+ dev_board_misconfigured: false,
103
+ internal_error: false,
104
+ });
105
+ /**
106
+ * Best-effort hint for the HTTP status the user would observe when
107
+ * this error originates from Monday. Most Monday application errors
108
+ * arrive with `200 OK` and a GraphQL `errors[]` payload, so a
109
+ * `null` here means "no fixed expectation; check the live envelope's
110
+ * `http_status` field". Surfaced via `monday schema` so agents can
111
+ * pre-build retry / backoff logic without observing an error first.
112
+ *
113
+ * Frozen for the same reason as `CODE_RETRYABLE_DEFAULT`.
114
+ */
115
+ export const CODE_TYPICAL_HTTP_STATUS = Object.freeze({
116
+ usage_error: null,
117
+ confirmation_required: null,
118
+ not_found: 200,
119
+ ambiguous_name: null,
120
+ ambiguous_column: null,
121
+ ambiguous_match: null,
122
+ column_not_found: null,
123
+ user_not_found: null,
124
+ unsupported_column_type: null,
125
+ column_archived: 200,
126
+ unauthorized: 401,
127
+ forbidden: 403,
128
+ rate_limited: 200,
129
+ complexity_exceeded: 200,
130
+ daily_limit_exceeded: 200,
131
+ concurrency_exceeded: 200,
132
+ ip_rate_limited: 200,
133
+ resource_locked: 423,
134
+ validation_failed: 200,
135
+ stale_cursor: 200,
136
+ config_error: null,
137
+ cache_error: null,
138
+ network_error: null,
139
+ timeout: null,
140
+ dev_not_configured: null,
141
+ dev_board_misconfigured: null,
142
+ internal_error: null,
143
+ });
144
+ /** Bad flag / missing positional / mutually exclusive inputs. */
145
+ export class UsageError extends MondayCliError {
146
+ constructor(message, options = {}) {
147
+ super('usage_error', message, options);
148
+ }
149
+ }
150
+ /** Destructive op without `--yes` (`cli-design.md` §3.1 #7). */
151
+ export class ConfirmationRequiredError extends MondayCliError {
152
+ constructor(message, options = {}) {
153
+ super('confirmation_required', message, options);
154
+ }
155
+ }
156
+ /** Missing/invalid token, malformed config. Exit code 3. */
157
+ export class ConfigError extends MondayCliError {
158
+ constructor(message, options = {}) {
159
+ super('config_error', message, options);
160
+ }
161
+ }
162
+ /** Local cache I/O failure — auto-retried without cache. */
163
+ export class CacheError extends MondayCliError {
164
+ constructor(message, options = {}) {
165
+ super('cache_error', message, options);
166
+ }
167
+ }
168
+ /**
169
+ * Anything originating from the Monday API or transport layer —
170
+ * the API client (M2) maps GraphQL/HTTP/network failures to a
171
+ * specific code via `new ApiError(code, ...)`.
172
+ */
173
+ export class ApiError extends MondayCliError {
174
+ }
175
+ /** Last-resort code for unknown errors — comes with a "report this" hint. */
176
+ export class InternalError extends MondayCliError {
177
+ constructor(message, options = {}) {
178
+ super('internal_error', message, options);
179
+ }
180
+ }
181
+ /**
182
+ * Compile-time guard: forces a `never` to be reachable, so any path
183
+ * that hits it in practice is a bug. Used as the trailing branch of
184
+ * exhaustive switches over discriminated unions — adding a new case
185
+ * to the union without updating the switch fails type-checking
186
+ * locally rather than only at the call site.
187
+ */
188
+ /* c8 ignore start — defensive guard; type system makes the `never`
189
+ parameter unreachable. Exists so adding a new variant to a
190
+ discriminated union without updating the consuming switch fails
191
+ type-checking, not silently. */
192
+ const assertNever = (value, context) => {
193
+ throw new InternalError(`unreachable: ${context} reached with ${JSON.stringify(value)}`);
194
+ };
195
+ /* c8 ignore stop */
196
+ /**
197
+ * Maps an error code to the exit code documented in `cli-design.md`
198
+ * §3.1 #5. Note `confirmation_required` is *not* exit 1 — it's a
199
+ * usage-style error that still wants a non-zero exit, but the design
200
+ * explicitly groups everything that's "the CLI rejected the call"
201
+ * under exit 1.
202
+ */
203
+ export const exitCodeForError = (code) => {
204
+ switch (code) {
205
+ case 'usage_error':
206
+ case 'confirmation_required':
207
+ return 1;
208
+ case 'config_error':
209
+ return 3;
210
+ case 'not_found':
211
+ case 'ambiguous_name':
212
+ case 'ambiguous_column':
213
+ case 'ambiguous_match':
214
+ case 'column_not_found':
215
+ case 'user_not_found':
216
+ case 'unsupported_column_type':
217
+ case 'column_archived':
218
+ case 'unauthorized':
219
+ case 'forbidden':
220
+ case 'rate_limited':
221
+ case 'complexity_exceeded':
222
+ case 'daily_limit_exceeded':
223
+ case 'concurrency_exceeded':
224
+ case 'ip_rate_limited':
225
+ case 'resource_locked':
226
+ case 'validation_failed':
227
+ case 'stale_cursor':
228
+ case 'cache_error':
229
+ case 'network_error':
230
+ case 'timeout':
231
+ case 'dev_not_configured':
232
+ case 'dev_board_misconfigured':
233
+ case 'internal_error':
234
+ return 2;
235
+ /* c8 ignore next 2 — assertNever is an exhaustiveness guard. */
236
+ default:
237
+ return assertNever(code, 'exitCodeForError');
238
+ }
239
+ };
240
+ /**
241
+ * Maps an `AbortReason` to its surfaced error. SIGINT bypasses the
242
+ * envelope entirely (exit 130, no JSON on stderr — agents reading
243
+ * exit codes from `kill` already know why); timeouts are an `ApiError`
244
+ * with `code: "timeout"`; explicit `cancel` is whatever the caller
245
+ * decided when they aborted.
246
+ */
247
+ export const errorForAbortReason = (reason) => {
248
+ switch (reason.kind) {
249
+ case 'timeout':
250
+ return new ApiError('timeout', `request timed out after ${reason.afterMs.toString()}ms`, { details: { timeout_ms: reason.afterMs } });
251
+ case 'sigint':
252
+ // The runner short-circuits on SIGINT before this is read, but
253
+ // surfacing a typed error keeps the contract symmetric.
254
+ return new MondayCliError('internal_error', 'aborted by SIGINT', {
255
+ details: { abort_reason: 'sigint' },
256
+ });
257
+ case 'cancel':
258
+ return new MondayCliError('internal_error', reason.reason ?? 'cancelled', { details: { abort_reason: 'cancel' } });
259
+ /* c8 ignore next 2 — assertNever is an exhaustiveness guard. */
260
+ default:
261
+ return assertNever(reason, 'errorForAbortReason');
262
+ }
263
+ };
264
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type RedactOptions } from './redact.js';
2
+ /**
3
+ * stderr-only structured logger. Stdout carries the result; stderr
4
+ * is for human-only signal (`cli-design.md` §3.1 rule 1). Every
5
+ * payload runs through `redact()` first so the Monday API token
6
+ * never reaches a log line under any verbosity.
7
+ *
8
+ * Level matrix (`cli-design.md` §3.1, §4.4):
9
+ * - `error` — always emitted; even `--quiet` keeps these.
10
+ * - `warn` — suppressed by `--quiet`; otherwise stderr text.
11
+ * - `info` — TTY-only (follow-up hints, progress). Off when piped.
12
+ * - `debug` — `--verbose` only (request bodies, complexity cost).
13
+ */
14
+ export type LogLevel = 'error' | 'warn' | 'info' | 'debug';
15
+ export interface LoggerOptions {
16
+ readonly stderr: NodeJS.WritableStream;
17
+ readonly isTTY: boolean;
18
+ readonly verbose: boolean;
19
+ readonly quiet: boolean;
20
+ /**
21
+ * Process env, used to auto-collect known sensitive values for
22
+ * the redactor's value-scan layer. When set, the logger pulls
23
+ * `MONDAY_API_TOKEN` (if non-empty) and merges it into
24
+ * `redactOptions.secrets`. This is the default-safe path for
25
+ * `--verbose` debug output — without it, a future caller that
26
+ * forgets to thread `redactOptions.secrets` through would leak
27
+ * the token verbatim into stderr (Codex M2 review §5).
28
+ */
29
+ readonly env?: NodeJS.ProcessEnv;
30
+ readonly redactOptions?: RedactOptions;
31
+ }
32
+ export interface Logger {
33
+ error: (payload: unknown) => void;
34
+ warn: (payload: unknown) => void;
35
+ info: (payload: unknown) => void;
36
+ debug: (payload: unknown) => void;
37
+ }
38
+ export declare const createLogger: (options: LoggerOptions) => Logger;
39
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAYD,eAAO,MAAM,YAAY,GAAI,SAAS,aAAa,KAAG,MAyCrD,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { redact } from './redact.js';
2
+ const formatPayload = (payload) => {
3
+ if (typeof payload === 'string') {
4
+ return payload;
5
+ }
6
+ if (payload === undefined) {
7
+ return 'undefined';
8
+ }
9
+ return JSON.stringify(payload);
10
+ };
11
+ export const createLogger = (options) => {
12
+ const { stderr, isTTY, verbose, quiet, redactOptions, env } = options;
13
+ // Re-read env at write-time so a token loaded by `loadConfig`'s
14
+ // dotenv after the logger was constructed still gets scrubbed —
15
+ // matches the runner's collectSecrets-on-emit pattern.
16
+ const envForSecrets = env;
17
+ const write = (level, payload) => {
18
+ const explicitSecrets = redactOptions?.secrets ?? [];
19
+ const envToken = envForSecrets?.MONDAY_API_TOKEN;
20
+ const envSecrets = typeof envToken === 'string' && envToken.length > 0 ? [envToken] : [];
21
+ const mergedSecrets = [...explicitSecrets, ...envSecrets];
22
+ const effectiveOptions = mergedSecrets.length > 0
23
+ ? { ...(redactOptions ?? {}), secrets: mergedSecrets }
24
+ : redactOptions ?? {};
25
+ const redacted = redact(payload, effectiveOptions);
26
+ stderr.write(`monday: [${level}] ${formatPayload(redacted)}\n`);
27
+ };
28
+ return {
29
+ error: (payload) => {
30
+ write('error', payload);
31
+ },
32
+ warn: (payload) => {
33
+ if (!quiet) {
34
+ write('warn', payload);
35
+ }
36
+ },
37
+ info: (payload) => {
38
+ if (isTTY && !quiet) {
39
+ write('info', payload);
40
+ }
41
+ },
42
+ debug: (payload) => {
43
+ if (verbose) {
44
+ write('debug', payload);
45
+ }
46
+ },
47
+ };
48
+ };
49
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AAyCzD,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAU,EAAE;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAsB,EAAU,EAAE;IAC7D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEtE,gEAAgE;IAChE,gEAAgE;IAChE,uDAAuD;IACvD,MAAM,aAAa,GAAG,GAAG,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,KAAe,EAAE,OAAgB,EAAQ,EAAE;QACxD,MAAM,eAAe,GAAG,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,aAAa,EAAE,gBAAgB,CAAC;QACjD,MAAM,UAAU,GACd,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,aAAa,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,UAAU,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GACpB,aAAa,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE;YACtD,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Universal envelope builders (`cli-design.md` §6).
3
+ *
4
+ * Every command's stdout JSON is built through one of four functions
5
+ * here so the shape stays in lockstep with the contract — the M2
6
+ * envelope contract test (`v0.1-plan.md` §5.2) inspects the output
7
+ * of every command and asserts the keys are present in the canonical
8
+ * order. Adding a top-level field is a non-breaking change *only* if
9
+ * it's tacked on the end of the canonical order; renames/reorders
10
+ * are a major-version bump.
11
+ */
12
+ import type { ErrorCode, MondayCliError } from '../errors.js';
13
+ export type SchemaVersion = '1';
14
+ export declare const CURRENT_SCHEMA_VERSION: SchemaVersion;
15
+ export type DataSource = 'live' | 'cache' | 'mixed' | 'none';
16
+ export interface Complexity {
17
+ readonly used: number;
18
+ readonly remaining: number;
19
+ readonly reset_in_seconds: number;
20
+ }
21
+ export interface ColumnHead {
22
+ readonly id: string;
23
+ readonly type: string;
24
+ readonly title: string;
25
+ }
26
+ /**
27
+ * Inputs to `buildMeta`. Loose ordering — `buildMeta` slots them into
28
+ * the canonical envelope-meta order so per-command call sites don't
29
+ * have to think about it.
30
+ */
31
+ export interface MetaInput {
32
+ readonly api_version: string;
33
+ readonly cli_version: string;
34
+ readonly request_id: string;
35
+ readonly source: DataSource;
36
+ readonly retrieved_at: string;
37
+ readonly cache_age_seconds?: number | null;
38
+ readonly complexity?: Complexity | null;
39
+ readonly dry_run?: boolean;
40
+ readonly next_cursor?: string | null;
41
+ readonly has_more?: boolean;
42
+ readonly total_returned?: number;
43
+ readonly columns?: Readonly<Record<string, ColumnHead>>;
44
+ }
45
+ export interface Meta {
46
+ readonly schema_version: SchemaVersion;
47
+ readonly api_version: string;
48
+ readonly cli_version: string;
49
+ readonly request_id: string;
50
+ readonly source: DataSource;
51
+ readonly cache_age_seconds: number | null;
52
+ readonly retrieved_at: string;
53
+ /**
54
+ * `cli-design.md` §6.1: "Always null without `--verbose` to avoid
55
+ * an extra GraphQL field on every query." So this field is always
56
+ * **present**; it's just `null` until `--verbose` makes the
57
+ * GraphQL `complexity` selection.
58
+ */
59
+ readonly complexity: Complexity | null;
60
+ readonly dry_run?: true;
61
+ readonly next_cursor?: string | null;
62
+ readonly has_more?: boolean;
63
+ readonly total_returned?: number;
64
+ readonly columns?: Readonly<Record<string, ColumnHead>>;
65
+ }
66
+ export interface Warning {
67
+ readonly code: string;
68
+ readonly message: string;
69
+ readonly details?: Readonly<Record<string, unknown>>;
70
+ }
71
+ export interface ErrorEnvelopeBody {
72
+ readonly code: ErrorCode;
73
+ readonly message: string;
74
+ readonly http_status: number | null;
75
+ readonly monday_code: string | null;
76
+ readonly request_id: string;
77
+ readonly retryable: boolean;
78
+ readonly retry_after_seconds: number | null;
79
+ readonly details: Readonly<Record<string, unknown>> | null;
80
+ }
81
+ export interface SuccessEnvelope<T> {
82
+ readonly ok: true;
83
+ readonly data: T;
84
+ readonly meta: Meta;
85
+ readonly warnings: readonly Warning[];
86
+ }
87
+ export interface MutationEnvelope<T> extends SuccessEnvelope<T> {
88
+ readonly side_effects?: readonly Readonly<Record<string, unknown>>[];
89
+ /**
90
+ * Token → resolved column ID map for the columns this mutation
91
+ * targeted. Per `cli-design.md` §5.3 step 2 line 709-710:
92
+ * "The resolved `column_id` is **echoed in mutation output**
93
+ * (§6.4 `resolved_ids`) so agents can capture stable IDs for
94
+ * future calls." The dry-run envelope's `planned_changes[].
95
+ * resolved_ids` carries the same shape; the live mutation
96
+ * envelope mirrors it so an agent's "set then re-read" loop
97
+ * can use the resolved ID without consulting metadata twice.
98
+ *
99
+ * Optional — present only on mutation envelopes that resolved
100
+ * tokens (read commands omit). The slot is canonical-position
101
+ * AFTER `side_effects` so the existing canonical key order
102
+ * stays stable.
103
+ */
104
+ readonly resolved_ids?: Readonly<Record<string, string>>;
105
+ }
106
+ export interface DryRunEnvelope {
107
+ readonly ok: true;
108
+ readonly data: null;
109
+ readonly meta: Meta;
110
+ readonly planned_changes: readonly Readonly<Record<string, unknown>>[];
111
+ readonly warnings: readonly Warning[];
112
+ }
113
+ export interface ErrorEnvelope {
114
+ readonly ok: false;
115
+ readonly error: ErrorEnvelopeBody;
116
+ readonly meta: Meta;
117
+ }
118
+ /**
119
+ * Builds a `meta` object in the canonical key order. Optional fields
120
+ * are only inserted when their input is defined — keeps unrelated
121
+ * commands from carrying empty `next_cursor`/`columns` pairs.
122
+ */
123
+ export declare const buildMeta: (input: MetaInput) => Meta;
124
+ export declare const buildSuccess: <T>(data: T, meta: Meta, warnings?: readonly Warning[]) => SuccessEnvelope<T>;
125
+ export interface BuildMutationInputs<T> {
126
+ readonly data: T;
127
+ readonly meta: Meta;
128
+ readonly warnings?: readonly Warning[];
129
+ readonly sideEffects?: readonly Readonly<Record<string, unknown>>[];
130
+ /**
131
+ * Per cli-design §5.3 step 2: token → resolved column ID echo.
132
+ * Omit on mutations that don't resolve tokens (e.g. a future
133
+ * `item rename` that only writes `name`).
134
+ */
135
+ readonly resolvedIds?: Readonly<Record<string, string>>;
136
+ }
137
+ export declare const buildMutation: <T>(inputs: BuildMutationInputs<T>) => MutationEnvelope<T>;
138
+ export declare const buildDryRun: (plannedChanges: readonly Readonly<Record<string, unknown>>[], meta: Meta, warnings?: readonly Warning[]) => DryRunEnvelope;
139
+ export declare const buildError: (error: MondayCliError, meta: Meta) => ErrorEnvelope;
140
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/utils/output/envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Universal envelope builders (`cli-design.md` §6).
3
+ *
4
+ * Every command's stdout JSON is built through one of four functions
5
+ * here so the shape stays in lockstep with the contract — the M2
6
+ * envelope contract test (`v0.1-plan.md` §5.2) inspects the output
7
+ * of every command and asserts the keys are present in the canonical
8
+ * order. Adding a top-level field is a non-breaking change *only* if
9
+ * it's tacked on the end of the canonical order; renames/reorders
10
+ * are a major-version bump.
11
+ */
12
+ export const CURRENT_SCHEMA_VERSION = '1';
13
+ /**
14
+ * Builds a `meta` object in the canonical key order. Optional fields
15
+ * are only inserted when their input is defined — keeps unrelated
16
+ * commands from carrying empty `next_cursor`/`columns` pairs.
17
+ */
18
+ export const buildMeta = (input) => {
19
+ // Constructed via property assignment in canonical order; JS object
20
+ // literals preserve insertion order for string keys, which is what
21
+ // the snapshot tests rely on.
22
+ const meta = {
23
+ schema_version: CURRENT_SCHEMA_VERSION,
24
+ api_version: input.api_version,
25
+ cli_version: input.cli_version,
26
+ request_id: input.request_id,
27
+ source: input.source,
28
+ cache_age_seconds: input.cache_age_seconds ?? null,
29
+ retrieved_at: input.retrieved_at,
30
+ // §6.1: complexity is always present; null until --verbose
31
+ // selects the GraphQL field. Insert it at this fixed position
32
+ // so the canonical key order doesn't depend on the input.
33
+ complexity: input.complexity ?? null,
34
+ };
35
+ if (input.dry_run === true) {
36
+ meta.dry_run = true;
37
+ }
38
+ if (input.next_cursor !== undefined) {
39
+ meta.next_cursor = input.next_cursor;
40
+ }
41
+ if (input.has_more !== undefined) {
42
+ meta.has_more = input.has_more;
43
+ }
44
+ if (input.total_returned !== undefined) {
45
+ meta.total_returned = input.total_returned;
46
+ }
47
+ if (input.columns !== undefined) {
48
+ meta.columns = input.columns;
49
+ }
50
+ return meta;
51
+ };
52
+ export const buildSuccess = (data, meta, warnings = []) => ({
53
+ ok: true,
54
+ data,
55
+ meta,
56
+ warnings,
57
+ });
58
+ export const buildMutation = (inputs) => {
59
+ const env = {
60
+ ok: true,
61
+ data: inputs.data,
62
+ meta: inputs.meta,
63
+ warnings: inputs.warnings ?? [],
64
+ };
65
+ if (inputs.sideEffects !== undefined && inputs.sideEffects.length > 0) {
66
+ env.side_effects = inputs.sideEffects;
67
+ }
68
+ if (inputs.resolvedIds !== undefined) {
69
+ env.resolved_ids = inputs.resolvedIds;
70
+ }
71
+ return env;
72
+ };
73
+ export const buildDryRun = (plannedChanges, meta, warnings = []) => ({
74
+ ok: true,
75
+ data: null,
76
+ // `dry_run: true` is part of the contract — slot it in via buildMeta
77
+ // so the field lands in the canonical position.
78
+ meta: meta.dry_run === true ? meta : buildMeta({ ...metaInputFromMeta(meta), dry_run: true }),
79
+ planned_changes: plannedChanges,
80
+ warnings,
81
+ });
82
+ export const buildError = (error, meta) => ({
83
+ ok: false,
84
+ error: {
85
+ code: error.code,
86
+ message: error.message,
87
+ http_status: error.httpStatus ?? null,
88
+ monday_code: error.mondayCode ?? null,
89
+ request_id: error.requestId ?? meta.request_id,
90
+ retryable: error.retryable,
91
+ retry_after_seconds: error.retryAfterSeconds ?? null,
92
+ details: error.details ?? null,
93
+ },
94
+ meta,
95
+ });
96
+ const metaInputFromMeta = (meta) => {
97
+ const input = {
98
+ api_version: meta.api_version,
99
+ cli_version: meta.cli_version,
100
+ request_id: meta.request_id,
101
+ source: meta.source,
102
+ retrieved_at: meta.retrieved_at,
103
+ cache_age_seconds: meta.cache_age_seconds,
104
+ complexity: meta.complexity,
105
+ };
106
+ if (meta.next_cursor !== undefined) {
107
+ input.next_cursor = meta.next_cursor;
108
+ }
109
+ if (meta.has_more !== undefined) {
110
+ input.has_more = meta.has_more;
111
+ }
112
+ if (meta.total_returned !== undefined) {
113
+ input.total_returned = meta.total_returned;
114
+ }
115
+ if (meta.columns !== undefined) {
116
+ input.columns = meta.columns;
117
+ }
118
+ return input;
119
+ };
120
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../src/utils/output/envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * JSON renderer (`cli-design.md` §3.1, §6).
3
+ *
4
+ * Pretty-prints with 2-space indent, trailing newline. Indentation
5
+ * keeps casual `cat`'d output readable; `jq` and other consumers
6
+ * tolerate whitespace fine. JSON output **never truncates** — that's
7
+ * the whole point of the format-vs-presentation split (§3.2).
8
+ */
9
+ export declare const renderJson: (envelope: unknown, stream: NodeJS.WritableStream) => void;
10
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/utils/output/json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,OAAO,EACjB,QAAQ,MAAM,CAAC,cAAc,KAC5B,IAEF,CAAC"}