@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/dist/program.js
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
|
+
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { Command, Option } from "commander";
|
|
5
|
+
import { ConfigError, setDiagnosticLogger } from "@ttctl/core";
|
|
6
|
+
import { buildApplicationsCommand } from "./commands/applications/index.js";
|
|
7
|
+
import { registerAuthCommand } from "./commands/auth/index.js";
|
|
8
|
+
import { buildAvailabilityCommand } from "./commands/availability/index.js";
|
|
9
|
+
import { buildContractsCommand } from "./commands/contracts/index.js";
|
|
10
|
+
import { buildEngagementsCommand } from "./commands/engagements/index.js";
|
|
11
|
+
import { buildJobsCommand } from "./commands/jobs/index.js";
|
|
12
|
+
import { buildPaymentsCommand } from "./commands/payments/index.js";
|
|
13
|
+
import { buildTimesheetCommand } from "./commands/timesheet/index.js";
|
|
14
|
+
import { buildProfileCommand } from "./commands/profile/index.js";
|
|
15
|
+
import { setCliConfigPath } from "./lib/config-context.js";
|
|
16
|
+
import { DRY_RUN_NO_OP_STDERR_NOTE, isMutationCommand, setCliDryRun } from "./lib/dry-run.js";
|
|
17
|
+
import { runKillSwitchAtStartup } from "./lib/kill-switch-hook.js";
|
|
18
|
+
/**
|
|
19
|
+
* Build the root TTCtl Commander program. Sub-commands are registered as they
|
|
20
|
+
* land in milestones; the program is shaped as a noun-verb tree (e.g.,
|
|
21
|
+
* `ttctl profile show`, `ttctl timesheet list`).
|
|
22
|
+
*
|
|
23
|
+
* Global options:
|
|
24
|
+
*
|
|
25
|
+
* `--config <path>` — explicit path to the YAML config, takes precedence
|
|
26
|
+
* over `TTCTL_CONFIG_FILE` and the home dotfile. Validated at invocation
|
|
27
|
+
* time (before any sub-command's action runs) — a missing file surfaces
|
|
28
|
+
* as `ConfigError(code: NO_CREDS)` rather than failing later inside
|
|
29
|
+
* `loadConfigFile`. Honors `aws --profile` / `kubectl --kubeconfig` UX
|
|
30
|
+
* expectations.
|
|
31
|
+
*
|
|
32
|
+
* Resolution precedence (highest → lowest, post-#107):
|
|
33
|
+
*
|
|
34
|
+
* 1. `--config <path>` — this flag (per-invocation)
|
|
35
|
+
* 2. `TTCTL_CONFIG_FILE` env — process-scoped (CI, direnv)
|
|
36
|
+
* 3. `~/.ttctl.yaml` — POSIX home dotfile (only fallback)
|
|
37
|
+
*
|
|
38
|
+
* The CWD `./.ttctl.yaml` is NOT auto-discovered (closed in #92).
|
|
39
|
+
* XDG paths (`$XDG_CONFIG_HOME/ttctl/config.yaml`,
|
|
40
|
+
* `~/.config/ttctl/config.yaml`) are NOT consulted (closed in #107 — the
|
|
41
|
+
* single-file model places the captured bearer in the same YAML, so
|
|
42
|
+
* `~/.ttctl.yaml` is the canonical home location).
|
|
43
|
+
*
|
|
44
|
+
* `--json` / `--yaml` — boolean shortcuts for `--output=json` /
|
|
45
|
+
* `--output=yaml` (post-#126). Mutual exclusion with `--output`/`-o` is
|
|
46
|
+
* enforced in the preAction hook: any two of `{--output, -o, --json,
|
|
47
|
+
* --yaml}` present together raise a parse-time error before the
|
|
48
|
+
* sub-command's action runs.
|
|
49
|
+
*
|
|
50
|
+
* `--dry-run` (issue #52) — preview a mutation without sending it.
|
|
51
|
+
* Captured into the module-scoped `cliDryRun` holder via
|
|
52
|
+
* `setCliDryRun` in the preAction hook so mutation handlers can read
|
|
53
|
+
* it through `getCliDryRun()`. Leaf commands tagged via
|
|
54
|
+
* `markMutation()` (in their `build*Command` factories) route the
|
|
55
|
+
* value through to the core layer's `dryRun` option; non-mutation
|
|
56
|
+
* leaves get a one-line stderr no-op note from the preAction hook
|
|
57
|
+
* (`DRY_RUN_NO_OP_STDERR_NOTE`) and proceed normally.
|
|
58
|
+
*
|
|
59
|
+
* MCP tool integration is conditional on issue #10 having landed —
|
|
60
|
+
* when MCP tools that wrap mutations ship, they accept the same
|
|
61
|
+
* `dryRun?: boolean` input parameter and route through the same core
|
|
62
|
+
* `dryRun` option. Until then, no MCP-side wiring is required.
|
|
63
|
+
*
|
|
64
|
+
* `--verbose` / `--debug` (issue #139) — diagnostic observability for
|
|
65
|
+
* transport-level request/response activity. `--verbose` emits a
|
|
66
|
+
* one-line request descriptor + one-line response status per
|
|
67
|
+
* transport call to STDERR; `--debug` emits full JSON-encoded
|
|
68
|
+
* request/response envelopes (including redacted headers and body)
|
|
69
|
+
* to STDERR. Both write EXCLUSIVELY to stderr — the stdout data
|
|
70
|
+
* channel (json/yaml/pretty envelopes per #126/#128) is never
|
|
71
|
+
* touched, so `--debug --output=json` works as one would expect:
|
|
72
|
+
* structured data on stdout, redacted debug trace on stderr.
|
|
73
|
+
*
|
|
74
|
+
* Mutual relationship: `--debug` is a strict superset of
|
|
75
|
+
* `--verbose`; if both are passed, `--debug` wins (no warning —
|
|
76
|
+
* the user got what they implicitly asked for, the verbose-tier
|
|
77
|
+
* data is a subset of the debug-tier data). The preAction hook
|
|
78
|
+
* computes the effective level and routes it through
|
|
79
|
+
* `setDiagnosticLogger` so every transport (stockTransport,
|
|
80
|
+
* impersonatedTransport, impersonatedMultipartTransport, and the
|
|
81
|
+
* hand-rolled photo-upload path in profile/basic) emits the same
|
|
82
|
+
* shape. Secret redaction (cookies, authorization headers,
|
|
83
|
+
* password / token / secret body fields, the
|
|
84
|
+
* `user_<24hex>_<20alnum>` bearer pattern) is applied by the
|
|
85
|
+
* `redact` module BEFORE serialization, so verbatim bearers /
|
|
86
|
+
* cookies cannot appear in either log tier.
|
|
87
|
+
*
|
|
88
|
+
* Pagination flags are declared PER paginating leaf (`jobs list`,
|
|
89
|
+
* `jobs saved`, `jobs viewed`, `jobs not-interested-list`) rather
|
|
90
|
+
* than globally — see #183 (follow-up to #138). The leaf's `--help`
|
|
91
|
+
* is the source of truth for "does this command paginate?"; Commander
|
|
92
|
+
* emits its standard `error: unknown option '--page'` (exit 1) when
|
|
93
|
+
* the flag is passed to a non-paginating leaf.
|
|
94
|
+
*/
|
|
95
|
+
export function buildProgram() {
|
|
96
|
+
const program = new Command();
|
|
97
|
+
program
|
|
98
|
+
.name("ttctl")
|
|
99
|
+
.description("Unofficial CLI for the Toptal Talent platform — personal-productivity tool")
|
|
100
|
+
.version("0.0.0")
|
|
101
|
+
.addOption(new Option("--config <path>", "path to YAML config (overrides TTCTL_CONFIG_FILE and ~/.ttctl.yaml)"))
|
|
102
|
+
.addOption(new Option("--json", "shortcut for --output=json (mutually exclusive with --output, -o, --yaml)"))
|
|
103
|
+
.addOption(new Option("--yaml", "shortcut for --output=yaml (mutually exclusive with --output, -o, --json)"))
|
|
104
|
+
.addOption(new Option("--dry-run", "preview a mutation request without sending it (no-op for read commands)").default(false))
|
|
105
|
+
.addOption(new Option("--verbose", "log request/response summary to stderr (issue #139)").default(false))
|
|
106
|
+
.addOption(new Option("--debug", "log full request/response (headers + body, redacted) to stderr (issue #139)").default(false))
|
|
107
|
+
.hook("preAction", (thisCommand, actionCommand) => {
|
|
108
|
+
// `thisCommand` is the root program where the hook is registered;
|
|
109
|
+
// global options are read off it directly. The hook fires before
|
|
110
|
+
// every sub-command's action, so the path is captured exactly once
|
|
111
|
+
// per invocation. `actionCommand` is the deepest command being
|
|
112
|
+
// executed (e.g., the `init` leaf under `auth init`).
|
|
113
|
+
const opts = thisCommand.opts();
|
|
114
|
+
const configPath = opts.config;
|
|
115
|
+
// Mutual exclusion across format flags (post-#126). The user-visible
|
|
116
|
+
// surface is `--output={pretty,yaml,json}` plus boolean shortcuts
|
|
117
|
+
// `--json` / `--yaml`. Any two flags from the set
|
|
118
|
+
// `{--output, -o, --json, --yaml}` present together is a parse-time
|
|
119
|
+
// error — fired BEFORE the sub-command's action runs so the error
|
|
120
|
+
// message is uniform regardless of which leaf the user invoked.
|
|
121
|
+
//
|
|
122
|
+
// `getOptionValueSource("output")` distinguishes "user passed it"
|
|
123
|
+
// (source === `"cli"`) from "Commander filled the default"
|
|
124
|
+
// (source === `"default"`). Without this check the default value
|
|
125
|
+
// would always fire and every `--json` / `--yaml` use would be
|
|
126
|
+
// (incorrectly) flagged as a conflict.
|
|
127
|
+
const outputExplicit = actionCommand.getOptionValueSource("output") === "cli";
|
|
128
|
+
const explicitFlags = [];
|
|
129
|
+
if (outputExplicit) {
|
|
130
|
+
const out = actionCommand.opts().output;
|
|
131
|
+
explicitFlags.push(`--output=${out ?? ""}`);
|
|
132
|
+
}
|
|
133
|
+
if (opts.json === true)
|
|
134
|
+
explicitFlags.push("--json");
|
|
135
|
+
if (opts.yaml === true)
|
|
136
|
+
explicitFlags.push("--yaml");
|
|
137
|
+
if (explicitFlags.length > 1) {
|
|
138
|
+
const head = explicitFlags.slice(0, -1).join(", ");
|
|
139
|
+
const tail = explicitFlags[explicitFlags.length - 1] ?? "";
|
|
140
|
+
process.stderr.write(`Error: Conflicting output flags: ${head} and ${tail}\n`);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
}
|
|
143
|
+
// Propagate `--json` / `--yaml` to the action command's `output`
|
|
144
|
+
// option. Sub-commands that don't carry an `--output` option simply
|
|
145
|
+
// ignore the propagation (Commander tolerates `setOptionValue` on
|
|
146
|
+
// an unknown key — the action handler never reads it).
|
|
147
|
+
const hasOutputOption = actionCommand.options.some((o) => o.long === "--output");
|
|
148
|
+
if (hasOutputOption) {
|
|
149
|
+
if (opts.json === true) {
|
|
150
|
+
actionCommand.setOptionValue("output", "json");
|
|
151
|
+
}
|
|
152
|
+
else if (opts.yaml === true) {
|
|
153
|
+
actionCommand.setOptionValue("output", "yaml");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// `auth init` is a BOOTSTRAP command — its own `--config <path>`
|
|
157
|
+
// flag is the OUTPUT destination, which by definition must not
|
|
158
|
+
// exist (or `--force` is required). Both Commander's parser AND
|
|
159
|
+
// the user's `program.opts()` see the same flag value, so the
|
|
160
|
+
// global existence check would fire incorrectly here. Skip the
|
|
161
|
+
// gate for `auth init` and let its own action handler govern the
|
|
162
|
+
// path semantics. Other sub-commands (status / signin / signout /
|
|
163
|
+
// profile / …) all read existing configs and benefit from the
|
|
164
|
+
// gate.
|
|
165
|
+
const isAuthInit = isAuthInitCommand(actionCommand);
|
|
166
|
+
if (configPath !== undefined && !isAuthInit) {
|
|
167
|
+
if (!existsSync(configPath)) {
|
|
168
|
+
// AC: validate at invocation time, don't wait for the first
|
|
169
|
+
// command that loads it. Surface as `ConfigError(NO_CREDS)`
|
|
170
|
+
// with the same uniform shape `loadConfigFile` produces, so
|
|
171
|
+
// script consumers see one code regardless of where the
|
|
172
|
+
// missing-file check fired.
|
|
173
|
+
const err = new ConfigError(`Config file not found: ${configPath}`, "NO_CREDS", configPath);
|
|
174
|
+
process.stderr.write(`Error (${err.code}): ${err.message}\n`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// For `auth init`: do NOT propagate the global `--config` value as
|
|
179
|
+
// the CLI-context's "input config path" — the init handler's own
|
|
180
|
+
// `options.config` carries the OUTPUT destination, semantically
|
|
181
|
+
// different from a file-must-exist input config. Setting the
|
|
182
|
+
// context to undefined keeps the read-side resolver unaware that
|
|
183
|
+
// the output path was supplied (it would be the wrong target
|
|
184
|
+
// anyway: init is creating, not reading).
|
|
185
|
+
setCliConfigPath(isAuthInit ? undefined : configPath);
|
|
186
|
+
// Capture the global `--dry-run` flag (issue #52). Commander's
|
|
187
|
+
// `Option.default(false)` means `opts.dryRun` is `false` when the
|
|
188
|
+
// flag is omitted, `true` when present — no need to coerce
|
|
189
|
+
// `undefined`. Mutation handlers read the captured value through
|
|
190
|
+
// `getCliDryRun()` and route through the core's `dryRun` option.
|
|
191
|
+
const dryRun = opts.dryRun === true;
|
|
192
|
+
setCliDryRun(dryRun);
|
|
193
|
+
// Capture the global `--verbose` / `--debug` flags (issue #139).
|
|
194
|
+
// `--debug` is a strict superset of `--verbose`; if both are
|
|
195
|
+
// passed, `--debug` wins silently (verbose's lines are a subset
|
|
196
|
+
// of debug's content). The level routes through `setDiagnosticLogger`
|
|
197
|
+
// to the core's transport layer, where every request/response is
|
|
198
|
+
// logged with secret redaction applied by the `redact` module
|
|
199
|
+
// BEFORE serialization. Output goes to stderr exclusively — the
|
|
200
|
+
// stdout data channel (json/yaml/pretty envelopes per #126/#128)
|
|
201
|
+
// is never touched.
|
|
202
|
+
let level = "none";
|
|
203
|
+
if (opts.debug === true) {
|
|
204
|
+
level = "debug";
|
|
205
|
+
}
|
|
206
|
+
else if (opts.verbose === true) {
|
|
207
|
+
level = "verbose";
|
|
208
|
+
}
|
|
209
|
+
setDiagnosticLogger(level);
|
|
210
|
+
// No-op note for non-mutation leaves: when `--dry-run` is set on a
|
|
211
|
+
// leaf that has NOT been tagged via `markMutation()` (today: every
|
|
212
|
+
// command except the basic-update leaf and its top-level alias),
|
|
213
|
+
// emit the AC-mandated stderr note and proceed normally. The
|
|
214
|
+
// exact text is locked by the AC for issue #52 — see
|
|
215
|
+
// `DRY_RUN_NO_OP_STDERR_NOTE` for the constant.
|
|
216
|
+
//
|
|
217
|
+
// The note is informational, not blocking — the action handler
|
|
218
|
+
// runs immediately after this hook returns. Read commands and
|
|
219
|
+
// unsupported mutations both fall into this branch today; future
|
|
220
|
+
// mutation-bearing PRs (timesheet submit per #13, additional
|
|
221
|
+
// profile sub-domain updates per #74-76) MUST call
|
|
222
|
+
// `markMutation()` on their leaves to opt out of the note.
|
|
223
|
+
if (dryRun && !isMutationCommand(actionCommand)) {
|
|
224
|
+
process.stderr.write(DRY_RUN_NO_OP_STDERR_NOTE);
|
|
225
|
+
}
|
|
226
|
+
})
|
|
227
|
+
// Second preAction hook — fires AFTER the sync setup above (Commander
|
|
228
|
+
// runs registered hooks in order). Async on purpose: the existing
|
|
229
|
+
// hook stays sync so it pays zero Promise-overhead on the hot path;
|
|
230
|
+
// the kill-switch fetch (#312) lives in its own hook so the async
|
|
231
|
+
// boundary is explicit.
|
|
232
|
+
//
|
|
233
|
+
// The hook awaits the remote known-broken manifest with a 3s cap.
|
|
234
|
+
// On match: emits a stderr warning (and exits non-zero when the
|
|
235
|
+
// entry's `action: "refuse"`). On any failure (network, timeout,
|
|
236
|
+
// 404, parse error, malformed manifest): silent — fail-silent
|
|
237
|
+
// contract per #312. Override via `TTCTL_DISABLE_KILL_SWITCH=1`.
|
|
238
|
+
//
|
|
239
|
+
// Skipped for `auth init` deliberately? — NO. The bootstrap command
|
|
240
|
+
// benefits from the warning too: a user creating a fresh config on
|
|
241
|
+
// a known-broken version should learn before they invest time in
|
|
242
|
+
// setup. The kill-switch fetch is fail-silent so it cannot block
|
|
243
|
+
// init's interactive prompts on a network failure.
|
|
244
|
+
.hook("preAction", async () => {
|
|
245
|
+
await runKillSwitchAtStartup();
|
|
246
|
+
});
|
|
247
|
+
registerAuthCommand(program);
|
|
248
|
+
program.addCommand(buildProfileCommand());
|
|
249
|
+
program.addCommand(buildApplicationsCommand());
|
|
250
|
+
program.addCommand(buildContractsCommand());
|
|
251
|
+
program.addCommand(buildEngagementsCommand());
|
|
252
|
+
program.addCommand(buildAvailabilityCommand());
|
|
253
|
+
program.addCommand(buildJobsCommand());
|
|
254
|
+
program.addCommand(buildPaymentsCommand());
|
|
255
|
+
program.addCommand(buildTimesheetCommand());
|
|
256
|
+
return program;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Detect whether the leaf command being executed is `auth init`. The
|
|
260
|
+
* Commander parent chain is `auth init` ← parent `auth` ← parent root —
|
|
261
|
+
* we walk the chain by name. Used by the global `preAction` hook to
|
|
262
|
+
* suppress the existence check on the global `--config` flag when the
|
|
263
|
+
* BOOTSTRAP command is the target. The `auth init` command's own
|
|
264
|
+
* `--config <path>` flag is the OUTPUT destination, NOT an input config;
|
|
265
|
+
* the global pre-flight gate would fire incorrectly in that case.
|
|
266
|
+
*/
|
|
267
|
+
function isAuthInitCommand(actionCommand) {
|
|
268
|
+
if (actionCommand.name() !== "init")
|
|
269
|
+
return false;
|
|
270
|
+
const parent = actionCommand.parent;
|
|
271
|
+
return parent !== null && parent.name() === "auth";
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,4EAA4E,CAAC;SACzF,OAAO,CAAC,OAAO,CAAC;SAChB,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,qEAAqE,CAAC,CAAC;SAC/G,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,2EAA2E,CAAC,CAAC;SAC5G,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,2EAA2E,CAAC,CAAC;SAC5G,SAAS,CACR,IAAI,MAAM,CAAC,WAAW,EAAE,yEAAyE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAClH;SACA,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACxG,SAAS,CACR,IAAI,MAAM,CAAC,SAAS,EAAE,6EAA6E,CAAC,CAAC,OAAO,CAC1G,KAAK,CACN,CACF;SACA,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;QAChD,kEAAkE;QAClE,iEAAiE;QACjE,mEAAmE;QACnE,+DAA+D;QAC/D,sDAAsD;QACtD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAOzB,CAAC;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAE/B,qEAAqE;QACrE,kEAAkE;QAClE,kDAAkD;QAClD,oEAAoE;QACpE,kEAAkE;QAClE,gEAAgE;QAChE,EAAE;QACF,kEAAkE;QAClE,2DAA2D;QAC3D,iEAAiE;QACjE,+DAA+D;QAC/D,uCAAuC;QACvC,MAAM,cAAc,GAAG,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC;QAC9E,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAuB,CAAC,MAAM,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iEAAiE;QACjE,oEAAoE;QACpE,kEAAkE;QAClE,uDAAuD;QACvD,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACjF,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,MAA6B,CAAC,CAAC;YACxE,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9B,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,MAA6B,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,+DAA+D;QAC/D,gEAAgE;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,iEAAiE;QACjE,kEAAkE;QAClE,8DAA8D;QAC9D,QAAQ;QACR,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,4DAA4D;gBAC5D,4DAA4D;gBAC5D,4DAA4D;gBAC5D,wDAAwD;gBACxD,4BAA4B;gBAC5B,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,0BAA0B,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,6DAA6D;QAC7D,iEAAiE;QACjE,6DAA6D;QAC7D,0CAA0C;QAC1C,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEtD,+DAA+D;QAC/D,kEAAkE;QAClE,2DAA2D;QAC3D,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QACpC,YAAY,CAAC,MAAM,CAAC,CAAC;QAErB,iEAAiE;QACjE,6DAA6D;QAC7D,gEAAgE;QAChE,sEAAsE;QACtE,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,iEAAiE;QACjE,oBAAoB;QACpB,IAAI,KAAK,GAAoB,MAAM,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACjC,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;QACD,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3B,mEAAmE;QACnE,mEAAmE;QACnE,iEAAiE;QACjE,6DAA6D;QAC7D,qDAAqD;QACrD,gDAAgD;QAChD,EAAE;QACF,+DAA+D;QAC/D,8DAA8D;QAC9D,iEAAiE;QACjE,6DAA6D;QAC7D,mDAAmD;QACnD,2DAA2D;QAC3D,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;QACF,sEAAsE;QACtE,kEAAkE;QAClE,oEAAoE;QACpE,kEAAkE;QAClE,wBAAwB;QACxB,EAAE;QACF,kEAAkE;QAClE,gEAAgE;QAChE,iEAAiE;QACjE,8DAA8D;QAC9D,iEAAiE;QACjE,EAAE;QACF,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,iEAAiE;QACjE,mDAAmD;SAClD,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE7B,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,aAA+B;IACxD,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;AACrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttctl/cli",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "TTCtl CLI commands and program definition
|
|
3
|
+
"version": "0.1.0-rc.1",
|
|
4
|
+
"description": "TTCtl CLI commands and program definition",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=22.19.0"
|
|
8
|
+
},
|
|
7
9
|
"license": "AGPL-3.0-only",
|
|
8
10
|
"author": "Alexey Pelykh (https://github.com/alexey-pelykh)",
|
|
9
11
|
"homepage": "https://github.com/alexey-pelykh/ttctl/tree/main/packages/cli",
|
|
@@ -11,20 +13,40 @@
|
|
|
11
13
|
"funding": "https://github.com/sponsors/alexey-pelykh",
|
|
12
14
|
"repository": {
|
|
13
15
|
"type": "git",
|
|
14
|
-
"url": "
|
|
16
|
+
"url": "https://github.com/alexey-pelykh/ttctl.git",
|
|
15
17
|
"directory": "packages/cli"
|
|
16
18
|
},
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
22
25
|
"files": [
|
|
23
|
-
"
|
|
24
|
-
"README.md",
|
|
25
|
-
"LICENSE"
|
|
26
|
+
"dist"
|
|
26
27
|
],
|
|
27
28
|
"publishConfig": {
|
|
28
29
|
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^25",
|
|
33
|
+
"eslint": "^10.3.0",
|
|
34
|
+
"typescript": "~6.0.3",
|
|
35
|
+
"vitest": "^4.1.1"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@clack/prompts": "^1.1.0",
|
|
39
|
+
"cli-table3": "^0.6.5",
|
|
40
|
+
"commander": "^14.0.3",
|
|
41
|
+
"yaml": "^2.8.4",
|
|
42
|
+
"@ttctl/core": "^0.1.0-rc.1"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
46
|
+
"build": "tsc",
|
|
47
|
+
"typecheck": "tsc --noEmit",
|
|
48
|
+
"test": "vitest run --passWithNoTests",
|
|
49
|
+
"lint": "eslint src/",
|
|
50
|
+
"dev": "tsc --watch"
|
|
29
51
|
}
|
|
30
|
-
}
|
|
52
|
+
}
|
package/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// @ttctl/cli placeholder — name reservation only.
|
|
2
|
-
// The real release is in development at https://github.com/alexey-pelykh/ttctl
|
|
3
|
-
console.log(
|
|
4
|
-
"@ttctl/cli: this is a placeholder reservation, not a functional release.\n" +
|
|
5
|
-
"The real library is in development. See:\n" +
|
|
6
|
-
" https://github.com/alexey-pelykh/ttctl",
|
|
7
|
-
);
|