diff --git a/apps/presentation/dashboard/src/data/chat.ts b/apps/presentation/dashboard/src/data/chat.ts index 8b22447193..f6085995b6 100644 --- a/apps/presentation/dashboard/src/data/chat.ts +++ b/apps/presentation/dashboard/src/data/chat.ts @@ -622,7 +622,25 @@ export type ManagerRuntimeSessionReadback = { tool_classes: string[]; }; +export type CollaborationReadback = { + schema_version: "collaboration_request_readback_v0"; + request_id: string; + agent_id: string; + brief: { + purpose: string; + context: string; + constraints: string[]; + inputs: { ref: string; description: string; sha256?: string }[]; + acceptance: string[]; + return_requirement: string; + }; + read_status: string; + decision: string; + returns: { phase: string; status: string }[]; +}; + export type ChatVisibleMessage = { + collaboration?: CollaborationReadback; origin?: string; attachments?: ChatImageAttachment[]; message_id: string; diff --git a/apps/presentation/dashboard/src/features/personal-workspace/channel-timeline.tsx b/apps/presentation/dashboard/src/features/personal-workspace/channel-timeline.tsx index 5c36dcfac8..c9bffe2a6e 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/channel-timeline.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/channel-timeline.tsx @@ -1,3 +1,4 @@ +import { CollaborationCard } from "./collaboration-card"; import { Bot, Sparkles } from "lucide-react"; import { AttentionRow } from "./cards/attention-row"; @@ -77,7 +78,8 @@ export function ChannelTimeline({ {item.message.attachments?.length ?
{item.message.text}
:+ {request.read_status === "supplied" ? c.supplied : request.read_status === "unavailable" ? c.unavailable : c.pending} + {c.decision}: {c[decision] ?? (request.decision === "unavailable" ? c.unavailable : c.unknown)} + {conclusion ? {conclusion.status === "delivered" ? c.delivered : c.result} : null} +
+{brief.context}
+ {brief.constraints.length ? <>{input.ref} — {input.description}{input.sha256 ? sha256:{input.sha256} : null}{brief.return_requirement}
+{message.text}
: