Cache the list of permitted tool names in `AgentToolRegistry::forApiKey()`
using a 1-hour TTL to avoid O(n) filtering on every request (PERF-002).
- Add `Cache::remember()` in `forApiKey()` storing tool names keyed by API
key ID (`agent_tool_registry:api_key:{id}`)
- Add `flushCacheForApiKey(int|string $id)` for explicit invalidation
- Add `CACHE_TTL` constant (3600 s) for easy tuning
- Invalidate cache in `AgentApiKeyService::updatePermissions()` and `revoke()`
so permission changes take effect immediately
- Add `tests/Unit/AgentToolRegistryTest.php` covering cache hit/miss,
per-key isolation, scope filtering, TTL constant, and flush behaviour
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| Concerns | ||
| AgentApiKeyService.php | ||
| AgentDetection.php | ||
| AgenticManager.php | ||
| AgenticProviderInterface.php | ||
| AgenticResponse.php | ||
| AgentSessionService.php | ||
| AgentToolRegistry.php | ||
| ClaudeService.php | ||
| ContentService.php | ||
| GeminiService.php | ||
| IpRestrictionService.php | ||
| OpenAIService.php | ||
| PlanTemplateService.php | ||