Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,9 @@ xterm.js · SQLite (tauri-plugin-sql) · localhost hook-ingest server.

## Requirements

- macOS (Apple Silicon)
- macOS (Apple Silicon). Primary supported target.
- Windows: experimental. CI produces an unsigned NSIS installer for manual
testing (SmartScreen warns on first run), not yet officially supported.
- [Rust](https://rustup.rs) + Node 18+
- At least one supported agent CLI installed — [Claude Code](https://claude.com/claude-code),
[OpenCode](https://opencode.ai), [Codex](https://github.com/openai/codex),
Expand Down
5 changes: 5 additions & 0 deletions src/lib/detectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ export const DETECTORS: Detector[] = [
{ label: "Merge conflict", re: /merge conflict|CONFLICT \(|Automatic merge failed/i },
{ label: "Rate limited", re: /rate.?limit(?:ed)?|429 Too Many Requests|overloaded_error/i },
{ label: "Missing file/module", re: /command not found|Cannot find module|ModuleNotFoundError|No such file or directory/i },
{ label: "Port in use", re: /\bEADDRINUSE\b|address already in use|port (?:\d+ )?(?:is )?already in use/i },
{ label: "Disk full", re: /\bENOSPC\b|No space left on device|disk (?:is )?full/i },
{ label: "Docker daemon down", re: /Cannot connect to the Docker daemon|Is the docker daemon running|docker daemon is not running/i },
{ label: "TLS/cert error", re: /\bCERT_HAS_EXPIRED\b|certificate has expired|SSL certificate problem|self.?signed certificate|unable to verify the first certificate|x509: certificate/i },
{ label: "Lock held", re: /\bELOCKED\b|Unable to acquire lock|another process has locked|Waiting for (?:the )?(?:cache )?lock|could not get lock/i },
];

export function detectBlockers(text: string): Detector[] {
Expand Down
10 changes: 10 additions & 0 deletions tests/golden/13-non-english-answered.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"assistant": "Veo dos formas de manejar la paginación: cursores o desplazamiento por offset. ¿Cuál prefieres para el endpoint de usuarios?",
"user": "Usa cursores.",
"expect": {
"count": 1,
"answered": [
true
]
}
}
13 changes: 13 additions & 0 deletions tests/golden/14-long-multipart-partial.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"assistant": "Before I wire up the deploy, four things:\n1. Deploy to staging first or straight to prod?\n2. Run migrations automatically or gate them behind a manual step?\n3. Keep the old v1 endpoints alive during rollout or cut them immediately?\n4. Should the health check block the release if it fails?",
"user": "Staging first. Gate the migrations behind a manual step. Cut v1 immediately.",
"expect": {
"count": 4,
"answered": [
true,
true,
true,
false
]
}
}
Loading