Devolutions / Devolutions/ironPosh
PSRP: GET_COMMAND_METADATA support
- Dominant language
- Rust
- Stars
- 10
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
## Gap
`GET_COMMAND_METADATA` is not implemented (message-type ID only). This message powers `Get-Command` metadata retrieval and implicit remoting (proxy-function generation). Both pypsrp/psrpcore and native C# implement it.
Note: our interactive tab-completion works via a *different* path (running a command), so this is additive, not a regression.
## Current state
- Enum ID only: `crates/ironposh-psrp/src/cores.rs` (~lines 47, 83). No request builder, no response parsing.
## Required
- Build the `GET_COMMAND_METADATA` pipeline message (command name patterns, command types, module names, ArgumentList).
- Parse the streamed response: `CommandMetadataCount`, `CommandMetadata`, `ParameterMetadata` objects.
- Expose a client-core API (e.g. `get_command_metadata(...)`).
## Acceptance
- An e2e test retrieving metadata for a known cmdlet (e.g. `Get-Process`) and asserting parameter metadata is parsed.
## References
- psrpcore `src/psrpcore/_pipeline.py` (GetMetadata) + `_client.py` ClientGetCommandMetadata.
- pypsrp `powershell.py` `get_command_metadata`.
- Native C# `EncodeAndDecode.cs` `GenerateGetCommandMetadata` (~line 787).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the enum entries in crates/ironposh-psrp/src/cores.rs, then compare psrpcore's _pipeline.py and _client.py, pypsrp's powershell.py, and C#'s EncodeAndDecode.cs GenerateGetCommandMetadata. Implement the request and streamed metadata parsing, expose the client-core API, and add an end-to-end test for Get-Process that verifies parameter metadata is parsed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, python, rust
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100