@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,133 @@
1
+ import type { SignOutResult as CoreSignOutResult } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../lib/output.js";
3
+ /**
4
+ * Output format for `ttctl auth signout`. Aligned with the cross-CLI
5
+ * `OutputFormat` post-#126: `pretty` (default) is the human-readable
6
+ * confirmation, `json` and `yaml` emit the machine-readable shape for
7
+ * scripting.
8
+ */
9
+ export interface AuthSignOutOptions {
10
+ output: OutputFormat;
11
+ }
12
+ /**
13
+ * Server-side LogOut outcome surfaced alongside the local-clear result.
14
+ * Stable strings so scripts can branch on the JSON / YAML output without
15
+ * pattern-matching prose. Maps from `core.signOut()`'s
16
+ * {@link CoreSignOutResult} discriminated union plus the "no token to
17
+ * call with" short-circuit.
18
+ *
19
+ * **Naming is deliberately scoped to "log-out", not "revoke"**. Live
20
+ * evidence (issue #180, 2026-05-12) shows the `LogOut` mutation on
21
+ * `talent_profile/graphql` succeeds but does NOT propagate to bearer
22
+ * invalidation for subsequent `mobile-gateway` calls — the bearer remains
23
+ * valid against `getAuthStatus` across t=0/30/60/180/300s. The 24-72h
24
+ * natural aging-out (CLAUDE.md § Auth Model) is the load-bearing
25
+ * revocation defense. `serverLogOut: "logged-out"` therefore claims only
26
+ * "the LogOut mutation was acknowledged by talent_profile" — NOT "the
27
+ * bearer is now invalid for downstream calls".
28
+ *
29
+ * `logged-out` — talent_profile responded `data.logOut.success === true`;
30
+ * the LogOut flow itself was acknowledged (audit log,
31
+ * web-session/cookie cleanup, defense-in-depth signal).
32
+ * Does NOT imply bearer revocation — see note above.
33
+ * `already-invalid` — bearer was already invalid server-side (HTTP 401/403 or
34
+ * GraphQL auth-revoke code); user intent (kill the bearer)
35
+ * is satisfied transitively.
36
+ * `skipped` — no token to call with (idempotent local-only signout).
37
+ * `unreachable` — could not deliver the LogOut signal (network /
38
+ * HTTP / wire-shape divergence). The local clear still
39
+ * ran; the 24-72h aging-out is the load-bearing defense.
40
+ */
41
+ export type ServerLogOutOutcome = "logged-out" | "already-invalid" | "skipped" | "unreachable";
42
+ /**
43
+ * Map a {@link CoreSignOutResult} to the CLI's {@link ServerLogOutOutcome}.
44
+ * Collapses the per-reason discriminator of `unreachable` / `invalid` into
45
+ * the four CLI-level outcomes. The full reason is surfaced separately via
46
+ * {@link serverLogOutStderrWarning} for the unreachable path.
47
+ */
48
+ export declare function mapCoreSignOutResult(result: CoreSignOutResult): ServerLogOutOutcome;
49
+ /**
50
+ * Build a human-readable stderr warning for the `unreachable` server-side
51
+ * outcome. Returns `null` for every other outcome — the success path stays
52
+ * quiet on stderr. The warning text names the reason and tells the user
53
+ * the bearer will age out as the load-bearing defense (24-72h empirical
54
+ * per `research/notes/02-auth-and-clients.md`).
55
+ */
56
+ export declare function serverLogOutStderrWarning(result: CoreSignOutResult): string | null;
57
+ /**
58
+ * Terminal outcome of `ttctl auth signout`. The `removed` flag distinguishes
59
+ * the case where an auth token existed and was removed from the YAML config
60
+ * from the idempotent no-op (no token field present). Both are success
61
+ * cases — signout MUST be idempotent — but scripts may want to differentiate
62
+ * (e.g. to count active sessions across machines).
63
+ *
64
+ * `path` is the YAML config file path that the `auth.token` field was
65
+ * removed from.
66
+ *
67
+ * `serverLogOut` is the server-side LogOut outcome (post-#180) — see
68
+ * {@link ServerLogOutOutcome}. Always populated on the success branch.
69
+ * `serverLogOut: "unreachable"` is a soft warning — local state is still
70
+ * cleared; the bearer ages out server-side as the load-bearing defense.
71
+ * **Note**: `serverLogOut: "logged-out"` claims only "talent_profile
72
+ * acknowledged the LogOut mutation"; it does NOT claim "the bearer is now
73
+ * invalid for downstream calls". See {@link ServerLogOutOutcome} for the
74
+ * full empirical scope.
75
+ *
76
+ * `error` carries a generic message; the only realistic non-permission
77
+ * failure is a YAML parse error or a write-back contention (mtime drift),
78
+ * which the user must resolve out of band.
79
+ */
80
+ export type SignOutResult = {
81
+ status: "signed-out";
82
+ removed: boolean;
83
+ path: string;
84
+ serverLogOut: ServerLogOutOutcome;
85
+ } | {
86
+ status: "error";
87
+ message: string;
88
+ };
89
+ /**
90
+ * Render a `SignOutResult` for the human-readable `pretty` format. The
91
+ * success line is "Signed out." regardless of whether a token was
92
+ * removed — the user-facing semantics ("you are no longer signed in")
93
+ * are identical, and the AC explicitly calls out idempotency. Errors
94
+ * surface verbatim.
95
+ */
96
+ export declare function formatSignOutPretty(result: SignOutResult): string;
97
+ /**
98
+ * Format a `SignOutResult` for the requested output mode. JSON and YAML
99
+ * shapes mirror the discriminated union exactly — `removed` and `path`
100
+ * on success, `message` on error — so scripts can branch on `removed`
101
+ * to detect the no-op case.
102
+ */
103
+ export declare function formatSignOutOutput(result: SignOutResult, output: OutputFormat): string;
104
+ /**
105
+ * Map a `SignOutResult` to a process exit code. Both success branches
106
+ * (`removed: true` and `removed: false`) return 0 — signout is idempotent
107
+ * by AC. Only filesystem failures other than ENOENT exit non-zero.
108
+ */
109
+ export declare function exitCodeForSignOutResult(result: SignOutResult): number;
110
+ /**
111
+ * Run the `auth signout` command end-to-end:
112
+ * 1. Resolve `.ttctl.yaml` and read it (in-memory parsed via core).
113
+ * 2. If `auth.token` is present:
114
+ * a. Call `core.signOut(token)` to attempt server-side LogOut via
115
+ * the `LogOut` mutation against talent_profile/graphql.
116
+ * b. Remove the field via `clearAuthToken` (yaml.parseDocument +
117
+ * deleteIn — preserves comments and credentials).
118
+ * c. If the server-side call returned `unreachable`, emit a stderr
119
+ * warning. The local clear still ran — the bearer ages out
120
+ * server-side in 24-72h as the load-bearing defense.
121
+ * 3. If `auth.token` was already absent, exit 0 with `removed: false`
122
+ * and `serverLogOut: "skipped"` (idempotent no-op).
123
+ * 4. Emit the result and exit. Always 0 in the success path — server-
124
+ * side LogOut failure is a soft warning, not an exit-code signal.
125
+ *
126
+ * `clearAuthToken` enforces the same security gates as `persistAuthToken`
127
+ * (symlink refusal, sync-root refusal, atomic write, mode 0600).
128
+ *
129
+ * `core.signOut()` never throws — every failure is classified into
130
+ * `CoreSignOutResult` and surfaced via `mapCoreSignOutResult`.
131
+ */
132
+ export declare function runAuthSignOut(options: AuthSignOutOptions): Promise<void>;
133
+ //# sourceMappingURL=signout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signout.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/signout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAItE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAC;AAE/F;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CAUnF;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAsBlF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,GAC3F;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAKjE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAQvF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEtE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/E"}
@@ -0,0 +1,172 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { AuthTokenPersistError, ConfigError, clearAuthToken, signOut } from "@ttctl/core";
4
+ import { resolveConfigForCli } from "../../lib/config-context.js";
5
+ import { formatYaml } from "../../lib/output.js";
6
+ /**
7
+ * Map a {@link CoreSignOutResult} to the CLI's {@link ServerLogOutOutcome}.
8
+ * Collapses the per-reason discriminator of `unreachable` / `invalid` into
9
+ * the four CLI-level outcomes. The full reason is surfaced separately via
10
+ * {@link serverLogOutStderrWarning} for the unreachable path.
11
+ */
12
+ export function mapCoreSignOutResult(result) {
13
+ if (result.status === "logged-out")
14
+ return "logged-out";
15
+ if (result.status === "invalid") {
16
+ // no-session is the empty-token short-circuit; the CLI handles that
17
+ // before calling core.signOut(), so it shouldn't surface here. If it
18
+ // does (defensive), treat the same as the local "skipped" branch.
19
+ if (result.reason === "no-session")
20
+ return "skipped";
21
+ return "already-invalid";
22
+ }
23
+ return "unreachable";
24
+ }
25
+ /**
26
+ * Build a human-readable stderr warning for the `unreachable` server-side
27
+ * outcome. Returns `null` for every other outcome — the success path stays
28
+ * quiet on stderr. The warning text names the reason and tells the user
29
+ * the bearer will age out as the load-bearing defense (24-72h empirical
30
+ * per `research/notes/02-auth-and-clients.md`).
31
+ */
32
+ export function serverLogOutStderrWarning(result) {
33
+ if (result.status !== "unreachable")
34
+ return null;
35
+ const reason = result.reason;
36
+ let detail;
37
+ switch (reason.kind) {
38
+ case "transport":
39
+ detail = `transport error (${reason.reason})`;
40
+ break;
41
+ case "http-status":
42
+ detail = `HTTP ${reason.status.toString()} from talent_profile/graphql`;
43
+ break;
44
+ case "graphql-error":
45
+ detail = `GraphQL error: ${reason.message}`;
46
+ break;
47
+ case "payload-missing":
48
+ detail = "talent_profile/graphql returned an unrecognized payload shape (missing data.logOut)";
49
+ break;
50
+ case "success-false":
51
+ detail = "talent_profile/graphql returned data.logOut.success: false";
52
+ break;
53
+ }
54
+ return `warning: server-side LogOut could not be delivered (${detail}); local token cleared, the bearer will age out server-side in 24-72h`;
55
+ }
56
+ /**
57
+ * Render a `SignOutResult` for the human-readable `pretty` format. The
58
+ * success line is "Signed out." regardless of whether a token was
59
+ * removed — the user-facing semantics ("you are no longer signed in")
60
+ * are identical, and the AC explicitly calls out idempotency. Errors
61
+ * surface verbatim.
62
+ */
63
+ export function formatSignOutPretty(result) {
64
+ if (result.status === "signed-out") {
65
+ return "Signed out.";
66
+ }
67
+ return `Sign-out failed: ${result.message}`;
68
+ }
69
+ /**
70
+ * Format a `SignOutResult` for the requested output mode. JSON and YAML
71
+ * shapes mirror the discriminated union exactly — `removed` and `path`
72
+ * on success, `message` on error — so scripts can branch on `removed`
73
+ * to detect the no-op case.
74
+ */
75
+ export function formatSignOutOutput(result, output) {
76
+ if (output === "json") {
77
+ return JSON.stringify(result);
78
+ }
79
+ if (output === "yaml") {
80
+ return formatYaml(result);
81
+ }
82
+ return formatSignOutPretty(result);
83
+ }
84
+ /**
85
+ * Map a `SignOutResult` to a process exit code. Both success branches
86
+ * (`removed: true` and `removed: false`) return 0 — signout is idempotent
87
+ * by AC. Only filesystem failures other than ENOENT exit non-zero.
88
+ */
89
+ export function exitCodeForSignOutResult(result) {
90
+ return result.status === "signed-out" ? 0 : 1;
91
+ }
92
+ /**
93
+ * Run the `auth signout` command end-to-end:
94
+ * 1. Resolve `.ttctl.yaml` and read it (in-memory parsed via core).
95
+ * 2. If `auth.token` is present:
96
+ * a. Call `core.signOut(token)` to attempt server-side LogOut via
97
+ * the `LogOut` mutation against talent_profile/graphql.
98
+ * b. Remove the field via `clearAuthToken` (yaml.parseDocument +
99
+ * deleteIn — preserves comments and credentials).
100
+ * c. If the server-side call returned `unreachable`, emit a stderr
101
+ * warning. The local clear still ran — the bearer ages out
102
+ * server-side in 24-72h as the load-bearing defense.
103
+ * 3. If `auth.token` was already absent, exit 0 with `removed: false`
104
+ * and `serverLogOut: "skipped"` (idempotent no-op).
105
+ * 4. Emit the result and exit. Always 0 in the success path — server-
106
+ * side LogOut failure is a soft warning, not an exit-code signal.
107
+ *
108
+ * `clearAuthToken` enforces the same security gates as `persistAuthToken`
109
+ * (symlink refusal, sync-root refusal, atomic write, mode 0600).
110
+ *
111
+ * `core.signOut()` never throws — every failure is classified into
112
+ * `CoreSignOutResult` and surfaced via `mapCoreSignOutResult`.
113
+ */
114
+ export async function runAuthSignOut(options) {
115
+ const { result, stderrWarning } = await performSignOut();
116
+ const rendered = formatSignOutOutput(result, options.output);
117
+ const stream = result.status === "signed-out" ? process.stdout : process.stderr;
118
+ if (stderrWarning !== null) {
119
+ process.stderr.write(stderrWarning + "\n");
120
+ }
121
+ stream.write(rendered + "\n");
122
+ process.exit(exitCodeForSignOutResult(result));
123
+ }
124
+ async function performSignOut() {
125
+ let configPath;
126
+ let token;
127
+ try {
128
+ const { config, path } = resolveConfigForCli();
129
+ configPath = path;
130
+ token = config.auth.token;
131
+ }
132
+ catch (err) {
133
+ if (err instanceof ConfigError) {
134
+ return { result: { status: "error", message: err.message }, stderrWarning: null };
135
+ }
136
+ const message = err instanceof Error ? err.message : String(err);
137
+ return { result: { status: "error", message }, stderrWarning: null };
138
+ }
139
+ if (token === undefined) {
140
+ // Idempotent no-op — token field already absent. Don't open the file
141
+ // for write AND don't call talent_profile (nothing to call with). Report
142
+ // success with removed: false / serverLogOut: "skipped" so scripts can
143
+ // detect the no-op case.
144
+ return {
145
+ result: { status: "signed-out", removed: false, path: configPath, serverLogOut: "skipped" },
146
+ stderrWarning: null,
147
+ };
148
+ }
149
+ // Attempt server-side LogOut BEFORE clearing the local token. The
150
+ // ordering matters: we want the bearer in hand when calling LogOut so
151
+ // talent_profile can authenticate the request. core.signOut()
152
+ // never throws (every failure mode is classified into CoreSignOutResult),
153
+ // so this branch is safe to await without try/catch.
154
+ const coreResult = await signOut(token);
155
+ const serverLogOut = mapCoreSignOutResult(coreResult);
156
+ const stderrWarning = serverLogOutStderrWarning(coreResult);
157
+ try {
158
+ await clearAuthToken(configPath);
159
+ }
160
+ catch (err) {
161
+ if (err instanceof ConfigError || err instanceof AuthTokenPersistError) {
162
+ return { result: { status: "error", message: err.message }, stderrWarning };
163
+ }
164
+ const message = err instanceof Error ? err.message : String(err);
165
+ return { result: { status: "error", message }, stderrWarning };
166
+ }
167
+ return {
168
+ result: { status: "signed-out", removed: true, path: configPath, serverLogOut },
169
+ stderrWarning,
170
+ };
171
+ }
172
+ //# sourceMappingURL=signout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signout.js","sourceRoot":"","sources":["../../../src/commands/auth/signout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { AuthStatusResult } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../lib/output.js";
3
+ /**
4
+ * Output format for `ttctl auth status`. Aligned with the cross-CLI
5
+ * `OutputFormat` post-#126: `pretty` (default) emits a human-readable
6
+ * single-line summary; `json` emits the `AuthStatusResult` shape
7
+ * verbatim for scripting; `yaml` emits the same shape as block-style
8
+ * YAML.
9
+ */
10
+ export interface AuthStatusOptions {
11
+ output: OutputFormat;
12
+ }
13
+ /**
14
+ * Map an `AuthStatusResult` to a process exit code:
15
+ * - `valid` → 0 (everything OK)
16
+ * - `invalid` → 1 (auth-related; user must run `ttctl auth signin`)
17
+ * - `unreachable` → 2 (transport-level; transient, retryable)
18
+ *
19
+ * Three distinct codes are deliberate: shell consumers can branch on them
20
+ * without parsing stdout (`if ttctl auth status; then ... else case $? in 1)
21
+ * ... ;; 2) ... ;; esac`).
22
+ */
23
+ export declare function exitCodeForAuthStatus(result: AuthStatusResult): number;
24
+ /**
25
+ * Render an `AuthStatusResult` for the human-readable `pretty` format.
26
+ * Keeps the user-facing strings here so the CLI surface owns wording
27
+ * (the core library returns stable machine-readable codes; this layer
28
+ * translates them to prose).
29
+ *
30
+ * Both `session-expired` and the rarer 200-with-malformed-payload cases
31
+ * collapse to the same "Session expired" message — from the user's
32
+ * perspective the next action is identical (re-run signin).
33
+ */
34
+ export declare function formatAuthStatusPretty(result: AuthStatusResult): string;
35
+ /**
36
+ * Format an `AuthStatusResult` for the requested output mode. The JSON
37
+ * and YAML shapes mirror `AuthStatusResult` 1:1 — `email` only on
38
+ * `valid`, `reason` on the other two — which lets callers consume the
39
+ * same discriminated-union structure on the wire.
40
+ */
41
+ export declare function formatAuthStatusOutput(result: AuthStatusResult, output: OutputFormat): string;
42
+ /**
43
+ * Run the `auth status` command end-to-end:
44
+ * 1. Resolve `.ttctl.yaml` (in-memory parsed via core). A missing/malformed
45
+ * config collapses to `invalid/no-session` — the user-facing
46
+ * "Run `ttctl auth signin`" hint is still the right next step, and
47
+ * surfacing the raw `ConfigError` would be more confusing than helpful
48
+ * in the read-only status path.
49
+ * 2. Read `config.auth.token` directly (no separate file load — the token
50
+ * lives inline in the YAML config post-#107).
51
+ * 3. Probe the gateway for session validity via `getAuthStatus(token)`.
52
+ * No token → invalid/no-session, short-circuited (no network call).
53
+ * 4. Emit the result in the requested format.
54
+ * 5. Exit the process with the corresponding code.
55
+ *
56
+ * `process.exit` is the terminal step: action handlers in commander otherwise
57
+ * resolve to `undefined` and the process keeps the libuv event loop spinning
58
+ * until natural exit, which is fine for CLI usage but loses the explicit
59
+ * exit-code contract this command needs.
60
+ */
61
+ export declare function runAuthStatus(options: AuthStatusOptions): Promise<void>;
62
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAItE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAWvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7E"}
@@ -0,0 +1,98 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { ConfigError, getAuthStatus } from "@ttctl/core";
4
+ import { resolveConfigForCli } from "../../lib/config-context.js";
5
+ import { formatYaml } from "../../lib/output.js";
6
+ /**
7
+ * Map an `AuthStatusResult` to a process exit code:
8
+ * - `valid` → 0 (everything OK)
9
+ * - `invalid` → 1 (auth-related; user must run `ttctl auth signin`)
10
+ * - `unreachable` → 2 (transport-level; transient, retryable)
11
+ *
12
+ * Three distinct codes are deliberate: shell consumers can branch on them
13
+ * without parsing stdout (`if ttctl auth status; then ... else case $? in 1)
14
+ * ... ;; 2) ... ;; esac`).
15
+ */
16
+ export function exitCodeForAuthStatus(result) {
17
+ if (result.status === "valid")
18
+ return 0;
19
+ if (result.status === "invalid")
20
+ return 1;
21
+ return 2;
22
+ }
23
+ /**
24
+ * Render an `AuthStatusResult` for the human-readable `pretty` format.
25
+ * Keeps the user-facing strings here so the CLI surface owns wording
26
+ * (the core library returns stable machine-readable codes; this layer
27
+ * translates them to prose).
28
+ *
29
+ * Both `session-expired` and the rarer 200-with-malformed-payload cases
30
+ * collapse to the same "Session expired" message — from the user's
31
+ * perspective the next action is identical (re-run signin).
32
+ */
33
+ export function formatAuthStatusPretty(result) {
34
+ if (result.status === "valid") {
35
+ return `Signed in as ${result.email}`;
36
+ }
37
+ if (result.status === "invalid") {
38
+ if (result.reason === "no-session") {
39
+ return "No session found. Run `ttctl auth signin`.";
40
+ }
41
+ return "Session expired. Run `ttctl auth signin`.";
42
+ }
43
+ return "Could not reach Toptal.";
44
+ }
45
+ /**
46
+ * Format an `AuthStatusResult` for the requested output mode. The JSON
47
+ * and YAML shapes mirror `AuthStatusResult` 1:1 — `email` only on
48
+ * `valid`, `reason` on the other two — which lets callers consume the
49
+ * same discriminated-union structure on the wire.
50
+ */
51
+ export function formatAuthStatusOutput(result, output) {
52
+ if (output === "json") {
53
+ return JSON.stringify(result);
54
+ }
55
+ if (output === "yaml") {
56
+ return formatYaml(result);
57
+ }
58
+ return formatAuthStatusPretty(result);
59
+ }
60
+ /**
61
+ * Run the `auth status` command end-to-end:
62
+ * 1. Resolve `.ttctl.yaml` (in-memory parsed via core). A missing/malformed
63
+ * config collapses to `invalid/no-session` — the user-facing
64
+ * "Run `ttctl auth signin`" hint is still the right next step, and
65
+ * surfacing the raw `ConfigError` would be more confusing than helpful
66
+ * in the read-only status path.
67
+ * 2. Read `config.auth.token` directly (no separate file load — the token
68
+ * lives inline in the YAML config post-#107).
69
+ * 3. Probe the gateway for session validity via `getAuthStatus(token)`.
70
+ * No token → invalid/no-session, short-circuited (no network call).
71
+ * 4. Emit the result in the requested format.
72
+ * 5. Exit the process with the corresponding code.
73
+ *
74
+ * `process.exit` is the terminal step: action handlers in commander otherwise
75
+ * resolve to `undefined` and the process keeps the libuv event loop spinning
76
+ * until natural exit, which is fine for CLI usage but loses the explicit
77
+ * exit-code contract this command needs.
78
+ */
79
+ export async function runAuthStatus(options) {
80
+ let token;
81
+ try {
82
+ const { config } = resolveConfigForCli();
83
+ token = config.auth.token ?? null;
84
+ }
85
+ catch (err) {
86
+ if (err instanceof ConfigError) {
87
+ const noSession = { status: "invalid", reason: "no-session" };
88
+ process.stdout.write(formatAuthStatusOutput(noSession, options.output) + "\n");
89
+ process.exit(exitCodeForAuthStatus(noSession));
90
+ return;
91
+ }
92
+ throw err;
93
+ }
94
+ const result = await getAuthStatus(token);
95
+ process.stdout.write(formatAuthStatusOutput(result, options.output) + "\n");
96
+ process.exit(exitCodeForAuthStatus(result));
97
+ }
98
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/auth/status.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAcjD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO,4CAA4C,CAAC;QACtD,CAAC;QACD,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB,EAAE,MAAoB;IACnF,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,IAAI,KAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;QACzC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5E,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { OutputFormat } from "../../lib/output.js";
2
+ /**
3
+ * Action handler for `ttctl availability allocated-hours show`. Reads
4
+ * just the viewer-scoped `allocatedHours` value.
5
+ *
6
+ * Throws `AvailabilityError("UNKNOWN")` (via the service) when the
7
+ * viewer-role payload is missing the field — defensive only.
8
+ */
9
+ export declare function runAllocatedHoursShow(output: OutputFormat): Promise<void>;
10
+ /**
11
+ * Action handler for `ttctl availability allocated-hours set --hours <n>`.
12
+ * Updates the viewer-scoped allocated-hours value via
13
+ * `UpdateAllocatedHours`.
14
+ *
15
+ * The CLI surface is required-arg (`--hours`); commander applies the
16
+ * `--hours` parser before this handler runs, so the value is already a
17
+ * validated non-negative integer.
18
+ *
19
+ * Returns the post-update `{ allocatedHours, hiredHours }` payload in
20
+ * the success-update envelope.
21
+ */
22
+ export interface AllocatedHoursSetOptions {
23
+ hours: number;
24
+ output: OutputFormat;
25
+ }
26
+ export declare function runAllocatedHoursSet(opts: AllocatedHoursSetOptions): Promise<void>;
27
+ //# sourceMappingURL=allocated-hours.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocated-hours.d.ts","sourceRoot":"","sources":["../../../src/commands/availability/allocated-hours.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/E;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF"}
@@ -0,0 +1,61 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { availability } from "@ttctl/core";
4
+ import { getCliDryRun } from "../../lib/dry-run.js";
5
+ import { emitResult } from "../../lib/output.js";
6
+ import { emitDryRunSuccess, emitUpdateSuccess } from "../../lib/envelopes.js";
7
+ import { handleAvailabilityError, loadAuthTokenOrExit } from "./shared.js";
8
+ /**
9
+ * Action handler for `ttctl availability allocated-hours show`. Reads
10
+ * just the viewer-scoped `allocatedHours` value.
11
+ *
12
+ * Throws `AvailabilityError("UNKNOWN")` (via the service) when the
13
+ * viewer-role payload is missing the field — defensive only.
14
+ */
15
+ export async function runAllocatedHoursShow(output) {
16
+ const token = await loadAuthTokenOrExit("availability allocated-hours show", output);
17
+ let data;
18
+ try {
19
+ data = await availability.allocatedHours.show(token);
20
+ }
21
+ catch (err) {
22
+ handleAvailabilityError("availability allocated-hours show", err, output);
23
+ }
24
+ emitResult(data, output, {
25
+ pretty: (d) => `Allocated hours: ${d.allocatedHours.toString()} h/week`,
26
+ });
27
+ }
28
+ export async function runAllocatedHoursSet(opts) {
29
+ const token = await loadAuthTokenOrExit("availability allocated-hours set", opts.output);
30
+ const dryRun = getCliDryRun();
31
+ let outcome;
32
+ try {
33
+ outcome = await availability.allocatedHours.set(token, opts.hours, { dryRun });
34
+ }
35
+ catch (err) {
36
+ handleAvailabilityError("availability allocated-hours set", err, opts.output);
37
+ }
38
+ if (outcome.kind === "preview") {
39
+ emitDryRunSuccess({
40
+ operation: "availability.allocated-hours.set",
41
+ format: opts.output,
42
+ preview: outcome.preview,
43
+ });
44
+ return;
45
+ }
46
+ const updated = outcome.result;
47
+ emitUpdateSuccess({
48
+ operation: "availability.allocated-hours.set",
49
+ format: opts.output,
50
+ updated,
51
+ prettySummary: `allocated hours = ${updated.allocatedHours.toString()} h/week`,
52
+ prettyEntity: (data) => {
53
+ const lines = [`Allocated: ${data.allocatedHours.toString()} h/week`];
54
+ if (data.hiredHours !== null)
55
+ lines.push(`Hired: ${data.hiredHours.toString()} h/week`);
56
+ return lines.join("\n");
57
+ },
58
+ notice: updated.notice ?? undefined,
59
+ });
60
+ }
61
+ //# sourceMappingURL=allocated-hours.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocated-hours.js","sourceRoot":"","sources":["../../../src/commands/availability/allocated-hours.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAoB;IAC9D,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;IAErF,IAAI,IAAkE,CAAC;IACvE,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uBAAuB,CAAC,mCAAmC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;QACvB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS;KACxE,CAAC,CAAC;AACL,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA8B;IACvE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,kCAAkC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,IAAI,OAA8C,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uBAAuB,CAAC,kCAAkC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,iBAAiB,CAAC;YAChB,SAAS,EAAE,kCAAkC;YAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,iBAAiB,CAAC;QAChB,SAAS,EAAE,kCAAkC;QAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO;QACP,aAAa,EAAE,qBAAqB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS;QAC9E,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,KAAK,GAAa,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;KACpC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Build the `ttctl availability` command tree (#146 amended spec). Five
4
+ * leaves across the top-level group and two nested sub-groups
5
+ * (`working-hours`, `allocated-hours`):
6
+ *
7
+ * | Leaf | Description |
8
+ * |-------------------------------------|------------------------------------------|
9
+ * | `show` | Full availability snapshot |
10
+ * | `working-hours show` | Just the time-zone + daily window subset |
11
+ * | `working-hours set [--start/--end/--time-zone/--flex-start/--flex-end]` | Partial-update working hours |
12
+ * | `allocated-hours show` | Just the allocated-hours value |
13
+ * | `allocated-hours set --hours <n>` | Set allocated-hours |
14
+ *
15
+ * **Vocabulary note**: per-engagement "time off" is owned by
16
+ * `ttctl engagements breaks {list, add, remove}` — there is no parallel
17
+ * `ttctl availability time-off` surface (the underlying API would be
18
+ * identical to the engagement-break one). Booking-page "lead time" /
19
+ * "minimum scheduling notice" is a different surface and is not
20
+ * surfaced in v1.
21
+ *
22
+ * **Out of scope for v1** (per #146 amended spec from 2026-05-11):
23
+ * - Time-off list/add/remove (use `engagements breaks` instead)
24
+ * - Lead-time / minimum-scheduling-notice setting (booking-page
25
+ * follow-up)
26
+ * - Setting `meetingTimeFrom` / `meetingTimeTo` (read-only)
27
+ * - Per-engagement availability overrides (no API support)
28
+ */
29
+ export declare function buildAvailabilityCommand(): Command;
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/availability/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAUlE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAuGlD"}