Return the immutable artifact identity captured before Hopper launched.
Close the active target, if any.
Read one detached session-owned Evidence record by semantic ID.
Invoke a Hopper tool against the active target. Calls may overlap, but a pending target transition prevents new calls from entering until the transition has settled.
Optionaloptions: { signal?: AbortSignal }Return a deterministic snapshot without clearing session evidence.
Check that comparison input Evidence is already session-owned.
Atomically merge a validated evidence bundle into this session.
Query stable current residual-unknown heads.
Open or switch targets after draining calls against the current target. Returns the switch failure even if best-effort restoration also fails.
Identify the provider producing evidence for this session.
Optionaloperation: AnalysisOperationAdd one successful public observation to the session ledger.
Atomically record derived Evidence and its approved residual unknown.
Create an approved residual unknown and immutable mutation evidence.
Describe the active binary session.
Update one unknown using compare-and-swap revision semantics.
Check whether current head is a bundle-valid resolved state.
Owns the single active target shared by CLI and MCP adapters.
Target transitions are serialized because each client dispatches Hopper API work on its dedicated Python thread, and switching targets tears that bridge down. A failed switch recreates the previous target instead of retaining a client whose bridge was already shut down.