@ttctl/cli 0.0.0 → 0.1.0-rc.2

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 (395) hide show
  1. package/README.md +44 -9
  2. package/dist/commands/applications/index.d.ts +21 -0
  3. package/dist/commands/applications/index.d.ts.map +1 -0
  4. package/dist/commands/applications/index.js +87 -0
  5. package/dist/commands/applications/index.js.map +1 -0
  6. package/dist/commands/applications/list.d.ts +55 -0
  7. package/dist/commands/applications/list.d.ts.map +1 -0
  8. package/dist/commands/applications/list.js +106 -0
  9. package/dist/commands/applications/list.js.map +1 -0
  10. package/dist/commands/applications/shared.d.ts +14 -0
  11. package/dist/commands/applications/shared.d.ts.map +1 -0
  12. package/dist/commands/applications/shared.js +19 -0
  13. package/dist/commands/applications/shared.js.map +1 -0
  14. package/dist/commands/applications/show.d.ts +51 -0
  15. package/dist/commands/applications/show.d.ts.map +1 -0
  16. package/dist/commands/applications/show.js +154 -0
  17. package/dist/commands/applications/show.js.map +1 -0
  18. package/dist/commands/applications/stats.d.ts +42 -0
  19. package/dist/commands/applications/stats.d.ts.map +1 -0
  20. package/dist/commands/applications/stats.js +69 -0
  21. package/dist/commands/applications/stats.js.map +1 -0
  22. package/dist/commands/auth/index.d.ts +17 -0
  23. package/dist/commands/auth/index.d.ts.map +1 -0
  24. package/dist/commands/auth/index.js +69 -0
  25. package/dist/commands/auth/index.js.map +1 -0
  26. package/dist/commands/auth/init.d.ts +98 -0
  27. package/dist/commands/auth/init.d.ts.map +1 -0
  28. package/dist/commands/auth/init.js +387 -0
  29. package/dist/commands/auth/init.js.map +1 -0
  30. package/dist/commands/auth/signin.d.ts +81 -0
  31. package/dist/commands/auth/signin.d.ts.map +1 -0
  32. package/dist/commands/auth/signin.js +145 -0
  33. package/dist/commands/auth/signin.js.map +1 -0
  34. package/dist/commands/auth/signout.d.ts +133 -0
  35. package/dist/commands/auth/signout.d.ts.map +1 -0
  36. package/dist/commands/auth/signout.js +172 -0
  37. package/dist/commands/auth/signout.js.map +1 -0
  38. package/dist/commands/auth/status.d.ts +62 -0
  39. package/dist/commands/auth/status.d.ts.map +1 -0
  40. package/dist/commands/auth/status.js +98 -0
  41. package/dist/commands/auth/status.js.map +1 -0
  42. package/dist/commands/availability/allocated-hours.d.ts +27 -0
  43. package/dist/commands/availability/allocated-hours.d.ts.map +1 -0
  44. package/dist/commands/availability/allocated-hours.js +61 -0
  45. package/dist/commands/availability/allocated-hours.js.map +1 -0
  46. package/dist/commands/availability/index.d.ts +30 -0
  47. package/dist/commands/availability/index.d.ts.map +1 -0
  48. package/dist/commands/availability/index.js +124 -0
  49. package/dist/commands/availability/index.js.map +1 -0
  50. package/dist/commands/availability/shared.d.ts +11 -0
  51. package/dist/commands/availability/shared.d.ts.map +1 -0
  52. package/dist/commands/availability/shared.js +30 -0
  53. package/dist/commands/availability/shared.js.map +1 -0
  54. package/dist/commands/availability/show.d.ts +32 -0
  55. package/dist/commands/availability/show.d.ts.map +1 -0
  56. package/dist/commands/availability/show.js +86 -0
  57. package/dist/commands/availability/show.js.map +1 -0
  58. package/dist/commands/availability/working-hours.d.ts +53 -0
  59. package/dist/commands/availability/working-hours.d.ts.map +1 -0
  60. package/dist/commands/availability/working-hours.js +151 -0
  61. package/dist/commands/availability/working-hours.js.map +1 -0
  62. package/dist/commands/contracts/index.d.ts +69 -0
  63. package/dist/commands/contracts/index.d.ts.map +1 -0
  64. package/dist/commands/contracts/index.js +198 -0
  65. package/dist/commands/contracts/index.js.map +1 -0
  66. package/dist/commands/engagements/breaks.d.ts +81 -0
  67. package/dist/commands/engagements/breaks.d.ts.map +1 -0
  68. package/dist/commands/engagements/breaks.js +229 -0
  69. package/dist/commands/engagements/breaks.js.map +1 -0
  70. package/dist/commands/engagements/index.d.ts +29 -0
  71. package/dist/commands/engagements/index.d.ts.map +1 -0
  72. package/dist/commands/engagements/index.js +172 -0
  73. package/dist/commands/engagements/index.js.map +1 -0
  74. package/dist/commands/engagements/list.d.ts +49 -0
  75. package/dist/commands/engagements/list.d.ts.map +1 -0
  76. package/dist/commands/engagements/list.js +95 -0
  77. package/dist/commands/engagements/list.js.map +1 -0
  78. package/dist/commands/engagements/shared.d.ts +10 -0
  79. package/dist/commands/engagements/shared.d.ts.map +1 -0
  80. package/dist/commands/engagements/shared.js +31 -0
  81. package/dist/commands/engagements/shared.js.map +1 -0
  82. package/dist/commands/engagements/show.d.ts +19 -0
  83. package/dist/commands/engagements/show.d.ts.map +1 -0
  84. package/dist/commands/engagements/show.js +150 -0
  85. package/dist/commands/engagements/show.js.map +1 -0
  86. package/dist/commands/engagements/stats.d.ts +24 -0
  87. package/dist/commands/engagements/stats.d.ts.map +1 -0
  88. package/dist/commands/engagements/stats.js +51 -0
  89. package/dist/commands/engagements/stats.js.map +1 -0
  90. package/dist/commands/jobs/index.d.ts +49 -0
  91. package/dist/commands/jobs/index.d.ts.map +1 -0
  92. package/dist/commands/jobs/index.js +304 -0
  93. package/dist/commands/jobs/index.js.map +1 -0
  94. package/dist/commands/jobs/interest.d.ts +65 -0
  95. package/dist/commands/jobs/interest.d.ts.map +1 -0
  96. package/dist/commands/jobs/interest.js +172 -0
  97. package/dist/commands/jobs/interest.js.map +1 -0
  98. package/dist/commands/jobs/list.d.ts +81 -0
  99. package/dist/commands/jobs/list.d.ts.map +1 -0
  100. package/dist/commands/jobs/list.js +157 -0
  101. package/dist/commands/jobs/list.js.map +1 -0
  102. package/dist/commands/jobs/search.d.ts +71 -0
  103. package/dist/commands/jobs/search.d.ts.map +1 -0
  104. package/dist/commands/jobs/search.js +163 -0
  105. package/dist/commands/jobs/search.js.map +1 -0
  106. package/dist/commands/jobs/shared.d.ts +79 -0
  107. package/dist/commands/jobs/shared.d.ts.map +1 -0
  108. package/dist/commands/jobs/shared.js +133 -0
  109. package/dist/commands/jobs/shared.js.map +1 -0
  110. package/dist/commands/jobs/show.d.ts +20 -0
  111. package/dist/commands/jobs/show.d.ts.map +1 -0
  112. package/dist/commands/jobs/show.js +135 -0
  113. package/dist/commands/jobs/show.js.map +1 -0
  114. package/dist/commands/payments/index.d.ts +34 -0
  115. package/dist/commands/payments/index.d.ts.map +1 -0
  116. package/dist/commands/payments/index.js +160 -0
  117. package/dist/commands/payments/index.js.map +1 -0
  118. package/dist/commands/payments/methods.d.ts +17 -0
  119. package/dist/commands/payments/methods.d.ts.map +1 -0
  120. package/dist/commands/payments/methods.js +79 -0
  121. package/dist/commands/payments/methods.js.map +1 -0
  122. package/dist/commands/payments/payouts.d.ts +44 -0
  123. package/dist/commands/payments/payouts.d.ts.map +1 -0
  124. package/dist/commands/payments/payouts.js +147 -0
  125. package/dist/commands/payments/payouts.js.map +1 -0
  126. package/dist/commands/payments/rate.d.ts +48 -0
  127. package/dist/commands/payments/rate.d.ts.map +1 -0
  128. package/dist/commands/payments/rate.js +229 -0
  129. package/dist/commands/payments/rate.js.map +1 -0
  130. package/dist/commands/payments/shared.d.ts +10 -0
  131. package/dist/commands/payments/shared.d.ts.map +1 -0
  132. package/dist/commands/payments/shared.js +27 -0
  133. package/dist/commands/payments/shared.js.map +1 -0
  134. package/dist/commands/profile/basic/index.d.ts +18 -0
  135. package/dist/commands/profile/basic/index.d.ts.map +1 -0
  136. package/dist/commands/profile/basic/index.js +79 -0
  137. package/dist/commands/profile/basic/index.js.map +1 -0
  138. package/dist/commands/profile/basic/photo-show.d.ts +28 -0
  139. package/dist/commands/profile/basic/photo-show.d.ts.map +1 -0
  140. package/dist/commands/profile/basic/photo-show.js +112 -0
  141. package/dist/commands/profile/basic/photo-show.js.map +1 -0
  142. package/dist/commands/profile/basic/photo-upload.d.ts +10 -0
  143. package/dist/commands/profile/basic/photo-upload.d.ts.map +1 -0
  144. package/dist/commands/profile/basic/photo-upload.js +61 -0
  145. package/dist/commands/profile/basic/photo-upload.js.map +1 -0
  146. package/dist/commands/profile/basic/set.d.ts +54 -0
  147. package/dist/commands/profile/basic/set.d.ts.map +1 -0
  148. package/dist/commands/profile/basic/set.js +174 -0
  149. package/dist/commands/profile/basic/set.js.map +1 -0
  150. package/dist/commands/profile/basic/show.d.ts +95 -0
  151. package/dist/commands/profile/basic/show.d.ts.map +1 -0
  152. package/dist/commands/profile/basic/show.js +310 -0
  153. package/dist/commands/profile/basic/show.js.map +1 -0
  154. package/dist/commands/profile/certifications/index.d.ts +40 -0
  155. package/dist/commands/profile/certifications/index.d.ts.map +1 -0
  156. package/dist/commands/profile/certifications/index.js +350 -0
  157. package/dist/commands/profile/certifications/index.js.map +1 -0
  158. package/dist/commands/profile/education/index.d.ts +37 -0
  159. package/dist/commands/profile/education/index.d.ts.map +1 -0
  160. package/dist/commands/profile/education/index.js +331 -0
  161. package/dist/commands/profile/education/index.js.map +1 -0
  162. package/dist/commands/profile/employment/index.d.ts +49 -0
  163. package/dist/commands/profile/employment/index.d.ts.map +1 -0
  164. package/dist/commands/profile/employment/index.js +425 -0
  165. package/dist/commands/profile/employment/index.js.map +1 -0
  166. package/dist/commands/profile/external/_shared.d.ts +35 -0
  167. package/dist/commands/profile/external/_shared.d.ts.map +1 -0
  168. package/dist/commands/profile/external/_shared.js +59 -0
  169. package/dist/commands/profile/external/_shared.js.map +1 -0
  170. package/dist/commands/profile/external/advanced-wizard-show.d.ts +15 -0
  171. package/dist/commands/profile/external/advanced-wizard-show.d.ts.map +1 -0
  172. package/dist/commands/profile/external/advanced-wizard-show.js +82 -0
  173. package/dist/commands/profile/external/advanced-wizard-show.js.map +1 -0
  174. package/dist/commands/profile/external/custom-requirements-set.d.ts +32 -0
  175. package/dist/commands/profile/external/custom-requirements-set.d.ts.map +1 -0
  176. package/dist/commands/profile/external/custom-requirements-set.js +116 -0
  177. package/dist/commands/profile/external/custom-requirements-set.js.map +1 -0
  178. package/dist/commands/profile/external/custom-requirements-show.d.ts +16 -0
  179. package/dist/commands/profile/external/custom-requirements-show.d.ts.map +1 -0
  180. package/dist/commands/profile/external/custom-requirements-show.js +84 -0
  181. package/dist/commands/profile/external/custom-requirements-show.js.map +1 -0
  182. package/dist/commands/profile/external/index.d.ts +21 -0
  183. package/dist/commands/profile/external/index.d.ts.map +1 -0
  184. package/dist/commands/profile/external/index.js +113 -0
  185. package/dist/commands/profile/external/index.js.map +1 -0
  186. package/dist/commands/profile/external/readiness.d.ts +15 -0
  187. package/dist/commands/profile/external/readiness.d.ts.map +1 -0
  188. package/dist/commands/profile/external/readiness.js +104 -0
  189. package/dist/commands/profile/external/readiness.js.map +1 -0
  190. package/dist/commands/profile/external/recommendations.d.ts +17 -0
  191. package/dist/commands/profile/external/recommendations.d.ts.map +1 -0
  192. package/dist/commands/profile/external/recommendations.js +97 -0
  193. package/dist/commands/profile/external/recommendations.js.map +1 -0
  194. package/dist/commands/profile/external/show.d.ts +22 -0
  195. package/dist/commands/profile/external/show.d.ts.map +1 -0
  196. package/dist/commands/profile/external/show.js +83 -0
  197. package/dist/commands/profile/external/show.js.map +1 -0
  198. package/dist/commands/profile/external/update.d.ts +37 -0
  199. package/dist/commands/profile/external/update.d.ts.map +1 -0
  200. package/dist/commands/profile/external/update.js +125 -0
  201. package/dist/commands/profile/external/update.js.map +1 -0
  202. package/dist/commands/profile/index.d.ts +16 -0
  203. package/dist/commands/profile/index.d.ts.map +1 -0
  204. package/dist/commands/profile/index.js +81 -0
  205. package/dist/commands/profile/index.js.map +1 -0
  206. package/dist/commands/profile/industries/index.d.ts +43 -0
  207. package/dist/commands/profile/industries/index.d.ts.map +1 -0
  208. package/dist/commands/profile/industries/index.js +258 -0
  209. package/dist/commands/profile/industries/index.js.map +1 -0
  210. package/dist/commands/profile/portfolio/add.d.ts +43 -0
  211. package/dist/commands/profile/portfolio/add.d.ts.map +1 -0
  212. package/dist/commands/profile/portfolio/add.js +181 -0
  213. package/dist/commands/profile/portfolio/add.js.map +1 -0
  214. package/dist/commands/profile/portfolio/highlight.d.ts +11 -0
  215. package/dist/commands/profile/portfolio/highlight.d.ts.map +1 -0
  216. package/dist/commands/profile/portfolio/highlight.js +31 -0
  217. package/dist/commands/profile/portfolio/highlight.js.map +1 -0
  218. package/dist/commands/profile/portfolio/index.d.ts +16 -0
  219. package/dist/commands/profile/portfolio/index.d.ts.map +1 -0
  220. package/dist/commands/profile/portfolio/index.js +121 -0
  221. package/dist/commands/profile/portfolio/index.js.map +1 -0
  222. package/dist/commands/profile/portfolio/list.d.ts +83 -0
  223. package/dist/commands/profile/portfolio/list.d.ts.map +1 -0
  224. package/dist/commands/profile/portfolio/list.js +189 -0
  225. package/dist/commands/profile/portfolio/list.js.map +1 -0
  226. package/dist/commands/profile/portfolio/remove.d.ts +9 -0
  227. package/dist/commands/profile/portfolio/remove.d.ts.map +1 -0
  228. package/dist/commands/profile/portfolio/remove.js +24 -0
  229. package/dist/commands/profile/portfolio/remove.js.map +1 -0
  230. package/dist/commands/profile/portfolio/reorder.d.ts +17 -0
  231. package/dist/commands/profile/portfolio/reorder.d.ts.map +1 -0
  232. package/dist/commands/profile/portfolio/reorder.js +135 -0
  233. package/dist/commands/profile/portfolio/reorder.js.map +1 -0
  234. package/dist/commands/profile/portfolio/shared.d.ts +8 -0
  235. package/dist/commands/profile/portfolio/shared.d.ts.map +1 -0
  236. package/dist/commands/profile/portfolio/shared.js +10 -0
  237. package/dist/commands/profile/portfolio/shared.js.map +1 -0
  238. package/dist/commands/profile/portfolio/update.d.ts +18 -0
  239. package/dist/commands/profile/portfolio/update.d.ts.map +1 -0
  240. package/dist/commands/profile/portfolio/update.js +77 -0
  241. package/dist/commands/profile/portfolio/update.js.map +1 -0
  242. package/dist/commands/profile/portfolio/upload.d.ts +8 -0
  243. package/dist/commands/profile/portfolio/upload.d.ts.map +1 -0
  244. package/dist/commands/profile/portfolio/upload.js +131 -0
  245. package/dist/commands/profile/portfolio/upload.js.map +1 -0
  246. package/dist/commands/profile/resume/cancel-upload.d.ts +9 -0
  247. package/dist/commands/profile/resume/cancel-upload.d.ts.map +1 -0
  248. package/dist/commands/profile/resume/cancel-upload.js +30 -0
  249. package/dist/commands/profile/resume/cancel-upload.js.map +1 -0
  250. package/dist/commands/profile/resume/index.d.ts +15 -0
  251. package/dist/commands/profile/resume/index.d.ts.map +1 -0
  252. package/dist/commands/profile/resume/index.js +42 -0
  253. package/dist/commands/profile/resume/index.js.map +1 -0
  254. package/dist/commands/profile/resume/upload.d.ts +16 -0
  255. package/dist/commands/profile/resume/upload.d.ts.map +1 -0
  256. package/dist/commands/profile/resume/upload.js +65 -0
  257. package/dist/commands/profile/resume/upload.js.map +1 -0
  258. package/dist/commands/profile/reviews/_shared.d.ts +9 -0
  259. package/dist/commands/profile/reviews/_shared.d.ts.map +1 -0
  260. package/dist/commands/profile/reviews/_shared.js +15 -0
  261. package/dist/commands/profile/reviews/_shared.js.map +1 -0
  262. package/dist/commands/profile/reviews/approve-item.d.ts +30 -0
  263. package/dist/commands/profile/reviews/approve-item.d.ts.map +1 -0
  264. package/dist/commands/profile/reviews/approve-item.js +82 -0
  265. package/dist/commands/profile/reviews/approve-item.js.map +1 -0
  266. package/dist/commands/profile/reviews/approve-section.d.ts +15 -0
  267. package/dist/commands/profile/reviews/approve-section.d.ts.map +1 -0
  268. package/dist/commands/profile/reviews/approve-section.js +67 -0
  269. package/dist/commands/profile/reviews/approve-section.js.map +1 -0
  270. package/dist/commands/profile/reviews/index.d.ts +19 -0
  271. package/dist/commands/profile/reviews/index.d.ts.map +1 -0
  272. package/dist/commands/profile/reviews/index.js +71 -0
  273. package/dist/commands/profile/reviews/index.js.map +1 -0
  274. package/dist/commands/profile/reviews/list.d.ts +17 -0
  275. package/dist/commands/profile/reviews/list.d.ts.map +1 -0
  276. package/dist/commands/profile/reviews/list.js +96 -0
  277. package/dist/commands/profile/reviews/list.js.map +1 -0
  278. package/dist/commands/profile/reviews/submit-for-review.d.ts +16 -0
  279. package/dist/commands/profile/reviews/submit-for-review.d.ts.map +1 -0
  280. package/dist/commands/profile/reviews/submit-for-review.js +65 -0
  281. package/dist/commands/profile/reviews/submit-for-review.js.map +1 -0
  282. package/dist/commands/profile/shared.d.ts +46 -0
  283. package/dist/commands/profile/shared.d.ts.map +1 -0
  284. package/dist/commands/profile/shared.js +111 -0
  285. package/dist/commands/profile/shared.js.map +1 -0
  286. package/dist/commands/profile/skills/index.d.ts +29 -0
  287. package/dist/commands/profile/skills/index.d.ts.map +1 -0
  288. package/dist/commands/profile/skills/index.js +475 -0
  289. package/dist/commands/profile/skills/index.js.map +1 -0
  290. package/dist/commands/profile/visas/add.d.ts +19 -0
  291. package/dist/commands/profile/visas/add.d.ts.map +1 -0
  292. package/dist/commands/profile/visas/add.js +37 -0
  293. package/dist/commands/profile/visas/add.js.map +1 -0
  294. package/dist/commands/profile/visas/index.d.ts +13 -0
  295. package/dist/commands/profile/visas/index.d.ts.map +1 -0
  296. package/dist/commands/profile/visas/index.js +69 -0
  297. package/dist/commands/profile/visas/index.js.map +1 -0
  298. package/dist/commands/profile/visas/list.d.ts +40 -0
  299. package/dist/commands/profile/visas/list.d.ts.map +1 -0
  300. package/dist/commands/profile/visas/list.js +115 -0
  301. package/dist/commands/profile/visas/list.js.map +1 -0
  302. package/dist/commands/profile/visas/remove.d.ts +8 -0
  303. package/dist/commands/profile/visas/remove.d.ts.map +1 -0
  304. package/dist/commands/profile/visas/remove.js +23 -0
  305. package/dist/commands/profile/visas/remove.js.map +1 -0
  306. package/dist/commands/profile/visas/shared.d.ts +11 -0
  307. package/dist/commands/profile/visas/shared.d.ts.map +1 -0
  308. package/dist/commands/profile/visas/shared.js +16 -0
  309. package/dist/commands/profile/visas/shared.js.map +1 -0
  310. package/dist/commands/profile/visas/update.d.ts +13 -0
  311. package/dist/commands/profile/visas/update.d.ts.map +1 -0
  312. package/dist/commands/profile/visas/update.js +44 -0
  313. package/dist/commands/profile/visas/update.js.map +1 -0
  314. package/dist/commands/timesheet/index.d.ts +24 -0
  315. package/dist/commands/timesheet/index.d.ts.map +1 -0
  316. package/dist/commands/timesheet/index.js +98 -0
  317. package/dist/commands/timesheet/index.js.map +1 -0
  318. package/dist/commands/timesheet/list.d.ts +40 -0
  319. package/dist/commands/timesheet/list.d.ts.map +1 -0
  320. package/dist/commands/timesheet/list.js +79 -0
  321. package/dist/commands/timesheet/list.js.map +1 -0
  322. package/dist/commands/timesheet/shared.d.ts +10 -0
  323. package/dist/commands/timesheet/shared.d.ts.map +1 -0
  324. package/dist/commands/timesheet/shared.js +35 -0
  325. package/dist/commands/timesheet/shared.js.map +1 -0
  326. package/dist/commands/timesheet/show.d.ts +19 -0
  327. package/dist/commands/timesheet/show.d.ts.map +1 -0
  328. package/dist/commands/timesheet/show.js +109 -0
  329. package/dist/commands/timesheet/show.js.map +1 -0
  330. package/dist/commands/timesheet/submit.d.ts +50 -0
  331. package/dist/commands/timesheet/submit.d.ts.map +1 -0
  332. package/dist/commands/timesheet/submit.js +151 -0
  333. package/dist/commands/timesheet/submit.js.map +1 -0
  334. package/dist/crash-handlers.d.ts +67 -0
  335. package/dist/crash-handlers.d.ts.map +1 -0
  336. package/dist/crash-handlers.js +78 -0
  337. package/dist/crash-handlers.js.map +1 -0
  338. package/dist/errors.d.ts +45 -0
  339. package/dist/errors.d.ts.map +1 -0
  340. package/dist/errors.js +57 -0
  341. package/dist/errors.js.map +1 -0
  342. package/dist/index.d.ts +8 -0
  343. package/dist/index.d.ts.map +1 -0
  344. package/dist/index.js +15 -0
  345. package/dist/index.js.map +1 -0
  346. package/dist/lib/config-context.d.ts +41 -0
  347. package/dist/lib/config-context.d.ts.map +1 -0
  348. package/dist/lib/config-context.js +74 -0
  349. package/dist/lib/config-context.js.map +1 -0
  350. package/dist/lib/dry-run.d.ts +70 -0
  351. package/dist/lib/dry-run.d.ts.map +1 -0
  352. package/dist/lib/dry-run.js +114 -0
  353. package/dist/lib/dry-run.js.map +1 -0
  354. package/dist/lib/empty-state-cta.d.ts +63 -0
  355. package/dist/lib/empty-state-cta.d.ts.map +1 -0
  356. package/dist/lib/empty-state-cta.js +88 -0
  357. package/dist/lib/empty-state-cta.js.map +1 -0
  358. package/dist/lib/envelopes.d.ts +540 -0
  359. package/dist/lib/envelopes.d.ts.map +1 -0
  360. package/dist/lib/envelopes.js +598 -0
  361. package/dist/lib/envelopes.js.map +1 -0
  362. package/dist/lib/error-routing.d.ts +49 -0
  363. package/dist/lib/error-routing.d.ts.map +1 -0
  364. package/dist/lib/error-routing.js +72 -0
  365. package/dist/lib/error-routing.js.map +1 -0
  366. package/dist/lib/format-helpers.d.ts +65 -0
  367. package/dist/lib/format-helpers.d.ts.map +1 -0
  368. package/dist/lib/format-helpers.js +79 -0
  369. package/dist/lib/format-helpers.js.map +1 -0
  370. package/dist/lib/format-overrides.d.ts +81 -0
  371. package/dist/lib/format-overrides.d.ts.map +1 -0
  372. package/dist/lib/format-overrides.js +55 -0
  373. package/dist/lib/format-overrides.js.map +1 -0
  374. package/dist/lib/freetext.d.ts +83 -0
  375. package/dist/lib/freetext.d.ts.map +1 -0
  376. package/dist/lib/freetext.js +182 -0
  377. package/dist/lib/freetext.js.map +1 -0
  378. package/dist/lib/kill-switch-hook.d.ts +49 -0
  379. package/dist/lib/kill-switch-hook.d.ts.map +1 -0
  380. package/dist/lib/kill-switch-hook.js +34 -0
  381. package/dist/lib/kill-switch-hook.js.map +1 -0
  382. package/dist/lib/output.d.ts +173 -0
  383. package/dist/lib/output.d.ts.map +1 -0
  384. package/dist/lib/output.js +177 -0
  385. package/dist/lib/output.js.map +1 -0
  386. package/dist/lib/pagination.d.ts +49 -0
  387. package/dist/lib/pagination.d.ts.map +1 -0
  388. package/dist/lib/pagination.js +36 -0
  389. package/dist/lib/pagination.js.map +1 -0
  390. package/dist/program.d.ts +80 -0
  391. package/dist/program.d.ts.map +1 -0
  392. package/dist/program.js +273 -0
  393. package/dist/program.js.map +1 -0
  394. package/package.json +35 -13
  395. package/index.js +0 -7
