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,417 @@
1
+ /**
2
+ * `monday board doctor <bid>` — diagnostics on a board's shape so an
3
+ * agent can fix problems BEFORE they surface as runtime errors
4
+ * (`cli-design.md` §11.2; `v0.1-plan.md` §3 M6).
5
+ *
6
+ * Three diagnostic kinds shipped in v0.1:
7
+ *
8
+ * 1. **`duplicate_column_title`** — groups columns by NFC + case-
9
+ * folded + whitespace-collapsed title. Any group with ≥2 columns
10
+ * emits one diagnostic. Same normalisation rule as the §5.3
11
+ * column resolver — when this fires, agents writing `--set
12
+ * "<title>"=<value>` get `ambiguous_column` at runtime; this
13
+ * surfaces the gotcha up front.
14
+ *
15
+ * 2. **`unsupported_column_type`** — for each non-allowlisted
16
+ * column type, emits one diagnostic keyed by roadmap category
17
+ * (matches `column-values.ts unsupportedColumnTypeError`'s
18
+ * three-category split): `v0.2_writer_expansion`, `read_only_
19
+ * forever`, or `future`. Agents reading `board doctor`'s output
20
+ * know exactly which columns will fail `item set` / `item
21
+ * update`, what category each falls into, and whether to expect
22
+ * a write path in v0.2 vs. never.
23
+ *
24
+ * 3. **`broken_board_relation`** — for each `board_relation`
25
+ * column, parses `settings_str.boardIds` and queries each
26
+ * linked board via Monday's `boards(ids:)`. If a linked board
27
+ * is archived, deleted, or unreachable (the response omits it
28
+ * because the token has no read permission), emits one
29
+ * diagnostic per missing target. This catches the
30
+ * "board_relation column → archived board → silent breakage"
31
+ * class agents would otherwise discover only when an item
32
+ * mutation fails.
33
+ *
34
+ * **No `stale_cache` diagnostic in v0.1.** cli-design §11.2 lists
35
+ * "stale cache vs live" as a doctor diagnostic; the `meta.source`
36
+ * + `meta.cache_age_seconds` envelope slots already surface cache
37
+ * provenance (and `board doctor` always force-refreshes so it
38
+ * sees the live state). A genuine cache-drift diagnostic
39
+ * (cache says X, live says Y) is logged for v0.2 backfill.
40
+ *
41
+ * **No bulk diagnostic flag**. `board doctor` runs every
42
+ * diagnostic on every call. Future `--diagnostic <kind>` filters
43
+ * are an additive surface.
44
+ *
45
+ * Idempotent: yes — pure read.
46
+ */
47
+ import { z } from 'zod';
48
+ import { ensureSubcommand } from '../types.js';
49
+ import { emitSuccess } from '../emit.js';
50
+ import { resolveClient } from '../../api/resolve-client.js';
51
+ import { BoardIdSchema } from '../../types/ids.js';
52
+ import { parseArgv } from '../parse-argv.js';
53
+ import { loadBoardMetadata, } from '../../api/board-metadata.js';
54
+ import { isWritableColumnType, getColumnRoadmapCategory, parseColumnSettings, } from '../../api/column-types.js';
55
+ import { unwrapOrThrow } from '../../utils/parse-boundary.js';
56
+ /**
57
+ * Per-diagnostic shape. Discriminated by `kind` so consumers can
58
+ * branch on a stable string. `severity` is informational — every
59
+ * doctor diagnostic is non-fatal (a board CAN ship with duplicate
60
+ * column titles; the diagnostic is "this WILL bite when an agent
61
+ * tries to title-resolve"). Agents that key off severity for an
62
+ * exit gate can use the `error` band.
63
+ */
64
+ const diagnosticSeverity = z.enum(['info', 'warning', 'error']);
65
+ const duplicateColumnTitleDiagnostic = z
66
+ .object({
67
+ kind: z.literal('duplicate_column_title'),
68
+ severity: diagnosticSeverity,
69
+ /** The normalised title that's shared by ≥2 columns. */
70
+ normalised_title: z.string(),
71
+ /** Each column that shares the normalised title. */
72
+ columns: z
73
+ .array(z
74
+ .object({
75
+ id: z.string().min(1),
76
+ title: z.string(),
77
+ type: z.string().min(1),
78
+ })
79
+ .strict())
80
+ .min(2),
81
+ message: z.string(),
82
+ })
83
+ .strict();
84
+ const unsupportedColumnTypeDiagnostic = z
85
+ .object({
86
+ kind: z.literal('unsupported_column_type'),
87
+ severity: diagnosticSeverity,
88
+ /** The column ID. */
89
+ column_id: z.string().min(1),
90
+ /** The column title (verbatim from board metadata). */
91
+ column_title: z.string(),
92
+ /** The column type Monday reports. */
93
+ column_type: z.string().min(1),
94
+ /** Roadmap category — one of three known values. */
95
+ category: z.enum(['v0.2_writer_expansion', 'read_only_forever', 'future']),
96
+ message: z.string(),
97
+ })
98
+ .strict();
99
+ const brokenBoardRelationDiagnostic = z
100
+ .object({
101
+ kind: z.literal('broken_board_relation'),
102
+ severity: diagnosticSeverity,
103
+ /** The board_relation column ID. */
104
+ column_id: z.string().min(1),
105
+ column_title: z.string(),
106
+ /** The linked board IDs that are archived / missing / inaccessible. */
107
+ missing_board_ids: z.array(z.string().min(1)).min(1),
108
+ /** Reason — `archived` (linked board.state === 'archived') or
109
+ * `unreachable` (Monday's response omitted the board, meaning
110
+ * the token has no read permission OR the board doesn't exist). */
111
+ reason: z.enum(['archived', 'deleted', 'unreachable', 'mixed']),
112
+ message: z.string(),
113
+ })
114
+ .strict();
115
+ const diagnosticSchema = z.discriminatedUnion('kind', [
116
+ duplicateColumnTitleDiagnostic,
117
+ unsupportedColumnTypeDiagnostic,
118
+ brokenBoardRelationDiagnostic,
119
+ ]);
120
+ export const boardDoctorOutputSchema = z
121
+ .object({
122
+ board_id: z.string().min(1),
123
+ board_name: z.string(),
124
+ /**
125
+ * Total diagnostics fired. Zero means the board is healthy
126
+ * (per the v0.1 diagnostic set). Convenience sum so an agent
127
+ * can short-circuit on `data.total === 0` without iterating.
128
+ */
129
+ total: z.number().int().min(0),
130
+ diagnostics: z.array(diagnosticSchema),
131
+ })
132
+ .strict();
133
+ const inputSchema = z
134
+ .object({
135
+ boardId: BoardIdSchema,
136
+ })
137
+ .strict();
138
+ /**
139
+ * Same normalisation as the §5.3 column resolver: NFC + trim +
140
+ * case-fold (Unicode-aware) + collapse internal whitespace. Tested
141
+ * across the resolver / filter / writer surfaces; using one
142
+ * function keeps doctor's "duplicate" definition aligned with the
143
+ * runtime's "ambiguous" definition.
144
+ */
145
+ const normaliseTitle = (raw) => raw
146
+ .normalize('NFC')
147
+ .trim()
148
+ .toLocaleLowerCase('und')
149
+ .replace(/\s+/gu, ' ');
150
+ /**
151
+ * Builds the per-category message for `unsupported_column_type`.
152
+ * Mirrors the runtime error builder's voice so doctor output and
153
+ * `item set` errors agree. Pre-fix the writer-expansion split (Codex
154
+ * M5b cleanup re-review #1), this diagnostic would have called every
155
+ * non-allowlisted type "deferred to v0.2", which doctor faithfully
156
+ * preserved via the category-keyed switch. M18 close (Codex round-2
157
+ * P2): the tentative writer-expansion row slipped from v0.2 to v0.3,
158
+ * so the `v0_2_writer_expansion` category's message now references
159
+ * v0.3. The category constant name retains its M8-era spelling for
160
+ * stability — renaming would churn every consumer with no wire-shape
161
+ * change.
162
+ */
163
+ const messageForCategory = (type, category) => {
164
+ if (category === 'read_only_forever') {
165
+ return (`Column type "${type}" is computed by Monday and is not ` +
166
+ `writable via the API regardless of CLI version. Set the ` +
167
+ `underlying source column instead.`);
168
+ }
169
+ if (category === 'v0_2_writer_expansion') {
170
+ return (`Column type "${type}" is not yet in the friendly --set ` +
171
+ `translator allowlist. The tentative writer-expansion row ` +
172
+ `slipped from v0.2 to v0.3 at v0.2.0 release; use --set-raw ` +
173
+ `<col>=<json> in the meantime.`);
174
+ }
175
+ return (`Column type "${type}" is not in the friendly --set allowlist or ` +
176
+ `the writer-expansion roadmap. Track cli-design.md §5.3 for ` +
177
+ `future coverage; --set-raw works for any type Monday writes via ` +
178
+ `change_column_value.`);
179
+ };
180
+ const collectDuplicateTitles = (columns) => {
181
+ const groups = new Map();
182
+ for (const c of columns) {
183
+ if (c.archived === true)
184
+ continue;
185
+ const key = normaliseTitle(c.title);
186
+ let arr = groups.get(key);
187
+ if (arr === undefined) {
188
+ arr = [];
189
+ groups.set(key, arr);
190
+ }
191
+ arr.push(c);
192
+ }
193
+ const result = [];
194
+ for (const [normalised, group] of groups) {
195
+ if (group.length < 2)
196
+ continue;
197
+ result.push({
198
+ kind: 'duplicate_column_title',
199
+ severity: 'warning',
200
+ normalised_title: normalised,
201
+ columns: group.map((c) => ({ id: c.id, title: c.title, type: c.type })),
202
+ message: `Found ${String(group.length)} columns sharing the normalised ` +
203
+ `title "${normalised}". Title-based --set / --where / --filter ` +
204
+ `against this title will surface ambiguous_column; use the ` +
205
+ `explicit id:<column_id> prefix or write to the column ID directly.`,
206
+ });
207
+ }
208
+ return result;
209
+ };
210
+ const collectUnsupportedTypes = (columns) => {
211
+ const result = [];
212
+ for (const c of columns) {
213
+ if (c.archived === true)
214
+ continue;
215
+ if (isWritableColumnType(c.type))
216
+ continue;
217
+ const category = getColumnRoadmapCategory(c.type);
218
+ // Map the internal category enum to the wire-stable label so the
219
+ // doctor output is more readable than `v0_2_writer_expansion`.
220
+ // The underscore form lives in the runtime helper only;
221
+ // diagnostic shape uses the dotted form.
222
+ const wireCategory = category === 'v0_2_writer_expansion'
223
+ ? 'v0.2_writer_expansion'
224
+ : category === 'read_only_forever'
225
+ ? 'read_only_forever'
226
+ : 'future';
227
+ result.push({
228
+ kind: 'unsupported_column_type',
229
+ // Severity differs by category. Read-only-forever is "info"
230
+ // because nothing the agent can do will change it; future / v0.2
231
+ // are "warning" because they're temporarily blocked.
232
+ severity: category === 'read_only_forever' ? 'info' : 'warning',
233
+ column_id: c.id,
234
+ column_title: c.title,
235
+ column_type: c.type,
236
+ category: wireCategory,
237
+ message: messageForCategory(c.type, category),
238
+ });
239
+ }
240
+ return result;
241
+ };
242
+ const BOARD_RELATION_LOOKUP_QUERY = `
243
+ query BoardDoctorRelationLookup($ids: [ID!]!) {
244
+ boards(ids: $ids) {
245
+ id
246
+ name
247
+ state
248
+ }
249
+ }
250
+ `;
251
+ const boardRelationLookupResponseSchema = z.looseObject({
252
+ boards: z
253
+ .array(z
254
+ .object({
255
+ id: BoardIdSchema,
256
+ name: z.string(),
257
+ state: z.string().nullable(),
258
+ })
259
+ .strict())
260
+ .nullable(),
261
+ });
262
+ /**
263
+ * Defensive parse of `board_relation` settings_str. Monday's shape
264
+ * is `{ "boardIds": [<numeric-string>, ...] }`; older boards may
265
+ * omit the slot entirely. We tolerate both — the doctor only runs
266
+ * the relation lookup when at least one boardId is present.
267
+ */
268
+ const extractLinkedBoardIds = (settings) => {
269
+ if (settings === null ||
270
+ typeof settings !== 'object' ||
271
+ Array.isArray(settings)) {
272
+ return [];
273
+ }
274
+ const boardIds = settings.boardIds;
275
+ if (!Array.isArray(boardIds))
276
+ return [];
277
+ return boardIds.filter((id) => typeof id === 'string');
278
+ };
279
+ const collectBrokenBoardRelations = async (client, metadata) => {
280
+ // Build a per-column map of linked-board IDs. Skip archived
281
+ // columns — they're not actionable. Aggregate ALL linked boards
282
+ // into one `boards(ids:)` call so we don't fan out per column.
283
+ const perColumn = new Map();
284
+ const allIds = new Set();
285
+ for (const c of metadata.columns) {
286
+ if (c.archived === true)
287
+ continue;
288
+ if (c.type !== 'board_relation')
289
+ continue;
290
+ const settings = parseColumnSettings(c.settings_str);
291
+ const ids = extractLinkedBoardIds(settings);
292
+ if (ids.length === 0)
293
+ continue;
294
+ perColumn.set(c.id, ids);
295
+ for (const id of ids) {
296
+ allIds.add(id);
297
+ }
298
+ }
299
+ if (allIds.size === 0)
300
+ return [];
301
+ const response = await client.raw(BOARD_RELATION_LOOKUP_QUERY, { ids: [...allIds] }, { operationName: 'BoardDoctorRelationLookup' });
302
+ const data = unwrapOrThrow(boardRelationLookupResponseSchema.safeParse(response.data), {
303
+ context: 'Monday returned a malformed BoardDoctorRelationLookup response',
304
+ details: { board_id: metadata.id },
305
+ hint: 'this is a data-integrity error in Monday\'s response; verify ' +
306
+ 'the response shape and update boardRelationLookupResponseSchema ' +
307
+ 'if Monday\'s contract has changed.',
308
+ });
309
+ const reachable = new Map();
310
+ for (const b of data.boards ?? []) {
311
+ reachable.set(b.id, { state: b.state });
312
+ }
313
+ const result = [];
314
+ for (const [columnId, linkedIds] of perColumn) {
315
+ const archived = [];
316
+ const unreachable = [];
317
+ for (const id of linkedIds) {
318
+ const live = reachable.get(id);
319
+ if (live === undefined) {
320
+ unreachable.push(id);
321
+ continue;
322
+ }
323
+ if (live.state === 'archived' || live.state === 'deleted') {
324
+ archived.push(id);
325
+ }
326
+ }
327
+ if (archived.length === 0 && unreachable.length === 0)
328
+ continue;
329
+ const column = metadata.columns.find((c) => c.id === columnId);
330
+ /* c8 ignore next 5 — defensive: columnId came from the same
331
+ metadata.columns walk that built `perColumn`, so this lookup
332
+ always finds the column. The branch exists to satisfy
333
+ `noUncheckedIndexedAccess` without forcing a non-null
334
+ assertion at every read. */
335
+ if (column === undefined)
336
+ continue;
337
+ const reason = archived.length > 0 && unreachable.length > 0
338
+ ? 'mixed'
339
+ : archived.length > 0
340
+ ? 'archived'
341
+ : 'unreachable';
342
+ result.push({
343
+ kind: 'broken_board_relation',
344
+ severity: 'warning',
345
+ column_id: columnId,
346
+ column_title: column.title,
347
+ missing_board_ids: [...archived, ...unreachable],
348
+ reason,
349
+ message: `board_relation column "${column.title}" (${columnId}) links to ` +
350
+ `${String(archived.length + unreachable.length)} board(s) that ` +
351
+ `are not active: ${archived.length > 0 ? `${String(archived.length)} archived/deleted` : ''}${archived.length > 0 && unreachable.length > 0 ? ', ' : ''}${unreachable.length > 0 ? `${String(unreachable.length)} unreachable (token may lack permission, or the board doesn't exist)` : ''}.`,
352
+ });
353
+ }
354
+ return result;
355
+ };
356
+ export const boardDoctorCommand = {
357
+ name: 'board.doctor',
358
+ summary: 'Diagnose a board for column / relation issues that bite at runtime',
359
+ examples: [
360
+ 'monday board doctor 12345',
361
+ 'monday board doctor 12345 --json',
362
+ ],
363
+ idempotent: true,
364
+ inputSchema,
365
+ outputSchema: boardDoctorOutputSchema,
366
+ attach: (program, ctx) => {
367
+ const noun = ensureSubcommand(program, 'board', 'Board commands');
368
+ noun
369
+ .command('doctor <boardId>')
370
+ .description(boardDoctorCommand.summary)
371
+ .addHelpText('after', ['', 'Examples:', ...boardDoctorCommand.examples.map((e) => ` ${e}`), ''].join('\n'))
372
+ .action(async (boardId, opts) => {
373
+ const parsed = parseArgv(boardDoctorCommand.inputSchema, {
374
+ boardId,
375
+ ...opts,
376
+ });
377
+ const { client, globalFlags, apiVersion } = resolveClient(ctx, program.opts());
378
+ // Force-refresh so doctor sees the live state (cache hits
379
+ // would mean diagnostics describe stale data; the whole
380
+ // value of doctor is current correctness).
381
+ const result = await loadBoardMetadata({
382
+ client,
383
+ boardId: parsed.boardId,
384
+ env: ctx.env,
385
+ noCache: globalFlags.noCache,
386
+ refresh: true,
387
+ });
388
+ const dups = collectDuplicateTitles(result.metadata.columns);
389
+ const unsupported = collectUnsupportedTypes(result.metadata.columns);
390
+ const broken = await collectBrokenBoardRelations(client, result.metadata);
391
+ const diagnostics = [
392
+ ...dups,
393
+ ...unsupported,
394
+ ...broken,
395
+ ];
396
+ const data = {
397
+ board_id: result.metadata.id,
398
+ board_name: result.metadata.name,
399
+ total: diagnostics.length,
400
+ diagnostics: [...diagnostics],
401
+ };
402
+ // Doctor always force-refreshes; meta.source is always 'live'.
403
+ ctx.meta.setSource('live');
404
+ emitSuccess({
405
+ ctx,
406
+ data,
407
+ schema: boardDoctorCommand.outputSchema,
408
+ programOpts: program.opts(),
409
+ source: 'live',
410
+ apiVersion,
411
+ complexity: result.complexity,
412
+ cacheAgeSeconds: null,
413
+ });
414
+ });
415
+ },
416
+ };
417
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/board/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * `monday board duplicate <bid> [--name <n>] [--workspace <wid>]
3
+ * [--with-updates] [--dry-run]` — duplicate a board
4
+ * (`cli-design.md` §4.3 line 727, `v0.2-plan.md` §3 M15).
5
+ *
6
+ * **Wire shape.** Single round-trip via `duplicate_board(board_id,
7
+ * duplicate_type: DuplicateBoardType!, board_name?, workspace_id?,
8
+ * folder_id?, keep_subscribers?)`. Returns the M15-unique
9
+ * `BoardDuplication { board, is_async }` SDK type — the only M15
10
+ * verb whose live envelope's `data` wraps because Monday's wire
11
+ * shape carries `is_async`. Per cli-design §6.1 (round-2 F3
12
+ * widening) + §6.4 board-duplicate variant.
13
+ *
14
+ * **`--with-updates` flag mapping.** Selects between Monday's
15
+ * three-armed `DuplicateBoardType` enum: without --with-updates
16
+ * the wire call uses `duplicate_board_with_pulses` (items WITHOUT
17
+ * updates); with --with-updates the wire call uses
18
+ * `duplicate_board_with_pulses_and_updates` (items WITH updates).
19
+ * The third arm (`duplicate_board_with_structure` — skeleton
20
+ * without items) is deferred to a later v0.x; agents needing it
21
+ * use M9's `dev mutate` escape hatch.
22
+ *
23
+ * **`is_async` semantics.** When true, Monday has queued the
24
+ * duplication server-side and the new board may not be fully
25
+ * populated by envelope time. Agents needing to operate on the
26
+ * duplicated items / updates poll `boards(ids: [<new_id>]) {
27
+ * state }` until terminal state. When false, the duplication has
28
+ * fully landed by envelope time and immediate follow-up reads
29
+ * are safe. (cli-design §6.4 board-duplicate live envelope.)
30
+ *
31
+ * **`--workspace` is optional.** Defaults to the source board's
32
+ * workspace; only forwards when the agent provides a value.
33
+ *
34
+ * **`--name` is optional.** Defaults to Monday's server-side
35
+ * "<source name> (Copy)" when omitted.
36
+ *
37
+ * **Dry-run shape** per cli-design §6.4 board-duplicate variant:
38
+ * `{operation: "duplicate_board", board_id, with_updates,
39
+ * target_workspace_id?, target_name?, board: <projected source
40
+ * snapshot>}`. Preflight `board get` read via `loadBoardMetadata`
41
+ * — cache hits observable; `meta.source: 'live' | 'cache'`.
42
+ * Cache-staleness caveat: pass `--no-cache` for force-live
43
+ * preview when freshness matters.
44
+ *
45
+ * **Idempotent: false.** Re-running creates a second copy. NOT
46
+ * destructive (no --yes gate — cli-design §3.1 #7 reserves the
47
+ * gate for destructive verbs). Same shape `monday board create`
48
+ * uses for non-destructive idempotency.
49
+ */
50
+ import { z } from 'zod';
51
+ import { type CommandModule } from '../types.js';
52
+ /**
53
+ * The mutation envelope's `data` wraps `BoardDuplication { board,
54
+ * is_async }`. Per cli-design §6.4 board-duplicate variant + §6.1
55
+ * universal envelope widening (round-2 F3) — single-target verbs
56
+ * usually surface the projection directly, but `board duplicate`
57
+ * is the M15 wrapper case because `is_async` is load-bearing for
58
+ * agents that duplicate-then-immediately-read.
59
+ */
60
+ export declare const boardDuplicateOutputSchema: z.ZodObject<{
61
+ board: z.ZodObject<{
62
+ id: z.ZodString;
63
+ name: z.ZodString;
64
+ description: z.ZodNullable<z.ZodString>;
65
+ state: z.ZodNullable<z.ZodString>;
66
+ board_kind: z.ZodNullable<z.ZodString>;
67
+ board_folder_id: z.ZodNullable<z.ZodString>;
68
+ workspace_id: z.ZodNullable<z.ZodString>;
69
+ url: z.ZodNullable<z.ZodString>;
70
+ items_count: z.ZodNullable<z.ZodNumber>;
71
+ updated_at: z.ZodNullable<z.ZodString>;
72
+ permissions: z.ZodNullable<z.ZodString>;
73
+ }, z.core.$strict>;
74
+ is_async: z.ZodBoolean;
75
+ }, z.core.$strict>;
76
+ export type BoardDuplicateOutput = z.infer<typeof boardDuplicateOutputSchema>;
77
+ declare const inputSchema: z.ZodObject<{
78
+ boardId: z.core.$ZodBranded<z.ZodString, "BoardId", "out">;
79
+ name: z.ZodOptional<z.ZodString>;
80
+ workspace: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "WorkspaceId", "out">>;
81
+ withUpdates: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
82
+ }, z.core.$strict>;
83
+ export declare const boardDuplicateCommand: CommandModule<z.infer<typeof inputSchema>, BoardDuplicateOutput>;
84
+ export {};
85
+ //# sourceMappingURL=duplicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../../src/commands/board/duplicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAoCnE;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;kBAK5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,QAAA,MAAM,WAAW;;;;;kBAYN,CAAC;AAeZ,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,oBAAoB,CAyMrB,CAAC"}