@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,40 @@
1
+ import { profile } from "@ttctl/core";
2
+ import { Command } from "commander";
3
+ /**
4
+ * Build the `ttctl profile employment` command tree.
5
+ *
6
+ * The canonical sub-domain name is `employment`; the CLI registers
7
+ * `experience` 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
+ * Six leaves:
12
+ * - `add --company --role [--from --to --current]`
13
+ * - `update <id> [field-flags] [--description --edit]`
14
+ * - `remove <id>`
15
+ * - `show <id> [-o text|json|table]`
16
+ * - `highlight <id>`
17
+ * - `employer-autocomplete <query>` — looks up known employer names
18
+ *
19
+ * Date input flags accept ISO-8601 (`2023-01-15`) or year-only (`2023`).
20
+ * Employment stores year only (Int field), so the helper drops month/day.
21
+ *
22
+ * `update --description` is multi-paragraph free-text via the four-mode
23
+ * helper from `lib/freetext.ts` (#70): inline, stdin (`-`), file (`@path`),
24
+ * editor (`--edit`).
25
+ */
26
+ export declare function buildProfileEmploymentCommand(): Command;
27
+ /**
28
+ * Pretty-print an Employment row.
29
+ */
30
+ export declare function formatEmploymentText(e: profile.employment.Employment): string;
31
+ /**
32
+ * Pretty-print an Employment row as a key/value table.
33
+ */
34
+ export declare function formatEmploymentTable(e: profile.employment.Employment): string;
35
+ /**
36
+ * Pretty-print employer-autocomplete suggestions.
37
+ */
38
+ export declare function formatEmployersText(suggestions: profile.employment.EmployerSuggestion[]): string;
39
+ export declare function formatEmployersTable(suggestions: profile.employment.EmployerSuggestion[]): string;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/employment/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkC,OAAO,EAAmB,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAc5C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,IAAI,OAAO,CAuGvD;AAqND;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,MAAM,CAY7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,MAAM,CAW9E;AASD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAUhG;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAKjG"}
@@ -0,0 +1,364 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { DateInputError, parseDateInput, profile, splitParagraphs } from "@ttctl/core";
4
+ import { Command, Option } from "commander";
5
+ import { emitAddSuccess, emitErrorAndExit, emitRemoveSuccess, emitUpdateSuccess, wrapListEnvelope, } from "../../../lib/envelopes.js";
6
+ import { FreeTextError, resolveFreeText } from "../../../lib/freetext.js";
7
+ import { OUTPUT_FORMATS, emitResult } from "../../../lib/output.js";
8
+ import { loadAuthTokenOrExit, parseLimitOrExit, presentSubDomainError } from "../shared.js";
9
+ /**
10
+ * Build the `ttctl profile employment` command tree.
11
+ *
12
+ * The canonical sub-domain name is `employment`; the CLI registers
13
+ * `experience` as a Commander.js alias so users can type either form. Per
14
+ * project policy (see issue #72), aliases are CLI-only — MCP tool names
15
+ * use ONLY the canonical name.
16
+ *
17
+ * Six leaves:
18
+ * - `add --company --role [--from --to --current]`
19
+ * - `update <id> [field-flags] [--description --edit]`
20
+ * - `remove <id>`
21
+ * - `show <id> [-o text|json|table]`
22
+ * - `highlight <id>`
23
+ * - `employer-autocomplete <query>` — looks up known employer names
24
+ *
25
+ * Date input flags accept ISO-8601 (`2023-01-15`) or year-only (`2023`).
26
+ * Employment stores year only (Int field), so the helper drops month/day.
27
+ *
28
+ * `update --description` is multi-paragraph free-text via the four-mode
29
+ * helper from `lib/freetext.ts` (#70): inline, stdin (`-`), file (`@path`),
30
+ * editor (`--edit`).
31
+ */
32
+ export function buildProfileEmploymentCommand() {
33
+ const employment = new Command("employment")
34
+ .alias("experience")
35
+ .description("View and update the employment history section of your profile");
36
+ employment
37
+ .command("add")
38
+ .description("Add a new employment entry to your profile")
39
+ .requiredOption("--company <name>", "company / employer name")
40
+ .requiredOption("--role <title>", "job title (mapped to position)")
41
+ .option("--from <date>", "start date — ISO-8601 (YYYY-MM-DD) or year (YYYY)")
42
+ .option("--to <date>", "end date — ISO-8601 or year")
43
+ .option("--current", "current position (no end date)", false)
44
+ .option("--website <url>", "company website (optional)")
45
+ .addOption(new Option("-o, --output <format>", "output format")
46
+ .choices(OUTPUT_FORMATS)
47
+ .default("pretty"))
48
+ .action(async (options) => {
49
+ await runAdd(options);
50
+ });
51
+ employment
52
+ .command("update")
53
+ .description("Update an existing employment entry by id")
54
+ .argument("<id>", "employment id (V1-Employment-NNN)")
55
+ .option("--company <name>", "company name")
56
+ .option("--role <title>", "job title")
57
+ .option("--from <date>", "start date — ISO-8601 or year")
58
+ .option("--to <date>", "end date — ISO-8601 or year")
59
+ .option("--current", "mark as current position (clears end date)", false)
60
+ .option("--website <url>", "company website")
61
+ .option("--description <text>", 'multi-paragraph description (inline text, "-" for stdin, or "@path" to read from file)')
62
+ .option("--edit", "open $EDITOR to compose the description (cannot be combined with --description)", false)
63
+ .option("--highlight <bool>", "set highlight flag (true|false)")
64
+ .addOption(new Option("-o, --output <format>", "output format")
65
+ .choices(OUTPUT_FORMATS)
66
+ .default("pretty"))
67
+ .action(async (id, options) => {
68
+ await runUpdate(id, options);
69
+ });
70
+ employment
71
+ .command("remove")
72
+ .description("Remove an employment entry by id")
73
+ .argument("<id>", "employment id")
74
+ .addOption(new Option("-o, --output <format>", "output format")
75
+ .choices(OUTPUT_FORMATS)
76
+ .default("pretty"))
77
+ .action(async (id, options) => {
78
+ await runRemove(id, options.output);
79
+ });
80
+ employment
81
+ .command("show")
82
+ .description("Show a single employment entry by id")
83
+ .argument("<id>", "employment id")
84
+ .addOption(new Option("-o, --output <format>", "output format")
85
+ .choices(OUTPUT_FORMATS)
86
+ .default("pretty"))
87
+ .action(async (id, options) => {
88
+ await runShow(id, options.output);
89
+ });
90
+ employment
91
+ .command("highlight")
92
+ .description("Toggle highlight on an employment entry")
93
+ .argument("<id>", "employment id")
94
+ .option("--off", "un-highlight (default is to highlight)", false)
95
+ .addOption(new Option("-o, --output <format>", "output format")
96
+ .choices(OUTPUT_FORMATS)
97
+ .default("pretty"))
98
+ .action(async (id, options) => {
99
+ await runHighlight(id, !options.off, options.output);
100
+ });
101
+ employment
102
+ .command("employer-autocomplete")
103
+ .description('Search the known-employer catalog for a name (e.g. "Google")')
104
+ .argument("<query>", "search term")
105
+ .option("--limit <n>", "max results (default 10)", "10")
106
+ .addOption(new Option("-o, --output <format>", "output format")
107
+ .choices(OUTPUT_FORMATS)
108
+ .default("pretty"))
109
+ .action(async (query, options) => {
110
+ await runEmployerAutocomplete(query, options);
111
+ });
112
+ return employment;
113
+ }
114
+ async function runAdd(options) {
115
+ const fields = {
116
+ company: options.company,
117
+ position: options.role,
118
+ };
119
+ if (options.website !== undefined) {
120
+ fields.companyWebsite = options.website;
121
+ fields.noWebsite = false;
122
+ }
123
+ applyDateFlags(fields, options, "profile employment add", options.output);
124
+ if (options.current)
125
+ fields.endDate = null;
126
+ const token = await loadAuthTokenOrExit("profile employment add", options.output);
127
+ let result;
128
+ try {
129
+ result = await profile.employment.add(token, fields);
130
+ }
131
+ catch (err) {
132
+ presentSubDomainError("profile employment add", err, options.output);
133
+ }
134
+ emitAddSuccess({
135
+ operation: "profile.employment.add",
136
+ format: options.output,
137
+ created: result,
138
+ prettySummary: `${result.position} — ${result.company} (id ${result.id})`,
139
+ prettyEntity: formatEmploymentText,
140
+ });
141
+ }
142
+ async function runUpdate(id, options) {
143
+ const fields = {};
144
+ if (options.company !== undefined)
145
+ fields.company = options.company;
146
+ if (options.role !== undefined)
147
+ fields.position = options.role;
148
+ if (options.website !== undefined) {
149
+ fields.companyWebsite = options.website;
150
+ fields.noWebsite = false;
151
+ }
152
+ if (options.highlight !== undefined) {
153
+ if (options.highlight !== "true" && options.highlight !== "false") {
154
+ emitErrorAndExit({
155
+ operation: "profile.employment.update",
156
+ format: options.output,
157
+ errors: [
158
+ {
159
+ code: "VALIDATION_ERROR",
160
+ field: "highlight",
161
+ message: '--highlight expects "true" or "false"',
162
+ },
163
+ ],
164
+ prettySummary: 'profile employment update failed (VALIDATION_ERROR): --highlight expects "true" or "false"',
165
+ });
166
+ }
167
+ fields.highlight = options.highlight === "true";
168
+ }
169
+ applyDateFlags(fields, options, "profile employment update", options.output);
170
+ if (options.current)
171
+ fields.endDate = null;
172
+ // Resolve --description / --edit through the four-mode free-text helper
173
+ // (inline, stdin "-", "@path", $EDITOR). The helper rejects mode
174
+ // combinations (e.g. --description with --edit) before any network I/O.
175
+ let description;
176
+ try {
177
+ description = await resolveFreeText(options.description, {
178
+ flagName: "description",
179
+ enableEditor: options.edit,
180
+ });
181
+ }
182
+ catch (err) {
183
+ if (err instanceof FreeTextError) {
184
+ emitErrorAndExit({
185
+ operation: "profile.employment.update",
186
+ format: options.output,
187
+ errors: [{ code: err.code, message: err.message }],
188
+ prettySummary: `profile employment update failed (${err.code}): ${err.message}`,
189
+ });
190
+ }
191
+ throw err;
192
+ }
193
+ if (description !== undefined) {
194
+ // Multi-paragraph descriptions split on blank lines into experienceItems
195
+ // (the API stores each paragraph as a separate row, per the
196
+ // UpdateEmploymentInput capture's `experienceItems: 3-10 items`).
197
+ fields.experienceItems = splitParagraphs(description);
198
+ }
199
+ if (Object.keys(fields).length === 0) {
200
+ emitErrorAndExit({
201
+ operation: "profile.employment.update",
202
+ format: options.output,
203
+ errors: [{ code: "VALIDATION_ERROR", message: "at least one field flag is required" }],
204
+ prettySummary: "profile employment update failed (VALIDATION_ERROR): at least one field flag is required",
205
+ });
206
+ }
207
+ const token = await loadAuthTokenOrExit("profile employment update", options.output);
208
+ let result;
209
+ try {
210
+ result = await profile.employment.update(token, id, fields);
211
+ }
212
+ catch (err) {
213
+ presentSubDomainError("profile employment update", err, options.output);
214
+ }
215
+ emitUpdateSuccess({
216
+ operation: "profile.employment.update",
217
+ format: options.output,
218
+ updated: result,
219
+ prettySummary: `${result.position} — ${result.company} (id ${result.id})`,
220
+ prettyEntity: formatEmploymentText,
221
+ });
222
+ }
223
+ async function runRemove(id, format) {
224
+ const token = await loadAuthTokenOrExit("profile employment remove", format);
225
+ let removedId;
226
+ try {
227
+ removedId = await profile.employment.remove(token, id);
228
+ }
229
+ catch (err) {
230
+ presentSubDomainError("profile employment remove", err, format);
231
+ }
232
+ emitRemoveSuccess({
233
+ operation: "profile.employment.remove",
234
+ format,
235
+ id: removedId,
236
+ });
237
+ }
238
+ async function runShow(id, format) {
239
+ const token = await loadAuthTokenOrExit("profile employment show", format);
240
+ let result;
241
+ try {
242
+ result = await profile.employment.show(token, id);
243
+ }
244
+ catch (err) {
245
+ presentSubDomainError("profile employment show", err, format);
246
+ }
247
+ emitResult(result, format, { pretty: formatEmploymentText, table: formatEmploymentTable });
248
+ }
249
+ async function runHighlight(id, value, format) {
250
+ const token = await loadAuthTokenOrExit("profile employment highlight", format);
251
+ let result;
252
+ try {
253
+ result = await profile.employment.highlight(token, id, value);
254
+ }
255
+ catch (err) {
256
+ presentSubDomainError("profile employment highlight", err, format);
257
+ }
258
+ emitUpdateSuccess({
259
+ operation: "profile.employment.highlight",
260
+ format,
261
+ updated: result,
262
+ prettySummary: `${result.id} highlight set to ${result.highlight.toString()}`,
263
+ prettyEntity: (entity) => `highlight: ${entity.highlight.toString()}`,
264
+ });
265
+ }
266
+ async function runEmployerAutocomplete(query, options) {
267
+ const limit = parseLimitOrExit(options.limit, "profile employment employer-autocomplete", options.output);
268
+ const token = await loadAuthTokenOrExit("profile employment employer-autocomplete", options.output);
269
+ let suggestions;
270
+ try {
271
+ suggestions = await profile.employment.employerAutocomplete(token, query, limit);
272
+ }
273
+ catch (err) {
274
+ presentSubDomainError("profile employment employer-autocomplete", err, options.output);
275
+ }
276
+ emitResult(wrapListEnvelope(suggestions), options.output, {
277
+ pretty: (data) => formatEmployersText(data.items),
278
+ table: (data) => formatEmployersTable(data.items),
279
+ });
280
+ }
281
+ function applyDateFlags(fields, options, commandLabel, format) {
282
+ try {
283
+ if (options.from !== undefined)
284
+ fields.startDate = parseDateInput(options.from, "from").year;
285
+ if (options.to !== undefined)
286
+ fields.endDate = parseDateInput(options.to, "to").year;
287
+ }
288
+ catch (err) {
289
+ if (err instanceof DateInputError) {
290
+ emitErrorAndExit({
291
+ operation: commandLabel.replace(/ /g, "."),
292
+ format,
293
+ errors: [{ code: err.code, message: err.message }],
294
+ prettySummary: `${commandLabel} failed (${err.code}): ${err.message}`,
295
+ });
296
+ }
297
+ throw err;
298
+ }
299
+ }
300
+ /**
301
+ * Pretty-print an Employment row.
302
+ */
303
+ export function formatEmploymentText(e) {
304
+ const lines = [`${e.position} — ${e.company}`];
305
+ if (e.companyWebsite && !e.noWebsite)
306
+ lines.push(` ${e.companyWebsite}`);
307
+ lines.push(` ${formatYearRange(e.startDate, e.endDate)}`);
308
+ if (e.experienceItems && e.experienceItems.length > 0) {
309
+ for (const item of e.experienceItems) {
310
+ lines.push(` • ${item}`);
311
+ }
312
+ }
313
+ if (e.highlight)
314
+ lines.push(` highlighted`);
315
+ lines.push(` id: ${e.id}`);
316
+ return lines.join("\n");
317
+ }
318
+ /**
319
+ * Pretty-print an Employment row as a key/value table.
320
+ */
321
+ export function formatEmploymentTable(e) {
322
+ const rows = [
323
+ ["id", e.id],
324
+ ["company", e.company],
325
+ ["position", e.position],
326
+ ["website", e.companyWebsite ?? ""],
327
+ ["years", formatYearRange(e.startDate, e.endDate)],
328
+ ["highlight", e.highlight.toString()],
329
+ ["paragraphs", (e.experienceItems?.length ?? 0).toString()],
330
+ ];
331
+ return rows.map(([k, v]) => `${k}\t${v}`).join("\n");
332
+ }
333
+ function formatYearRange(from, to) {
334
+ if (from === null && to === null)
335
+ return "—";
336
+ if (from !== null && to === null)
337
+ return `${from.toString()}–present`;
338
+ if (from === null && to !== null)
339
+ return `?–${to.toString()}`;
340
+ return `${(from ?? 0).toString()}–${(to ?? 0).toString()}`;
341
+ }
342
+ /**
343
+ * Pretty-print employer-autocomplete suggestions.
344
+ */
345
+ export function formatEmployersText(suggestions) {
346
+ if (suggestions.length === 0)
347
+ return "(no matches)";
348
+ return suggestions
349
+ .map((e) => {
350
+ const loc = [e.city, e.country].filter((v) => v !== null && v !== "").join(", ");
351
+ return [`${e.name}${loc ? ` (${loc})` : ""}`, ` id: ${e.id}`, e.website ? ` ${e.website}` : null]
352
+ .filter((line) => line !== null)
353
+ .join("\n");
354
+ })
355
+ .join("\n\n");
356
+ }
357
+ export function formatEmployersTable(suggestions) {
358
+ if (suggestions.length === 0)
359
+ return "(no matches)";
360
+ return suggestions
361
+ .map((e) => `${e.id}\t${e.name}\t${e.city ?? ""}\t${e.country ?? ""}\t${e.website ?? ""}`)
362
+ .join("\n");
363
+ }
364
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/profile/employment/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;SACzC,KAAK,CAAC,YAAY,CAAC;SACnB,WAAW,CAAC,gEAAgE,CAAC,CAAC;IAEjF,UAAU;SACP,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,4CAA4C,CAAC;SACzD,cAAc,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;SAC7D,cAAc,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,mDAAmD,CAAC;SAC5E,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;QACpC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC;SACrD,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;SAC1C,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACrC,MAAM,CAAC,eAAe,EAAE,+BAA+B,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,4CAA4C,EAAE,KAAK,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC5C,MAAM,CACL,sBAAsB,EACtB,wFAAwF,CACzF;SACA,MAAM,CAAC,QAAQ,EAAE,iFAAiF,EAAE,KAAK,CAAC;SAC1G,MAAM,CAAC,oBAAoB,EAAE,iCAAiC,CAAC;SAC/D,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAsB,EAAE,EAAE;QACnD,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;SACjC,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAiC,EAAE,EAAE;QAC9D,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;SACjC,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAAiC,EAAE,EAAE;QAC9D,MAAM,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;SACjC,MAAM,CAAC,OAAO,EAAE,wCAAwC,EAAE,KAAK,CAAC;SAChE,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAA+C,EAAE,EAAE;QAC5E,MAAM,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,8DAA8D,CAAC;SAC3E,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;SAClC,MAAM,CAAC,aAAa,EAAE,0BAA0B,EAAE,IAAI,CAAC;SACvD,SAAS,CACR,IAAI,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC;SACjD,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,QAA+B,CAAC,CAC5C;SACA,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAgD,EAAE,EAAE;QAChF,MAAM,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,OAAO,UAAU,CAAC;AACpB,CAAC;AAyBD,KAAK,UAAU,MAAM,CAAC,OAAmB;IACvC,MAAM,MAAM,GAAwC;QAClD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,IAAI;KACvB,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,wBAAwB,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,cAAc,CAAC;QACb,SAAS,EAAE,wBAAwB;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,OAAO,QAAQ,MAAM,CAAC,EAAE,GAAG;QACzE,YAAY,EAAE,oBAAoB;KACnC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAU,EAAE,OAAsB;IACzD,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACpE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAClE,gBAAgB,CAAC;gBACf,SAAS,EAAE,2BAA2B;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE,WAAW;wBAClB,OAAO,EAAE,uCAAuC;qBACjD;iBACF;gBACD,aAAa,EAAE,4FAA4F;aAC5G,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAE3C,wEAAwE;IACxE,iEAAiE;IACjE,wEAAwE;IACxE,IAAI,WAA+B,CAAC;IACpC,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE;YACvD,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,OAAO,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,gBAAgB,CAAC;gBACf,SAAS,EAAE,2BAA2B;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClD,aAAa,EAAE,qCAAqC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE;aAChF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,yEAAyE;QACzE,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,gBAAgB,CAAC;YACf,SAAS,EAAE,2BAA2B;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;YACtF,aAAa,EAAE,0FAA0F;SAC1G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,2BAA2B,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IACD,iBAAiB,CAAC;QAChB,SAAS,EAAE,2BAA2B;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,OAAO,QAAQ,MAAM,CAAC,EAAE,GAAG;QACzE,YAAY,EAAE,oBAAoB;KACnC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAU,EAAE,MAAoB;IACvD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IAC7E,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,2BAA2B,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,iBAAiB,CAAC;QAChB,SAAS,EAAE,2BAA2B;QACtC,MAAM;QACN,EAAE,EAAE,SAAS;KACd,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,EAAU,EAAE,MAAoB;IACrD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC3E,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,yBAAyB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAU,EAAE,KAAc,EAAE,MAAoB;IAC1E,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IAChF,IAAI,MAA0C,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,8BAA8B,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IACD,iBAAiB,CAAC;QAChB,SAAS,EAAE,8BAA8B;QACzC,MAAM;QACN,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,GAAG,MAAM,CAAC,EAAE,qBAAqB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;QAC7E,YAAY,EAAE,CAAC,MAA0C,EAAE,EAAE,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;KAC1G,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAAa,EAAE,OAAgD;IACpG,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,0CAA0C,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1G,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,0CAA0C,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpG,IAAI,WAAoD,CAAC;IACzD,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qBAAqB,CAAC,0CAA0C,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;IACD,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE;QACxD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,MAA2C,EAC3C,OAAuC,EACvC,YAAoB,EACpB,MAAoB;IAEpB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;QAC7F,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;YAAE,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAClC,gBAAgB,CAAC;gBACf,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;gBAC1C,MAAM;gBACN,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClD,aAAa,EAAE,GAAG,YAAY,YAAY,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,CAAgC;IACnE,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAgC;IACpE,MAAM,IAAI,GAAuB;QAC/B,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACZ,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;QACtB,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC;QACxB,CAAC,SAAS,EAAE,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC;QACnC,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC5D,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB,EAAE,EAAiB;IAC7D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtE,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC9D,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAoD;IACtF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACpD,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChG,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,WAAoD;IACvF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACpD,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;SACzF,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { OutputFormat } from "../../../lib/output.js";
2
+ /**
3
+ * Shared helpers for `ttctl profile external` leaves.
4
+ *
5
+ * Re-exports `loadAuthTokenOrExit` from the parent `../shared.ts` so the
6
+ * sub-tree leaves can keep their `from "./_shared.js"` import shape
7
+ * unchanged across the #107 refactor. (Pre-#107 each sub-tree had its own
8
+ * implementation; post-#107 the auth-token logic is centralised at
9
+ * profile/shared.ts to consume the in-memory `config.auth.token`.)
10
+ */
11
+ export { loadAuthTokenOrExit } from "../shared.js";
12
+ /**
13
+ * Truncate `s` to `width` characters with an ellipsis. Mirrors the helper
14
+ * exported by `profile/basic/show.ts`.
15
+ */
16
+ export declare function truncate(s: string, width: number): string;
17
+ /**
18
+ * Parse a `commander` boolean flag value into a TypeScript `boolean`.
19
+ *
20
+ * Commander's `--flag <value>` parses as a string; we convert
21
+ * `"true"`/`"false"` (and a couple of common shorthand forms) to booleans
22
+ * and exit through the v0.4 envelope ABI on unrecognised input. The
23
+ * `operation` argument is the command's canonical operation slug
24
+ * (`profile.external.custom-requirements.set`) so envelope consumers can
25
+ * branch on it; `format` controls whether the failure surfaces as a
26
+ * pretty stderr line or as a JSON/YAML error envelope on stdout.
27
+ *
28
+ * Why explicit string parsing instead of a `--flag` / `--no-flag` boolean?
29
+ * The custom-requirements set has THREE booleans, and Commander's no-flag
30
+ * negation would force the user to remember three negative-form flag names.
31
+ * `--background-check true|false` reads the same regardless of the value
32
+ * and matches the wire-shape (which is also `Boolean!`).
33
+ */
34
+ export declare function parseBooleanFlag(commandLabel: string, operation: string, flagName: string, value: string, format: OutputFormat): boolean;
35
+ //# sourceMappingURL=_shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/_shared.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,GACnB,OAAO,CAgBT"}
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { emitErrorAndExit } from "../../../lib/envelopes.js";
4
+ /**
5
+ * Shared helpers for `ttctl profile external` leaves.
6
+ *
7
+ * Re-exports `loadAuthTokenOrExit` from the parent `../shared.ts` so the
8
+ * sub-tree leaves can keep their `from "./_shared.js"` import shape
9
+ * unchanged across the #107 refactor. (Pre-#107 each sub-tree had its own
10
+ * implementation; post-#107 the auth-token logic is centralised at
11
+ * profile/shared.ts to consume the in-memory `config.auth.token`.)
12
+ */
13
+ export { loadAuthTokenOrExit } from "../shared.js";
14
+ /**
15
+ * Truncate `s` to `width` characters with an ellipsis. Mirrors the helper
16
+ * exported by `profile/basic/show.ts`.
17
+ */
18
+ export function truncate(s, width) {
19
+ if (s.length <= width)
20
+ return s;
21
+ return `${s.slice(0, width - 1)}…`;
22
+ }
23
+ /**
24
+ * Parse a `commander` boolean flag value into a TypeScript `boolean`.
25
+ *
26
+ * Commander's `--flag <value>` parses as a string; we convert
27
+ * `"true"`/`"false"` (and a couple of common shorthand forms) to booleans
28
+ * and exit through the v0.4 envelope ABI on unrecognised input. The
29
+ * `operation` argument is the command's canonical operation slug
30
+ * (`profile.external.custom-requirements.set`) so envelope consumers can
31
+ * branch on it; `format` controls whether the failure surfaces as a
32
+ * pretty stderr line or as a JSON/YAML error envelope on stdout.
33
+ *
34
+ * Why explicit string parsing instead of a `--flag` / `--no-flag` boolean?
35
+ * The custom-requirements set has THREE booleans, and Commander's no-flag
36
+ * negation would force the user to remember three negative-form flag names.
37
+ * `--background-check true|false` reads the same regardless of the value
38
+ * and matches the wire-shape (which is also `Boolean!`).
39
+ */
40
+ export function parseBooleanFlag(commandLabel, operation, flagName, value, format) {
41
+ const normalised = value.trim().toLowerCase();
42
+ if (normalised === "true" || normalised === "1" || normalised === "yes")
43
+ return true;
44
+ if (normalised === "false" || normalised === "0" || normalised === "no")
45
+ return false;
46
+ emitErrorAndExit({
47
+ operation,
48
+ format,
49
+ errors: [
50
+ {
51
+ code: "VALIDATION_ERROR",
52
+ field: flagName,
53
+ message: `--${flagName} expects true|false (got: ${value})`,
54
+ },
55
+ ],
56
+ prettySummary: `${commandLabel} failed (VALIDATION_ERROR): --${flagName} expects true|false (got: ${value})`,
57
+ });
58
+ }
59
+ //# sourceMappingURL=_shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/_shared.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,KAAa;IAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,SAAiB,EACjB,QAAgB,EAChB,KAAa,EACb,MAAoB;IAEpB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACrF,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtF,gBAAgB,CAAC;QACf,SAAS;QACT,MAAM;QACN,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,KAAK,QAAQ,6BAA6B,KAAK,GAAG;aAC5D;SACF;QACD,aAAa,EAAE,GAAG,YAAY,iCAAiC,QAAQ,6BAA6B,KAAK,GAAG;KAC7G,CAAC,CAAC;AACL,CAAC"}
@@ -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 advanced-wizard show`.
5
+ *
6
+ * Combines `getAdvancedProfileData` and the wizard-status read into one
7
+ * leaf — `getAdvancedProfileData` already exposes
8
+ * `advancedProfileWizardStatus`, so a single query suffices.
9
+ */
10
+ export declare function runProfileExternalAdvancedWizardShow(format: OutputFormat): Promise<void>;
11
+ /** Pure formatter — directly unit-testable. */
12
+ export declare function formatAdvancedWizardText(data: profile.external.AdvancedProfileSnapshot): string;
13
+ /** Pure formatter — directly unit-testable. */
14
+ export declare function formatAdvancedWizardTable(data: profile.external.AdvancedProfileSnapshot): string;
15
+ //# sourceMappingURL=advanced-wizard-show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-wizard-show.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/external/advanced-wizard-show.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,OAAO,EAAE,MAAM,aAAa,CAAC;AAMlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;;;;GAMG;AACH,wBAAsB,oCAAoC,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9F;AA8BD,+CAA+C;AAC/C,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,GAAG,MAAM,CAW/F;AAED,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,GAAG,MAAM,CAOhG"}
@@ -0,0 +1,82 @@
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 advanced-wizard show";
9
+ const OPERATION = "profile.external.advanced-wizard.show";
10
+ /**
11
+ * Action handler for `ttctl profile external advanced-wizard show`.
12
+ *
13
+ * Combines `getAdvancedProfileData` and the wizard-status read into one
14
+ * leaf — `getAdvancedProfileData` already exposes
15
+ * `advancedProfileWizardStatus`, so a single query suffices.
16
+ */
17
+ export async function runProfileExternalAdvancedWizardShow(format) {
18
+ const token = await loadAuthTokenOrExit(COMMAND_LABEL, format);
19
+ let result;
20
+ try {
21
+ result = await profile.external.advancedWizardShow(token);
22
+ }
23
+ catch (err) {
24
+ handleError(err, format);
25
+ return;
26
+ }
27
+ emitResult(result, format, {
28
+ pretty: formatAdvancedWizardText,
29
+ table: formatAdvancedWizardTable,
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
+ /** Pure formatter — directly unit-testable. */
61
+ export function formatAdvancedWizardText(data) {
62
+ const lines = [
63
+ `Advanced profile wizard status: ${data.wizardStatus ?? "(unset)"}`,
64
+ ` travel-visa-count: ${data.travelVisaCount.toString()}`,
65
+ ];
66
+ if (data.travelVisaIds.length > 0) {
67
+ const preview = data.travelVisaIds.slice(0, 5).join(", ");
68
+ const more = data.travelVisaIds.length > 5 ? ` (+${(data.travelVisaIds.length - 5).toString()} more)` : "";
69
+ lines.push(` travel-visa-ids: ${preview}${more}`);
70
+ }
71
+ return lines.join("\n");
72
+ }
73
+ /** Pure formatter — directly unit-testable. */
74
+ export function formatAdvancedWizardTable(data) {
75
+ const rows = [
76
+ ["wizard-status", data.wizardStatus ?? ""],
77
+ ["travel-visa-count", data.travelVisaCount.toString()],
78
+ ["travel-visa-ids", data.travelVisaIds.join(",")],
79
+ ];
80
+ return rows.map(([k, v]) => `${k}\t${v}`).join("\n");
81
+ }
82
+ //# sourceMappingURL=advanced-wizard-show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced-wizard-show.js","sourceRoot":"","sources":["../../../../src/commands/profile/external/advanced-wizard-show.ts"],"names":[],"mappings":"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"}