@@ -0,0 +1,18 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Build the `ttctl profile basic` command tree. Exposes four leaves:
4
+ *
5
+ * - `show` — print the user's profile summary
6
+ * - `update` — update bio / headline (dispatches to `profile.basic.set()`;
7
+ * CLI verb is `update` per #68 epic verb economy, core
8
+ * function is `set` per #69's `updateProfile` → `set` rename)
9
+ * - `photo show` — print URLs of the user's profile photo variants
10
+ * - `photo upload` — upload a new profile photo from a local file
11
+ *
12
+ * The `photo` group is itself a Commander.js sub-command tree so users
13
+ * type `ttctl profile basic photo show` rather than the flatter
14
+ * `ttctl profile basic photo-show`. MCP tool names use the joined form
15
+ * (`ttctl_profile_basic_photo_show`) per project policy.
16
+ */
17
+ export declare function buildProfileBasicCommand(): Command;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/basic/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAU5C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAwElD"}
@@ -0,0 +1,79 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { Command, Option } from "commander";
4
+ import { markMutation } from "../../../lib/dry-run.js";
5
+ import { OUTPUT_FORMATS } from "../../../lib/output.js";
6
+ import { runProfileBasicPhotoShow } from "./photo-show.js";
7
+ import { runProfileBasicPhotoUpload } from "./photo-upload.js";
8
+ import { runProfileBasicShow } from "./show.js";
9
+ import { runProfileBasicUpdate } from "./set.js";
10
+ /**
11
+ * Build the `ttctl profile basic` command tree. Exposes four leaves:
12
+ *
13
+ * - `show` — print the user's profile summary
14
+ * - `update` — update bio / headline (dispatches to `profile.basic.set()`;
15
+ * CLI verb is `update` per #68 epic verb economy, core
16
+ * function is `set` per #69's `updateProfile` → `set` rename)
17
+ * - `photo show` — print URLs of the user's profile photo variants
18
+ * - `photo upload` — upload a new profile photo from a local file
19
+ *
20
+ * The `photo` group is itself a Commander.js sub-command tree so users
21
+ * type `ttctl profile basic photo show` rather than the flatter
22
+ * `ttctl profile basic photo-show`. MCP tool names use the joined form
23
+ * (`ttctl_profile_basic_photo_show`) per project policy.
24
+ */
25
+ export function buildProfileBasicCommand() {
26
+ const basic = new Command("basic").description("View and update the basic-info section of your profile (bio, headline, photo)");
27
+ basic
28
+ .command("show")
29
+ .description("Print a summary of the signed-in user's Toptal Talent profile")
30
+ .addOption(new Option("-o, --output <format>", "output format")
31
+ .choices(OUTPUT_FORMATS)
32
+ .default("pretty"))
33
+ .action(async (options) => {
34
+ await runProfileBasicShow(options.output);
35
+ });
36
+ // Marked as a mutation (issue #52) so the global `--dry-run` flag
37
+ // routes through to `profile.basic.set()`'s `dryRun` option. The
38
+ // top-level alias `ttctl profile update` (registered in
39
+ // `commands/profile/index.ts`) is also marked. Photo upload (a
40
+ // mutation) is NOT marked yet — until #10 lands the MCP tools and
41
+ // the dry-run path is wired into multipart mutations, the global
42
+ // flag is a no-op there and the read-command stderr note (slightly
43
+ // inaccurate text) fires. Tracked in the same #52 § Out of Scope
44
+ // text and addressable in a follow-up.
45
+ markMutation(basic
46
+ .command("update")
47
+ .description("Update editable fields on the signed-in user's profile (currently bio + headline)")
48
+ .option("--bio <text>", 'long-form bio (inline text, "-" for stdin, or "@path" to read from file)')
49
+ .option("--headline <text>", 'short tagline (inline text, "-" for stdin, or "@path" to read from file)')
50
+ .option("--edit", "open $EDITOR to compose the bio interactively (cannot be combined with --bio)")
51
+ .addOption(new Option("-o, --output <format>", "output format")
52
+ .choices(OUTPUT_FORMATS)
53
+ .default("pretty"))
54
+ .action(async (options) => {
55
+ await runProfileBasicUpdate(options);
56
+ }));
57
+ const photo = new Command("photo").description("View or upload the photo on your profile");
58
+ photo
59
+ .command("show")
60
+ .description("Print the URLs of the signed-in user's profile photo variants")
61
+ .addOption(new Option("-o, --output <format>", "output format")
62
+ .choices(OUTPUT_FORMATS)
63
+ .default("pretty"))
64
+ .action(async (options) => {
65
+ await runProfileBasicPhotoShow(options.output);
66
+ });
67
+ photo
68
+ .command("upload <file>")
69
+ .description("Upload a new profile photo from a local image file (jpg / png / gif / webp)")
70
+ .addOption(new Option("-o, --output <format>", "output format")
71
+ .choices(OUTPUT_FORMATS)
72
+ .default("pretty"))
73
+ .action(async (file, options) => {
74
+ await runProfileBasicPhotoUpload(file, options.output);
75
+ });
76
+ basic.addCommand(photo);
77
+ return basic;
78
+ }
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/profile/basic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile basic photo show`. Loads the persisted
5
+ * auth token and dispatches `profile.basic.photoShow()` to fetch the URLs
6
+ * of the user's profile photo (default / original / small variants plus
7
+ * the server's recommended crop rectangle). Routes the typed payload
8
+ * through `emitResult` (#71) so users can switch between text / JSON /
9
+ * table output.
10
+ *
11
+ * Domain errors are surfaced via `handlePhotoShowError`, which knows how
12
+ * to render `Cf403Error` walkthroughs and `ProfileError` codes.
13
+ */
14
+ export declare function runProfileBasicPhotoShow(format: OutputFormat): Promise<void>;
15
+ /**
16
+ * Format the typed photo payload as a multi-line summary. Pure function —
17
+ * no I/O — directly unit-testable. Each variant URL gets its own line;
18
+ * the cropped rectangle and resolution-readiness flag are summarised at
19
+ * the bottom for quick visual inspection.
20
+ */
21
+ export declare function formatPhotoText(payload: profile.basic.PhotoUrl): string;
22
+ /**
23
+ * Format the typed photo payload as a `cli-table3`-rendered key/value
24
+ * table. Same field selection as `formatPhotoText`. Width adapts to the
25
+ * terminal but never narrower than enough for a wrapped URL.
26
+ */
27
+ export declare function formatPhotoTable(payload: profile.basic.PhotoUrl, terminalWidth?: number): string;
28
+ //# sourceMappingURL=photo-show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"photo-show.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/basic/photo-show.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAMlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAelF;AA8BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAcvE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC/B,aAAa,GAAE,MAAqC,GACnD,MAAM,CAmBR"}
@@ -0,0 +1,112 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import Table from "cli-table3";
4
+ import { TtctlError, profile } from "@ttctl/core";
5
+ import { presentTtctlError } from "../../../errors.js";
6
+ import { emitErrorAndExit } from "../../../lib/envelopes.js";
7
+ import { emitResult } from "../../../lib/output.js";
8
+ import { loadAuthTokenOrExit } from "../shared.js";
9
+ /**
10
+ * Action handler for `ttctl profile basic photo show`. Loads the persisted
11
+ * auth token and dispatches `profile.basic.photoShow()` to fetch the URLs
12
+ * of the user's profile photo (default / original / small variants plus
13
+ * the server's recommended crop rectangle). Routes the typed payload
14
+ * through `emitResult` (#71) so users can switch between text / JSON /
15
+ * table output.
16
+ *
17
+ * Domain errors are surfaced via `handlePhotoShowError`, which knows how
18
+ * to render `Cf403Error` walkthroughs and `ProfileError` codes.
19
+ */
20
+ export async function runProfileBasicPhotoShow(format) {
21
+ const token = await loadAuthTokenOrExit("profile photo show", format);
22
+ let photo;
23
+ try {
24
+ photo = await profile.basic.photoShow(token);
25
+ }
26
+ catch (err) {
27
+ handlePhotoShowError(err, format);
28
+ return;
29
+ }
30
+ emitResult(photo, format, {
31
+ pretty: formatPhotoText,
32
+ table: formatPhotoTable,
33
+ });
34
+ }
35
+ function handlePhotoShowError(err, format) {
36
+ if (err instanceof TtctlError) {
37
+ if (format === "pretty")
38
+ presentTtctlError(err);
39
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
40
+ emitErrorAndExit({
41
+ operation: "profile.basic.photo.show",
42
+ format,
43
+ errors,
44
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
45
+ });
46
+ }
47
+ if (err instanceof profile.basic.ProfileError) {
48
+ emitErrorAndExit({
49
+ operation: "profile.basic.photo.show",
50
+ format,
51
+ errors: [{ code: err.code, message: err.message }],
52
+ prettySummary: `profile photo show failed (${err.code}): ${err.message}`,
53
+ });
54
+ }
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ emitErrorAndExit({
57
+ operation: "profile.basic.photo.show",
58
+ format,
59
+ errors: [{ code: "INTERNAL_ERROR", message }],
60
+ prettySummary: `profile photo show failed: ${message}`,
61
+ });
62
+ }
63
+ /**
64
+ * Format the typed photo payload as a multi-line summary. Pure function —
65
+ * no I/O — directly unit-testable. Each variant URL gets its own line;
66
+ * the cropped rectangle and resolution-readiness flag are summarised at
67
+ * the bottom for quick visual inspection.
68
+ */
69
+ export function formatPhotoText(payload) {
70
+ const lines = [];
71
+ if (payload.default !== null)
72
+ lines.push(`default: ${payload.default}`);
73
+ if (payload.original !== null)
74
+ lines.push(`original: ${payload.original}`);
75
+ if (payload.small !== null)
76
+ lines.push(`small: ${payload.small}`);
77
+ if (lines.length === 0) {
78
+ lines.push("(no photo set)");
79
+ }
80
+ if (payload.cropped !== null) {
81
+ const c = payload.cropped;
82
+ lines.push(`cropped: x=${c.x.toString()} y=${c.y.toString()} ${c.width.toString()}×${c.height.toString()}`);
83
+ }
84
+ lines.push(`resolution: ${payload.isResolutionSatisfied ? "OK" : "below requirements"}`);
85
+ return lines.join("\n");
86
+ }
87
+ /**
88
+ * Format the typed photo payload as a `cli-table3`-rendered key/value
89
+ * table. Same field selection as `formatPhotoText`. Width adapts to the
90
+ * terminal but never narrower than enough for a wrapped URL.
91
+ */
92
+ export function formatPhotoTable(payload, terminalWidth = process.stdout.columns || 80) {
93
+ // 18 cols leaves room for "resolution_ok" (13 chars) plus cli-table3
94
+ // padding (2 chars per side), the longest key in the table.
95
+ const fieldWidth = 18;
96
+ const valueWidth = Math.max(40, terminalWidth - fieldWidth - 5);
97
+ const table = new Table({
98
+ head: ["Field", "Value"],
99
+ colWidths: [fieldWidth, valueWidth],
100
+ wordWrap: true,
101
+ });
102
+ table.push(["default", payload.default ?? "(unset)"]);
103
+ table.push(["original", payload.original ?? "(unset)"]);
104
+ table.push(["small", payload.small ?? "(unset)"]);
105
+ if (payload.cropped !== null) {
106
+ const c = payload.cropped;
107
+ table.push(["cropped", `x=${c.x.toString()} y=${c.y.toString()} ${c.width.toString()}×${c.height.toString()}`]);
108
+ }
109
+ table.push(["resolution_ok", payload.isResolutionSatisfied ? "true" : "false"]);
110
+ return table.toString();
111
+ }
112
+ //# sourceMappingURL=photo-show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"photo-show.js","sourceRoot":"","sources":["../../../../src/commands/profile/basic/photo-show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { OutputFormat } from "../../../lib/output.js";
2
+ /**
3
+ * Action handler for `ttctl profile basic photo upload <file>`. Reads the
4
+ * file path the user supplied (commander.js positional argument), loads
5
+ * the persisted auth token, and dispatches `profile.basic.photoUpload()`.
6
+ * Emits the v0.4 update envelope (#128) — photo upload is conceptually a
7
+ * profile-photo update.
8
+ */
9
+ export declare function runProfileBasicPhotoUpload(filePath: string, format: OutputFormat): Promise<void>;
10
+ //# sourceMappingURL=photo-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"photo-upload.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/basic/photo-upload.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtG"}
@@ -0,0 +1,61 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { TtctlError, profile } from "@ttctl/core";
4
+ import { presentTtctlError } from "../../../errors.js";
5
+ import { emitErrorAndExit, emitUpdateSuccess } from "../../../lib/envelopes.js";
6
+ import { loadAuthTokenOrExit } from "../shared.js";
7
+ import { formatPhotoText } from "./photo-show.js";
8
+ /**
9
+ * Action handler for `ttctl profile basic photo upload <file>`. Reads the
10
+ * file path the user supplied (commander.js positional argument), loads
11
+ * the persisted auth token, and dispatches `profile.basic.photoUpload()`.
12
+ * Emits the v0.4 update envelope (#128) — photo upload is conceptually a
13
+ * profile-photo update.
14
+ */
15
+ export async function runProfileBasicPhotoUpload(filePath, format) {
16
+ const token = await loadAuthTokenOrExit("profile photo upload", format);
17
+ let result;
18
+ try {
19
+ result = await profile.basic.photoUpload(token, { file: filePath });
20
+ }
21
+ catch (err) {
22
+ handlePhotoUploadError(err, format);
23
+ return;
24
+ }
25
+ emitUpdateSuccess({
26
+ operation: "profile.basic.photo-upload",
27
+ format,
28
+ updated: result,
29
+ prettySummary: "Photo updated.",
30
+ prettyEntity: formatPhotoText,
31
+ });
32
+ }
33
+ function handlePhotoUploadError(err, format) {
34
+ if (err instanceof TtctlError) {
35
+ if (format === "pretty")
36
+ presentTtctlError(err);
37
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
38
+ emitErrorAndExit({
39
+ operation: "profile.basic.photo-upload",
40
+ format,
41
+ errors,
42
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
43
+ });
44
+ }
45
+ if (err instanceof profile.basic.ProfileError) {
46
+ emitErrorAndExit({
47
+ operation: "profile.basic.photo-upload",
48
+ format,
49
+ errors: [{ code: err.code, message: err.message }],
50
+ prettySummary: `profile photo upload failed (${err.code}): ${err.message}`,
51
+ });
52
+ }
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ emitErrorAndExit({
55
+ operation: "profile.basic.photo-upload",
56
+ format,
57
+ errors: [{ code: "INTERNAL_ERROR", message }],
58
+ prettySummary: `profile photo upload failed: ${message}`,
59
+ });
60
+ }
61
+ //# sourceMappingURL=photo-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"photo-upload.js","sourceRoot":"","sources":["../../../../src/commands/profile/basic/photo-upload.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,QAAgB,EAAE,MAAoB;IACrF,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAExE,IAAI,MAA8B,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,iBAAiB,CAAC;QAChB,SAAS,EAAE,4BAA4B;QACvC,MAAM;QACN,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,gBAAgB;QAC/B,YAAY,EAAE,eAAe;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAY,EAAE,MAAoB;IAChE,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,QAAQ;YAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAoB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/F,gBAAgB,CAAC;YACf,SAAS,EAAE,4BAA4B;YACvC,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,YAAY,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,gBAAgB,CAAC;YACf,SAAS,EAAE,4BAA4B;YACvC,MAAM;YACN,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAClD,aAAa,EAAE,gCAAgC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,gBAAgB,CAAC;QACf,SAAS,EAAE,4BAA4B;QACvC,MAAM;QACN,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC7C,aAAa,EAAE,gCAAgC,OAAO,EAAE;KACzD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile basic update` (also reachable as the
5
+ * short-form `ttctl profile update`). Validates that at least one of
6
+ * `--bio` / `--headline` was supplied (per the issue's AC), loads the
7
+ * persisted auth token, dispatches the mutation via `profile.basic.set()`,
8
+ * then prints either a human-readable confirmation or the raw payload
9
+ * depending on the `--output` format.
10
+ *
11
+ * Both `--bio` and `--headline` accept the four-mode free-text input
12
+ * surface from `lib/freetext.ts` (#70):
13
+ * - inline text (`--bio "..."`)
14
+ * - stdin (`--bio -`)
15
+ * - file (`--bio @path/to/bio.md`)
16
+ * - editor (`--edit`, opens `$EDITOR` on the bio buffer)
17
+ *
18
+ * Free-text resolution happens BEFORE auth/token I/O — input mistakes
19
+ * (missing file, mode conflict) surface as `profile update failed (CODE)`
20
+ * with an actionable code, never as a confusing post-network error.
21
+ *
22
+ * Note on naming: the user-facing CLI verb is `update` (per #69 AC and the
23
+ * #68 epic verb economy `add / remove / update / show / list`); the core
24
+ * function it dispatches to is `profile.basic.set()` (per #69's explicit
25
+ * `updateProfile` → `set` rename to match the core verb economy
26
+ * `add / rm / set / show / list`). The CLI verb mismatch with the core
27
+ * function name is intentional: the CLI surface speaks the user-visible
28
+ * verb economy, the core surface speaks the implementation verb economy.
29
+ *
30
+ * Domain errors are routed through `handleProfileUpdateError`, which knows
31
+ * how to surface `Cf403Error` walkthroughs and `ProfileError` codes.
32
+ */
33
+ export declare function runProfileBasicUpdate(options: {
34
+ bio?: string;
35
+ headline?: string;
36
+ edit?: boolean;
37
+ output: OutputFormat;
38
+ }): Promise<void>;
39
+ /**
40
+ * Pretty entity preview for the basic-update envelope. Kept separate
41
+ * from the JSON / YAML wire shape: the wire payload is the full
42
+ * `UpdateProfileResult`; this helper only renders the human-readable
43
+ * subset (bio + headline). The notice (when present) flows through
44
+ * the envelope's `notice` field, NOT this body — `emitUpdateSuccess`
45
+ * appends it as a trailing indented line in pretty mode.
46
+ *
47
+ * Lines are truncated at 80 columns (one trailing `…` ellipsis when
48
+ * the source exceeds the limit) so the terminal output stays in a
49
+ * single line per field even for verbose bios.
50
+ *
51
+ * Pure — directly unit-testable.
52
+ */
53
+ export declare function formatUpdatePrettyEntity(result: profile.basic.UpdateProfileResult): string;
54
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/basic/set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAOlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB;AAoCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,MAAM,CAU1F"}
@@ -0,0 +1,174 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { TtctlError, profile } from "@ttctl/core";
4
+ import { presentTtctlError } from "../../../errors.js";
5
+ import { getCliDryRun } from "../../../lib/dry-run.js";
6
+ import { emitDryRunSuccess, emitErrorAndExit, emitUpdateSuccess } from "../../../lib/envelopes.js";
7
+ import { FreeTextError, resolveFreeText } from "../../../lib/freetext.js";
8
+ import { loadAuthTokenOrExit } from "../shared.js";
9
+ import { truncate } from "./show.js";
10
+ /**
11
+ * Action handler for `ttctl profile basic update` (also reachable as the
12
+ * short-form `ttctl profile update`). Validates that at least one of
13
+ * `--bio` / `--headline` was supplied (per the issue's AC), loads the
14
+ * persisted auth token, dispatches the mutation via `profile.basic.set()`,
15
+ * then prints either a human-readable confirmation or the raw payload
16
+ * depending on the `--output` format.
17
+ *
18
+ * Both `--bio` and `--headline` accept the four-mode free-text input
19
+ * surface from `lib/freetext.ts` (#70):
20
+ * - inline text (`--bio "..."`)
21
+ * - stdin (`--bio -`)
22
+ * - file (`--bio @path/to/bio.md`)
23
+ * - editor (`--edit`, opens `$EDITOR` on the bio buffer)
24
+ *
25
+ * Free-text resolution happens BEFORE auth/token I/O — input mistakes
26
+ * (missing file, mode conflict) surface as `profile update failed (CODE)`
27
+ * with an actionable code, never as a confusing post-network error.
28
+ *
29
+ * Note on naming: the user-facing CLI verb is `update` (per #69 AC and the
30
+ * #68 epic verb economy `add / remove / update / show / list`); the core
31
+ * function it dispatches to is `profile.basic.set()` (per #69's explicit
32
+ * `updateProfile` → `set` rename to match the core verb economy
33
+ * `add / rm / set / show / list`). The CLI verb mismatch with the core
34
+ * function name is intentional: the CLI surface speaks the user-visible
35
+ * verb economy, the core surface speaks the implementation verb economy.
36
+ *
37
+ * Domain errors are routed through `handleProfileUpdateError`, which knows
38
+ * how to surface `Cf403Error` walkthroughs and `ProfileError` codes.
39
+ */
40
+ export async function runProfileBasicUpdate(options) {
41
+ let bio;
42
+ let headline;
43
+ try {
44
+ bio = await resolveFreeText(options.bio, {
45
+ flagName: "bio",
46
+ enableEditor: options.edit ?? false,
47
+ });
48
+ headline = await resolveFreeText(options.headline, { flagName: "headline" });
49
+ }
50
+ catch (err) {
51
+ if (err instanceof FreeTextError) {
52
+ emitErrorAndExit({
53
+ operation: "profile.basic.update",
54
+ format: options.output,
55
+ errors: [{ code: err.code, message: err.message }],
56
+ prettySummary: `profile update failed (${err.code}): ${err.message}`,
57
+ });
58
+ }
59
+ throw err;
60
+ }
61
+ if (bio === undefined && headline === undefined) {
62
+ emitErrorAndExit({
63
+ operation: "profile.basic.update",
64
+ format: options.output,
65
+ errors: [
66
+ {
67
+ code: "VALIDATION_ERROR",
68
+ message: "profile update requires at least one of --bio, --headline, or --edit.",
69
+ hint: 'ttctl profile update --headline "Senior backend engineer"',
70
+ },
71
+ ],
72
+ prettySummary: 'profile update requires at least one of --bio, --headline, or --edit.\nExample: ttctl profile update --headline "Senior backend engineer"',
73
+ });
74
+ }
75
+ const changes = {};
76
+ if (bio !== undefined)
77
+ changes.bio = bio;
78
+ if (headline !== undefined)
79
+ changes.headline = headline;
80
+ const token = await loadAuthTokenOrExit("profile update", options.output);
81
+ // Route through the core's `dryRun` option (issue #52) when the
82
+ // global `--dry-run` flag is set. The captured value is `false` for
83
+ // normal apply-path invocations — `set()` returns `kind: "applied"`
84
+ // and the existing `emitUpdateSuccess` path runs. With `dryRun: true`,
85
+ // `set()` short-circuits BEFORE any transport call (read or write)
86
+ // and returns `kind: "preview"` carrying a structured
87
+ // `DryRunPreview` — emit it as a `dryRun: true` envelope and exit 0.
88
+ const dryRun = getCliDryRun();
89
+ let outcome;
90
+ try {
91
+ outcome = await profile.basic.set(token, changes, { dryRun });
92
+ }
93
+ catch (err) {
94
+ handleProfileUpdateError(err, options.output);
95
+ return;
96
+ }
97
+ if (outcome.kind === "preview") {
98
+ emitDryRunSuccess({
99
+ operation: "profile.basic.update",
100
+ format: options.output,
101
+ preview: outcome.preview,
102
+ });
103
+ return;
104
+ }
105
+ const { result } = outcome;
106
+ emitUpdateSuccess({
107
+ operation: "profile.basic.update",
108
+ format: options.output,
109
+ updated: result,
110
+ prettySummary: "Profile updated.",
111
+ prettyEntity: formatUpdatePrettyEntity,
112
+ notice: result.notice ?? undefined,
113
+ });
114
+ }
115
+ /**
116
+ * Route `profile.basic.set()` errors through the envelope ABI (#128).
117
+ * Mirrors `handleProfileShowError` from `show.ts` — kept separate so
118
+ * the user-visible "profile update failed (CODE)" prefix is accurate
119
+ * (vs. a "profile show failed" prefix that would be misleading).
120
+ */
121
+ function handleProfileUpdateError(err, format) {
122
+ if (err instanceof TtctlError) {
123
+ if (format === "pretty")
124
+ presentTtctlError(err);
125
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
126
+ emitErrorAndExit({
127
+ operation: "profile.basic.update",
128
+ format,
129
+ errors,
130
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
131
+ });
132
+ }
133
+ if (err instanceof profile.basic.ProfileError) {
134
+ emitErrorAndExit({
135
+ operation: "profile.basic.update",
136
+ format,
137
+ errors: [{ code: err.code, message: err.message }],
138
+ prettySummary: `profile update failed (${err.code}): ${err.message}`,
139
+ });
140
+ }
141
+ const message = err instanceof Error ? err.message : String(err);
142
+ emitErrorAndExit({
143
+ operation: "profile.basic.update",
144
+ format,
145
+ errors: [{ code: "INTERNAL_ERROR", message }],
146
+ prettySummary: `profile update failed: ${message}`,
147
+ });
148
+ }
149
+ /**
150
+ * Pretty entity preview for the basic-update envelope. Kept separate
151
+ * from the JSON / YAML wire shape: the wire payload is the full
152
+ * `UpdateProfileResult`; this helper only renders the human-readable
153
+ * subset (bio + headline). The notice (when present) flows through
154
+ * the envelope's `notice` field, NOT this body — `emitUpdateSuccess`
155
+ * appends it as a trailing indented line in pretty mode.
156
+ *
157
+ * Lines are truncated at 80 columns (one trailing `…` ellipsis when
158
+ * the source exceeds the limit) so the terminal output stays in a
159
+ * single line per field even for verbose bios.
160
+ *
161
+ * Pure — directly unit-testable.
162
+ */
163
+ export function formatUpdatePrettyEntity(result) {
164
+ const { profile: updatedProfile } = result;
165
+ const lines = [];
166
+ if (updatedProfile.about !== null) {
167
+ lines.push(truncate(`bio: ${updatedProfile.about}`, 80));
168
+ }
169
+ if (updatedProfile.quote !== null) {
170
+ lines.push(truncate(`headline: ${updatedProfile.quote}`, 80));
171
+ }
172
+ return lines.join("\n");
173
+ }
174
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/commands/profile/basic/set.ts"],"names":[],"mappings":"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"}