Skip to main content
Gemini, through the Google GenAI SDK.
That is the whole integration. From here every call the client makes is recorded on the open trajectory.

What is distinctive

Function calls are read off the response and recorded individually. A response proposing three functions produces three steps, because one of them being refused is the interesting case.

In context

The witness block opens the trajectory and closes it on exit, including when the body raises — an episode that ended badly is exactly the one worth having a record of.

Recording without content

Shape and metadata only: model, latency, token counts, tool names. No prompt or response text. The governed facts are unchanged.
Authority is never asked for by an adapter. It stays an explicit trajectory.authorize(...) call, so importing a middleware can never become a spend decision. See authorise an action.