From 7493de6952f988ff11c093c532962c851f1baea8 Mon Sep 17 00:00:00 2001 From: qpismont Date: Tue, 13 Oct 2026 16:14:48 +0000 Subject: [PATCH] Add live dashboard with SSE job events Expose /jobs, /dedup, and /events routes backed by a new EventBus that broadcasts job lifecycle and per-job progress over SSE. Serve a static dashboard from front/ that lists pending and in-progress jobs, streams agent activity, and shows completed reviews. Also add migrate-apply/migrate-generate scripts that load .env, update the Containerfile to ship the front assets and use the apply script, and refresh the roadmap. --- .devcontainer/devcontainer.json | 3 + Cargo.lock | 33 ++ Cargo.toml | 4 +- Containerfile | 7 +- README.md | 8 +- ROADMAP.md | 24 +- crates/steep-server/Cargo.toml | 1 + crates/steep-server/src/api.rs | 117 +++++- crates/steep-server/src/bot.rs | 26 +- crates/steep-server/src/bot_actions/review.rs | 15 +- crates/steep-server/src/dedup.rs | 7 + crates/steep-server/src/errors.rs | 17 + crates/steep-server/src/event_bus.rs | 335 ++++++++++++++++ crates/steep-server/src/job_queue.rs | 21 +- crates/steep-server/src/main.rs | 11 +- crates/steep-server/src/sandbox/agent.rs | 17 +- crates/steep-server/src/sandbox/instance.rs | 3 + crates/steep-server/src/schemas/job.rs | 6 +- crates/steep-server/src/schemas/review.rs | 3 +- crates/steep-server/src/state.rs | 7 +- front/css/dashboard.css | 366 ++++++++++++++++++ front/favicon.png | Bin 0 -> 210651 bytes front/index.html | 46 +++ front/js/api.js | 78 ++++ front/js/dashboard.js | 212 ++++++++++ front/js/job-card.js | 61 +++ front/js/job-detail.js | 150 +++++++ front/js/job-list.js | 58 +++ front/js/theme-toggle.js | 59 +++ public/index.html | 6 +- scripts/migrate-apply.sh | 19 + scripts/migrate-generate.sh | 22 ++ 32 files changed, 1681 insertions(+), 61 deletions(-) create mode 100644 crates/steep-server/src/event_bus.rs create mode 100644 front/css/dashboard.css create mode 100644 front/favicon.png create mode 100644 front/index.html create mode 100644 front/js/api.js create mode 100644 front/js/dashboard.js create mode 100644 front/js/job-card.js create mode 100644 front/js/job-detail.js create mode 100644 front/js/job-list.js create mode 100644 front/js/theme-toggle.js create mode 100755 scripts/migrate-apply.sh create mode 100755 scripts/migrate-generate.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index dff506e..2dbce3e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -19,6 +19,9 @@ }, "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/steep,type=bind", "workspaceFolder": "/workspaces/steep", + "mounts": [ + "source=/run/user/1000/podman/podman.sock,target=/var/run/docker.sock,type=bind" + ], "runArgs": ["--userns=keep-id", "--security-opt", "label=disable"], "appPort": [3000] } diff --git a/Cargo.lock b/Cargo.lock index d04968b..49775d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1747,6 +1747,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -2536,6 +2542,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4274,6 +4290,7 @@ dependencies = [ "toasty", "toasty-cli", "tokio", + "tokio-stream", "tokio-util", "tower", "tower-http 0.7.1", @@ -4773,6 +4790,7 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", ] [[package]] @@ -4885,10 +4903,19 @@ checksum = "08a05a66a4fdd61cbbe0a1d755ffe0ca6aba159dd4820936a0ff8a8278245b9c" dependencies = [ "bitflags 2.13.1", "bytes", + "futures-core", + "futures-util", "http 1.5.0", "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", "percent-encoding", "pin-project-lite", + "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -5211,6 +5238,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "unicase" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357cc3acc6a036009fd6c973ed009037c732d60d0b4f6c673e9041497482a28f" + [[package]] name = "unicode-bidi" version = "0.3.18" diff --git a/Cargo.toml b/Cargo.toml index 2302f99..26e20b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ sentry = { version = "0.49", features = ["tower-axum-matched-path"] } sentry-anyhow = { version = "0.49", features = ["backtrace"] } dotenvy = "0.15" tower = "0.5" -tower-http = { version = "0.7", features = ["trace"] } +tower-http = { version = "0.7", features = ["trace", "fs"] } tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } axum = "0.8" @@ -30,7 +30,7 @@ metrics = "0.24" metrics-exporter-prometheus = { version = "0.18", default-features = false, features = ["http-listener"] } toasty = { version = "0.11", features = ["postgresql", "serde", "jiff"] } toasty-cli = "0.11" -jiff = "0.2" +jiff = { version = "0.2", features = ["serde"] } [profile.release] debug = 1 diff --git a/Containerfile b/Containerfile index c2a086e..ea5eacf 100644 --- a/Containerfile +++ b/Containerfile @@ -23,7 +23,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ WORKDIR /app COPY --from=builder /app/target/release/steep-server ./steep-server +COPY front ./front + COPY crates/steep-server/toasty ./toasty ENV MIGRATIONS_DIR=/app/toasty -CMD ["sh", "-c", "./steep-server migration apply && exec ./steep-server"] +COPY scripts/migrate-apply.sh ./scripts/migrate-apply.sh +RUN chmod +x ./scripts/migrate-apply.sh + +CMD ["sh", "-c", "./scripts/migrate-apply.sh && exec ./steep-server"] diff --git a/README.md b/README.md index 62f20b1..45f19b5 100644 --- a/README.md +++ b/README.md @@ -109,16 +109,18 @@ The database schema is versioned with [Toasty](https://github.com/tokio-rs/toast After changing a model in `crates/steep-server/src/schemas/`, generate a migration: ```sh -cargo run -p steep-server -- migration generate --name describe_change +./scripts/migrate-generate.sh describe_change ``` Apply the pending migrations **before starting the service** — the server does not migrate at boot: ```sh -cargo run -p steep-server -- migration apply +./scripts/migrate-apply.sh ``` -The `Containerfile` does this at startup: its entrypoint runs `steep-server migration apply` before exec'ing the server. The CLI reads the migration files from `MIGRATIONS_DIR` (defaults to the crate's `toasty/` directory; the image sets it to `/app/toasty`). +Both scripts load the `.env` file at the project root (so `DATABASE_URL` is picked up). Generation runs through `cargo run -p steep-server --`; applying uses the compiled `steep-server` binary when present (as in the image), falling back to `cargo run` otherwise. + +The `Containerfile` does this at startup: its entrypoint runs `scripts/migrate-apply.sh` before exec'ing the server. The CLI reads the migration files from `MIGRATIONS_DIR` (defaults to the crate's `toasty/` directory; the image sets it to `/app/toasty`). Other subcommands: `migration snapshot`, `migration drop`, `migration reset`. They read `DATABASE_URL`. diff --git a/ROADMAP.md b/ROADMAP.md index 5cd299a..2bf276e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -11,15 +11,22 @@ - If a repository has no Dev Container configuration, run its review in a default container based on `debian:stable-slim`. - Use `/workspace` as the workspace path for the default container and as the fallback when `workspaceFolder` is not specified. -## 1.3 — Typed action routing — planned +## 1.3 — Durable jobs & resumption — planned + +- Persist review jobs and their progress in PostgreSQL so in-flight work survives a restart and can be resumed instead of being lost. +- Expose an API to retrieve the list of jobs by state: running, pending, and review done. +- Stream job events over Server-Sent Events (SSE) so clients see status changes in real time. + +## 1.4 — YAML configuration — planned + +- Add a YAML configuration file as the primary way to configure Steep, replacing part of the current environment variables. +- Move non-secret settings such as the model, timeouts, concurrency limit, and sandbox iterations into the file, and keep secrets (API keys, tokens, webhook secret, database URL) in environment variables. + +## 2.0 — Typed action routing and implementation requests — planned - Introduce a type-safe model output for the action Steep should take, such as `Review` or `Implementation`. - Route review requests (for example, “@steep, review this PR”) to the existing review flow. -- Recognize implementation requests (for example, “@steep, rename method `XXX` to `YYY`”) and establish their dispatch path. Execution of implementation requests is planned for 2.0. - -## 2.0 — Implementation requests — planned - -- Use the typed action from 1.3 to route explicit implementation requests to an implementation workflow. +- Recognize implementation requests (for example, “@steep, rename method `XXX` to `YYY`”) and route them to the implementation workflow. - For a request on an issue, clone the repository from its default branch and implement the requested features on a new branch. - For a request on an existing pull request, clone its branch and implement the requested modifications there. - When the agent's iteration loop ends, the orchestration layer automatically pushes the resulting changes: it opens a pull request for issue-based work, or updates the existing pull request branch. The agent does not receive or invoke a push tool. @@ -31,6 +38,11 @@ - Allow configuring a dedicated model for pull request reviews and another for implementation requests. - Route each action type to its configured model, with a clear fallback when only one model is configured. +## 2.2 — Sub-agents — planned + +- Let the agent delegate well-scoped parts of a task to sub-agents that run their own iteration loop. +- Run independent sub-agents in parallel and have the main agent consolidate their results. + ## 3.0 — Autonomous Sentry fixes — planned - Automatically discover project errors reported by Sentry, without waiting for a user comment. diff --git a/crates/steep-server/Cargo.toml b/crates/steep-server/Cargo.toml index bd12c40..e7e19a1 100644 --- a/crates/steep-server/Cargo.toml +++ b/crates/steep-server/Cargo.toml @@ -7,6 +7,7 @@ edition = "2024" reqwest = { workspace = true } tokio = { workspace = true } tokio-util = { workspace = true } +tokio-stream = { workspace = true, features = ["sync"] } futures-util = { workspace = true } serde_json = { workspace = true } serde = { workspace = true } diff --git a/crates/steep-server/src/api.rs b/crates/steep-server/src/api.rs index 4896016..158b5ff 100644 --- a/crates/steep-server/src/api.rs +++ b/crates/steep-server/src/api.rs @@ -1,31 +1,48 @@ use axum::body::{Bytes, to_bytes}; -use axum::extract::{FromRef, FromRequest, State}; +use axum::extract::{FromRef, FromRequest, Path, State}; use axum::http::Request; use axum::response::IntoResponse; +use axum::response::sse::{Event, KeepAlive, Sse}; use axum::routing::{get, post}; use axum::{Json, Router}; +use futures_util::stream::{self, Stream, StreamExt}; use reqwest::StatusCode; use ring::hmac; use sentry::integrations::tower::{NewSentryLayer, SentryHttpLayer}; -use serde_json::Value; +use serde_json::{Value, json}; +use tokio_stream::wrappers::{BroadcastStream, errors::BroadcastStreamRecvError}; use tower::ServiceBuilder; +use tower_http::services::ServeDir; use tower_http::trace::TraceLayer; -use tracing::{info, instrument}; - -use tokio_util::sync::CancellationToken; +use tracing::{info, instrument, warn}; use crate::consts::{GITEA_EVENT_TYPE_HEADER_NAME, GITEA_SIG_HEADER_NAME, MAX_WEBHOOK_BODY_SIZE}; use crate::errors::AppError; +use crate::event_bus::JobEvent; use crate::gitea::WebhookType; use crate::metrics; +use crate::schemas::JobStatus; use crate::state::AppState; -pub async fn start(app_state: AppState, shutdown: CancellationToken) -> anyhow::Result<()> { +pub async fn start(app_state: AppState) -> anyhow::Result<()> { let http_port = app_state.config.http_port; + let shutdown = app_state.shutdown.clone(); + + // Le dashboard est servi depuis un dossier statique ; les routes API + // ci-dessous restent prioritaires (le dossier n'est que le fallback). + let front_dir = std::env::var("FRONT_DIR").unwrap_or_else(|_| String::from("front")); + if !std::path::Path::new(&front_dir).is_dir() { + warn!(dir = %front_dir, "front directory not found, the dashboard will 404"); + } + let dashboard = ServeDir::new(&front_dir); let app = Router::new() - .route("/", get(root)) .route("/webhook", post(webhook)) + .route("/dedup", get(dedup_list)) + .route("/jobs", get(jobs_list)) + .route("/events", get(lifecycle_events)) + .route("/jobs/{id}/events", get(job_events)) + .fallback_service(dashboard) .layer( ServiceBuilder::new() .layer(NewSentryLayer::>::new_from_top()) @@ -46,8 +63,73 @@ pub async fn start(app_state: AppState, shutdown: CancellationToken) -> anyhow:: Ok(()) } -async fn root() -> &'static str { - "Hi, I'm Steep :)" +async fn dedup_list(State(app_state): State) -> Result { + let reviews = app_state.dedup.list_reviews().await?; + + Ok(Json(json!({ + "reviews": reviews + }))) +} + +async fn jobs_list(State(app_state): State) -> Result { + let pending = app_state.queue.list(JobStatus::Pending).await?; + let processing = app_state.queue.list(JobStatus::Processing).await?; + + Ok(Json(json!({ + "pending": pending, + "processing": processing, + }))) +} + +/// Flux SSE des évènements de cycle de vie global (liste des jobs). +/// +/// Le flux est clos dès que l'arrêt gracieux est lancé, sans quoi une connexion +/// SSE vivante empêcherait le serveur de s'arrêter. +async fn lifecycle_events( + State(app_state): State, +) -> Sse>> { + let rx = app_state.event_bus.subscribe_lifecycle(); + let shutdown = app_state.shutdown.cancelled_owned(); + + let stream = BroadcastStream::new(rx).map(|result| match result { + Ok(event) => sse_json("lifecycle", &event), + Err(BroadcastStreamRecvError::Lagged(skipped)) => sse_gap(skipped), + }); + + Sse::new(stream.take_until(shutdown)).keep_alive(KeepAlive::default()) +} + +async fn job_events( + State(app_state): State, + Path(id): Path, +) -> Result>>, AppError> { + let subscription = app_state + .event_bus + .subscribe_job(id) + .ok_or(AppError::JobNotFoundErr(id))?; + let shutdown = app_state.shutdown.cancelled_owned(); + + let history = subscription + .history + .into_iter() + .map(|event| sse_json("progress", &event)); + + let live = BroadcastStream::new(subscription.live).map(|result| match result { + Ok(event) => sse_json("progress", &event), + Err(BroadcastStreamRecvError::Lagged(skipped)) => sse_gap(skipped), + }); + + let stream = stream::iter(history).chain(live).take_until(shutdown); + + Ok(Sse::new(stream).keep_alive(KeepAlive::default())) +} + +fn sse_json(name: &'static str, payload: &T) -> Result { + Event::default().event(name).json_data(payload) +} + +fn sse_gap(skipped: u64) -> Result { + Ok(Event::default().event("gap").data(skipped.to_string())) } #[instrument(skip(app_state), fields(webhook_type), err)] @@ -73,10 +155,19 @@ async fn webhook( } } - if let Err(err) = app_state.queue.push(wb).await { - metrics::webhook_enqueue_failed(event_type); - return Err(AppError::EnqueueErr(anyhow::Error::from(err))); - } + let job = match app_state.queue.push(wb).await { + Ok(job) => job, + Err(err) => { + metrics::webhook_enqueue_failed(event_type); + return Err(AppError::EnqueueErr(anyhow::Error::from(err))); + } + }; + + app_state.event_bus.publish(JobEvent::Queued { + id: job.id, + repo: job.repo, + pr: job.pr, + }); Ok((StatusCode::CREATED, "Task started")) } diff --git a/crates/steep-server/src/bot.rs b/crates/steep-server/src/bot.rs index dadc2f2..c7172cd 100644 --- a/crates/steep-server/src/bot.rs +++ b/crates/steep-server/src/bot.rs @@ -9,6 +9,7 @@ use tracing::{error, info, instrument}; use crate::{ bot_actions::review::ReviewOutcome, dedup::{Dedup, ReviewRecord}, + event_bus::{EventBus, Reporter}, gitea::{GiteaAPI, WebhookType}, job_queue::JobQueue, metrics, @@ -134,9 +135,11 @@ pub struct Bot { sandbox: SandboxConfig, dedup: Dedup, queue: JobQueue, + event_bus: EventBus, } impl Bot { + #[allow(clippy::too_many_arguments)] pub fn new( gitea_api: GiteaAPI, open_router_client: OpenRouterClient, @@ -145,6 +148,7 @@ impl Bot { sandbox: SandboxConfig, dedup: Dedup, queue: JobQueue, + event_bus: EventBus, ) -> Self { Self { gitea_api, @@ -154,6 +158,7 @@ impl Bot { sandbox, dedup, queue, + event_bus, } } @@ -214,6 +219,7 @@ impl Bot { Ok(true) => { metrics::task_skipped(event_type); info!("Review already done, skipping"); + self.event_bus.skip(job.id, &job.repo, job.pr); if let Err(err) = self.queue.remove(job.id).await { error!(%err, "failed to remove job"); @@ -224,9 +230,11 @@ impl Bot { Err(err) => error!(%err, "Dedup lookup failed, reviewing anyway"), } + let reporter = self.event_bus.start(job.id, job.repo.clone(), job.pr); + let payload = job.payload.0.clone(); let started = std::time::Instant::now(); - let result = self.exec(payload).await; + let result = self.exec(payload, &reporter).await; let duration_ms = started.elapsed().as_millis() as u64; let (ok, outcome) = match result { @@ -243,6 +251,8 @@ impl Bot { } }; + let comments = outcome.comments as u64; + let record = ReviewRecord { event_id: job.event_id, repo: job.repo.clone(), @@ -251,7 +261,7 @@ impl Bot { model: self.open_router_model.clone(), markdown: outcome.markdown, cost: outcome.cost, - comments: outcome.comments as u64, + comments, duration_ms, }; @@ -259,13 +269,20 @@ impl Bot { error!(%err, "failed to record review"); } + self.event_bus + .finish(job.id, &job.repo, job.pr, ok, comments, duration_ms); + if let Err(err) = self.queue.remove(job.id).await { error!(%err, "failed to remove job"); } } - #[instrument(skip(self, webhook), fields(repo, pr))] - pub async fn exec(&self, webhook: WebhookType) -> anyhow::Result { + #[instrument(skip(self, webhook, reporter), fields(repo, pr))] + pub async fn exec( + &self, + webhook: WebhookType, + reporter: &Reporter, + ) -> anyhow::Result { match &webhook { WebhookType::Review(p) => { tracing::Span::current().record("repo", &p.repository.full_name); @@ -284,6 +301,7 @@ impl Bot { &self.sandbox, tools, review_payload, + reporter, ) .await } diff --git a/crates/steep-server/src/bot_actions/review.rs b/crates/steep-server/src/bot_actions/review.rs index e37cf08..3fe8148 100644 --- a/crates/steep-server/src/bot_actions/review.rs +++ b/crates/steep-server/src/bot_actions/review.rs @@ -5,6 +5,7 @@ use tracing::{info, instrument, warn}; use crate::{ bot::{ReviewItem, ReviewResult, ReviewSeverity, ReviewSide}, consts::{BOT_PROCESS_MSG, REVIEW_PROMPT, SANDBOX_SYSTEM_PROMPT}, + event_bus::Reporter, gitea::{GiteaAPI, PullRequestFile, ReviewPayload}, metrics, open_router::{OpenRouterClient, Tool}, @@ -28,7 +29,14 @@ impl ReviewOutcome { } } -#[instrument(skip(gitea_api, open_router_client, sandbox_config, tools, review_payload))] +#[instrument(skip( + gitea_api, + open_router_client, + sandbox_config, + tools, + review_payload, + reporter +))] pub async fn exec_review( gitea_api: &GiteaAPI, open_router_client: &OpenRouterClient, @@ -36,6 +44,7 @@ pub async fn exec_review( sandbox_config: &SandboxConfig, tools: Vec, review_payload: ReviewPayload, + reporter: &Reporter, ) -> anyhow::Result { tracing::info!( repo = %review_payload.repository.full_name, @@ -86,6 +95,7 @@ pub async fn exec_review( tools, &review_payload, &bot_request, + reporter, ) .await?; @@ -144,12 +154,14 @@ async fn run_sandboxed_review( tools: Vec, review_payload: &ReviewPayload, bot_request: &str, + reporter: &Reporter, ) -> anyhow::Result<(ReviewResult, Option)> { let sandbox = Sandbox::create( &sandbox_config.runtime, &review_payload.repository.clone_url, gitea_api.token(), review_payload.pull_request.number, + reporter, ) .await?; @@ -160,6 +172,7 @@ async fn run_sandboxed_review( SANDBOX_SYSTEM_PROMPT, bot_request, sandbox_config.max_iterations, + reporter, ) .await; diff --git a/crates/steep-server/src/dedup.rs b/crates/steep-server/src/dedup.rs index b3d83af..51be893 100644 --- a/crates/steep-server/src/dedup.rs +++ b/crates/steep-server/src/dedup.rs @@ -70,6 +70,13 @@ impl Dedup { Ok(()) } + + pub async fn list_reviews(&self) -> toasty::Result> { + let mut db = self.db.clone(); + let reviews = Review::all().exec(&mut db).await?; + + Ok(reviews) + } } #[cfg(test)] diff --git a/crates/steep-server/src/errors.rs b/crates/steep-server/src/errors.rs index b06bda2..2cee8af 100644 --- a/crates/steep-server/src/errors.rs +++ b/crates/steep-server/src/errors.rs @@ -1,5 +1,6 @@ use axum::response::IntoResponse; use reqwest::StatusCode; +use sentry::capture_error; #[derive(thiserror::Error, Debug)] pub enum AppError { @@ -27,9 +28,15 @@ pub enum AppError { #[error("Already processed")] AlreadyProcessedErr, + #[error("Job {0} is not running")] + JobNotFoundErr(u64), + #[error(transparent)] BadJsonStructErr(#[from] serde_json::Error), + #[error("Other toasty error")] + OtherToastyErr(#[from] toasty::Error), + #[error(transparent)] Other(#[from] anyhow::Error), } @@ -61,6 +68,9 @@ impl IntoResponse for AppError { "WebHook sig header is invalid".to_string(), ), AppError::AlreadyProcessedErr => (StatusCode::OK, "Already processed".to_string()), + AppError::JobNotFoundErr(id) => { + (StatusCode::NOT_FOUND, format!("job {id} is not running")) + } AppError::EnqueueErr(err) => { sentry_anyhow::capture_anyhow(&err); ( @@ -75,6 +85,13 @@ impl IntoResponse for AppError { "Internal server error".to_string(), ) } + AppError::OtherToastyErr(err) => { + capture_error(&err); + ( + StatusCode::INTERNAL_SERVER_ERROR, + "Internal server error".to_string(), + ) + } } .into_response() } diff --git a/crates/steep-server/src/event_bus.rs b/crates/steep-server/src/event_bus.rs new file mode 100644 index 0000000..c9c051e --- /dev/null +++ b/crates/steep-server/src/event_bus.rs @@ -0,0 +1,335 @@ +use std::collections::{HashMap, VecDeque}; +use std::sync::{Arc, Mutex, RwLock}; + +use serde::Serialize; +use tokio::sync::broadcast; + +use crate::text::excerpt; + +const LIFECYCLE_CAPACITY: usize = 256; +const PROGRESS_CAPACITY: usize = 256; +const HISTORY_CAPACITY: usize = 256; +const MAX_EVENT_ARGUMENTS: usize = 200; + +/// Évènement de cycle de vie d'un job, diffusé globalement. +#[derive(Clone, Debug, Serialize)] +#[serde(tag = "type", rename_all = "snake_case")] +pub enum JobEvent { + Queued { + id: u64, + repo: String, + pr: u64, + }, + Started { + id: u64, + repo: String, + pr: u64, + }, + ReviewDone { + id: u64, + repo: String, + pr: u64, + ok: bool, + comments: u64, + duration_ms: u64, + }, + Failed { + id: u64, + repo: String, + pr: u64, + }, + Skipped { + id: u64, + repo: String, + pr: u64, + }, +} + +#[derive(Clone, Debug, Serialize)] +#[serde(tag = "type", rename_all = "snake_case")] +pub enum Progress { + ToolCall { + iteration: usize, + name: String, + arguments: String, + }, + ToolResult { + iteration: usize, + name: String, + truncated: bool, + output: String, + }, + Finished { + ok: bool, + }, +} + +#[derive(Debug)] +struct JobChannel { + tx: broadcast::Sender, + history: Mutex>, +} + +impl JobChannel { + fn subscribe(&self) -> (Vec, broadcast::Receiver) { + let history = self.history.lock().expect("job history lock poisoned"); + let rx = self.tx.subscribe(); + + (history.iter().cloned().collect(), rx) + } + + fn emit(&self, event: Progress) { + let mut history = self.history.lock().expect("job history lock poisoned"); + + if history.len() >= HISTORY_CAPACITY { + history.pop_front(); + } + + let _ = self.tx.send(event.clone()); + history.push_back(event); + } +} + +pub struct JobSubscription { + pub history: Vec, + pub live: broadcast::Receiver, +} + +#[derive(Clone)] +pub struct EventBus { + lifecycle: broadcast::Sender, + jobs: Arc>>>, +} + +impl EventBus { + pub fn new() -> Self { + let (lifecycle, _rx) = broadcast::channel(LIFECYCLE_CAPACITY); + + Self { + lifecycle, + jobs: Arc::new(RwLock::new(HashMap::new())), + } + } + + pub fn publish(&self, event: JobEvent) { + let _ = self.lifecycle.send(event); + } + + pub fn subscribe_lifecycle(&self) -> broadcast::Receiver { + self.lifecycle.subscribe() + } + + pub fn start(&self, id: u64, repo: impl Into, pr: u64) -> Reporter { + let (tx, _rx) = broadcast::channel(PROGRESS_CAPACITY); + let channel = Arc::new(JobChannel { + tx, + history: Mutex::new(VecDeque::new()), + }); + + self.jobs + .write() + .expect("job registry lock poisoned") + .insert(id, channel.clone()); + + self.publish(JobEvent::Started { + id, + repo: repo.into(), + pr, + }); + + Reporter { channel } + } + + pub fn finish(&self, id: u64, repo: &str, pr: u64, ok: bool, comments: u64, duration_ms: u64) { + let event = if ok { + JobEvent::ReviewDone { + id, + repo: repo.to_string(), + pr, + ok, + comments, + duration_ms, + } + } else { + JobEvent::Failed { + id, + repo: repo.to_string(), + pr, + } + }; + + self.publish(event); + + if let Some(channel) = self + .jobs + .write() + .expect("job registry lock poisoned") + .remove(&id) + { + let _ = channel.tx.send(Progress::Finished { ok }); + } + } + + pub fn skip(&self, id: u64, repo: &str, pr: u64) { + self.publish(JobEvent::Skipped { + id, + repo: repo.to_string(), + pr, + }); + } + + pub fn subscribe_job(&self, id: u64) -> Option { + let channel = self + .jobs + .read() + .expect("job registry lock poisoned") + .get(&id) + .cloned()?; + + let (history, live) = channel.subscribe(); + + Some(JobSubscription { history, live }) + } +} + +impl Default for EventBus { + fn default() -> Self { + Self::new() + } +} + +#[derive(Clone, Debug)] +pub struct Reporter { + channel: Arc, +} + +impl Reporter { + pub fn tool_call(&self, iteration: usize, name: &str, arguments: &str) { + self.channel.emit(Progress::ToolCall { + iteration, + name: name.to_string(), + arguments: excerpt(arguments, MAX_EVENT_ARGUMENTS), + }); + } + + /// Signale la fin d'un appel d'outil. + pub fn tool_result(&self, iteration: usize, name: &str, truncated: bool, output: &str) { + self.channel.emit(Progress::ToolResult { + iteration, + name: name.to_string(), + truncated, + output: output.to_string(), + }); + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn a_started_job_is_announced_and_subscribable() { + let bus = EventBus::new(); + let mut lifecycle = bus.subscribe_lifecycle(); + + let _reporter = bus.start(1, "owner/repo", 7); + + assert!(matches!( + lifecycle.try_recv().unwrap(), + JobEvent::Started { id: 1, pr: 7, .. } + )); + assert!(bus.subscribe_job(1).is_some()); + } + + #[test] + fn progress_emitted_before_subscribing_is_replayed() { + let bus = EventBus::new(); + let reporter = bus.start(1, "owner/repo", 7); + + reporter.tool_call(1, "ls", "{}"); + reporter.tool_result(1, "ls", false, "src\nmain.rs"); + + let subscription = bus.subscribe_job(1).unwrap(); + + assert_eq!(subscription.history.len(), 2); + assert!(matches!( + subscription.history[0], + Progress::ToolCall { iteration: 1, .. } + )); + assert!(matches!( + &subscription.history[1], + Progress::ToolResult { name, .. } if name == "ls" + )); + } + + #[test] + fn progress_emitted_after_subscribing_arrives_live() { + let bus = EventBus::new(); + let reporter = bus.start(1, "owner/repo", 7); + let mut subscription = bus.subscribe_job(1).unwrap(); + + reporter.tool_call(2, "grep", r#"{"pattern":"fn main"}"#); + + assert!(matches!( + subscription.live.try_recv().unwrap(), + Progress::ToolCall { iteration: 2, name, .. } if name == "grep" + )); + } + + #[test] + fn finish_closes_the_channel_and_announces_the_review() { + let bus = EventBus::new(); + let mut lifecycle = bus.subscribe_lifecycle(); + let _reporter = bus.start(1, "owner/repo", 7); + let mut subscription = bus.subscribe_job(1).unwrap(); + + bus.finish(1, "owner/repo", 7, true, 3, 120); + + assert!(bus.subscribe_job(1).is_none()); + assert!(matches!( + subscription.live.try_recv().unwrap(), + Progress::Finished { ok: true } + )); + + let _started = lifecycle.try_recv().unwrap(); + assert!(matches!( + lifecycle.try_recv().unwrap(), + JobEvent::ReviewDone { + id: 1, + ok: true, + comments: 3, + duration_ms: 120, + .. + } + )); + } + + #[test] + fn a_failed_job_is_announced_as_failed() { + let bus = EventBus::new(); + let mut lifecycle = bus.subscribe_lifecycle(); + let _reporter = bus.start(1, "owner/repo", 7); + + bus.finish(1, "owner/repo", 7, false, 0, 42); + + let _started = lifecycle.try_recv().unwrap(); + assert!(matches!( + lifecycle.try_recv().unwrap(), + JobEvent::Failed { id: 1, .. } + )); + } + + #[test] + fn a_skipped_job_is_announced_without_a_channel() { + let bus = EventBus::new(); + let mut lifecycle = bus.subscribe_lifecycle(); + + bus.skip(1, "owner/repo", 7); + + assert!(matches!( + lifecycle.try_recv().unwrap(), + JobEvent::Skipped { id: 1, pr: 7, .. } + )); + assert!(bus.subscribe_job(1).is_none()); + } +} diff --git a/crates/steep-server/src/job_queue.rs b/crates/steep-server/src/job_queue.rs index d09649d..1b65737 100644 --- a/crates/steep-server/src/job_queue.rs +++ b/crates/steep-server/src/job_queue.rs @@ -23,17 +23,14 @@ impl JobQueue { Self { db } } - /// Enfile une nouvelle review. - /// - /// L'unicité de `event_id` fait échouer l'insertion d'un doublon. - pub async fn push(&self, webhook: WebhookType) -> toasty::Result<()> { + pub async fn push(&self, webhook: WebhookType) -> toasty::Result { let event_id = webhook.event_id(); let repo = webhook.repository_full_name().to_string(); let pr = webhook.pull_request_number(); let mut db = self.db.clone(); - toasty::create!(Job { + let job = toasty::create!(Job { event_id, repo, pr, @@ -43,14 +40,9 @@ impl JobQueue { .exec(&mut db) .await?; - Ok(()) + Ok(job) } - /// Flux des jobs en attente. - /// - /// C'est un `Stream` (et non un `Iterator`) : l'accès à la base est - /// asynchrone. Le flux interroge la table en boucle et met en tampon les - /// jobs trouvés. pub fn pending(&self) -> impl Stream { let db = self.db.clone(); @@ -103,6 +95,13 @@ impl JobQueue { Ok(()) } + + pub async fn list(&self, status: JobStatus) -> toasty::Result> { + let mut db = self.db.clone(); + let jobs = Job::filter_by_status(status).exec(&mut db).await?; + + Ok(jobs) + } } #[cfg(test)] diff --git a/crates/steep-server/src/main.rs b/crates/steep-server/src/main.rs index 6d4231c..c639505 100644 --- a/crates/steep-server/src/main.rs +++ b/crates/steep-server/src/main.rs @@ -1,8 +1,8 @@ use std::time::Duration; use crate::{ - bot::Bot, dedup::Dedup, gitea::GiteaAPI, job_queue::JobQueue, open_router::OpenRouterClient, - sandbox::SandboxConfig, state::AppState, + bot::Bot, dedup::Dedup, event_bus::EventBus, gitea::GiteaAPI, job_queue::JobQueue, + open_router::OpenRouterClient, sandbox::SandboxConfig, state::AppState, }; use dotenvy::dotenv; @@ -19,6 +19,7 @@ mod db; mod dedup; mod env; mod errors; +mod event_bus; mod gitea; mod job_queue; mod metrics; @@ -126,6 +127,7 @@ async fn run() -> anyhow::Result<()> { let db = db::connect(&config.database_url).await?; let dedup = Dedup::new(db.clone()); let queue = JobQueue::new(db); + let event_bus = EventBus::new(); let bot = Bot::new( gitea_api, @@ -135,13 +137,16 @@ async fn run() -> anyhow::Result<()> { sandbox, dedup.clone(), queue.clone(), + event_bus.clone(), ); let app_state = AppState { queue, dedup, + event_bus, bot_name: gitea_user.login.clone(), config, + shutdown: shutdown.clone(), }; let signal = async { @@ -166,7 +171,7 @@ async fn run() -> anyhow::Result<()> { result = async { tokio::try_join!( bot.start(shutdown.clone()), - api::start(app_state, shutdown.clone()), + api::start(app_state), signal ) } => { diff --git a/crates/steep-server/src/sandbox/agent.rs b/crates/steep-server/src/sandbox/agent.rs index 7de2702..a2c1768 100644 --- a/crates/steep-server/src/sandbox/agent.rs +++ b/crates/steep-server/src/sandbox/agent.rs @@ -13,6 +13,7 @@ use serde_json::Value; use tracing::{info, warn}; use crate::{ + event_bus::Reporter, open_router::{Message, OpenRouterClient, Role, Tool, ToolCall, ToolChoice}, sandbox::{Sandbox, tools}, text::{excerpt, truncate_bytes}, @@ -61,17 +62,6 @@ pub struct AgentResult { pub iterations: usize, } -/// Runs the tool-calling loop until the model answers or `max_iterations` is -/// reached. -/// -/// `tool_definitions` is the set of tools the model may call; it is selected by -/// the caller based on the webhook action (see [`tools::for_webhook`]). -/// -/// The answer of the model is parsed into `A`, which is how the caller states the -/// format it expects: while [`FromStr`] rejects the answer, the error is sent back -/// to the model so that it can correct itself, which costs an iteration. The -/// parsing happens here because that is where the conversation and the remaining -/// budget are at hand. pub async fn run( open_router: &OpenRouterClient, sandbox: &Sandbox, @@ -79,6 +69,7 @@ pub async fn run( system_prompt: &str, user_prompt: &str, max_iterations: usize, + reporter: &Reporter, ) -> anyhow::Result> where A: FromStr, @@ -177,9 +168,13 @@ where )); for call in &response.tool_calls { + reporter.tool_call(iteration, call.name(), call.arguments_json()); + let started = Instant::now(); let (content, truncated) = execute(sandbox, call).await; + reporter.tool_result(iteration, call.name(), truncated, &content); + info!( iteration, tool = call.name(), diff --git a/crates/steep-server/src/sandbox/instance.rs b/crates/steep-server/src/sandbox/instance.rs index 880166c..8478c58 100644 --- a/crates/steep-server/src/sandbox/instance.rs +++ b/crates/steep-server/src/sandbox/instance.rs @@ -11,6 +11,8 @@ use devcontainer_rs::{Container, ContainerRuntime, ExecOutput}; use tempfile::TempDir; use tracing::{info, instrument}; +use crate::event_bus::Reporter; + /// Devcontainer locations recognized within a repository, in priority order. const DEVCONTAINER_PATHS: [&str; 2] = [".devcontainer/devcontainer.json", ".devcontainer.json"]; @@ -43,6 +45,7 @@ impl Sandbox { clone_url: &str, token: &str, pull_request_number: u64, + reporter: &Reporter, ) -> anyhow::Result { let workspace = tempfile::tempdir().context("failed to create sandbox workspace")?; let repo_dir = workspace.path().join("repo"); diff --git a/crates/steep-server/src/schemas/job.rs b/crates/steep-server/src/schemas/job.rs index d36cf4a..174df5f 100644 --- a/crates/steep-server/src/schemas/job.rs +++ b/crates/steep-server/src/schemas/job.rs @@ -1,14 +1,16 @@ use jiff::Timestamp; +use serde::Serialize; use crate::gitea::WebhookType; -#[derive(Debug, Clone, Copy, PartialEq, Eq, toasty::Embed)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, toasty::Embed, Serialize)] +#[serde(tag = "type", rename_all = "snake_case")] pub enum JobStatus { Pending, Processing, } -#[derive(Debug, toasty::Model)] +#[derive(Debug, toasty::Model, Clone, Serialize)] pub struct Job { #[key] #[auto] diff --git a/crates/steep-server/src/schemas/review.rs b/crates/steep-server/src/schemas/review.rs index 0539bfa..0715a07 100644 --- a/crates/steep-server/src/schemas/review.rs +++ b/crates/steep-server/src/schemas/review.rs @@ -1,6 +1,7 @@ use jiff::Timestamp; +use serde::Serialize; -#[derive(Debug, toasty::Model)] +#[derive(Debug, toasty::Model, Serialize, Clone)] pub struct Review { #[key] #[auto] diff --git a/crates/steep-server/src/state.rs b/crates/steep-server/src/state.rs index c66b4e1..263ffaf 100644 --- a/crates/steep-server/src/state.rs +++ b/crates/steep-server/src/state.rs @@ -1,9 +1,14 @@ -use crate::{dedup::Dedup, env::EnvConfig, job_queue::JobQueue}; +use tokio_util::sync::CancellationToken; + +use crate::{dedup::Dedup, env::EnvConfig, event_bus::EventBus, job_queue::JobQueue}; #[derive(Clone)] pub struct AppState { pub queue: JobQueue, pub dedup: Dedup, + pub event_bus: EventBus, pub bot_name: String, pub config: EnvConfig, + /// Jeton annulé au démarrage de l'arrêt gracieux : il sert à clore les flux SSE. + pub shutdown: CancellationToken, } diff --git a/front/css/dashboard.css b/front/css/dashboard.css new file mode 100644 index 0000000..ec12438 --- /dev/null +++ b/front/css/dashboard.css @@ -0,0 +1,366 @@ +/* Dashboard Steep — reprend le design system du site public + (mêmes jetons de couleur, mêmes composants d'en-tête/pied) et ajoute les + styles propres au tableau de bord. */ + +:root { + color-scheme: dark; + --paper: #0b1520; + --surface: #111f2d; + --ink: #edf4f7; + --ink-soft: #c2cfd9; + --muted: #94a8b8; + --line: #263b4d; + --green: #087b5b; + --green-dark: #5bd4a7; + --green-pale: #153a32; + --blue-pale: #1a3044; + --shadow: 0 18px 50px rgba(0, 0, 0, 0.24); + --button-hover: #066449; + --brand-mark-bg: #149b72; + --brand-mark-fg: #07111b; + --step-line: #23604c; + --setup-bg: #07111b; + --radius: 20px; + --content: 1160px; + --red: #d1667f; + --amber: #d7a35b; +} + +:root[data-theme="light"] { + color-scheme: light; + --paper: #f7f8f5; + --surface: #ffffff; + --ink: #102f50; + --ink-soft: #38536c; + --muted: #718092; + --line: #e1e8e5; + --green: #149b72; + --green-dark: #087b5b; + --green-pale: #e8f5ef; + --blue-pale: #edf3f8; + --shadow: 0 18px 50px rgba(16, 47, 80, 0.08); + --button-hover: #087b5b; + --brand-mark-bg: #102f50; + --brand-mark-fg: #ffffff; + --step-line: #cce8da; + --setup-bg: #102f50; + --red: #b04a63; + --amber: #a9741f; +} + +*, *::before, *::after { box-sizing: border-box; } +html { scroll-behavior: smooth; scroll-padding-top: 90px; } +body { + margin: 0; + background: var(--paper); + color: var(--ink); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + font-size: 16px; + line-height: 1.65; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +a { color: inherit; } +img { display: block; max-width: 100%; } +.container { width: min(var(--content), calc(100% - 48px)); margin-inline: auto; } +.mono { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; } +.muted { color: var(--muted); } + +.site-header { + position: sticky; + z-index: 5; + top: 0; + border-bottom: 1px solid var(--line); + background: var(--paper); + backdrop-filter: blur(16px); +} +.nav { + min-height: 76px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 28px; +} +.wordmark { + display: inline-flex; + align-items: center; + gap: 11px; + color: var(--ink); + text-decoration: none; + font-size: 18px; + font-weight: 850; + letter-spacing: 0.13em; +} +.wordmark-mark { + width: 34px; + height: 34px; + display: grid; + place-items: center; + border-radius: 11px; + background: var(--brand-mark-bg); + color: var(--brand-mark-fg); + font-size: 17px; + letter-spacing: 0; +} +.nav-links { display: flex; align-items: center; gap: 22px; } +.nav-links a { + color: var(--ink-soft); + font-size: 14px; + font-weight: 650; + text-decoration: none; + transition: color 160ms ease; +} +.nav-links a:hover { color: var(--green-dark); } +.nav-links .nav-cta { + padding: 10px 16px; + border: 1px solid var(--line); + border-radius: 999px; + background: var(--surface); + color: var(--ink); +} +.nav-links .nav-cta:hover { border-color: var(--green); color: var(--green-dark); } + +.theme-toggle { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 9px 13px; + border: 1px solid var(--line); + border-radius: 999px; + background: var(--surface); + color: var(--ink-soft); + font: inherit; + font-size: 13px; + font-weight: 700; + cursor: pointer; + transition: border-color 160ms ease, color 160ms ease, background 160ms ease; +} +.theme-toggle:hover { border-color: var(--green-dark); color: var(--green-dark); } +.theme-icon { color: var(--green-dark); font-size: 16px; line-height: 1; } + +.section { padding: 46px 0 82px; } +.section-heading { max-width: 720px; margin-bottom: 26px; } +.section-heading h1 { + margin-bottom: 12px; + font-size: clamp(30px, 4vw, 44px); + line-height: 1.12; + letter-spacing: -0.045em; +} +.section-heading p { margin-bottom: 0; color: var(--muted); font-size: 17px; } +.eyebrow { + display: inline-flex; + align-items: center; + gap: 9px; + margin: 0 0 16px; + color: var(--green-dark); + font-size: 12px; + font-weight: 800; + letter-spacing: 0.12em; + text-transform: uppercase; +} +.eyebrow::before { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--green); + content: ""; +} + +.button { + display: inline-flex; + min-height: 42px; + align-items: center; + justify-content: center; + gap: 9px; + padding: 9px 16px; + border: 1px solid transparent; + border-radius: 999px; + background: var(--green); + color: white; + font: inherit; + font-size: 14px; + font-weight: 750; + text-decoration: none; + cursor: pointer; + transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease; +} +.button:hover { transform: translateY(-2px); background: var(--button-hover); box-shadow: 0 8px 20px rgba(20, 155, 114, 0.2); } +.button-secondary { border-color: var(--line); background: var(--surface); color: var(--ink); } +.button-secondary:hover { border-color: #b8d8ca; background: var(--green-pale); color: var(--green-dark); box-shadow: none; } +.arrow { font-size: 17px; line-height: 1; } + +/* ---- Tableau de bord ---- */ + +.toolbar { + display: flex; + align-items: center; + justify-content: flex-end; + margin-bottom: 22px; +} + +.board { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 18px; + margin-bottom: 18px; +} + +.panel { + padding: 22px; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--surface); + box-shadow: 0 5px 20px rgba(16, 47, 80, 0.025); +} +.panel-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + margin-bottom: 16px; +} +.panel-head h2 { margin: 0; font-size: 17px; letter-spacing: -0.02em; } +.count { + min-width: 26px; + padding: 3px 9px; + border-radius: 999px; + background: var(--blue-pale); + color: var(--ink); + font-size: 12px; + font-weight: 850; + text-align: center; +} +.detail-panel { margin-bottom: 18px; } + +steep-job-list { display: grid; gap: 10px; } + +.job { + border: 1px solid var(--line); + border-radius: 14px; + background: var(--paper); + transition: border-color 140ms ease, background 140ms ease; +} +.job:hover { border-color: var(--green); } +.job[data-selected="true"] { border-color: var(--green); background: var(--green-pale); } + +.job-head { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: baseline; + gap: 10px; + padding: 13px 15px; + cursor: pointer; + list-style: none; +} +.job-head::-webkit-details-marker { display: none; } +.job-repo { font-weight: 700; font-size: 14px; overflow-wrap: anywhere; } +.job-pr { color: var(--green-dark); font-weight: 800; font-size: 13px; white-space: nowrap; } + +.job-info { display: grid; gap: 12px; padding: 0 15px 15px; } +.job-info dl { display: grid; gap: 6px; margin: 0; } +.job-info dl > div { display: grid; grid-template-columns: 74px 1fr; gap: 10px; } +.job-info dt { color: var(--muted); font-size: 12px; } +.job-info dd { margin: 0; font-size: 12px; overflow-wrap: anywhere; } +.job-watch { justify-self: start; } + +/* Chevron partagé par tous les
repliables. */ +.chev::before { color: var(--muted); content: "▸"; font-size: 11px; } +details[open] .chev::before { content: "▾"; } + +.empty { margin: 0; padding: 14px 2px; color: var(--muted); font-size: 14px; } + +.pill { + display: inline-flex; + align-items: center; + padding: 3px 10px; + border-radius: 999px; + font-size: 12px; + font-weight: 800; + text-transform: lowercase; +} +.pill.done { background: var(--green-pale); color: var(--green-dark); } +.pill.failed { background: rgba(209, 102, 127, 0.16); color: var(--red); } + +.reviews { overflow-x: auto; } +.reviews-table { width: 100%; border-collapse: collapse; font-size: 13px; } +.reviews-table th { + padding: 0 12px 10px 0; + border-bottom: 1px solid var(--line); + color: var(--muted); + font-size: 11px; + font-weight: 800; + letter-spacing: 0.08em; + text-transform: uppercase; + text-align: left; +} +.reviews-table td { padding: 11px 12px 11px 0; border-bottom: 1px solid var(--line); vertical-align: top; } +.reviews-table tr:last-child td { border-bottom: 0; } + +/* Journal d'activité d'un job */ +.log { + max-height: 360px; + overflow-y: auto; + padding: 4px 2px; + font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; + font-size: 12.5px; + line-height: 1.6; +} +.log-entry { display: grid; grid-template-columns: auto 1fr; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line); } +.log-entry:last-child { border-bottom: 0; } + +/* Résultat d'outil replié par défaut : le résumé tient sur une ligne, le corps + complet s'affiche au dépliage. */ +.log-result { padding: 6px 0; border-bottom: 1px solid var(--line); } +.log-result:last-child { border-bottom: 0; } +.log-result > summary { + display: grid; + grid-template-columns: auto auto 1fr; + gap: 10px; + align-items: baseline; + cursor: pointer; + list-style: none; +} +.log-result > summary::-webkit-details-marker { display: none; } +.log-result > .log-body { padding-top: 6px; } +.log-preview { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.log-tag { + align-self: start; + padding: 2px 8px; + border-radius: 7px; + background: var(--blue-pale); + color: var(--ink); + font-size: 11px; + font-weight: 800; + white-space: nowrap; +} +.log-entry[data-kind="tool_call"] .log-tag { background: var(--green-pale); color: var(--green-dark); } +.log-entry[data-kind="finished"] .log-tag { background: var(--green-pale); color: var(--green-dark); } +.log-entry[data-kind="gap"] .log-tag { background: rgba(215, 163, 91, 0.18); color: var(--amber); } +.log-body { overflow-wrap: anywhere; white-space: pre-wrap; } +.log-args { color: var(--muted); } +.log-truncated { color: var(--amber); font-style: italic; } + +footer { padding: 26px 0; background: #0b233b; color: #b6c5d3; font-size: 13px; } +.footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; } +footer a { color: white; text-decoration: none; } +footer a:hover { color: #8be0bc; } +.footer-brand { color: white; font-weight: 800; letter-spacing: 0.1em; } + +:focus-visible { outline: 3px solid #35bb8e; outline-offset: 4px; } + +@media (max-width: 820px) { + .board { grid-template-columns: 1fr; } +} +@media (max-width: 600px) { + .container { width: min(var(--content), calc(100% - 32px)); } + .nav { min-height: 66px; gap: 12px; } + .nav-links { gap: 12px; } + .nav-links .nav-cta { display: none; } + .section { padding: 30px 0 62px; } + .toolbar { flex-direction: column; align-items: stretch; } + .footer-inner { align-items: flex-start; flex-direction: column; gap: 6px; } +} +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; } +} diff --git a/front/favicon.png b/front/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..e7017a458d63236442d8ebdc522e839d686b6bd4 GIT binary patch literal 210651 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%0D-6Bv5K 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 literal 0 HcmV?d00001 diff --git a/front/index.html b/front/index.html new file mode 100644 index 0000000..02e90ff --- /dev/null +++ b/front/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + Steep — Dashboard + + + + + + +
+ +
+ +
+ +
+ + + + diff --git a/front/js/api.js b/front/js/api.js new file mode 100644 index 0000000..2f6ac45 --- /dev/null +++ b/front/js/api.js @@ -0,0 +1,78 @@ +// Accès aux routes exposées par le serveur axum et petits utilitaires partagés +// par les web components du dashboard. + +export const endpoints = { + jobs: "/jobs", + reviews: "/dedup", + lifecycle: "/events", + jobEvents: (id) => `/jobs/${id}/events`, +}; + +async function getJson(url) { + const response = await fetch(url, { headers: { accept: "application/json" } }); + if (!response.ok) { + throw new Error(`${url} → ${response.status}`); + } + return response.json(); +} + +export const fetchJobs = () => getJson(endpoints.jobs); +export const fetchReviews = () => getJson(endpoints.reviews); + +// Ouvre un flux SSE et route les évènements nommés vers les callbacks fournis. +// Les évènements du serveur sont nommés (`lifecycle`, `progress`, `gap`), donc +// `addEventListener("message")` ne suffit pas : il faut écouter par nom. +export function subscribe(url, handlers = {}) { + const source = new EventSource(url); + + const onData = (name, handler) => { + if (handler) { + source.addEventListener(name, (event) => handler(JSON.parse(event.data))); + } + }; + + if (handlers.onOpen) source.addEventListener("open", () => handlers.onOpen()); + if (handlers.onError) source.addEventListener("error", () => handlers.onError()); + onData("lifecycle", handlers.onLifecycle); + onData("progress", handlers.onProgress); + if (handlers.onGap) { + source.addEventListener("gap", (event) => handlers.onGap(Number(event.data))); + } + + return source; +} + +export function escapeHtml(value) { + return String(value ?? "").replace(/[&<>"']/g, (char) => ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'", + })[char]); +} + +// Horodatage relatif (« il y a 3 min »), tolérant sur les valeurs absentes. +export function relativeTime(value) { + if (!value) return "—"; + const then = Date.parse(value); + if (Number.isNaN(then)) return "—"; + + const seconds = Math.round((then - Date.now()) / 1000); + const steps = [ + ["year", 60 * 60 * 24 * 365], + ["month", 60 * 60 * 24 * 30], + ["day", 60 * 60 * 24], + ["hour", 60 * 60], + ["minute", 60], + ["second", 1], + ]; + + const formatter = new Intl.RelativeTimeFormat("en", { numeric: "auto" }); + for (const [unit, size] of steps) { + if (Math.abs(seconds) >= size || unit === "second") { + return formatter.format(Math.round(seconds / size), unit); + } + } + return "—"; +} diff --git a/front/js/dashboard.js b/front/js/dashboard.js new file mode 100644 index 0000000..5829184 --- /dev/null +++ b/front/js/dashboard.js @@ -0,0 +1,212 @@ +// : assemble le tableau de bord. +// +// Au montage, il charge l'état initial via REST (`/jobs`, `/dedup`), puis +// s'abonne au flux global `/events` pour tenir les listes à jour en direct. +// La sélection d'un job ouvre son flux fin via . + +import { + endpoints, + escapeHtml, + fetchJobs, + fetchReviews, + relativeTime, + subscribe, +} from "./api.js"; +import "./theme-toggle.js"; +import "./job-list.js"; +import "./job-detail.js"; + +class Dashboard extends HTMLElement { + connectedCallback() { + this._jobs = { pending: [], processing: [] }; + this._reviews = []; + this._selectedId = null; + + this.render(); + this.refresh(); + this.connect(); + } + + disconnectedCallback() { + this._source?.close(); + if (this._refreshTimer) clearTimeout(this._refreshTimer); + } + + // ---- Chargement et flux ------------------------------------------------- + + async refresh() { + try { + const [jobs, reviews] = await Promise.all([fetchJobs(), fetchReviews()]); + this._jobs = { + pending: jobs.pending ?? [], + processing: jobs.processing ?? [], + }; + this._reviews = reviews.reviews ?? []; + this.update(); + } catch (error) { + console.error("failed to refresh the dashboard", error); + } + } + + connect() { + this._source = subscribe(endpoints.lifecycle, { + onLifecycle: (event) => this.applyLifecycle(event), + // En cas de gap (évènements ratés), on recharge l'état depuis le REST. + onGap: () => this.refresh(), + }); + } + + // Recharge la liste des reviews peu après une fin de job, pour récupérer les + // champs que l'évènement ne porte pas (markdown, coût, modèle). + scheduleRefresh() { + if (this._refreshTimer) clearTimeout(this._refreshTimer); + this._refreshTimer = setTimeout(() => this.refresh(), 400); + } + + applyLifecycle(event) { + switch (event.type) { + case "queued": + if (!this._jobs.pending.some((job) => job.id === event.id)) { + this._jobs.pending.push(this.jobFromEvent(event)); + } + break; + case "started": { + // On garde le job déjà connu s'il existe, pour conserver les champs que + // l'évènement `started` ne porte pas (event_id, created_at). + const known = this._jobs.pending.find((job) => job.id === event.id); + this.removeJob(event.id); + this._jobs.processing.push(known ?? this.jobFromEvent(event)); + break; + } + case "review_done": + case "failed": + this.removeJob(event.id); + this.scheduleRefresh(); + break; + case "skipped": + this.removeJob(event.id); + break; + default: + return; + } + this.update(); + } + + removeJob(id) { + this._jobs.pending = this._jobs.pending.filter((job) => job.id !== id); + this._jobs.processing = this._jobs.processing.filter((job) => job.id !== id); + } + + // L'évènement de cycle de vie porte assez de champs pour l'affichage ; le + // rafraîchissement REST fournira le reste (created_at, payload…). + jobFromEvent(event) { + return { + id: event.id, + event_id: event.event_id, + repo: event.repo, + pr: event.pr, + created_at: event.created_at, + }; + } + + // ---- Rendu -------------------------------------------------------------- + + render() { + this.innerHTML = ` +
+
+

Live operations

+

Review dashboard

+

Pending jobs, work in progress, and completed reviews — kept in sync over SSE.

+
+ +
+ +
+ +
+
+

Pending

0
+ +
+
+

In progress

0
+ +
+
+ +
+

Activity

+ +
+ +
+

Completed reviews

0
+
+
+
`; + + this._pending = this.querySelector("#pending"); + this._processing = this.querySelector("#processing"); + this._detail = this.querySelector("#detail"); + this._reviewsEl = this.querySelector("#reviews"); + + this.querySelector("#refresh").addEventListener("click", () => this.refresh()); + this.addEventListener("job-select", (event) => this.select(event.detail.id)); + + this.update(); + } + + update() { + this._pending.jobs = this._jobs.pending; + this._pending.selected = this._selectedId; + this._processing.jobs = this._jobs.processing; + this._processing.selected = this._selectedId; + + this.querySelector("#pending-count").textContent = String(this._jobs.pending.length); + this.querySelector("#processing-count").textContent = String(this._jobs.processing.length); + this.querySelector("#reviews-count").textContent = String(this._reviews.length); + + this._reviewsEl.innerHTML = this.reviewsHtml(); + } + + select(id) { + this._selectedId = id; + this._detail.jobId = id; + this.update(); + this._detail.scrollIntoView({ behavior: "smooth", block: "nearest" }); + } + + reviewsHtml() { + if (this._reviews.length === 0) { + return `

No review completed yet.

`; + } + + const rows = [...this._reviews] + .sort((a, b) => String(b.completed_at ?? "").localeCompare(String(a.completed_at ?? ""))) + .map( + (review) => ` + + ${review.ok ? "done" : "failed"} + ${escapeHtml(review.repo)}#${review.pr} + ${review.comments} + ${review.duration_ms} ms + ${escapeHtml(review.model ?? "—")} + ${relativeTime(review.completed_at)} + `, + ) + .join(""); + + return ` + + + + + + + ${rows} +
StatusPull requestCommentsDurationModelCompleted
`; + } +} + +customElements.define("steep-dashboard", Dashboard); diff --git a/front/js/job-card.js b/front/js/job-card.js new file mode 100644 index 0000000..6853d4d --- /dev/null +++ b/front/js/job-card.js @@ -0,0 +1,61 @@ +// Carte d'un job. Le détail (id, event, date) est replié par défaut ; le +// bouton « Watch activity » remonte un évènement `job-select` que le dashboard +// écoute pour ouvrir le flux d'activité du job. + +import { escapeHtml, relativeTime } from "./api.js"; + +class JobCard extends HTMLElement { + set job(value) { + this._job = value; + this.render(); + } + + get job() { + return this._job; + } + + set selected(value) { + this._selected = Boolean(value); + this.render(); + } + + connectedCallback() { + this.render(); + } + + render() { + if (!this._job) return; + const job = this._job; + + // Préserve l'état replié/déplié à travers les re-rendus (mises à jour SSE). + const open = this._details?.open ? " open" : ""; + + this.innerHTML = ` +
+ + + ${escapeHtml(job.repo)} + #${job.pr} + +
+
+
Job
${job.id}
+ ${job.event_id != null ? `
Event
${job.event_id}
` : ""} +
Created
${escapeHtml(relativeTime(job.created_at))}
+
+ +
+
`; + + this._details = this.querySelector("details"); + this.querySelector(".job-watch").addEventListener("click", () => this.select()); + } + + select() { + this.dispatchEvent( + new CustomEvent("job-select", { detail: { id: this._job.id }, bubbles: true }), + ); + } +} + +customElements.define("steep-job-card", JobCard); diff --git a/front/js/job-detail.js b/front/js/job-detail.js new file mode 100644 index 0000000..abe149e --- /dev/null +++ b/front/js/job-detail.js @@ -0,0 +1,150 @@ +// Panneau d'activité d'un job : ouvre un flux SSE vers `/jobs/{id}/events`, +// rejoue l'historique renvoyé par le serveur puis affiche le direct. + +import { endpoints, escapeHtml, subscribe } from "./api.js"; + +class JobDetail extends HTMLElement { + set jobId(value) { + const id = value ?? null; + if (this._jobId === id) return; + this._jobId = id; + this.open(); + } + + connectedCallback() { + if (!this._jobId) this.renderPlaceholder(); + } + + disconnectedCallback() { + this.close(); + } + + close() { + if (this._source) { + this._source.close(); + this._source = null; + } + } + + open() { + this.close(); + this._finished = false; + + if (!this._jobId) { + this.renderPlaceholder(); + return; + } + + this.innerHTML = ` +
`; + this._log = this.querySelector("#log"); + + this._source = subscribe(endpoints.jobEvents(this._jobId), { + onProgress: (event) => { + this.append(event); + if (event.type === "finished") { + this._finished = true; + this.close(); + } + }, + onGap: (skipped) => + this.append({ type: "gap", note: `missed ${skipped} events, refresh to resync` }), + // Un `error` survient aussi quand le serveur ferme le flux (job terminé). + // On ferme alors la source pour éviter la boucle de reconnexion (le job + // n'est plus en cours, la route renverrait 404). + onError: () => { + if (this._finished) return; + this.append({ type: "gap", note: "stream closed" }); + this.close(); + }, + }); + } + + renderPlaceholder() { + this.innerHTML = `

Select a job in progress to watch the agent work.

`; + } + + append(event) { + if (!this._log) return; + this._log.append(this.entry(event)); + this._log.scrollTop = this._log.scrollHeight; + } + + entry(event) { + return event.type === "tool_result" ? this.resultEntry(event) : this.lineEntry(event); + } + + // Ligne simple : appel d'outil, fin de review, gap. + lineEntry(event) { + const row = document.createElement("div"); + row.className = "log-entry"; + row.dataset.kind = event.type; + + const { tag, body } = this.describe(event); + + const tagEl = document.createElement("span"); + tagEl.className = "log-tag"; + tagEl.textContent = tag; + + const bodyEl = document.createElement("span"); + bodyEl.className = "log-body"; + bodyEl.innerHTML = body; + + row.append(tagEl, bodyEl); + return row; + } + + // Résultat d'outil : replié par défaut, avec un aperçu sur une ligne. + resultEntry(event) { + const details = document.createElement("details"); + details.className = "log-result"; + + const summary = document.createElement("summary"); + const chev = document.createElement("span"); + chev.className = "chev"; + chev.setAttribute("aria-hidden", "true"); + const tag = document.createElement("span"); + tag.className = "log-tag"; + tag.textContent = "result"; + const preview = document.createElement("span"); + preview.className = "log-preview"; + preview.textContent = this.preview(event.output); + summary.append(chev, tag, preview); + + const body = document.createElement("div"); + body.className = "log-body"; + const truncated = event.truncated + ? ' (truncated)' + : ""; + body.innerHTML = `${escapeHtml(event.output)}${truncated}`; + + details.append(summary, body); + return details; + } + + preview(text) { + const line = String(text ?? "").replace(/\s+/g, " ").trim(); + return line.length > 80 ? `${line.slice(0, 80)}…` : line; + } + + describe(event) { + switch (event.type) { + case "tool_call": + return { + tag: "call", + body: `${escapeHtml(event.name)} ${escapeHtml(event.arguments)}`, + }; + case "finished": + return { + tag: "done", + body: event.ok ? "review finished" : "review failed", + }; + case "gap": + return { tag: "gap", body: escapeHtml(event.note ?? "gap") }; + default: + return { tag: escapeHtml(event.type ?? "event"), body: "" }; + } + } +} + +customElements.define("steep-job-detail", JobDetail); diff --git a/front/js/job-list.js b/front/js/job-list.js new file mode 100644 index 0000000..f79221c --- /dev/null +++ b/front/js/job-list.js @@ -0,0 +1,58 @@ +// Liste de jobs (une colonne du tableau). Reçoit un tableau de jobs via la +// propriété `jobs` et l'id sélectionné via `selected`. + +import "./job-card.js"; + +class JobList extends HTMLElement { + set jobs(value) { + this._jobs = Array.isArray(value) ? value : []; + this.render(); + } + + get jobs() { + return this._jobs ?? []; + } + + set selected(value) { + this._selected = value; + this.render(); + } + + connectedCallback() { + if (this._mounted) return; + this._mounted = true; + this.render(); + } + + render() { + const jobs = this.jobs; + + if (jobs.length === 0) { + this.replaceChildren(); + const empty = document.createElement("p"); + empty.className = "empty"; + empty.textContent = this.getAttribute("empty") || "Nothing here."; + this.append(empty); + return; + } + + // Réconciliation par id : on réutilise les cartes existantes pour préserver + // l'état replié/déplié de chacune à travers les mises à jour. + const known = new Map(); + for (const card of this.querySelectorAll("steep-job-card")) { + if (card.job) known.set(card.job.id, card); + } + + for (const job of jobs) { + const card = known.get(job.id) ?? document.createElement("steep-job-card"); + known.delete(job.id); + card.job = job; + card.selected = job.id === this._selected; + this.append(card); + } + + for (const card of known.values()) card.remove(); + } +} + +customElements.define("steep-job-list", JobList); diff --git a/front/js/theme-toggle.js b/front/js/theme-toggle.js new file mode 100644 index 0000000..774ec53 --- /dev/null +++ b/front/js/theme-toggle.js @@ -0,0 +1,59 @@ +// Bascule de thème, identique à celle du site public (même clé localStorage, +// même rendu), empaquetée en web component. + +const STORAGE_KEY = "steep-theme"; + +export function currentTheme() { + return document.documentElement.dataset.theme === "light" ? "light" : "dark"; +} + +export function applyTheme(theme, persist = true) { + document.documentElement.dataset.theme = theme; + + const meta = document.querySelector('meta[name="theme-color"]'); + if (meta) meta.content = theme === "dark" ? "#0b1520" : "#f7f8f5"; + + if (persist) { + try { + localStorage.setItem(STORAGE_KEY, theme); + } catch (_) { + // stockage indisponible : on garde juste le thème en mémoire. + } + } + + window.dispatchEvent(new CustomEvent("steep:theme", { detail: theme })); +} + +class ThemeToggle extends HTMLElement { + connectedCallback() { + this.innerHTML = ` + `; + + this._button = this.querySelector("button"); + this._icon = this.querySelector(".theme-icon"); + this._label = this.querySelector(".theme-label"); + this._onTheme = () => this.render(); + + this._button.addEventListener("click", () => { + applyTheme(currentTheme() === "dark" ? "light" : "dark"); + }); + window.addEventListener("steep:theme", this._onTheme); + + this.render(); + } + + disconnectedCallback() { + window.removeEventListener("steep:theme", this._onTheme); + } + + render() { + const theme = currentTheme(); + this._icon.textContent = theme === "dark" ? "☾" : "☀"; + this._label.textContent = theme === "dark" ? "Dark theme" : "Light theme"; + this._button.setAttribute("aria-checked", String(theme === "dark")); + } +} + +customElements.define("steep-theme-toggle", ThemeToggle); diff --git a/public/index.html b/public/index.html index a7670af..c29f29e 100644 --- a/public/index.html +++ b/public/index.html @@ -519,9 +519,11 @@
  • 1.2Sandboxed pull-request reviews.
  • 1.2.1A default Dev Container when a repository has no configuration.
  • -
  • 1.3Type-safe routing between review and implementation requests.
  • -
  • 2.0Implement requested changes from issues or existing PRs, then create or update a PR automatically.
  • +
  • 1.3Durable reviews: persist jobs in PostgreSQL, list them by state (running, pending, review done), and stream live updates over SSE.
  • +
  • 1.4Configuration from a YAML file, replacing part of the environment variables.
  • +
  • 2.0Type-safe action routing between reviews and implementation requests, implement requested changes from issues or existing PRs, then create or update a PR automatically.
  • 2.1Project instructions from AGENTS.md and separate review/implementation models.
  • +
  • 2.2Sub-agents that take on well-scoped parts of a task and run in parallel.
  • 3.0Automatically investigate and fix project errors reported by Sentry.
diff --git a/scripts/migrate-apply.sh b/scripts/migrate-apply.sh new file mode 100755 index 0000000..5dff092 --- /dev/null +++ b/scripts/migrate-apply.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +if [ -f "${ROOT_DIR}/.env" ]; then + set -a + # shellcheck disable=SC1091 + . "${ROOT_DIR}/.env" + set +a +fi + +cd "${ROOT_DIR}" + +if [ -x "${ROOT_DIR}/steep-server" ]; then + exec "${ROOT_DIR}/steep-server" migration apply "$@" +else + exec cargo run -p steep-server -- migration apply "$@" +fi diff --git a/scripts/migrate-generate.sh b/scripts/migrate-generate.sh new file mode 100755 index 0000000..bbce364 --- /dev/null +++ b/scripts/migrate-generate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +if [ -f "${ROOT_DIR}/.env" ]; then + set -a + . "${ROOT_DIR}/.env" + set +a +fi + +cd "${ROOT_DIR}" + +if [ "$#" -eq 0 ]; then + echo "Usage: $0 " >&2 + echo "Exemple: $0 add_users_table" >&2 + exit 1 +fi + +NAME="$1" + +exec cargo run -p steep-server -- migration generate --name "${NAME}"