Commit e2d6a15
committed
β¨ feat(core,daemon,webapp): issue-driven agents, pluggable runtimes with fleet observability, and an incremental transcript engine
Transcript engine performance and a steadier TUI rail
- The activity engine now parses only the bytes appended to a session
transcript since the last read (per-adapter fold state, LRU-bounded,
thread-safe), and a stat-signature memo answers unchanged reads for the
cost of a stat. A daemon that pegged CPU and grew memory without bound on
large transcript trees now idles near zero with flat RSS.
- The TUI transcript rail force-scrolls to the tail only when the viewer is
already there, and a degraded read keeps the last good turns instead of
flapping to "(no transcript)" β no more scroll yanks on busy sessions.
Issue-driven agents (GitHub and Gitea)
- Comment `@grove <task>` on an issue and an agent picks it up: Grove creates
a ticket-linked workspace, and follow-up comments steer the already-running
session instead of starting over. Pause/resume/stop/status verbs manage the
run from the issue thread.
- One sticky status comment per issue stays continuously updated with the
agent's state, a live todo checklist, the branch, and a deep link to the
workspace session.
- Ships as a reusable composite action with GitHub and Gitea caller examples,
a permission-gated and deduplicated daemon ingest endpoint, comment I/O on
the ticket providers, and a full setup guide.
Onboarding CLI
- `grove config add-project` registers a repo with Grove from the shell;
`grove skills install` drops a bundled fleet-orchestration skill into
Claude Code / Codex; `grove mcp install` registers Grove as an MCP server
through each tool's own `mcp add`; `grove config init --with-onboarding`
runs the whole funnel non-interactively.
Agent introspection keeps pace with the tools
- Claude Code's split-call Task system (TaskCreate/TaskUpdate) is recognized
and folded into the same todo shape TodoWrite produces, so task boards
reconstruct correctly on every surface with zero wire changes.
- A per-adapter telemetry-env seam auto-enables native tool telemetry at
launch.
Transcript rendering
- File edits render as always-visible inline diff cards: worktree-relative
path with a full-path tooltip, +/β line counts, a line-number gutter, and
neutral code text with tinted add/remove rows.
- Single-pane view widens the transcript column to use a desktop viewport;
split view keeps its reading measure.
Runtime spine, native interception, and observability
- Launch, keep-alive, steer, and observe are decoupled from tmux behind a
pluggable launch-backend seam; headless and Docker-container backends join
the tmux default.
- Native interception replaces keystroke hacks: default-on hook push, a
native permission-prompt tool, a bidirectional steering channel, and a
per-session control surface with a webapp Controls tab.
- The sub-agent fleet is visible end to end: an agentic-loop spine, a
per-sub-agent fleet tree in the webapp, a live token indicator, and a
pinned todo/plan card above the composer.
- Observability groundwork: an LLM gateway proxy, an OpenTelemetry trace
instrumentor over the loop spine, and telemetry configuration composed
into every launch.1 parent 1a1f45c commit e2d6a15
144 files changed
Lines changed: 21369 additions & 654 deletions
File tree
- .gitea/workflows
- .github
- workflows
- actions/issue-ops
- docs
- examples
- src/grove
- client
- core
- agents
- contracts
- issueops
- tickets
- daemon
- mcp
- skills/using-grove
- tui
- screens
- widgets
- tests
- client
- cli
- core
- agents
- fixtures
- contracts
- issueops
- tickets
- daemon
- mcp
- tui
- webapp
- components
- assistant-ui
- chat
- workspace
- lib/grove
- tests
- component
- unit
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
58 | 59 | | |
59 | 60 | | |
60 | 61 | | |
| 62 | + | |
61 | 63 | | |
62 | 64 | | |
63 | 65 | | |
| |||
0 commit comments