gemini
Généré à partir du package Go public via gomarkdoc.
Chemin d'import: github.com/777genius/plugin-kit-ai/sdk/gemini
import "github.com/777genius/plugin-kit-ai/sdk/gemini"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
- func AfterAgentAllow() *AfterAgentResponse
- func AfterAgentClearContext() *AfterAgentResponse
- func AfterAgentContinue() *AfterAgentResponse
- func AfterAgentDeny(reason string) *AfterAgentResponse
- func AfterAgentStop(reason string) *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
- func BeforeAgentAddContext(context string) *BeforeAgentResponse
- func BeforeAgentAllow() *BeforeAgentResponse
- func BeforeAgentContinue() *BeforeAgentResponse
- func BeforeAgentDeny(reason string) *BeforeAgentResponse
- func BeforeAgentStop(reason string) *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 NewRegistrar(backend runtime.RegistrarBackend) *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
- func SessionEndContinue() *SessionEndResponse
- func SessionEndMessage(message string) *SessionEndResponse
- type SessionStartEvent
- type SessionStartResponse
- func SessionStartAddContext(context string) *SessionStartResponse
- func SessionStartContinue() *SessionStartResponse
- func SessionStartMessage(message string) *SessionStartResponse
- type TailToolCallRequest
- type ToolMode
type AfterAgentEvent
AfterAgentEvent is the Gemini AfterAgent hook input.
type AfterAgentEvent = internalgemini.AfterAgentInputtype AfterAgentResponse
AfterAgentResponse is the AfterAgent response type.
type AfterAgentResponse struct {
CommonResponse
ClearContext bool
}func AfterAgentAllow
func AfterAgentAllow() *AfterAgentResponseAfterAgentAllow returns an explicit allow decision for AfterAgent.
func AfterAgentClearContext
func AfterAgentClearContext() *AfterAgentResponseAfterAgentClearContext clears LLM conversation memory while preserving the UI display.
func AfterAgentContinue
func AfterAgentContinue() *AfterAgentResponseAfterAgentContinue returns an explicit no-op AfterAgent response.
func AfterAgentDeny
func AfterAgentDeny(reason string) *AfterAgentResponseAfterAgentDeny rejects the response and requests a retry.
func AfterAgentStop
func AfterAgentStop(reason string) *AfterAgentResponseAfterAgentStop stops the session without triggering a retry.
type AfterModelEvent
AfterModelEvent is the Gemini AfterModel hook input.
type AfterModelEvent = internalgemini.AfterModelInputtype AfterModelResponse
AfterModelResponse is the AfterModel response type.
type AfterModelResponse struct {
CommonResponse
LLMResponse json.RawMessage
}func AfterModelContinue
func AfterModelContinue() *AfterModelResponseAfterModelContinue returns an explicit no-op AfterModel response.
func AfterModelDeny
func AfterModelDeny(reason string) *AfterModelResponseAfterModelDeny blocks the model result with a deny decision.
func AfterModelReplaceResponse
func AfterModelReplaceResponse(response json.RawMessage) *AfterModelResponseAfterModelReplaceResponse 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) *AfterModelResponseAfterModelStop stops the entire Gemini agent loop immediately.
type AfterToolEvent
AfterToolEvent is the Gemini AfterTool hook input.
type AfterToolEvent = internalgemini.AfterToolInputtype AfterToolResponse
AfterToolResponse is the AfterTool response type.
type AfterToolResponse struct {
CommonResponse
AdditionalContext string
TailToolCallRequest *TailToolCallRequest
}func AfterToolAddContext
func AfterToolAddContext(context string) *AfterToolResponseAfterToolAddContext appends additional text to the tool result sent back to the agent.
func AfterToolAllow
func AfterToolAllow() *AfterToolResponseAfterToolAllow returns an explicit allow decision for AfterTool.
func AfterToolContinue
func AfterToolContinue() *AfterToolResponseAfterToolContinue returns an explicit no-op AfterTool response.
func AfterToolDeny
func AfterToolDeny(reason string) *AfterToolResponseAfterToolDeny blocks the follow-up path with a deny decision.
func AfterToolStop
func AfterToolStop(reason string) *AfterToolResponseAfterToolStop stops the entire Gemini agent loop after tool execution.
func AfterToolTailCall
func AfterToolTailCall(name string, args json.RawMessage) *AfterToolResponseAfterToolTailCall 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
BeforeAgentEvent is the Gemini BeforeAgent hook input.
type BeforeAgentEvent = internalgemini.BeforeAgentInputtype BeforeAgentResponse
BeforeAgentResponse is the BeforeAgent response type.
type BeforeAgentResponse struct {
CommonResponse
AdditionalContext string
}func BeforeAgentAddContext
func BeforeAgentAddContext(context string) *BeforeAgentResponseBeforeAgentAddContext appends additional context to the current turn prompt.
func BeforeAgentAllow
func BeforeAgentAllow() *BeforeAgentResponseBeforeAgentAllow returns an explicit allow decision for BeforeAgent.
func BeforeAgentContinue
func BeforeAgentContinue() *BeforeAgentResponseBeforeAgentContinue returns an explicit no-op BeforeAgent response.
func BeforeAgentDeny
func BeforeAgentDeny(reason string) *BeforeAgentResponseBeforeAgentDeny blocks the turn and discards the user's prompt from history.
func BeforeAgentStop
func BeforeAgentStop(reason string) *BeforeAgentResponseBeforeAgentStop aborts the current turn but keeps the user's prompt in history, matching Gemini's continue=false semantics.
type BeforeModelEvent
BeforeModelEvent is the Gemini BeforeModel hook input.
type BeforeModelEvent = internalgemini.BeforeModelInputtype BeforeModelResponse
BeforeModelResponse is the BeforeModel response type.
type BeforeModelResponse struct {
CommonResponse
LLMRequest json.RawMessage
LLMResponse json.RawMessage
}func BeforeModelContinue
func BeforeModelContinue() *BeforeModelResponseBeforeModelContinue returns an explicit no-op BeforeModel response.
func BeforeModelDeny
func BeforeModelDeny(reason string) *BeforeModelResponseBeforeModelDeny blocks the LLM request with a deny decision.
func BeforeModelOverrideRequest
func BeforeModelOverrideRequest(request json.RawMessage) *BeforeModelResponseBeforeModelOverrideRequest 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) *BeforeModelResponseBeforeModelSyntheticResponse 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
BeforeToolEvent is the Gemini BeforeTool hook input.
type BeforeToolEvent = internalgemini.BeforeToolInputtype BeforeToolResponse
BeforeToolResponse is the BeforeTool response type.
type BeforeToolResponse struct {
CommonResponse
ToolInput json.RawMessage
}func BeforeToolAllow
func BeforeToolAllow() *BeforeToolResponseBeforeToolAllow returns an explicit allow decision for BeforeTool.
func BeforeToolContinue
func BeforeToolContinue() *BeforeToolResponseBeforeToolContinue returns an explicit no-op BeforeTool response.
func BeforeToolDeny
func BeforeToolDeny(reason string) *BeforeToolResponseBeforeToolDeny blocks the tool invocation with a deny decision.
func BeforeToolRewriteInput
func BeforeToolRewriteInput(input json.RawMessage) *BeforeToolResponseBeforeToolRewriteInput 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) *BeforeToolResponseBeforeToolStop stops the entire Gemini agent loop before the tool executes.
type BeforeToolSelectionEvent
BeforeToolSelectionEvent is the Gemini BeforeToolSelection hook input.
type BeforeToolSelectionEvent = internalgemini.BeforeToolSelectionInputtype BeforeToolSelectionResponse
BeforeToolSelectionResponse is the Gemini BeforeToolSelection response type.
type BeforeToolSelectionResponse struct {
SuppressOutput bool
Mode ToolMode
AllowedFunctionNames []string
}func BeforeToolSelectionAllowOnly
func BeforeToolSelectionAllowOnly(allowedFunctionNames ...string) *BeforeToolSelectionResponseBeforeToolSelectionAllowOnly 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) *BeforeToolSelectionResponseBeforeToolSelectionConfig applies a tool selection mode. Gemini currently accepts allowedFunctionNames only together with ANY mode.
func BeforeToolSelectionContinue
func BeforeToolSelectionContinue() *BeforeToolSelectionResponseBeforeToolSelectionContinue returns an explicit no-op BeforeToolSelection response.
func BeforeToolSelectionDisableAll
func BeforeToolSelectionDisableAll() *BeforeToolSelectionResponseBeforeToolSelectionDisableAll disables all tools for the current decision step.
func BeforeToolSelectionForceAny
func BeforeToolSelectionForceAny(allowedFunctionNames ...string) *BeforeToolSelectionResponseBeforeToolSelectionForceAny requires Gemini to pick at least one tool and optionally narrows the candidate set with an allowlist.
func BeforeToolSelectionForceAuto
func BeforeToolSelectionForceAuto(allowedFunctionNames ...string) *BeforeToolSelectionResponseBeforeToolSelectionForceAuto 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() *BeforeToolSelectionResponseBeforeToolSelectionQuiet suppresses Gemini's internal hook metadata for the current tool-selection step without changing toolConfig.
type CommonResponse
CommonResponse contains fields shared by Gemini's synchronous hook envelope.
type CommonResponse struct {
Continue *bool
SuppressOutput bool
StopReason string
Decision string
Reason string
SystemMessage string
}type Registrar
Registrar registers public Gemini hook handlers on a root SDK app.
type Registrar struct {
// contains filtered or unexported fields
}func NewRegistrar
func NewRegistrar(backend runtime.RegistrarBackend) *RegistrarNewRegistrar 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
SessionEndEvent is the Gemini SessionEnd hook input.
type SessionEndEvent = internalgemini.SessionEndInputtype SessionEndResponse
SessionEndResponse is the SessionEnd response type.
type SessionEndResponse = CommonResponsefunc SessionEndContinue
func SessionEndContinue() *SessionEndResponseSessionEndContinue returns an explicit no-op SessionEnd response.
func SessionEndMessage
func SessionEndMessage(message string) *SessionEndResponseSessionEndMessage emits a systemMessage during SessionEnd.
type SessionStartEvent
SessionStartEvent is the Gemini SessionStart hook input.
type SessionStartEvent = internalgemini.SessionStartInputtype SessionStartResponse
SessionStartResponse is the SessionStart response type.
type SessionStartResponse struct {
CommonResponse
AdditionalContext string
}func SessionStartAddContext
func SessionStartAddContext(context string) *SessionStartResponseSessionStartAddContext appends additional context during SessionStart.
func SessionStartContinue
func SessionStartContinue() *SessionStartResponseSessionStartContinue returns an explicit no-op SessionStart response.
func SessionStartMessage
func SessionStartMessage(message string) *SessionStartResponseSessionStartMessage emits a systemMessage during SessionStart.
type TailToolCallRequest
TailToolCallRequest requests an immediate follow-up tool execution from an AfterTool hook.
type TailToolCallRequest struct {
Name string
Args json.RawMessage
}type ToolMode
ToolMode configures Gemini BeforeToolSelection tool routing.
type ToolMode stringconst (
ToolModeAuto ToolMode = "AUTO"
ToolModeAny ToolMode = "ANY"
ToolModeNone ToolMode = "NONE"
)