Skip to content

feat(agent): sync external agent profiles into spritz#175

Merged
onutc merged 8 commits intomainfrom
codex-agent-presentation-doc
Mar 30, 2026
Merged

feat(agent): sync external agent profiles into spritz#175
onutc merged 8 commits intomainfrom
codex-agent-presentation-doc

Conversation

@onutc
Copy link
Copy Markdown
Member

@onutc onutc commented Mar 30, 2026

TL;DR

This adds Spritz-owned agent profile sync so the UI can render an external agent's name and image without calling provider APIs directly. Spritz now stores the synced profile on the instance status and prefers it over ACP runtime identity when rendering.

Summary

  • add spec.agentRef, spec.profileOverrides, and status.profile to the Spritz API model and CRDs
  • add the agent.profile.sync extension hook and run it during create to persist synced profile data
  • update the Spritz UI to render profile names and images in lists, sidebars, and chat headers
  • keep ACP agent metadata as runtime identity instead of UI branding

Review focus

  • control-plane separation between agentRef, local overrides, and persisted status.profile
  • non-fatal profile sync behavior during create and fallback behavior in the UI
  • CRD/schema changes and UI precedence order

Test plan

  • go test ./... in api
  • go test ./... in operator
  • pnpm typecheck in ui
  • pnpm test -- src/lib/spritz-profile.test.ts src/components/acp/sidebar.test.tsx src/pages/chat.test.tsx in ui

@onutc onutc changed the title docs: add agent presentation resolution architecture docs: add agent profile api design Mar 30, 2026
@onutc onutc changed the title docs: add agent profile api design feat(agent): sync external agent profiles into spritz Mar 30, 2026
@onutc onutc merged commit 05b67e4 into main Mar 30, 2026
7 checks passed
@onutc onutc deleted the codex-agent-presentation-doc branch March 30, 2026 16:20
@gitrank-connector
Copy link
Copy Markdown

👍 GitRank PR Analysis

Score: 20 points

Metric Value
Component Other (1× multiplier)
Severity P2 - Medium (20 base pts)
Final Score 20 × 1 = 20

Eligibility Checks

Check Status
Issue/Bug Fix
Fix Implementation
PR Documented
Tests
Lines Within Limit

Impact Summary

This PR adds a complete agent profile sync system allowing Spritz instances to display deployment-owned agent metadata (name, image) in the UI without direct provider API calls. It introduces new API types (SpritzAgentRef, SpritzAgentProfile, SpritzAgentProfileStatus), an extension hook (agent.profile.sync), and updates the UI to render profiles with proper precedence rules. The implementation maintains backward compatibility through fallback behavior and includes comprehensive tests across API, operator, and UI layers.

Analysis Details

Component Classification: This PR introduces a new feature (agent profile sync) rather than fixing a specific bug or addressing a categorized component. It spans API, operator, and UI layers with cross-cutting concerns, making it an architectural enhancement rather than a component-specific fix.

Severity Justification: This is a P2 (Medium) contribution because it adds significant new functionality (agent profile syncing, UI rendering, extension framework integration) that enhances the system's capabilities but does not address critical service failures or security risks. The feature is well-designed with fallback behavior and non-fatal sync semantics.

Eligibility Notes: Tests are required and included: the PR adds 183 lines of agent_profile_test.go, updates create_admission_test.go with 72 new lines, adds spritz_types_test.go updates, and includes UI tests (spritz-profile.test.ts, sidebar.test.tsx, chat.test.tsx). The PR is well-documented with a 415-line architecture document explaining design principles, precedence rules, and implementation phases. This is a new feature requiring tests for business logic, API changes, and UI behavior.


Analyzed by GitRank 🤖

@onutc
Copy link
Copy Markdown
Member Author

onutc commented Mar 30, 2026

Final status:

  • Merged to main via squash
  • Post-merge go-tests, ui-tests, helm-tests, and docs-check on main all completed successfully

Local validation before merge:

  • go test ./... in api
  • go test ./... in operator
  • pnpm typecheck in ui
  • pnpm test -- src/lib/spritz-profile.test.ts src/components/acp/sidebar.test.tsx src/pages/chat.test.tsx in ui
  • tcx pr can-merge --pr 175

Local Codex review found and I fixed the profile status conflict/staleness issues before merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant