Skip to content

feat: Agent Activity Dashboard (Issue #18)#199

Open
om952 wants to merge 10 commits into
OpenScanAI:masterfrom
om952:issue-18
Open

feat: Agent Activity Dashboard (Issue #18)#199
om952 wants to merge 10 commits into
OpenScanAI:masterfrom
om952:issue-18

Conversation

@om952

@om952 om952 commented Jun 24, 2026

Copy link
Copy Markdown

Summary

Implements the Agent Activity Dashboard for real-time monitoring of agent operations, security findings, reports, and notifications.

Changes

  • DB Schema: 4 new tables (agent_findings, agent_reports, notification_configs, agent_run_tags)
  • Backend Services: findings, reports, notifications, agent-runs, pdf-generator, webhook-sender, daily-digest
  • API Routes: 25+ REST endpoints with company access control
  • WebSocket Events: 6 new live event types for real-time updates
  • Frontend: 6-tab dashboard (Overview, Runs, Findings, Reports, Notifications, Bulk Ops)
  • PDF Generation: EOD and import summary reports via puppeteer-core
  • Notifications: Telegram and generic webhook support with daily digest
  • Bulk Operations: GitHub import, enable/disable/terminate, cross-repo comparison
  • Tests: 50 tests across 7 test files, all passing
  • Docs: Feature documentation in AGENT_ACTIVITY_DASHBOARD.md

Testing

  • All 50 tests pass
  • Typecheck clean across 30 packages
  • Manual testing checklist provided in AGENT_ACTIVITY_DASHBOARD.md

Typecheck

✅ pnpm -r typecheck passes (0 errors)

Test Results

✅ 50/50 tests passing

  • findings-service.test.ts (3)
  • findings-routes.test.ts (10)
  • reports-routes.test.ts (9)
  • notifications-service.test.ts (5)
  • notifications-routes.test.ts (9)
  • agent-runs-routes.test.ts (9)
  • webhook-sender.test.ts (5)

Closes #18

om952 added 10 commits June 18, 2026 16:09
- Auto-create GitHub issues from Paperclip issues
- Sync status changes bidirectionally (Paperclip ↔ GitHub)
- Mirror comments with user attribution [GitHub @username]
- Auto-create PRs when issues marked done (empty branch)
- Webhook signature verification (HMAC-SHA256)
- Timestamp-based conflict resolution (last-write-wins)
- Rate limit handling with exponential backoff
- State persistence for issue mappings across restarts

Closes OpenScanAI#15
- Add README.md with setup, config, and manual testing instructions
- Add comprehensive test suite (plugin.test.ts) covering:
  - Configuration validation
  - Event handling (issue.created, issue.updated, issue.comment.created)
  - Status mapping and reverse mapping
  - Conflict resolution (timestamp-based)
  - Webhook signature verification
  - State management
  - PR creation (branch naming)
  - Rate limiting
  - Error handling
  - Manifest capabilities
- Add vitest config and test scripts to package.json
- Add plugins/* to pnpm-workspace.yaml
- Fix @paperclipai/plugin-sdk dependency to use workspace:*
- Fix rate limiting test to use future timestamp
- All 30 tests passing
- Typecheck and build passing
- Add integration tests with mocked Octokit (15 tests)
  - GitHub issue CRUD operations
  - Branch and PR creation
  - Webhook signature verification
  - Sync job batch processing
  - Rate limit handling
  - State persistence
  - Error handling (401, 404, network)
- Add ARCHITECTURE.md with:
  - System overview diagram
  - Data flow diagrams (push/pull)
  - State storage schema
  - Conflict resolution logic
  - Security model
  - Rate limiting strategy
  - Component diagram
  - Troubleshooting guide
- All 45 tests passing
- Add 4 new DB tables: agent_findings, agent_reports, notification_configs, agent_run_tags
- Add backend services: findings, reports, notifications, agent-runs, pdf-generator, webhook-sender, daily-digest
- Add REST API routes: findings, reports, notifications, agent-runs
- Add 6 WebSocket live event types for real-time dashboard updates
- Add frontend dashboard with 6 tabs: Overview, Runs, Findings, Reports, Notifications, Bulk Ops
- Add PDF report generation via puppeteer-core (EOD, import summary)
- Add Telegram and generic webhook notification sender
- Add daily digest scheduler
- Add bulk operations: GitHub import, enable/disable/terminate, comparison
- Add 50 tests (7 test files) all passing
- Add feature documentation
- Rename API fields: totalRuns→total, succeededRuns→succeeded, failedRuns→failed
- Add running and stuck counts to stats response
- Update successRate calculation to use renamed fields
- Fix dashboard showing all zeros due to field name mismatch

Closes OpenScanAI#18
- Replace non-functional 'Generate Report' button with dialog
- Add form for title, type selection, and content
- Wire create mutation to reportsApi.create()
- Add toast notifications for success/error feedback
- Fix type mismatches with ReportType union
- Change generatedBy type from string to string | null in API and UI
- Update ReportsPanel to accept nullable generatedBy
- Fix PostgreSQL UUID validation error when creating reports
- Report creation now works with null generatedBy (system-generated reports)

Closes OpenScanAI#18
- Add generatedBy: null to report creation body
- Fix type error with explicit type annotation
- Ensure frontend sends null instead of omitting field
- Server defaults to null when generatedBy is not provided

Closes OpenScanAI#18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Agent Activity Dashboard (inspired by Xalgorix) — Real-time monitoring for agent execution

1 participant