@ttctl/cli 0.0.0 → 0.1.0-rc.2
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 +40 -0
- package/dist/commands/profile/certifications/index.d.ts.map +1 -0
- package/dist/commands/profile/certifications/index.js +350 -0
- package/dist/commands/profile/certifications/index.js.map +1 -0
- package/dist/commands/profile/education/index.d.ts +37 -0
- package/dist/commands/profile/education/index.d.ts.map +1 -0
- package/dist/commands/profile/education/index.js +331 -0
- package/dist/commands/profile/education/index.js.map +1 -0
- package/dist/commands/profile/employment/index.d.ts +49 -0
- package/dist/commands/profile/employment/index.d.ts.map +1 -0
- package/dist/commands/profile/employment/index.js +425 -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 +21 -0
- package/dist/commands/profile/external/index.d.ts.map +1 -0
- package/dist/commands/profile/external/index.js +113 -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/show.d.ts +22 -0
- package/dist/commands/profile/external/show.d.ts.map +1 -0
- package/dist/commands/profile/external/show.js +83 -0
- package/dist/commands/profile/external/show.js.map +1 -0
- package/dist/commands/profile/external/update.d.ts +37 -0
- package/dist/commands/profile/external/update.d.ts.map +1 -0
- package/dist/commands/profile/external/update.js +125 -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 +43 -0
- package/dist/commands/profile/industries/index.d.ts.map +1 -0
- package/dist/commands/profile/industries/index.js +258 -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,475 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import Table from "cli-table3";
|
|
4
|
+
import { Command, Option } from "commander";
|
|
5
|
+
import { TtctlError, profile } from "@ttctl/core";
|
|
6
|
+
import { presentTtctlError } from "../../../errors.js";
|
|
7
|
+
import { emitAddSuccess, emitErrorAndExit, emitRemoveSuccess, emitUpdateSuccess, wrapListEnvelope, } from "../../../lib/envelopes.js";
|
|
8
|
+
import { OUTPUT_FORMATS, emitResult } from "../../../lib/output.js";
|
|
9
|
+
import { loadAuthTokenOrExit } from "../shared.js";
|
|
10
|
+
/**
|
|
11
|
+
* Local alias for the parent `loadAuthTokenOrExit` helper to keep this
|
|
12
|
+
* file's existing call sites (`loadTokenOrExit(commandLabel)`) unchanged.
|
|
13
|
+
* Post-#107 the function reads the token from the in-memory parsed config
|
|
14
|
+
* (`config.auth.token`) — there's no longer a separate token file to
|
|
15
|
+
* resolve.
|
|
16
|
+
*/
|
|
17
|
+
const loadTokenOrExit = loadAuthTokenOrExit;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the user's profileId for queries that need it (`list`,
|
|
20
|
+
* `autocomplete`, `readiness`). The talent-profile surface keys these
|
|
21
|
+
* operations on `profileId` rather than the auth token, so we fetch it
|
|
22
|
+
* via `profile.basic.show()` once per CLI invocation. The cost is one
|
|
23
|
+
* extra mobile-gateway round-trip — acceptable at v0; future caching
|
|
24
|
+
* tracked separately.
|
|
25
|
+
*/
|
|
26
|
+
async function resolveProfileId(token, commandLabel, format) {
|
|
27
|
+
let payload;
|
|
28
|
+
try {
|
|
29
|
+
payload = await profile.basic.show(token);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
handleSkillsError(err, commandLabel, format);
|
|
33
|
+
}
|
|
34
|
+
const profileId = payload.viewer?.viewerRole.profileId;
|
|
35
|
+
if (profileId === undefined) {
|
|
36
|
+
emitErrorAndExit({
|
|
37
|
+
operation: operationFor(commandLabel),
|
|
38
|
+
format,
|
|
39
|
+
errors: [{ code: "NO_VIEWER", message: "No profile id bound to this session." }],
|
|
40
|
+
prettySummary: `${commandLabel} failed (NO_VIEWER): no profile id bound to this session.`,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return profileId;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Translate the command label (`profile skills add`) into the canonical
|
|
47
|
+
* envelope `operation` value (`profile.skills.add`) used as a stable
|
|
48
|
+
* machine-readable discriminator across all envelopes for this
|
|
49
|
+
* sub-domain.
|
|
50
|
+
*/
|
|
51
|
+
function operationFor(commandLabel) {
|
|
52
|
+
return commandLabel.replace(/ /g, ".");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Common error router. Routes every typed-hierarchy domain error
|
|
56
|
+
* through the envelope ABI (#128) — `--output=json` / `--output=yaml`
|
|
57
|
+
* land on STDOUT; `--output=pretty` lands on STDERR with a one-line
|
|
58
|
+
* summary plus the multi-line block. Exit code is `1` for domain
|
|
59
|
+
* errors and follows `exitCodeForTtctlError` for `TtctlError`
|
|
60
|
+
* subclasses (`Cf403*` map to `2`).
|
|
61
|
+
*/
|
|
62
|
+
function handleSkillsError(err, commandLabel, format) {
|
|
63
|
+
if (err instanceof TtctlError) {
|
|
64
|
+
// The TtctlError pretty rendering keeps its dedicated 3-block
|
|
65
|
+
// shape (Recovery, Code) on `pretty`; on `json`/`yaml` we route
|
|
66
|
+
// through the envelope so machine consumers still see the stable
|
|
67
|
+
// wire shape.
|
|
68
|
+
if (format === "pretty")
|
|
69
|
+
presentTtctlError(err);
|
|
70
|
+
const errors = [{ code: err.code, message: err.message, hint: err.recovery }];
|
|
71
|
+
emitErrorAndExit({
|
|
72
|
+
operation: operationFor(commandLabel),
|
|
73
|
+
format,
|
|
74
|
+
errors,
|
|
75
|
+
exitCode: err.code === "CF_403_CLEARANCE" || err.code === "CF_403_PERSISTENT" ? 2 : 1,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (err instanceof profile.skills.SkillsError) {
|
|
79
|
+
emitErrorAndExit({
|
|
80
|
+
operation: operationFor(commandLabel),
|
|
81
|
+
format,
|
|
82
|
+
errors: [{ code: err.code, message: err.message }],
|
|
83
|
+
prettySummary: `${commandLabel} failed (${err.code}): ${err.message}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
if (err instanceof profile.basic.ProfileError) {
|
|
87
|
+
emitErrorAndExit({
|
|
88
|
+
operation: operationFor(commandLabel),
|
|
89
|
+
format,
|
|
90
|
+
errors: [{ code: err.code, message: err.message }],
|
|
91
|
+
prettySummary: `${commandLabel} failed (${err.code}): ${err.message}`,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
95
|
+
emitErrorAndExit({
|
|
96
|
+
operation: operationFor(commandLabel),
|
|
97
|
+
format,
|
|
98
|
+
errors: [{ code: "INTERNAL_ERROR", message }],
|
|
99
|
+
prettySummary: `${commandLabel} failed: ${message}`,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// =======================================================================
|
|
103
|
+
// Action handlers (one per leaf)
|
|
104
|
+
// =======================================================================
|
|
105
|
+
async function runSkillsAdd(name, format) {
|
|
106
|
+
const commandLabel = "profile skills add";
|
|
107
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
108
|
+
let result;
|
|
109
|
+
try {
|
|
110
|
+
result = await profile.skills.add(token, name);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
handleSkillsError(err, commandLabel, format);
|
|
114
|
+
}
|
|
115
|
+
emitAddSuccess({
|
|
116
|
+
operation: operationFor(commandLabel),
|
|
117
|
+
format,
|
|
118
|
+
created: result,
|
|
119
|
+
prettySummary: `${result.skill.name} (id ${result.id})`,
|
|
120
|
+
prettyEntity: formatSkillSetText,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
async function runSkillsRm(id, format) {
|
|
124
|
+
const commandLabel = "profile skills remove";
|
|
125
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
126
|
+
try {
|
|
127
|
+
await profile.skills.rm(token, id);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
handleSkillsError(err, commandLabel, format);
|
|
131
|
+
}
|
|
132
|
+
emitRemoveSuccess({
|
|
133
|
+
operation: operationFor(commandLabel),
|
|
134
|
+
format,
|
|
135
|
+
id,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Action handler for `ttctl profile skills update <id> [flags]`. Resolves
|
|
140
|
+
* the multi-flag input into a `SkillUpdate` shape (translating
|
|
141
|
+
* `--public/--private` into a single boolean, parsing `--experience` as
|
|
142
|
+
* a duration) and dispatches to `profile.skills.set()`.
|
|
143
|
+
*
|
|
144
|
+
* Conflicting `--public` and `--private` are caught here; the core layer
|
|
145
|
+
* never sees an inconsistent state.
|
|
146
|
+
*/
|
|
147
|
+
async function runSkillsUpdate(id, options, format) {
|
|
148
|
+
const commandLabel = "profile skills update";
|
|
149
|
+
if (options.public === true && options.private === true) {
|
|
150
|
+
emitErrorAndExit({
|
|
151
|
+
operation: operationFor(commandLabel),
|
|
152
|
+
format,
|
|
153
|
+
errors: [
|
|
154
|
+
{
|
|
155
|
+
code: "VALIDATION_ERROR",
|
|
156
|
+
message: "--public and --private cannot both be set.",
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
prettySummary: `${commandLabel} failed (VALIDATION_ERROR): --public and --private cannot both be set.`,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const fields = {};
|
|
163
|
+
if (options.rating !== undefined) {
|
|
164
|
+
fields.rating = options.rating;
|
|
165
|
+
}
|
|
166
|
+
if (options.experience !== undefined) {
|
|
167
|
+
const months = parseExperience(options.experience);
|
|
168
|
+
if (months === null) {
|
|
169
|
+
emitErrorAndExit({
|
|
170
|
+
operation: operationFor(commandLabel),
|
|
171
|
+
format,
|
|
172
|
+
errors: [
|
|
173
|
+
{
|
|
174
|
+
code: "VALIDATION_ERROR",
|
|
175
|
+
field: "experience",
|
|
176
|
+
message: '--experience must be an integer count of months or a duration like "5y" or "60m".',
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
prettySummary: `${commandLabel} failed (VALIDATION_ERROR): --experience must be an integer count of months or a duration like "5y" or "60m".`,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
fields.experience = months;
|
|
183
|
+
}
|
|
184
|
+
if (options.public === true)
|
|
185
|
+
fields.public = true;
|
|
186
|
+
if (options.private === true)
|
|
187
|
+
fields.public = false;
|
|
188
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
189
|
+
let result;
|
|
190
|
+
try {
|
|
191
|
+
result = await profile.skills.set(token, id, fields);
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
handleSkillsError(err, commandLabel, format);
|
|
195
|
+
}
|
|
196
|
+
// First server-supplied notice (when present) threads into the
|
|
197
|
+
// envelope's optional `notice` field; subsequent notices are
|
|
198
|
+
// concatenated for v0.4 (the field is `string`, not `string[]` —
|
|
199
|
+
// narrowing to a list is reserved for a future shape evolution).
|
|
200
|
+
const notice = result.notices.length > 0 ? result.notices.join("; ") : undefined;
|
|
201
|
+
emitUpdateSuccess({
|
|
202
|
+
operation: operationFor(commandLabel),
|
|
203
|
+
format,
|
|
204
|
+
updated: result,
|
|
205
|
+
prettySummary: `skill ${id}`,
|
|
206
|
+
prettyEntity: formatSkillUpdateResult,
|
|
207
|
+
notice,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Pretty entity preview for the `update` envelope's body. Shows only
|
|
212
|
+
* the fields that the user actually changed (non-null in the
|
|
213
|
+
* `UpdateSkillResult`); preserves parity with the prior raw stdout
|
|
214
|
+
* line-by-line rendering.
|
|
215
|
+
*/
|
|
216
|
+
function formatSkillUpdateResult(result) {
|
|
217
|
+
const lines = [];
|
|
218
|
+
if (result.rating !== null)
|
|
219
|
+
lines.push(`rating: ${result.rating}`);
|
|
220
|
+
if (result.experience !== null)
|
|
221
|
+
lines.push(`experience: ${result.experience.toString()} months`);
|
|
222
|
+
if (result.public !== null)
|
|
223
|
+
lines.push(`visibility: ${result.public ? "public" : "private"}`);
|
|
224
|
+
return lines.join("\n");
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Parse an `--experience` flag value into an integer count of months.
|
|
228
|
+
* Accepts a bare number ("60" → 60), `Ny` ("5y" → 60), or `Nm` ("60m" →
|
|
229
|
+
* 60). Returns `null` for anything that doesn't match — the caller turns
|
|
230
|
+
* that into a `VALIDATION_ERROR` exit.
|
|
231
|
+
*
|
|
232
|
+
* Pure function — directly unit-testable.
|
|
233
|
+
*/
|
|
234
|
+
export function parseExperience(raw) {
|
|
235
|
+
const trimmed = raw.trim().toLowerCase();
|
|
236
|
+
if (/^\d+$/.test(trimmed)) {
|
|
237
|
+
return Number.parseInt(trimmed, 10);
|
|
238
|
+
}
|
|
239
|
+
const match = /^(\d+)([ym])$/.exec(trimmed);
|
|
240
|
+
if (match === null)
|
|
241
|
+
return null;
|
|
242
|
+
const n = Number.parseInt(match[1] ?? "0", 10);
|
|
243
|
+
return match[2] === "y" ? n * 12 : n;
|
|
244
|
+
}
|
|
245
|
+
async function runSkillsShow(id, format) {
|
|
246
|
+
const commandLabel = "profile skills show";
|
|
247
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
248
|
+
let result;
|
|
249
|
+
try {
|
|
250
|
+
result = await profile.skills.show(token, id);
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
handleSkillsError(err, commandLabel, format);
|
|
254
|
+
}
|
|
255
|
+
emitResult(result, format, {
|
|
256
|
+
pretty: formatSkillSetText,
|
|
257
|
+
table: formatSkillSetTable,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
async function runSkillsList(format) {
|
|
261
|
+
const commandLabel = "profile skills list";
|
|
262
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
263
|
+
const profileId = await resolveProfileId(token, commandLabel, format);
|
|
264
|
+
let result;
|
|
265
|
+
try {
|
|
266
|
+
result = await profile.skills.list(token, profileId);
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
handleSkillsError(err, commandLabel, format);
|
|
270
|
+
}
|
|
271
|
+
emitResult(wrapListEnvelope(result), format, {
|
|
272
|
+
pretty: (data) => formatSkillsListText(data.items),
|
|
273
|
+
table: (data) => formatSkillsListTable(data.items),
|
|
274
|
+
empty: { command: "profile.skills.list" },
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
async function runSkillsAutocomplete(query, format, limit) {
|
|
278
|
+
const commandLabel = "profile skills autocomplete";
|
|
279
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
280
|
+
const profileId = await resolveProfileId(token, commandLabel, format);
|
|
281
|
+
let suggestions;
|
|
282
|
+
try {
|
|
283
|
+
suggestions = await profile.skills.autocomplete(token, profileId, query, { limit });
|
|
284
|
+
}
|
|
285
|
+
catch (err) {
|
|
286
|
+
handleSkillsError(err, commandLabel, format);
|
|
287
|
+
}
|
|
288
|
+
emitResult(wrapListEnvelope(suggestions), format, {
|
|
289
|
+
pretty: (data) => data.items.length === 0 ? `(no matches for "${query}")` : data.items.map((s) => `${s.name}\t${s.id}`).join("\n"),
|
|
290
|
+
table: (data) => {
|
|
291
|
+
const table = new Table({ head: ["Name", "Id"], wordWrap: true });
|
|
292
|
+
for (const s of data.items)
|
|
293
|
+
table.push([s.name, s.id]);
|
|
294
|
+
return table.toString();
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
async function runSkillsReadiness(format) {
|
|
299
|
+
const commandLabel = "profile skills readiness";
|
|
300
|
+
const token = await loadTokenOrExit(commandLabel, format);
|
|
301
|
+
const profileId = await resolveProfileId(token, commandLabel, format);
|
|
302
|
+
let result;
|
|
303
|
+
try {
|
|
304
|
+
result = await profile.skills.readiness(token, profileId);
|
|
305
|
+
}
|
|
306
|
+
catch (err) {
|
|
307
|
+
handleSkillsError(err, commandLabel, format);
|
|
308
|
+
}
|
|
309
|
+
emitResult(result, format, {
|
|
310
|
+
pretty: (data) => Object.entries(data)
|
|
311
|
+
.map(([k, v]) => `${humanReadiness(k)}: ${v ? "✓" : "✗"}`)
|
|
312
|
+
.join("\n"),
|
|
313
|
+
table: (data) => {
|
|
314
|
+
const table = new Table({ head: ["Criterion", "Satisfied"], wordWrap: true });
|
|
315
|
+
for (const [k, v] of Object.entries(data)) {
|
|
316
|
+
table.push([humanReadiness(k), v ? "true" : "false"]);
|
|
317
|
+
}
|
|
318
|
+
return table.toString();
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
function humanReadiness(key) {
|
|
323
|
+
return key
|
|
324
|
+
.replace(/^is/, "")
|
|
325
|
+
.replace(/Satisfied$/, "")
|
|
326
|
+
.replace(/([A-Z])/g, " $1")
|
|
327
|
+
.trim();
|
|
328
|
+
}
|
|
329
|
+
// =======================================================================
|
|
330
|
+
// Formatters (exported for tests)
|
|
331
|
+
// =======================================================================
|
|
332
|
+
export function formatSkillSetText(skill) {
|
|
333
|
+
const lines = [skill.skill.name, ` id: ${skill.id}`];
|
|
334
|
+
if (skill.rating !== null)
|
|
335
|
+
lines.push(` rating: ${skill.rating}`);
|
|
336
|
+
if (skill.experience !== null)
|
|
337
|
+
lines.push(` experience: ${skill.experience.toString()} months`);
|
|
338
|
+
lines.push(` visibility: ${skill.public ? "public" : "private"}`);
|
|
339
|
+
lines.push(` connections: ${skill.connectionsCount.toString()}`);
|
|
340
|
+
return lines.join("\n");
|
|
341
|
+
}
|
|
342
|
+
export function formatSkillSetTable(skill) {
|
|
343
|
+
const table = new Table({ head: ["Field", "Value"], wordWrap: true });
|
|
344
|
+
table.push(["name", skill.skill.name]);
|
|
345
|
+
table.push(["id", skill.id]);
|
|
346
|
+
table.push(["rating", skill.rating ?? "(unset)"]);
|
|
347
|
+
table.push(["experience", skill.experience?.toString() ?? "(unset)"]);
|
|
348
|
+
table.push(["visibility", skill.public ? "public" : "private"]);
|
|
349
|
+
table.push(["connections", skill.connectionsCount.toString()]);
|
|
350
|
+
return table.toString();
|
|
351
|
+
}
|
|
352
|
+
export function formatSkillsListText(skills) {
|
|
353
|
+
if (skills.length === 0)
|
|
354
|
+
return "(no skills on profile)";
|
|
355
|
+
return skills
|
|
356
|
+
.map((s) => `${s.skill.name}\t${s.rating ?? "?"}\t${s.public ? "public" : "private"}\t${s.id}`)
|
|
357
|
+
.join("\n");
|
|
358
|
+
}
|
|
359
|
+
export function formatSkillsListTable(skills) {
|
|
360
|
+
const table = new Table({ head: ["Name", "Rating", "Experience", "Visibility", "Id"], wordWrap: true });
|
|
361
|
+
for (const s of skills) {
|
|
362
|
+
table.push([
|
|
363
|
+
s.skill.name,
|
|
364
|
+
s.rating ?? "(unset)",
|
|
365
|
+
s.experience?.toString() ?? "(unset)",
|
|
366
|
+
s.public ? "public" : "private",
|
|
367
|
+
s.id,
|
|
368
|
+
]);
|
|
369
|
+
}
|
|
370
|
+
return table.toString();
|
|
371
|
+
}
|
|
372
|
+
// =======================================================================
|
|
373
|
+
// Builder
|
|
374
|
+
// =======================================================================
|
|
375
|
+
/**
|
|
376
|
+
* Build the `ttctl profile skills` command tree. Exposes the seven leaves
|
|
377
|
+
* the issue (#73) specifies — `add`, `remove`, `update`, `show`, `list`,
|
|
378
|
+
* `autocomplete`, `readiness` — registered in the canonical name spelling
|
|
379
|
+
* (`remove`) plus the `rm` alias per the project convention introduced
|
|
380
|
+
* by issue #72 (any `remove` verb gets an `rm` alias).
|
|
381
|
+
*
|
|
382
|
+
* No top-level Commander.js alias on the sub-domain itself: the issue
|
|
383
|
+
* doesn't introduce one (#72 declares aliases only for `certifications` /
|
|
384
|
+
* `employment` / `portfolio` / `resume`), and `skills` already reads
|
|
385
|
+
* naturally as a CLI flag.
|
|
386
|
+
*/
|
|
387
|
+
export function buildProfileSkillsCommand() {
|
|
388
|
+
const skills = new Command("skills").description("Manage the skills section of your profile (add / remove / update / show / list / autocomplete / readiness)");
|
|
389
|
+
skills
|
|
390
|
+
.command("add <name>")
|
|
391
|
+
.description("Add a skill to your profile by its catalog name (e.g., `TypeScript`)")
|
|
392
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
393
|
+
.choices(OUTPUT_FORMATS)
|
|
394
|
+
.default("pretty"))
|
|
395
|
+
.action(async (name, options) => {
|
|
396
|
+
await runSkillsAdd(name, options.output);
|
|
397
|
+
});
|
|
398
|
+
skills
|
|
399
|
+
.command("remove <id>")
|
|
400
|
+
.alias("rm")
|
|
401
|
+
.description("Remove a skill from your profile by its skillSet id (NOT the catalog Skill id)")
|
|
402
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
403
|
+
.choices(OUTPUT_FORMATS)
|
|
404
|
+
.default("pretty"))
|
|
405
|
+
.action(async (id, options) => {
|
|
406
|
+
await runSkillsRm(id, options.output);
|
|
407
|
+
});
|
|
408
|
+
skills
|
|
409
|
+
.command("update <id>")
|
|
410
|
+
.description("Update one or more fields on an existing skill (rating / experience / public)")
|
|
411
|
+
.option("--rating <value>", "Proficiency level: COMPETENT | STRONG | EXPERT | NOVICE")
|
|
412
|
+
.option("--experience <duration>", 'Years or months of experience: integer ("60"), "Ny" ("5y" = 60 months), or "Nm" ("60m" = 60 months)')
|
|
413
|
+
.option("--public", "Show the skill on your public profile")
|
|
414
|
+
.option("--private", "Hide the skill from your public profile")
|
|
415
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
416
|
+
.choices(OUTPUT_FORMATS)
|
|
417
|
+
.default("pretty"))
|
|
418
|
+
.action(async (id, options) => {
|
|
419
|
+
await runSkillsUpdate(id, options, options.output);
|
|
420
|
+
});
|
|
421
|
+
skills
|
|
422
|
+
.command("show <id>")
|
|
423
|
+
.description("Print details of a specific skill on your profile")
|
|
424
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
425
|
+
.choices(OUTPUT_FORMATS)
|
|
426
|
+
.default("pretty"))
|
|
427
|
+
.action(async (id, options) => {
|
|
428
|
+
await runSkillsShow(id, options.output);
|
|
429
|
+
});
|
|
430
|
+
skills
|
|
431
|
+
.command("list")
|
|
432
|
+
.description("List every skill on your profile, with rating / visibility / connection count")
|
|
433
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
434
|
+
.choices(OUTPUT_FORMATS)
|
|
435
|
+
.default("pretty"))
|
|
436
|
+
.action(async (options) => {
|
|
437
|
+
await runSkillsList(options.output);
|
|
438
|
+
});
|
|
439
|
+
skills
|
|
440
|
+
.command("autocomplete <query>")
|
|
441
|
+
.description("Search the global skill catalog for matching entries (suitable for autocomplete)")
|
|
442
|
+
.option("--limit <n>", "max number of suggestions to return", "10")
|
|
443
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
444
|
+
.choices(OUTPUT_FORMATS)
|
|
445
|
+
.default("pretty"))
|
|
446
|
+
.action(async (query, options) => {
|
|
447
|
+
const limit = Number.parseInt(options.limit, 10);
|
|
448
|
+
if (Number.isNaN(limit) || limit <= 0) {
|
|
449
|
+
emitErrorAndExit({
|
|
450
|
+
operation: "profile.skills.autocomplete",
|
|
451
|
+
format: options.output,
|
|
452
|
+
errors: [
|
|
453
|
+
{
|
|
454
|
+
code: "VALIDATION_ERROR",
|
|
455
|
+
field: "limit",
|
|
456
|
+
message: "--limit must be a positive integer.",
|
|
457
|
+
},
|
|
458
|
+
],
|
|
459
|
+
prettySummary: "profile skills autocomplete failed (VALIDATION_ERROR): --limit must be a positive integer.",
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
await runSkillsAutocomplete(query, options.output, limit);
|
|
463
|
+
});
|
|
464
|
+
skills
|
|
465
|
+
.command("readiness")
|
|
466
|
+
.description("Print the skill-readiness checklist for your profile")
|
|
467
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
468
|
+
.choices(OUTPUT_FORMATS)
|
|
469
|
+
.default("pretty"))
|
|
470
|
+
.action(async (options) => {
|
|
471
|
+
await runSkillsReadiness(options.output);
|
|
472
|
+
});
|
|
473
|
+
return skills;
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/profile/skills/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { OutputFormat } from "../../../lib/output.js";
|
|
2
|
+
/**
|
|
3
|
+
* Action handler for `ttctl profile visas add`. Both `--country` (id)
|
|
4
|
+
* and `--type` are required; `--expires` is optional.
|
|
5
|
+
*
|
|
6
|
+
* The `--issued` flag is reserved for future server support — empirically
|
|
7
|
+
* `TravelVisa` does not surface an `issued` field on the read side, and
|
|
8
|
+
* the inferred `TravelVisaInput` shape excludes it. We accept the flag
|
|
9
|
+
* to avoid breaking script consumers that pre-populate it, but log a
|
|
10
|
+
* stderr warning that it is currently silently dropped.
|
|
11
|
+
*/
|
|
12
|
+
export declare function runProfileVisasAdd(options: {
|
|
13
|
+
country: string;
|
|
14
|
+
type: string;
|
|
15
|
+
issued?: string;
|
|
16
|
+
expires?: string;
|
|
17
|
+
output: OutputFormat;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=add.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/visas/add.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { profile } from "@ttctl/core";
|
|
4
|
+
import { emitVisaListResult } from "./list.js";
|
|
5
|
+
import { handleVisasError, loadAuthTokenOrExit } from "./shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Action handler for `ttctl profile visas add`. Both `--country` (id)
|
|
8
|
+
* and `--type` are required; `--expires` is optional.
|
|
9
|
+
*
|
|
10
|
+
* The `--issued` flag is reserved for future server support — empirically
|
|
11
|
+
* `TravelVisa` does not surface an `issued` field on the read side, and
|
|
12
|
+
* the inferred `TravelVisaInput` shape excludes it. We accept the flag
|
|
13
|
+
* to avoid breaking script consumers that pre-populate it, but log a
|
|
14
|
+
* stderr warning that it is currently silently dropped.
|
|
15
|
+
*/
|
|
16
|
+
export async function runProfileVisasAdd(options) {
|
|
17
|
+
if (options.issued !== undefined) {
|
|
18
|
+
process.stderr.write("warning: --issued is reserved (server has no `issuedDate` field on TravelVisaInput today); flag ignored.\n");
|
|
19
|
+
}
|
|
20
|
+
const token = await loadAuthTokenOrExit("visas add", options.output);
|
|
21
|
+
const input = {
|
|
22
|
+
countryId: options.country,
|
|
23
|
+
visaType: options.type,
|
|
24
|
+
};
|
|
25
|
+
if (options.expires !== undefined)
|
|
26
|
+
input.expiryDate = options.expires;
|
|
27
|
+
let visas;
|
|
28
|
+
try {
|
|
29
|
+
visas = await profile.visas.add(token, input);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
handleVisasError("visas add", err, options.output);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
emitVisaListResult(visas, options.output, "add", { prettyHeader: "Travel visa added." });
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/profile/visas/add.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAMxC;IACC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAErE,MAAM,KAAK,GAAkC;QAC3C,SAAS,EAAE,OAAO,CAAC,OAAO;QAC1B,QAAQ,EAAE,OAAO,CAAC,IAAI;KACvB,CAAC;IACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAEtE,IAAI,KAAiC,CAAC;IACtC,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* Build the `ttctl profile visas` command tree.
|
|
4
|
+
*
|
|
5
|
+
* The canonical sub-domain name is `visas`. No alias — per project policy
|
|
6
|
+
* (#72), aliases are CLI-only and only registered for sub-domains where
|
|
7
|
+
* an alternative noun reads more naturally for English-speaking users.
|
|
8
|
+
* `visas` carries no such alias.
|
|
9
|
+
*
|
|
10
|
+
* Operations: `add`, `update`, `remove` (alias `rm`), `list`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildProfileVisasCommand(): Command;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/profile/visas/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAS5C;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAkElD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { Command, Option } from "commander";
|
|
4
|
+
import { OUTPUT_FORMATS } from "../../../lib/output.js";
|
|
5
|
+
import { runProfileVisasAdd } from "./add.js";
|
|
6
|
+
import { runProfileVisasList } from "./list.js";
|
|
7
|
+
import { runProfileVisasRemove } from "./remove.js";
|
|
8
|
+
import { runProfileVisasUpdate } from "./update.js";
|
|
9
|
+
/**
|
|
10
|
+
* Build the `ttctl profile visas` command tree.
|
|
11
|
+
*
|
|
12
|
+
* The canonical sub-domain name is `visas`. No alias — per project policy
|
|
13
|
+
* (#72), aliases are CLI-only and only registered for sub-domains where
|
|
14
|
+
* an alternative noun reads more naturally for English-speaking users.
|
|
15
|
+
* `visas` carries no such alias.
|
|
16
|
+
*
|
|
17
|
+
* Operations: `add`, `update`, `remove` (alias `rm`), `list`.
|
|
18
|
+
*/
|
|
19
|
+
export function buildProfileVisasCommand() {
|
|
20
|
+
const visas = new Command("visas").description("View and update the travel-visa records on your profile");
|
|
21
|
+
visas
|
|
22
|
+
.command("add")
|
|
23
|
+
.description("Create a new travel-visa record")
|
|
24
|
+
.requiredOption("--country <id>", "country id (server-issued; see Toptal travel-visa form)")
|
|
25
|
+
.requiredOption("--type <text>", "visa type (e.g., Schengen, B1/B2)")
|
|
26
|
+
.option("--issued <date>", "(reserved for future server support; not currently sent)")
|
|
27
|
+
.option("--expires <date>", "expiry date in YYYY-MM-DD")
|
|
28
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
29
|
+
.choices(OUTPUT_FORMATS)
|
|
30
|
+
.default("pretty"))
|
|
31
|
+
.action(async (options) => {
|
|
32
|
+
await runProfileVisasAdd(options);
|
|
33
|
+
});
|
|
34
|
+
visas
|
|
35
|
+
.command("update")
|
|
36
|
+
.description("Update fields on a travel-visa record")
|
|
37
|
+
.argument("<id>", "id of the travel-visa record to update")
|
|
38
|
+
.option("--country <id>", "country id")
|
|
39
|
+
.option("--type <text>", "visa type")
|
|
40
|
+
.option("--expires <date>", "expiry date in YYYY-MM-DD")
|
|
41
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
42
|
+
.choices(OUTPUT_FORMATS)
|
|
43
|
+
.default("pretty"))
|
|
44
|
+
.action(async (id, options) => {
|
|
45
|
+
await runProfileVisasUpdate(id, options);
|
|
46
|
+
});
|
|
47
|
+
visas
|
|
48
|
+
.command("remove")
|
|
49
|
+
.alias("rm")
|
|
50
|
+
.description("Remove a travel-visa record")
|
|
51
|
+
.argument("<id>", "id of the travel-visa record to remove")
|
|
52
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
53
|
+
.choices(OUTPUT_FORMATS)
|
|
54
|
+
.default("pretty"))
|
|
55
|
+
.action(async (id, options) => {
|
|
56
|
+
await runProfileVisasRemove(id, options.output);
|
|
57
|
+
});
|
|
58
|
+
visas
|
|
59
|
+
.command("list")
|
|
60
|
+
.description("List travel-visa records")
|
|
61
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
62
|
+
.choices(OUTPUT_FORMATS)
|
|
63
|
+
.default("pretty"))
|
|
64
|
+
.action(async (options) => {
|
|
65
|
+
await runProfileVisasList(options.output);
|
|
66
|
+
});
|
|
67
|
+
return visas;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/profile/visas/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAE1G,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iCAAiC,CAAC;SAC9C,cAAc,CAAC,gBAAgB,EAAE,yDAAyD,CAAC;SAC3F,cAAc,CAAC,eAAe,EAAE,mCAAmC,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC;SACrF,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,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,CACL,KAAK,EAAE,OAAmG,EAAE,EAAE;QAC5G,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CACF,CAAC;IAEJ,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uCAAuC,CAAC;SACpD,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC;SAC1D,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC;SACtC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,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,CACL,KAAK,EAAE,EAAU,EAAE,OAAoF,EAAE,EAAE;QACzG,MAAM,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;IAEJ,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,6BAA6B,CAAC;SAC1C,QAAQ,CAAC,MAAM,EAAE,wCAAwC,CAAC;SAC1D,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,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,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,OAAiC,EAAE,EAAE;QAClD,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,OAAO,KAAK,CAAC;AACf,CAAC"}
|