@ttctl/cli 0.0.0 → 0.1.0-rc.1

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 (391) 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 +31 -0
  155. package/dist/commands/profile/certifications/index.d.ts.map +1 -0
  156. package/dist/commands/profile/certifications/index.js +298 -0
  157. package/dist/commands/profile/certifications/index.js.map +1 -0
  158. package/dist/commands/profile/education/index.d.ts +28 -0
  159. package/dist/commands/profile/education/index.d.ts.map +1 -0
  160. package/dist/commands/profile/education/index.js +287 -0
  161. package/dist/commands/profile/education/index.js.map +1 -0
  162. package/dist/commands/profile/employment/index.d.ts +40 -0
  163. package/dist/commands/profile/employment/index.d.ts.map +1 -0
  164. package/dist/commands/profile/employment/index.js +364 -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 +20 -0
  183. package/dist/commands/profile/external/index.d.ts.map +1 -0
  184. package/dist/commands/profile/external/index.js +102 -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/update.d.ts +32 -0
  195. package/dist/commands/profile/external/update.d.ts.map +1 -0
  196. package/dist/commands/profile/external/update.js +118 -0
  197. package/dist/commands/profile/external/update.js.map +1 -0
  198. package/dist/commands/profile/index.d.ts +16 -0
  199. package/dist/commands/profile/index.d.ts.map +1 -0
  200. package/dist/commands/profile/index.js +81 -0
  201. package/dist/commands/profile/index.js.map +1 -0
  202. package/dist/commands/profile/industries/index.d.ts +36 -0
  203. package/dist/commands/profile/industries/index.d.ts.map +1 -0
  204. package/dist/commands/profile/industries/index.js +230 -0
  205. package/dist/commands/profile/industries/index.js.map +1 -0
  206. package/dist/commands/profile/portfolio/add.d.ts +43 -0
  207. package/dist/commands/profile/portfolio/add.d.ts.map +1 -0
  208. package/dist/commands/profile/portfolio/add.js +181 -0
  209. package/dist/commands/profile/portfolio/add.js.map +1 -0
  210. package/dist/commands/profile/portfolio/highlight.d.ts +11 -0
  211. package/dist/commands/profile/portfolio/highlight.d.ts.map +1 -0
  212. package/dist/commands/profile/portfolio/highlight.js +31 -0
  213. package/dist/commands/profile/portfolio/highlight.js.map +1 -0
  214. package/dist/commands/profile/portfolio/index.d.ts +16 -0
  215. package/dist/commands/profile/portfolio/index.d.ts.map +1 -0
  216. package/dist/commands/profile/portfolio/index.js +121 -0
  217. package/dist/commands/profile/portfolio/index.js.map +1 -0
  218. package/dist/commands/profile/portfolio/list.d.ts +83 -0
  219. package/dist/commands/profile/portfolio/list.d.ts.map +1 -0
  220. package/dist/commands/profile/portfolio/list.js +189 -0
  221. package/dist/commands/profile/portfolio/list.js.map +1 -0
  222. package/dist/commands/profile/portfolio/remove.d.ts +9 -0
  223. package/dist/commands/profile/portfolio/remove.d.ts.map +1 -0
  224. package/dist/commands/profile/portfolio/remove.js +24 -0
  225. package/dist/commands/profile/portfolio/remove.js.map +1 -0
  226. package/dist/commands/profile/portfolio/reorder.d.ts +17 -0
  227. package/dist/commands/profile/portfolio/reorder.d.ts.map +1 -0
  228. package/dist/commands/profile/portfolio/reorder.js +135 -0
  229. package/dist/commands/profile/portfolio/reorder.js.map +1 -0
  230. package/dist/commands/profile/portfolio/shared.d.ts +8 -0
  231. package/dist/commands/profile/portfolio/shared.d.ts.map +1 -0
  232. package/dist/commands/profile/portfolio/shared.js +10 -0
  233. package/dist/commands/profile/portfolio/shared.js.map +1 -0
  234. package/dist/commands/profile/portfolio/update.d.ts +18 -0
  235. package/dist/commands/profile/portfolio/update.d.ts.map +1 -0
  236. package/dist/commands/profile/portfolio/update.js +77 -0
  237. package/dist/commands/profile/portfolio/update.js.map +1 -0
  238. package/dist/commands/profile/portfolio/upload.d.ts +8 -0
  239. package/dist/commands/profile/portfolio/upload.d.ts.map +1 -0
  240. package/dist/commands/profile/portfolio/upload.js +131 -0
  241. package/dist/commands/profile/portfolio/upload.js.map +1 -0
  242. package/dist/commands/profile/resume/cancel-upload.d.ts +9 -0
  243. package/dist/commands/profile/resume/cancel-upload.d.ts.map +1 -0
  244. package/dist/commands/profile/resume/cancel-upload.js +30 -0
  245. package/dist/commands/profile/resume/cancel-upload.js.map +1 -0
  246. package/dist/commands/profile/resume/index.d.ts +15 -0
  247. package/dist/commands/profile/resume/index.d.ts.map +1 -0
  248. package/dist/commands/profile/resume/index.js +42 -0
  249. package/dist/commands/profile/resume/index.js.map +1 -0
  250. package/dist/commands/profile/resume/upload.d.ts +16 -0
  251. package/dist/commands/profile/resume/upload.d.ts.map +1 -0
  252. package/dist/commands/profile/resume/upload.js +65 -0
  253. package/dist/commands/profile/resume/upload.js.map +1 -0
  254. package/dist/commands/profile/reviews/_shared.d.ts +9 -0
  255. package/dist/commands/profile/reviews/_shared.d.ts.map +1 -0
  256. package/dist/commands/profile/reviews/_shared.js +15 -0
  257. package/dist/commands/profile/reviews/_shared.js.map +1 -0
  258. package/dist/commands/profile/reviews/approve-item.d.ts +30 -0
  259. package/dist/commands/profile/reviews/approve-item.d.ts.map +1 -0
  260. package/dist/commands/profile/reviews/approve-item.js +82 -0
  261. package/dist/commands/profile/reviews/approve-item.js.map +1 -0
  262. package/dist/commands/profile/reviews/approve-section.d.ts +15 -0
  263. package/dist/commands/profile/reviews/approve-section.d.ts.map +1 -0
  264. package/dist/commands/profile/reviews/approve-section.js +67 -0
  265. package/dist/commands/profile/reviews/approve-section.js.map +1 -0
  266. package/dist/commands/profile/reviews/index.d.ts +19 -0
  267. package/dist/commands/profile/reviews/index.d.ts.map +1 -0
  268. package/dist/commands/profile/reviews/index.js +71 -0
  269. package/dist/commands/profile/reviews/index.js.map +1 -0
  270. package/dist/commands/profile/reviews/list.d.ts +17 -0
  271. package/dist/commands/profile/reviews/list.d.ts.map +1 -0
  272. package/dist/commands/profile/reviews/list.js +96 -0
  273. package/dist/commands/profile/reviews/list.js.map +1 -0
  274. package/dist/commands/profile/reviews/submit-for-review.d.ts +16 -0
  275. package/dist/commands/profile/reviews/submit-for-review.d.ts.map +1 -0
  276. package/dist/commands/profile/reviews/submit-for-review.js +65 -0
  277. package/dist/commands/profile/reviews/submit-for-review.js.map +1 -0
  278. package/dist/commands/profile/shared.d.ts +46 -0
  279. package/dist/commands/profile/shared.d.ts.map +1 -0
  280. package/dist/commands/profile/shared.js +111 -0
  281. package/dist/commands/profile/shared.js.map +1 -0
  282. package/dist/commands/profile/skills/index.d.ts +29 -0
  283. package/dist/commands/profile/skills/index.d.ts.map +1 -0
  284. package/dist/commands/profile/skills/index.js +475 -0
  285. package/dist/commands/profile/skills/index.js.map +1 -0
  286. package/dist/commands/profile/visas/add.d.ts +19 -0
  287. package/dist/commands/profile/visas/add.d.ts.map +1 -0
  288. package/dist/commands/profile/visas/add.js +37 -0
  289. package/dist/commands/profile/visas/add.js.map +1 -0
  290. package/dist/commands/profile/visas/index.d.ts +13 -0
  291. package/dist/commands/profile/visas/index.d.ts.map +1 -0
  292. package/dist/commands/profile/visas/index.js +69 -0
  293. package/dist/commands/profile/visas/index.js.map +1 -0
  294. package/dist/commands/profile/visas/list.d.ts +40 -0
  295. package/dist/commands/profile/visas/list.d.ts.map +1 -0
  296. package/dist/commands/profile/visas/list.js +115 -0
  297. package/dist/commands/profile/visas/list.js.map +1 -0
  298. package/dist/commands/profile/visas/remove.d.ts +8 -0
  299. package/dist/commands/profile/visas/remove.d.ts.map +1 -0
  300. package/dist/commands/profile/visas/remove.js +23 -0
  301. package/dist/commands/profile/visas/remove.js.map +1 -0
  302. package/dist/commands/profile/visas/shared.d.ts +11 -0
  303. package/dist/commands/profile/visas/shared.d.ts.map +1 -0
  304. package/dist/commands/profile/visas/shared.js +16 -0
  305. package/dist/commands/profile/visas/shared.js.map +1 -0
  306. package/dist/commands/profile/visas/update.d.ts +13 -0
  307. package/dist/commands/profile/visas/update.d.ts.map +1 -0
  308. package/dist/commands/profile/visas/update.js +44 -0
  309. package/dist/commands/profile/visas/update.js.map +1 -0
  310. package/dist/commands/timesheet/index.d.ts +24 -0
  311. package/dist/commands/timesheet/index.d.ts.map +1 -0
  312. package/dist/commands/timesheet/index.js +98 -0
  313. package/dist/commands/timesheet/index.js.map +1 -0
  314. package/dist/commands/timesheet/list.d.ts +40 -0
  315. package/dist/commands/timesheet/list.d.ts.map +1 -0
  316. package/dist/commands/timesheet/list.js +79 -0
  317. package/dist/commands/timesheet/list.js.map +1 -0
  318. package/dist/commands/timesheet/shared.d.ts +10 -0
  319. package/dist/commands/timesheet/shared.d.ts.map +1 -0
  320. package/dist/commands/timesheet/shared.js +35 -0
  321. package/dist/commands/timesheet/shared.js.map +1 -0
  322. package/dist/commands/timesheet/show.d.ts +19 -0
  323. package/dist/commands/timesheet/show.d.ts.map +1 -0
  324. package/dist/commands/timesheet/show.js +109 -0
  325. package/dist/commands/timesheet/show.js.map +1 -0
  326. package/dist/commands/timesheet/submit.d.ts +50 -0
  327. package/dist/commands/timesheet/submit.d.ts.map +1 -0
  328. package/dist/commands/timesheet/submit.js +151 -0
  329. package/dist/commands/timesheet/submit.js.map +1 -0
  330. package/dist/crash-handlers.d.ts +67 -0
  331. package/dist/crash-handlers.d.ts.map +1 -0
  332. package/dist/crash-handlers.js +78 -0
  333. package/dist/crash-handlers.js.map +1 -0
  334. package/dist/errors.d.ts +45 -0
  335. package/dist/errors.d.ts.map +1 -0
  336. package/dist/errors.js +57 -0
  337. package/dist/errors.js.map +1 -0
  338. package/dist/index.d.ts +8 -0
  339. package/dist/index.d.ts.map +1 -0
  340. package/dist/index.js +15 -0
  341. package/dist/index.js.map +1 -0
  342. package/dist/lib/config-context.d.ts +41 -0
  343. package/dist/lib/config-context.d.ts.map +1 -0
  344. package/dist/lib/config-context.js +74 -0
  345. package/dist/lib/config-context.js.map +1 -0
  346. package/dist/lib/dry-run.d.ts +70 -0
  347. package/dist/lib/dry-run.d.ts.map +1 -0
  348. package/dist/lib/dry-run.js +114 -0
  349. package/dist/lib/dry-run.js.map +1 -0
  350. package/dist/lib/empty-state-cta.d.ts +63 -0
  351. package/dist/lib/empty-state-cta.d.ts.map +1 -0
  352. package/dist/lib/empty-state-cta.js +88 -0
  353. package/dist/lib/empty-state-cta.js.map +1 -0
  354. package/dist/lib/envelopes.d.ts +540 -0
  355. package/dist/lib/envelopes.d.ts.map +1 -0
  356. package/dist/lib/envelopes.js +598 -0
  357. package/dist/lib/envelopes.js.map +1 -0
  358. package/dist/lib/error-routing.d.ts +49 -0
  359. package/dist/lib/error-routing.d.ts.map +1 -0
  360. package/dist/lib/error-routing.js +72 -0
  361. package/dist/lib/error-routing.js.map +1 -0
  362. package/dist/lib/format-helpers.d.ts +65 -0
  363. package/dist/lib/format-helpers.d.ts.map +1 -0
  364. package/dist/lib/format-helpers.js +79 -0
  365. package/dist/lib/format-helpers.js.map +1 -0
  366. package/dist/lib/format-overrides.d.ts +81 -0
  367. package/dist/lib/format-overrides.d.ts.map +1 -0
  368. package/dist/lib/format-overrides.js +55 -0
  369. package/dist/lib/format-overrides.js.map +1 -0
  370. package/dist/lib/freetext.d.ts +83 -0
  371. package/dist/lib/freetext.d.ts.map +1 -0
  372. package/dist/lib/freetext.js +182 -0
  373. package/dist/lib/freetext.js.map +1 -0
  374. package/dist/lib/kill-switch-hook.d.ts +49 -0
  375. package/dist/lib/kill-switch-hook.d.ts.map +1 -0
  376. package/dist/lib/kill-switch-hook.js +34 -0
  377. package/dist/lib/kill-switch-hook.js.map +1 -0
  378. package/dist/lib/output.d.ts +173 -0
  379. package/dist/lib/output.d.ts.map +1 -0
  380. package/dist/lib/output.js +177 -0
  381. package/dist/lib/output.js.map +1 -0
  382. package/dist/lib/pagination.d.ts +49 -0
  383. package/dist/lib/pagination.d.ts.map +1 -0
  384. package/dist/lib/pagination.js +36 -0
  385. package/dist/lib/pagination.js.map +1 -0
  386. package/dist/program.d.ts +80 -0
  387. package/dist/program.d.ts.map +1 -0
  388. package/dist/program.js +273 -0
  389. package/dist/program.js.map +1 -0
  390. package/package.json +35 -13
  391. package/index.js +0 -7
