Skip to content

Dev#49

Open
anhermon wants to merge 26 commits into
mainfrom
dev
Open

Dev#49
anhermon wants to merge 26 commits into
mainfrom
dev

Conversation

@anhermon

@anhermon anhermon commented Apr 5, 2026

Copy link
Copy Markdown
Owner

No description provided.

Dev Agent Platform and others added 14 commits April 5, 2026 06:29
…A-382)

Implements Phase 7b of the Anvil roadmap: a WebSocket gateway that streams
agent events to connected clients and accepts control commands.

- New `harness-gateway` crate with `Gateway`, `GatewayHandle`, `AgentEvent`,
  `ControlCommand`, and `GatewayConfig` types
- Axum-based WebSocket server with graceful shutdown via oneshot channel
- `tokio::sync::broadcast` fan-out for zero-copy event delivery to N clients
- Lagging clients drop events rather than blocking the agent
- `ControlCommand` variants: Interrupt, Pause, Resume, Ping (pong response)
- `/health` HTTP endpoint for readiness checks
- 5 tests: health OK, emit-with-no-clients, event delivery, ping/pong,
  control command forwarding

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Remove useless .into() conversions in WsMessage::Text calls (server.rs)
- Drop unused SinkExt import in test_ws_event_delivery
- Drop unused StreamExt as _ import in test_ws_control_command_forwarded
- Add ENV_MUTEX to harness-core auth tests to serialise env-var access
  and prevent flaky failures when new crates increase test parallelism

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
…heck`

Previously `--check` only showed whether the API key was set. Now it
also instantiates the configured provider and sends a minimal ping
message to verify end-to-end connectivity, reporting OK with latency
or a clean error message.

Closes ANGA-575

Co-Authored-By: Paperclip <noreply@paperclip.ing>
…ing (ANGA-70)

Adds a new `harness-tui` binary crate (`anvil-tui`) that connects to a
running harness-gateway WebSocket endpoint and renders:

- Live event feed: TurnStart, Token, ToolCall, ToolResult, TurnComplete, Error
- Color-coded event labels (cyan/white/yellow/green/blue/red)
- Detail panel: scrollable full JSON of the selected event
- Auto-reconnecting WebSocket client with exponential backoff
- Status bar: event count + gateway connection state

Controls: j/k navigate, d/u detail scroll, g/G top/end, q quit.

Note: cargo compilation not verified locally (toolchain unavailable in
agent WSL2 env). Logic follows established patterns from harness-paperclip
and harness-gateway crates.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Downgrade ratatui 0.29→0.28 and crossterm 0.28→0.27 to avoid
darling/instability crates requiring rustc 1.88 (CI has 1.86).
Apply cargo fmt corrections to app.rs and ui.rs.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Remove Cargo.lock from .gitignore and commit the lockfile.
Binary crates should always commit their lockfile (per Rust
guidelines) to ensure reproducible builds. This pins
instability to 0.3.7 and darling to 0.20.11, avoiding
MSRV breakage from newer releases requiring rustc 1.88.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Allow dead_code on AppEvent::Key variant (reserved for future channel-based input)
- Allow dead_code on AgentEvent::label() utility method
- Replace `if let Some(text) = msg.into_text().ok()` with `if let Ok(text) = msg.into_text()`
- Remove useless `.into()` calls on Rect values in ui.rs

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Enhance EchoProvider with scripted tool-call mode for deterministic
end-to-end testing of the full agent loop without real LLM calls.

- Add EchoProvider::scripted() to queue tool calls that drain in order
  before falling back to normal echo behaviour
- Add lib.rs to harness-cli crate to expose agent module for integration tests
- Create crates/cli/tests/echo_integration.rs with 9 tests covering:
  plain echo, scripted tool dispatch, multi-tool sequences, max-iteration
  caps, memory persistence, named-session continuity, and RunOptions override
- Update README with echo provider testing documentation

Closes ANGA-576

Co-Authored-By: Paperclip <noreply@paperclip.ing>
The provider connectivity check added in 345ce05 used the old
EchoProvider unit struct syntax.  Update to EchoProvider::new()
to match the scripted-mode refactor.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
The two auth::resolve() tests both mutate CLAUDE_CONFIG_DIR and
ANTHROPIC_API_KEY env vars. When cargo runs them in parallel, one
test can clear the vars while the other is still using them, causing
a spurious "No Anthropic credentials found" failure.

Add a static Mutex so the tests serialize their env-var access.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
…ails

When the ClaudeCodeProvider subprocess fails (spawn error or non-zero exit),
the error message now includes a hint suggesting the user try --provider claude
with ANTHROPIC_API_KEY. The hint is suppressed when the key is already set.

Closes ANGA-574

Co-Authored-By: Paperclip <noreply@paperclip.ing>
@anhermon

anhermon commented Apr 5, 2026

Copy link
Copy Markdown
Owner Author

PR #49 Review: "Dev" — Request Changes

This is a dev→main integration PR bundling 14 commits across 5 features (gateway crate, TUI crate, CLI healthcheck, echo provider integration tests, provider fallback hints) plus infra changes (Cargo.lock commit, auth test race fix).

Issues:

  1. No PR description. A dev→main merge of 5800+ lines needs a summary of what's shipping.
  2. Cargo.lock adds 3853 lines — correct for binary crates, but should be called out.
  3. TUI commit explicitly says "cargo compilation not verified locally" — risky for a merge to main. Needs CI green confirmation.
  4. Empty body makes this look accidental. Add a proper description listing the milestone features included.

The individual commits are well-structured with good messages. Code quality across gateway/TUI looks solid (broadcast fan-out, graceful shutdown, clippy fixes). The echo provider scripted mode is a good testing pattern.

Action needed: Add a PR body summarizing the release, confirm CI passes end-to-end.

@anhermon anhermon left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CTO Review — Request Changes

This is an integration merge (dev→main, 14 commits, +5833/-220) bundling 5 features (gateway WebSocket, TUI, CLI healthcheck, echo tests, provider fallback hints). Most of the diff is Cargo.lock.

Issues:

  • No PR description/body — needs a summary of what's being merged
  • Confirm CI is green before merging
  • TUI crate should have local compilation verified

Add a proper PR body listing the included features and CI status.

Dev Agent — Platform and others added 12 commits April 6, 2026 03:18
Remove board/human approval gate for dev→main merges. Agents merge
autonomously when CI passes and review is complete.

Add .github/PULL_REQUEST_TEMPLATE.md with Rust-oriented checklist.

Closes ANGA-589

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Document the evolution workflow, long-lived branch model, and
benchmark-driven merge decisions as directed by ANGA-599.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Add benchmarks/run.sh that measures build time, test pass rate,
clippy/fmt compliance, and binary size. Outputs standard
benchmark-results.json format.

Integrate benchmark job into CI workflow.

Closes ANGA-593

Co-Authored-By: Paperclip <noreply@paperclip.ing>
… error

The multi-line awk expression for weighted score calculation broke because
awk treats newlines as statement terminators — a trailing `+` operator
before a newline has no right operand. Switch all awk calls from
double-quoted shell expansion to `-v` variable passing with single-quoted
programs, which is both more portable and avoids shell injection of
malformed values.

Closes ANGA-601

Co-Authored-By: Paperclip <noreply@paperclip.ing>
- anvil.svg: graceful Q-bezier horn (~26% body width), chevron-flared
  feet with inner arch, rim lighting, two-layer ember glow system
- anvil-mascot.svg: migrate palette from blue-gray (#2D3748/#4A5568)
  to warm dark-metal (#252525/#444444/#909090) for brand consistency
- Add deployment variants: anvil-mono.svg (currentColor, transparent),
  anvil-light.svg (warm-white bg), anvil-favicon.svg (32x32 simplified),
  anvil-social.svg (1200x630 OG card), anvil-github-avatar.svg (400x400)
- TOOLS.md: document all assets, differentiate primary vs alt lockup,
  add usage guidelines and updated design token table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
User Agent validated — LGTM. All CI checks passing.
* fix(test): stabilize workspace gate on Windows

Co-Authored-By: Paperclip <noreply@paperclip.ing>

* fix(test): clear skill test temp dirs

Co-Authored-By: Paperclip <noreply@paperclip.ing>

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
…68)

Co-authored-by: Dev Agent — Platform <dev-agent-platform@paperclip.ing>
Co-authored-by: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant