@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,32 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile external custom-requirements set`.
5
+ *
6
+ * The issue spec described this as multi-paragraph free-text consuming the
7
+ * #70 helper. Empirically (per
8
+ * `research/captures/web/inputs/UpdateCustomRequirementsInput.json`) the
9
+ * underlying `CustomRequirementsInput` is in fact three booleans
10
+ * (`backgroundCheck`, `drugTest`, `timeTrackingTools`), no free-text field
11
+ * exists on the schema. We follow API ground truth: the leaf takes
12
+ * `--background-check / --drug-test / --time-tracking-tools <true|false>`.
13
+ *
14
+ * Caller-omitted booleans default to the current server state (the
15
+ * underlying mutation has no PATCH semantics — every call resubmits ALL
16
+ * three booleans, so the service module pre-fetches and merges).
17
+ */
18
+ export declare function runProfileExternalCustomRequirementsSet(options: {
19
+ backgroundCheck?: string;
20
+ drugTest?: string;
21
+ timeTrackingTools?: string;
22
+ output: OutputFormat;
23
+ }): Promise<void>;
24
+ /**
25
+ * Pretty entity preview for the custom-requirements-set envelope. Renders
26
+ * the post-update boolean trio. The notice (when present) flows through
27
+ * the envelope's `notice` field, NOT this body.
28
+ *
29
+ * Pure — directly unit-testable.
30
+ */
31
+ export declare function formatSetPrettyEntity(result: profile.external.CustomRequirementsSetResult): string;
32
+ //# sourceMappingURL=custom-requirements-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-requirements-set.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/custom-requirements-set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uCAAuC,CAAC,OAAO,EAAE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhB;AAmCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,GAAG,MAAM,CAOlG"}
@@ -0,0 +1,116 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { TtctlError, profile } from "@ttctl/core";
4
+ import { presentTtctlError } from "../../../errors.js";
5
+ import { emitErrorAndExit, emitUpdateSuccess } from "../../../lib/envelopes.js";
6
+ import { loadAuthTokenOrExit, parseBooleanFlag } from "./_shared.js";
7
+ const COMMAND_LABEL = "profile external custom-requirements set";
8
+ const OPERATION = "profile.external.custom-requirements.set";
9
+ /**
10
+ * Action handler for `ttctl profile external custom-requirements set`.
11
+ *
12
+ * The issue spec described this as multi-paragraph free-text consuming the
13
+ * #70 helper. Empirically (per
14
+ * `research/captures/web/inputs/UpdateCustomRequirementsInput.json`) the
15
+ * underlying `CustomRequirementsInput` is in fact three booleans
16
+ * (`backgroundCheck`, `drugTest`, `timeTrackingTools`), no free-text field
17
+ * exists on the schema. We follow API ground truth: the leaf takes
18
+ * `--background-check / --drug-test / --time-tracking-tools <true|false>`.
19
+ *
20
+ * Caller-omitted booleans default to the current server state (the
21
+ * underlying mutation has no PATCH semantics — every call resubmits ALL
22
+ * three booleans, so the service module pre-fetches and merges).
23
+ */
24
+ export async function runProfileExternalCustomRequirementsSet(options) {
25
+ const changes = {};
26
+ if (options.backgroundCheck !== undefined) {
27
+ changes.backgroundCheck = parseBooleanFlag(COMMAND_LABEL, OPERATION, "background-check", options.backgroundCheck, options.output);
28
+ }
29
+ if (options.drugTest !== undefined) {
30
+ changes.drugTest = parseBooleanFlag(COMMAND_LABEL, OPERATION, "drug-test", options.drugTest, options.output);
31
+ }
32
+ if (options.timeTrackingTools !== undefined) {
33
+ changes.timeTrackingTools = parseBooleanFlag(COMMAND_LABEL, OPERATION, "time-tracking-tools", options.timeTrackingTools, options.output);
34
+ }
35
+ if (Object.keys(changes).length === 0) {
36
+ emitErrorAndExit({
37
+ operation: OPERATION,
38
+ format: options.output,
39
+ errors: [
40
+ {
41
+ code: "VALIDATION_ERROR",
42
+ message: `${COMMAND_LABEL} requires at least one of --background-check, --drug-test, --time-tracking-tools.`,
43
+ hint: "ttctl profile external custom-requirements set --background-check true",
44
+ },
45
+ ],
46
+ prettySummary: `${COMMAND_LABEL} requires at least one of --background-check, --drug-test, --time-tracking-tools.\n` +
47
+ "Example: ttctl profile external custom-requirements set --background-check true",
48
+ });
49
+ }
50
+ const token = await loadAuthTokenOrExit(COMMAND_LABEL, options.output);
51
+ let result;
52
+ try {
53
+ result = await profile.external.customRequirementsSet(token, changes);
54
+ }
55
+ catch (err) {
56
+ handleError(err, options.output);
57
+ return;
58
+ }
59
+ emitUpdateSuccess({
60
+ operation: OPERATION,
61
+ format: options.output,
62
+ updated: result,
63
+ prettySummary: "Custom requirements updated.",
64
+ prettyEntity: formatSetPrettyEntity,
65
+ notice: result.notice ?? undefined,
66
+ });
67
+ }
68
+ function handleError(err, format) {
69
+ if (err instanceof TtctlError) {
70
+ if (format === "pretty")
71
+ presentTtctlError(err);
72
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
73
+ emitErrorAndExit({
74
+ operation: OPERATION,
75
+ format,
76
+ errors,
77
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
78
+ });
79
+ }
80
+ if (err instanceof profile.external.ProfileError) {
81
+ emitErrorAndExit({
82
+ operation: OPERATION,
83
+ format,
84
+ errors: [{ code: err.code, message: err.message }],
85
+ prettySummary: `${COMMAND_LABEL} failed (${err.code}): ${err.message}`,
86
+ });
87
+ }
88
+ const message = err instanceof Error ? err.message : String(err);
89
+ emitErrorAndExit({
90
+ operation: OPERATION,
91
+ format,
92
+ errors: [{ code: "INTERNAL_ERROR", message }],
93
+ prettySummary: `${COMMAND_LABEL} failed: ${message}`,
94
+ });
95
+ }
96
+ function renderBoolean(value) {
97
+ if (value === null)
98
+ return "(unset)";
99
+ return value ? "yes" : "no";
100
+ }
101
+ /**
102
+ * Pretty entity preview for the custom-requirements-set envelope. Renders
103
+ * the post-update boolean trio. The notice (when present) flows through
104
+ * the envelope's `notice` field, NOT this body.
105
+ *
106
+ * Pure — directly unit-testable.
107
+ */
108
+ export function formatSetPrettyEntity(result) {
109
+ const cr = result.profile.customRequirements;
110
+ return [
111
+ `background-check: ${renderBoolean(cr.backgroundCheck)}`,
112
+ `drug-test: ${renderBoolean(cr.drugTest)}`,
113
+ `time-tracking-tools: ${renderBoolean(cr.timeTrackingTools)}`,
114
+ ].join("\n");
115
+ }
116
+ //# sourceMappingURL=custom-requirements-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-requirements-set.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/custom-requirements-set.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGhF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,aAAa,GAAG,0CAA0C,CAAC;AACjE,MAAM,SAAS,GAAG,0CAA0C,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAAC,OAK7D;IACC,MAAM,OAAO,GAA8C,EAAE,CAAC;IAC9D,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,CAAC,eAAe,GAAG,gBAAgB,CACxC,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAC1C,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,gBAAgB,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,GAAG,aAAa,mFAAmF;oBAC5G,IAAI,EAAE,wEAAwE;iBAC/E;aACF;YACD,aAAa,EACX,GAAG,aAAa,qFAAqF;gBACrG,iFAAiF;SACpF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAI,MAAoD,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,iBAAiB,CAAC;QAChB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,8BAA8B;QAC7C,YAAY,EAAE,qBAAqB;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,MAAoB;IACrD,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,KAAK,QAAQ;YAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAoB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/F,gBAAgB,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,YAAY,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjD,gBAAgB,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,MAAM;YACN,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAClD,aAAa,EAAE,GAAG,aAAa,YAAY,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,gBAAgB,CAAC;QACf,SAAS,EAAE,SAAS;QACpB,MAAM;QACN,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;QAC7C,aAAa,EAAE,GAAG,aAAa,YAAY,OAAO,EAAE;KACrD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAqB;IAC1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoD;IACxF,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC7C,OAAO;QACL,wBAAwB,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;QAC3D,wBAAwB,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;QACpD,wBAAwB,aAAa,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE;KAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile external custom-requirements show`.
5
+ *
6
+ * Prints the three onboarding-readiness toggles (background-check,
7
+ * drug-test, time-tracking-tools). The boolean trio is intentionally
8
+ * NOT free-text despite the issue's language — see the module top-comment
9
+ * in `core/services/profile/external/index.ts` for the spec/API reconciliation.
10
+ */
11
+ export declare function runProfileExternalCustomRequirementsShow(format: OutputFormat): Promise<void>;
12
+ /** Pure formatter — directly unit-testable. */
13
+ export declare function formatCustomRequirementsText(data: profile.external.CustomRequirements): string;
14
+ /** Pure formatter — directly unit-testable. */
15
+ export declare function formatCustomRequirementsTable(data: profile.external.CustomRequirements): string;
16
+ //# sourceMappingURL=custom-requirements-show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-requirements-show.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/custom-requirements-show.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAMlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;;;;;GAOG;AACH,wBAAsB,wCAAwC,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAelG;AAmCD,+CAA+C;AAC/C,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAO9F;AAED,+CAA+C;AAC/C,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAO/F"}
@@ -0,0 +1,84 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { TtctlError, profile } from "@ttctl/core";
4
+ import { presentTtctlError } from "../../../errors.js";
5
+ import { emitErrorAndExit } from "../../../lib/envelopes.js";
6
+ import { emitResult } from "../../../lib/output.js";
7
+ import { loadAuthTokenOrExit } from "./_shared.js";
8
+ const COMMAND_LABEL = "profile external custom-requirements show";
9
+ const OPERATION = "profile.external.custom-requirements.show";
10
+ /**
11
+ * Action handler for `ttctl profile external custom-requirements show`.
12
+ *
13
+ * Prints the three onboarding-readiness toggles (background-check,
14
+ * drug-test, time-tracking-tools). The boolean trio is intentionally
15
+ * NOT free-text despite the issue's language — see the module top-comment
16
+ * in `core/services/profile/external/index.ts` for the spec/API reconciliation.
17
+ */
18
+ export async function runProfileExternalCustomRequirementsShow(format) {
19
+ const token = await loadAuthTokenOrExit(COMMAND_LABEL, format);
20
+ let result;
21
+ try {
22
+ result = await profile.external.customRequirementsShow(token);
23
+ }
24
+ catch (err) {
25
+ handleError(err, format);
26
+ return;
27
+ }
28
+ emitResult(result, format, {
29
+ pretty: formatCustomRequirementsText,
30
+ table: formatCustomRequirementsTable,
31
+ });
32
+ }
33
+ function handleError(err, format) {
34
+ if (err instanceof TtctlError) {
35
+ if (format === "pretty")
36
+ presentTtctlError(err);
37
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
38
+ emitErrorAndExit({
39
+ operation: OPERATION,
40
+ format,
41
+ errors,
42
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
43
+ });
44
+ }
45
+ if (err instanceof profile.external.ProfileError) {
46
+ emitErrorAndExit({
47
+ operation: OPERATION,
48
+ format,
49
+ errors: [{ code: err.code, message: err.message }],
50
+ prettySummary: `${COMMAND_LABEL} failed (${err.code}): ${err.message}`,
51
+ });
52
+ }
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ emitErrorAndExit({
55
+ operation: OPERATION,
56
+ format,
57
+ errors: [{ code: "INTERNAL_ERROR", message }],
58
+ prettySummary: `${COMMAND_LABEL} failed: ${message}`,
59
+ });
60
+ }
61
+ function renderBoolean(value) {
62
+ if (value === null)
63
+ return "(unset)";
64
+ return value ? "yes" : "no";
65
+ }
66
+ /** Pure formatter — directly unit-testable. */
67
+ export function formatCustomRequirementsText(data) {
68
+ return [
69
+ "Custom requirements:",
70
+ ` background-check: ${renderBoolean(data.backgroundCheck)}`,
71
+ ` drug-test: ${renderBoolean(data.drugTest)}`,
72
+ ` time-tracking-tools: ${renderBoolean(data.timeTrackingTools)}`,
73
+ ].join("\n");
74
+ }
75
+ /** Pure formatter — directly unit-testable. */
76
+ export function formatCustomRequirementsTable(data) {
77
+ const rows = [
78
+ ["background-check", renderBoolean(data.backgroundCheck)],
79
+ ["drug-test", renderBoolean(data.drugTest)],
80
+ ["time-tracking-tools", renderBoolean(data.timeTrackingTools)],
81
+ ];
82
+ return rows.map(([k, v]) => `${k}\t${v}`).join("\n");
83
+ }
84
+ //# sourceMappingURL=custom-requirements-show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-requirements-show.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/custom-requirements-show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * Build the `ttctl profile external` command tree. The "external" sub-domain
4
+ * bundles operations that the operation catalog clusters under the umbrella
5
+ * names `external profile / advanced profile / wizard`. See
6
+ * `core/services/profile/external/index.ts` for the heterogeneity rationale,
7
+ * the deferred-ops list, and the spec/API divergences this PR documents
8
+ * (notably: the `customRequirementsSet` boolean trio that supersedes the
9
+ * issue's free-text-helper-#70 description).
10
+ *
11
+ * Six leaves:
12
+ * - update
13
+ * - custom-requirements show
14
+ * - custom-requirements set
15
+ * - readiness
16
+ * - recommendations
17
+ * - advanced-wizard show
18
+ */
19
+ export declare function buildProfileExternalCommand(): Command;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAW5C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAmHrD"}
@@ -0,0 +1,102 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { Command, Option } from "commander";
4
+ import { OUTPUT_FORMATS } from "../../../lib/output.js";
5
+ import { runProfileExternalAdvancedWizardShow } from "./advanced-wizard-show.js";
6
+ import { runProfileExternalCustomRequirementsSet } from "./custom-requirements-set.js";
7
+ import { runProfileExternalCustomRequirementsShow } from "./custom-requirements-show.js";
8
+ import { runProfileExternalReadiness } from "./readiness.js";
9
+ import { runProfileExternalRecommendations } from "./recommendations.js";
10
+ import { runProfileExternalUpdate } from "./update.js";
11
+ /**
12
+ * Build the `ttctl profile external` command tree. The "external" sub-domain
13
+ * bundles operations that the operation catalog clusters under the umbrella
14
+ * names `external profile / advanced profile / wizard`. See
15
+ * `core/services/profile/external/index.ts` for the heterogeneity rationale,
16
+ * the deferred-ops list, and the spec/API divergences this PR documents
17
+ * (notably: the `customRequirementsSet` boolean trio that supersedes the
18
+ * issue's free-text-helper-#70 description).
19
+ *
20
+ * Six leaves:
21
+ * - update
22
+ * - custom-requirements show
23
+ * - custom-requirements set
24
+ * - readiness
25
+ * - recommendations
26
+ * - advanced-wizard show
27
+ */
28
+ export function buildProfileExternalCommand() {
29
+ const external = new Command("external").description("View and update external profile links, custom requirements, readiness, and the advanced-profile wizard");
30
+ external
31
+ .command("update")
32
+ .description("Update external profile URLs (linkedin, github, website, twitter, behance, dribbble)")
33
+ .option("--linkedin <url>", "LinkedIn profile URL")
34
+ .option("--github <url>", "GitHub profile URL")
35
+ .option("--website <url>", "Personal website URL")
36
+ .option("--twitter <url>", "Twitter / X profile URL")
37
+ .option("--behance <url>", "Behance profile URL")
38
+ .option("--dribbble <url>", "Dribbble profile URL")
39
+ .addOption(new Option("-o, --output <format>", "output format")
40
+ .choices(OUTPUT_FORMATS)
41
+ .default("pretty"))
42
+ .action(async (options) => {
43
+ await runProfileExternalUpdate(options);
44
+ });
45
+ const customRequirements = external
46
+ .command("custom-requirements")
47
+ .description("View and update onboarding-readiness toggles (background check, drug test, time-tracking tools)");
48
+ customRequirements
49
+ .command("show")
50
+ .description("Print the three onboarding-readiness toggles")
51
+ .addOption(new Option("-o, --output <format>", "output format")
52
+ .choices(OUTPUT_FORMATS)
53
+ .default("pretty"))
54
+ .action(async (options) => {
55
+ await runProfileExternalCustomRequirementsShow(options.output);
56
+ });
57
+ customRequirements
58
+ .command("set")
59
+ .description("Toggle onboarding-readiness booleans. " +
60
+ "Note: the underlying API is a three-boolean form (NOT free-text), so this leaf accepts " +
61
+ "--background-check / --drug-test / --time-tracking-tools <true|false>. " +
62
+ "See PR #76 for the spec/API reconciliation.")
63
+ .option("--background-check <bool>", "willing to undergo background check (true|false)")
64
+ .option("--drug-test <bool>", "willing to undergo drug test (true|false)")
65
+ .option("--time-tracking-tools <bool>", "willing to use time-tracking tools (true|false)")
66
+ .addOption(new Option("-o, --output <format>", "output format")
67
+ .choices(OUTPUT_FORMATS)
68
+ .default("pretty"))
69
+ .action(async (options) => {
70
+ await runProfileExternalCustomRequirementsSet(options);
71
+ });
72
+ external
73
+ .command("readiness")
74
+ .description("Show the per-section profile-readiness checklist and the rolled-up submit-available flag")
75
+ .addOption(new Option("-o, --output <format>", "output format")
76
+ .choices(OUTPUT_FORMATS)
77
+ .default("pretty"))
78
+ .action(async (options) => {
79
+ await runProfileExternalReadiness(options.output);
80
+ });
81
+ external
82
+ .command("recommendations")
83
+ .description("List the platform's per-section 'do this next' recommendations")
84
+ .addOption(new Option("-o, --output <format>", "output format")
85
+ .choices(OUTPUT_FORMATS)
86
+ .default("pretty"))
87
+ .action(async (options) => {
88
+ await runProfileExternalRecommendations(options.output);
89
+ });
90
+ const advancedWizard = external.command("advanced-wizard").description("View the advanced-profile-wizard status");
91
+ advancedWizard
92
+ .command("show")
93
+ .description("Show the advanced-profile-wizard status (and travel-visa summary)")
94
+ .addOption(new Option("-o, --output <format>", "output format")
95
+ .choices(OUTPUT_FORMATS)
96
+ .default("pretty"))
97
+ .action(async (options) => {
98
+ await runProfileExternalAdvancedWizardShow(options.output);
99
+ });
100
+ return external;
101
+ }
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile external readiness`.
5
+ *
6
+ * Surfaces the per-section profile-readiness booleans plus the rolled-up
7
+ * `submit-available` flag. The user reads this to know which sections still
8
+ * need work before they can click "Submit profile for review".
9
+ */
10
+ export declare function runProfileExternalReadiness(format: OutputFormat): Promise<void>;
11
+ /** Pure formatter — directly unit-testable. */
12
+ export declare function formatReadinessText(data: profile.external.ProfileReadiness): string;
13
+ /** Pure formatter — directly unit-testable. */
14
+ export declare function formatReadinessTable(data: profile.external.ProfileReadiness): string;
15
+ //# sourceMappingURL=readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/readiness.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAMlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAerF;AA+CD,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAYnF;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAYpF"}
@@ -0,0 +1,104 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { TtctlError, profile } from "@ttctl/core";
4
+ import { presentTtctlError } from "../../../errors.js";
5
+ import { emitErrorAndExit } from "../../../lib/envelopes.js";
6
+ import { emitResult } from "../../../lib/output.js";
7
+ import { loadAuthTokenOrExit } from "./_shared.js";
8
+ const COMMAND_LABEL = "profile external readiness";
9
+ const OPERATION = "profile.external.readiness";
10
+ /**
11
+ * Action handler for `ttctl profile external readiness`.
12
+ *
13
+ * Surfaces the per-section profile-readiness booleans plus the rolled-up
14
+ * `submit-available` flag. The user reads this to know which sections still
15
+ * need work before they can click "Submit profile for review".
16
+ */
17
+ export async function runProfileExternalReadiness(format) {
18
+ const token = await loadAuthTokenOrExit(COMMAND_LABEL, format);
19
+ let result;
20
+ try {
21
+ result = await profile.external.readiness(token);
22
+ }
23
+ catch (err) {
24
+ handleError(err, format);
25
+ return;
26
+ }
27
+ emitResult(result, format, {
28
+ pretty: formatReadinessText,
29
+ table: formatReadinessTable,
30
+ });
31
+ }
32
+ function handleError(err, format) {
33
+ if (err instanceof TtctlError) {
34
+ if (format === "pretty")
35
+ presentTtctlError(err);
36
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
37
+ emitErrorAndExit({
38
+ operation: OPERATION,
39
+ format,
40
+ errors,
41
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
42
+ });
43
+ }
44
+ if (err instanceof profile.external.ProfileError) {
45
+ emitErrorAndExit({
46
+ operation: OPERATION,
47
+ format,
48
+ errors: [{ code: err.code, message: err.message }],
49
+ prettySummary: `${COMMAND_LABEL} failed (${err.code}): ${err.message}`,
50
+ });
51
+ }
52
+ const message = err instanceof Error ? err.message : String(err);
53
+ emitErrorAndExit({
54
+ operation: OPERATION,
55
+ format,
56
+ errors: [{ code: "INTERNAL_ERROR", message }],
57
+ prettySummary: `${COMMAND_LABEL} failed: ${message}`,
58
+ });
59
+ }
60
+ function renderReadinessBoolean(value) {
61
+ if (value === null)
62
+ return "(unset)";
63
+ return value ? "✓" : "✗";
64
+ }
65
+ const READINESS_FIELDS = [
66
+ { key: "isPhotoResolutionSatisfied", label: "photo-resolution" },
67
+ { key: "isBasicInfoSatisfied", label: "basic-info" },
68
+ { key: "isCertificationsSatisfied", label: "certifications" },
69
+ { key: "isEmploymentsCountSatisfied", label: "employments-count" },
70
+ { key: "isEmploymentConnectionsSatisfied", label: "employment-connections" },
71
+ { key: "isSkillValidationsSatisfied", label: "skill-validations" },
72
+ { key: "isPortfolioItemsCountSatisfied", label: "portfolio-items-count" },
73
+ { key: "isPortfolioItemConnectionsSatisfied", label: "portfolio-item-connections" },
74
+ { key: "isWorkingHoursSatisfied", label: "working-hours" },
75
+ ];
76
+ /** Pure formatter — directly unit-testable. */
77
+ export function formatReadinessText(data) {
78
+ const lines = [`Profile readiness — submit-available: ${renderReadinessBoolean(data.submitAvailable)}`];
79
+ for (const { key, label } of READINESS_FIELDS) {
80
+ const v = data[key];
81
+ if (typeof v === "boolean" || v === null) {
82
+ lines.push(` ${label.padEnd(28)} ${renderReadinessBoolean(v)}`);
83
+ }
84
+ }
85
+ if (data.updatedByTalentAt !== null) {
86
+ lines.push(` ${"updated-by-talent-at".padEnd(28)} ${data.updatedByTalentAt}`);
87
+ }
88
+ return lines.join("\n");
89
+ }
90
+ /** Pure formatter — directly unit-testable. */
91
+ export function formatReadinessTable(data) {
92
+ const rows = [["submit-available", renderReadinessBoolean(data.submitAvailable)]];
93
+ for (const { key, label } of READINESS_FIELDS) {
94
+ const v = data[key];
95
+ if (typeof v === "boolean" || v === null) {
96
+ rows.push([label, renderReadinessBoolean(v)]);
97
+ }
98
+ }
99
+ if (data.updatedByTalentAt !== null) {
100
+ rows.push(["updated-by-talent-at", data.updatedByTalentAt]);
101
+ }
102
+ return rows.map(([k, v]) => `${k}\t${v}`).join("\n");
103
+ }
104
+ //# sourceMappingURL=readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { OutputFormat } from "../../../lib/output.js";
3
+ /**
4
+ * Action handler for `ttctl profile external recommendations`.
5
+ *
6
+ * Lists the per-section "do this next" recommendations the platform
7
+ * surfaces to nudge the talent towards a complete profile. Each
8
+ * recommendation is a discriminated union over multiple types (e.g.
9
+ * `EmploymentsCountRecommendation`, `PortfolioItemsCountRecommendation`);
10
+ * the CLI surfaces each as `type` + a stringified payload preview.
11
+ */
12
+ export declare function runProfileExternalRecommendations(format: OutputFormat): Promise<void>;
13
+ /** Pure formatter — directly unit-testable. */
14
+ export declare function formatRecommendationsText(data: profile.external.ProfileRecommendation[]): string;
15
+ /** Pure formatter — directly unit-testable. */
16
+ export declare function formatRecommendationsTable(data: profile.external.ProfileRecommendation[]): string;
17
+ //# sourceMappingURL=recommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/recommendations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAMlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;;;;;;GAQG;AACH,wBAAsB,iCAAiC,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3F;AA6CD,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,MAAM,CAQhG;AAED,+CAA+C;AAC/C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,MAAM,CAIjG"}