@@ -0,0 +1,273 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { existsSync } from "node:fs";
4
+ import { Command, Option } from "commander";
5
+ import { ConfigError, setDiagnosticLogger } from "@ttctl/core";
6
+ import { buildApplicationsCommand } from "./commands/applications/index.js";
7
+ import { registerAuthCommand } from "./commands/auth/index.js";
8
+ import { buildAvailabilityCommand } from "./commands/availability/index.js";
9
+ import { buildContractsCommand } from "./commands/contracts/index.js";
10
+ import { buildEngagementsCommand } from "./commands/engagements/index.js";
11
+ import { buildJobsCommand } from "./commands/jobs/index.js";
12
+ import { buildPaymentsCommand } from "./commands/payments/index.js";
13
+ import { buildTimesheetCommand } from "./commands/timesheet/index.js";
14
+ import { buildProfileCommand } from "./commands/profile/index.js";
15
+ import { setCliConfigPath } from "./lib/config-context.js";
16
+ import { DRY_RUN_NO_OP_STDERR_NOTE, isMutationCommand, setCliDryRun } from "./lib/dry-run.js";
17
+ import { runKillSwitchAtStartup } from "./lib/kill-switch-hook.js";
18
+ /**
19
+ * Build the root TTCtl Commander program. Sub-commands are registered as they
20
+ * land in milestones; the program is shaped as a noun-verb tree (e.g.,
21
+ * `ttctl profile show`, `ttctl timesheet list`).
22
+ *
23
+ * Global options:
24
+ *
25
+ * `--config <path>` — explicit path to the YAML config, takes precedence
26
+ * over `TTCTL_CONFIG_FILE` and the home dotfile. Validated at invocation
27
+ * time (before any sub-command's action runs) — a missing file surfaces
28
+ * as `ConfigError(code: NO_CREDS)` rather than failing later inside
29
+ * `loadConfigFile`. Honors `aws --profile` / `kubectl --kubeconfig` UX
30
+ * expectations.
31
+ *
32
+ * Resolution precedence (highest → lowest, post-#107):
33
+ *
34
+ * 1. `--config <path>` — this flag (per-invocation)
35
+ * 2. `TTCTL_CONFIG_FILE` env — process-scoped (CI, direnv)
36
+ * 3. `~/.ttctl.yaml` — POSIX home dotfile (only fallback)
37
+ *
38
+ * The CWD `./.ttctl.yaml` is NOT auto-discovered (closed in #92).
39
+ * XDG paths (`$XDG_CONFIG_HOME/ttctl/config.yaml`,
40
+ * `~/.config/ttctl/config.yaml`) are NOT consulted (closed in #107 — the
41
+ * single-file model places the captured bearer in the same YAML, so
42
+ * `~/.ttctl.yaml` is the canonical home location).
43
+ *
44
+ * `--json` / `--yaml` — boolean shortcuts for `--output=json` /
45
+ * `--output=yaml` (post-#126). Mutual exclusion with `--output`/`-o` is
46
+ * enforced in the preAction hook: any two of `{--output, -o, --json,
47
+ * --yaml}` present together raise a parse-time error before the
48
+ * sub-command's action runs.
49
+ *
50
+ * `--dry-run` (issue #52) — preview a mutation without sending it.
51
+ * Captured into the module-scoped `cliDryRun` holder via
52
+ * `setCliDryRun` in the preAction hook so mutation handlers can read
53
+ * it through `getCliDryRun()`. Leaf commands tagged via
54
+ * `markMutation()` (in their `build*Command` factories) route the
55
+ * value through to the core layer's `dryRun` option; non-mutation
56
+ * leaves get a one-line stderr no-op note from the preAction hook
57
+ * (`DRY_RUN_NO_OP_STDERR_NOTE`) and proceed normally.
58
+ *
59
+ * MCP tool integration is conditional on issue #10 having landed —
60
+ * when MCP tools that wrap mutations ship, they accept the same
61
+ * `dryRun?: boolean` input parameter and route through the same core
62
+ * `dryRun` option. Until then, no MCP-side wiring is required.
63
+ *
64
+ * `--verbose` / `--debug` (issue #139) — diagnostic observability for
65
+ * transport-level request/response activity. `--verbose` emits a
66
+ * one-line request descriptor + one-line response status per
67
+ * transport call to STDERR; `--debug` emits full JSON-encoded
68
+ * request/response envelopes (including redacted headers and body)
69
+ * to STDERR. Both write EXCLUSIVELY to stderr — the stdout data
70
+ * channel (json/yaml/pretty envelopes per #126/#128) is never
71
+ * touched, so `--debug --output=json` works as one would expect:
72
+ * structured data on stdout, redacted debug trace on stderr.
73
+ *
74
+ * Mutual relationship: `--debug` is a strict superset of
75
+ * `--verbose`; if both are passed, `--debug` wins (no warning —
76
+ * the user got what they implicitly asked for, the verbose-tier
77
+ * data is a subset of the debug-tier data). The preAction hook
78
+ * computes the effective level and routes it through
79
+ * `setDiagnosticLogger` so every transport (stockTransport,
80
+ * impersonatedTransport, impersonatedMultipartTransport, and the
81
+ * hand-rolled photo-upload path in profile/basic) emits the same
82
+ * shape. Secret redaction (cookies, authorization headers,
83
+ * password / token / secret body fields, the
84
+ * `user_<24hex>_<20alnum>` bearer pattern) is applied by the
85
+ * `redact` module BEFORE serialization, so verbatim bearers /
86
+ * cookies cannot appear in either log tier.
87
+ *
88
+ * Pagination flags are declared PER paginating leaf (`jobs list`,
89
+ * `jobs saved`, `jobs viewed`, `jobs not-interested-list`) rather
90
+ * than globally — see #183 (follow-up to #138). The leaf's `--help`
91
+ * is the source of truth for "does this command paginate?"; Commander
92
+ * emits its standard `error: unknown option '--page'` (exit 1) when
93
+ * the flag is passed to a non-paginating leaf.
94
+ */
95
+ export function buildProgram() {
96
+ const program = new Command();
97
+ program
98
+ .name("ttctl")
99
+ .description("Unofficial CLI for the Toptal Talent platform — personal-productivity tool")
100
+ .version("0.0.0")
101
+ .addOption(new Option("--config <path>", "path to YAML config (overrides TTCTL_CONFIG_FILE and ~/.ttctl.yaml)"))
102
+ .addOption(new Option("--json", "shortcut for --output=json (mutually exclusive with --output, -o, --yaml)"))
103
+ .addOption(new Option("--yaml", "shortcut for --output=yaml (mutually exclusive with --output, -o, --json)"))
104
+ .addOption(new Option("--dry-run", "preview a mutation request without sending it (no-op for read commands)").default(false))
105
+ .addOption(new Option("--verbose", "log request/response summary to stderr (issue #139)").default(false))
106
+ .addOption(new Option("--debug", "log full request/response (headers + body, redacted) to stderr (issue #139)").default(false))
107
+ .hook("preAction", (thisCommand, actionCommand) => {
108
+ // `thisCommand` is the root program where the hook is registered;
109
+ // global options are read off it directly. The hook fires before
110
+ // every sub-command's action, so the path is captured exactly once
111
+ // per invocation. `actionCommand` is the deepest command being
112
+ // executed (e.g., the `init` leaf under `auth init`).
113
+ const opts = thisCommand.opts();
114
+ const configPath = opts.config;
115
+ // Mutual exclusion across format flags (post-#126). The user-visible
116
+ // surface is `--output={pretty,yaml,json}` plus boolean shortcuts
117
+ // `--json` / `--yaml`. Any two flags from the set
118
+ // `{--output, -o, --json, --yaml}` present together is a parse-time
119
+ // error — fired BEFORE the sub-command's action runs so the error
120
+ // message is uniform regardless of which leaf the user invoked.
121
+ //
122
+ // `getOptionValueSource("output")` distinguishes "user passed it"
123
+ // (source === `"cli"`) from "Commander filled the default"
124
+ // (source === `"default"`). Without this check the default value
125
+ // would always fire and every `--json` / `--yaml` use would be
126
+ // (incorrectly) flagged as a conflict.
127
+ const outputExplicit = actionCommand.getOptionValueSource("output") === "cli";
128
+ const explicitFlags = [];
129
+ if (outputExplicit) {
130
+ const out = actionCommand.opts().output;
131
+ explicitFlags.push(`--output=${out ?? ""}`);
132
+ }
133
+ if (opts.json === true)
134
+ explicitFlags.push("--json");
135
+ if (opts.yaml === true)
136
+ explicitFlags.push("--yaml");
137
+ if (explicitFlags.length > 1) {
138
+ const head = explicitFlags.slice(0, -1).join(", ");
139
+ const tail = explicitFlags[explicitFlags.length - 1] ?? "";
140
+ process.stderr.write(`Error: Conflicting output flags: ${head} and ${tail}\n`);
141
+ process.exit(1);
142
+ }
143
+ // Propagate `--json` / `--yaml` to the action command's `output`
144
+ // option. Sub-commands that don't carry an `--output` option simply
145
+ // ignore the propagation (Commander tolerates `setOptionValue` on
146
+ // an unknown key — the action handler never reads it).
147
+ const hasOutputOption = actionCommand.options.some((o) => o.long === "--output");
148
+ if (hasOutputOption) {
149
+ if (opts.json === true) {
150
+ actionCommand.setOptionValue("output", "json");
151
+ }
152
+ else if (opts.yaml === true) {
153
+ actionCommand.setOptionValue("output", "yaml");
154
+ }
155
+ }
156
+ // `auth init` is a BOOTSTRAP command — its own `--config <path>`
157
+ // flag is the OUTPUT destination, which by definition must not
158
+ // exist (or `--force` is required). Both Commander's parser AND
159
+ // the user's `program.opts()` see the same flag value, so the
160
+ // global existence check would fire incorrectly here. Skip the
161
+ // gate for `auth init` and let its own action handler govern the
162
+ // path semantics. Other sub-commands (status / signin / signout /
163
+ // profile / …) all read existing configs and benefit from the
164
+ // gate.
165
+ const isAuthInit = isAuthInitCommand(actionCommand);
166
+ if (configPath !== undefined && !isAuthInit) {
167
+ if (!existsSync(configPath)) {
168
+ // AC: validate at invocation time, don't wait for the first
169
+ // command that loads it. Surface as `ConfigError(NO_CREDS)`
170
+ // with the same uniform shape `loadConfigFile` produces, so
171
+ // script consumers see one code regardless of where the
172
+ // missing-file check fired.
173
+ const err = new ConfigError(`Config file not found: ${configPath}`, "NO_CREDS", configPath);
174
+ process.stderr.write(`Error (${err.code}): ${err.message}\n`);
175
+ process.exit(1);
176
+ }
177
+ }
178
+ // For `auth init`: do NOT propagate the global `--config` value as
179
+ // the CLI-context's "input config path" — the init handler's own
180
+ // `options.config` carries the OUTPUT destination, semantically
181
+ // different from a file-must-exist input config. Setting the
182
+ // context to undefined keeps the read-side resolver unaware that
183
+ // the output path was supplied (it would be the wrong target
184
+ // anyway: init is creating, not reading).
185
+ setCliConfigPath(isAuthInit ? undefined : configPath);
186
+ // Capture the global `--dry-run` flag (issue #52). Commander's
187
+ // `Option.default(false)` means `opts.dryRun` is `false` when the
188
+ // flag is omitted, `true` when present — no need to coerce
189
+ // `undefined`. Mutation handlers read the captured value through
190
+ // `getCliDryRun()` and route through the core's `dryRun` option.
191
+ const dryRun = opts.dryRun === true;
192
+ setCliDryRun(dryRun);
193
+ // Capture the global `--verbose` / `--debug` flags (issue #139).
194
+ // `--debug` is a strict superset of `--verbose`; if both are
195
+ // passed, `--debug` wins silently (verbose's lines are a subset
196
+ // of debug's content). The level routes through `setDiagnosticLogger`
197
+ // to the core's transport layer, where every request/response is
198
+ // logged with secret redaction applied by the `redact` module
199
+ // BEFORE serialization. Output goes to stderr exclusively — the
200
+ // stdout data channel (json/yaml/pretty envelopes per #126/#128)
201
+ // is never touched.
202
+ let level = "none";
203
+ if (opts.debug === true) {
204
+ level = "debug";
205
+ }
206
+ else if (opts.verbose === true) {
207
+ level = "verbose";
208
+ }
209
+ setDiagnosticLogger(level);
210
+ // No-op note for non-mutation leaves: when `--dry-run` is set on a
211
+ // leaf that has NOT been tagged via `markMutation()` (today: every
212
+ // command except the basic-update leaf and its top-level alias),
213
+ // emit the AC-mandated stderr note and proceed normally. The
214
+ // exact text is locked by the AC for issue #52 — see
215
+ // `DRY_RUN_NO_OP_STDERR_NOTE` for the constant.
216
+ //
217
+ // The note is informational, not blocking — the action handler
218
+ // runs immediately after this hook returns. Read commands and
219
+ // unsupported mutations both fall into this branch today; future
220
+ // mutation-bearing PRs (timesheet submit per #13, additional
221
+ // profile sub-domain updates per #74-76) MUST call
222
+ // `markMutation()` on their leaves to opt out of the note.
223
+ if (dryRun && !isMutationCommand(actionCommand)) {
224
+ process.stderr.write(DRY_RUN_NO_OP_STDERR_NOTE);
225
+ }
226
+ })
227
+ // Second preAction hook — fires AFTER the sync setup above (Commander
228
+ // runs registered hooks in order). Async on purpose: the existing
229
+ // hook stays sync so it pays zero Promise-overhead on the hot path;
230
+ // the kill-switch fetch (#312) lives in its own hook so the async
231
+ // boundary is explicit.
232
+ //
233
+ // The hook awaits the remote known-broken manifest with a 3s cap.
234
+ // On match: emits a stderr warning (and exits non-zero when the
235
+ // entry's `action: "refuse"`). On any failure (network, timeout,
236
+ // 404, parse error, malformed manifest): silent — fail-silent
237
+ // contract per #312. Override via `TTCTL_DISABLE_KILL_SWITCH=1`.
238
+ //
239
+ // Skipped for `auth init` deliberately? — NO. The bootstrap command
240
+ // benefits from the warning too: a user creating a fresh config on
241
+ // a known-broken version should learn before they invest time in
242
+ // setup. The kill-switch fetch is fail-silent so it cannot block
243
+ // init's interactive prompts on a network failure.
244
+ .hook("preAction", async () => {
245
+ await runKillSwitchAtStartup();
246
+ });
247
+ registerAuthCommand(program);
248
+ program.addCommand(buildProfileCommand());
249
+ program.addCommand(buildApplicationsCommand());
250
+ program.addCommand(buildContractsCommand());
251
+ program.addCommand(buildEngagementsCommand());
252
+ program.addCommand(buildAvailabilityCommand());
253
+ program.addCommand(buildJobsCommand());
254
+ program.addCommand(buildPaymentsCommand());
255
+ program.addCommand(buildTimesheetCommand());
256
+ return program;
257
+ }
258
+ /**
259
+ * Detect whether the leaf command being executed is `auth init`. The
260
+ * Commander parent chain is `auth init` ← parent `auth` ← parent root —
261
+ * we walk the chain by name. Used by the global `preAction` hook to
262
+ * suppress the existence check on the global `--config` flag when the
263
+ * BOOTSTRAP command is the target. The `auth init` command's own
264
+ * `--config <path>` flag is the OUTPUT destination, NOT an input config;
265
+ * the global pre-flight gate would fire incorrectly in that case.
266
+ */
267
+ function isAuthInitCommand(actionCommand) {
268
+ if (actionCommand.name() !== "init")
269
+ return false;
270
+ const parent = actionCommand.parent;
271
+ return parent !== null && parent.name() === "auth";
272
+ }
273
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "@ttctl/cli",
3
- "version": "0.0.0",
4
- "description": "TTCtl CLI commands and program definition — placeholder reservation; real release in development",
3
+ "version": "0.1.0-rc.1",
4
+ "description": "TTCtl CLI commands and program definition",
5
5
  "type": "module",
