Frontend
packages/web/ — React web UI for managing initiatives, agents, and content.
Tech Stack
| Technology |
Purpose |
| React 19 |
UI framework |
| TanStack Router |
File-based routing |
| tRPC React Query |
Type-safe API client with caching |
| Tailwind CSS |
Utility-first styling |
| shadcn/ui |
Component library (button, card, dialog, dropdown, input, label, textarea, badge, sonner) |
| Tiptap |
Rich text editor (ProseMirror-based) |
| Lucide |
Icon library |
Path Alias
@/* maps to ./src/* (configured in tsconfig.app.json).
Routes
| Route |
Component |
Purpose |
/ |
routes/index.tsx |
Dashboard / initiative list |
/initiatives/$id |
routes/initiatives/$initiativeId.tsx |
Initiative detail (tabbed) |
/settings |
routes/settings/index.tsx |
Settings page |
Initiative Detail Tabs
The initiative detail page has three tabs managed via local state (not URL params):
- Content Tab — Page tree + Tiptap editor, proposal review
- Execution Tab — Pipeline visualization, phase management, task dispatch
- Review Tab — Pending proposals from agents
Component Inventory (73 components)
Core Components (src/components/)
| Component |
Purpose |
InitiativeHeader |
Initiative name, project badges, merge config |
InitiativeContent |
Content tab with page tree + editor |
StatusBadge |
Colored status indicator |
TaskRow |
Task list item with status, priority, category |
QuestionForm |
Agent question form with options |
InboxDetailPanel |
Agent message detail + response form |
ProjectPicker |
Checkbox list for project selection |
RegisterProjectDialog |
Dialog to register new git project |
Skeleton |
Loading placeholder |
Editor Components (src/components/editor/)
| Component |
Purpose |
TiptapEditor |
Core rich text editor wrapper |
PageEditor |
Page content editor with auto-save |
PhaseContentEditor |
Phase content editor |
ContentProposalReview |
Accept/dismiss proposals from agents |
SlashCommandMenu |
Slash command popup in editor |
Execution Components (src/components/execution/)
| Component |
Purpose |
ExecutionTab |
Main execution view container |
ExecutionContext |
React context for execution state |
PhaseDetailPanel |
Phase detail with tasks, dependencies, plan |
PhaseSidebar |
Phase list sidebar |
TaskDetailPanel |
Task detail with agent status, output |
Pipeline Components (src/components/pipeline/)
| Component |
Purpose |
PipelineVisualization |
DAG visualization of phase pipeline |
PipelineNode |
Individual phase node in pipeline |
PipelineEdge |
Dependency edge between nodes |
Review Components (src/components/review/)
| Component |
Purpose |
ReviewTab |
Review tab container with diff viewer and preview integration |
ReviewSidebar |
Review info, actions, file list, comment summary |
DiffViewer |
Unified diff renderer with inline comments |
PreviewPanel |
Docker preview status: building/running/failed with start/stop |
ProposalCard |
Individual proposal display |
UI Primitives (src/components/ui/)
shadcn/ui components: badge, button, card, dialog, dropdown-menu, input, label, sonner, textarea.
Custom Hooks (src/hooks/)
| Hook |
Purpose |
useRefineAgent |
Manages refine agent lifecycle for initiative |
useDetailAgent |
Manages detail agent for phase planning |
useAgentOutput |
Subscribes to live agent output stream |
tRPC Client
Configured in src/lib/trpc.ts. Uses @trpc/react-query with TanStack Query for caching and optimistic updates.
Key User Flows
Creating an Initiative
- Dashboard → "New Initiative" → enter name, select projects
createInitiative mutation → auto-creates root page
- Navigate to initiative detail
Managing Content (Pages)
- Content tab → page tree sidebar
- Click page → Tiptap editor loads content
- Edit → auto-saves via
updatePage mutation
- Use slash commands for formatting
Refining Content with AI
- Content tab → "Refine" button
spawnArchitectRefine mutation → agent analyzes pages
- Agent creates proposals (page edits, new phases, tasks)
- Proposals appear in review section → accept/dismiss each
Pipeline Visualization
- Execution tab → pipeline DAG shows phases as nodes
- Drag to add dependencies between phases
- Approve phases → queue for dispatch
- Tasks auto-queued when phase starts
Detailing Phases
- Select phase → "Detail" button
spawnArchitectDetail mutation → agent creates task proposals
- Accept proposals → tasks created under phase
- View tasks in phase detail panel
Shared Package
packages/shared/ exports:
sortByPriorityAndQueueTime() — priority-based task sorting
topologicalSort() / groupByPipelineColumn() — phase DAG layout
- Shared type re-exports from
packages/shared/src/types.ts