mirror of
https://github.com/block/buzz.git
synced 2026-11-01 06:51:17 +00:00
Backend half of removing personas from the UI. User-created agents no longer have a backing persona record; persona records are quarantined to team packs, which genuinely need them for directory install/sync and writeback. - types.rs, team_events.rs: add agent_pubkeys to TeamRecord, the create/update team inputs, and the kind:30176 payload. The field is additive — events published by older clients parse with empty agent membership (round-trip and tolerance tests included) - commands/teams.rs: normalize and validate agent pubkeys on team create/update; team export resolves agent members into the interchange member shape alongside persona members; pack install/sync materialize pack personas as stopped agents so they appear in the grid immediately - commands/personas/mod.rs: inbound kind:30176 reconcile applies agent_pubkeys from remote events - managed_agents/flatten.rs (new): idempotent boot migration — materialize a stopped agent for every active persona without one, rewrite non-pack team persona members to agent pubkeys, pin persona config onto linked agents and clear persona_id, then deactivate the flattened non-pack personas (records stay on disk/relay for rollback). flatten_tests.rs covers materialization, team rewrite, pack quarantine, and re-run idempotency - managed_agents/personas.rs: stop seeding built-in personas as records; the same data is now a static AgentTemplate list, and merge_personas only demotes stale is_builtin flags - commands/agent_templates.rs (new): list_agent_templates and export_agent_to_json — agent-record export to the .persona.json interchange format (env vars excluded, matching persona export) - commands/agents.rs: create_managed_agent accepts an explicit provider so templates and duplicates can pin the LLM provider at create time - lib.rs: run the flatten migration post-identity, before event sync, so rewritten teams/personas are what get reconciled and published; register the new template commands - team_repair.rs, personas/writeback.rs, inbound_tests.rs, personas/tests.rs: fixtures and merge-semantics tests updated for the new fields and the removal of built-in seeding; the shared test UUID constant avoids a digit run the secret scanner reads as a card number Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>