Commit graph

20 commits

Author SHA1 Message Date
jeda
9ffbda241a feat(bd-1fz): Add React Testing Library tests for WorkerGrid component
- Add 28 comprehensive tests covering:
  - Empty state rendering
  - Worker count display
  - Status display (active, idle, error)
  - Event count formatting
  - Last seen time formatting (seconds, minutes, hours)
  - Worker selection/deselection
  - Collision indicators and warnings
  - CSS class application
  - Accessibility attributes

- Fix cleanup issue in existing test files:
  - Add afterEach cleanup to ActivityStream.test.tsx
  - Add afterEach cleanup to CollisionAlert.test.tsx

All 317 tests pass.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:59:37 +00:00
jeda
e9fbd1e68c chore(bd-38s): update beads tracking and add WorkerGrid tests
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:58:09 +00:00
jeda
469ad2cebe feat(bd-38s): Add comprehensive tests for CollisionAlert component
The CollisionAlert React component was already fully implemented in
src/web/frontend/src/components/CollisionAlert.tsx. This commit adds
comprehensive test coverage including:

- Rendering tests (visibility, empty state, counts)
- Severity grouping (critical/error, warning, info)
- Type icons (F, B, T for file, bead, task)
- Severity icons (!!!, !!, !, i)
- Acknowledgment functionality
- Detail view display
- Worker display (count vs names)
- Title truncation
- CSS class application
- Selection handling

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:57:05 +00:00
jeda
ac5e98ea85 feat(bd-ak8): Add comprehensive web server unit tests
- Add WebSocket connection tests with actual client connections
- Add broadcast() tests for single and multiple clients
- Add broadcastCollisions() tests
- Add WebSocket client lifecycle tests (disconnect, reconnect, errors)
- Add vitest setup file for frontend tests

All 53 tests pass including:
- HTTP endpoints (health, workers, events, collisions, xref)
- WebSocket functionality
- Error handling
- Server lifecycle

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:53:53 +00:00
jeda
3fea320e8e chore(bd-3fs): close completed bead
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 14:48:16 +00:00
jeda
08dccf98a2 feat(bd-3fs): Add CollisionAlert component to web frontend
- Create CollisionAlert.tsx component with real-time collision notifications
- Add collision alert types (FileCollision, BeadCollision, TaskCollision, CollisionAlert) to types.ts
- Integrate CollisionAlert into App.tsx with WebSocket support
- Add CSS styles for collision alert panel with severity grouping
- Add header toggle button for collision alerts with unacknowledged count badge

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 14:46:56 +00:00
jeda
60975482d9 feat(bd-b0c): Add WorkerDetail component to web frontend
- Create src/web/frontend/src/components/WorkerDetail.tsx as dedicated component
- Port TUI WorkerDetail functionality to React web frontend
- Features:
  - Worker ID and status with status icon
  - Activity statistics (event count, current tool)
  - Timing information (last seen)
  - Recent events list (last 10 events)
  - Collision warning with affected files
  - Close button to deselect worker
