feat(canvas): include displayName/identityColor/avatar per agent in cloud push#1321
Merged
Merged
Conversation
…loud push (task-1777140469973-770cy4yma) Identity coverage seam: enrich each per-agent entry in pushCanvasStateToCloud with the agent's claimed identity (TEAM-ROLES.yaml displayName + avatar, agent_config.settings.identityColor + avatar). Cloud frontend already trusts these payload fields and falls back to AGENT_COLORS / agentDisplayName when absent — so unclaimed agents are unaffected. Single-function widen, no schema or cloud changes. task-1777140469973-770cy4yma Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
itskai-dev
force-pushed
the
claude/canvas-state-identity-fields
branch
from
May 3, 2026 14:40
d649e65 to
f0a854c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Identity coverage seam (audit-driven, kai+link greenlit). The node was projecting per-agent presence into
/api/hosts/:hostId/canvasPOST as{state, task}only — droppingdisplayName(TEAM-ROLES.yaml),identityColor(agent_config.settings.identityColor), andavatar(TEAM-ROLES oragent_config.settings.avatar) at the wire even though node already has them.Cloud frontend already trusts payload-supplied identity over hardcoded fallbacks (
apps/web/src/components/agents-panel/AgentsPanel.tsx:60,77,agent-detail/AgentDetailPanel.tsx:797,1087,app/presence/agent-field.tsx:219,app/presence/agent-detail-panel.tsx:50,presence/canvas/visuals/ghost-trails.tsx:97,…/thought-arcs.tsx:75); cloud GET passes payload through unchanged via...payloadspread (host-canvas-state-routes.ts:150). So this single-function widen lights up identity end-to-end without any cloud or schema change.Constraints honored per kai's lane lock:
pushCanvasStateToCloudinsrc/server.ts:13103)displayName,identityColor,avatarUnclaimed agents emit only
{state, task}exactly as before — cloud'sAGENT_COLORSandagentDisplayName()fallbacks remain authoritative for them.Test plan
npx tsc --noEmit)rn-34faba44-wlgkeq) to new image🤖 Generated with Claude Code