Feature/streaming pipes#93
Merged
vsilent merged 15 commits intotrydirect:masterfrom Apr 21, 2026
Merged
Conversation
… with new source contract fields, worker support, and activation validation. - The external pipe path no longer depends on Docker-only compilation. Default and minimal builds both support activate_pipe, trigger_pipe, signed webhook ingress, and advertised pipe capabilities; only container-local fetch/send remains Docker-gated.
…untime file on every trigger/failure, redacts URL credentials before persistence, writes the state file with 0600 on Unix, vendors the pipe contract fixtures into tests/fixtures/pipe-contract, removes the external fixture clone from CI, and drops the unused shared_fixtures build context from Dockerfile.prod
…status into feature/streaming-pipes
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an agent-side “pipe runtime” to support pipe activation/deactivation/triggering (including webhook ingest and background workers), plus supporting CLI/versioning, docs, CI, and container-build updates.
Changes:
- Introduce
PipeRuntimewith persistence/restore and source workers (poll/websocket/gRPC/AMQP), and wire it into local API + daemon execution paths. - Add pipe webhook ingest route and advertise pipe capabilities via
/capabilities, with new/expanded integration and unit tests. - Add build-time display version (
STATUS_DISPLAY_VERSION) and adjust CLI--versionoutput; update docs/CI/Dockerfiles for the new flows and fixtures.
Reviewed changes
Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/security_integration.rs | Expands security integration tests for pipe flows (webhook/manual/poll) and adds local capture helpers/env guarding |
| tests/http_routes.rs | Adds capability test asserting pipe features are advertised |
| tests/cli_version.rs | Adds assertions for exact --version/-V output format |
| src/main.rs | Uses build-time display version and adjusts version handling + local_api serve signature |
| src/comms/local_api.rs | Adds PipeRuntime to state, persistence restore on startup, webhook ingest route, and pipe features in capabilities |
| src/commands/stacker.rs | Implements pipe commands, runtime/persistence, delivery reporting shape, and AMQP worker support (via lapin) |
| src/commands/mod.rs | Re-exports PipeRuntime and runtime state-path helper |
| src/agent/daemon.rs | Initializes/restores PipeRuntime and passes it into command execution |
| docs/LONG_POLLING_QUICKSTART.md | Documents command-transport boundary vs AMQP executor flow |
| docs/COMPOSE_AGENT_SIDECAR.md | Clarifies transport boundary and pipe command execution context |
| build.rs | Emits STATUS_DISPLAY_VERSION and git rerun-if-changed hints; keeps proto build step |
| README.md | Documents command transport split and adds pipe commands to supported list |
| Dockerfile.prod | Ensures build.rs/proto are in build context for version/proto generation |
| Dockerfile.compose-agent | Ensures build.rs/proto are in build context |
| Dockerfile | Ensures build.rs/proto are in build context |
| Cargo.toml | Adds lapin dependency |
| Cargo.lock | Locks new dependency graph for AMQP support |
| .github/workflows/ci.yml | Optionally checks out/links shared fixtures repo for contract-style tests |
vsilent
added a commit
that referenced
this pull request
May 2, 2026
* RUSTSEC-2026-0049 (rustls-webpki) — fixed by upgrading 0.103.8 -> 0.103.10 * capture probe samples * update notifications implemented, clippy fix, cargo fmt * AlertManager + TokenProvider * cargo clippy --no-default-features --features minimal fixes * trigger pipe command * fmt all * feat: add real WebSocket and gRPC streaming transports - Replace WS stub with real tokio-tungstenite client (ws_fetch_source, ws_send_target, connect_and_stream) - Add gRPC client transport (grpc_fetch_source, grpc_send_target) with tonic/prost and JSON↔prost_types conversion - Add proto/pipe.proto with PipeService (Send + Subscribe RPCs) - Add build.rs for tonic-build protobuf compilation - Route ws:// and grpc:// target URLs in handle_trigger_pipe to appropriate streaming transports - Add tokio-tungstenite, tonic, prost, prost-types dependencies - All 371 lib tests + 19 integration tests passing Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * .claude/settings.local.json appears to be a local, developer-specific tool-permissions file. Committing it can unintentionally standardize local permissions or leak workflow assumptions. Consider removing it from version control and adding .claude/ (or at least settings.local.json) to .gitignore, or rename to a non-local template. Fix * ignore claude files * fix reviewer comments * protoc deps * clippy blockers fix * Feature/streaming pipes (#91) * RabbitMQ/AMQP source support is now wired into the agent pipe runtime with new source contract fields, worker support, and activation validation. - The external pipe path no longer depends on Docker-only compilation. Default and minimal builds both support activate_pipe, trigger_pipe, signed webhook ingress, and advertised pipe capabilities; only container-local fetch/send remains Docker-gated. * more tests * shared cross-repo contracts * cross-repo contract json between stacker and status for pipe feature * copy build.rs and proto * PIPE_POLL_INTERVAL_SECS to a minimum of 1s, stops writing the pipe runtime file on every trigger/failure, redacts URL credentials before persistence, writes the state file with 0600 on Unix, vendors the pipe contract fixtures into tests/fixtures/pipe-contract, removes the external fixture clone from CI, and drops the unused shared_fixtures build context from Dockerfile.prod * get fixtures from external repo * status --version now prints the build version with the git short hash, e.g. 0.1.7 (a8ac35f). * workflow fix attempt * ci fixtures * actions fix --------- Co-authored-by: vsilent <jabberroid@gmail.com> * Feature/streaming pipes (#93) * RabbitMQ/AMQP source support is now wired into the agent pipe runtime with new source contract fields, worker support, and activation validation. - The external pipe path no longer depends on Docker-only compilation. Default and minimal builds both support activate_pipe, trigger_pipe, signed webhook ingress, and advertised pipe capabilities; only container-local fetch/send remains Docker-gated. * more tests * shared cross-repo contracts * cross-repo contract json between stacker and status for pipe feature * copy build.rs and proto * PIPE_POLL_INTERVAL_SECS to a minimum of 1s, stops writing the pipe runtime file on every trigger/failure, redacts URL credentials before persistence, writes the state file with 0600 on Unix, vendors the pipe contract fixtures into tests/fixtures/pipe-contract, removes the external fixture clone from CI, and drops the unused shared_fixtures build context from Dockerfile.prod * get fixtures from external repo * status --version now prints the build version with the git short hash, e.g. 0.1.7 (a8ac35f). * workflow fix attempt * ci fixtures * actions fix * fixture repo/dir access --------- Co-authored-by: vsilent <jabberroid@gmail.com> * chore(release): v0.1.8 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: vsilent <jabberroid@gmail.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
No description provided.