Conversation
Adds observer/ — an isolated monitor server that receives events from DashboardEmitter and Python hooks (port 4001) and broadcasts them to a single-file HTML dashboard via native RFC 6455 WebSocket. - observer/event-store.js: in-memory circular buffer (max 200 events), derives state from event stream (agents, phase, pipeline, metrics) - observer/server.js: HTTP + WebSocket server with zero new dependencies; RFC 6455 handshake via Node.js crypto; chokidar watches bob-status.json and broadcasts status_update frames; silent failure on all observer errors - observer/dashboard.html: single-file dark terminal dashboard; shows active agent, pipeline progress (6 stages), terminals, filterable event log; auto-reconnect with exponential backoff; no frameworks, no CDN, no build Zero modifications to existing AIOX code. Observer is purely additive. Usage: node observer/server.js → open http://localhost:4001 https://claude.ai/code/session_01LuDQ7x1o5tJ4G71LZvqGqQ
- event-store.js: DashboardEmitter._postEvent nests session_id/aiox_agent/
aiox_story_id inside data{}, not at top-level — read from both locations
for compatibility with Python hooks (which may send top-level fields)
- server.js: generate UUID for events received via POST (CLI emitter omits id)
- eslint.config.js: add observer/** to ignores — standalone runtime tool
https://claude.ai/code/session_01LuDQ7x1o5tJ4G71LZvqGqQ
`data` was declared at line ~102 but referenced at lines ~93-95,
causing a ReferenceError (temporal dead zone) on every POST /events.
Events were stored in the circular buffer but state derivation
(currentPhase, currentAgent, currentStory) never updated, and the
server returned 400 Bad Request instead of {"ok":true}.
Move `const data = event.data || {}` before the context envelope
extraction block so all references resolve correctly.
https://claude.ai/code/session_01LuDQ7x1o5tJ4G71LZvqGqQ
Auto-generated updates from IDS hook (entity-registry lastVerified timestamps + entityCount) and package-lock.json version sync to 5.0.3. https://claude.ai/code/session_01LuDQ7x1o5tJ4G71LZvqGqQ
|
@claude is attempting to deploy a commit to the Pedro Valério Lopez's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
WalkthroughThis PR introduces an Observer dashboard system to AIOX, adding a browser-based visualization for agent state and pipeline progress. The implementation includes a static HTML dashboard with WebSocket client, a backend event store with circular buffering and state management, and an HTTP/WebSocket server for real-time streaming. Configuration files are updated to exclude observer resources from linting and track updated build artifacts. Changes
Sequence DiagramsequenceDiagram
participant Browser as Browser Client
participant Server as WebSocket Server
participant Store as Event Store
participant File as bob-status.json
Browser->>Server: Establish WebSocket connection
Server->>Store: Get current state
Store-->>Server: Return state snapshot + recent events
Server-->>Browser: Send init message {state, recentEvents}
Browser->>Browser: Initialize UI with state
loop Event Streaming
alt HTTP POST /events
Browser->>Server: POST event JSON
Server->>Store: addEvent(event)
Store->>Store: Update metrics & derived state
else File System Change
File->>Server: bob-status.json updated
Server->>Store: setBobStatus(status)
Store->>Store: Update pipeline & agent info
end
Server->>Browser: Broadcast message {type, data, timestamp}
Browser->>Browser: Process message & update UI
end
Browser->>Server: Request /status
Server->>Store: getState()
Store-->>Server: Return current state
Server-->>Browser: JSON response
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment Tip You can make CodeRabbit's review stricter and more nitpicky using the `assertive` profile, if that's what you prefer.Change the |
There was a problem hiding this comment.
Welcome to aiox-core! Thanks for your first pull request.
What happens next?
- Automated checks will run on your PR
- A maintainer will review your changes
- Once approved, we'll merge your contribution!
PR Checklist:
- Tests pass (
npm test) - Linting passes (
npm run lint) - Commit messages follow Conventional Commits
Thanks for contributing!
Pull Request
📋 Description
A clear and concise description of what this PR does and why it's needed.
🎯 AIOX Story Reference
Story ID:
Story File:
Sprint:
Acceptance Criteria Addressed
🔗 Related Issue
Closes #(issue number)
📦 Type of Change
🎯 Scope
aiox-core/)squads/)tools/)docs/).github/)📝 Changes Made
🧪 Testing
Test Results
📸 Screenshots (if applicable)
Add screenshots to help explain your changes.
✅ Checklist
🔒 Security
🐰 CodeRabbit Review
📊 Quality Gates
📖 Documentation
👥 Reviewers
Tag relevant reviewers:
🚀 Deployment Notes
Any special deployment considerations or migration steps needed?
Note: For expansion-pack related PRs, Product Owner (PO) approval is required before merge.
Summary by CodeRabbit
New Features
Chores