aboutsummaryrefslogtreecommitdiff
path: root/src/integration
AgeCommit message (Collapse)Author
2026-09-22fix: track opencode subagent status per pane (#4357)Can Celik
refs #1362
2026-09-18test: isolate integration assets from inherited omp environment (#4351)akbash
refs #4346 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-09-17test: skip windows symlink tests without symlink privilege (#4311)JJ Liebig
Windows refuses file symlinks with ERROR_PRIVILEGE_NOT_HELD (1314) unless the test process is elevated or Developer Mode is enabled, which broke non-admin local runs. Share a helper that reports the missing privilege so the two symlink tests skip only the symlink-dependent assertions.
2026-09-16fix: respect opencode tui.json registrations (#4250)akbash
refs #4240 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-14fix: protect integration configs from failed writes (#3973)akbash
* fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 * fix: atomically write integration configs refs #3970 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: keep plugins working after client-only updates (#4077)Can Celik
2026-09-13fix: keep hermes enabled list valid yaml (#4056)JJ Liebig
* fix: keep hermes enabled list valid yaml refs #3839 * fix: preserve hermes inline list quoting and comments refs #3839
2026-09-13feat: add Letta Code detection and restore (#3107)Can Celik
refs #3106 Co-authored-by: Cameron <cameron@pfiffer.org>
2026-09-13fix: restrict claude session hooks to native sources (#4046)akbash
refs #4018 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
2026-09-13fix: update grok session after new (#2683)akbash
* fix: update grok session after new refs #2681 * fix: avoid powershell args shadowing refs #2681 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-12fix: ignore nested OMP session reports (#3994)JJ Liebig
refs #2593
2026-09-11fix: opencode v2 lifecycle reporting (#3757)Mark Jaquith
* fix: support opencode v2 lifecycle reporting * fix: repair Japanese docs * fix: ignore payload-less OpenCode events * fix: harden opencode v2 integration install and reporting Follow-ups on top of the V2 lifecycle support: - create `cli.json` when OpenCode has no V1 TUI preferences (`tui.json` or `kv.json`) to migrate, instead of only registering into an existing file - settle stalled socket attempts with a plain connect timer, and resend the latest lifecycle state after a failed delivery so the pane cannot get stuck - resolve the OpenCode state directory from `XDG_STATE_HOME` - remove the managed `herdr-opencode` directory on uninstall - document failed executions reporting `blocked`, keep the integration test environment independent of an inherited `XDG_STATE_HOME`, and simplify `reconcileBlockers` to reassign its map --------- Co-authored-by: Jonathan Liebig <jonathan.liebig@gmail.com>
2026-09-10fix(pi): support Windows session paths (#3729)akbash
refs #3726 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-09-06fix: prevent OpenCode child prompts from leaving status blocked (#3669)Mark Jaquith
Child permission and question reports omitted the session ID, clearing Herdr’s root session identity and preventing later lifecycle reports from clearing the blocked state. Track child-to-parent relationships and report prompt transitions with their root session ID, including for nested children. This preserves identity and lets existing ownership checks reject unrelated sessions. Add regression coverage for prompt routing and lifecycle transitions, and bump the OpenCode integration version to 11.
2026-09-05fix: run the full applicable test suite on windows (#3660)JJ Liebig
* fix: run the full applicable test suite on windows * test: remove redundant test shell assignment * test: make endpoint and metadata fixtures deterministic * test: tolerate exited servers during windows probe cleanup
2026-09-04fix(integration): resolve Devin config on Windows (#3595)JJ Liebig
refs #2724
2026-09-01refactor: render the shell in the client (#3487)Can Celik
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
2026-08-30fix: encode antigravity windows hook command (#3352)akbash
refs #3348 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
2026-08-28fix: ignore cursor events in claude hooks (#3342)Can Celik
refs #2832
2026-08-23fix: keep omp panes working through scheduled continuations (#3122)caner-akca
refs #2851
2026-08-13feat: add qwen code detection and restore (#2743)Can Celik
refs #2730
2026-08-12fix: use the running binary in agent hooks (#2722)JJ Liebig
2026-08-10fix: track opencode tui session selection (#2455)akbash
refs #2450 Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-07feat: support all agent integrations on windows (#2496)Can Celik
2026-08-03fix(pi): restrict state reporting to tui sessions (#2159)Rhys
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-08-02fix: preserve claude settings formatting (#2089)akbash
refs #2066 Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-08-01feat: add antigravity-cli integration (#2087)Ludovico Magnocavallo
* feat: add antigravity_cli integration harness Register the `antigravity_cli` target, resolve its configuration directory to `~/.gemini/antigravity-cli/`, wire target actions, and add lifecycle hook scripts for Unix and Windows. * feat: support session resume for antigravity-cli * fix: correct antigravity-cli hook config path, shape, and agent label Antigravity CLI reads global customizations from ~/.gemini/config, keys hooks.json by hook name, and only accepts the matcher/hooks wrapper for the tool events. The previous install wrote event arrays at the top level of ~/.gemini/antigravity-cli/hooks.json, which agy never reads and would reject anyway, so no Herdr hook ever ran. Session reports were dropped for a third reason: the hooks reported the agent as antigravity-cli, but the server normalizes that to the canonical label agy before matching, so is_official_agent_source never matched and agy --conversation resume was unreachable. - Resolve the config dir to ~/.gemini/config - Nest Herdr entries under a Herdr-owned "herdr" block that install rewrites and uninstall removes, leaving other named hooks untouched - Emit grouped entries for PreToolUse/PostToolUse and flat handler lists for PreInvocation/PostInvocation/Stop - Report the canonical agy label from both hook assets and match it in agent_resume - Compile-gate the hook asset constants and stop shadowing $args in the PowerShell hook - Document the real directory, that it must already exist, and the named-block behavior refs #1011 refs #1571 * fix: make antigravity-cli integration session-only antigravity cli cannot express lifecycle safely: there is no blocked event, postinvocation is skipped on interruption, and stop fires at the end of a turn rather than on process exit, which left stale state and released authority at the wrong time. report only the conversation on preinvocation and let screen detection own agent state. resume via `agy --conversation <id>` is unchanged. * fix: update antigravity session after conversation switch --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-30fix(omp): support Windows session paths (#2092)Wiedzmin
2026-07-28fix: ignore nested codex session reports (#1927)JJ Liebig
* fix: ignore nested codex session reports refs #1789 * test: cover matching codex thread id --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
2026-07-25fix: harden hermes lifecycle detectionOgulcan Celik
2026-07-24feat: add grok cli integration for native session restore (#1807)Enrico Carlesso
* feat: add grok cli integration for native session restore tl;dr: adds `herdr integration install grok` (session-identity tier: a SessionStart hook reports the grok session id for native restore; state stays screen-detected via the bundled manifest). Grok merges every ~/.grok/hooks/*.json, so install writes a self-contained hooks/herdr.json registering a SessionStart hook next to hooks/herdr-agent-state.sh, and never touches other hook files. The hook prefers $GROK_SESSION_ID (injected into every grok hook process) and reports through the socket API; herdr:grok is a reserved-native-state source so screen detection stays authoritative. Restore uses `grok --resume <id>`. Additive JSON API change; no protocol bump; the schema artifact is regenerated. refs #1800 * fix: honor GROK_HOME and validate grok hook config in status Review follow-ups: grok_dir now resolves GROK_CONFIG_DIR (herdr test seam) before GROK_HOME (the grok CLI's own config-home override) before ~/.grok, so hook installs land where grok actually looks. Integration status now also validates the herdr-owned hooks/herdr.json next to the hook script — missing, corrupt, or no-longer-referencing configs report the install as outdated instead of masking a hook grok never invokes. refs #1800 * fix: validate the exact grok session hook command in status The config validator matched on a filename substring, so a SessionStart command like `echo herdr-agent-state.sh`, or one invoking the script without the `session` action, still reported the integration as current while grok never delivered a session id. Status now compares against the exact command the installer writes, via a shared builder, and the degradation tests cover both nonfunctional shapes. refs #1800 * fix: require a command-type grok session hook in status validation A config entry carrying the exact generated command under a non-command hook type (e.g. "http") is never executed by grok, so it must not report the integration as current. The validator now also requires type = "command", with a degradation test for the mismatched-type shape. refs #1800 * fix: validate the complete grok hook config refs #1800 --------- Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-24fix: make known-agent exit process-ownedOgulcan Celik
refs #1792 refs #1648
2026-07-22fix: respect OMP config directory overrideOgulcan Celik
refs #1696
2026-07-22refactor: clarify opencode event state mappingOgulcan Celik
replaces contributions from soar
2026-07-22refactor: simplify cursor session reportingOgulcan Celik
replaces contributions from udirom
2026-07-22refactor: simplify kimi lifecycle reportingOgulcan Celik
replaces contributions from wbxl2000
2026-07-22refactor: simplify qoder session reportingOgulcan Celik
replaces contributions from wayneleelwc
2026-07-21fix: use pi settled lifecycle eventOgulcan Celik
2026-07-20fix: report kimi questions as blockedOgulcan Celik
2026-07-18fix: support javascript integrations on windowsOgulcan Celik
refs #1531
2026-07-18fix: serialize opencode lifecycle reportsOgulcan Celik
refs #1519
2026-07-17fix(windows): prevent remaining subprocess console flashesOgulcan Celik
refs #1468
2026-07-14fix: retry dropped omp lifecycle reportsOgulcan Celik
refs #1310
2026-07-09fix: reanchor pi status after session replacement (#1189)Dillon Mulroy
* fix: reanchor pi status after session replacement refs #943 * fix: guard active pi sessions from nested startup refs #943 * fix: serialize pi session replacement reports refs #943
2026-07-05fix: retry pi state socket reportsOgulcan Celik
refs #1049
2026-07-04feat: add mastracode integration (#788)Ward Peeters
* feat: add mastracode integration refs #337 Co-authored-by: Mastra Code (openai/gpt-5.5) <noreply@mastra.ai> Co-authored-by: Ogulcan Celik <ogulcancelik@gmail.com>
2026-07-03fix: preserve pi and omp working status across reloads (#984)Dillon Mulroy
2026-06-30fix: opencode — report subagent permission prompts as blocked + handle ↵Aleksey @soar Smyrnov
session.status object form (#838) refs #838
2026-06-30fix: recover omp resume and blocked statesOgulcan Celik
refs #879
2026-06-25refactor: split integration moduleOgulcan Celik