monday-cli 0.2.0 → 0.3.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 (418) hide show
  1. package/CHANGELOG.md +324 -2
  2. package/README.md +128 -30
  3. package/dist/api/board-favorites.d.ts +329 -0
  4. package/dist/api/board-favorites.d.ts.map +1 -0
  5. package/dist/api/board-favorites.js +353 -0
  6. package/dist/api/board-favorites.js.map +1 -0
  7. package/dist/api/board-mutation-result.d.ts +9 -5
  8. package/dist/api/board-mutation-result.d.ts.map +1 -1
  9. package/dist/api/board-mutation-result.js +9 -5
  10. package/dist/api/board-mutation-result.js.map +1 -1
  11. package/dist/api/board-relation-validation.d.ts +161 -0
  12. package/dist/api/board-relation-validation.d.ts.map +1 -0
  13. package/dist/api/board-relation-validation.js +317 -0
  14. package/dist/api/board-relation-validation.js.map +1 -0
  15. package/dist/api/cache.d.ts +14 -5
  16. package/dist/api/cache.d.ts.map +1 -1
  17. package/dist/api/cache.js +8 -10
  18. package/dist/api/cache.js.map +1 -1
  19. package/dist/api/column-mapping.js +2 -2
  20. package/dist/api/column-mapping.js.map +1 -1
  21. package/dist/api/column-mutation-result.d.ts +9 -5
  22. package/dist/api/column-mutation-result.d.ts.map +1 -1
  23. package/dist/api/column-mutation-result.js +9 -5
  24. package/dist/api/column-mutation-result.js.map +1 -1
  25. package/dist/api/column-types.d.ts +26 -7
  26. package/dist/api/column-types.d.ts.map +1 -1
  27. package/dist/api/column-types.js +42 -3
  28. package/dist/api/column-types.js.map +1 -1
  29. package/dist/api/column-values.d.ts +228 -31
  30. package/dist/api/column-values.d.ts.map +1 -1
  31. package/dist/api/column-values.js +551 -124
  32. package/dist/api/column-values.js.map +1 -1
  33. package/dist/api/cross-board-search.d.ts +501 -0
  34. package/dist/api/cross-board-search.d.ts.map +1 -0
  35. package/dist/api/cross-board-search.js +547 -0
  36. package/dist/api/cross-board-search.js.map +1 -0
  37. package/dist/api/dev-conventions.d.ts +1038 -0
  38. package/dist/api/dev-conventions.d.ts.map +1 -0
  39. package/dist/api/dev-conventions.js +1556 -0
  40. package/dist/api/dev-conventions.js.map +1 -0
  41. package/dist/api/dry-run.d.ts +32 -5
  42. package/dist/api/dry-run.d.ts.map +1 -1
  43. package/dist/api/dry-run.js +149 -32
  44. package/dist/api/dry-run.js.map +1 -1
  45. package/dist/api/errors.d.ts.map +1 -1
  46. package/dist/api/errors.js +28 -7
  47. package/dist/api/errors.js.map +1 -1
  48. package/dist/api/group-mutation-result.d.ts +9 -5
  49. package/dist/api/group-mutation-result.d.ts.map +1 -1
  50. package/dist/api/group-mutation-result.js +9 -5
  51. package/dist/api/group-mutation-result.js.map +1 -1
  52. package/dist/api/item-history-projection.d.ts +919 -0
  53. package/dist/api/item-history-projection.d.ts.map +1 -0
  54. package/dist/api/item-history-projection.js +1104 -0
  55. package/dist/api/item-history-projection.js.map +1 -0
  56. package/dist/api/item-mutation-execute.d.ts +82 -0
  57. package/dist/api/item-mutation-execute.d.ts.map +1 -0
  58. package/dist/api/item-mutation-execute.js +199 -0
  59. package/dist/api/item-mutation-execute.js.map +1 -0
  60. package/dist/api/notifications.d.ts +156 -0
  61. package/dist/api/notifications.d.ts.map +1 -0
  62. package/dist/api/notifications.js +215 -0
  63. package/dist/api/notifications.js.map +1 -0
  64. package/dist/api/oauth-test-helper.d.ts +64 -0
  65. package/dist/api/oauth-test-helper.d.ts.map +1 -0
  66. package/dist/api/oauth-test-helper.js +179 -0
  67. package/dist/api/oauth-test-helper.js.map +1 -0
  68. package/dist/api/oauth.d.ts +198 -0
  69. package/dist/api/oauth.d.ts.map +1 -0
  70. package/dist/api/oauth.js +471 -0
  71. package/dist/api/oauth.js.map +1 -0
  72. package/dist/api/partial-success-bulk.d.ts +422 -0
  73. package/dist/api/partial-success-bulk.d.ts.map +1 -0
  74. package/dist/api/partial-success-bulk.js +378 -0
  75. package/dist/api/partial-success-bulk.js.map +1 -0
  76. package/dist/api/people.d.ts +54 -1
  77. package/dist/api/people.d.ts.map +1 -1
  78. package/dist/api/people.js +27 -3
  79. package/dist/api/people.js.map +1 -1
  80. package/dist/api/probes.d.ts +487 -0
  81. package/dist/api/probes.d.ts.map +1 -0
  82. package/dist/api/probes.js +881 -0
  83. package/dist/api/probes.js.map +1 -0
  84. package/dist/api/raw-document.d.ts.map +1 -1
  85. package/dist/api/raw-document.js +2 -2
  86. package/dist/api/raw-document.js.map +1 -1
  87. package/dist/api/raw-write.d.ts.map +1 -1
  88. package/dist/api/raw-write.js +11 -3
  89. package/dist/api/raw-write.js.map +1 -1
  90. package/dist/api/resolution-context.d.ts +23 -11
  91. package/dist/api/resolution-context.d.ts.map +1 -1
  92. package/dist/api/resolution-context.js +53 -12
  93. package/dist/api/resolution-context.js.map +1 -1
  94. package/dist/api/resolution-pass.d.ts +30 -1
  95. package/dist/api/resolution-pass.d.ts.map +1 -1
  96. package/dist/api/resolution-pass.js +36 -1
  97. package/dist/api/resolution-pass.js.map +1 -1
  98. package/dist/api/resolve-client.d.ts +11 -0
  99. package/dist/api/resolve-client.d.ts.map +1 -1
  100. package/dist/api/resolve-client.js +1 -1
  101. package/dist/api/resolve-client.js.map +1 -1
  102. package/dist/api/response-root.d.ts +92 -46
  103. package/dist/api/response-root.d.ts.map +1 -1
  104. package/dist/api/response-root.js +93 -41
  105. package/dist/api/response-root.js.map +1 -1
  106. package/dist/api/tag-directory.d.ts +154 -0
  107. package/dist/api/tag-directory.d.ts.map +1 -0
  108. package/dist/api/tag-directory.js +325 -0
  109. package/dist/api/tag-directory.js.map +1 -0
  110. package/dist/api/time-tracking.d.ts +165 -0
  111. package/dist/api/time-tracking.d.ts.map +1 -0
  112. package/dist/api/time-tracking.js +135 -0
  113. package/dist/api/time-tracking.js.map +1 -0
  114. package/dist/api/transport.js +3 -3
  115. package/dist/api/transport.js.map +1 -1
  116. package/dist/api/usage.d.ts +190 -0
  117. package/dist/api/usage.d.ts.map +1 -0
  118. package/dist/api/usage.js +194 -0
  119. package/dist/api/usage.js.map +1 -0
  120. package/dist/api/users-fan-out-mutation.d.ts.map +1 -1
  121. package/dist/api/users-fan-out-mutation.js +10 -5
  122. package/dist/api/users-fan-out-mutation.js.map +1 -1
  123. package/dist/api/webhooks.d.ts +357 -0
  124. package/dist/api/webhooks.d.ts.map +1 -0
  125. package/dist/api/webhooks.js +333 -0
  126. package/dist/api/webhooks.js.map +1 -0
  127. package/dist/cli/envelope-out.d.ts +18 -1
  128. package/dist/cli/envelope-out.d.ts.map +1 -1
  129. package/dist/cli/envelope-out.js +16 -2
  130. package/dist/cli/envelope-out.js.map +1 -1
  131. package/dist/cli/program.d.ts.map +1 -1
  132. package/dist/cli/program.js +120 -1
  133. package/dist/cli/program.js.map +1 -1
  134. package/dist/cli/run.d.ts +12 -0
  135. package/dist/cli/run.d.ts.map +1 -1
  136. package/dist/cli/run.js +2 -0
  137. package/dist/cli/run.js.map +1 -1
  138. package/dist/commands/account/tags.d.ts +37 -0
  139. package/dist/commands/account/tags.d.ts.map +1 -0
  140. package/dist/commands/account/tags.js +84 -0
  141. package/dist/commands/account/tags.js.map +1 -0
  142. package/dist/commands/auth/login.d.ts +14 -0
  143. package/dist/commands/auth/login.d.ts.map +1 -0
  144. package/dist/commands/auth/login.js +314 -0
  145. package/dist/commands/auth/login.js.map +1 -0
  146. package/dist/commands/auth/logout.d.ts +28 -0
  147. package/dist/commands/auth/logout.d.ts.map +1 -0
  148. package/dist/commands/auth/logout.js +94 -0
  149. package/dist/commands/auth/logout.js.map +1 -0
  150. package/dist/commands/board/archive.d.ts.map +1 -1
  151. package/dist/commands/board/archive.js +14 -14
  152. package/dist/commands/board/archive.js.map +1 -1
  153. package/dist/commands/board/column-create.d.ts +3 -3
  154. package/dist/commands/board/column-create.d.ts.map +1 -1
  155. package/dist/commands/board/column-create.js +52 -45
  156. package/dist/commands/board/column-create.js.map +1 -1
  157. package/dist/commands/board/column-delete.d.ts.map +1 -1
  158. package/dist/commands/board/column-delete.js +15 -16
  159. package/dist/commands/board/column-delete.js.map +1 -1
  160. package/dist/commands/board/column-update.d.ts.map +1 -1
  161. package/dist/commands/board/column-update.js +23 -22
  162. package/dist/commands/board/column-update.js.map +1 -1
  163. package/dist/commands/board/create.d.ts.map +1 -1
  164. package/dist/commands/board/create.js +14 -17
  165. package/dist/commands/board/create.js.map +1 -1
  166. package/dist/commands/board/delete.d.ts.map +1 -1
  167. package/dist/commands/board/delete.js +12 -15
  168. package/dist/commands/board/delete.js.map +1 -1
  169. package/dist/commands/board/describe.d.ts.map +1 -1
  170. package/dist/commands/board/describe.js +30 -0
  171. package/dist/commands/board/describe.js.map +1 -1
  172. package/dist/commands/board/duplicate.d.ts.map +1 -1
  173. package/dist/commands/board/duplicate.js +12 -13
  174. package/dist/commands/board/duplicate.js.map +1 -1
  175. package/dist/commands/board/favorites.d.ts +33 -0
  176. package/dist/commands/board/favorites.d.ts.map +1 -0
  177. package/dist/commands/board/favorites.js +74 -0
  178. package/dist/commands/board/favorites.js.map +1 -0
  179. package/dist/commands/board/find.d.ts +1 -1
  180. package/dist/commands/board/group-archive.d.ts.map +1 -1
  181. package/dist/commands/board/group-archive.js +12 -16
  182. package/dist/commands/board/group-archive.js.map +1 -1
  183. package/dist/commands/board/group-create.d.ts.map +1 -1
  184. package/dist/commands/board/group-create.js +9 -19
  185. package/dist/commands/board/group-create.js.map +1 -1
  186. package/dist/commands/board/group-delete.d.ts.map +1 -1
  187. package/dist/commands/board/group-delete.js +12 -16
  188. package/dist/commands/board/group-delete.js.map +1 -1
  189. package/dist/commands/board/group-duplicate.d.ts.map +1 -1
  190. package/dist/commands/board/group-duplicate.js +12 -16
  191. package/dist/commands/board/group-duplicate.js.map +1 -1
  192. package/dist/commands/board/group-update.d.ts.map +1 -1
  193. package/dist/commands/board/group-update.js +12 -11
  194. package/dist/commands/board/group-update.js.map +1 -1
  195. package/dist/commands/board/list.d.ts +1 -1
  196. package/dist/commands/board/update.d.ts.map +1 -1
  197. package/dist/commands/board/update.js +16 -11
  198. package/dist/commands/board/update.js.map +1 -1
  199. package/dist/commands/cache/list.d.ts +2 -0
  200. package/dist/commands/cache/list.d.ts.map +1 -1
  201. package/dist/commands/cache/list.js +2 -2
  202. package/dist/commands/cache/list.js.map +1 -1
  203. package/dist/commands/dev/_shared.d.ts +40 -0
  204. package/dist/commands/dev/_shared.d.ts.map +1 -0
  205. package/dist/commands/dev/_shared.js +104 -0
  206. package/dist/commands/dev/_shared.js.map +1 -0
  207. package/dist/commands/dev/configure.d.ts +36 -0
  208. package/dist/commands/dev/configure.d.ts.map +1 -0
  209. package/dist/commands/dev/configure.js +145 -0
  210. package/dist/commands/dev/configure.js.map +1 -0
  211. package/dist/commands/dev/discover.d.ts +34 -0
  212. package/dist/commands/dev/discover.d.ts.map +1 -0
  213. package/dist/commands/dev/discover.js +117 -0
  214. package/dist/commands/dev/discover.js.map +1 -0
  215. package/dist/commands/dev/doctor.d.ts +39 -0
  216. package/dist/commands/dev/doctor.d.ts.map +1 -0
  217. package/dist/commands/dev/doctor.js +91 -0
  218. package/dist/commands/dev/doctor.js.map +1 -0
  219. package/dist/commands/dev/epic/items.d.ts +24 -0
  220. package/dist/commands/dev/epic/items.d.ts.map +1 -0
  221. package/dist/commands/dev/epic/items.js +103 -0
  222. package/dist/commands/dev/epic/items.js.map +1 -0
  223. package/dist/commands/dev/epic/list.d.ts +36 -0
  224. package/dist/commands/dev/epic/list.d.ts.map +1 -0
  225. package/dist/commands/dev/epic/list.js +120 -0
  226. package/dist/commands/dev/epic/list.js.map +1 -0
  227. package/dist/commands/dev/release/list.d.ts +21 -0
  228. package/dist/commands/dev/release/list.d.ts.map +1 -0
  229. package/dist/commands/dev/release/list.js +73 -0
  230. package/dist/commands/dev/release/list.js.map +1 -0
  231. package/dist/commands/dev/sprint/current.d.ts +24 -0
  232. package/dist/commands/dev/sprint/current.d.ts.map +1 -0
  233. package/dist/commands/dev/sprint/current.js +90 -0
  234. package/dist/commands/dev/sprint/current.js.map +1 -0
  235. package/dist/commands/dev/sprint/items.d.ts +34 -0
  236. package/dist/commands/dev/sprint/items.d.ts.map +1 -0
  237. package/dist/commands/dev/sprint/items.js +118 -0
  238. package/dist/commands/dev/sprint/items.js.map +1 -0
  239. package/dist/commands/dev/sprint/list.d.ts +41 -0
  240. package/dist/commands/dev/sprint/list.d.ts.map +1 -0
  241. package/dist/commands/dev/sprint/list.js +104 -0
  242. package/dist/commands/dev/sprint/list.js.map +1 -0
  243. package/dist/commands/dev/task/block.d.ts +29 -0
  244. package/dist/commands/dev/task/block.d.ts.map +1 -0
  245. package/dist/commands/dev/task/block.js +106 -0
  246. package/dist/commands/dev/task/block.js.map +1 -0
  247. package/dist/commands/dev/task/done.d.ts +30 -0
  248. package/dist/commands/dev/task/done.d.ts.map +1 -0
  249. package/dist/commands/dev/task/done.js +113 -0
  250. package/dist/commands/dev/task/done.js.map +1 -0
  251. package/dist/commands/dev/task/list.d.ts +42 -0
  252. package/dist/commands/dev/task/list.d.ts.map +1 -0
  253. package/dist/commands/dev/task/list.js +227 -0
  254. package/dist/commands/dev/task/list.js.map +1 -0
  255. package/dist/commands/dev/task/start.d.ts +29 -0
  256. package/dist/commands/dev/task/start.d.ts.map +1 -0
  257. package/dist/commands/dev/task/start.js +90 -0
  258. package/dist/commands/dev/task/start.js.map +1 -0
  259. package/dist/commands/emit.d.ts.map +1 -1
  260. package/dist/commands/emit.js +5 -3
  261. package/dist/commands/emit.js.map +1 -1
  262. package/dist/commands/index.d.ts.map +1 -1
  263. package/dist/commands/index.js +95 -0
  264. package/dist/commands/index.js.map +1 -1
  265. package/dist/commands/item/archive.d.ts.map +1 -1
  266. package/dist/commands/item/archive.js +11 -0
  267. package/dist/commands/item/archive.js.map +1 -1
  268. package/dist/commands/item/clear.d.ts.map +1 -1
  269. package/dist/commands/item/clear.js +15 -0
  270. package/dist/commands/item/clear.js.map +1 -1
  271. package/dist/commands/item/create.d.ts.map +1 -1
  272. package/dist/commands/item/create.js +41 -8
  273. package/dist/commands/item/create.js.map +1 -1
  274. package/dist/commands/item/delete.d.ts.map +1 -1
  275. package/dist/commands/item/delete.js +11 -0
  276. package/dist/commands/item/delete.js.map +1 -1
  277. package/dist/commands/item/duplicate.d.ts.map +1 -1
  278. package/dist/commands/item/duplicate.js +12 -0
  279. package/dist/commands/item/duplicate.js.map +1 -1
  280. package/dist/commands/item/history.d.ts +60 -0
  281. package/dist/commands/item/history.d.ts.map +1 -0
  282. package/dist/commands/item/history.js +309 -0
  283. package/dist/commands/item/history.js.map +1 -0
  284. package/dist/commands/item/list.d.ts.map +1 -1
  285. package/dist/commands/item/list.js +16 -13
  286. package/dist/commands/item/list.js.map +1 -1
  287. package/dist/commands/item/move.d.ts.map +1 -1
  288. package/dist/commands/item/move.js +41 -7
  289. package/dist/commands/item/move.js.map +1 -1
  290. package/dist/commands/item/search.d.ts +99 -15
  291. package/dist/commands/item/search.d.ts.map +1 -1
  292. package/dist/commands/item/search.js +480 -36
  293. package/dist/commands/item/search.js.map +1 -1
  294. package/dist/commands/item/set.d.ts.map +1 -1
  295. package/dist/commands/item/set.js +52 -8
  296. package/dist/commands/item/set.js.map +1 -1
  297. package/dist/commands/item/time-track/start.d.ts +61 -0
  298. package/dist/commands/item/time-track/start.d.ts.map +1 -0
  299. package/dist/commands/item/time-track/start.js +138 -0
  300. package/dist/commands/item/time-track/start.js.map +1 -0
  301. package/dist/commands/item/time-track/stop.d.ts +32 -0
  302. package/dist/commands/item/time-track/stop.d.ts.map +1 -0
  303. package/dist/commands/item/time-track/stop.js +97 -0
  304. package/dist/commands/item/time-track/stop.js.map +1 -0
  305. package/dist/commands/item/update.d.ts +1 -0
  306. package/dist/commands/item/update.d.ts.map +1 -1
  307. package/dist/commands/item/update.js +103 -113
  308. package/dist/commands/item/update.js.map +1 -1
  309. package/dist/commands/item/upsert.d.ts.map +1 -1
  310. package/dist/commands/item/upsert.js +48 -1
  311. package/dist/commands/item/upsert.js.map +1 -1
  312. package/dist/commands/notification/send.d.ts +60 -0
  313. package/dist/commands/notification/send.d.ts.map +1 -0
  314. package/dist/commands/notification/send.js +147 -0
  315. package/dist/commands/notification/send.js.map +1 -0
  316. package/dist/commands/parse-argv.d.ts.map +1 -1
  317. package/dist/commands/parse-argv.js +14 -4
  318. package/dist/commands/parse-argv.js.map +1 -1
  319. package/dist/commands/raw/index.d.ts.map +1 -1
  320. package/dist/commands/raw/index.js +13 -15
  321. package/dist/commands/raw/index.js.map +1 -1
  322. package/dist/commands/run-by-id-lookup.d.ts.map +1 -1
  323. package/dist/commands/run-by-id-lookup.js +2 -2
  324. package/dist/commands/run-by-id-lookup.js.map +1 -1
  325. package/dist/commands/schema/index.d.ts +2 -0
  326. package/dist/commands/schema/index.d.ts.map +1 -1
  327. package/dist/commands/status.d.ts +120 -0
  328. package/dist/commands/status.d.ts.map +1 -0
  329. package/dist/commands/status.js +365 -0
  330. package/dist/commands/status.js.map +1 -0
  331. package/dist/commands/update/body-source.d.ts.map +1 -1
  332. package/dist/commands/update/body-source.js +2 -2
  333. package/dist/commands/update/body-source.js.map +1 -1
  334. package/dist/commands/update/create.d.ts +2 -3
  335. package/dist/commands/update/create.d.ts.map +1 -1
  336. package/dist/commands/update/create.js +15 -3
  337. package/dist/commands/update/create.js.map +1 -1
  338. package/dist/commands/update/delete.d.ts.map +1 -1
  339. package/dist/commands/update/delete.js +11 -0
  340. package/dist/commands/update/delete.js.map +1 -1
  341. package/dist/commands/update/edit.d.ts.map +1 -1
  342. package/dist/commands/update/edit.js +11 -0
  343. package/dist/commands/update/edit.js.map +1 -1
  344. package/dist/commands/update/list.d.ts.map +1 -1
  345. package/dist/commands/update/list.js +15 -12
  346. package/dist/commands/update/list.js.map +1 -1
  347. package/dist/commands/update/reply.d.ts.map +1 -1
  348. package/dist/commands/update/reply.js +11 -0
  349. package/dist/commands/update/reply.js.map +1 -1
  350. package/dist/commands/update/toggle.d.ts.map +1 -1
  351. package/dist/commands/update/toggle.js +13 -0
  352. package/dist/commands/update/toggle.js.map +1 -1
  353. package/dist/commands/usage.d.ts +58 -0
  354. package/dist/commands/usage.d.ts.map +1 -0
  355. package/dist/commands/usage.js +94 -0
  356. package/dist/commands/usage.js.map +1 -0
  357. package/dist/commands/webhook/create.d.ts +74 -0
  358. package/dist/commands/webhook/create.d.ts.map +1 -0
  359. package/dist/commands/webhook/create.js +150 -0
  360. package/dist/commands/webhook/create.js.map +1 -0
  361. package/dist/commands/webhook/delete.d.ts +46 -0
  362. package/dist/commands/webhook/delete.d.ts.map +1 -0
  363. package/dist/commands/webhook/delete.js +141 -0
  364. package/dist/commands/webhook/delete.js.map +1 -0
  365. package/dist/commands/webhook/list.d.ts +23 -0
  366. package/dist/commands/webhook/list.d.ts.map +1 -0
  367. package/dist/commands/webhook/list.js +68 -0
  368. package/dist/commands/webhook/list.js.map +1 -0
  369. package/dist/commands/workspace/create.d.ts.map +1 -1
  370. package/dist/commands/workspace/create.js +16 -0
  371. package/dist/commands/workspace/create.js.map +1 -1
  372. package/dist/commands/workspace/delete.d.ts.map +1 -1
  373. package/dist/commands/workspace/delete.js +13 -13
  374. package/dist/commands/workspace/delete.js.map +1 -1
  375. package/dist/commands/workspace/list.d.ts +1 -1
  376. package/dist/commands/workspace/update.d.ts.map +1 -1
  377. package/dist/commands/workspace/update.js +15 -15
  378. package/dist/commands/workspace/update.js.map +1 -1
  379. package/dist/config/credentials.d.ts +189 -0
  380. package/dist/config/credentials.d.ts.map +1 -0
  381. package/dist/config/credentials.js +300 -0
  382. package/dist/config/credentials.js.map +1 -0
  383. package/dist/config/profiles.d.ts +125 -0
  384. package/dist/config/profiles.d.ts.map +1 -0
  385. package/dist/config/profiles.js +227 -0
  386. package/dist/config/profiles.js.map +1 -0
  387. package/dist/types/global-flags.d.ts +1 -1
  388. package/dist/types/global-flags.d.ts.map +1 -1
  389. package/dist/types/global-flags.js +28 -16
  390. package/dist/types/global-flags.js.map +1 -1
  391. package/dist/types/ids.d.ts +2 -0
  392. package/dist/types/ids.d.ts.map +1 -1
  393. package/dist/types/ids.js +5 -3
  394. package/dist/types/ids.js.map +1 -1
  395. package/dist/utils/errors.d.ts +57 -3
  396. package/dist/utils/errors.d.ts.map +1 -1
  397. package/dist/utils/errors.js +69 -2
  398. package/dist/utils/errors.js.map +1 -1
  399. package/dist/utils/fs.d.ts +35 -0
  400. package/dist/utils/fs.d.ts.map +1 -0
  401. package/dist/utils/fs.js +36 -0
  402. package/dist/utils/fs.js.map +1 -0
  403. package/dist/utils/json.d.ts +60 -0
  404. package/dist/utils/json.d.ts.map +1 -0
  405. package/dist/utils/json.js +86 -0
  406. package/dist/utils/json.js.map +1 -0
  407. package/dist/utils/output/ndjson.d.ts +65 -3
  408. package/dist/utils/output/ndjson.d.ts.map +1 -1
  409. package/dist/utils/output/ndjson.js +21 -0
  410. package/dist/utils/output/ndjson.js.map +1 -1
  411. package/dist/utils/redact.d.ts.map +1 -1
  412. package/dist/utils/redact.js +31 -0
  413. package/dist/utils/redact.js.map +1 -1
  414. package/package.json +2 -1
  415. package/dist/commands/account/client-helper.d.ts +0 -37
  416. package/dist/commands/account/client-helper.d.ts.map +0 -1
  417. package/dist/commands/account/client-helper.js +0 -55
  418. package/dist/commands/account/client-helper.js.map +0 -1
