@pachca/cli 2026.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 (369) hide show
  1. package/README.md +352 -0
  2. package/README.template.md +190 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.js +5 -0
  5. package/dist/base-command.d.ts +74 -0
  6. package/dist/base-command.d.ts.map +1 -0
  7. package/dist/base-command.js +242 -0
  8. package/dist/base-command.js.map +1 -0
  9. package/dist/client.d.ts +45 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/client.js +258 -0
  12. package/dist/client.js.map +1 -0
  13. package/dist/commands/api.d.ts +38 -0
  14. package/dist/commands/api.d.ts.map +1 -0
  15. package/dist/commands/api.js +212 -0
  16. package/dist/commands/api.js.map +1 -0
  17. package/dist/commands/auth/list.d.ts +23 -0
  18. package/dist/commands/auth/list.d.ts.map +1 -0
  19. package/dist/commands/auth/list.js +39 -0
  20. package/dist/commands/auth/list.js.map +1 -0
  21. package/dist/commands/auth/login.d.ts +23 -0
  22. package/dist/commands/auth/login.d.ts.map +1 -0
  23. package/dist/commands/auth/login.js +140 -0
  24. package/dist/commands/auth/login.js.map +1 -0
  25. package/dist/commands/auth/logout.d.ts +26 -0
  26. package/dist/commands/auth/logout.d.ts.map +1 -0
  27. package/dist/commands/auth/logout.js +81 -0
  28. package/dist/commands/auth/logout.js.map +1 -0
  29. package/dist/commands/auth/refresh.d.ts +26 -0
  30. package/dist/commands/auth/refresh.d.ts.map +1 -0
  31. package/dist/commands/auth/refresh.js +68 -0
  32. package/dist/commands/auth/refresh.js.map +1 -0
  33. package/dist/commands/auth/status.d.ts +23 -0
  34. package/dist/commands/auth/status.d.ts.map +1 -0
  35. package/dist/commands/auth/status.js +51 -0
  36. package/dist/commands/auth/status.js.map +1 -0
  37. package/dist/commands/auth/switch.d.ts +26 -0
  38. package/dist/commands/auth/switch.d.ts.map +1 -0
  39. package/dist/commands/auth/switch.js +37 -0
  40. package/dist/commands/auth/switch.js.map +1 -0
  41. package/dist/commands/bots/list-events.d.ts +31 -0
  42. package/dist/commands/bots/list-events.d.ts.map +1 -0
  43. package/dist/commands/bots/list-events.js +85 -0
  44. package/dist/commands/bots/list-events.js.map +1 -0
  45. package/dist/commands/bots/remove-event.d.ts +30 -0
  46. package/dist/commands/bots/remove-event.d.ts.map +1 -0
  47. package/dist/commands/bots/remove-event.js +48 -0
  48. package/dist/commands/bots/remove-event.js.map +1 -0
  49. package/dist/commands/bots/update.d.ts +34 -0
  50. package/dist/commands/bots/update.d.ts.map +1 -0
  51. package/dist/commands/bots/update.js +78 -0
  52. package/dist/commands/bots/update.js.map +1 -0
  53. package/dist/commands/changelog.d.ts +23 -0
  54. package/dist/commands/changelog.d.ts.map +1 -0
  55. package/dist/commands/changelog.js +40 -0
  56. package/dist/commands/changelog.js.map +1 -0
  57. package/dist/commands/chats/archive.d.ts +32 -0
  58. package/dist/commands/chats/archive.d.ts.map +1 -0
  59. package/dist/commands/chats/archive.js +35 -0
  60. package/dist/commands/chats/archive.js.map +1 -0
  61. package/dist/commands/chats/create.d.ts +33 -0
  62. package/dist/commands/chats/create.d.ts.map +1 -0
  63. package/dist/commands/chats/create.js +91 -0
  64. package/dist/commands/chats/create.js.map +1 -0
  65. package/dist/commands/chats/get.d.ts +33 -0
  66. package/dist/commands/chats/get.d.ts.map +1 -0
  67. package/dist/commands/chats/get.js +35 -0
  68. package/dist/commands/chats/get.js.map +1 -0
  69. package/dist/commands/chats/list.d.ts +37 -0
  70. package/dist/commands/chats/list.d.ts.map +1 -0
  71. package/dist/commands/chats/list.js +117 -0
  72. package/dist/commands/chats/list.js.map +1 -0
  73. package/dist/commands/chats/unarchive.d.ts +32 -0
  74. package/dist/commands/chats/unarchive.d.ts.map +1 -0
  75. package/dist/commands/chats/unarchive.js +34 -0
  76. package/dist/commands/chats/unarchive.js.map +1 -0
  77. package/dist/commands/chats/update.d.ts +35 -0
  78. package/dist/commands/chats/update.d.ts.map +1 -0
  79. package/dist/commands/chats/update.js +52 -0
  80. package/dist/commands/chats/update.js.map +1 -0
  81. package/dist/commands/commands.d.ts +24 -0
  82. package/dist/commands/commands.d.ts.map +1 -0
  83. package/dist/commands/commands.js +71 -0
  84. package/dist/commands/commands.js.map +1 -0
  85. package/dist/commands/common/custom-properties.d.ts +29 -0
  86. package/dist/commands/common/custom-properties.d.ts.map +1 -0
  87. package/dist/commands/common/custom-properties.js +68 -0
  88. package/dist/commands/common/custom-properties.js.map +1 -0
  89. package/dist/commands/common/direct-url.d.ts +35 -0
  90. package/dist/commands/common/direct-url.d.ts.map +1 -0
  91. package/dist/commands/common/direct-url.js +123 -0
  92. package/dist/commands/common/direct-url.js.map +1 -0
  93. package/dist/commands/common/get-exports.d.ts +34 -0
  94. package/dist/commands/common/get-exports.d.ts.map +1 -0
  95. package/dist/commands/common/get-exports.js +47 -0
  96. package/dist/commands/common/get-exports.js.map +1 -0
  97. package/dist/commands/common/request-export.d.ts +33 -0
  98. package/dist/commands/common/request-export.d.ts.map +1 -0
  99. package/dist/commands/common/request-export.js +90 -0
  100. package/dist/commands/common/request-export.js.map +1 -0
  101. package/dist/commands/common/uploads.d.ts +28 -0
  102. package/dist/commands/common/uploads.d.ts.map +1 -0
  103. package/dist/commands/common/uploads.js +29 -0
  104. package/dist/commands/common/uploads.js.map +1 -0
  105. package/dist/commands/config/get.d.ts +26 -0
  106. package/dist/commands/config/get.d.ts.map +1 -0
  107. package/dist/commands/config/get.js +28 -0
  108. package/dist/commands/config/get.js.map +1 -0
  109. package/dist/commands/config/list.d.ts +23 -0
  110. package/dist/commands/config/list.d.ts.map +1 -0
  111. package/dist/commands/config/list.js +49 -0
  112. package/dist/commands/config/list.js.map +1 -0
  113. package/dist/commands/config/set.d.ts +27 -0
  114. package/dist/commands/config/set.d.ts.map +1 -0
  115. package/dist/commands/config/set.js +30 -0
  116. package/dist/commands/config/set.js.map +1 -0
  117. package/dist/commands/doctor.d.ts +24 -0
  118. package/dist/commands/doctor.d.ts.map +1 -0
  119. package/dist/commands/doctor.js +175 -0
  120. package/dist/commands/doctor.js.map +1 -0
  121. package/dist/commands/group-tags/create.d.ts +29 -0
  122. package/dist/commands/group-tags/create.d.ts.map +1 -0
  123. package/dist/commands/group-tags/create.js +74 -0
  124. package/dist/commands/group-tags/create.js.map +1 -0
  125. package/dist/commands/group-tags/delete.d.ts +32 -0
  126. package/dist/commands/group-tags/delete.d.ts.map +1 -0
  127. package/dist/commands/group-tags/delete.js +45 -0
  128. package/dist/commands/group-tags/delete.js.map +1 -0
  129. package/dist/commands/group-tags/get.d.ts +32 -0
  130. package/dist/commands/group-tags/get.d.ts.map +1 -0
  131. package/dist/commands/group-tags/get.js +32 -0
  132. package/dist/commands/group-tags/get.js.map +1 -0
  133. package/dist/commands/group-tags/list-users.d.ts +36 -0
  134. package/dist/commands/group-tags/list-users.d.ts.map +1 -0
  135. package/dist/commands/group-tags/list-users.js +90 -0
  136. package/dist/commands/group-tags/list-users.js.map +1 -0
  137. package/dist/commands/group-tags/list.d.ts +32 -0
  138. package/dist/commands/group-tags/list.d.ts.map +1 -0
  139. package/dist/commands/group-tags/list.js +91 -0
  140. package/dist/commands/group-tags/list.js.map +1 -0
  141. package/dist/commands/group-tags/update.d.ts +33 -0
  142. package/dist/commands/group-tags/update.d.ts.map +1 -0
  143. package/dist/commands/group-tags/update.js +75 -0
  144. package/dist/commands/group-tags/update.js.map +1 -0
  145. package/dist/commands/guide.d.ts +26 -0
  146. package/dist/commands/guide.d.ts.map +1 -0
  147. package/dist/commands/guide.js +86 -0
  148. package/dist/commands/guide.js.map +1 -0
  149. package/dist/commands/introspect.d.ts +27 -0
  150. package/dist/commands/introspect.d.ts.map +1 -0
  151. package/dist/commands/introspect.js +82 -0
  152. package/dist/commands/introspect.js.map +1 -0
  153. package/dist/commands/link-previews/add.d.ts +33 -0
  154. package/dist/commands/link-previews/add.d.ts.map +1 -0
  155. package/dist/commands/link-previews/add.js +76 -0
  156. package/dist/commands/link-previews/add.js.map +1 -0
  157. package/dist/commands/members/add-group-tags.d.ts +32 -0
  158. package/dist/commands/members/add-group-tags.d.ts.map +1 -0
  159. package/dist/commands/members/add-group-tags.js +73 -0
  160. package/dist/commands/members/add-group-tags.js.map +1 -0
  161. package/dist/commands/members/add.d.ts +34 -0
  162. package/dist/commands/members/add.d.ts.map +1 -0
  163. package/dist/commands/members/add.js +82 -0
  164. package/dist/commands/members/add.js.map +1 -0
  165. package/dist/commands/members/leave.d.ts +33 -0
  166. package/dist/commands/members/leave.d.ts.map +1 -0
  167. package/dist/commands/members/leave.js +48 -0
  168. package/dist/commands/members/leave.js.map +1 -0
  169. package/dist/commands/members/list.d.ts +37 -0
  170. package/dist/commands/members/list.d.ts.map +1 -0
  171. package/dist/commands/members/list.js +97 -0
  172. package/dist/commands/members/list.js.map +1 -0
  173. package/dist/commands/members/remove-group-tag.d.ts +36 -0
  174. package/dist/commands/members/remove-group-tag.d.ts.map +1 -0
  175. package/dist/commands/members/remove-group-tag.js +49 -0
  176. package/dist/commands/members/remove-group-tag.js.map +1 -0
  177. package/dist/commands/members/remove.d.ts +37 -0
  178. package/dist/commands/members/remove.d.ts.map +1 -0
  179. package/dist/commands/members/remove.js +53 -0
  180. package/dist/commands/members/remove.js.map +1 -0
  181. package/dist/commands/members/update.d.ts +36 -0
  182. package/dist/commands/members/update.d.ts.map +1 -0
  183. package/dist/commands/members/update.js +39 -0
  184. package/dist/commands/members/update.js.map +1 -0
  185. package/dist/commands/messages/create.d.ts +38 -0
  186. package/dist/commands/messages/create.d.ts.map +1 -0
  187. package/dist/commands/messages/create.js +128 -0
  188. package/dist/commands/messages/create.js.map +1 -0
  189. package/dist/commands/messages/delete.d.ts +33 -0
  190. package/dist/commands/messages/delete.d.ts.map +1 -0
  191. package/dist/commands/messages/delete.js +50 -0
  192. package/dist/commands/messages/delete.js.map +1 -0
  193. package/dist/commands/messages/get.d.ts +33 -0
  194. package/dist/commands/messages/get.d.ts.map +1 -0
  195. package/dist/commands/messages/get.js +37 -0
  196. package/dist/commands/messages/get.js.map +1 -0
  197. package/dist/commands/messages/list.d.ts +33 -0
  198. package/dist/commands/messages/list.d.ts.map +1 -0
  199. package/dist/commands/messages/list.js +127 -0
  200. package/dist/commands/messages/list.js.map +1 -0
  201. package/dist/commands/messages/pin.d.ts +32 -0
  202. package/dist/commands/messages/pin.d.ts.map +1 -0
  203. package/dist/commands/messages/pin.js +35 -0
  204. package/dist/commands/messages/pin.js.map +1 -0
  205. package/dist/commands/messages/unpin.d.ts +33 -0
  206. package/dist/commands/messages/unpin.d.ts.map +1 -0
  207. package/dist/commands/messages/unpin.js +49 -0
  208. package/dist/commands/messages/unpin.js.map +1 -0
  209. package/dist/commands/messages/update.d.ts +38 -0
  210. package/dist/commands/messages/update.d.ts.map +1 -0
  211. package/dist/commands/messages/update.js +74 -0
  212. package/dist/commands/messages/update.js.map +1 -0
  213. package/dist/commands/profile/delete-status.d.ts +28 -0
  214. package/dist/commands/profile/delete-status.d.ts.map +1 -0
  215. package/dist/commands/profile/delete-status.js +44 -0
  216. package/dist/commands/profile/delete-status.js.map +1 -0
  217. package/dist/commands/profile/get-info.d.ts +27 -0
  218. package/dist/commands/profile/get-info.d.ts.map +1 -0
  219. package/dist/commands/profile/get-info.js +26 -0
  220. package/dist/commands/profile/get-info.js.map +1 -0
  221. package/dist/commands/profile/get-status.d.ts +28 -0
  222. package/dist/commands/profile/get-status.d.ts.map +1 -0
  223. package/dist/commands/profile/get-status.js +29 -0
  224. package/dist/commands/profile/get-status.js.map +1 -0
  225. package/dist/commands/profile/get.d.ts +28 -0
  226. package/dist/commands/profile/get.d.ts.map +1 -0
  227. package/dist/commands/profile/get.js +29 -0
  228. package/dist/commands/profile/get.js.map +1 -0
  229. package/dist/commands/profile/update-status.d.ts +33 -0
  230. package/dist/commands/profile/update-status.d.ts.map +1 -0
  231. package/dist/commands/profile/update-status.js +95 -0
  232. package/dist/commands/profile/update-status.js.map +1 -0
  233. package/dist/commands/reactions/add.d.ts +35 -0
  234. package/dist/commands/reactions/add.d.ts.map +1 -0
  235. package/dist/commands/reactions/add.js +82 -0
  236. package/dist/commands/reactions/add.js.map +1 -0
  237. package/dist/commands/reactions/list.d.ts +36 -0
  238. package/dist/commands/reactions/list.d.ts.map +1 -0
  239. package/dist/commands/reactions/list.js +91 -0
  240. package/dist/commands/reactions/list.js.map +1 -0
  241. package/dist/commands/reactions/remove.d.ts +35 -0
  242. package/dist/commands/reactions/remove.d.ts.map +1 -0
  243. package/dist/commands/reactions/remove.js +88 -0
  244. package/dist/commands/reactions/remove.js.map +1 -0
  245. package/dist/commands/read-member/list-readers.d.ts +35 -0
  246. package/dist/commands/read-member/list-readers.d.ts.map +1 -0
  247. package/dist/commands/read-member/list-readers.js +89 -0
  248. package/dist/commands/read-member/list-readers.js.map +1 -0
  249. package/dist/commands/search/list-chats.d.ts +38 -0
  250. package/dist/commands/search/list-chats.d.ts.map +1 -0
  251. package/dist/commands/search/list-chats.js +122 -0
  252. package/dist/commands/search/list-chats.js.map +1 -0
  253. package/dist/commands/search/list-messages.d.ts +38 -0
  254. package/dist/commands/search/list-messages.d.ts.map +1 -0
  255. package/dist/commands/search/list-messages.js +121 -0
  256. package/dist/commands/search/list-messages.js.map +1 -0
  257. package/dist/commands/search/list-users.d.ts +37 -0
  258. package/dist/commands/search/list-users.d.ts.map +1 -0
  259. package/dist/commands/search/list-users.js +117 -0
  260. package/dist/commands/search/list-users.js.map +1 -0
  261. package/dist/commands/security/list.d.ts +39 -0
  262. package/dist/commands/security/list.d.ts.map +1 -0
  263. package/dist/commands/security/list.js +155 -0
  264. package/dist/commands/security/list.js.map +1 -0
  265. package/dist/commands/tasks/create.d.ts +36 -0
  266. package/dist/commands/tasks/create.d.ts.map +1 -0
  267. package/dist/commands/tasks/create.js +111 -0
  268. package/dist/commands/tasks/create.js.map +1 -0
  269. package/dist/commands/tasks/delete.d.ts +33 -0
  270. package/dist/commands/tasks/delete.d.ts.map +1 -0
  271. package/dist/commands/tasks/delete.js +50 -0
  272. package/dist/commands/tasks/delete.js.map +1 -0
  273. package/dist/commands/tasks/get.d.ts +33 -0
  274. package/dist/commands/tasks/get.d.ts.map +1 -0
  275. package/dist/commands/tasks/get.js +37 -0
  276. package/dist/commands/tasks/get.js.map +1 -0
  277. package/dist/commands/tasks/list.d.ts +31 -0
  278. package/dist/commands/tasks/list.d.ts.map +1 -0
  279. package/dist/commands/tasks/list.js +87 -0
  280. package/dist/commands/tasks/list.js.map +1 -0
  281. package/dist/commands/tasks/update.d.ts +42 -0
  282. package/dist/commands/tasks/update.d.ts.map +1 -0
  283. package/dist/commands/tasks/update.js +90 -0
  284. package/dist/commands/tasks/update.js.map +1 -0
  285. package/dist/commands/thread/add.d.ts +33 -0
  286. package/dist/commands/thread/add.d.ts.map +1 -0
  287. package/dist/commands/thread/add.js +36 -0
  288. package/dist/commands/thread/add.js.map +1 -0
  289. package/dist/commands/thread/get.d.ts +32 -0
  290. package/dist/commands/thread/get.d.ts.map +1 -0
  291. package/dist/commands/thread/get.js +32 -0
  292. package/dist/commands/thread/get.js.map +1 -0
  293. package/dist/commands/users/create.d.ts +30 -0
  294. package/dist/commands/users/create.d.ts.map +1 -0
  295. package/dist/commands/users/create.js +78 -0
  296. package/dist/commands/users/create.js.map +1 -0
  297. package/dist/commands/users/delete.d.ts +33 -0
  298. package/dist/commands/users/delete.d.ts.map +1 -0
  299. package/dist/commands/users/delete.js +50 -0
  300. package/dist/commands/users/delete.js.map +1 -0
  301. package/dist/commands/users/get-status.d.ts +33 -0
  302. package/dist/commands/users/get-status.d.ts.map +1 -0
  303. package/dist/commands/users/get-status.js +37 -0
  304. package/dist/commands/users/get-status.js.map +1 -0
  305. package/dist/commands/users/get.d.ts +33 -0
  306. package/dist/commands/users/get.d.ts.map +1 -0
  307. package/dist/commands/users/get.js +37 -0
  308. package/dist/commands/users/get.js.map +1 -0
  309. package/dist/commands/users/list.d.ts +32 -0
  310. package/dist/commands/users/list.d.ts.map +1 -0
  311. package/dist/commands/users/list.js +92 -0
  312. package/dist/commands/users/list.js.map +1 -0
  313. package/dist/commands/users/remove-status.d.ts +33 -0
  314. package/dist/commands/users/remove-status.d.ts.map +1 -0
  315. package/dist/commands/users/remove-status.js +50 -0
  316. package/dist/commands/users/remove-status.js.map +1 -0
  317. package/dist/commands/users/update-status.d.ts +38 -0
  318. package/dist/commands/users/update-status.d.ts.map +1 -0
  319. package/dist/commands/users/update-status.js +101 -0
  320. package/dist/commands/users/update-status.js.map +1 -0
  321. package/dist/commands/users/update.d.ts +44 -0
  322. package/dist/commands/users/update.d.ts.map +1 -0
  323. package/dist/commands/users/update.js +90 -0
  324. package/dist/commands/users/update.js.map +1 -0
  325. package/dist/commands/version.d.ts +23 -0
  326. package/dist/commands/version.d.ts.map +1 -0
  327. package/dist/commands/version.js +23 -0
  328. package/dist/commands/version.js.map +1 -0
  329. package/dist/commands/views/open.d.ts +32 -0
  330. package/dist/commands/views/open.d.ts.map +1 -0
  331. package/dist/commands/views/open.js +103 -0
  332. package/dist/commands/views/open.js.map +1 -0
  333. package/dist/data/alternatives.json +73 -0
  334. package/dist/data/changelog.json +328 -0
  335. package/dist/data/workflows.json +990 -0
  336. package/dist/get-version.d.ts +7 -0
  337. package/dist/get-version.d.ts.map +1 -0
  338. package/dist/get-version.js +23 -0
  339. package/dist/get-version.js.map +1 -0
  340. package/dist/hooks/command-not-found.d.ts +4 -0
  341. package/dist/hooks/command-not-found.d.ts.map +1 -0
  342. package/dist/hooks/command-not-found.js +51 -0
  343. package/dist/hooks/command-not-found.js.map +1 -0
  344. package/dist/hooks/init.d.ts +4 -0
  345. package/dist/hooks/init.d.ts.map +1 -0
  346. package/dist/hooks/init.js +95 -0
  347. package/dist/hooks/init.js.map +1 -0
  348. package/dist/hooks/postrun.d.ts +4 -0
  349. package/dist/hooks/postrun.d.ts.map +1 -0
  350. package/dist/hooks/postrun.js +67 -0
  351. package/dist/hooks/postrun.js.map +1 -0
  352. package/dist/index.d.ts +2 -0
  353. package/dist/index.d.ts.map +1 -0
  354. package/dist/index.js +2 -0
  355. package/dist/index.js.map +1 -0
  356. package/dist/output.d.ts +26 -0
  357. package/dist/output.d.ts.map +1 -0
  358. package/dist/output.js +175 -0
  359. package/dist/output.js.map +1 -0
  360. package/dist/profiles.d.ts +52 -0
  361. package/dist/profiles.d.ts.map +1 -0
  362. package/dist/profiles.js +192 -0
  363. package/dist/profiles.js.map +1 -0
  364. package/dist/utils.d.ts +21 -0
  365. package/dist/utils.d.ts.map +1 -0
  366. package/dist/utils.js +62 -0
  367. package/dist/utils.js.map +1 -0
  368. package/oclif.manifest.json +12266 -0
  369. package/package.json +73 -0
@@ -0,0 +1,212 @@
1
+ import * as fs from 'node:fs';
2
+ import { Args, Flags } from '@oclif/core';
3
+ import { BaseCommand } from '../base-command.js';
4
+ import { outputError } from '../output.js';
5
+ export default class Api extends BaseCommand {
6
+ static description = 'Make a raw API request';
7
+ static examples = [
8
+ '<%= config.bin %> api GET /messages --query chat_id=123',
9
+ '<%= config.bin %> api POST /messages -F message[chat_id]=12345 -f message[content]="Привет"',
10
+ '<%= config.bin %> api POST /messages --input payload.json',
11
+ '<%= config.bin %> api GET /profile -o yaml',
12
+ ];
13
+ static strict = false;
14
+ static args = {
15
+ method: Args.string({
16
+ description: 'HTTP method (GET, POST, PUT, DELETE)',
17
+ required: true,
18
+ options: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
19
+ }),
20
+ path: Args.string({
21
+ description: 'API path (e.g., /messages)',
22
+ required: true,
23
+ }),
24
+ };
25
+ static flags = {
26
+ ...BaseCommand.baseFlags,
27
+ 'raw-field': Flags.string({
28
+ char: 'f',
29
+ description: 'String field (key=value)',
30
+ multiple: true,
31
+ }),
32
+ field: Flags.string({
33
+ char: 'F',
34
+ description: 'Typed field (numbers/bools auto-converted, @file reads file)',
35
+ multiple: true,
36
+ }),
37
+ input: Flags.string({
38
+ description: 'JSON file to send as body (- for stdin)',
39
+ }),
40
+ query: Flags.string({
41
+ description: 'Query parameter (key=value)',
42
+ multiple: true,
43
+ }),
44
+ };
45
+ async run() {
46
+ const { args, flags } = await this.parse(Api);
47
+ this.parsedFlags = flags;
48
+ const format = this.getOutputFormat();
49
+ // Validate mutually exclusive flags
50
+ const hasFields = (flags['raw-field']?.length || 0) + (flags.field?.length || 0) > 0;
51
+ if (hasFields && flags.input) {
52
+ outputError({ error: '-f/-F and --input are mutually exclusive', type: 'PACHCA_USAGE_ERROR', code: null }, format);
53
+ this.exit(2);
54
+ }
55
+ // Build query params
56
+ const query = {};
57
+ if (flags.query) {
58
+ for (const q of flags.query) {
59
+ const [key, ...rest] = q.split('=');
60
+ query[key] = rest.join('=');
61
+ }
62
+ }
63
+ // Build request body
64
+ let body = undefined;
65
+ if (flags.input) {
66
+ const inputPath = flags.input;
67
+ let raw;
68
+ if (inputPath === '-') {
69
+ // Read from stdin
70
+ const chunks = [];
71
+ for await (const chunk of process.stdin) {
72
+ chunks.push(chunk);
73
+ }
74
+ raw = Buffer.concat(chunks).toString('utf-8');
75
+ }
76
+ else {
77
+ if (!fs.existsSync(inputPath)) {
78
+ outputError({ error: `File not found: ${inputPath}`, type: 'PACHCA_USAGE_ERROR', code: null }, format);
79
+ this.exit(2);
80
+ }
81
+ raw = fs.readFileSync(inputPath, 'utf-8');
82
+ }
83
+ try {
84
+ body = JSON.parse(raw);
85
+ }
86
+ catch {
87
+ outputError({ error: `Invalid JSON in ${inputPath === '-' ? 'stdin' : inputPath}`, type: 'PACHCA_USAGE_ERROR', code: null }, format);
88
+ this.exit(2);
89
+ }
90
+ }
91
+ else if (hasFields) {
92
+ const merged = {};
93
+ // Process -f (raw string fields)
94
+ if (flags['raw-field']) {
95
+ for (const field of flags['raw-field']) {
96
+ const [key, ...rest] = field.split('=');
97
+ const value = rest.join('=');
98
+ setBracketNotation(merged, key, value);
99
+ }
100
+ }
101
+ // Process -F (typed fields)
102
+ if (flags.field) {
103
+ for (const field of flags.field) {
104
+ const [key, ...rest] = field.split('=');
105
+ const rawValue = rest.join('=');
106
+ const value = parseTypedValue(rawValue);
107
+ setBracketNotation(merged, key, value);
108
+ }
109
+ }
110
+ body = merged;
111
+ }
112
+ const { data } = await this.apiRequest({
113
+ method: args.method,
114
+ path: args.path,
115
+ body,
116
+ query: Object.keys(query).length > 0 ? query : undefined,
117
+ });
118
+ // pachca api outputs raw response (with data/meta wrapper)
119
+ // No table mode for raw API
120
+ const outFormat = format === 'table' ? 'json' : format;
121
+ const { outputData } = await import('../output.js');
122
+ outputData(data, { ...this.getOutputOptions(), format: outFormat });
123
+ }
124
+ }
125
+ /**
126
+ * Parse a bracket notation key and set the value in the target object.
127
+ * Supports: a[b][c] → {a: {b: {c: value}}}, a[] → array push, a[0] → array index
128
+ */
129
+ export function setBracketNotation(target, key, value) {
130
+ const parts = parseBracketKey(key);
131
+ if (parts.length === 0)
132
+ return;
133
+ if (parts.length > 5) {
134
+ throw new Error(`Key depth exceeds maximum of 5: ${key}`);
135
+ }
136
+ let current = target;
137
+ for (let i = 0; i < parts.length - 1; i++) {
138
+ const part = parts[i];
139
+ const nextPart = parts[i + 1];
140
+ const isNextArray = nextPart === '' || /^\d+$/.test(nextPart);
141
+ if (typeof current !== 'object' || current === null)
142
+ return;
143
+ if (part === '' || /^\d+$/.test(part)) {
144
+ // Array index
145
+ const arr = current;
146
+ const idx = part === '' ? arr.length : Number.parseInt(part, 10);
147
+ if (arr[idx] === undefined) {
148
+ arr[idx] = isNextArray ? [] : {};
149
+ }
150
+ current = arr[idx];
151
+ }
152
+ else {
153
+ const obj = current;
154
+ if (obj[part] === undefined) {
155
+ obj[part] = isNextArray ? [] : {};
156
+ }
157
+ current = obj[part];
158
+ }
159
+ }
160
+ const lastPart = parts[parts.length - 1];
161
+ if (typeof current !== 'object' || current === null)
162
+ return;
163
+ if (lastPart === '') {
164
+ // Push to array
165
+ current.push(value);
166
+ }
167
+ else if (/^\d+$/.test(lastPart)) {
168
+ current[Number.parseInt(lastPart, 10)] = value;
169
+ }
170
+ else {
171
+ current[lastPart] = value;
172
+ }
173
+ }
174
+ function parseBracketKey(key) {
175
+ const parts = [];
176
+ const match = key.match(/^([^[]+)/);
177
+ if (!match)
178
+ return [key];
179
+ parts.push(match[1]);
180
+ const brackets = key.slice(match[1].length);
181
+ const bracketRegex = /\[([^\]]*)\]/g;
182
+ let m;
183
+ while ((m = bracketRegex.exec(brackets)) !== null) {
184
+ parts.push(m[1]);
185
+ }
186
+ return parts;
187
+ }
188
+ export function parseTypedValue(value) {
189
+ if (value === 'true')
190
+ return true;
191
+ if (value === 'false')
192
+ return false;
193
+ if (value === 'null')
194
+ return null;
195
+ // @file reads file contents
196
+ if (value.startsWith('@')) {
197
+ const filePath = value.slice(1);
198
+ if (!fs.existsSync(filePath)) {
199
+ throw new Error(`File not found: ${filePath}`);
200
+ }
201
+ return fs.readFileSync(filePath, 'utf-8');
202
+ }
203
+ // Try to parse as number
204
+ if (/^-?\d+$/.test(value)) {
205
+ return Number.parseInt(value, 10);
206
+ }
207
+ if (/^-?\d+\.\d+$/.test(value)) {
208
+ return Number.parseFloat(value);
209
+ }
210
+ return value;
211
+ }
212
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/commands/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class AuthList extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'no-header': import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ 'no-truncate': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-input': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'no-retry': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,OAAgB,WAAW,SAA6B;IAExD,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3B"}
@@ -0,0 +1,39 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ import { listProfiles, getActiveProfile } from '../../profiles.js';
3
+ export default class AuthList extends BaseCommand {
4
+ static description = 'List all saved profiles';
5
+ static examples = [
6
+ '<%= config.bin %> auth list',
7
+ '<%= config.bin %> auth list -o json',
8
+ ];
9
+ static flags = {
10
+ ...BaseCommand.baseFlags,
11
+ };
12
+ async run() {
13
+ const { flags } = await this.parse(AuthList);
14
+ this.parsedFlags = flags;
15
+ const profiles = listProfiles();
16
+ const activeProfile = getActiveProfile();
17
+ const format = this.getOutputFormat();
18
+ const entries = Object.entries(profiles).map(([name, profile]) => ({
19
+ name,
20
+ type: profile.type,
21
+ user: profile.user,
22
+ email: profile.email || null,
23
+ scopes_count: profile.scopes?.length ?? 0,
24
+ active: name === activeProfile,
25
+ }));
26
+ if (entries.length === 0) {
27
+ if (format === 'json') {
28
+ this.output([]);
29
+ }
30
+ else {
31
+ process.stderr.write('Нет сохранённых профилей. Создайте профиль:\n');
32
+ process.stderr.write(' pachca auth login\n');
33
+ }
34
+ return;
35
+ }
36
+ this.output(entries);
37
+ }
38
+ }
39
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/auth/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAU,WAAW,GAAG,yBAAyB,CAAC;IAExD,MAAM,CAAU,QAAQ,GAAG;QACzB,6BAA6B;QAC7B,qCAAqC;KACtC,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,SAAS;KACzB,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;YACzC,MAAM,EAAE,IAAI,KAAK,aAAa;SAC/B,CAAC,CAAC,CAAC;QAEJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class AuthLogin extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'no-header': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ 'no-truncate': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ 'no-input': import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ 'no-retry': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ };
21
+ run(): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,OAAgB,WAAW,SAA4B;IAEvD,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;MAUnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2I3B"}
@@ -0,0 +1,140 @@
1
+ import { Flags } from '@oclif/core';
2
+ import * as clack from '@clack/prompts';
3
+ import { BaseCommand } from '../../base-command.js';
4
+ import { setProfile, setActiveProfile, getActiveProfile } from '../../profiles.js';
5
+ import { ApiError, request } from '../../client.js';
6
+ import { outputError } from '../../output.js';
7
+ export default class AuthLogin extends BaseCommand {
8
+ static description = 'Login and save a token';
9
+ static examples = [
10
+ '<%= config.bin %> auth login',
11
+ '<%= config.bin %> auth login --profile personal',
12
+ '<%= config.bin %> auth login --profile ci --token $PACHCA_TOKEN',
13
+ ];
14
+ static flags = {
15
+ ...BaseCommand.baseFlags,
16
+ profile: Flags.string({
17
+ char: 'p',
18
+ description: 'Profile name (default: "default")',
19
+ default: 'default',
20
+ }),
21
+ token: Flags.string({
22
+ description: 'Token to save (skips prompt)',
23
+ }),
24
+ };
25
+ async run() {
26
+ const { flags } = await this.parse(AuthLogin);
27
+ this.parsedFlags = flags;
28
+ const profileName = flags.profile ?? 'default';
29
+ let token = flags.token;
30
+ // Interactive token prompt
31
+ if (!token) {
32
+ if (!this.isInteractive()) {
33
+ outputError({ error: 'Token required in non-interactive mode. Use --token flag.', type: 'PACHCA_USAGE_ERROR', code: null }, this.getOutputFormat());
34
+ this.exit(2);
35
+ }
36
+ const result = await clack.password({
37
+ message: 'Вставьте API токен:',
38
+ });
39
+ if (clack.isCancel(result)) {
40
+ process.stderr.write('Отменено.\n');
41
+ this.exit(0);
42
+ }
43
+ token = result;
44
+ }
45
+ if (!token) {
46
+ outputError({ error: 'Token is required', type: 'PACHCA_USAGE_ERROR', code: null }, this.getOutputFormat());
47
+ this.exit(2);
48
+ }
49
+ // Validate token via GET /oauth/token/info
50
+ let tokenInfo;
51
+ try {
52
+ const response = await request({ method: 'GET', path: '/oauth/token/info', token }, { quiet: flags.quiet });
53
+ tokenInfo = response.data;
54
+ }
55
+ catch (error) {
56
+ if (error instanceof ApiError) {
57
+ if (error.details.code === 401) {
58
+ const format = this.getOutputFormat();
59
+ if (format === 'json' || !process.stderr.isTTY) {
60
+ outputError({ error: 'Invalid token', code: 401, type: 'PACHCA_AUTH_LOGIN_ERROR', message: 'Токен недействителен — сохранение отменено' }, format);
61
+ }
62
+ else {
63
+ process.stderr.write(`✗ Токен недействителен — сохранение отменено\n\n`);
64
+ process.stderr.write(` Проверьте токен и попробуйте снова:\n`);
65
+ process.stderr.write(` pachca auth login --token <ваш токен>\n\n`);
66
+ process.stderr.write(` Документация: https://dev.pachca.com/guides/authorization\n`);
67
+ }
68
+ this.exit(3);
69
+ }
70
+ if (error.details.type === 'PACHCA_NETWORK_ERROR') {
71
+ const format = this.getOutputFormat();
72
+ if (format === 'json' || !process.stderr.isTTY) {
73
+ outputError({ error: 'Network error', code: null, type: 'PACHCA_NETWORK_ERROR', message: 'Не удалось подключиться к серверу — сохранение отменено' }, format);
74
+ }
75
+ else {
76
+ process.stderr.write(`✗ Не удалось подключиться к серверу — сохранение отменено\n\n`);
77
+ process.stderr.write(` Проверьте подключение к интернету и попробуйте снова:\n`);
78
+ process.stderr.write(` pachca auth login\n`);
79
+ }
80
+ this.exit(1);
81
+ }
82
+ }
83
+ throw error;
84
+ }
85
+ // Get user info
86
+ let userName = 'Unknown';
87
+ let userEmail = null;
88
+ let isBot = false;
89
+ try {
90
+ const profileResponse = await request({ method: 'GET', path: '/profile', token }, { quiet: true });
91
+ const profileData = profileResponse.data.data;
92
+ const firstName = profileData.first_name || '';
93
+ const lastName = profileData.last_name || '';
94
+ userName = `${firstName} ${lastName}`.trim() || 'Unknown';
95
+ userEmail = profileData.email || null;
96
+ isBot = profileData.bot || false;
97
+ }
98
+ catch {
99
+ // Use token info as fallback
100
+ }
101
+ // Determine scopes
102
+ const scopes = tokenInfo.scopes || [];
103
+ const profileType = isBot ? 'bot' : 'user';
104
+ // Save profile
105
+ const profile = {
106
+ type: profileType,
107
+ token,
108
+ user: isBot ? `${userName} (бот)` : userName,
109
+ email: userEmail,
110
+ scopes,
111
+ ...(isBot ? { scopes_refreshed_at: new Date().toISOString() } : {}),
112
+ };
113
+ setProfile(profileName, profile);
114
+ // Set as active if no active profile
115
+ if (!getActiveProfile()) {
116
+ setActiveProfile(profileName);
117
+ }
118
+ const format = this.getOutputFormat();
119
+ if (format === 'json') {
120
+ this.output({
121
+ profile: profileName,
122
+ type: profileType,
123
+ user: profile.user,
124
+ email: userEmail,
125
+ scopes,
126
+ });
127
+ }
128
+ else if (!flags.quiet) {
129
+ const typeLabel = profileType === 'bot' ? 'bot' : 'user';
130
+ const emailStr = userEmail ? ` (${userEmail})` : '';
131
+ process.stderr.write(`✔ Подключён как: ${profile.user}${emailStr} [${typeLabel}]\n`);
132
+ process.stderr.write(` Скоупы (${scopes.length}): ${scopes.join(' ')}\n`);
133
+ process.stderr.write(` Профиль сохранён [${profileName}]\n`);
134
+ if (isBot) {
135
+ process.stderr.write(` ℹ Скоупы бота обновляются автоматически раз в сутки (синхронно при запуске команды)\n`);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class AuthLogout extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ profile: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'no-header': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ 'no-truncate': import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'no-input': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'no-retry': import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
+ };
24
+ run(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,OAAgB,WAAW,SAA4B;IAEvD,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE3B"}
@@ -0,0 +1,81 @@
1
+ import { Args } from '@oclif/core';
2
+ import * as clack from '@clack/prompts';
3
+ import { BaseCommand } from '../../base-command.js';
4
+ import { listProfiles, deleteProfile } from '../../profiles.js';
5
+ import { outputError } from '../../output.js';
6
+ export default class AuthLogout extends BaseCommand {
7
+ static description = 'Remove a saved profile';
8
+ static examples = [
9
+ '<%= config.bin %> auth logout bot-notify',
10
+ '<%= config.bin %> auth logout',
11
+ ];
12
+ static args = {
13
+ profile: Args.string({
14
+ description: 'Profile name to remove',
15
+ required: false,
16
+ }),
17
+ };
18
+ static flags = {
19
+ ...BaseCommand.baseFlags,
20
+ };
21
+ async run() {
22
+ const { args, flags } = await this.parse(AuthLogout);
23
+ this.parsedFlags = flags;
24
+ const profiles = listProfiles();
25
+ const profileNames = Object.keys(profiles);
26
+ const format = this.getOutputFormat();
27
+ if (profileNames.length === 0) {
28
+ outputError({ error: 'No profiles found', type: 'PACHCA_USAGE_ERROR', code: null }, format);
29
+ this.exit(2);
30
+ }
31
+ let profileName = args.profile;
32
+ if (!profileName) {
33
+ if (this.isInteractive()) {
34
+ // Interactive selection
35
+ const selected = await clack.select({
36
+ message: 'Выберите профиль для удаления:',
37
+ options: profileNames.map((name) => ({
38
+ value: name,
39
+ label: name,
40
+ })),
41
+ });
42
+ if (clack.isCancel(selected)) {
43
+ process.stderr.write('Отменено.\n');
44
+ this.exit(0);
45
+ }
46
+ profileName = selected;
47
+ }
48
+ else {
49
+ // Non-interactive: one profile → delete it; multiple → error
50
+ if (profileNames.length === 1) {
51
+ profileName = profileNames[0];
52
+ }
53
+ else {
54
+ if (format === 'json') {
55
+ this.output({
56
+ error: 'Multiple profiles found, specify which to remove',
57
+ type: 'PACHCA_USAGE_ERROR',
58
+ profiles: profileNames,
59
+ });
60
+ }
61
+ else {
62
+ outputError({ error: 'Multiple profiles found, specify which to remove', type: 'PACHCA_USAGE_ERROR', code: null, profiles: profileNames }, format);
63
+ }
64
+ this.exit(2);
65
+ }
66
+ }
67
+ }
68
+ if (!profiles[profileName]) {
69
+ outputError({ error: `Profile "${profileName}" not found`, type: 'PACHCA_USAGE_ERROR', code: null }, format);
70
+ this.exit(2);
71
+ }
72
+ deleteProfile(profileName);
73
+ if (format === 'json') {
74
+ this.output({ deleted_profile: profileName });
75
+ }
76
+ else {
77
+ this.success(`Профиль ${profileName} удалён`);
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/auth/logout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class AuthRefresh extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ profile: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ columns: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'no-header': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ 'no-truncate': import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'no-color': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'no-input': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'no-retry': import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
+ };
24
+ run(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/refresh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,OAAgB,WAAW,SAAyC;IAEpE,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,KAAK;;;;;;;;;;;;;;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4D3B"}