Documentation
¶
Overview ¶
Package extension provides hooks (before/after tool call), skill loading, and MCP tool integration for the pi-go agent.
Index ¶
- Variables
- func BuildAfterToolCallbacks(hooks []HookConfig) []llmagent.AfterToolCallback
- func BuildBeforeToolCallbacks(hooks []HookConfig) []llmagent.BeforeToolCallback
- func BuildMCPToolsets(servers []MCPServerConfig) ([]tool.Toolset, error)
- func LoadBundledSkills() (map[string][]BundledSkillFile, error)
- type AuditMode
- type BundledSkillFile
- type HookConfig
- type LoadOptions
- type MCPServerConfig
- type MCPServerStatus
- type MCPToolEntry
- type Skill
Constants ¶
This section is empty.
Variables ¶
var SkillTemplate string
Functions ¶
func BuildAfterToolCallbacks ¶
func BuildAfterToolCallbacks(hooks []HookConfig) []llmagent.AfterToolCallback
BuildAfterToolCallbacks converts HookConfigs with event "after_tool" into ADK AfterToolCallback functions.
func BuildBeforeToolCallbacks ¶
func BuildBeforeToolCallbacks(hooks []HookConfig) []llmagent.BeforeToolCallback
BuildBeforeToolCallbacks converts HookConfigs with event "before_tool" into ADK BeforeToolCallback functions.
func BuildMCPToolsets ¶
func BuildMCPToolsets(servers []MCPServerConfig) ([]tool.Toolset, error)
BuildMCPToolsets creates ADK Toolsets from MCP server configurations. Each server is launched as a subprocess using CommandTransport. Servers that fail to initialize are logged and skipped rather than failing the entire batch.
func LoadBundledSkills ¶ added in v0.0.16
func LoadBundledSkills() (map[string][]BundledSkillFile, error)
LoadBundledSkills loads all embedded skill files. Returns a map of skill name → []BundledSkillFile (SKILL.md + supporting files).
Types ¶
type AuditMode ¶ added in v0.0.10
type AuditMode string
AuditMode controls how skill loading handles audit findings.
type BundledSkillFile ¶ added in v0.0.16
BundledSkillFile represents a skill loaded from the embedded filesystem.
type HookConfig ¶
type HookConfig struct {
// Event is "before_tool" or "after_tool".
Event string `json:"event"`
// Command is the shell command to execute.
Command string `json:"command"`
// Tools optionally restricts this hook to specific tool names.
// If empty, the hook fires for all tools.
Tools []string `json:"tools,omitempty"`
// Timeout in seconds for hook execution. Default: 10.
Timeout int `json:"timeout,omitempty"`
}
HookConfig defines a shell command hook that runs before or after tool calls.
type LoadOptions ¶ added in v0.0.10
type LoadOptions struct {
AuditMode AuditMode
}
LoadOptions controls skill loading behavior.
type MCPServerConfig ¶
type MCPServerConfig struct {
Name string `json:"name"`
Command string `json:"command,omitempty"`
Args []string `json:"args,omitempty"`
URL string `json:"url,omitempty"` // HTTP transport (Streamable HTTP)
}
MCPServerConfig matches the config.MCPServer structure.
type MCPServerStatus ¶ added in v0.0.22
type MCPServerStatus struct {
Name string
Connected bool // true if Tools() succeeded at least once
Failed bool // true if Tools() timed out or returned an error
ToolCount int // number of tools reported; 0 if not yet loaded
Status string // "connected", "failed", "pending"
}
func ToolsetStatuses ¶ added in v0.0.22
func ToolsetStatuses(toolsets []tool.Toolset) []MCPServerStatus
ToolsetStatuses returns the current status for each toolset that was created by BuildMCPToolsets. Toolsets that haven't been queried yet are reported as "pending".
type MCPToolEntry ¶ added in v0.0.22
MCPToolEntry is a single resolved tool from a named MCP server.
func BuildMCPToolEntries ¶ added in v0.0.22
func BuildMCPToolEntries(toolsets []tool.Toolset) []MCPToolEntry
BuildMCPToolEntries returns a flat list of {Server, Tool} pairs for all connected MCP toolsets. Only toolsets whose tools have already been loaded (via a previous Tools() call) contribute entries — pending/failed servers are silently skipped.
type Skill ¶
type Skill struct {
// Name is the skill's identifier (derived from directory name).
Name string
// Description is a one-line description from frontmatter.
Description string
// Instruction is the markdown body (the system prompt to inject).
Instruction string
// Tools lists tool names this skill is allowed to use (from frontmatter).
Tools []string
// Source is where the skill came from: "bundled", "user", or "project".
Source string
}
Skill represents a loaded skill from a SKILL.md file.
func LoadSkills ¶
LoadSkills discovers and loads skills from the given directories. It searches for <dir>/<skill-name>/SKILL.md subdirectories. Later directories override earlier ones (project overrides global). Skills with critical audit findings are blocked when AuditMode is "block" (default).
func LoadSkillsWithOptions ¶ added in v0.0.10
func LoadSkillsWithOptions(opts LoadOptions, dirs ...string) ([]Skill, error)
LoadSkillsWithOptions discovers and loads skills with configurable audit behavior. Bundled skills (embedded in the binary) are loaded first and can be overridden by user or project skills.