@@ -44,6 +44,7 @@ import { parseArgv } from '../parse-argv.js';
44
44
  import { ApiError, UsageError } from '../../utils/errors.js';
45
45
  import { unwrapOrThrow } from '../../utils/parse-boundary.js';
46
46
  import { WORKSPACE_FIELDS_FRAGMENT, workspaceProjectionSchema, } from '../../api/workspace-projection.js';
47
+ import { assertResponseFieldPresent } from '../../api/response-root.js';
47
48
  const WORKSPACE_UPDATE_PREFLIGHT_QUERY = `
48
49
  query WorkspaceUpdatePreflight($ids: [ID!]) {
49
50
  workspaces(ids: $ids) {
@@ -196,21 +197,20 @@ export const workspaceUpdateCommand = {
196
197
  'verify the response shape and update responseSchema if ' +
197
198
  'Monday\'s contract has changed.',
198
199
  });
199
- // Codex M14 round-3 F1: distinguish "root key absent"
200
- // (schema-drift internal_error) from "value null"
201
- // (workspace missing not_found). Pre-fix, both landed
202
- // as not_found and agents couldn't tell a CLI/API contract
203
- // break from a normal resource absence.
204
- if (!('update_workspace' in data)) {
205
- throw new ApiError('internal_error', `Monday's WorkspaceUpdate response is missing the update_workspace root field`, {
206
- details: {
207
- workspace_id: parsed.workspaceId,
208
- hint: 'this is a schema-drift error in Monday\'s GraphQL ' +
209
- 'response; verify the mutation declaration and update ' +
210
- 'the response schema if Monday\'s contract has changed.',
211
- },
212
- });
213
- }
200
+ // R42 (post-v0.2 → v0.3 cleanup follow-up): consolidate the
201
+ // M14 round-3 F1 inline missing-key check onto the shared
202
+ // helper. Distinguishes "root key absent" (schema-drift
203
+ // internal_error) from "value null" (workspace missing
204
+ // not_found via projectUpdatedWorkspace). M14 workspace verbs
205
+ // were missed by the initial R42 sweep (the §22 sites list
206
+ // jumped M13 M15); folded in here.
207
+ assertResponseFieldPresent({
208
+ data,
209
+ key: 'update_workspace',
210
+ operationLabel: 'WorkspaceUpdate',
211
+ details: { workspace_id: parsed.workspaceId },
212
+ nullHandling: 'caller_handles',
213
+ });
214
214
  const projected = projectUpdatedWorkspace(data.update_workspace, parsed.workspaceId);
