Description
The OpenAEV platform enum `io.openaev.database.model.ContractOutputType` already has an `ActionOutput` value (wire label `action_output`, see `ActionOutputOutputProcessor`), used to store raw injector stdout as a finding with `isFindingCompatible=false` — i.e. usable as a chaining/event filter without showing up as a visible finding.
`pyoaev.contracts.contract_config.ContractOutputType` does not expose this value, so injectors written with `client-python` (e.g. netexec) cannot declare a contract output of this type.
Motivation
Follow-up from investigating why the netexec injector's contracts (declared `text` output) never produce findings: netexec has no dispatcher/extractor turning its raw stdout into a `text` finding, and `text` findings would pollute the Findings tab anyway. The intended fix is to route netexec's stdout through the new `action_output` type instead, with `isFindingCompatible=false`, so it stays usable as an event/condition filter without becoming a visible finding.
Proposed change
Add `ActionOutput: str = "action_output"` to `ContractOutputType` in `pyoaev/contracts/contract_config.py`, matching the platform enum exactly.
Description
The OpenAEV platform enum `io.openaev.database.model.ContractOutputType` already has an `ActionOutput` value (wire label `action_output`, see `ActionOutputOutputProcessor`), used to store raw injector stdout as a finding with `isFindingCompatible=false` — i.e. usable as a chaining/event filter without showing up as a visible finding.
`pyoaev.contracts.contract_config.ContractOutputType` does not expose this value, so injectors written with `client-python` (e.g. netexec) cannot declare a contract output of this type.
Motivation
Follow-up from investigating why the netexec injector's contracts (declared `text` output) never produce findings: netexec has no dispatcher/extractor turning its raw stdout into a `text` finding, and `text` findings would pollute the Findings tab anyway. The intended fix is to route netexec's stdout through the new `action_output` type instead, with `isFindingCompatible=false`, so it stays usable as an event/condition filter without becoming a visible finding.
Proposed change
Add `ActionOutput: str = "action_output"` to `ContractOutputType` in `pyoaev/contracts/contract_config.py`, matching the platform enum exactly.