Devolutions / Devolutions/ironPosh
PSRP: pipeline input streaming (PIPELINE_INPUT / END_OF_PIPELINE_INPUT)
- Dominant language
- Rust
- Stars
- 10
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
## Gap
We cannot stream input into a running remote pipeline. `PIPELINE_INPUT` is a stub (serialization commented out) and `END_OF_PIPELINE_INPUT` is enum-only. This blocks cmdlets/native exes that read from the pipeline (`$input`, `Write-Output | remote-cmd`, interactive stdin-style flows).
## Current state
- `crates/ironposh-psrp/src/messages/pipeline_input.rs` — struct present, `impl` is a commented-out block.
- `END_OF_PIPELINE_INPUT` — message-type ID only (`crates/ironposh-psrp/src/cores.rs:51`), no message struct.
## Required
- Implement `PIPELINE_INPUT` serialization (a CLIXML-serialized object per input item) and `END_OF_PIPELINE_INPUT`.
- Plumb a way to feed input objects to a created pipeline through client-core (and surface it in the tokio client; consider the web client too).
- The pipeline must be created with input enabled (`NoInput=false` in CREATE_PIPELINE) when input will be sent.
## Acceptance
- An e2e test that pipes input into a remote command that consumes `$input` and asserts the expected output.
## References
- psrpcore `src/psrpcore/_psrp.py` (PIPELINE_INPUT / END_OF_PIPELINE_INPUT), pypsrp `powershell.py`.
- Native C# `EncodeAndDecode.cs` (`PowerShellInput` / `PowerShellInputEnd`).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with crates/ironposh-psrp/src/messages/pipeline_input.rs and crates/ironposh-psrp/src/cores.rs:51, then compare the PIPELINE_INPUT and END_OF_PIPELINE_INPUT handling in psrpcore, pypsrp, and EncodeAndDecode.cs. Trace how client-core and the tokio client create and feed a pipeline, considering the web client as noted. Done means an e2e test pipes input to a remote command consuming $input and verifies the expected output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100