Right now the only entry point is the CLI reading a file off disk (taintline check <path>). For a Strands user the natural gate is in-process: run the agent, get an AgentResult, and check it without serializing to a temp file. Add a small typed public API that turns a Strands AgentResult (or its .traces) directly into a Verdict. This must preserve the core invariant: the check path runs the same deterministic detectors with NO LLM judge, no network, no clock, no RNG.
Acceptance criteria
Right now the only entry point is the CLI reading a file off disk (
taintline check <path>). For a Strands user the natural gate is in-process: run the agent, get anAgentResult, and check it without serializing to a temp file. Add a small typed public API that turns a StrandsAgentResult(or its.traces) directly into aVerdict. This must preserve the core invariant: the check path runs the same deterministic detectors with NO LLM judge, no network, no clock, no RNG.Acceptance criteria
taintline.check_agent_result(result) -> Verdict) normalizes a StrandsAgentResult/traces object through the existing ingest path and callsrun_all— reusing, not duplicating, detector logic.Verdictto a pass/fail against a caller-suppliedfail_onset, mirroring CLI--fail-on, so it is usable as a hard gate in a script.AgentResult-shaped input and assert deterministic verdicts; no network, no LLM in the path.