215
215
  emitMutation({
216
216
  ctx,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/workspace/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/workspace/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Credentials cache primitive for the v0.3-M21 `monday auth login` /
3
+ * `monday auth logout` verbs (cli-design §7.4 — closes Decision 3).
4
+ *
5
+ * **What this module owns.** The mode-`0600` per-profile credentials
6
+ * file at `~/.monday-cli/credentials`, read/write/delete primitives,
7
+ * and the per-profile token-source-order resolver
8
+ * (§7.4.1: credentials cache > `api_token_env` > `config_error`).
9
+ *
10
+ * **What this module does NOT own.** The credentials file shape is
11
+ * intentionally orthogonal to:
12
+ * - the OAuth wire flow (`src/api/oauth.ts`),
13
+ * - the TOML profile loader (`src/config/profiles.ts`),
14
+ * - the redaction layer (`src/utils/redact.ts`).
15
+ *
16
+ * **Mirrors `src/api/cache.ts writeJsonFile` verbatim** per cli-design
17
+ * §7.4.2. The R-candidate "secure-file primitive shared between cache
18
+ * + credentials" (v0.3-plan §22) flags consolidation when a third
19
+ * consumer lands; today's two-consumer state stays below threshold,
20
+ * so this module duplicates the disk-discipline shape rather than
21
+ * extracting it. The duplication is intentional and the §7.4.2
22
+ * "mirror verbatim" wording is the in-design backstop.
23
+ *
24
+ * **Disk discipline (§7.4.2):**
25
+ *
26
+ * 1. `mkdir({ recursive: true, mode: 0o700 })` + explicit `chmod
27
+ * 0o700` on the parent dir (advisory under umask on some
28
+ * platforms; mirrors `src/api/cache.ts`).
29
+ * 2. Atomic-replace via `writeFile(tmp, payload, { mode: 0o600 })`
30
+ * → `chmod(tmp, 0o600)` → `rename(tmp, final)`.
31
+ * 3. Read-time `fs.fstat`-against-open-descriptor permission check
32
+ * (`(stats.mode & 0o077) !== 0` → refuse, surface
33
+ * `config_error` with `details.path` + `details.hint`).
34
+ */
35
+ import { z } from 'zod';
36
+ /**
37
+ * File-mode constant for the credentials file. Mirrors
38
+ * `src/api/cache.ts CACHE_FILE_MODE`. The R-candidate consolidation
39
+ * (v0.3-plan §22) would re-export this from a shared `secure-file`
40
+ * primitive; the constant lives here for pre-flight to keep the two
41
+ * surfaces independent.
42
+ */
43
+ export declare const CREDENTIALS_FILE_MODE = 384;
44
+ /**
45
+ * Bitmask used to detect group/world readable bits on read. A non-
46
+ * zero result means the file is loose; the read path refuses to
47
+ * open it.
48
+ */
49
+ export declare const CREDENTIALS_INSECURE_BITS = 63;
50
+ /**
51
+ * Pinned at `"1"` for v0.3; reserved for a future migration if the
52
+ * per-profile shape grows incompatibly. Mirrors the cache module's
53
+ * `CACHE_SCHEMA_VERSION`.
54
+ */
55
+ export declare const CREDENTIALS_SCHEMA_VERSION = "1";
56
+ /** Filename under `~/.monday-cli/`. Pinned for HOME-scoping. */
57
+ export declare const CREDENTIALS_FILE_NAME = "credentials";
58
+ /** Parent directory under HOME. Pinned to match cli-design §7.4.2. */
59
+ export declare const CREDENTIALS_DIR_NAME = ".monday-cli";
60
+ /**
61
+ * Per-profile credentials entry per cli-design §7.4.1.
62
+ */
63
+ export declare const profileEntrySchema: z.ZodObject<{
64
+ access_token: z.ZodString;
65
+ obtained_at: z.ZodString;
66
+ expires_at: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
67
+ scopes: z.ZodArray<z.ZodString>;
68
+ account_id: z.ZodString;
69
+ }, z.core.$strict>;
70
+ export type ProfileEntry = z.infer<typeof profileEntrySchema>;
71
+ /**
72
+ * Top-level credentials file shape per cli-design §7.4.1.
73
+ *
74
+ * **`schema_version` pinned to literal `"1"`** so a future-version
75
+ * credentials file (e.g., `"2"` after a v0.4 schema change) fails
76
+ * parse-time at this security-bearing surface rather than passing
77
+ * through and getting reinterpreted under the v0.3 schema.
78
+ */
79
+ export declare const credentialsFileSchema: z.ZodObject<{
80
+ schema_version: z.ZodLiteral<"1">;
81
+ profiles: z.ZodRecord<z.ZodString, z.ZodObject<{
82
+ access_token: z.ZodString;
83
+ obtained_at: z.ZodString;
84
+ expires_at: z.ZodUnion<readonly [z.ZodString, z.ZodNull]>;
85
+ scopes: z.ZodArray<z.ZodString>;
86
+ account_id: z.ZodString;
87
+ }, z.core.$strict>>;
88
+ }, z.core.$strict>;
89
+ export type CredentialsFile = z.infer<typeof credentialsFileSchema>;
90
+ /**
91
+ * Discriminated union for the per-profile token source. Mirrors the
92
+ * §7.4.1 source order: `credentials cache > api_token_env >
93
+ * config_error`.
94
+ */
95
+ export type ProfileTokenSource = 'credentials_cache' | 'api_token_env';
96
+ export interface ResolvedProfileToken {
97
+ readonly token: string;
98
+ readonly source: ProfileTokenSource;
99
+ }
100
+ /**
101
+ * Common options object for every read/write helper — the `home`
102
+ * override exists so tests can drop a fixture file under a tmp dir
103
+ * without touching the real `~/.monday-cli/`. `env` mirrors the
104
+ * cache layer's existing test-isolation pattern.
105
+ */
106
+ export interface CredentialsRootOptions {
107
+ readonly env?: NodeJS.ProcessEnv;
108
+ readonly home?: string;
109
+ }
110
+ /**
111
+ * Inputs to {@link setProfileCredentials} — the read-modify-write
112
+ * convenience used by `monday auth login`. Decoupled from the raw
113
+ * `writeCredentials` so callers don't have to load-then-modify-then-
114
+ * write themselves; the helper handles the missing-file case (creates
115
+ * a fresh file with one profile) and the existing-file case (merges
116
+ * the entry into the existing profiles map).
117
+ */
118
+ export interface SetProfileCredentialsInputs {
119
+ readonly profileName: string;
120
+ readonly entry: ProfileEntry;
121
+ }
122
+ /**
123
+ * Resolves the absolute credentials-file path. Pure helper — does
124
+ * not touch the filesystem.
125
+ */
126
+ export declare const resolveCredentialsPath: (options?: CredentialsRootOptions) => string;
127
+ /**
128
+ * Reads the credentials file, parses it through
129
+ * {@link credentialsFileSchema}, and returns the parsed shape.
130
+ *
131
+ * Returns `undefined` when the file does not exist (typical first-
132
+ * run state). Throws `config_error` for every other failure mode
133
+ * (insecure mode, malformed JSON, schema mismatch).
134
+ */
135
+ export declare const readCredentials: (options?: CredentialsRootOptions) => Promise<CredentialsFile | undefined>;
136
+ /**
137
+ * Atomically writes the credentials file. Mirrors `src/api/cache.ts
138
+ * writeEntry` verbatim:
139
+ *
140
+ * 1. `mkdir({ recursive: true, mode: 0o700 })` + `chmod 0o700`.
141
+ * 2. `writeFile(tmpPath, payload, { mode: 0o600 })`.
142
+ * 3. `chmod(tmpPath, 0o600)` (re-applied because `writeFile`'s
143
+ * `mode` is advisory under umask).
144
+ * 4. `rename(tmpPath, finalPath)` (atomic on the same filesystem).
145
+ *
146
+ * Best-effort cleanup of `tmpPath` on any failure so a half-written
147
+ * `.tmp` doesn't accumulate.
148
+ */
149
+ export declare const writeCredentials: (file: CredentialsFile, options?: CredentialsRootOptions) => Promise<void>;
150
+ /**
151
+ * Read-modify-write convenience for `monday auth login`'s success
152
+ * path. Loads the existing file (or starts a fresh `{schema_version,
153
+ * profiles: {}}` if absent), inserts/replaces the named profile's
154
+ * entry, and writes the result back via {@link writeCredentials}.
155
+ */
156
+ export declare const setProfileCredentials: (inputs: SetProfileCredentialsInputs, options?: CredentialsRootOptions) => Promise<void>;
157
+ /**
158
+ * Idempotent profile delete for `monday auth logout`. Loads the
159
+ * file (no-op if file is absent), removes the named profile from
160
+ * `profiles`, writes the result back. When the post-delete
161
+ * `profiles` map is empty, **still writes
162
+ * `{schema_version, profiles: {}}`** rather than deleting the file
163
+ * outright (per cli-design §7.3.2 — keeps the schema-version pin
164
+ * discoverable + avoids a fresh-install vs all-logged-out
165
+ * ambiguity).
166
+ *
167
+ * Returns whether the named profile was present pre-delete — the
168
+ * caller surfaces this in the success envelope's `was_present`
169
+ * slot.
170
+ */
171
+ export declare const deleteProfileCredentials: (profileName: string, options?: CredentialsRootOptions) => Promise<{
172
+ readonly wasPresent: boolean;
173
+ }>;
174
+ /**
175
+ * Per-profile token-source resolver per cli-design §7.4.1 source
176
+ * order: credentials cache > `api_token_env` > `config_error`.
177
+ *
178
+ * The credentials cache wins over `api_token_env` because
179
+ * `monday auth login` is the explicit user action that wrote the
180
+ * cache; honouring it without requiring a config-file edit is the
181
+ * agent-ergonomic default. `monday auth logout --profile <name>`
182
+ * removes the cache entry, restoring the env-fallback path.
183
+ */
184
+ export interface ResolveProfileTokenInputs {
185
+ readonly profileName: string;
186
+ readonly apiTokenEnvName: string | undefined;
187
+ }
188
+ export declare const resolveProfileToken: (inputs: ResolveProfileTokenInputs, options?: CredentialsRootOptions) => Promise<ResolvedProfileToken>;
189
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAOH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,MAAQ,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,KAAQ,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AAEnD,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;kBAQpB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;kBAKvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAUD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAS,sBAA2B,KACnC,MAGF,CAAC;AAKF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAS,sBAA2B,KACnC,OAAO,CAAC,eAAe,GAAG,SAAS,CA8DrC,CAAC;AAoBF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,eAAe,EACrB,UAAS,sBAA2B,KACnC,OAAO,CAAC,IAAI,CA0Bd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,2BAA2B,EACnC,UAAS,sBAA2B,KACnC,OAAO,CAAC,IAAI,CAUd,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,EACnB,UAAS,sBAA2B,KACnC,OAAO,CAAC;IAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAqB1C,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,yBAAyB,EACjC,UAAS,sBAA2B,KACnC,OAAO,CAAC,oBAAoB,CA2B9B,CAAC"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * Credentials cache primitive for the v0.3-M21 `monday auth login` /
3
+ * `monday auth logout` verbs (cli-design §7.4 — closes Decision 3).
4
+ *
5
+ * **What this module owns.** The mode-`0600` per-profile credentials
6
+ * file at `~/.monday-cli/credentials`, read/write/delete primitives,
7
+ * and the per-profile token-source-order resolver
8
+ * (§7.4.1: credentials cache > `api_token_env` > `config_error`).
9
+ *
10
+ * **What this module does NOT own.** The credentials file shape is
11
+ * intentionally orthogonal to:
12
+ * - the OAuth wire flow (`src/api/oauth.ts`),
13
+ * - the TOML profile loader (`src/config/profiles.ts`),
14
+ * - the redaction layer (`src/utils/redact.ts`).
15
+ *
16
+ * **Mirrors `src/api/cache.ts writeJsonFile` verbatim** per cli-design
17
+ * §7.4.2. The R-candidate "secure-file primitive shared between cache
18
+ * + credentials" (v0.3-plan §22) flags consolidation when a third
19
+ * consumer lands; today's two-consumer state stays below threshold,
20
+ * so this module duplicates the disk-discipline shape rather than
21
+ * extracting it. The duplication is intentional and the §7.4.2
22
+ * "mirror verbatim" wording is the in-design backstop.
23
+ *
24
+ * **Disk discipline (§7.4.2):**
25
+ *
26
+ * 1. `mkdir({ recursive: true, mode: 0o700 })` + explicit `chmod
27
+ * 0o700` on the parent dir (advisory under umask on some
28
+ * platforms; mirrors `src/api/cache.ts`).
29
+ * 2. Atomic-replace via `writeFile(tmp, payload, { mode: 0o600 })`
30
+ * → `chmod(tmp, 0o600)` → `rename(tmp, final)`.
31
+ * 3. Read-time `fs.fstat`-against-open-descriptor permission check
32
+ * (`(stats.mode & 0o077) !== 0` → refuse, surface
33
+ * `config_error` with `details.path` + `details.hint`).
34
+ */
35
+ import { constants as fsConstants } from 'node:fs';
36
+ import { chmod, mkdir, open, rename, unlink, writeFile } from 'node:fs/promises';
37
+ import { homedir } from 'node:os';
38
+ import { join } from 'node:path';
39
+ import { randomUUID } from 'node:crypto';
40
+ import { z } from 'zod';
41
+ import { ConfigError, asError } from '../utils/errors.js';
42
+ import { formatMode, isENOENT } from '../utils/fs.js';
43
+ /**
44
+ * File-mode constant for the credentials file. Mirrors
45
+ * `src/api/cache.ts CACHE_FILE_MODE`. The R-candidate consolidation
46
+ * (v0.3-plan §22) would re-export this from a shared `secure-file`
47
+ * primitive; the constant lives here for pre-flight to keep the two
48
+ * surfaces independent.
49
+ */
50
+ export const CREDENTIALS_FILE_MODE = 0o600;
51
+ /**
52
+ * Bitmask used to detect group/world readable bits on read. A non-
53
+ * zero result means the file is loose; the read path refuses to
54
+ * open it.
55
+ */
56
+ export const CREDENTIALS_INSECURE_BITS = 0o077;
57
+ /**
58
+ * Pinned at `"1"` for v0.3; reserved for a future migration if the
59
+ * per-profile shape grows incompatibly. Mirrors the cache module's
60
+ * `CACHE_SCHEMA_VERSION`.
61
+ */
62
+ export const CREDENTIALS_SCHEMA_VERSION = '1';
63
+ /** Filename under `~/.monday-cli/`. Pinned for HOME-scoping. */
64
+ export const CREDENTIALS_FILE_NAME = 'credentials';
65
+ /** Parent directory under HOME. Pinned to match cli-design §7.4.2. */
66
+ export const CREDENTIALS_DIR_NAME = '.monday-cli';
67
+ /**
68
+ * Per-profile credentials entry per cli-design §7.4.1.
69
+ */
70
+ export const profileEntrySchema = z
71
+ .object({
72
+ access_token: z.string().min(1),
73
+ obtained_at: z.string().min(1),
74
+ expires_at: z.union([z.string(), z.null()]),
75
+ scopes: z.array(z.string()),
76
+ account_id: z.string().min(1),
77
+ })
78
+ .strict();
79
+ /**
80
+ * Top-level credentials file shape per cli-design §7.4.1.
81
+ *
82
+ * **`schema_version` pinned to literal `"1"`** so a future-version
83
+ * credentials file (e.g., `"2"` after a v0.4 schema change) fails
84
+ * parse-time at this security-bearing surface rather than passing
85
+ * through and getting reinterpreted under the v0.3 schema.
86
+ */
87
+ export const credentialsFileSchema = z
88
+ .object({
89
+ schema_version: z.literal(CREDENTIALS_SCHEMA_VERSION),
90
+ profiles: z.record(z.string().min(1), profileEntrySchema),
91
+ })
92
+ .strict();
93
+ const wrapAsConfigError = (err, message, details = {}) => {
94
+ return new ConfigError(message, { cause: asError(err), details });
95
+ };
96
+ /**
97
+ * Resolves the absolute credentials-file path. Pure helper — does
98
+ * not touch the filesystem.
99
+ */
100
+ export const resolveCredentialsPath = (options = {}) => {
101
+ const home = options.home ?? homedir();
102
+ return join(home, CREDENTIALS_DIR_NAME, CREDENTIALS_FILE_NAME);
103
+ };
104
+ const credentialsDirPath = (options) => join(options.home ?? homedir(), CREDENTIALS_DIR_NAME);
105
+ /**
106
+ * Reads the credentials file, parses it through
107
+ * {@link credentialsFileSchema}, and returns the parsed shape.
108
+ *
109
+ * Returns `undefined` when the file does not exist (typical first-
110
+ * run state). Throws `config_error` for every other failure mode
111
+ * (insecure mode, malformed JSON, schema mismatch).
112
+ */
113
+ export const readCredentials = async (options = {}) => {
114
+ const fullPath = resolveCredentialsPath(options);
115
+ let handle;
116
+ try {
117
+ handle = await open(fullPath, fsConstants.O_RDONLY);
118
+ }
119
+ catch (err) {
120
+ if (isENOENT(err)) {
121
+ return undefined;
122
+ }
123
+ throw wrapAsConfigError(err, `cannot read credentials file ${fullPath}`, {
124
+ path: fullPath,
125
+ });
126
+ }
127
+ try {
128
+ const stats = await handle.stat();
129
+ if ((stats.mode & CREDENTIALS_INSECURE_BITS) !== 0) {
130
+ throw new ConfigError(`refusing to read credentials file with insecure permissions ${formatMode(stats.mode)}`, {
131
+ details: {
132
+ path: fullPath,
133
+ mode: formatMode(stats.mode),
134
+ hint: `permissions must be 0600 — run \`chmod 600 ${fullPath}\``,
135
+ },
136
+ });
137
+ }
138
+ const raw = await handle.readFile('utf8');
139
+ let parsed;
140
+ try {
141
+ parsed = JSON.parse(raw);
142
+ }
143
+ catch (err) {
144
+ throw wrapAsConfigError(err, `malformed JSON in credentials file ${fullPath}`, {
145
+ path: fullPath,
146
+ hint: `delete the file and re-run \`monday auth login --profile <name>\``,
147
+ });
148
+ }
149
+ const result = credentialsFileSchema.safeParse(parsed);
150
+ if (!result.success) {
151
+ const issues = result.error.issues.map((i) => ({
152
+ path: i.path.join('.'),
153
+ message: i.message,
154
+ code: i.code,
155
+ }));
156
+ throw new ConfigError(`credentials file does not conform to v${CREDENTIALS_SCHEMA_VERSION} schema`, {
157
+ cause: result.error,
158
+ details: {
159
+ path: fullPath,
160
+ issues,
161
+ hint: `delete the file and re-run \`monday auth login --profile <name>\``,
162
+ },
163
+ });
164
+ }
165
+ return result.data;
166
+ }
167
+ finally {
168
+ await handle.close();
169
+ }
170
+ };
171
+ const ensureSecureDir = async (path) => {
172
+ // mkdir respects umask, so the explicit `mode` is advisory on some
173
+ // platforms. Re-apply via chmod so a tightened-after-creation
174
+ // directory doesn't betray credentials to another user.
175
+ try {
176
+ await mkdir(path, { recursive: true, mode: 0o700 });
177
+ await chmod(path, 0o700);
178
+ }
179
+ catch (err) {
180
+ // Disk-full / permissions-denied path; not reproducible from a
181
+ // unit test against a tmp dir.
182
+ /* c8 ignore start */
183
+ throw wrapAsConfigError(err, `cannot prepare credentials directory ${path}`, {
184
+ path,
185
+ });
186
+ /* c8 ignore stop */
187
+ }
188
+ };
189
+ /**
190
+ * Atomically writes the credentials file. Mirrors `src/api/cache.ts
191
+ * writeEntry` verbatim:
192
+ *
193
+ * 1. `mkdir({ recursive: true, mode: 0o700 })` + `chmod 0o700`.
194
+ * 2. `writeFile(tmpPath, payload, { mode: 0o600 })`.
195
+ * 3. `chmod(tmpPath, 0o600)` (re-applied because `writeFile`'s
196
+ * `mode` is advisory under umask).
197
+ * 4. `rename(tmpPath, finalPath)` (atomic on the same filesystem).
198
+ *
199
+ * Best-effort cleanup of `tmpPath` on any failure so a half-written
200
+ * `.tmp` doesn't accumulate.
201
+ */
202
+ export const writeCredentials = async (file, options = {}) => {
203
+ // Re-validate before write so a caller passing a malformed shape
204
+ // (e.g., a hand-built object that bypassed the schema) can't slip
205
+ // a bad file onto disk.
206
+ const validated = credentialsFileSchema.parse(file);
207
+ const fullPath = resolveCredentialsPath(options);
208
+ const dir = credentialsDirPath(options);
209
+ await ensureSecureDir(dir);
210
+ const payload = JSON.stringify(validated, null, 2);
211
+ const tmpPath = `${fullPath}.${randomUUID()}.tmp`;
212
+ try {
213
+ await writeFile(tmpPath, payload, { mode: CREDENTIALS_FILE_MODE });
214
+ await chmod(tmpPath, CREDENTIALS_FILE_MODE);
215
+ await rename(tmpPath, fullPath);
216
+ }
217
+ catch (err) {
218
+ // Disk-full / atomic-rename failure path; not reproducible from a
219
+ // unit test against a tmp dir.
220
+ /* c8 ignore start */
221
+ await unlink(tmpPath).catch(() => undefined);
222
+ throw wrapAsConfigError(err, `cannot write credentials file ${fullPath}`, {
223
+ path: fullPath,
224
+ });
225
+ /* c8 ignore stop */
226
+ }
227
+ };
228
+ /**
229
+ * Read-modify-write convenience for `monday auth login`'s success
230
+ * path. Loads the existing file (or starts a fresh `{schema_version,
231
+ * profiles: {}}` if absent), inserts/replaces the named profile's
232
+ * entry, and writes the result back via {@link writeCredentials}.
233
+ */
234
+ export const setProfileCredentials = async (inputs, options = {}) => {
235
+ const existing = await readCredentials(options);
236
+ const next = {
237
+ schema_version: CREDENTIALS_SCHEMA_VERSION,
238
+ profiles: {
239
+ ...(existing?.profiles ?? {}),
240
+ [inputs.profileName]: inputs.entry,
241
+ },
242
+ };
243
+ await writeCredentials(next, options);
244
+ };
245
+ /**
246
+ * Idempotent profile delete for `monday auth logout`. Loads the
247
+ * file (no-op if file is absent), removes the named profile from
248
+ * `profiles`, writes the result back. When the post-delete
249
+ * `profiles` map is empty, **still writes
250
+ * `{schema_version, profiles: {}}`** rather than deleting the file
251
+ * outright (per cli-design §7.3.2 — keeps the schema-version pin
252
+ * discoverable + avoids a fresh-install vs all-logged-out
253
+ * ambiguity).
254
+ *
255
+ * Returns whether the named profile was present pre-delete — the
256
+ * caller surfaces this in the success envelope's `was_present`
257
+ * slot.
258
+ */
259
+ export const deleteProfileCredentials = async (profileName, options = {}) => {
260
+ const existing = await readCredentials(options);
261
+ if (existing === undefined) {
262
+ return { wasPresent: false };
263
+ }
264
+ const wasPresent = Object.prototype.hasOwnProperty.call(existing.profiles, profileName);
265
+ if (!wasPresent) {
266
+ return { wasPresent: false };
267
+ }
268
+ const nextProfiles = Object.fromEntries(Object.entries(existing.profiles).filter(([key]) => key !== profileName));
269
+ const next = {
270
+ schema_version: CREDENTIALS_SCHEMA_VERSION,
271
+ profiles: nextProfiles,
272
+ };
273
+ await writeCredentials(next, options);
274
+ return { wasPresent: true };
275
+ };
276
+ export const resolveProfileToken = async (inputs, options = {}) => {
277
+ const credentials = await readCredentials(options);
278
+ const cached = credentials?.profiles[inputs.profileName];
279
+ if (cached !== undefined) {
280
+ return { token: cached.access_token, source: 'credentials_cache' };
281
+ }
282
+ if (inputs.apiTokenEnvName !== undefined) {
283
+ const env = options.env ?? process.env;
284
+ const fromEnv = env[inputs.apiTokenEnvName];
285
+ if (fromEnv !== undefined && fromEnv.length > 0) {
286
+ return { token: fromEnv, source: 'api_token_env' };
287
+ }
288
+ }
289
+ const hint = inputs.apiTokenEnvName !== undefined
290
+ ? `no token for profile \`${inputs.profileName}\` — run \`monday auth login --profile ${inputs.profileName}\` or set ${inputs.apiTokenEnvName}`
291
+ : `no token for profile \`${inputs.profileName}\` — run \`monday auth login --profile ${inputs.profileName}\``;
292
+ throw new ConfigError(`no credentials available for profile \`${inputs.profileName}\``, {
293
+ details: {
294
+ profile: inputs.profileName,
295
+ api_token_env: inputs.apiTokenEnvName ?? null,
296
+ hint,
297
+ },
298
+ });
299
+ };
300
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}