feat: land operator console on main - #127
Conversation
* feat: add operator console ops summary * fix: address operator console review feedback
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughA new ChangesOperator Console Feature
Sequence DiagramsequenceDiagram
participant Dashboard as Dashboard UI
participant Server as tt serve<br/>/v1/ops
participant Ledger as SDLC Run Ledger<br/>& Events
Dashboard->>Server: GET /v1/ops (periodic, 15s)
Server->>Ledger: Query active runs & recent events
Ledger-->>Server: Run states, stages, artifacts, blockers
Server->>Server: Compute next actions, gate states, review states
Server-->>Dashboard: ops { summary, runs[], recent_events[] }
Dashboard->>Dashboard: Render operator console<br/>(chips, run cards, event log)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Review rate limit: 0/1 reviews remaining, refill in 25 minutes and 19 seconds.Comment |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@dashboard/app.js`:
- Around line 546-558: The catch path in fetchOps currently wipes appState.ops
and makes renderOperatorConsole display "loading…" on failures; instead
introduce and use a distinct error state (e.g., appState.opsError) in fetchOps:
on successful fetch clear appState.opsError and set appState.ops from json.data,
and on any failure set appState.opsError to the Error/response status (do not
overwrite appState.ops to null unless you want to explicitly clear data), then
call renderOperatorConsole; update renderOperatorConsole to check
appState.opsError and render an explicit error/unauthorized message when present
(fall back to loading only when ops is undefined and opsError is not set).
- Around line 588-600: The UI drops workspace info from ops payloads; update the
run meta row and the events list to surface workspace by reading run.workspace
and evt.workspace from the ops object and inserting them as a distinct element
(e.g., el("span", "evt-workspace" / "run-workspace", workspace)) alongside
existing meta spans. Specifically, in the run rendering code that builds the run
meta row (the place that appends span elements like el("span", "run-...")), add
a span for run.workspace; and in the events loop that creates li and appends
el("span", "evt-type"), insert a workspace span for evt.workspace (use a CSS
class like "evt-workspace") before or after the agent span so multi-workspace
entries are unambiguous. Ensure you handle missing workspace values gracefully
(fallback to empty string or "workspace").
In `@src/cli/serve.rs`:
- Around line 1410-1474: The helpers ops_review_state and ops_gate_state are
using the full history of WorkflowStepIntentRecord
(state::WorkflowStepIntentRecord) instead of the latest attempt, so stale failed
attempts can keep the ops state blocked; fix by first normalizing the steps
slice to one record per logical step keyed by step_type (or other unique step
id) selecting the record with the highest attempt value (use the attempt field
on WorkflowStepIntentRecord), then compute failed/pending/complete from that
deduped/latest-record set in ops_review_state and ops_gate_state; update or add
a resumed-run regression test that inserts a retried step (older failed attempt
then newer successful attempt) to assert review/gate/next_action become
unblocked.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 91cf243a-fb66-4d3e-bc9a-1fe3fd37c0c5
📒 Files selected for processing (7)
README.mddashboard/app.jsdashboard/index.htmldashboard/style.cssdocs/OPERATOR_DEBUGGING.mdsrc/cli/serve.rssrc/health/mod.rs
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
Summary
Validation
Notes
PR #126 was merged into the stacked branch codex/agent-ops-activation after PR #125 landed on main, so this PR carries that merged branch tip back to main.
Summary by CodeRabbit
Release Notes
New Features
/v1/opsendpoint for retrieving operator console dataDocumentation