Documentation
¶
Overview ¶
Package gemini exposes typed public Gemini hook inputs, responses, and registrars for the production-ready Gemini Go runtime lane, including the current 9-hook runtime surface.
Index ¶
- type AfterAgentEvent
- type AfterAgentResponse
- type AfterModelEvent
- type AfterModelResponse
- func AfterModelContinue() *AfterModelResponse
- func AfterModelDeny(reason string) *AfterModelResponse
- func AfterModelReplaceResponse(response json.RawMessage) *AfterModelResponse
- func AfterModelReplaceResponseValue(v any) (*AfterModelResponse, error)
- func AfterModelStop(reason string) *AfterModelResponse
- type AfterToolEvent
- type AfterToolResponse
- func AfterToolAddContext(context string) *AfterToolResponse
- func AfterToolAllow() *AfterToolResponse
- func AfterToolContinue() *AfterToolResponse
- func AfterToolDeny(reason string) *AfterToolResponse
- func AfterToolStop(reason string) *AfterToolResponse
- func AfterToolTailCall(name string, args json.RawMessage) *AfterToolResponse
- func AfterToolTailCallValue(name string, args any) (*AfterToolResponse, error)
- type BeforeAgentEvent
- type BeforeAgentResponse
- type BeforeModelEvent
- type BeforeModelResponse
- func BeforeModelContinue() *BeforeModelResponse
- func BeforeModelDeny(reason string) *BeforeModelResponse
- func BeforeModelOverrideRequest(request json.RawMessage) *BeforeModelResponse
- func BeforeModelOverrideRequestValue(v any) (*BeforeModelResponse, error)
- func BeforeModelSyntheticResponse(response json.RawMessage) *BeforeModelResponse
- func BeforeModelSyntheticResponseValue(v any) (*BeforeModelResponse, error)
- type BeforeToolEvent
- type BeforeToolResponse
- func BeforeToolAllow() *BeforeToolResponse
- func BeforeToolContinue() *BeforeToolResponse
- func BeforeToolDeny(reason string) *BeforeToolResponse
- func BeforeToolRewriteInput(input json.RawMessage) *BeforeToolResponse
- func BeforeToolRewriteInputValue(v any) (*BeforeToolResponse, error)
- func BeforeToolStop(reason string) *BeforeToolResponse
- type BeforeToolSelectionEvent
- type BeforeToolSelectionResponse
- func BeforeToolSelectionAllowOnly(allowedFunctionNames ...string) *BeforeToolSelectionResponse
- func BeforeToolSelectionConfig(mode ToolMode, allowedFunctionNames ...string) *BeforeToolSelectionResponse
- func BeforeToolSelectionContinue() *BeforeToolSelectionResponse
- func BeforeToolSelectionDisableAll() *BeforeToolSelectionResponse
- func BeforeToolSelectionForceAny(allowedFunctionNames ...string) *BeforeToolSelectionResponse
- func BeforeToolSelectionForceAuto(allowedFunctionNames ...string) *BeforeToolSelectionResponse
- func BeforeToolSelectionQuiet() *BeforeToolSelectionResponse
- type CommonResponse
- type Registrar
- func (r *Registrar) OnAfterAgent(fn func(*AfterAgentEvent) *AfterAgentResponse)
- func (r *Registrar) OnAfterModel(fn func(*AfterModelEvent) *AfterModelResponse)
- func (r *Registrar) OnAfterTool(fn func(*AfterToolEvent) *AfterToolResponse)
- func (r *Registrar) OnBeforeAgent(fn func(*BeforeAgentEvent) *BeforeAgentResponse)
- func (r *Registrar) OnBeforeModel(fn func(*BeforeModelEvent) *BeforeModelResponse)
- func (r *Registrar) OnBeforeTool(fn func(*BeforeToolEvent) *BeforeToolResponse)
- func (r *Registrar) OnBeforeToolSelection(fn func(*BeforeToolSelectionEvent) *BeforeToolSelectionResponse)
- func (r *Registrar) OnSessionEnd(fn func(*SessionEndEvent) *SessionEndResponse)
- func (r *Registrar) OnSessionStart(fn func(*SessionStartEvent) *SessionStartResponse)
- type SessionEndEvent
- type SessionEndResponse
- type SessionStartEvent
- type SessionStartResponse
- type TailToolCallRequest
- type ToolMode
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AfterAgentEvent ¶
type AfterAgentEvent = internalgemini.AfterAgentInput
AfterAgentEvent is the Gemini AfterAgent hook input.
type AfterAgentResponse ¶
type AfterAgentResponse struct {
CommonResponse
ClearContext bool
}
AfterAgentResponse is the AfterAgent response type.
func AfterAgentAllow ¶
func AfterAgentAllow() *AfterAgentResponse
AfterAgentAllow returns an explicit allow decision for AfterAgent.
func AfterAgentClearContext ¶
func AfterAgentClearContext() *AfterAgentResponse
AfterAgentClearContext clears LLM conversation memory while preserving the UI display.
func AfterAgentContinue ¶
func AfterAgentContinue() *AfterAgentResponse
AfterAgentContinue returns an explicit no-op AfterAgent response.
func AfterAgentDeny ¶
func AfterAgentDeny(reason string) *AfterAgentResponse
AfterAgentDeny rejects the response and requests a retry.
func AfterAgentStop ¶
func AfterAgentStop(reason string) *AfterAgentResponse
AfterAgentStop stops the session without triggering a retry.
type AfterModelEvent ¶
type AfterModelEvent = internalgemini.AfterModelInput
AfterModelEvent is the Gemini AfterModel hook input.
type AfterModelResponse ¶
type AfterModelResponse struct {
CommonResponse
LLMResponse json.RawMessage
}
AfterModelResponse is the AfterModel response type.
func AfterModelContinue ¶
func AfterModelContinue() *AfterModelResponse
AfterModelContinue returns an explicit no-op AfterModel response.
func AfterModelDeny ¶
func AfterModelDeny(reason string) *AfterModelResponse
AfterModelDeny blocks the model result with a deny decision.
func AfterModelReplaceResponse ¶
func AfterModelReplaceResponse(response json.RawMessage) *AfterModelResponse
AfterModelReplaceResponse continues with a rewritten llm_response payload.
func AfterModelReplaceResponseValue ¶
func AfterModelReplaceResponseValue(v any) (*AfterModelResponse, error)
AfterModelReplaceResponseValue marshals a replacement llm_response object for Gemini AfterModel hooks.
func AfterModelStop ¶
func AfterModelStop(reason string) *AfterModelResponse
AfterModelStop stops the entire Gemini agent loop immediately.
type AfterToolEvent ¶
type AfterToolEvent = internalgemini.AfterToolInput
AfterToolEvent is the Gemini AfterTool hook input.
type AfterToolResponse ¶
type AfterToolResponse struct {
CommonResponse
AdditionalContext string
TailToolCallRequest *TailToolCallRequest
}
AfterToolResponse is the AfterTool response type.
func AfterToolAddContext ¶
func AfterToolAddContext(context string) *AfterToolResponse
AfterToolAddContext appends additional text to the tool result sent back to the agent.
func AfterToolAllow ¶
func AfterToolAllow() *AfterToolResponse
AfterToolAllow returns an explicit allow decision for AfterTool.
func AfterToolContinue ¶
func AfterToolContinue() *AfterToolResponse
AfterToolContinue returns an explicit no-op AfterTool response.
func AfterToolDeny ¶
func AfterToolDeny(reason string) *AfterToolResponse
AfterToolDeny blocks the follow-up path with a deny decision.
func AfterToolStop ¶
func AfterToolStop(reason string) *AfterToolResponse
AfterToolStop stops the entire Gemini agent loop after tool execution.
func AfterToolTailCall ¶
func AfterToolTailCall(name string, args json.RawMessage) *AfterToolResponse
AfterToolTailCall requests an immediate follow-up tool invocation.
func AfterToolTailCallValue ¶
func AfterToolTailCallValue(name string, args any) (*AfterToolResponse, error)
AfterToolTailCallValue marshals a typed follow-up tool request. Gemini expects tailToolCallRequest.args to be a JSON object, so non-object values return an error.
type BeforeAgentEvent ¶
type BeforeAgentEvent = internalgemini.BeforeAgentInput
BeforeAgentEvent is the Gemini BeforeAgent hook input.
type BeforeAgentResponse ¶
type BeforeAgentResponse struct {
CommonResponse
AdditionalContext string
}
BeforeAgentResponse is the BeforeAgent response type.
func BeforeAgentAddContext ¶
func BeforeAgentAddContext(context string) *BeforeAgentResponse
BeforeAgentAddContext appends additional context to the current turn prompt.
func BeforeAgentAllow ¶
func BeforeAgentAllow() *BeforeAgentResponse
BeforeAgentAllow returns an explicit allow decision for BeforeAgent.
func BeforeAgentContinue ¶
func BeforeAgentContinue() *BeforeAgentResponse
BeforeAgentContinue returns an explicit no-op BeforeAgent response.
func BeforeAgentDeny ¶
func BeforeAgentDeny(reason string) *BeforeAgentResponse
BeforeAgentDeny blocks the turn and discards the user's prompt from history.
func BeforeAgentStop ¶
func BeforeAgentStop(reason string) *BeforeAgentResponse
BeforeAgentStop aborts the current turn but keeps the user's prompt in history, matching Gemini's continue=false semantics.
type BeforeModelEvent ¶
type BeforeModelEvent = internalgemini.BeforeModelInput
BeforeModelEvent is the Gemini BeforeModel hook input.
type BeforeModelResponse ¶
type BeforeModelResponse struct {
CommonResponse
LLMRequest json.RawMessage
LLMResponse json.RawMessage
}
BeforeModelResponse is the BeforeModel response type.
func BeforeModelContinue ¶
func BeforeModelContinue() *BeforeModelResponse
BeforeModelContinue returns an explicit no-op BeforeModel response.
func BeforeModelDeny ¶
func BeforeModelDeny(reason string) *BeforeModelResponse
BeforeModelDeny blocks the LLM request with a deny decision.
func BeforeModelOverrideRequest ¶
func BeforeModelOverrideRequest(request json.RawMessage) *BeforeModelResponse
BeforeModelOverrideRequest continues with a rewritten llm_request payload.
func BeforeModelOverrideRequestValue ¶
func BeforeModelOverrideRequestValue(v any) (*BeforeModelResponse, error)
BeforeModelOverrideRequestValue marshals a replacement llm_request object for Gemini BeforeModel hooks.
func BeforeModelSyntheticResponse ¶
func BeforeModelSyntheticResponse(response json.RawMessage) *BeforeModelResponse
BeforeModelSyntheticResponse short-circuits the LLM request with a synthetic llm_response payload.
func BeforeModelSyntheticResponseValue ¶
func BeforeModelSyntheticResponseValue(v any) (*BeforeModelResponse, error)
BeforeModelSyntheticResponseValue marshals a synthetic llm_response object for Gemini BeforeModel hooks.
type BeforeToolEvent ¶
type BeforeToolEvent = internalgemini.BeforeToolInput
BeforeToolEvent is the Gemini BeforeTool hook input.
type BeforeToolResponse ¶
type BeforeToolResponse struct {
CommonResponse
ToolInput json.RawMessage
}
BeforeToolResponse is the BeforeTool response type.
func BeforeToolAllow ¶
func BeforeToolAllow() *BeforeToolResponse
BeforeToolAllow returns an explicit allow decision for BeforeTool.
func BeforeToolContinue ¶
func BeforeToolContinue() *BeforeToolResponse
BeforeToolContinue returns an explicit no-op BeforeTool response.
func BeforeToolDeny ¶
func BeforeToolDeny(reason string) *BeforeToolResponse
BeforeToolDeny blocks the tool invocation with a deny decision.
func BeforeToolRewriteInput ¶
func BeforeToolRewriteInput(input json.RawMessage) *BeforeToolResponse
BeforeToolRewriteInput continues with a rewritten tool_input payload.
func BeforeToolRewriteInputValue ¶
func BeforeToolRewriteInputValue(v any) (*BeforeToolResponse, error)
BeforeToolRewriteInputValue marshals a replacement tool_input object for Gemini BeforeTool hooks. Gemini expects hookSpecificOutput.tool_input to be a JSON object, so non-object values return an error.
func BeforeToolStop ¶
func BeforeToolStop(reason string) *BeforeToolResponse
BeforeToolStop stops the entire Gemini agent loop before the tool executes.
type BeforeToolSelectionEvent ¶
type BeforeToolSelectionEvent = internalgemini.BeforeToolSelectionInput
BeforeToolSelectionEvent is the Gemini BeforeToolSelection hook input.
type BeforeToolSelectionResponse ¶
type BeforeToolSelectionResponse struct {
SuppressOutput bool
Mode ToolMode
AllowedFunctionNames []string
}
BeforeToolSelectionResponse is the Gemini BeforeToolSelection response type.
func BeforeToolSelectionAllowOnly ¶
func BeforeToolSelectionAllowOnly(allowedFunctionNames ...string) *BeforeToolSelectionResponse
BeforeToolSelectionAllowOnly restricts Gemini tool selection to the provided allowlist by using ANY mode, which is the vendor-accepted shape for allowedFunctionNames.
func BeforeToolSelectionConfig ¶
func BeforeToolSelectionConfig(mode ToolMode, allowedFunctionNames ...string) *BeforeToolSelectionResponse
BeforeToolSelectionConfig applies a tool selection mode. Gemini currently accepts allowedFunctionNames only together with ANY mode.
func BeforeToolSelectionContinue ¶
func BeforeToolSelectionContinue() *BeforeToolSelectionResponse
BeforeToolSelectionContinue returns an explicit no-op BeforeToolSelection response.
func BeforeToolSelectionDisableAll ¶
func BeforeToolSelectionDisableAll() *BeforeToolSelectionResponse
BeforeToolSelectionDisableAll disables all tools for the current decision step.
func BeforeToolSelectionForceAny ¶
func BeforeToolSelectionForceAny(allowedFunctionNames ...string) *BeforeToolSelectionResponse
BeforeToolSelectionForceAny requires Gemini to pick at least one tool and optionally narrows the candidate set with an allowlist.
func BeforeToolSelectionForceAuto ¶
func BeforeToolSelectionForceAuto(allowedFunctionNames ...string) *BeforeToolSelectionResponse
BeforeToolSelectionForceAuto explicitly restores AUTO tool mode. Gemini does not currently accept allowedFunctionNames outside ANY mode, so any optional allowlist arguments are ignored.
func BeforeToolSelectionQuiet ¶
func BeforeToolSelectionQuiet() *BeforeToolSelectionResponse
BeforeToolSelectionQuiet suppresses Gemini's internal hook metadata for the current tool-selection step without changing toolConfig.
type CommonResponse ¶
type CommonResponse struct {
Continue *bool
SuppressOutput bool
StopReason string
Decision string
Reason string
SystemMessage string
}
CommonResponse contains fields shared by Gemini's synchronous hook envelope.
type Registrar ¶
type Registrar struct {
// contains filtered or unexported fields
}
Registrar registers public Gemini hook handlers on a root SDK app.
func NewRegistrar ¶
func NewRegistrar(backend runtime.RegistrarBackend) *Registrar
NewRegistrar builds a Gemini registrar on top of the shared runtime backend.
func (*Registrar) OnAfterAgent ¶
func (r *Registrar) OnAfterAgent(fn func(*AfterAgentEvent) *AfterAgentResponse)
OnAfterAgent registers a handler for the gemini AfterAgent.
func (*Registrar) OnAfterModel ¶
func (r *Registrar) OnAfterModel(fn func(*AfterModelEvent) *AfterModelResponse)
OnAfterModel registers a handler for the gemini AfterModel.
func (*Registrar) OnAfterTool ¶
func (r *Registrar) OnAfterTool(fn func(*AfterToolEvent) *AfterToolResponse)
OnAfterTool registers a handler for the gemini AfterTool.
func (*Registrar) OnBeforeAgent ¶
func (r *Registrar) OnBeforeAgent(fn func(*BeforeAgentEvent) *BeforeAgentResponse)
OnBeforeAgent registers a handler for the gemini BeforeAgent.
func (*Registrar) OnBeforeModel ¶
func (r *Registrar) OnBeforeModel(fn func(*BeforeModelEvent) *BeforeModelResponse)
OnBeforeModel registers a handler for the gemini BeforeModel.
func (*Registrar) OnBeforeTool ¶
func (r *Registrar) OnBeforeTool(fn func(*BeforeToolEvent) *BeforeToolResponse)
OnBeforeTool registers a handler for the gemini BeforeTool.
func (*Registrar) OnBeforeToolSelection ¶
func (r *Registrar) OnBeforeToolSelection(fn func(*BeforeToolSelectionEvent) *BeforeToolSelectionResponse)
OnBeforeToolSelection registers a handler for the gemini BeforeToolSelection.
func (*Registrar) OnSessionEnd ¶
func (r *Registrar) OnSessionEnd(fn func(*SessionEndEvent) *SessionEndResponse)
OnSessionEnd registers a handler for the gemini SessionEnd.
func (*Registrar) OnSessionStart ¶
func (r *Registrar) OnSessionStart(fn func(*SessionStartEvent) *SessionStartResponse)
OnSessionStart registers a handler for the gemini SessionStart.
type SessionEndEvent ¶
type SessionEndEvent = internalgemini.SessionEndInput
SessionEndEvent is the Gemini SessionEnd hook input.
type SessionEndResponse ¶
type SessionEndResponse = CommonResponse
SessionEndResponse is the SessionEnd response type.
func SessionEndContinue ¶
func SessionEndContinue() *SessionEndResponse
SessionEndContinue returns an explicit no-op SessionEnd response.
func SessionEndMessage ¶
func SessionEndMessage(message string) *SessionEndResponse
SessionEndMessage emits a systemMessage during SessionEnd.
type SessionStartEvent ¶
type SessionStartEvent = internalgemini.SessionStartInput
SessionStartEvent is the Gemini SessionStart hook input.
type SessionStartResponse ¶
type SessionStartResponse struct {
CommonResponse
AdditionalContext string
}
SessionStartResponse is the SessionStart response type.
func SessionStartAddContext ¶
func SessionStartAddContext(context string) *SessionStartResponse
SessionStartAddContext appends additional context during SessionStart.
func SessionStartContinue ¶
func SessionStartContinue() *SessionStartResponse
SessionStartContinue returns an explicit no-op SessionStart response.
func SessionStartMessage ¶
func SessionStartMessage(message string) *SessionStartResponse
SessionStartMessage emits a systemMessage during SessionStart.
type TailToolCallRequest ¶
type TailToolCallRequest struct {
Name string
Args json.RawMessage
}
TailToolCallRequest requests an immediate follow-up tool execution from an AfterTool hook.