6
- "main": "./index.js",
6
+ "engines": {
7
+ "node": ">=22.19.0"
8
+ },
7
9
  "license": "AGPL-3.0-only",
8
10
  "author": "Alexey Pelykh (https://github.com/alexey-pelykh)",
9
11
  "homepage": "https://github.com/alexey-pelykh/ttctl/tree/main/packages/cli",
@@ -11,20 +13,40 @@
11
13
  "funding": "https://github.com/sponsors/alexey-pelykh",
12
14
  "repository": {
13
15
  "type": "git",
14
- "url": "git+https://github.com/alexey-pelykh/ttctl.git",
16
+ "url": "https://github.com/alexey-pelykh/ttctl.git",
15
17
  "directory": "packages/cli"
16
18
  },
17
- "keywords": [
18
- "toptal-talent",
19
- "cli",
20
- "placeholder"
21
- ],
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
22
25
  "files": [
23
- "index.js",
24
- "README.md",
25
- "LICENSE"
26
+ "dist"
26
27
  ],
27
28
  "publishConfig": {
28
29
  "access": "public"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^25",
33
+ "eslint": "^10.3.0",
34
+ "typescript": "~6.0.3",
35
+ "vitest": "^4.1.1"
36
+ },
37
+ "dependencies": {
38
+ "@clack/prompts": "^1.1.0",
39
+ "cli-table3": "^0.6.5",
40
+ "commander": "^14.0.3",
41
+ "yaml": "^2.8.4",
42
+ "@ttctl/core": "^0.1.0-rc.1"
43
+ },
44
+ "scripts": {
45
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
46
+ "build": "tsc",
47
+ "typecheck": "tsc --noEmit",
48
+ "test": "vitest run --passWithNoTests",
49
+ "lint": "eslint src/",
50
+ "dev": "tsc --watch"
29
51
  }
30
- }
52
+ }
package/index.js DELETED
@@ -1,7 +0,0 @@
1
- // @ttctl/cli placeholder — name reservation only.
2
- // The real release is in development at https://github.com/alexey-pelykh/ttctl
3
- console.log(
4
- "@ttctl/cli: this is a placeholder reservation, not a functional release.\n" +
5
- "The real library is in development. See:\n" +
6
- " https://github.com/alexey-pelykh/ttctl",
7
- );