You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(dashboard): show active state for workflow canvas nodes during execution (#225)
* docs(plans): add workflow canvas simplification design
Addresses #218 - workflow canvas nodes not showing active state.
Design decisions:
- Replace custom components with ai-elements library
- Event-driven pipeline (fixes real-time update bug)
- Expandable nodes showing iteration history
- Dynamic agent nodes instead of hardcoded 3-node pipeline
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore(dashboard): add ai-elements dependency
* feat(dashboard): add AgentIteration and AgentNodeData types
* feat(dashboard): add buildPipelineFromEvents for real-time pipeline updates
* feat(dashboard): add AgentNode component with status-based styling
Add a new React Flow node component for displaying agent stages in the
workflow canvas. The component shows status-based styling (pending,
active, completed, blocked), iteration badges for multiple runs, and
expandable iteration history.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(dashboard): merge real-time events for instant pipeline updates
- Add eventDrivenPipelineToCanvas converter to bridge event-driven pipeline
builder with WorkflowCanvas component
- WorkflowDetailPage now merges loader events with real-time WebSocket events
using Map-based deduplication and sequence-based sorting
- Pipeline visualization now updates in real-time as events arrive
- ActivityLog receives merged events for consistent state
- Add comprehensive tests for event merging, deduplication, and sorting
Fixes#218 - nodes now show active state during execution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(dashboard): simplify WorkflowCanvas with event-driven pipeline
- Rewrite WorkflowCanvas to accept EventDrivenPipeline with Node<AgentNodeData>
- Remove isLoading prop and loading/empty states (simplified API)
- Update layout utility to use generic Node<T> type for flexibility
- Update WorkflowsPage to use buildPipelineFromEvents for real-time updates
- Update tests to match new event-driven pipeline format
Part of #218 - workflow canvas active state fixes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(dashboard): update tests for event-driven pipeline types
- useWorkflows.test.tsx: Use system_info instead of stage_started for
non-status event test, since stage_started is now a status event that
triggers revalidation
- layout.test.ts: Fix test to expect 'test' node type (matching the mock)
instead of incorrectly expecting 'workflow' type
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(dashboard): resolve TypeScript strict type errors for XyFlow integration
- Add index signature to AgentNodeData to satisfy XyFlow Node<T> constraint
- Fix AgentNode component to use proper NodeProps<AgentNodeType> typing
- Replace removed ./flow export with AgentNode export in components/index.ts
- Add null checks for array access in pipeline.ts
- Fix test files with proper non-null assertions and valid event types
- Update WorkflowDetailPage to use EventDrivenPipeline directly
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(orchestrator): emit STAGE_STARTED events from nodes on execution
Nodes now emit STAGE_STARTED events when they actually begin execution,
rather than relying on the streaming consumer to infer stage transitions.
This provides accurate real-time pipeline visualization in the dashboard.
Backend changes:
- Add StageEventEmitter type for callback-based stage event emission
- All nodes (architect, developer, reviewer, evaluator, plan_validator)
emit STAGE_STARTED at the start of their execution
- human_approval_node event emitted when interrupt is detected
- Remove redundant STAGE_STARTED emission from stream chunk handler
Frontend changes:
- WorkflowCanvas: Use controlled state (props) instead of useNodesState/
useEdgesState since canvas is read-only
- AgentNode: Wrap with memo() to prevent unnecessary re-renders
- WorkflowDetailPage: Use targeted store selector to minimize re-renders
Closes#218
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor(dashboard): enhance workflow canvas with ai-elements integration
Add new dependencies for improved UI components including ai-elements
canvas, shiki for syntax highlighting, streamdown for markdown streaming,
and various radix-ui primitives.
Update AgentNode and WorkflowCanvas components with enhanced styling and
type safety for XyFlow integration.
Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(dashboard): preserve completed workflow display and fix canvas timing
- Add `agent="human_approval"` to approval-related events for consistent
canvas node rendering and styling
- Defer fitView to next animation frame to ensure React Flow has rendered
nodes before calculating bounds
- Include most recently completed workflow in active list so canvas
doesn't immediately clear when workflow finishes
- Add VALIDATOR and EVALUATOR agent styles, rename PLAN_VALIDATOR
- Update mock data to use correct human_approval agent
Fixes#218
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: add active workflow screenshot to README
* refactor(dashboard): polish activity log and workflow canvas UX
- Simplify ActivityLog grid layout: reduce column widths and padding
- Remove milliseconds from timestamp display (HH:MM:SS vs HH:MM:SS.mmm)
- Remove brackets from agent name display (cleaner appearance)
- Fix WorkflowCanvas fitView timing: use useNodesInitialized hook instead
of requestAnimationFrame for more reliable behavior
- Only call fitView when node count increases (not on initial render)
- Show status text for all node states in AgentNode (pending/completed/blocked)
- Add documentation comment to Canvas component
- Delete completed plan file
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* test(orchestrator): add test for emitter extraction from config
Adds coverage for the happy path where stream_emitter and
stage_event_emitter are provided in the RunnableConfig.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
[Amelia](https://en.wikipedia.org/wiki/Amelia_Earhart) is a local agentic coding system that orchestrates software development through Architect, Developer, and Reviewer agents. They argue about your code so you don't have to.
6
8
7
9
See the [**Roadmap**](https://existential-birds.github.io/amelia/reference/roadmap) for where we're headed.
0 commit comments