Problem or Use Case
The Automation service can dispatch an automation bundle into a conversation runtime, and event triggers can append follow-up messages to an existing subject conversation. It cannot represent agent work selected by a deterministic scanner as a separate tracked run. Reusing the scanner's own run would couple orchestration code to the agent conversation and prevent one scanner from starting several independent jobs.
Desired Behavior
Add an internal service-owned agent-turn run. It stores a conversation turn and stable subject identity, provisions the existing conversation backend, runs the turn through software-agent-sdk, records normal run status and telemetry, and releases a completed Docker runtime while retaining conversation history.
Local admission should continue preventing overlapping executions of one scanner, while allowing that scanner's independent agent-turn runs to fan out up to the existing global conversation concurrency limit.
Subject identity must include its source so equal opaque keys from GitHub, Slack, or another integration cannot collide. Existing event-triggered conversation continuation should use the same source-aware locking and lookup.
Acceptance Criteria
Additional Context
This is the internal execution prerequisite for #463. #463 adds the scoped API and idempotency record through which a running scanner creates these runs.
Problem or Use Case
The Automation service can dispatch an automation bundle into a conversation runtime, and event triggers can append follow-up messages to an existing subject conversation. It cannot represent agent work selected by a deterministic scanner as a separate tracked run. Reusing the scanner's own run would couple orchestration code to the agent conversation and prevent one scanner from starting several independent jobs.
Desired Behavior
Add an internal service-owned agent-turn run. It stores a conversation turn and stable subject identity, provisions the existing conversation backend, runs the turn through software-agent-sdk, records normal run status and telemetry, and releases a completed Docker runtime while retaining conversation history.
Local admission should continue preventing overlapping executions of one scanner, while allowing that scanner's independent agent-turn runs to fan out up to the existing global conversation concurrency limit.
Subject identity must include its source so equal opaque keys from GitHub, Slack, or another integration cannot collide. Existing event-triggered conversation continuation should use the same source-aware locking and lookup.
Acceptance Criteria
Additional Context
This is the internal execution prerequisite for #463. #463 adds the scoped API and idempotency record through which a running scanner creates these runs.