feat: add gated tool output experience
This commit is contained in:
+12
-14
@@ -24,7 +24,10 @@
|
||||
|
||||
Complete the Android/client contract pivot before implementing backend behavior. The next release path targets a remote upstream Hermes Agent gateway/API server directly; `apps/companion` is legacy compatibility only.
|
||||
|
||||
## Beta path — upstream-connected MVP
|
||||
- [ ] **R1 — Adaptive/accessibility quality pass**
|
||||
- Small phone, normal phone, tablet/two-pane behavior; portrait/landscape.
|
||||
- Font scaling, TalkBack semantics, contrast, touch targets, reduced motion, IME behavior.
|
||||
- Verification: emulator/device matrix evidence documented in `docs/ROADMAP.md`.
|
||||
|
||||
## Externally blocked
|
||||
|
||||
@@ -33,20 +36,9 @@ Complete the Android/client contract pivot before implementing backend behavior.
|
||||
- Not complete: official upstream documentation still provides no session-search HTTP contract, and the configured local API server was not listening for a live compatibility exercise on 2026-07-24.
|
||||
- Unblock evidence is maintained in `docs/BLOCKERS.md`; do not mark B3 complete until documented search and real gateway behavior are verified.
|
||||
|
||||
- [ ] **B5 — Tool, artifact, and output experience**
|
||||
- Compact tool cards with lifecycle/status, expandable output, copy/share/save affordances.
|
||||
- Safe rendering for large logs and code; no unbounded nested scroll failures.
|
||||
- Artifact/file handoff only where upstream capability is actually supported.
|
||||
- Verification: large-output and rotation/resume checks.
|
||||
## Later beta work
|
||||
|
||||
## Beta hardening and release
|
||||
|
||||
- **Queued — R1: Adaptive/accessibility quality pass**
|
||||
- Small phone, normal phone, tablet/two-pane behavior; portrait/landscape.
|
||||
- Font scaling, TalkBack semantics, contrast, touch targets, reduced motion, IME behavior.
|
||||
- Verification: emulator/device matrix evidence documented in `docs/ROADMAP.md`.
|
||||
|
||||
- **Queued — R2: Beta packaging and install guide**
|
||||
- **R2 — Beta packaging and install guide**
|
||||
- Version `v0.1.0-beta.1`, reproducible debug/beta APK build, install/run guide, known limitations.
|
||||
- Publish source commit, APK, release notes, and verification result.
|
||||
- Verification: clean install on a real device or emulator plus full required checks.
|
||||
@@ -66,6 +58,12 @@ Complete the Android/client contract pivot before implementing backend behavior.
|
||||
|
||||
_Move finished items here with date, commit, and verification. Keep this section factual; do not claim unverified work._
|
||||
|
||||
- [x] **B5 — Tool, artifact, and output experience** — 2026-07-24, commit `feat: add gated tool output experience`.
|
||||
- Added capability-gated decoding and reduction for the existing `tool.started`, `tool.progress`, `tool.completed`, and `tool.failed` direct gateway SSE events, with compact lifecycle/status cards for referenced and stream-only tools.
|
||||
- Added full-output copy plus deterministic collapsed/expanded display windows capped at 5/80 lines and 24,000 expanded characters, avoiding same-direction nested scrolling while retaining the complete output in state.
|
||||
- Persisted expanded tool IDs in durable chat state so rotation/process resume restores presentation state; artifact share/save remains unavailable because the direct gateway advertises no verified artifact handoff URI/download capability.
|
||||
- Verification: the recovery preflight passed before this run; cached Kotlin 2.0.21 compilation passed for all Android Kotlin/Compose main and unit-test sources; direct JUnit passed 57 tests including large-output bounds, capability gating, lifecycle merging, and rotation/resume restoration; `git diff --check` passed. A direct Gradle `:app:testDebugUnitTest :app:assembleDebug` retry was blocked before project execution because the sandbox prohibits Gradle's TCP control socket (`java.net.SocketException: Operation not permitted`).
|
||||
|
||||
- [x] **B4c — Wire gateway SSE into durable chat sends** — 2026-07-24, commit `feat: wire durable gateway SSE sends`.
|
||||
- Added a direct-gateway send coordinator that captures the selected session, draft, route lease, and capability-built SSE request before asynchronous execution; it never reselects a route or switches an active stream.
|
||||
- Publishes only the currently reserved request's intermediate and terminal reducer states; terminal completion, gateway failure, and transport failure clear only the matching durable reservation while retaining the selected session and draft.
|
||||
|
||||
Reference in New Issue
Block a user