feat(#3307): add boost-backend-module-kagenti provider module - #3573
Conversation
Create the Kagenti provider module as an independent createBackendModule with pluginId 'boost' and moduleId 'kagenti'. The module registers KagentiProvider via the boostProviderExtensionPoint, enabling Kagenti as an AI backend using the A2A protocol. Implementation includes: - KagentiProvider implementing AgenticProvider with A2A protocol integration for chat and streaming - KagentiProviderFactory reading connection config from boost.providers.kagenti and creating all caches - AgentCardCache using cacheService with 5m TTL (task 3.3) - KeycloakTokenCache with dynamic TTL per token (task 3.4) - SessionMap for A2A sessions with 24h TTL (task 3.7) - Kagenti-specific types (agent cards, A2A protocol, namespaces) defined in the module only (task 3b.1) - No cross-provider imports (task 2.5) All caches use Backstage coreServices.cache per Decision 3. No raw Map<> caches. 25 tests passing with coverage. Closes #3307
Missing ChangesetsThe following package(s) are changed by this PR but do not have a changeset:
See CONTRIBUTING.md for more information about how to add changesets. Changed Packages
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3573 +/- ##
==========================================
+ Coverage 50.76% 50.84% +0.08%
==========================================
Files 2289 2295 +6
Lines 87353 87600 +247
Branches 24481 24525 +44
==========================================
+ Hits 44341 44537 +196
- Misses 41206 41291 +85
+ Partials 1806 1772 -34
*This pull request uses carry forward flags. Click here to find out more. Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
🤖 Finished Review · ✅ Success · Started 10:20 PM UTC · Completed 10:35 PM UTC |
ReviewFindingsMedium
Low
Previous runReviewFindingsHigh
Medium
Low
Labels: PR adds a new AI provider module with A2A protocol integration and auth token caching Previous run (2)ReviewFindingsMedium
Low
Labels: PR adds a new feature module (Kagenti provider) in the boost workspace Previous run (3)ReviewReason: stale-head The review agent reviewed commit Previous run (4)ReviewFindingsMedium
Low
Labels: PR adds a new Kagenti AI provider module in the boost workspace. |
…handling - Handle 'canceled' task status in normalizeStreamEvent (yields error event) - Wrap chat() fetch in try/catch for consistent error handling with chatStream() - Handle pre-parsed objects from cache backends in AgentCardCache and SessionMap - Add tests for all three fixes (31 tests passing) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI Feedback 🧐(Feedback updated until commit c3ccd9d)A test triggered by this PR failed. Here is an AI-generated analysis of the failure:
|
|
🤖 Finished Review · ✅ Success · Started 11:03 PM UTC · Completed 11:15 PM UTC |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
/fs-review |
|
🤖 Finished Review · ✅ Success · Started 11:18 PM UTC · Completed 11:32 PM UTC |
The provider-packaging spec referenced catalogProcessingExtensionPoint entity provider composition in both module registration scenarios. That work is tracked in the agent-creation-discovery change (issue #3308), not in the provider module issues. Added cross-reference annotations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
🤖 Finished Review · ✅ Success · Started 12:00 AM UTC · Completed 12:31 AM UTC |
…idate TTL - chat() now throws on failed/canceled A2A task status instead of returning empty string - normalizeStreamEvent yields done after failed/canceled for symmetry with completed state (stream terminates immediately) - KeycloakTokenCache.set() skips cache for non-positive TTL values - Added tests: chat() failed/canceled, chatStream failed, TTL validation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
🤖 Finished Review · ❌ Failure · Started 12:50 AM UTC · Completed 1:07 AM UTC |
|
🤖 Finished Review · ✅ Success · Started 1:15 AM UTC · Completed 1:26 AM UTC |
|


Create the Kagenti provider module as an independent createBackendModule with pluginId 'boost' and moduleId 'kagenti'. The module registers KagentiProvider via the boostProviderExtensionPoint, enabling Kagenti as an AI backend using the A2A protocol.
Implementation includes:
protocol integration for chat and streaming
boost.providers.kagenti and creating all caches
namespaces) defined in the module only (task 3b.1)
All caches use Backstage coreServices.cache per Decision 3. No raw Map<> caches. 25 tests passing with coverage.
Closes #3307
Post-script verification
agent/3307-kagenti-provider-module)4bf51ccefa1eb56ee3201bc1bd094d29f66aff75..HEAD)