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,12 @@
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 const renderJson = (envelope, stream) => {
10
+ stream.write(`${JSON.stringify(envelope, null, 2)}\n`);
11
+ };
12
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/utils/output/json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAiB,EACjB,MAA6B,EACvB,EAAE;IACR,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC,CAAC"}
@@ -0,0 +1,92 @@
1
+ import type { Meta, Warning } from './envelope.js';
2
+ /**
3
+ * NDJSON renderer for collections (`cli-design.md` §6.3).
4
+ *
5
+ * Streaming-friendly shape: one resource per line, no envelope
6
+ * wrapping. Final line is a `{"_meta": ...}` trailer carrying the
7
+ * pagination state and source so agents can pin behaviour without
8
+ * a second request.
9
+ *
10
+ * §6.3 fixes the trailer shape exactly: `{"_meta":{...}}` — one
11
+ * key, one object, nothing else. NDJSON has no envelope, so it has
12
+ * no `warnings` array; surfacing them out-of-band would mean a
13
+ * consumer keeps reading after the trailer to look for them, which
14
+ * defeats "trailer = stream-end sentinel". If a future milestone
15
+ * needs to deliver warnings in the streaming path, the agreed home
16
+ * is `_meta.warnings` (additive, contract-clean) — extend the
17
+ * `Meta` type, don't add a sibling key here.
18
+ *
19
+ * NDJSON **never truncates**: streaming exists so agents can start
20
+ * processing without waiting for the whole walk, not so the
21
+ * presentation layer can drop bytes.
22
+ *
23
+ * Two surfaces:
24
+ *
25
+ * - `renderNdjson` (collect-then-emit) — used when the caller
26
+ * already has the full data array. Single function, no streaming
27
+ * semantics.
28
+ *
29
+ * - `startNdjsonStream` (R52, M18 lift) — used when the caller is
30
+ * walking a paginated source (`paginate.onItem` /
31
+ * `walkPages.onItem`). Returns a `{ onItem, writeTrailer }`
32
+ * handle so the caller can emit per-item-arrival and write the
33
+ * trailer after the walk completes. Three consumers: `item list`
34
+ * (M7), `item search` (M18), `update list` (M18). Was previously
35
+ * a private helper in `src/commands/item/list.ts`; lifted at the
36
+ * 3-consumer trigger.
37
+ */
38
+ export interface NdjsonInput {
39
+ readonly data: readonly unknown[];
40
+ readonly meta: Meta;
41
+ /**
42
+ * Warnings are accepted on the input for symmetry with other
43
+ * renderers but are NOT written to the trailer — see the comment
44
+ * above. They're consumed by the table/JSON path on TTY mode and
45
+ * may be surfaced via `meta.warnings` in a later milestone.
46
+ */
47
+ readonly warnings: readonly Warning[];
48
+ }
49
+ export declare const renderNdjson: (input: NdjsonInput, stream: NodeJS.WritableStream) => void;
50
+ /**
51
+ * Inputs to `startNdjsonStream`. Three fields — well below the
52
+ * >4-parameter heuristic that deferred R44 / R49 / R50:
53
+ *
54
+ * - `stream` — the writable stream items + trailer write to
55
+ * (typically `ctx.stdout`).
56
+ * - `secrets` — token bytes the redactor scrubs from every emitted
57
+ * line (per `.claude/rules/security.md` "value-scanning filter").
58
+ * Caller passes `collectSecrets(ctx.env)`.
59
+ * - `project` — per-item projection callback. Decouples the helper
60
+ * from per-noun output shape: item list/search projects raw
61
+ * Monday rows through `projectFromRaw`; update list runs items
62
+ * through `normaliseReplies` + the per-update zod parse.
63
+ *
64
+ * The trailer-side `Meta` is built by the caller (`buildMeta(...)`)
65
+ * and passed into `writeTrailer`. This keeps the per-noun trailer-
66
+ * shape variance at the call site — item list/search carries
67
+ * `meta.columns`, `update list` does not — without parameterising
68
+ * a `meta` builder inside the helper.
69
+ */
70
+ export interface NdjsonStreamInputs<T> {
71
+ readonly stream: NodeJS.WritableStream;
72
+ readonly secrets: readonly string[];
73
+ readonly project: (item: T) => unknown;
74
+ }
75
+ export interface NdjsonStreamHandle<T> {
76
+ /**
77
+ * Per-item callback for the stream. Returns a `Promise<void>`
78
+ * that resolves once the bytes are flushed (or, when
79
+ * `stream.write` returns `false`, once the stream's `'drain'`
80
+ * event fires). Threaded through `paginate.onItem` /
81
+ * `walkPages.onItem` so a slow downstream consumer (a piped
82
+ * `jq`, an open-ended `tee`) backpressures the cursor walk
83
+ * for real — not just in spirit. Without the await on `'drain'`,
84
+ * a fast walker against a slow stdout would buffer items in
85
+ * Node's internal write queue and the "backpressure" comment in
86
+ * `walk-pages.ts` / `pagination.ts` would be aspirational.
87
+ */
88
+ readonly onItem: (item: T) => Promise<void>;
89
+ readonly writeTrailer: (meta: Meta) => void;
90
+ }
91
+ export declare const startNdjsonStream: <T>(inputs: NdjsonStreamInputs<T>) => NdjsonStreamHandle<T>;
92
+ //# sourceMappingURL=ndjson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../../src/utils/output/ndjson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC;AAED,eAAO,MAAM,YAAY,GACvB,OAAO,WAAW,EAClB,QAAQ,MAAM,CAAC,cAAc,KAC5B,IAKF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC7C;AAgBD,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,QAAQ,kBAAkB,CAAC,CAAC,CAAC,KAC5B,kBAAkB,CAAC,CAAC,CAatB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { redact } from '../redact.js';
2
+ export const renderNdjson = (input, stream) => {
3
+ for (const resource of input.data) {
4
+ stream.write(`${JSON.stringify(resource)}\n`);
5
+ }
6
+ stream.write(`${JSON.stringify({ _meta: input.meta })}\n`);
7
+ };
8
+ const writeAndDrain = async (stream, bytes) => {
9
+ if (stream.write(bytes))
10
+ return;
11
+ // High-water mark hit; wait for the next 'drain' before resolving.
12
+ // The walker awaits this, so the next item waits with us.
13
+ await new Promise((resolve) => {
14
+ stream.once('drain', () => {
15
+ resolve();
16
+ });
17
+ });
18
+ };
19
+ export const startNdjsonStream = (inputs) => {
20
+ const { stream, secrets, project } = inputs;
21
+ return {
22
+ onItem: async (item) => {
23
+ const projected = project(item);
24
+ const redacted = redact(projected, { secrets });
25
+ await writeAndDrain(stream, `${JSON.stringify(redacted)}\n`);
26
+ },
27
+ writeTrailer: (meta) => {
28
+ const trailer = redact({ _meta: meta }, { secrets });
29
+ stream.write(`${JSON.stringify(trailer)}\n`);
30
+ },
31
+ };
32
+ };
33
+ //# sourceMappingURL=ndjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../../src/utils/output/ndjson.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkDtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAkB,EAClB,MAA6B,EACvB,EAAE;IACR,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AA6CF,MAAM,aAAa,GAAG,KAAK,EACzB,MAA6B,EAC7B,KAAa,EACE,EAAE;IACjB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO;IAChC,mEAAmE;IACnE,0DAA0D;IAC1D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAA6B,EACN,EAAE;IACzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAChD,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Output-format selection (`cli-design.md` §3.1 #2, §4.4).
3
+ *
4
+ * Resolution priority (first match wins):
5
+ * 1. `--json` / `--table` shorthand flags (mutually exclusive).
6
+ * 2. `--output <fmt>` explicit choice.
7
+ * 3. `MONDAY_OUTPUT` env override (sticky agent contexts).
8
+ * 4. `process.stdout.isTTY` — table when typing in a terminal,
9
+ * JSON when piped or redirected so `monday item list | jq`
10
+ * just works.
11
+ */
12
+ export declare const OUTPUT_FORMATS: readonly ["json", "table", "text", "ndjson"];
13
+ export type OutputFormat = (typeof OUTPUT_FORMATS)[number];
14
+ export interface SelectOutputInput {
15
+ readonly json?: boolean;
16
+ readonly table?: boolean;
17
+ readonly output?: string;
18
+ readonly env?: NodeJS.ProcessEnv;
19
+ readonly isTTY: boolean;
20
+ }
21
+ export declare const selectOutput: (input: SelectOutputInput) => OutputFormat;
22
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/utils/output/select.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,8CAA+C,CAAC;AAC3E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAKD,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,KAAG,YA6CvD,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { UsageError } from '../errors.js';
2
+ /**
3
+ * Output-format selection (`cli-design.md` §3.1 #2, §4.4).
4
+ *
5
+ * Resolution priority (first match wins):
6
+ * 1. `--json` / `--table` shorthand flags (mutually exclusive).
7
+ * 2. `--output <fmt>` explicit choice.
8
+ * 3. `MONDAY_OUTPUT` env override (sticky agent contexts).
9
+ * 4. `process.stdout.isTTY` — table when typing in a terminal,
10
+ * JSON when piped or redirected so `monday item list | jq`
11
+ * just works.
12
+ */
13
+ export const OUTPUT_FORMATS = ['json', 'table', 'text', 'ndjson'];
14
+ const isOutputFormat = (value) => OUTPUT_FORMATS.includes(value);
15
+ export const selectOutput = (input) => {
16
+ const { json = false, table = false, output, env, isTTY } = input;
17
+ if (json && table) {
18
+ throw new UsageError('--json and --table are mutually exclusive');
19
+ }
20
+ if (output !== undefined && !isOutputFormat(output)) {
21
+ throw new UsageError(`--output must be one of ${OUTPUT_FORMATS.join(', ')} (got "${output}")`);
22
+ }
23
+ if (json && output !== undefined && output !== 'json') {
24
+ throw new UsageError(`--json conflicts with --output ${output} (use one or the other)`);
25
+ }
26
+ if (table && output !== undefined && output !== 'table') {
27
+ throw new UsageError(`--table conflicts with --output ${output} (use one or the other)`);
28
+ }
29
+ if (json) {
30
+ return 'json';
31
+ }
32
+ if (table) {
33
+ return 'table';
34
+ }
35
+ if (output !== undefined) {
36
+ return output;
37
+ }
38
+ const fromEnv = env?.MONDAY_OUTPUT;
39
+ if (fromEnv !== undefined && fromEnv !== '') {
40
+ if (!isOutputFormat(fromEnv)) {
41
+ throw new UsageError(`MONDAY_OUTPUT must be one of ${OUTPUT_FORMATS.join(', ')} (got "${fromEnv}")`);
42
+ }
43
+ return fromEnv;
44
+ }
45
+ return isTTY ? 'table' : 'json';
46
+ };
47
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/utils/output/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAW3E,MAAM,cAAc,GAAG,CAAC,KAAa,EAAyB,EAAE,CAC7D,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAgB,EAAE;IACrE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAElE,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAClB,2BAA2B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,IAAI,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAClB,kCAAkC,MAAM,yBAAyB,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,UAAU,CAClB,mCAAmC,MAAM,yBAAyB,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE,aAAa,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAClB,gCAAgC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,OAAO,IAAI,CAC/E,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ export declare const COLUMN_FLOOR = 12;
2
+ export interface TableOptions {
3
+ /** Disable truncation (the `--full` flag). */
4
+ readonly full?: boolean;
5
+ /** Target terminal width. Falls back to 80 when not provided. */
6
+ readonly width?: number;
7
+ /**
8
+ * Restrict to these columns, by key. Order is preserved. Unknown
9
+ * keys are silently dropped — the command-layer caller validated
10
+ * already, and a truncated header is more useful than an error here.
11
+ */
12
+ readonly columns?: readonly string[];
13
+ }
14
+ export interface SingleResourceTableInput {
15
+ readonly kind: 'single';
16
+ readonly data: Readonly<Record<string, unknown>>;
17
+ readonly options?: TableOptions;
18
+ }
19
+ export interface CollectionTableInput {
20
+ readonly kind: 'collection';
21
+ readonly data: readonly Readonly<Record<string, unknown>>[];
22
+ readonly options?: TableOptions;
23
+ }
24
+ export type TableInput = SingleResourceTableInput | CollectionTableInput;
25
+ /**
26
+ * Truncates `value` to fit within `width` characters. The width
27
+ * floor (per `cli-design.md` §3.2) is honoured by callers — this
28
+ * function only does the cut.
29
+ */
30
+ export declare const truncate: (value: string, width: number) => string;
31
+ export declare const renderTable: (input: TableInput, stream: NodeJS.WritableStream) => void;
32
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/utils/output/table.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,YAAY,KAAK,CAAC;AAI/B,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,MAAM,UAAU,GAAG,wBAAwB,GAAG,oBAAoB,CAAC;AAkBzE;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAQvD,CAAC;AAiGF,eAAO,MAAM,WAAW,GACtB,OAAO,UAAU,EACjB,QAAQ,MAAM,CAAC,cAAc,KAC5B,IAGF,CAAC"}
@@ -0,0 +1,133 @@
1
+ import Table from 'cli-table3';
2
+ /**
3
+ * Table renderer for TTY output (`cli-design.md` §3.2).
4
+ *
5
+ * Two layouts:
6
+ * - **Single resource** — key/value rows (one row per top-level
7
+ * field of `data`).
8
+ * - **Collection** — N-column table; columns are the union of keys
9
+ * across rows, in first-seen order; header row is the column names.
10
+ *
11
+ * Truncation is honoured here and only here — JSON / NDJSON callers
12
+ * never reach this code, so the §3.2 invariant "truncation never
13
+ * affects JSON output" is enforced by construction.
14
+ *
15
+ * Truncation rules (matching the design):
16
+ * - Per-column floor of 12 chars before the ellipsis kicks in.
17
+ * - Trailing ellipsis is a single `…` character (U+2026).
18
+ * - `--full` disables truncation.
19
+ * - `--width <N>` forces the target terminal width.
20
+ * - `--columns <c1,c2,...>` restricts the visible column set.
21
+ */
22
+ const ELLIPSIS = '…';
23
+ export const COLUMN_FLOOR = 12;
24
+ const FALLBACK_WIDTH = 80;
25
+ const DEFAULT_PADDING = 2;
26
+ const formatCell = (value) => {
27
+ if (value === null) {
28
+ return 'null';
29
+ }
30
+ if (value === undefined) {
31
+ return '';
32
+ }
33
+ if (typeof value === 'string') {
34
+ return value;
35
+ }
36
+ if (typeof value === 'number' || typeof value === 'boolean') {
37
+ return String(value);
38
+ }
39
+ return JSON.stringify(value);
40
+ };
41
+ /**
42
+ * Truncates `value` to fit within `width` characters. The width
43
+ * floor (per `cli-design.md` §3.2) is honoured by callers — this
44
+ * function only does the cut.
45
+ */
46
+ export const truncate = (value, width) => {
47
+ if (value.length <= width) {
48
+ return value;
49
+ }
50
+ if (width <= 1) {
51
+ return ELLIPSIS;
52
+ }
53
+ return value.slice(0, width - 1) + ELLIPSIS;
54
+ };
55
+ /**
56
+ * Splits the available horizontal budget across `columnCount`
57
+ * columns, each at least `COLUMN_FLOOR` wide. Returns the per-column
58
+ * width (in characters of cell content). cli-table3 adds borders +
59
+ * padding around what we hand it; account for that up front so the
60
+ * rendered table actually fits.
61
+ */
62
+ const computeColumnWidth = (columnCount, width) => {
63
+ // Each cell carries 2 padding chars + 1 border char; an extra +1
64
+ // border closes off the right edge.
65
+ const overhead = columnCount * (DEFAULT_PADDING + 1) + 1;
66
+ const usable = Math.max(width - overhead, columnCount * COLUMN_FLOOR);
67
+ return Math.max(Math.floor(usable / columnCount), COLUMN_FLOOR);
68
+ };
69
+ const filterAndOrderKeys = (keys, selected) => {
70
+ if (selected === undefined) {
71
+ return keys;
72
+ }
73
+ const present = new Set(keys);
74
+ return selected.filter((k) => present.has(k));
75
+ };
76
+ const collectKeysInOrder = (rows) => {
77
+ const seen = new Set();
78
+ const ordered = [];
79
+ for (const row of rows) {
80
+ for (const key of Object.keys(row)) {
81
+ if (!seen.has(key)) {
82
+ seen.add(key);
83
+ ordered.push(key);
84
+ }
85
+ }
86
+ }
87
+ return ordered;
88
+ };
89
+ const renderSingle = (input) => {
90
+ const { data, options = {} } = input;
91
+ const { full = false, width = FALLBACK_WIDTH, columns } = options;
92
+ const allKeys = Object.keys(data);
93
+ const keys = filterAndOrderKeys(allKeys, columns);
94
+ const valueColWidth = full ? Number.POSITIVE_INFINITY : computeColumnWidth(2, width);
95
+ const table = new Table({
96
+ head: ['field', 'value'],
97
+ });
98
+ for (const key of keys) {
99
+ const cell = formatCell(data[key]);
100
+ table.push([
101
+ full ? key : truncate(key, valueColWidth),
102
+ full ? cell : truncate(cell, valueColWidth),
103
+ ]);
104
+ }
105
+ return table.toString();
106
+ };
107
+ const renderCollection = (input) => {
108
+ const { data, options = {} } = input;
109
+ const { full = false, width = FALLBACK_WIDTH, columns } = options;
110
+ const allKeys = collectKeysInOrder(data);
111
+ const keys = filterAndOrderKeys(allKeys, columns);
112
+ if (keys.length === 0) {
113
+ // Empty collection still emits a table-shaped sentinel; an empty
114
+ // string would let the renderer-selection bug ride silently.
115
+ return new Table({ head: [] }).toString();
116
+ }
117
+ const colWidth = full ? Number.POSITIVE_INFINITY : computeColumnWidth(keys.length, width);
118
+ const table = new Table({
119
+ head: full ? [...keys] : keys.map((k) => truncate(k, colWidth)),
120
+ });
121
+ for (const row of data) {
122
+ table.push(keys.map((key) => {
123
+ const formatted = formatCell(row[key]);
124
+ return full ? formatted : truncate(formatted, colWidth);
125
+ }));
126
+ }
127
+ return table.toString();
128
+ };
129
+ export const renderTable = (input, stream) => {
130
+ const text = input.kind === 'single' ? renderSingle(input) : renderCollection(input);
131
+ stream.write(`${text}\n`);
132
+ };
133
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/utils/output/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface TextInput {
2
+ readonly data: Readonly<Record<string, unknown>>;
3
+ }
4
+ export declare const renderText: (input: TextInput, stream: NodeJS.WritableStream) => void;
5
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/utils/output/text.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,UAAU,GACrB,OAAO,SAAS,EAChB,QAAQ,MAAM,CAAC,cAAc,KAC5B,IAIF,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Text renderer for single-resource commands (`cli-design.md` §3.2,
3
+ * §4 DoD #8).
4
+ *
5
+ * Flat `key: value` dump — one line per top-level field. Nested
6
+ * objects (column values, etc.) get JSON-stringified inline since
7
+ * a deeper indent-tree usually hurts more than helps for typical
8
+ * `monday <noun> get` callers reading in a terminal. Tables are the
9
+ * shape humans want for collections; text is the fallback for
10
+ * single-resource calls when JSON looks too noisy.
11
+ */
12
+ const formatValue = (value) => {
13
+ if (value === null) {
14
+ return 'null';
15
+ }
16
+ if (value === undefined) {
17
+ return '';
18
+ }
19
+ if (typeof value === 'string') {
20
+ return value;
21
+ }
22
+ if (typeof value === 'number' || typeof value === 'boolean') {
23
+ return String(value);
24
+ }
25
+ return JSON.stringify(value);
26
+ };
27
+ export const renderText = (input, stream) => {
28
+ for (const [key, value] of Object.entries(input.data)) {
29
+ stream.write(`${key}: ${formatValue(value)}\n`);
30
+ }
31
+ };
32
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/utils/output/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE;IAC7C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAgB,EAChB,MAA6B,EACvB,EAAE;IACR,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Parse-boundary helper (R18).
3
+ *
4
+ * Per `.claude/rules/validation.md` "Never bubble raw ZodError out of
5
+ * a parse boundary": a raw `ZodError` reaching the runner's catch-all
6
+ * does map to `internal_error` (right semantic code) but loses the
7
+ * `details.issues` array — agents debugging a malformed Monday
8
+ * response see only the bare message. Wrapping every parse boundary
9
+ * with `safeParse` + `ApiError(internal_error)` carrying
10
+ * `details.issues` keeps the failing field path visible in the
11
+ * envelope.
12
+ *
13
+ * R17 fixed `userByEmail`'s parse boundary; the M5a-closing dry-run
14
+ * commit extended the same pattern to its `rawItemSchema.parse`
15
+ * boundary. R18 sweeps the remaining ZodError surfaces in:
16
+ * - `api/board-metadata.ts` (live-fetch `responseSchema.parse` +
17
+ * per-board `boardMetadataSchema.parse`);
18
+ * - `api/item-helpers.ts` (the new `parseRawItem` helper that the
19
+ * four item commands consume);
20
+ * - `commands/emit.ts` (`schema.parse` drift catch).
21
+ *
22
+ * Cache-read parse callbacks (`board-metadata.ts parseCacheEntry`,
23
+ * `resolvers.ts readDirectoryCache`) intentionally swallow ZodError
24
+ * via the surrounding cache-miss try/catch — a corrupt cache file
25
+ * is treated as a miss and a live fetch follows. Wrapping there
26
+ * would not change behaviour; left as-is to keep the surface narrow.
27
+ */
28
+ import type { z } from 'zod';
29
+ export interface WrapZodErrorOptions {
30
+ /**
31
+ * Free-form context — populates the error message and lands on
32
+ * `details` so agents see the failing operation. Keep short; the
33
+ * `issues` array carries the per-field detail.
34
+ */
35
+ readonly context: string;
36
+ /** Optional `details` extras merged alongside `issues`. */
37
+ readonly details?: Readonly<Record<string, unknown>>;
38
+ /** Override hint text. Default points at "Monday response shape drift / schema mismatch". */
39
+ readonly hint?: string;
40
+ }
41
+ /**
42
+ * Returns the parsed value when `result.success` is true; otherwise
43
+ * throws a typed `ApiError(internal_error)` carrying
44
+ * `details.issues` (path + message + zod code per failing field).
45
+ *
46
+ * Use at every parse boundary that consumes data from outside the
47
+ * compiled bundle (live API responses, freshly-projected types
48
+ * returned from action bodies, on-disk JSON). Cache parses
49
+ * deliberately don't use this — they fall through to a live fetch
50
+ * on parse failure rather than surfacing the drift.
51
+ */
52
+ export declare const unwrapOrThrow: <T>(result: z.ZodSafeParseResult<T>, options: WrapZodErrorOptions) => T;
53
+ //# sourceMappingURL=parse-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-boundary.d.ts","sourceRoot":"","sources":["../../src/utils/parse-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAC/B,SAAS,mBAAmB,KAC3B,CAyBF,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Parse-boundary helper (R18).
3
+ *
4
+ * Per `.claude/rules/validation.md` "Never bubble raw ZodError out of
5
+ * a parse boundary": a raw `ZodError` reaching the runner's catch-all
6
+ * does map to `internal_error` (right semantic code) but loses the
7
+ * `details.issues` array — agents debugging a malformed Monday
8
+ * response see only the bare message. Wrapping every parse boundary
9
+ * with `safeParse` + `ApiError(internal_error)` carrying
10
+ * `details.issues` keeps the failing field path visible in the
11
+ * envelope.
12
+ *
13
+ * R17 fixed `userByEmail`'s parse boundary; the M5a-closing dry-run
14
+ * commit extended the same pattern to its `rawItemSchema.parse`
15
+ * boundary. R18 sweeps the remaining ZodError surfaces in:
16
+ * - `api/board-metadata.ts` (live-fetch `responseSchema.parse` +
17
+ * per-board `boardMetadataSchema.parse`);
18
+ * - `api/item-helpers.ts` (the new `parseRawItem` helper that the
19
+ * four item commands consume);
20
+ * - `commands/emit.ts` (`schema.parse` drift catch).
21
+ *
22
+ * Cache-read parse callbacks (`board-metadata.ts parseCacheEntry`,
23
+ * `resolvers.ts readDirectoryCache`) intentionally swallow ZodError
24
+ * via the surrounding cache-miss try/catch — a corrupt cache file
25
+ * is treated as a miss and a live fetch follows. Wrapping there
26
+ * would not change behaviour; left as-is to keep the surface narrow.
27
+ */
28
+ import { ApiError } from './errors.js';
29
+ /**
30
+ * Returns the parsed value when `result.success` is true; otherwise
31
+ * throws a typed `ApiError(internal_error)` carrying
32
+ * `details.issues` (path + message + zod code per failing field).
33
+ *
34
+ * Use at every parse boundary that consumes data from outside the
35
+ * compiled bundle (live API responses, freshly-projected types
36
+ * returned from action bodies, on-disk JSON). Cache parses
37
+ * deliberately don't use this — they fall through to a live fetch
38
+ * on parse failure rather than surfacing the drift.
39
+ */
40
+ export const unwrapOrThrow = (result, options) => {
41
+ if (result.success)
42
+ return result.data;
43
+ const issues = result.error.issues.map((i) => ({
44
+ path: i.path.join('.'),
45
+ message: i.message,
46
+ code: i.code,
47
+ }));
48
+ const hint = options.hint ??
49
+ 'this is a data-integrity error in Monday\'s response (or a ' +
50
+ 'schema drift); verify the response shape and update the ' +
51
+ 'schema if Monday\'s contract has changed.';
52
+ throw new ApiError('internal_error', `${options.context} — schema rejected the payload at ` +
53
+ `${String(issues.length)} issue${issues.length === 1 ? '' : 's'}.`, {
54
+ cause: result.error,
55
+ details: {
56
+ ...(options.details ?? {}),
57
+ issues,
58
+ hint,
59
+ },
60
+ });
61
+ };
62
+ //# sourceMappingURL=parse-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-boundary.js","sourceRoot":"","sources":["../../src/utils/parse-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAgBvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAA+B,EAC/B,OAA4B,EACzB,EAAE;IACL,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IACJ,MAAM,IAAI,GACR,OAAO,CAAC,IAAI;QACZ,6DAA6D;YAC3D,0DAA0D;YAC1D,2CAA2C,CAAC;IAChD,MAAM,IAAI,QAAQ,CAChB,gBAAgB,EAChB,GAAG,OAAO,CAAC,OAAO,oCAAoC;QACpD,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EACpE;QACE,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE;YACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1B,MAAM;YACN,IAAI;SACL;KACF,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Deep-clone-and-redact helper.
3
+ *
4
+ * The CLI holds a Monday API token with the user's full account
5
+ * permissions; the security rules in `.claude/rules/security.md`
6
+ * forbid that token appearing in *any* emitted byte — log lines,
7
+ * error messages, debug payloads, JSON envelopes. Every output
8
+ * path funnels through this function.
9
+ *
10
+ * Two independent layers (a key-based filter alone is not enough —
11
+ * Codex review §1 caught this gap):
12
+ *
13
+ * - **Key-based filter.** Values under sensitive keys (`apiToken`,
14
+ * `Authorization`, `MONDAY_API_TOKEN`, plus a generic
15
+ * `(token|secret|password|api[-_]?key)` regex) are replaced
16
+ * wholesale.
17
+ * - **Value-scanning filter.** When the caller provides a `secrets`
18
+ * list (typically the literal Monday API token loaded at startup),
19
+ * every string in the tree is scanned and any occurrence of any
20
+ * listed secret is replaced with the placeholder. This catches
21
+ * `Error.message`, `Error.stack`, fetch URLs, debug payloads —
22
+ * anywhere a token could land outside a sensitively-named key.
23
+ *
24
+ * Circular references are tracked via a `WeakSet` and replaced
25
+ * with a `[Circular]` marker — never the original value, never a
26
+ * thrown error that could leak in a stack trace.
27
+ */
28
+ export interface RedactOptions {
29
+ /** Extra exact-match key names to redact (case-insensitive). */
30
+ readonly extraKeys?: readonly string[];
31
+ /** Additional regex applied to keys (case-insensitive recommended). */
32
+ readonly extraPattern?: RegExp;
33
+ /** Marker substituted in place of the redacted value. */
34
+ readonly placeholder?: string;
35
+ /**
36
+ * Literal secret values to scrub from any string anywhere in the
37
+ * tree. Typically the loaded Monday API token; the runner threads
38
+ * it through so a token landing in `Error.message` or a fetch URL
39
+ * still gets redacted before emit. Entries shorter than 8 chars
40
+ * are ignored (false-positive risk).
41
+ */
42
+ readonly secrets?: readonly string[];
43
+ }
44
+ /**
45
+ * Deep-clone `value`, replacing values under sensitive keys with
46
+ * `[REDACTED]` and any literal secrets in `options.secrets` with
47
+ * the same placeholder. The input is never mutated. Circular
48
+ * references resolve to `[Circular]`. Returns `unknown` because the
49
+ * redaction step erases type information about which keys were
50
+ * present — callers cast at the consumption point if they know the
51
+ * shape.
52
+ */
53
+ export declare const redact: (value: unknown, options?: RedactOptions) => unknown;
54
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/utils/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA+BH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AA0GD;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,EAAE,UAAS,aAAkB,KAAG,OASpE,CAAC"}