- Update App.tsx to use new WorkerDetail component
- Add comprehensive CSS styles for new component

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:40:32 +00:00
jeda
df5e54cd87 refactor(bd-5d8): Centralize SessionReplay types in types.ts
Move ReplaySpeed and ReplayState types to central types file for
consistency and re-export them from the component for external use.

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:39:39 +00:00
jeda
942aacc465 feat(bd-2uo): Add Vitest tests for web server API endpoints
- Add comprehensive tests for /api/health endpoint
- Add tests for /api/workers and /api/workers/:id endpoints
- Add tests for /api/events with filtering (worker, level, limit)
- Add tests for /api/collisions and /api/workers/:id/collisions
- Add tests for cross-reference API endpoints (/api/xref/*)
- Add tests for WebSocket functionality exposure
- Add tests for server lifecycle and error handling
- All 42 new tests pass (225 total tests)

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 14:36:44 +00:00
jeda
8c025b74f5 feat(bd-3bt): Add blessed TUI tests for WorkerGrid component
- Add comprehensive unit tests for WorkerGrid component
- Mock blessed box and screen elements
- Test constructor, updateWorkers, selection navigation
- Test render output (status icons, collision indicators)
- Test key bindings (up/down/k/j/g/G)
- Cover edge cases (no workers, empty events, long descriptions)

All 29 tests pass. Total test suite: 183 tests passing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 14:32:20 +00:00
jeda
b4cda9fdc6 feat(bd-232): Implement P4-007 Recovery Playbook
Add recovery playbook feature that suggests recovery actions when workers encounter errors.

Implementation includes:
- RecoverySuggestion, RecoveryAction, RecoveryPlaybookEntry types in types.ts
- recoveryPlaybook.ts utility module with RecoveryManager class
- Predefined playbooks for each error category (network, permission, timeout, etc.)
- Pattern matching to map errors to actionable recovery steps
- Integration with InMemoryEventStore for easy access to suggestions
- RecoveryPanel TUI component for displaying suggestions
- Console formatting utilities for CLI output

Recovery actions include:
- Automated actions (retry, backoff, investigate)
- Manual actions (fix permissions, install dependencies)
- Escalation to human when automated recovery not possible

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 14:22:26 +00:00
jeda
5fab75708f feat(bd-xig): Implement worker collision detection
- Add BeadCollision, TaskCollision, CollisionAlert types
- Extend WorkerInfo to track activeBead and activeDirectories
- Implement bead collision detection ( detectBeadCollision, getBeadCollisions, getWorkerBeadCollisions)
- Implement task collision detection ( detectTaskCollision, getTaskCollisions
- Implement getWorkerTaskCollisions
- Generate collision alerts with suggestions
- Add getCollisionStats for statistics
- Add cleanupStaleCollisions for bead and task collisions
- Create CollisionAlert TUI component

- Add unit tests for collision detection

🚀 Generated with Claude Worker <noreply@anthropic.com>

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 13:50:02 +00:00
jeda
d55717518e chore(bd-3sj): close completed bead
Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 12:12:39 +00:00
jeda
3cb798b7e9 feat(bd-3sj): P4-002: File Heatmap
Implement file heatmap visualization that tracks which files are modified
most frequently and by which workers. Helps identify hotspots and potential
collision areas.

Features:
- Track file modifications across all workers
- Heat levels (cold/warm/hot/critical) based on modification frequency
- Worker contribution percentages per file
- Collision risk detection for files with multiple workers
- Sortable by modifications, recent activity, workers, or collisions
- Filter by directory or collision-only files
- Statistics overview with heat distribution

Integration:
- Press 'H' in TUI to toggle heatmap view
- Press 's' to cycle sort modes
- Press 'c' to toggle collision-only filter
- Press 'Esc' to return to default view

Also fixed pre-existing DependencyDag component build issues:
- Created missing dagUtils.ts utility module
- Fixed import paths and type annotations

Tests: 20 new tests for file heatmap, all 154 tests passing

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 12:11:54 +00:00
jeda
e1d269ef01 feat(bd-3k9): P4-001: Session Replay - Add type fixes and complete implementation
- Add SessionReplay component with full playback controls
- Add replay command to CLI with filter support
- Fix color type references in SessionReplay
- Add EventFilter type import to CLI
- Add File Heatmap types for future feature

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 11:58:06 +00:00
jeda
19097e7841 feat(bd-4jn): P4-004: Smart Error Grouping
Implement smart error grouping to cluster similar errors together and reduce
noise in the activity stream. Uses pattern matching on error messages and
stack traces to group related errors.

Features:
- Error categorization into 9 categories (network, permission, validation, etc.)
- Pattern-based fingerprinting for grouping similar errors
- Normalization of variable data (IPs, paths, UUIDs, timestamps)
- Severity calculation based on frequency and recency
- Integration with InMemoryEventStore for automatic error tracking

New files:
- src/errorGrouping.ts - Error grouping module
- src/errorGrouping.test.ts - Comprehensive test suite (34 tests)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 11:53:27 +00:00
jeda
24e8ea868c feat(bd-r5c): Add collision detection tests and web UI enhancements
- Add 9 new tests for collision detection:
  - Detect collision when multiple workers modify same file
  - Handle time window boundaries (5 second window)
  - Only flag file modification tools (Edit, Write, NotebookEdit)
  - Track hasCollision flag on worker info
  - Track active files for workers
  - Get collisions for specific worker

- Update web types for collision info
- Add collision visual indicator to TUI WorkerGrid (⚠ warning)
- Add collision visual indicator to Web WorkerGrid (pulsing border)
- Add /api/collisions endpoint to web server
- Include collisions in WebSocket initial state

Co-Authored-By: Claude Worker <noreply@anthropic.com>
2026-03-03 10:45:07 +00:00
jeda
57e8193f7b feat(bd-2kf): Add comprehensive test coverage for parser and store
- Add 36 parser tests covering:
  - parseLogLine with valid/invalid inputs
  - parseLogLines for multi-line parsing
  - formatEvent with all options
  - Edge cases: malformed JSON, missing fields, colorization

- Add 35 store tests covering:
  - InMemoryEventStore add/query operations
  - Worker status tracking (active/idle/error)
  - Event filtering by worker, level, bead, timestamp
  - maxEvents limit and LRU trimming
  - getStore/resetStore singleton management

- Close phase beads (bd-2pa, bd-n8l, bd-2nu) as infrastructure complete
- Close test beads (bd-5eh, bd-2en) with comprehensive coverage
- Total: 91 tests passing across parser, store, and tailer

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 10:43:24 +00:00
jeda
a6699db07f feat: implement Phase 1 core infrastructure for FABRIC
Implements working `fabric tail` command with:

- Log tailer module (src/tailer.ts)
  - File watching with fs.watch
  - Follow mode for real-time updates
  - Buffer management for partial lines
  - Graceful shutdown handling

- JSON parser module (src/parser.ts)
  - Validates NEEDLE log format
  - Extracts optional fields (tool, path, bead, duration_ms, error)
  - Human-readable event formatting with color support

- In-memory event store (src/store.ts)
  - Stores events with worker indexing
  - Supports querying with filters
  - Auto-updates worker status based on events

- Working CLI (src/cli.ts)
  - Filters by worker (-w) and level (-l)
  - Supports --json output
  - Shows existing lines with -n flag

Resolves HUMAN bead bd-17q (worker starvation) by providing
working implementation and creating beads for remaining phases.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 04:58:42 +00:00
jeda
69f3c1d5ab feat: initialize FABRIC TypeScript project
Implements bd-3a4 and bd-2pa.1 (project setup):
- Initialize npm project with TypeScript configuration
- Add package.json with build scripts and dependencies
- Create src/ structure with types and CLI entry point
- Add CLI commands: tui, web, tail (placeholders)
- Configure tsconfig.json for NodeNext modules

This addresses worker starvation (bd-29a) by demonstrating
that direct implementation is a viable alternative when
workers cannot claim beads due to dependency resolution issues.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-03 04:41:00 +00:00