aboutsummaryrefslogtreecommitdiff
path: root/src/detect.rs
AgeCommit message (Collapse)Author
2026-05-30refactor: split agent detection by agentOgulcan Celik
Move screen detection into per-agent modules and keep visible-state arbitration centralized in terminal state. Tighten Codex prompt-scoped working detection and Claude hook/screen recovery for stale blocked and idle reports. Add a focused just recipe for single-test runs. refs #349 refs #352
2026-05-27feat: add Qoder CLI integration (#309)Coder Wayne
* feat: add qodercli agent integration Recognize qodercli as an agent in herdr panes, with basic Idle/Working/ Blocked screen-state detection mirroring the existing claude / codex patterns. Adds an IntegrationTarget::Qodercli variant, install_target wiring for shell hooks under src/integration/assets/qodercli/, the herdr integration install qodercli CLI surface, and sound-override coverage so qodercli notifications follow the same routing rules as other agents. refs #308 * fix: detect qodercli permission required as blocked refs #308 * fix: detect qodercli ask-user prompt as blocked refs #308 * refactor: extract has_qodercli_blocked_prompt helper aligning detect_claude refs #308 * fix: tighten qodercli working state detection Combine spinner-row strictness and explicit cancel-hint matching, and stop matching the bare word 'working'. This avoids false positives when narrative output (logs, commit messages, Markdown) contains the word 'working' or when a stale braille glyph is sitting in the scrollback from a previous frame. - has_qodercli_spinner_row: require row-start braille glyph + space + alphabetic char so only an active spinner row triggers Working. - has_qodercli_working_hint: match '(esc to cancel,' as a positive signal that survives spinner masking (e.g. when a hook icon replaces the spinner glyph). refs #308 * fix: short-circuit qodercli press-again banners to idle refs #308 * fix: detect qodercli AskUser dialog by its 'Asking User' title refs #308 * feat: recognize qodercli, qoderclicn, qoder, qodercn process names Map qodercli, qoderclicn, qoder, and qodercn process names all to the Qodercli agent. Covers both international (qodercli/qoder) and CN (qoderclicn/qodercn) Qoder CLI binary names. refs #308 * feat: register qodercli hook in qoder settings.json with stdin payload Address the integration-layer feedback on #308: - `herdr integration install qodercli` now writes the bundled hook into ~/.qoder/hooks/herdr-agent-state.sh AND registers it in ~/.qoder/settings.json under the schema documented at https://docs.qoder.com/zh/cli/hooks (and confirmed against the packages/core/src/hooks/types.ts type definitions in qodercli's own source tree). The hooks object is keyed by event name — SessionStart / UserPromptSubmit / PreToolUse / PermissionRequest / Stop / SessionEnd — with each entry holding a matcher and a list of `{ type: "command", command, timeout }` invocations, mirroring how install_claude already wires claude code's settings.json. - The bundled assets/qodercli/herdr-agent-state.sh now reads the hook payload from stdin (per HookInput in qodercli's types.ts: session_id, transcript_path, cwd, hook_event_name, agent_id, ...). No environment variable is consulted to identify the event; SubagentStop and subagent release events return early so a recap or away-summary frame cannot revive an idle pane, mirroring assets/claude/herdr-agent-state.sh. - uninstall_qodercli reverses the same set of entries while preserving any foreign hook entries the user may have configured by hand. - Tests cover write / idempotency / uninstall-preserves-others and lock the stdin contract via a bundled-asset assertion. refs #308 --------- Co-authored-by: coderwayne <jlu1318079810@163.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-26fix: reduce idle agent checker CPUOgulcan Celik
refs #300
2026-05-26fix: detect codex background terminal waitsOgulcan Celik
2026-05-23feat: add state detection heuristics for GitHub Copilot CLI (#256)LaneBirmingham
* feat: add github copilot cli state detection Add robust state detection heuristics for the GitHub Copilot CLI by matching specific interactive prompt combinations, freeform inputs, and thinking status frames. refs #232 * docs: keep copilot docs staged for next release --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-05-23fix: detect kiro approval prompts as blockedOgulcan Celik
refs #255
2026-05-22fix: arbitrate stale agent state evidenceOgulcan Celik
refs #249
2026-05-22fix: detect cursor agent symlink aliasesOgulcan Celik
refs #225
2026-05-22fix: detect kimi code cli statesOgulcan Celik
refs #215
2026-05-21fix: avoid agent detection from runtime argumentsOgulcan Celik
refs #238
2026-05-21fix: detect antigravity cli sessionsOgulcan Celik
refs #207
2026-05-21fix: detect cursor agent sessionsOgulcan Celik
refs #225
2026-05-20feat: detect kiro cli agentsOgulcan Celik
refs #185
2026-05-19fix: prefer process group leader for agent detection (#172)kangal-bot
refs #161 Co-authored-by: kangal-bot <kangal-bot@users.noreply.github.com>
2026-05-19feat: support hermes agent integrationOgulcan Celik
refs #144
2026-05-17fix: detect Grok Build agent stateOgulcan Celik
refs #133
2026-05-16fix: detect copilot process nameOgulcan Celik
fixes #118
2026-05-12fix: detect nix-wrapped agent entrypointsOgulcan Celik
2026-05-06fix: clear native agent detection after shell returnsOgulcan Celik
fixes #66
2026-04-25fix(opencode): detect question prompt heuristicsOgulcan Celik
2026-04-21fix: restore headless test reliability on macosOgulcan Celik
2026-04-21feat: add persistent server-client sessionsCan Celik
Make herdr persistent by default. Launching herdr now starts or reattaches to a background session server. Clients can detach and reattach while panes and agent processes keep running. Session mode now supports multi-client attach, auto-detect startup, and a thin-client/headless-server split. This also refactors the large app, ui, input, pane, config, workspace, and persistence modules into smaller focused submodules, while preserving behavior and colocating tests with the code they exercise. Upgrade notes: - persistence mode is now the default - in-app quit detaches the current client instead of stopping the server - use `herdr server stop` to stop the background session - use `--no-session` for the old single-process behavior - default socket paths now live under the config directory
2026-04-16feat: allow hook-reported custom agent labelsOgulcan Celik
2026-04-14fix treat droid mission control as idleOgulcan Celik
2026-04-10fix: harden amp blocked detectionOgulcan Celik
2026-04-09docs: clarify automatic detection and socket integrationsOgulcan Celik
2026-04-09fix: avoid blocking on claude slash menusOgulcan Celik
2026-04-09fix: harden codex detection for narrow panesOgulcan Celik
2026-04-05refactor: remove vt100 backend and make ghostty defaultCan Celik
2026-03-30refactor sidebar status rollup and preserve pane orderOgulcan Celik
2026-03-30refactor: rename agent states to working and blockedOgulcan Celik
2026-03-28fix: stabilize claude state detectionOgulcan Celik
2026-03-28feat: add per-agent sound overridesOgulcan Celik
2026-03-28fix wrapped foreground job agent detectionOgulcan Celik
2026-03-27initial releaseOgulcan Celik
terminal workspace manager for AI coding agents. single rust binary, runs inside your existing terminal. workspaces, tiled panes, intelligent agent state detection. https://herdr.dev