feat(agents): bundle native monitoring tools - #234
Draft
johnmatthewtennant wants to merge 2 commits into
Draft
Conversation
Signed-off-by: John Tennant <jtennant@block.xyz>
Signed-off-by: John Tennant <jtennant@block.xyz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bundle long-lived monitoring and cross-session orchestration directly with Berd:
berd-monitorsidecar that detaches producers, buffers line-oriented output across Berd downtime, wakes the owning session throughberdctl, and stops complete process trees on macOS, Linux, and Windows;berd-monitorandberd-orchestratorskills so agents can discover and use those workflows without private configuration;berdctl session send --fromattribution, rendered and replayed as a concise sender label, withberd-monitorusing--from berd-monitor.Monitor state is private, session-scoped, and exclusively owned. Failed launches surface synchronously, oversized output is safely chunked, final delivery retries until success or explicit stop, and stopped runs do not leak pending output into later runs.
Related issue
none found
Testing
NODE_OPTIONS=--no-experimental-webstorage just ci(7,100 frontend tests passed, 1 skipped; Rust checks, clippy, release-script tests, and production build passed)cargo test -p berd-monitor --manifest-path src-tauri/Cargo.toml(8 passed)cargo check -p berd-monitor --manifest-path src-tauri/Cargo.toml --target x86_64-pc-windows-msvcscripts/prepare-berdctl-sidecar.sh(staged both release sidecars)berdctl/message replay tests (246 passed)Reviewer-reproducible examples
Build the monitor, then verify launch errors are reported rather than silently detached:
cargo build -p berd-monitor --manifest-path src-tauri/Cargo.toml BERD_MONITOR_STATE_DIR="$(mktemp -d)" \ src-tauri/target/debug/berd-monitor run \ --state-key missing --label missing --session-id test-session -- \ command-that-does-not-exist-berd-monitorThe command exits nonzero and prints the producer launch error.
The lifecycle regressions are also executable directly:
The transcript attribution is text-only and has no layout change; queued send, bubble rendering, and replay persistence are covered by the focused frontend tests above.