agent/php/tests
Snider 48b2c2fe58 feat(agent/php): artisan agentic:sync-profiles + agentic:dispatch-queue (#829)
agentic:sync-profiles iterates AgentProfile rows, calls GET {gateway}/v1/models
via Http::withToken, infers capability_tags from exposed model ids
(claude-opus → handoff/analysis/core; gpt-5.4-mini → dispatch/cheap;
embedding-* → embedding), leaves last_dispatched_at untouched.

agentic:dispatch-queue uses extended MantisClient->listOpen() (new
small wrapper), skips assigned tickets + 5min in-flight markers, runs
ProfileSelector::pickFor, adds suppression note via MantisClient->note,
queues DispatchMantisTicketJob up to --limit (default 3). Both
commands emit progress via Log.

Pest Feature tests use Http::fake + Queue::fake. Tests register the
new commands directly (Boot.php registration is a deferred follow-up
per #837 lane note).

Codex note: php -l clean; pest blocked by unrelated repo migration
infra (dedicated brain connection + SQLite-incompatible agent_sessions
rename).

Closes tasks.lthn.sh/view.php?id=829

Co-authored-by: Codex <noreply@openai.com>
2026-04-26 01:08:42 +01:00
..
Feature feat(agent/php): artisan agentic:sync-profiles + agentic:dispatch-queue (#829) 2026-04-26 01:08:42 +01:00
Fixtures revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Unit feat(agent/php): ProfileSelector + ShapeClassifier services per Phase 3 (#826) 2026-04-26 00:48:37 +01:00
UseCase revert fcb9c189e5 2026-04-23 12:32:57 +01:00
views revert fcb9c189e5 2026-04-23 12:32:57 +01:00
.DS_Store revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Pest.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
TestCase.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00