@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
package/README.md
CHANGED
|
@@ -1,21 +1,56 @@
|
|
|
1
1
|
# @ttctl/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@ttctl/cli)
|
|
4
|
+
[](https://github.com/alexey-pelykh/ttctl/blob/main/LICENSE)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
[Commander](https://github.com/tj/commander.js)-based CLI program for the [TTCtl](https://github.com/alexey-pelykh/ttctl) toolkit. Powers the `ttctl` binary shipped by the umbrella package.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
> **Unofficial.** TTCtl is NOT affiliated with, endorsed by, or supported by Toptal LLC. See the [project README](https://github.com/alexey-pelykh/ttctl#readme) for the full use policy and disclaimer.
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
## Audience
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
End users should install the [`ttctl`](https://www.npmjs.com/package/ttctl) umbrella package — it ships the `ttctl` binary plus the MCP server.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
This package is published separately for **embedders** who want to mount the Commander program inside another CLI tree, or run it standalone in a controlled context (test harness, custom wrapper).
|
|
14
15
|
|
|
15
|
-
##
|
|
16
|
+
## Install
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
```sh
|
|
19
|
+
npm install @ttctl/cli
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Requires **Node.js ≥ 24**, ESM only.
|
|
23
|
+
|
|
24
|
+
## API Surface
|
|
25
|
+
|
|
26
|
+
- `buildProgram()` — returns a `commander` [`Command`](https://github.com/tj/commander.js) with every sub-command registered: `profile`, `applications`, `engagements`, `availability`, `jobs`, `timesheet`, `contracts`, `payments`, `auth`. Honors the global flags `--config`, `--output`, `--json`, `--yaml`, `--dry-run`, `--verbose`, `--debug` (run `ttctl --help` for details; see the project README's [Configuration](https://github.com/alexey-pelykh/ttctl#configuration) section for `--config` precedence).
|
|
27
|
+
- `presentTtctlError`, `exitCodeForTtctlError`, `formatTtctlErrorMessage` — typed-error rendering for embedders that want CLI-shaped exit codes and stderr messages.
|
|
28
|
+
- Re-exports `TtctlError`, `ConfigError`, `ConfigErrorCode` from `@ttctl/core` so embedders can `instanceof`-check error types without taking a direct `@ttctl/core` dependency.
|
|
29
|
+
|
|
30
|
+
## Example
|
|
31
|
+
|
|
32
|
+
Minimal embedder:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { buildProgram, presentTtctlError, TtctlError } from "@ttctl/cli";
|
|
36
|
+
|
|
37
|
+
async function main(): Promise<void> {
|
|
38
|
+
const program = buildProgram();
|
|
39
|
+
try {
|
|
40
|
+
await program.parseAsync(process.argv);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
if (err instanceof TtctlError) {
|
|
43
|
+
// Writes the formatted block to stderr and calls process.exit
|
|
44
|
+
// with the right code (1 for auth, 2 for Cf403). Never returns.
|
|
45
|
+
presentTtctlError(err);
|
|
46
|
+
}
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
await main();
|
|
52
|
+
```
|
|
18
53
|
|
|
19
54
|
## License
|
|
20
55
|
|
|
21
|
-
[AGPL-3.0-only](
|
|
56
|
+
[AGPL-3.0-only](https://github.com/alexey-pelykh/ttctl/blob/main/LICENSE). Importing `@ttctl/cli` into your own code means the combined work is covered by AGPL-3.0; using the unmodified `ttctl` binary as a tool does not. See the project README's [License](https://github.com/alexey-pelykh/ttctl#license) section.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* Build the `ttctl applications` command tree. Read-only access to the
|
|
4
|
+
* user's Toptal Talent **Activity** view (which Toptal colloquially
|
|
5
|
+
* calls "applications"). Three leaves:
|
|
6
|
+
*
|
|
7
|
+
* | Leaf | Description |
|
|
8
|
+
* |-----------|------------------------------------------------------------|
|
|
9
|
+
* | `list` | List recent activity rows (filterable by status group) |
|
|
10
|
+
* | `show <id>` | Detail view for one row |
|
|
11
|
+
* | `stats` | Per-status-group counts (5 server calls in parallel) |
|
|
12
|
+
*
|
|
13
|
+
* Per project non-goals (#15): no apply / withdraw / edit operations
|
|
14
|
+
* are exposed. The CLI is read-only by design.
|
|
15
|
+
*
|
|
16
|
+
* **Out of scope for v1** (see `.tmp/workitem-15.md` § Open Questions):
|
|
17
|
+
* `--from` / `--to` date filters and `--page` / `--per-page` pagination
|
|
18
|
+
* — captured operation accepts neither. Pagination will land via #138.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildApplicationsCommand(): Command;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/applications/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAUlE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CA0DlD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { Command, InvalidArgumentError, Option } from "commander";
|
|
4
|
+
import { applications } from "@ttctl/core";
|
|
5
|
+
import { OUTPUT_FORMATS } from "../../lib/output.js";
|
|
6
|
+
import { runApplicationsList } from "./list.js";
|
|
7
|
+
import { runApplicationsShow } from "./show.js";
|
|
8
|
+
import { runApplicationsStats } from "./stats.js";
|
|
9
|
+
/**
|
|
10
|
+
* Build the `ttctl applications` command tree. Read-only access to the
|
|
11
|
+
* user's Toptal Talent **Activity** view (which Toptal colloquially
|
|
12
|
+
* calls "applications"). Three leaves:
|
|
13
|
+
*
|
|
14
|
+
* | Leaf | Description |
|
|
15
|
+
* |-----------|------------------------------------------------------------|
|
|
16
|
+
* | `list` | List recent activity rows (filterable by status group) |
|
|
17
|
+
* | `show <id>` | Detail view for one row |
|
|
18
|
+
* | `stats` | Per-status-group counts (5 server calls in parallel) |
|
|
19
|
+
*
|
|
20
|
+
* Per project non-goals (#15): no apply / withdraw / edit operations
|
|
21
|
+
* are exposed. The CLI is read-only by design.
|
|
22
|
+
*
|
|
23
|
+
* **Out of scope for v1** (see `.tmp/workitem-15.md` § Open Questions):
|
|
24
|
+
* `--from` / `--to` date filters and `--page` / `--per-page` pagination
|
|
25
|
+
* — captured operation accepts neither. Pagination will land via #138.
|
|
26
|
+
*/
|
|
27
|
+
export function buildApplicationsCommand() {
|
|
28
|
+
const cmd = new Command("applications").description("View your Toptal Talent activity (applications, availability requests, interviews, engagements)");
|
|
29
|
+
cmd
|
|
30
|
+
.command("list")
|
|
31
|
+
.description("List recent activity rows")
|
|
32
|
+
.option("--keywords <keyword...>", "free-text keyword filter (repeatable; AND across keywords)")
|
|
33
|
+
.addOption(new Option("--status-group <group...>", "filter by status group (repeatable; OR across groups)").choices([
|
|
34
|
+
...applications.STATUS_GROUPS,
|
|
35
|
+
]))
|
|
36
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
37
|
+
.choices(OUTPUT_FORMATS)
|
|
38
|
+
.default("pretty"))
|
|
39
|
+
.action(async (options) => {
|
|
40
|
+
// `exactOptionalPropertyTypes: true` — build additively to keep
|
|
41
|
+
// omitted-vs-undefined semantics straight at the API boundary.
|
|
42
|
+
const listOpts = {
|
|
43
|
+
output: options.output,
|
|
44
|
+
};
|
|
45
|
+
if (options.keywords !== undefined)
|
|
46
|
+
listOpts.keywords = options.keywords;
|
|
47
|
+
if (options.statusGroup !== undefined)
|
|
48
|
+
listOpts.statusGroups = options.statusGroup;
|
|
49
|
+
await runApplicationsList(listOpts);
|
|
50
|
+
});
|
|
51
|
+
cmd
|
|
52
|
+
.command("show")
|
|
53
|
+
.description("Show one activity row by id")
|
|
54
|
+
.argument("<id>", "id of the activity row to show", parseIdArg)
|
|
55
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
56
|
+
.choices(OUTPUT_FORMATS)
|
|
57
|
+
.default("pretty"))
|
|
58
|
+
.action(async (id, options) => {
|
|
59
|
+
await runApplicationsShow(id, options.output);
|
|
60
|
+
});
|
|
61
|
+
cmd
|
|
62
|
+
.command("stats")
|
|
63
|
+
.description("Per-status-group activity counts (issues 5 server calls in parallel)")
|
|
64
|
+
.addOption(new Option("-o, --output <format>", "output format")
|
|
65
|
+
.choices(OUTPUT_FORMATS)
|
|
66
|
+
.default("pretty"))
|
|
67
|
+
.action(async (options) => {
|
|
68
|
+
await runApplicationsStats(options.output);
|
|
69
|
+
});
|
|
70
|
+
return cmd;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Reject empty or whitespace-only id arguments at parse time so the
|
|
74
|
+
* service layer doesn't have to handle them defensively. Commander
|
|
75
|
+
* surfaces `InvalidArgumentError` as a clean `error: invalid argument
|
|
76
|
+
* <id>: <message>` line and a non-zero exit, NOT the structured
|
|
77
|
+
* envelope — argument-validation errors are pre-action and don't carry
|
|
78
|
+
* an operation context.
|
|
79
|
+
*/
|
|
80
|
+
function parseIdArg(value) {
|
|
81
|
+
const trimmed = value.trim();
|
|
82
|
+
if (trimmed.length === 0) {
|
|
83
|
+
throw new InvalidArgumentError("id must not be empty");
|
|
84
|
+
}
|
|
85
|
+
return trimmed;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/applications/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CACjD,iGAAiG,CAClG,CAAC;IAEF,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,yBAAyB,EAAE,4DAA4D,CAAC;SAC/F,SAAS,CACR,IAAI,MAAM,CAAC,2BAA2B,EAAE,uDAAuD,CAAC,CAAC,OAAO,CAAC;QACvG,GAAG,YAAY,CAAC,aAAa;KAC9B,CAAC,CACH;SACA,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,OAAgG,EAAE,EAAE;QACzG,gEAAgE;QAChE,+DAA+D;QAC/D,MAAM,QAAQ,GAAgD;YAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;YAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACzE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,QAAQ,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACnF,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6BAA6B,CAAC;SAC1C,QAAQ,CAAC,MAAM,EAAE,gCAAgC,EAAE,UAAU,CAAC;SAC9D,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,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sEAAsE,CAAC;SACnF,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,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { applications } from "@ttctl/core";
|
|
2
|
+
import type { OutputFormat } from "../../lib/output.js";
|
|
3
|
+
/**
|
|
4
|
+
* Action handler for `ttctl applications list`. Reads the user's
|
|
5
|
+
* activity items (applications, availability requests, interviews,
|
|
6
|
+
* engagements) and emits via the cross-CLI output helper, wrapped in
|
|
7
|
+
* the v0.4 list envelope (`{version, items, pageInfo?}` from #128) for
|
|
8
|
+
* `json` / `yaml`.
|
|
9
|
+
*
|
|
10
|
+
* Filters: `--keywords` (free-text, repeatable) and `--status-group`
|
|
11
|
+
* (one of the five `JobActivityItemStatusGroupEnum` values, repeatable
|
|
12
|
+
* — server-side AND across instances).
|
|
13
|
+
*
|
|
14
|
+
* **Pagination & date filters not exposed** — the captured
|
|
15
|
+
* `JobActivityItems` operation accepts neither. Per #183, pagination
|
|
16
|
+
* flags are declared PER paginating leaf (jobs only); this leaf
|
|
17
|
+
* does not declare `--page` / `--per-page`, so Commander emits its
|
|
18
|
+
* standard `error: unknown option '--page'` (exit 1) when a user
|
|
19
|
+
* passes either flag. Date filters remain out of scope per #15
|
|
20
|
+
* § Open Questions (RESOLVED) in `.tmp/workitem-15.md`.
|
|
21
|
+
*/
|
|
22
|
+
export interface ApplicationsListOptions {
|
|
23
|
+
keywords?: string[];
|
|
24
|
+
statusGroups?: applications.StatusGroup[];
|
|
25
|
+
output: OutputFormat;
|
|
26
|
+
}
|
|
27
|
+
export declare function runApplicationsList(opts: ApplicationsListOptions): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Render the activity list as a `cli-table3` table sized to the
|
|
30
|
+
* current terminal width. Columns: id, status (verbose), group, job
|
|
31
|
+
* title, last updated.
|
|
32
|
+
*
|
|
33
|
+
* Used by both `pretty` and `table` slots — the table layout is the
|
|
34
|
+
* primary human view; per the format-overrides registry pattern, lists
|
|
35
|
+
* with one-line-per-row data prefer `table`. Multi-line per-item
|
|
36
|
+
* formatting (`pretty` block) is reserved for sub-domains where one or
|
|
37
|
+
* more fields are paragraph-length (`description`, `accomplishment`).
|
|
38
|
+
* Activity rows have no such field at the list level — `descriptionMd`
|
|
39
|
+
* is on the detail view only.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatApplicationsTable(items: applications.JobActivityItem[], terminalWidth?: number): string;
|
|
42
|
+
/**
|
|
43
|
+
* Shorten the `JobActivityItemStatusGroupEnum` value for column display.
|
|
44
|
+
* `ACTIVE_ENGAGEMENT` → `Active`, `ON_RECRUITER_REVIEW` → `Recruiter`,
|
|
45
|
+
* etc. The full value is preserved in `--json` / `--yaml` output via
|
|
46
|
+
* the unmodified `statusGroupV2.value`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function shortenStatusGroup(value: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Render an ISO 8601 timestamp as just the date portion (YYYY-MM-DD)
|
|
51
|
+
* for table compactness. Returns the input as-is when it doesn't parse
|
|
52
|
+
* — defensive against future server-format drift.
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatDate(iso: string): string;
|
|
55
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/applications/list.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,CAAC,eAAe,EAAE,EACrC,aAAa,GAAE,MAAsC,GACpD,MAAM,CA8BR;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAexD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import Table from "cli-table3";
|
|
4
|
+
import { applications } from "@ttctl/core";
|
|
5
|
+
import { wrapListEnvelope } from "../../lib/envelopes.js";
|
|
6
|
+
import { emitResult } from "../../lib/output.js";
|
|
7
|
+
import { handleApplicationsError, loadAuthTokenOrExit } from "./shared.js";
|
|
8
|
+
export async function runApplicationsList(opts) {
|
|
9
|
+
const token = await loadAuthTokenOrExit("applications list", opts.output);
|
|
10
|
+
// `exactOptionalPropertyTypes: true` requires us to OMIT optional
|
|
11
|
+
// fields rather than pass them as `undefined`; build the input
|
|
12
|
+
// additively per the project pattern (see `runProfileVisasAdd`).
|
|
13
|
+
const listOpts = {};
|
|
14
|
+
if (opts.keywords !== undefined)
|
|
15
|
+
listOpts.keywords = opts.keywords;
|
|
16
|
+
if (opts.statusGroups !== undefined)
|
|
17
|
+
listOpts.statusGroups = opts.statusGroups;
|
|
18
|
+
let items;
|
|
19
|
+
try {
|
|
20
|
+
items = await applications.list(token, listOpts);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
handleApplicationsError("applications list", err, opts.output);
|
|
24
|
+
}
|
|
25
|
+
emitResult(wrapListEnvelope(items), opts.output, {
|
|
26
|
+
pretty: (data) => formatApplicationsTable(data.items),
|
|
27
|
+
table: (data) => formatApplicationsTable(data.items),
|
|
28
|
+
empty: { command: "applications.list" },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Render the activity list as a `cli-table3` table sized to the
|
|
33
|
+
* current terminal width. Columns: id, status (verbose), group, job
|
|
34
|
+
* title, last updated.
|
|
35
|
+
*
|
|
36
|
+
* Used by both `pretty` and `table` slots — the table layout is the
|
|
37
|
+
* primary human view; per the format-overrides registry pattern, lists
|
|
38
|
+
* with one-line-per-row data prefer `table`. Multi-line per-item
|
|
39
|
+
* formatting (`pretty` block) is reserved for sub-domains where one or
|
|
40
|
+
* more fields are paragraph-length (`description`, `accomplishment`).
|
|
41
|
+
* Activity rows have no such field at the list level — `descriptionMd`
|
|
42
|
+
* is on the detail view only.
|
|
43
|
+
*/
|
|
44
|
+
export function formatApplicationsTable(items, terminalWidth = process.stdout.columns || 100) {
|
|
45
|
+
if (items.length === 0) {
|
|
46
|
+
const empty = new Table({ head: ["id", "status", "group", "job", "updated"] });
|
|
47
|
+
return empty.toString();
|
|
48
|
+
}
|
|
49
|
+
// Fixed widths: id (≤20 chars usually), updated (10 chars for YYYY-MM-DD).
|
|
50
|
+
// Status / group are short-enum values verbose-rendered (~20 chars).
|
|
51
|
+
// Remaining width goes to job title.
|
|
52
|
+
const idWidth = 22;
|
|
53
|
+
const statusWidth = 18;
|
|
54
|
+
const groupWidth = 16;
|
|
55
|
+
const updatedWidth = 12;
|
|
56
|
+
// 5 columns × 2 padding-char each + 6 borders ≈ 16
|
|
57
|
+
const remaining = Math.max(20, terminalWidth - idWidth - statusWidth - groupWidth - updatedWidth - 16);
|
|
58
|
+
const titleWidth = Math.max(20, remaining);
|
|
59
|
+
const table = new Table({
|
|
60
|
+
head: ["id", "status", "group", "job", "updated"],
|
|
61
|
+
colWidths: [idWidth, statusWidth, groupWidth, titleWidth, updatedWidth],
|
|
62
|
+
wordWrap: true,
|
|
63
|
+
});
|
|
64
|
+
for (const it of items) {
|
|
65
|
+
table.push([
|
|
66
|
+
it.id,
|
|
67
|
+
it.statusV2.verbose,
|
|
68
|
+
shortenStatusGroup(it.statusGroupV2.value),
|
|
69
|
+
it.job.title ?? "(untitled)",
|
|
70
|
+
formatDate(it.lastUpdatedAt),
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
return table.toString();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Shorten the `JobActivityItemStatusGroupEnum` value for column display.
|
|
77
|
+
* `ACTIVE_ENGAGEMENT` → `Active`, `ON_RECRUITER_REVIEW` → `Recruiter`,
|
|
78
|
+
* etc. The full value is preserved in `--json` / `--yaml` output via
|
|
79
|
+
* the unmodified `statusGroupV2.value`.
|
|
80
|
+
*/
|
|
81
|
+
export function shortenStatusGroup(value) {
|
|
82
|
+
switch (value) {
|
|
83
|
+
case "ACTIVE_ENGAGEMENT":
|
|
84
|
+
return "Active";
|
|
85
|
+
case "ARCHIVED":
|
|
86
|
+
return "Archived";
|
|
87
|
+
case "CLOSED_ENGAGEMENT":
|
|
88
|
+
return "Closed";
|
|
89
|
+
case "ON_CLIENT_REVIEW":
|
|
90
|
+
return "Client";
|
|
91
|
+
case "ON_RECRUITER_REVIEW":
|
|
92
|
+
return "Recruiter";
|
|
93
|
+
default:
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Render an ISO 8601 timestamp as just the date portion (YYYY-MM-DD)
|
|
99
|
+
* for table compactness. Returns the input as-is when it doesn't parse
|
|
100
|
+
* — defensive against future server-format drift.
|
|
101
|
+
*/
|
|
102
|
+
export function formatDate(iso) {
|
|
103
|
+
const m = /^(\d{4}-\d{2}-\d{2})/.exec(iso);
|
|
104
|
+
return m?.[1] ?? iso;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/applications/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OutputFormat } from "../../lib/output.js";
|
|
2
|
+
export { loadAuthTokenOrExit } from "../profile/shared.js";
|
|
3
|
+
/**
|
|
4
|
+
* Thin wrapper around the shared CLI error router (#330) closed over
|
|
5
|
+
* `applications.ApplicationsError`. The router applies the envelope ABI
|
|
6
|
+
* (#128) branching uniformly across sub-domains.
|
|
7
|
+
*
|
|
8
|
+
* `commandLabel` is the user-visible prefix (e.g. `"applications show"`);
|
|
9
|
+
* the envelope `operation` is derived by replacing spaces with dots
|
|
10
|
+
* (`"applications.show"`). No per-code hint adapter — `ApplicationsError`
|
|
11
|
+
* codes do not carry actionable next-step hints today.
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleApplicationsError(commandLabel: string, err: unknown, format?: OutputFormat): never;
|
|
14
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/applications/shared.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,YAAuB,GAAG,KAAK,CAElH"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { applications } from "@ttctl/core";
|
|
4
|
+
import { handleDomainError } from "../../lib/error-routing.js";
|
|
5
|
+
export { loadAuthTokenOrExit } from "../profile/shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Thin wrapper around the shared CLI error router (#330) closed over
|
|
8
|
+
* `applications.ApplicationsError`. The router applies the envelope ABI
|
|
9
|
+
* (#128) branching uniformly across sub-domains.
|
|
10
|
+
*
|
|
11
|
+
* `commandLabel` is the user-visible prefix (e.g. `"applications show"`);
|
|
12
|
+
* the envelope `operation` is derived by replacing spaces with dots
|
|
13
|
+
* (`"applications.show"`). No per-code hint adapter — `ApplicationsError`
|
|
14
|
+
* codes do not carry actionable next-step hints today.
|
|
15
|
+
*/
|
|
16
|
+
export function handleApplicationsError(commandLabel, err, format = "pretty") {
|
|
17
|
+
handleDomainError(commandLabel, err, applications.ApplicationsError, format);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/applications/shared.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB,EAAE,GAAY,EAAE,SAAuB,QAAQ;IACzG,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { applications } from "@ttctl/core";
|
|
2
|
+
import type { OutputFormat } from "../../lib/output.js";
|
|
3
|
+
/**
|
|
4
|
+
* Action handler for `ttctl applications show <id>`. Reads a single
|
|
5
|
+
* activity item by id and emits via the cross-CLI output helper.
|
|
6
|
+
*
|
|
7
|
+
* Pretty rendering is a multi-line key:value layout grouped into
|
|
8
|
+
* sections (Status, Job, Application, Engagement). Sections with no
|
|
9
|
+
* data (e.g. no `engagement` for a row that hasn't reached engagement
|
|
10
|
+
* yet) are omitted — pretty's job is to be readable, not exhaustive.
|
|
11
|
+
*
|
|
12
|
+
* `json` / `yaml` always emit the full server payload — machine
|
|
13
|
+
* consumers may project as needed.
|
|
14
|
+
*/
|
|
15
|
+
export declare function runApplicationsShow(id: string, output: OutputFormat): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Render the activity-item detail as a sectioned multi-line block.
|
|
18
|
+
* Pure — directly unit-testable.
|
|
19
|
+
*
|
|
20
|
+
* Layout:
|
|
21
|
+
*
|
|
22
|
+
* Activity <id>
|
|
23
|
+
* Status: <verbose> (<value>)
|
|
24
|
+
* Group: <verbose> (<value>)
|
|
25
|
+
* Updated: <ISO>
|
|
26
|
+
*
|
|
27
|
+
* Job
|
|
28
|
+
* <title>
|
|
29
|
+
* <url>
|
|
30
|
+
* Client: <fullName>
|
|
31
|
+
* Commitment: <slug>
|
|
32
|
+
* Work type: <slug>
|
|
33
|
+
* Specialization: <title>
|
|
34
|
+
* Hours: <expectedHours>
|
|
35
|
+
* Length: <enumValue>
|
|
36
|
+
* Description:
|
|
37
|
+
* <descriptionMd, with paragraph breaks preserved>
|
|
38
|
+
*
|
|
39
|
+
* Application // omitted if jobApplication is null
|
|
40
|
+
* Id: <id>
|
|
41
|
+
* Requested rate: <decimal>
|
|
42
|
+
*
|
|
43
|
+
* Engagement // omitted if engagement is null
|
|
44
|
+
* Id: <id>
|
|
45
|
+
* Started: <startDate>
|
|
46
|
+
* Ended: <endDate> // omitted if null
|
|
47
|
+
* Commitment: <slug>
|
|
48
|
+
* Hours: <expectedHours>
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatApplicationDetail(item: applications.JobActivityItemDetail): string;
|
|
51
|
+
//# sourceMappingURL=show.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/applications/show.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAazF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,qBAAqB,GAAG,MAAM,CA2FxF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { applications } from "@ttctl/core";
|
|
4
|
+
import { emitResult } from "../../lib/output.js";
|
|
5
|
+
import { handleApplicationsError, loadAuthTokenOrExit } from "./shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Action handler for `ttctl applications show <id>`. Reads a single
|
|
8
|
+
* activity item by id and emits via the cross-CLI output helper.
|
|
9
|
+
*
|
|
10
|
+
* Pretty rendering is a multi-line key:value layout grouped into
|
|
11
|
+
* sections (Status, Job, Application, Engagement). Sections with no
|
|
12
|
+
* data (e.g. no `engagement` for a row that hasn't reached engagement
|
|
13
|
+
* yet) are omitted — pretty's job is to be readable, not exhaustive.
|
|
14
|
+
*
|
|
15
|
+
* `json` / `yaml` always emit the full server payload — machine
|
|
16
|
+
* consumers may project as needed.
|
|
17
|
+
*/
|
|
18
|
+
export async function runApplicationsShow(id, output) {
|
|
19
|
+
const token = await loadAuthTokenOrExit("applications show", output);
|
|
20
|
+
let item;
|
|
21
|
+
try {
|
|
22
|
+
item = await applications.show(token, id);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
handleApplicationsError("applications show", err, output);
|
|
26
|
+
}
|
|
27
|
+
emitResult(item, output, {
|
|
28
|
+
pretty: (data) => formatApplicationDetail(data),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Render the activity-item detail as a sectioned multi-line block.
|
|
33
|
+
* Pure — directly unit-testable.
|
|
34
|
+
*
|
|
35
|
+
* Layout:
|
|
36
|
+
*
|
|
37
|
+
* Activity <id>
|
|
38
|
+
* Status: <verbose> (<value>)
|
|
39
|
+
* Group: <verbose> (<value>)
|
|
40
|
+
* Updated: <ISO>
|
|
41
|
+
*
|
|
42
|
+
* Job
|
|
43
|
+
* <title>
|
|
44
|
+
* <url>
|
|
45
|
+
* Client: <fullName>
|
|
46
|
+
* Commitment: <slug>
|
|
47
|
+
* Work type: <slug>
|
|
48
|
+
* Specialization: <title>
|
|
49
|
+
* Hours: <expectedHours>
|
|
50
|
+
* Length: <enumValue>
|
|
51
|
+
* Description:
|
|
52
|
+
* <descriptionMd, with paragraph breaks preserved>
|
|
53
|
+
*
|
|
54
|
+
* Application // omitted if jobApplication is null
|
|
55
|
+
* Id: <id>
|
|
56
|
+
* Requested rate: <decimal>
|
|
57
|
+
*
|
|
58
|
+
* Engagement // omitted if engagement is null
|
|
59
|
+
* Id: <id>
|
|
60
|
+
* Started: <startDate>
|
|
61
|
+
* Ended: <endDate> // omitted if null
|
|
62
|
+
* Commitment: <slug>
|
|
63
|
+
* Hours: <expectedHours>
|
|
64
|
+
*/
|
|
65
|
+
export function formatApplicationDetail(item) {
|
|
66
|
+
const lines = [];
|
|
67
|
+
lines.push(`Activity ${item.id}`);
|
|
68
|
+
lines.push(` Status: ${item.statusV2.verbose} (${item.statusV2.value})`);
|
|
69
|
+
lines.push(` Group: ${item.statusGroupV2.verbose} (${item.statusGroupV2.value})`);
|
|
70
|
+
lines.push(` Updated: ${item.lastUpdatedAt}`);
|
|
71
|
+
lines.push("");
|
|
72
|
+
lines.push("Job");
|
|
73
|
+
if (item.job.title !== null)
|
|
74
|
+
lines.push(` ${item.job.title}`);
|
|
75
|
+
if (item.job.url !== null)
|
|
76
|
+
lines.push(` ${item.job.url}`);
|
|
77
|
+
if (item.job.client?.fullName != null) {
|
|
78
|
+
lines.push(` Client: ${item.job.client.fullName}`);
|
|
79
|
+
}
|
|
80
|
+
if (item.job.commitment?.slug != null) {
|
|
81
|
+
lines.push(` Commitment: ${item.job.commitment.slug}`);
|
|
82
|
+
}
|
|
83
|
+
if (item.job.workType?.slug != null) {
|
|
84
|
+
lines.push(` Work type: ${item.job.workType.slug}`);
|
|
85
|
+
}
|
|
86
|
+
if (item.job.specialization?.title != null) {
|
|
87
|
+
lines.push(` Specialization: ${item.job.specialization.title}`);
|
|
88
|
+
}
|
|
89
|
+
if (item.job.expectedHours !== null) {
|
|
90
|
+
lines.push(` Hours: ${item.job.expectedHours.toString()}`);
|
|
91
|
+
}
|
|
92
|
+
if (item.job.estimatedLength?.enumValue != null) {
|
|
93
|
+
lines.push(` Length: ${item.job.estimatedLength.enumValue}`);
|
|
94
|
+
}
|
|
95
|
+
if (item.job.startDate !== null) {
|
|
96
|
+
lines.push(` Starts: ${item.job.startDate}`);
|
|
97
|
+
}
|
|
98
|
+
if (item.job.postedWhen !== null) {
|
|
99
|
+
lines.push(` Posted: ${item.job.postedWhen}`);
|
|
100
|
+
}
|
|
101
|
+
// Surface the boolean job flags as compact one-liners — only when
|
|
102
|
+
// true, since `false` is the implicit default and rendering it would
|
|
103
|
+
// clutter the typical output.
|
|
104
|
+
if (item.job.isCoaching === true) {
|
|
105
|
+
lines.push(` Type: coaching`);
|
|
106
|
+
}
|
|
107
|
+
if (item.job.isToptalProject === true) {
|
|
108
|
+
lines.push(` Type: toptal-project`);
|
|
109
|
+
}
|
|
110
|
+
if (item.job.descriptionMd !== null && item.job.descriptionMd !== "") {
|
|
111
|
+
lines.push(` Description:`);
|
|
112
|
+
for (const para of item.job.descriptionMd.split(/\n+/)) {
|
|
113
|
+
if (para.trim().length > 0)
|
|
114
|
+
lines.push(` ${para}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (item.jobApplication !== null) {
|
|
118
|
+
lines.push("");
|
|
119
|
+
lines.push("Application");
|
|
120
|
+
lines.push(` Id: ${item.jobApplication.id}`);
|
|
121
|
+
if (item.jobApplication.requestedHourlyRate?.decimal != null) {
|
|
122
|
+
lines.push(` Requested rate: ${item.jobApplication.requestedHourlyRate.decimal}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (item.engagement !== null) {
|
|
126
|
+
lines.push("");
|
|
127
|
+
lines.push("Engagement");
|
|
128
|
+
lines.push(` Id: ${item.engagement.id}`);
|
|
129
|
+
if (item.engagement.startDate !== null) {
|
|
130
|
+
lines.push(` Started: ${item.engagement.startDate}`);
|
|
131
|
+
}
|
|
132
|
+
if (item.engagement.endDate !== null) {
|
|
133
|
+
lines.push(` Ended: ${item.engagement.endDate}`);
|
|
134
|
+
}
|
|
135
|
+
if (item.engagement.commitment?.slug != null) {
|
|
136
|
+
lines.push(` Commitment: ${item.engagement.commitment.slug}`);
|
|
137
|
+
}
|
|
138
|
+
if (item.engagement.expectedHours !== null) {
|
|
139
|
+
lines.push(` Hours: ${item.engagement.expectedHours.toString()}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Surface availability-request / interview presence as one-liners.
|
|
143
|
+
// The schema marks `interview` as `Unknown` so we can't safely select
|
|
144
|
+
// more than `id` — and even `id` is a presence indicator.
|
|
145
|
+
if (item.availabilityRequest !== null) {
|
|
146
|
+
lines.push("");
|
|
147
|
+
lines.push(`Availability request: ${item.availabilityRequest.id}`);
|
|
148
|
+
}
|
|
149
|
+
if (item.interview !== null) {
|
|
150
|
+
lines.push(`Interview: ${item.interview.id}`);
|
|
151
|
+
}
|
|
152
|
+
return lines.join("\n");
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/applications/show.ts"],"names":[],"mappings":"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"}
|