@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.
- package/README.md +44 -9
- package/dist/commands/applications/index.d.ts +21 -0
- package/dist/commands/applications/index.d.ts.map +1 -0
- package/dist/commands/applications/index.js +87 -0
- package/dist/commands/applications/index.js.map +1 -0
- package/dist/commands/applications/list.d.ts +55 -0
- package/dist/commands/applications/list.d.ts.map +1 -0
- package/dist/commands/applications/list.js +106 -0
- package/dist/commands/applications/list.js.map +1 -0
- package/dist/commands/applications/shared.d.ts +14 -0
- package/dist/commands/applications/shared.d.ts.map +1 -0
- package/dist/commands/applications/shared.js +19 -0
- package/dist/commands/applications/shared.js.map +1 -0
- package/dist/commands/applications/show.d.ts +51 -0
- package/dist/commands/applications/show.d.ts.map +1 -0
- package/dist/commands/applications/show.js +154 -0
- package/dist/commands/applications/show.js.map +1 -0
- package/dist/commands/applications/stats.d.ts +42 -0
- package/dist/commands/applications/stats.d.ts.map +1 -0
- package/dist/commands/applications/stats.js +69 -0
- package/dist/commands/applications/stats.js.map +1 -0
- package/dist/commands/auth/index.d.ts +17 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +69 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/init.d.ts +98 -0
- package/dist/commands/auth/init.d.ts.map +1 -0
- package/dist/commands/auth/init.js +387 -0
- package/dist/commands/auth/init.js.map +1 -0
- package/dist/commands/auth/signin.d.ts +81 -0
- package/dist/commands/auth/signin.d.ts.map +1 -0
- package/dist/commands/auth/signin.js +145 -0
- package/dist/commands/auth/signin.js.map +1 -0
- package/dist/commands/auth/signout.d.ts +133 -0
- package/dist/commands/auth/signout.d.ts.map +1 -0
- package/dist/commands/auth/signout.js +172 -0
- package/dist/commands/auth/signout.js.map +1 -0
- package/dist/commands/auth/status.d.ts +62 -0
- package/dist/commands/auth/status.d.ts.map +1 -0
- package/dist/commands/auth/status.js +98 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/availability/allocated-hours.d.ts +27 -0
- package/dist/commands/availability/allocated-hours.d.ts.map +1 -0
- package/dist/commands/availability/allocated-hours.js +61 -0
- package/dist/commands/availability/allocated-hours.js.map +1 -0
- package/dist/commands/availability/index.d.ts +30 -0
- package/dist/commands/availability/index.d.ts.map +1 -0
- package/dist/commands/availability/index.js +124 -0
- package/dist/commands/availability/index.js.map +1 -0
- package/dist/commands/availability/shared.d.ts +11 -0
- package/dist/commands/availability/shared.d.ts.map +1 -0
- package/dist/commands/availability/shared.js +30 -0
- package/dist/commands/availability/shared.js.map +1 -0
- package/dist/commands/availability/show.d.ts +32 -0
- package/dist/commands/availability/show.d.ts.map +1 -0
- package/dist/commands/availability/show.js +86 -0
- package/dist/commands/availability/show.js.map +1 -0
- package/dist/commands/availability/working-hours.d.ts +53 -0
- package/dist/commands/availability/working-hours.d.ts.map +1 -0
- package/dist/commands/availability/working-hours.js +151 -0
- package/dist/commands/availability/working-hours.js.map +1 -0
- package/dist/commands/contracts/index.d.ts +69 -0
- package/dist/commands/contracts/index.d.ts.map +1 -0
- package/dist/commands/contracts/index.js +198 -0
- package/dist/commands/contracts/index.js.map +1 -0
- package/dist/commands/engagements/breaks.d.ts +81 -0
- package/dist/commands/engagements/breaks.d.ts.map +1 -0
- package/dist/commands/engagements/breaks.js +229 -0
- package/dist/commands/engagements/breaks.js.map +1 -0
- package/dist/commands/engagements/index.d.ts +29 -0
- package/dist/commands/engagements/index.d.ts.map +1 -0
- package/dist/commands/engagements/index.js +172 -0
- package/dist/commands/engagements/index.js.map +1 -0
- package/dist/commands/engagements/list.d.ts +49 -0
- package/dist/commands/engagements/list.d.ts.map +1 -0
- package/dist/commands/engagements/list.js +95 -0
- package/dist/commands/engagements/list.js.map +1 -0
- package/dist/commands/engagements/shared.d.ts +10 -0
- package/dist/commands/engagements/shared.d.ts.map +1 -0
- package/dist/commands/engagements/shared.js +31 -0
- package/dist/commands/engagements/shared.js.map +1 -0
- package/dist/commands/engagements/show.d.ts +19 -0
- package/dist/commands/engagements/show.d.ts.map +1 -0
- package/dist/commands/engagements/show.js +150 -0
- package/dist/commands/engagements/show.js.map +1 -0
- package/dist/commands/engagements/stats.d.ts +24 -0
- package/dist/commands/engagements/stats.d.ts.map +1 -0
- package/dist/commands/engagements/stats.js +51 -0
- package/dist/commands/engagements/stats.js.map +1 -0
- package/dist/commands/jobs/index.d.ts +49 -0
- package/dist/commands/jobs/index.d.ts.map +1 -0
- package/dist/commands/jobs/index.js +304 -0
- package/dist/commands/jobs/index.js.map +1 -0
- package/dist/commands/jobs/interest.d.ts +65 -0
- package/dist/commands/jobs/interest.d.ts.map +1 -0
- package/dist/commands/jobs/interest.js +172 -0
- package/dist/commands/jobs/interest.js.map +1 -0
- package/dist/commands/jobs/list.d.ts +81 -0
- package/dist/commands/jobs/list.d.ts.map +1 -0
- package/dist/commands/jobs/list.js +157 -0
- package/dist/commands/jobs/list.js.map +1 -0
- package/dist/commands/jobs/search.d.ts +71 -0
- package/dist/commands/jobs/search.d.ts.map +1 -0
- package/dist/commands/jobs/search.js +163 -0
- package/dist/commands/jobs/search.js.map +1 -0
- package/dist/commands/jobs/shared.d.ts +79 -0
- package/dist/commands/jobs/shared.d.ts.map +1 -0
- package/dist/commands/jobs/shared.js +133 -0
- package/dist/commands/jobs/shared.js.map +1 -0
- package/dist/commands/jobs/show.d.ts +20 -0
- package/dist/commands/jobs/show.d.ts.map +1 -0
- package/dist/commands/jobs/show.js +135 -0
- package/dist/commands/jobs/show.js.map +1 -0
- package/dist/commands/payments/index.d.ts +34 -0
- package/dist/commands/payments/index.d.ts.map +1 -0
- package/dist/commands/payments/index.js +160 -0
- package/dist/commands/payments/index.js.map +1 -0
- package/dist/commands/payments/methods.d.ts +17 -0
- package/dist/commands/payments/methods.d.ts.map +1 -0
- package/dist/commands/payments/methods.js +79 -0
- package/dist/commands/payments/methods.js.map +1 -0
- package/dist/commands/payments/payouts.d.ts +44 -0
- package/dist/commands/payments/payouts.d.ts.map +1 -0
- package/dist/commands/payments/payouts.js +147 -0
- package/dist/commands/payments/payouts.js.map +1 -0
- package/dist/commands/payments/rate.d.ts +48 -0
- package/dist/commands/payments/rate.d.ts.map +1 -0
- package/dist/commands/payments/rate.js +229 -0
- package/dist/commands/payments/rate.js.map +1 -0
- package/dist/commands/payments/shared.d.ts +10 -0
- package/dist/commands/payments/shared.d.ts.map +1 -0
- package/dist/commands/payments/shared.js +27 -0
- package/dist/commands/payments/shared.js.map +1 -0
- package/dist/commands/profile/basic/index.d.ts +18 -0
- package/dist/commands/profile/basic/index.d.ts.map +1 -0
- package/dist/commands/profile/basic/index.js +79 -0
- package/dist/commands/profile/basic/index.js.map +1 -0
- package/dist/commands/profile/basic/photo-show.d.ts +28 -0
- package/dist/commands/profile/basic/photo-show.d.ts.map +1 -0
- package/dist/commands/profile/basic/photo-show.js +112 -0
- package/dist/commands/profile/basic/photo-show.js.map +1 -0
- package/dist/commands/profile/basic/photo-upload.d.ts +10 -0
- package/dist/commands/profile/basic/photo-upload.d.ts.map +1 -0
- package/dist/commands/profile/basic/photo-upload.js +61 -0
- package/dist/commands/profile/basic/photo-upload.js.map +1 -0
- package/dist/commands/profile/basic/set.d.ts +54 -0
- package/dist/commands/profile/basic/set.d.ts.map +1 -0
- package/dist/commands/profile/basic/set.js +174 -0
- package/dist/commands/profile/basic/set.js.map +1 -0
- package/dist/commands/profile/basic/show.d.ts +95 -0
- package/dist/commands/profile/basic/show.d.ts.map +1 -0
- package/dist/commands/profile/basic/show.js +310 -0
- package/dist/commands/profile/basic/show.js.map +1 -0
- package/dist/commands/profile/certifications/index.d.ts +31 -0
- package/dist/commands/profile/certifications/index.d.ts.map +1 -0
- package/dist/commands/profile/certifications/index.js +298 -0
- package/dist/commands/profile/certifications/index.js.map +1 -0
- package/dist/commands/profile/education/index.d.ts +28 -0
- package/dist/commands/profile/education/index.d.ts.map +1 -0
- package/dist/commands/profile/education/index.js +287 -0
- package/dist/commands/profile/education/index.js.map +1 -0
- package/dist/commands/profile/employment/index.d.ts +40 -0
- package/dist/commands/profile/employment/index.d.ts.map +1 -0
- package/dist/commands/profile/employment/index.js +364 -0
- package/dist/commands/profile/employment/index.js.map +1 -0
- package/dist/commands/profile/external/_shared.d.ts +35 -0
- package/dist/commands/profile/external/_shared.d.ts.map +1 -0
- package/dist/commands/profile/external/_shared.js +59 -0
- package/dist/commands/profile/external/_shared.js.map +1 -0
- package/dist/commands/profile/external/advanced-wizard-show.d.ts +15 -0
- package/dist/commands/profile/external/advanced-wizard-show.d.ts.map +1 -0
- package/dist/commands/profile/external/advanced-wizard-show.js +82 -0
- package/dist/commands/profile/external/advanced-wizard-show.js.map +1 -0
- package/dist/commands/profile/external/custom-requirements-set.d.ts +32 -0
- package/dist/commands/profile/external/custom-requirements-set.d.ts.map +1 -0
- package/dist/commands/profile/external/custom-requirements-set.js +116 -0
- package/dist/commands/profile/external/custom-requirements-set.js.map +1 -0
- package/dist/commands/profile/external/custom-requirements-show.d.ts +16 -0
- package/dist/commands/profile/external/custom-requirements-show.d.ts.map +1 -0
- package/dist/commands/profile/external/custom-requirements-show.js +84 -0
- package/dist/commands/profile/external/custom-requirements-show.js.map +1 -0
- package/dist/commands/profile/external/index.d.ts +20 -0
- package/dist/commands/profile/external/index.d.ts.map +1 -0
- package/dist/commands/profile/external/index.js +102 -0
- package/dist/commands/profile/external/index.js.map +1 -0
- package/dist/commands/profile/external/readiness.d.ts +15 -0
- package/dist/commands/profile/external/readiness.d.ts.map +1 -0
- package/dist/commands/profile/external/readiness.js +104 -0
- package/dist/commands/profile/external/readiness.js.map +1 -0
- package/dist/commands/profile/external/recommendations.d.ts +17 -0
- package/dist/commands/profile/external/recommendations.d.ts.map +1 -0
- package/dist/commands/profile/external/recommendations.js +97 -0
- package/dist/commands/profile/external/recommendations.js.map +1 -0
- package/dist/commands/profile/external/update.d.ts +32 -0
- package/dist/commands/profile/external/update.d.ts.map +1 -0
- package/dist/commands/profile/external/update.js +118 -0
- package/dist/commands/profile/external/update.js.map +1 -0
- package/dist/commands/profile/index.d.ts +16 -0
- package/dist/commands/profile/index.d.ts.map +1 -0
- package/dist/commands/profile/index.js +81 -0
- package/dist/commands/profile/index.js.map +1 -0
- package/dist/commands/profile/industries/index.d.ts +36 -0
- package/dist/commands/profile/industries/index.d.ts.map +1 -0
- package/dist/commands/profile/industries/index.js +230 -0
- package/dist/commands/profile/industries/index.js.map +1 -0
- package/dist/commands/profile/portfolio/add.d.ts +43 -0
- package/dist/commands/profile/portfolio/add.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/add.js +181 -0
- package/dist/commands/profile/portfolio/add.js.map +1 -0
- package/dist/commands/profile/portfolio/highlight.d.ts +11 -0
- package/dist/commands/profile/portfolio/highlight.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/highlight.js +31 -0
- package/dist/commands/profile/portfolio/highlight.js.map +1 -0
- package/dist/commands/profile/portfolio/index.d.ts +16 -0
- package/dist/commands/profile/portfolio/index.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/index.js +121 -0
- package/dist/commands/profile/portfolio/index.js.map +1 -0
- package/dist/commands/profile/portfolio/list.d.ts +83 -0
- package/dist/commands/profile/portfolio/list.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/list.js +189 -0
- package/dist/commands/profile/portfolio/list.js.map +1 -0
- package/dist/commands/profile/portfolio/remove.d.ts +9 -0
- package/dist/commands/profile/portfolio/remove.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/remove.js +24 -0
- package/dist/commands/profile/portfolio/remove.js.map +1 -0
- package/dist/commands/profile/portfolio/reorder.d.ts +17 -0
- package/dist/commands/profile/portfolio/reorder.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/reorder.js +135 -0
- package/dist/commands/profile/portfolio/reorder.js.map +1 -0
- package/dist/commands/profile/portfolio/shared.d.ts +8 -0
- package/dist/commands/profile/portfolio/shared.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/shared.js +10 -0
- package/dist/commands/profile/portfolio/shared.js.map +1 -0
- package/dist/commands/profile/portfolio/update.d.ts +18 -0
- package/dist/commands/profile/portfolio/update.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/update.js +77 -0
- package/dist/commands/profile/portfolio/update.js.map +1 -0
- package/dist/commands/profile/portfolio/upload.d.ts +8 -0
- package/dist/commands/profile/portfolio/upload.d.ts.map +1 -0
- package/dist/commands/profile/portfolio/upload.js +131 -0
- package/dist/commands/profile/portfolio/upload.js.map +1 -0
- package/dist/commands/profile/resume/cancel-upload.d.ts +9 -0
- package/dist/commands/profile/resume/cancel-upload.d.ts.map +1 -0
- package/dist/commands/profile/resume/cancel-upload.js +30 -0
- package/dist/commands/profile/resume/cancel-upload.js.map +1 -0
- package/dist/commands/profile/resume/index.d.ts +15 -0
- package/dist/commands/profile/resume/index.d.ts.map +1 -0
- package/dist/commands/profile/resume/index.js +42 -0
- package/dist/commands/profile/resume/index.js.map +1 -0
- package/dist/commands/profile/resume/upload.d.ts +16 -0
- package/dist/commands/profile/resume/upload.d.ts.map +1 -0
- package/dist/commands/profile/resume/upload.js +65 -0
- package/dist/commands/profile/resume/upload.js.map +1 -0
- package/dist/commands/profile/reviews/_shared.d.ts +9 -0
- package/dist/commands/profile/reviews/_shared.d.ts.map +1 -0
- package/dist/commands/profile/reviews/_shared.js +15 -0
- package/dist/commands/profile/reviews/_shared.js.map +1 -0
- package/dist/commands/profile/reviews/approve-item.d.ts +30 -0
- package/dist/commands/profile/reviews/approve-item.d.ts.map +1 -0
- package/dist/commands/profile/reviews/approve-item.js +82 -0
- package/dist/commands/profile/reviews/approve-item.js.map +1 -0
- package/dist/commands/profile/reviews/approve-section.d.ts +15 -0
- package/dist/commands/profile/reviews/approve-section.d.ts.map +1 -0
- package/dist/commands/profile/reviews/approve-section.js +67 -0
- package/dist/commands/profile/reviews/approve-section.js.map +1 -0
- package/dist/commands/profile/reviews/index.d.ts +19 -0
- package/dist/commands/profile/reviews/index.d.ts.map +1 -0
- package/dist/commands/profile/reviews/index.js +71 -0
- package/dist/commands/profile/reviews/index.js.map +1 -0
- package/dist/commands/profile/reviews/list.d.ts +17 -0
- package/dist/commands/profile/reviews/list.d.ts.map +1 -0
- package/dist/commands/profile/reviews/list.js +96 -0
- package/dist/commands/profile/reviews/list.js.map +1 -0
- package/dist/commands/profile/reviews/submit-for-review.d.ts +16 -0
- package/dist/commands/profile/reviews/submit-for-review.d.ts.map +1 -0
- package/dist/commands/profile/reviews/submit-for-review.js +65 -0
- package/dist/commands/profile/reviews/submit-for-review.js.map +1 -0
- package/dist/commands/profile/shared.d.ts +46 -0
- package/dist/commands/profile/shared.d.ts.map +1 -0
- package/dist/commands/profile/shared.js +111 -0
- package/dist/commands/profile/shared.js.map +1 -0
- package/dist/commands/profile/skills/index.d.ts +29 -0
- package/dist/commands/profile/skills/index.d.ts.map +1 -0
- package/dist/commands/profile/skills/index.js +475 -0
- package/dist/commands/profile/skills/index.js.map +1 -0
- package/dist/commands/profile/visas/add.d.ts +19 -0
- package/dist/commands/profile/visas/add.d.ts.map +1 -0
- package/dist/commands/profile/visas/add.js +37 -0
- package/dist/commands/profile/visas/add.js.map +1 -0
- package/dist/commands/profile/visas/index.d.ts +13 -0
- package/dist/commands/profile/visas/index.d.ts.map +1 -0
- package/dist/commands/profile/visas/index.js +69 -0
- package/dist/commands/profile/visas/index.js.map +1 -0
- package/dist/commands/profile/visas/list.d.ts +40 -0
- package/dist/commands/profile/visas/list.d.ts.map +1 -0
- package/dist/commands/profile/visas/list.js +115 -0
- package/dist/commands/profile/visas/list.js.map +1 -0
- package/dist/commands/profile/visas/remove.d.ts +8 -0
- package/dist/commands/profile/visas/remove.d.ts.map +1 -0
- package/dist/commands/profile/visas/remove.js +23 -0
- package/dist/commands/profile/visas/remove.js.map +1 -0
- package/dist/commands/profile/visas/shared.d.ts +11 -0
- package/dist/commands/profile/visas/shared.d.ts.map +1 -0
- package/dist/commands/profile/visas/shared.js +16 -0
- package/dist/commands/profile/visas/shared.js.map +1 -0
- package/dist/commands/profile/visas/update.d.ts +13 -0
- package/dist/commands/profile/visas/update.d.ts.map +1 -0
- package/dist/commands/profile/visas/update.js +44 -0
- package/dist/commands/profile/visas/update.js.map +1 -0
- package/dist/commands/timesheet/index.d.ts +24 -0
- package/dist/commands/timesheet/index.d.ts.map +1 -0
- package/dist/commands/timesheet/index.js +98 -0
- package/dist/commands/timesheet/index.js.map +1 -0
- package/dist/commands/timesheet/list.d.ts +40 -0
- package/dist/commands/timesheet/list.d.ts.map +1 -0
- package/dist/commands/timesheet/list.js +79 -0
- package/dist/commands/timesheet/list.js.map +1 -0
- package/dist/commands/timesheet/shared.d.ts +10 -0
- package/dist/commands/timesheet/shared.d.ts.map +1 -0
- package/dist/commands/timesheet/shared.js +35 -0
- package/dist/commands/timesheet/shared.js.map +1 -0
- package/dist/commands/timesheet/show.d.ts +19 -0
- package/dist/commands/timesheet/show.d.ts.map +1 -0
- package/dist/commands/timesheet/show.js +109 -0
- package/dist/commands/timesheet/show.js.map +1 -0
- package/dist/commands/timesheet/submit.d.ts +50 -0
- package/dist/commands/timesheet/submit.d.ts.map +1 -0
- package/dist/commands/timesheet/submit.js +151 -0
- package/dist/commands/timesheet/submit.js.map +1 -0
- package/dist/crash-handlers.d.ts +67 -0
- package/dist/crash-handlers.d.ts.map +1 -0
- package/dist/crash-handlers.js +78 -0
- package/dist/crash-handlers.js.map +1 -0
- package/dist/errors.d.ts +45 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +57 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config-context.d.ts +41 -0
- package/dist/lib/config-context.d.ts.map +1 -0
- package/dist/lib/config-context.js +74 -0
- package/dist/lib/config-context.js.map +1 -0
- package/dist/lib/dry-run.d.ts +70 -0
- package/dist/lib/dry-run.d.ts.map +1 -0
- package/dist/lib/dry-run.js +114 -0
- package/dist/lib/dry-run.js.map +1 -0
- package/dist/lib/empty-state-cta.d.ts +63 -0
- package/dist/lib/empty-state-cta.d.ts.map +1 -0
- package/dist/lib/empty-state-cta.js +88 -0
- package/dist/lib/empty-state-cta.js.map +1 -0
- package/dist/lib/envelopes.d.ts +540 -0
- package/dist/lib/envelopes.d.ts.map +1 -0
- package/dist/lib/envelopes.js +598 -0
- package/dist/lib/envelopes.js.map +1 -0
- package/dist/lib/error-routing.d.ts +49 -0
- package/dist/lib/error-routing.d.ts.map +1 -0
- package/dist/lib/error-routing.js +72 -0
- package/dist/lib/error-routing.js.map +1 -0
- package/dist/lib/format-helpers.d.ts +65 -0
- package/dist/lib/format-helpers.d.ts.map +1 -0
- package/dist/lib/format-helpers.js +79 -0
- package/dist/lib/format-helpers.js.map +1 -0
- package/dist/lib/format-overrides.d.ts +81 -0
- package/dist/lib/format-overrides.d.ts.map +1 -0
- package/dist/lib/format-overrides.js +55 -0
- package/dist/lib/format-overrides.js.map +1 -0
- package/dist/lib/freetext.d.ts +83 -0
- package/dist/lib/freetext.d.ts.map +1 -0
- package/dist/lib/freetext.js +182 -0
- package/dist/lib/freetext.js.map +1 -0
- package/dist/lib/kill-switch-hook.d.ts +49 -0
- package/dist/lib/kill-switch-hook.d.ts.map +1 -0
- package/dist/lib/kill-switch-hook.js +34 -0
- package/dist/lib/kill-switch-hook.js.map +1 -0
- package/dist/lib/output.d.ts +173 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +177 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/pagination.d.ts +49 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +36 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/program.d.ts +80 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +273 -0
- package/dist/program.js.map +1 -0
- package/package.json +35 -13
- 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"}
|