symfonic.capabilities.human.values¶
values ¶
The frozen values a pause is made of.
:class:PauseClaims is a compatibility contract, not a convenience. Its field
names are the claim names the legacy engine put in a JWT body, character for
character, so a token minted before this extraction decodes here and a token
minted here decodes there. Two fields are new โ issued_at and
legacy_pinned โ and both default, so a legacy body is missing nothing.
The claims travel inside the T2.3.6 authenticated envelope rather than in a signature of their own. This package never signs anything; it decides what is bound, and something else vouches for it.
CrossScopeRedemption
dataclass
¶
CrossScopeRedemption(name: str, interrupt_id: str, jti: str, expected_scope_hash: str, presented_scope_hash: str, at: float)
An audit record for the one relaxation the contract permits.
InteractionEvent
dataclass
¶
InteractionEvent(name: str, payload: Any, pause: MintedPause, run_id: str, session_id: str, interrupt_id: str = '', tool_call_id: str = '', resumable: bool = False)
The pause a transport serialises: it owns the wire format, this the facts.
MintedPause
dataclass
¶
A signed envelope and the claims inside it, together.
PauseClaims
dataclass
¶
PauseClaims(run_id: str, session_id: str, scope_hash: str, thread_id: str, checkpoint_id: str, request_hash: str, exp: int, jti: str, root_run_id: str = '', tool_call_id: str = '', name: str = 'ask_user', interrupt_id: str = '', issued_at: float = 0.0, legacy_pinned: bool = False)
What the token binds: who, which run, which thread, which request.
as_legacy_dict ¶
Exactly the legacy claim names, for a reader that predates this.
decode
classmethod
¶
Read a verified body. Called only after the envelope verified.
Source code in src/symfonic/capabilities/human/values.py
encode ¶
The canonical wire body the envelope signs over.
Source code in src/symfonic/capabilities/human/values.py
expired ¶
from_legacy_dict
classmethod
¶
Build from a claim mapping, refusing anything it cannot account for.
Source code in src/symfonic/capabilities/human/values.py
ResumeCommand
dataclass
¶
ResumeCommand(envelope: Any, response: Any, scope: Any, session_id: str | None = None, run_id: str | None = None, call_id: str | None = None)
One redemption attempt, in the shape a transport can build from a request.
session_id, run_id and call_id are the three axes beside scope
that a redemption is checked against (HK2). Each defaults to None,
meaning "this transport did not state it", and an unstated axis is not
checked -- which is why :mod:~symfonic.agent.cutover.kernel_resume builds
this value with all four and refuses to build one without them. The default
belongs to a caller that genuinely has no such fact; it must not be how a
caller that should have had one silently opts out of the check.
ResumeOutcome
dataclass
¶
ResumeOutcome(name: str, thread_id: str, checkpoint_id: str, payload: Any, response: Any, run_id: str, session_id: str, tool_call_id: str = '', interrupt_id: str = '', cross_scope: bool = False, time_to_resolve_seconds: float = 0.0, turn: Any = None)
What a graph runner needs to continue, and what telemetry needs to record.
as_configurable ¶
The run-config shape the resume executes against.
TTLPolicy
dataclass
¶
The lifetime a pause may have, and the bound nothing may exceed.
The maximum is the same number the operated ledger uses to bound its drain proof, which is why refusing is the only correct answer to a request past it: a clamped token would tell the caller they have a window they do not, and would make the drain deadline a guess.
ValidatedPause
dataclass
¶
What survived authentication, expiry, and binding.