@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,95 @@
1
+ import { profile } from "@ttctl/core";
2
+ import type { ProfileShowQuery } from "@ttctl/core";
3
+ import type { OutputFormat } from "../../../lib/output.js";
4
+ /**
5
+ * Composite payload rendered by the `basic show` formatters: the
6
+ * mobile-gateway `ProfileShowQuery` (identity, role, viewer profile,
7
+ * skills) plus the talent-profile `BasicInfo` projection (`bio`,
8
+ * `headline`, `languages`) added in #127.
9
+ *
10
+ * The talent-profile-side fields are NOT on the wire `Profile` type
11
+ * surfaced by `mobile-gateway` (per the comment block in
12
+ * `services/profile/basic/index.ts`); the read surface dispatches a
13
+ * second call against `talent_profile/graphql` to fetch them. The
14
+ * formatter consumes the merged shape so the `pretty` rendering can
15
+ * surface every editable field (#129 closes the audit-confirmed
16
+ * field-dropping defects from #124).
17
+ *
18
+ * `basicInfo` is `null` when the second call failed in a way that
19
+ * shouldn't fail the whole show command (network blip on the secondary
20
+ * surface); the formatter degrades gracefully — bio/headline/languages
21
+ * render as `(unset)` rather than throwing. Hard failures (auth-revoked,
22
+ * 403) propagate verbatim via the action handler's error path.
23
+ */
24
+ export interface BasicShowPayload {
25
+ profile: ProfileShowQuery;
26
+ basicInfo: profile.basic.BasicInfo | null;
27
+ }
28
+ /**
29
+ * Action handler for `ttctl profile basic show` (also reachable as the
30
+ * short-form `ttctl profile show`). Loads the persisted auth token, fetches
31
+ * the profile via `profile.basic.show()` from `@ttctl/core`, and emits the
32
+ * payload through the shared `emitResult` helper. Maps domain errors to
33
+ * actionable stderr messages and a non-zero exit code.
34
+ *
35
+ * Two-call read surface (post-#129): in addition to the mobile-gateway
36
+ * `ProfileShow` query, the handler dispatches `getBasicInfo()` against
37
+ * `talent_profile/graphql` to fetch `bio` / `headline` / `languages`
38
+ * (the audit-confirmed query-root-cause fields from #124, fixed in #127).
39
+ * The two payloads merge into {@link BasicShowPayload} for the
40
+ * formatter / JSON / YAML branches.
41
+ *
42
+ * Errors from the secondary `getBasicInfo()` call are non-fatal: the
43
+ * handler swallows transport-level / GraphQL failures and renders
44
+ * `basicInfo: null`, so a glitch on the secondary surface doesn't blank
45
+ * the whole show. Auth-revoked + Cloudflare-403 still propagate (those
46
+ * indicate the user's session is no longer valid; the primary call would
47
+ * have hit them too).
48
+ *
49
+ * No-token case: surface as `UNAUTHENTICATED` with the same hint as a
50
+ * gateway 401, so the user-visible message ("run `ttctl auth signin`") is
51
+ * uniform across "never signed in" and "signed in but expired".
52
+ */
53
+ export declare function runProfileBasicShow(format: OutputFormat): Promise<void>;
54
+ /**
55
+ * Format the merged `basic show` payload as the post-#129 `pretty`
56
+ * summary. Pure function — no I/O — directly unit-testable.
57
+ *
58
+ * Field ordering reflects the audit's recommendation: identity (name,
59
+ * email, phone, city) first, then user-narrative fields (headline, bio,
60
+ * languages — the audit-confirmed previously-dropped fields from
61
+ * #127), then role metadata (vertical, specializations, availability,
62
+ * rate, time zone, public skills), then server-side metadata (photo URL).
63
+ *
64
+ * Null convention: fields the user CAN set but hasn't render as
65
+ * `(unset)` (per the audit's standardisation rec); the bio gets the
66
+ * CTA-style hint to nudge the user toward `update --bio`. Skip-if-null
67
+ * is reserved for fields that aren't user-editable from this CLI
68
+ * (`phoneNumber` empty, no public skills, …).
69
+ *
70
+ * Pretty does NOT truncate to 80 columns (per the issue AC: "For long
71
+ * URLs / IDs: don't truncate (this is `pretty`, not `table`)"); the
72
+ * terminal wraps if the user's window is narrow. The `table` format
73
+ * keeps width discipline (`cli-table3` `wordWrap: true`).
74
+ */
75
+ export declare function formatProfilePretty(payload: BasicShowPayload): string;
76
+ /**
77
+ * Format the merged `basic show` payload as a `cli-table3`-rendered
78
+ * key/value table. Pure function — no I/O — directly unit-testable. The
79
+ * table sizes itself to `terminalWidth` (defaulting to
80
+ * `process.stdout.columns || 80`) with `wordWrap` enabled.
81
+ *
82
+ * The table representation is internal-only post-#126 — the user-visible
83
+ * `--output=pretty` shape-dispatches to `pretty` for show verbs and to
84
+ * `table` for list verbs; `basic show` is a show verb. The table slot
85
+ * remains for the rare narrow-terminal use case where the curated
86
+ * key:value pretty layout overflows; the dispatcher's fallback path
87
+ * uses it.
88
+ *
89
+ * `terminalWidth` is parameterised so tests can verify width adaptation
90
+ * without monkey-patching `process.stdout.columns`.
91
+ */
92
+ export declare function formatProfileTable(payload: BasicShowPayload, terminalWidth?: number): string;
93
+ declare function truncate(s: string, width: number): string;
94
+ export { truncate };
95
+ //# sourceMappingURL=show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/basic/show.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7E;AA+GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgDrE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,EACzB,aAAa,GAAE,MAAqC,GACnD,MAAM,CAsDR;AAED,iBAAS,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD;AAID,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,310 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import Table from "cli-table3";
4
+ import { TtctlError, profile } from "@ttctl/core";
5
+ import { presentTtctlError } from "../../../errors.js";
6
+ import { emitErrorAndExit } from "../../../lib/envelopes.js";
7
+ import { renderMultiParagraph, unsetOr } from "../../../lib/format-helpers.js";
8
+ import { emitResult } from "../../../lib/output.js";
9
+ import { loadAuthTokenOrExit } from "../shared.js";
10
+ /**
11
+ * Action handler for `ttctl profile basic show` (also reachable as the
12
+ * short-form `ttctl profile show`). Loads the persisted auth token, fetches
13
+ * the profile via `profile.basic.show()` from `@ttctl/core`, and emits the
14
+ * payload through the shared `emitResult` helper. Maps domain errors to
15
+ * actionable stderr messages and a non-zero exit code.
16
+ *
17
+ * Two-call read surface (post-#129): in addition to the mobile-gateway
18
+ * `ProfileShow` query, the handler dispatches `getBasicInfo()` against
19
+ * `talent_profile/graphql` to fetch `bio` / `headline` / `languages`
20
+ * (the audit-confirmed query-root-cause fields from #124, fixed in #127).
21
+ * The two payloads merge into {@link BasicShowPayload} for the
22
+ * formatter / JSON / YAML branches.
23
+ *
24
+ * Errors from the secondary `getBasicInfo()` call are non-fatal: the
25
+ * handler swallows transport-level / GraphQL failures and renders
26
+ * `basicInfo: null`, so a glitch on the secondary surface doesn't blank
27
+ * the whole show. Auth-revoked + Cloudflare-403 still propagate (those
28
+ * indicate the user's session is no longer valid; the primary call would
29
+ * have hit them too).
30
+ *
31
+ * No-token case: surface as `UNAUTHENTICATED` with the same hint as a
32
+ * gateway 401, so the user-visible message ("run `ttctl auth signin`") is
33
+ * uniform across "never signed in" and "signed in but expired".
34
+ */
35
+ export async function runProfileBasicShow(format) {
36
+ const token = await loadAuthTokenOrExit("profile show", format);
37
+ let profilePayload;
38
+ try {
39
+ profilePayload = await profile.basic.show(token);
40
+ }
41
+ catch (err) {
42
+ handleProfileShowError(err, format);
43
+ return;
44
+ }
45
+ let basicInfo = null;
46
+ try {
47
+ basicInfo = await profile.basic.getBasicInfo(token);
48
+ }
49
+ catch (err) {
50
+ // Auth-revoked / Cloudflare-403 are session-level failures — let them
51
+ // surface so the user knows to re-authenticate. The primary `show()`
52
+ // would have hit the same issue, so we shouldn't be here unless the
53
+ // talent-profile surface specifically is rejecting; either way, the
54
+ // user needs to act on it.
55
+ if (err instanceof TtctlError) {
56
+ handleProfileShowError(err, format);
57
+ return;
58
+ }
59
+ // Anything else (NETWORK_ERROR, GRAPHQL_ERROR on the talent-profile
60
+ // surface) is non-fatal: the primary payload landed, so render the
61
+ // partial result with `(unset)` placeholders for the talent-profile
62
+ // fields. A diagnostic on stderr keeps the failure visible without
63
+ // breaking the user's `--output json` pipe.
64
+ process.stderr.write(`note: failed to fetch talent_profile basic info; rendering without bio/headline/languages: ${err instanceof Error ? err.message : String(err)}\n`);
65
+ }
66
+ emitResult({ profile: profilePayload, basicInfo }, format, {
67
+ pretty: formatProfilePretty,
68
+ table: formatProfileTable,
69
+ });
70
+ }
71
+ /**
72
+ * Map `profile.basic.show()` errors to actionable stderr messages and a
73
+ * non-zero exit.
74
+ *
75
+ * `TtctlError` subclasses (`Cf403Error`, `Cf403PersistentError`,
76
+ * `AuthRevokedError`, `SchedulerBearerExpired`) render in the uniform
77
+ * `Error: ... / Recovery: ... / (Code: ...)` format defined in #77.
78
+ * Domain `ProfileError` codes (NO_VIEWER, GRAPHQL_ERROR, USER_ERROR, …)
79
+ * keep the existing "(CODE): message" rendering. Anything else gets a
80
+ * generic prefix.
81
+ */
82
+ function handleProfileShowError(err, format) {
83
+ if (err instanceof TtctlError) {
84
+ if (format === "pretty")
85
+ presentTtctlError(err);
86
+ const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
87
+ emitErrorAndExit({
88
+ operation: "profile.basic.show",
89
+ format,
90
+ errors,
91
+ exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
92
+ });
93
+ }
94
+ if (err instanceof profile.basic.ProfileError) {
95
+ emitErrorAndExit({
96
+ operation: "profile.basic.show",
97
+ format,
98
+ errors: [{ code: err.code, message: err.message }],
99
+ prettySummary: `profile show failed (${err.code}): ${err.message}`,
100
+ });
101
+ }
102
+ const message = err instanceof Error ? err.message : String(err);
103
+ emitErrorAndExit({
104
+ operation: "profile.basic.show",
105
+ format,
106
+ errors: [{ code: "INTERNAL_ERROR", message }],
107
+ prettySummary: `profile show failed: ${message}`,
108
+ });
109
+ }
110
+ function collectPublicSkills(viewerProfile) {
111
+ return viewerProfile.skillSets.nodes
112
+ .filter((n) => n !== null)
113
+ .filter((n) => n.public)
114
+ .slice(0, 5)
115
+ .map((n) => n.skill.name);
116
+ }
117
+ function collectSpecializations(role) {
118
+ return role.specializations
119
+ .filter((s) => s !== null)
120
+ .slice(0, 3)
121
+ .map((s) => s.title);
122
+ }
123
+ function formatHoursRatio(role) {
124
+ return `${role.hiredHours.toString()}/${role.allocatedHours.toString()}h`;
125
+ }
126
+ /**
127
+ * CTA-styled `(unset)` placeholder for the bio field — the audit-defined
128
+ * convention is to nudge the user toward the corresponding `update`
129
+ * command rather than leaving a bare `(unset)` on a field that's the
130
+ * primary value-add of the profile. Other fields get the bare placeholder.
131
+ */
132
+ const BIO_UNSET_HINT = `(unset — set with: ttctl profile basic update --bio "<text>")`;
133
+ /**
134
+ * Render the headline as a single line. Headlines are short by API
135
+ * contract (the talent-profile UI caps `Profile.quote` at ~120 chars);
136
+ * we don't truncate further — `pretty` doesn't truncate.
137
+ */
138
+ function formatHeadlineLine(headline, indent) {
139
+ return `${indent}Headline: ${unsetOr(headline)}`;
140
+ }
141
+ /**
142
+ * Render the bio as either a CTA-style unset line or a multi-paragraph
143
+ * block. The block format puts `Bio:` on its own line and indents the
144
+ * body two further spaces so paragraph breaks (`\n\n` in source) survive
145
+ * as actual blank lines — required by the AC ("no `\n\n` literal escape
146
+ * leak").
147
+ */
148
+ function formatBioBlock(bio, indent) {
149
+ if (bio === null || bio === undefined || bio === "") {
150
+ return `${indent}Bio: ${BIO_UNSET_HINT}`;
151
+ }
152
+ return renderMultiParagraph("Bio", bio, indent);
153
+ }
154
+ /**
155
+ * Render the languages list. ≤3 entries fit on a comma-separated line;
156
+ * >3 entries wrap onto a sub-list (one entry per line, indented one
157
+ * level deeper) for legibility.
158
+ */
159
+ function formatLanguagesLine(languages, indent) {
160
+ if (languages.length === 0) {
161
+ return `${indent}Languages: ${unsetOr(null)}`;
162
+ }
163
+ const names = languages.map((l) => l.name);
164
+ if (names.length <= 3) {
165
+ return `${indent}Languages: ${names.join(", ")}`;
166
+ }
167
+ const sub = names.map((n) => `${indent} - ${n}`).join("\n");
168
+ return `${indent}Languages:\n${sub}`;
169
+ }
170
+ /**
171
+ * Format the merged `basic show` payload as the post-#129 `pretty`
172
+ * summary. Pure function — no I/O — directly unit-testable.
173
+ *
174
+ * Field ordering reflects the audit's recommendation: identity (name,
175
+ * email, phone, city) first, then user-narrative fields (headline, bio,
176
+ * languages — the audit-confirmed previously-dropped fields from
177
+ * #127), then role metadata (vertical, specializations, availability,
178
+ * rate, time zone, public skills), then server-side metadata (photo URL).
179
+ *
180
+ * Null convention: fields the user CAN set but hasn't render as
181
+ * `(unset)` (per the audit's standardisation rec); the bio gets the
182
+ * CTA-style hint to nudge the user toward `update --bio`. Skip-if-null
183
+ * is reserved for fields that aren't user-editable from this CLI
184
+ * (`phoneNumber` empty, no public skills, …).
185
+ *
186
+ * Pretty does NOT truncate to 80 columns (per the issue AC: "For long
187
+ * URLs / IDs: don't truncate (this is `pretty`, not `table`)"); the
188
+ * terminal wraps if the user's window is narrow. The `table` format
189
+ * keeps width discipline (`cli-table3` `wordWrap: true`).
190
+ */
191
+ export function formatProfilePretty(payload) {
192
+ const viewer = payload.profile.viewer;
193
+ if (viewer === null) {
194
+ return "(no viewer bound to this session)";
195
+ }
196
+ const role = viewer.viewerRole;
197
+ const viewerProfile = role.profile;
198
+ const skills = collectPublicSkills(viewerProfile);
199
+ const specializations = collectSpecializations(role);
200
+ const hoursRatio = formatHoursRatio(role);
201
+ const indent = " ";
202
+ const lines = [role.fullName, `${indent}${role.email}`];
203
+ if (role.phoneNumber !== "") {
204
+ lines.push(`${indent}${role.phoneNumber}`);
205
+ }
206
+ if (viewerProfile.city !== "") {
207
+ lines.push(`${indent}${viewerProfile.city}`);
208
+ }
209
+ // User-narrative fields (post-#127 talent-profile reads). Always emit
210
+ // these — the (unset) placeholder is itself the user-visible signal
211
+ // that the field exists and can be edited.
212
+ lines.push(formatHeadlineLine(payload.basicInfo?.headline, indent));
213
+ lines.push(formatBioBlock(payload.basicInfo?.bio, indent));
214
+ lines.push(formatLanguagesLine(payload.basicInfo?.languages ?? [], indent));
215
+ // Role metadata. `Vertical` and `Availability` are not user-editable
216
+ // from this CLI; they render as-is (no `(unset)` for non-editable
217
+ // fields per the audit's skip-if-null escape hatch).
218
+ lines.push(`${indent}Vertical: ${role.vertical.name}`);
219
+ if (specializations.length > 0) {
220
+ lines.push(`${indent}Specializations: ${specializations.join(", ")}`);
221
+ }
222
+ lines.push(`${indent}Availability: ${role.availability} (${hoursRatio})`);
223
+ lines.push(`${indent}Rate: ${role.hourlyRate.verbose}/hr`);
224
+ lines.push(`${indent}TimeZone: ${role.timeZone.value}`);
225
+ if (skills.length > 0) {
226
+ lines.push(`${indent}Skills: ${skills.join(", ")}`);
227
+ }
228
+ // Server-side metadata last. `photo.large` may be empty when the user
229
+ // hasn't uploaded a photo — render `(unset)` so the field is visible
230
+ // (it's user-editable via `photo upload`).
231
+ lines.push(`${indent}Photo: ${unsetOr(role.photo.large)}`);
232
+ return lines.join("\n");
233
+ }
234
+ /**
235
+ * Format the merged `basic show` payload as a `cli-table3`-rendered
236
+ * key/value table. Pure function — no I/O — directly unit-testable. The
237
+ * table sizes itself to `terminalWidth` (defaulting to
238
+ * `process.stdout.columns || 80`) with `wordWrap` enabled.
239
+ *
240
+ * The table representation is internal-only post-#126 — the user-visible
241
+ * `--output=pretty` shape-dispatches to `pretty` for show verbs and to
242
+ * `table` for list verbs; `basic show` is a show verb. The table slot
243
+ * remains for the rare narrow-terminal use case where the curated
244
+ * key:value pretty layout overflows; the dispatcher's fallback path
245
+ * uses it.
246
+ *
247
+ * `terminalWidth` is parameterised so tests can verify width adaptation
248
+ * without monkey-patching `process.stdout.columns`.
249
+ */
250
+ export function formatProfileTable(payload, terminalWidth = process.stdout.columns || 80) {
251
+ const viewer = payload.profile.viewer;
252
+ if (viewer === null) {
253
+ const table = new Table({ head: ["Field", "Value"] });
254
+ table.push(["name", "(no viewer)"]);
255
+ return table.toString();
256
+ }
257
+ const role = viewer.viewerRole;
258
+ const viewerProfile = role.profile;
259
+ const skills = collectPublicSkills(viewerProfile);
260
+ const specializations = collectSpecializations(role);
261
+ const hoursRatio = formatHoursRatio(role);
262
+ const info = payload.basicInfo;
263
+ const languageNames = (info?.languages ?? []).map((l) => l.name);
264
+ const rows = [
265
+ ["name", role.fullName],
266
+ ["email", role.email],
267
+ ["phone", role.phoneNumber],
268
+ ["city", unsetOr(viewerProfile.city)],
269
+ ["headline", unsetOr(info?.headline)],
270
+ ["bio", unsetOr(info?.bio)],
271
+ ["languages", languageNames.length > 0 ? languageNames.join(", ") : unsetOr(null)],
272
+ ["vertical", role.vertical.name],
273
+ ["specializations", specializations.join(",")],
274
+ ["availability", role.availability],
275
+ ["allocated_hours", role.allocatedHours.toString()],
276
+ ["hired_hours", role.hiredHours.toString()],
277
+ ["hours", hoursRatio],
278
+ ["hourly_rate", role.hourlyRate.verbose],
279
+ ["time_zone", role.timeZone.value],
280
+ ["public_resume_url", role.publicResumeUrl],
281
+ ["skills", skills.join(",")],
282
+ ["photo_url", unsetOr(role.photo.large)],
283
+ ];
284
+ // Allocate the field column at 20 cols. cli-table3 reserves 2 chars of
285
+ // each column for left+right cell padding, so the visible content area
286
+ // is 18 chars — enough for the longest key ("public_resume_url" at 17
287
+ // chars). The value column gets the rest minus ~5 for box drawing + the
288
+ // outer padding. Floor at 20 so the table stays readable on very narrow
289
+ // terminals.
290
+ const fieldWidth = 20;
291
+ const valueWidth = Math.max(20, terminalWidth - fieldWidth - 5);
292
+ const table = new Table({
293
+ head: ["Field", "Value"],
294
+ colWidths: [fieldWidth, valueWidth],
295
+ wordWrap: true,
296
+ });
297
+ for (const [k, v] of rows) {
298
+ table.push([k, v]);
299
+ }
300
+ return table.toString();
301
+ }
302
+ function truncate(s, width) {
303
+ if (s.length <= width)
304
+ return s;
305
+ return `${s.slice(0, width - 1)}…`;
306
+ }
307
+ // Helper re-export for sibling `set.ts` / `photo-show.ts` / `photo-upload.ts`.
308
+ // Internal to this folder; not part of the package's public surface.
309
+ export { truncate };
310
+ //# sourceMappingURL=show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../../src/commands/profile/basic/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { profile } from "@ttctl/core";
2
+ import { Command } from "commander";
3
+ /**
4
+ * Build the `ttctl profile certifications` command tree.
5
+ *
6
+ * The canonical sub-domain name is `certifications`; the CLI registers
7
+ * `certs` as a Commander.js alias so users can type either form. Per
8
+ * project policy (see issue #72), aliases are CLI-only — MCP tool names
9
+ * use ONLY the canonical name.
10
+ *
11
+ * Five leaves:
12
+ * - `add --name --issuer [--issued --expires]`
13
+ * - `update <id> [field-flags]`
14
+ * - `remove <id>`
15
+ * - `show <id> [-o text|json|table]`
16
+ * - `highlight <id>`
17
+ *
18
+ * Date input flags accept ISO-8601 (`2023-01-15`) or year-only (`2023`).
19
+ * Certifications store month + year (separate Int fields) so the helper
20
+ * preserves the month component and ignores any provided day.
21
+ */
22
+ export declare function buildProfileCertificationsCommand(): Command;
23
+ /**
24
+ * Pretty-print a Certification row. Pure — no I/O.
25
+ */
26
+ export declare function formatCertificationText(c: profile.certifications.Certification): string;
27
+ /**
28
+ * Pretty-print a Certification row as a key/value table.
29
+ */
30
+ export declare function formatCertificationTable(c: profile.certifications.Certification): string;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/certifications/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkC,OAAO,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iCAAiC,IAAI,OAAO,CAoF3D;AAmLD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAQvF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAWxF"}