Internal Documentation internal
TalkIDE internal documentation

What this context does

Records and streams what’s happening inside a project right now: which agent is doing what, which tools they call, when tasks start and finish. The user’s workspace screen gives a live “shoulder view” of Mara’s team without showing raw code or tool output.

Scope boundary

  • Owns: Activity entity, ToolCategory enum, server-side dedup logic, per-project SSE stream.
  • Does not own: the cross-tenant Studio aggregator (UC-06), the under-the-hood Project Explorer (UC-07), Anthropic spend (UC-08001).

Main entities

ACTIVITYid, projectId, conversationId, agentRole, eventType (TASK_STARTED/TOOL_USE/AGENT_MESSAGE/TASK_COMPLETED), parentActivityId (self-ref to the owning TASK_STARTED), toolName, toolCategory (READING/EDITING/ EXECUTING/DELEGATING/BROWSING/OTHER), toolSummary, payloadJson, createdAt.

Use cases

UCWhat it does
UC-05001Activity Feed — REST snapshot + SSE stream, server-side dedup
UC-05002Team Status — “who is on the bench / who is working right now”

Component diagram

{/* Image missing: UC-05 Workspace Activity — Component View (../../assets/diagrams/uc05Components.svg) */}

Dependencies on other contexts

  • UC-04 Conversation — Activities are emitted as side effects of a Mara turn.
  • UC-06 Studio — Studio’s per-tenant aggregator reads from the same activities table and uses the same dedup machinery.

Cross-cutting

  • Server-side dedup (ADR-009) — consecutive same-(toolCategory, agentRole, parentActivityId) rows are coalesced into one. FE is a pure renderer.
  • SSE convention (ADR-008) — connected / activity / heartbeat events; fetch-based parser on FE because native EventSource doesn’t support custom auth headers.

Was this page helpful?

Thanks for the feedback.