spatie/there-there-cli
Command-line client for There There. Authenticate with profiles per workspace, then browse, search, and manage tickets from your terminal—list and filter tickets, view details, reply/forward, add internal notes, and update status or assignee via API-backed commands.
ThereThereTicketCreated events).Acme-US and Acme-EU workspaces from one Laravel app). The X-Workspace-Id header ensures token scoping works correctly.composer global require, then call commands directly (e.g., there-there list-tickets) or shell out from Laravel (e.g., exec('there-there reply-to-ticket --ticket=$ticketId --field body="..."')).Process facade or Symfony Process to run CLI commands as background jobs (e.g., TicketProcessor::dispatch($ticketId)).json_decode(exec('there-there list-tickets --json'))).inline_images[].download_url).| Risk Area | Mitigation Strategy |
|---|---|
| API Deprecation | Monitor There There’s changelog and update CLI via composer global update. |
| Token Management | Store tokens in Laravel’s .env or Vault (not ~/.there-there/config.json). |
| Error Handling | Wrap CLI calls in Laravel’s try-catch and log failures to Sentry/Loggly. |
| Performance | Use Laravel queues for long-running CLI tasks (e.g., bulk ticket updates). |
| Profile Conflicts | Standardize profile naming (e.g., env(APP_ENV)-there-there) in Laravel. |
| Attachment Limits | Implement chunked downloads for large attachments (e.g., using Laravel HTTP client). |
| Real-Time Needs | For webhooks, pair CLI with Laravel Echo/Pusher for event-driven updates. |
.env, HashiCorp Vault, or AWS Secrets Manager)?schedule())?logs table or a custom cli_actions table)?there-there configs per environment)?\Symfony\Component\Process\Process) to execute CLI commands from Laravel code.$process = new Process(['there-there', 'list-tickets', '--json']);
$process->run();
$tickets = json_decode($process->getOutput(), true);
php artisan there-there:process-tickets).ThereThereTicketProcessorJob) for async execution.ThereThereTicketUpdated::dispatch($ticket)).Process::fromShellCommandline()).| Phase | Action | Tools/Dependencies |
|---|---|---|
| Pilot | Replace 1–2 manual workflows (e.g., ticket triage) with CLI scripts. | Composer, Laravel Artisan, exec() |
| Core Integration | Build Laravel wrappers for critical CLI commands (e.g., ThereThereService facade). |
Symfony Process, Laravel Facades |
| Automation | Migrate repetitive tasks (e.g., status updates) to queued jobs. | Laravel Queues, Horizon |
| Event-Driven | Add webhook listeners (if available) alongside CLI polling. | Laravel Echo, Pusher |
| Agent Skill | Train devs to use agent skill for generating Laravel scripts. | skills.sh, PHPStorm |
| Monitoring | Instrument CLI calls with Laravel logging and Sentry error tracking. | Monolog, Sentry |
| Scaling | Optimize for parallel processing (e.g., bulk ticket updates). | Laravel Parallel Testing, Rate Limiting |
curl -sSL https://skills.sh/install | sh).there-there update-ticket-status) with a Laravel script.ThereThereService).ThereThereTicketCreated).composer global update.composer global update spatie/there-there-cli.composer.json for CI/CD reproducibility.config/cache to store CLI configs (e.g., profiles) if needed.How can I help you explore Laravel packages today?