Skip to content

feat(client): add action_output contract output type (#331) - #332

Merged
Seb-MIGUEL merged 1 commit into
mainfrom
feat/add-action-output-contract-type
Aug 3, 2026
Merged

feat(client): add action_output contract output type (#331)#332
Seb-MIGUEL merged 1 commit into
mainfrom
feat/add-action-output-contract-type

Conversation

@Seb-MIGUEL

@Seb-MIGUEL Seb-MIGUEL commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add ActionOutput: str = "action_output" to ContractOutputType in pyoaev/contracts/contract_config.py, matching the platform's existing io.openaev.database.model.ContractOutputType.ActionOutput enum value exactly.
  • ContractOutputElement already carries a generic isFindingCompatible: bool field, so no further class changes are needed — injectors can declare an action_output output with isFindingCompatible=False right away.
  • Add a wire-label stability test mirroring the existing file one.

Motivation

Closes #331. Related to OpenAEV-Platform/injectors#401 (tracking issue for the client-python + netexec migration to action_output). Follow-up from investigating why netexec's contracts (declared text output) never produce findings on the platform: text findings would show up in the Findings tab, but netexec's raw stdout is only meant to be usable as a chaining/event filter, not a visible finding. The platform already supports this via the action_output type + isFindingCompatible=false (see ActionOutputOutputProcessor); this PR is the client-side prerequisite so netexec (and other injectors) can actually declare it.

Test plan

  • black --check / isort --check-only / flake8 on changed files
  • pytest test/contracts — 8 passed, including the new test_action_output_wire_label

The platform's ContractOutputType enum already has ActionOutput
("action_output"), used to store raw injector output as a finding with
isFindingCompatible=false so it can be used as a chaining/event filter
without appearing in the Findings tab. Expose the same value here so
injectors (e.g. netexec) can declare it.
Copilot AI review requested due to automatic review settings August 3, 2026 07:41
@Seb-MIGUEL Seb-MIGUEL self-assigned this Aug 3, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR adds support in the Python client’s contract configuration model for the platform’s existing action_output contract output type, enabling injectors to declare raw “action output” streams that are not finding-compatible while keeping the wire label stable.

Changes:

  • Add ActionOutput = "action_output" to ContractOutputType in pyoaev/contracts/contract_config.py.
  • Add a stability test asserting the action_output wire label matches the expected platform contract.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
pyoaev/contracts/contract_config.py Extends ContractOutputType enum with the action_output wire label to match the platform contract.
test/contracts/test_contract_output_types.py Adds a wire-label stability test for ContractOutputType.ActionOutput.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Seb-MIGUEL
Seb-MIGUEL merged commit 4dedc2f into main Aug 3, 2026
18 checks passed
@Seb-MIGUEL
Seb-MIGUEL deleted the feat/add-action-output-contract-type branch August 3, 2026 10:21
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.

feat(client): add action_output contract output type

5 participants