Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ load("@npm//:defs.bzl", "npm_link_all_packages")

npm_link_all_packages(name = "node_modules")

exports_files(["config.yml"])

js_library(
name = "jest_config",
srcs = [
Expand Down
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,15 @@ repository in your GitHub organization.

## Dashboard

Temper ships with a real-time operations dashboard powered by **thrum** — a Rust/Axum
backend with HTMX and SSE for live agent monitoring. The dashboard provides:
Temper includes a built-in operations dashboard for monitoring compliance and
activity across your organization. The dashboard provides:

- Task queue with approve/reject/retry actions
- Live agent activity grid with streaming stdout/stderr
- Per-task review pages with syntax-colored diffs and gate reports
- Budget tracking, memory inspection, and agent-to-agent messaging
- Organization-wide compliance score with per-repo breakdown
- Repository health cards — branch protection, signed commits, CI status, merge settings, labels
- Active pull request tracker with check status, labels, and age
- Signal feed for real-time webhook events and configuration drift

Run `thrum` alongside the Probot app, or access the dashboard at `/dashboard` when
deployed with the standalone HTTP handler.
Access the dashboard at `/dashboard` when running with the standalone HTTP handler.

## Quick Start

Expand Down
2 changes: 2 additions & 0 deletions __tests__/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jest_bin.jest_test(
":test_sources",
"//src:lib",
"//:jest_config",
"//:config.yml",
"//:node_modules/jest",
"//:node_modules/@babel/core",
"//:node_modules/@babel/preset-env",
Expand All @@ -52,6 +53,7 @@ jest_bin.jest_test(
":test_sources",
"//src:lib",
"//:jest_config",
"//:config.yml",
"//:node_modules/jest",
"//:node_modules/@babel/core",
"//:node_modules/@babel/preset-env",
Expand Down
1 change: 0 additions & 1 deletion __tests__/integration/ai-review.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import {
updateReviewStatus,
_reviewTimestamps,
_resetReviews,
AI_REVIEW_SIGNATURE
} from '../../src/ai-review.js';
import { _setConfigForTesting } from '../../src/config.js';
import { getLogger } from '../../src/logger.js';
Expand Down
7 changes: 5 additions & 2 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,11 @@ branch_protection:
required_status_checks:
strict: true
contexts: []
enforce_admins: false
required_pull_request_reviews: null
enforce_admins: true
required_pull_request_reviews:
required_approving_review_count: 1
dismiss_stale_reviews: true
require_code_owner_reviews: false
required_linear_history: false
required_conversation_resolution: false
restrictions: null
Expand Down
3 changes: 2 additions & 1 deletion jest.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module.exports = {
'^.+\\.js$': ['babel-jest', { configFile: './babel.config.cjs' }]
},
transformIgnorePatterns: [
'/node_modules/(?!probot|@probot|@octokit|before-after-hook|universal-user-agent|universal-github-app-jwt|octokit-auth-probot)'
'/node_modules/(?!\\.pnpm|probot|@probot|@octokit|before-after-hook|universal-user-agent|universal-github-app-jwt|octokit-auth-probot)'
],
testMatch: [
'**/__tests__/unit/**/*.test.js',
Expand All @@ -15,6 +15,7 @@ module.exports = {
],
collectCoverageFrom: [
'src/**/*.js',
'!src/dashboard.js',
'index.js',
'!**/node_modules/**'
],
Expand Down
Loading
Loading