Skip to content

Feature/streaming pipes#93

Merged
vsilent merged 15 commits intotrydirect:masterfrom
vsilent:feature/streaming-pipes
Apr 21, 2026
Merged

Feature/streaming pipes#93
vsilent merged 15 commits intotrydirect:masterfrom
vsilent:feature/streaming-pipes

Conversation

@vsilent
Copy link
Copy Markdown
Collaborator

@vsilent vsilent commented Apr 21, 2026

No description provided.

vsilent and others added 14 commits April 18, 2026 12:15
… 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
Copilot AI review requested due to automatic review settings April 21, 2026 10:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 PipeRuntime with 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 --version output; 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 vsilent merged commit 3dce38e into trydirect:master Apr 21, 2026
6 checks passed
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>
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.

2 participants