fix(agent): enforce frontmatter policy for runtime tools
This commit is contained in:
parent
133c3cef14
commit
a450bb4b8b
1 changed files with 16 additions and 16 deletions
|
|
@ -114,7 +114,7 @@ func registerSharedTools(
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.ErrorCF("agent", "Failed to create web search tool", map[string]any{"error": err.Error()})
|
logger.ErrorCF("agent", "Failed to create web search tool", map[string]any{"error": err.Error()})
|
||||||
} else if searchTool != nil {
|
} else if searchTool != nil {
|
||||||
agent.Tools.Register(searchTool)
|
registerToolIfAllowed(agent, searchTool)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if cfg.Tools.IsToolEnabled("web_fetch") {
|
if cfg.Tools.IsToolEnabled("web_fetch") {
|
||||||
|
|
@ -127,19 +127,19 @@ func registerSharedTools(
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.ErrorCF("agent", "Failed to create web fetch tool", map[string]any{"error": err.Error()})
|
logger.ErrorCF("agent", "Failed to create web fetch tool", map[string]any{"error": err.Error()})
|
||||||
} else {
|
} else {
|
||||||
agent.Tools.Register(fetchTool)
|
registerToolIfAllowed(agent, fetchTool)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hardware tools (I2C, SPI) - Linux only, returns error on other platforms
|
// Hardware tools (I2C, SPI) - Linux only, returns error on other platforms
|
||||||
if cfg.Tools.IsToolEnabled("i2c") {
|
if cfg.Tools.IsToolEnabled("i2c") {
|
||||||
agent.Tools.Register(tools.NewI2CTool())
|
registerToolIfAllowed(agent, tools.NewI2CTool())
|
||||||
}
|
}
|
||||||
if cfg.Tools.IsToolEnabled("spi") {
|
if cfg.Tools.IsToolEnabled("spi") {
|
||||||
agent.Tools.Register(tools.NewSPITool())
|
registerToolIfAllowed(agent, tools.NewSPITool())
|
||||||
}
|
}
|
||||||
if cfg.Tools.IsToolEnabled("serial") {
|
if cfg.Tools.IsToolEnabled("serial") {
|
||||||
agent.Tools.Register(tools.NewSerialTool())
|
registerToolIfAllowed(agent, tools.NewSerialTool())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Message tool
|
// Message tool
|
||||||
|
|
@ -166,7 +166,7 @@ func registerSharedTools(
|
||||||
ReplyToMessageID: replyToMessageID,
|
ReplyToMessageID: replyToMessageID,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
agent.Tools.Register(messageTool)
|
registerToolIfAllowed(agent, messageTool)
|
||||||
}
|
}
|
||||||
if cfg.Tools.IsToolEnabled("reaction") {
|
if cfg.Tools.IsToolEnabled("reaction") {
|
||||||
reactionTool := tools.NewReactionTool()
|
reactionTool := tools.NewReactionTool()
|
||||||
|
|
@ -185,7 +185,7 @@ func registerSharedTools(
|
||||||
_, err := rc.ReactToMessage(ctx, chatID, messageID)
|
_, err := rc.ReactToMessage(ctx, chatID, messageID)
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
agent.Tools.Register(reactionTool)
|
registerToolIfAllowed(agent, reactionTool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send file tool (outbound media via MediaStore — store injected later by SetMediaStore)
|
// Send file tool (outbound media via MediaStore — store injected later by SetMediaStore)
|
||||||
|
|
@ -197,11 +197,11 @@ func registerSharedTools(
|
||||||
nil,
|
nil,
|
||||||
allowReadPaths,
|
allowReadPaths,
|
||||||
)
|
)
|
||||||
agent.Tools.Register(sendFileTool)
|
registerToolIfAllowed(agent, sendFileTool)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ttsProvider != nil {
|
if ttsProvider != nil {
|
||||||
agent.Tools.Register(tools.NewSendTTSTool(ttsProvider, nil))
|
registerToolIfAllowed(agent, tools.NewSendTTSTool(ttsProvider, nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.Tools.IsToolEnabled("load_image") {
|
if cfg.Tools.IsToolEnabled("load_image") {
|
||||||
|
|
@ -212,7 +212,7 @@ func registerSharedTools(
|
||||||
nil,
|
nil,
|
||||||
allowReadPaths,
|
allowReadPaths,
|
||||||
)
|
)
|
||||||
agent.Tools.Register(loadImageTool)
|
registerToolIfAllowed(agent, loadImageTool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skill discovery and installation tools
|
// Skill discovery and installation tools
|
||||||
|
|
@ -227,11 +227,11 @@ func registerSharedTools(
|
||||||
cfg.Tools.Skills.SearchCache.MaxSize,
|
cfg.Tools.Skills.SearchCache.MaxSize,
|
||||||
time.Duration(cfg.Tools.Skills.SearchCache.TTLSeconds)*time.Second,
|
time.Duration(cfg.Tools.Skills.SearchCache.TTLSeconds)*time.Second,
|
||||||
)
|
)
|
||||||
agent.Tools.Register(tools.NewFindSkillsTool(registryMgr, searchCache))
|
registerToolIfAllowed(agent, tools.NewFindSkillsTool(registryMgr, searchCache))
|
||||||
}
|
}
|
||||||
|
|
||||||
if install_skills_enable {
|
if install_skills_enable {
|
||||||
agent.Tools.Register(tools.NewInstallSkillTool(registryMgr, agent.Workspace))
|
registerToolIfAllowed(agent, tools.NewInstallSkillTool(registryMgr, agent.Workspace))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -324,15 +324,15 @@ func registerSharedTools(
|
||||||
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
||||||
})
|
})
|
||||||
|
|
||||||
agent.Tools.Register(spawnTool)
|
registerToolIfAllowed(agent, spawnTool)
|
||||||
|
|
||||||
// Also register the synchronous subagent tool
|
// Also register the synchronous subagent tool
|
||||||
subagentTool := tools.NewSubagentTool(subagentManager)
|
subagentTool := tools.NewSubagentTool(subagentManager)
|
||||||
subagentTool.SetSpawner(NewSubTurnSpawner(al))
|
subagentTool.SetSpawner(NewSubTurnSpawner(al))
|
||||||
agent.Tools.Register(subagentTool)
|
registerToolIfAllowed(agent, subagentTool)
|
||||||
}
|
}
|
||||||
if spawnStatusEnabled {
|
if spawnStatusEnabled {
|
||||||
agent.Tools.Register(tools.NewSpawnStatusTool(subagentManager))
|
registerToolIfAllowed(agent, tools.NewSpawnStatusTool(subagentManager))
|
||||||
}
|
}
|
||||||
} else if (spawnEnabled || spawnStatusEnabled) && !cfg.Tools.IsToolEnabled("subagent") {
|
} else if (spawnEnabled || spawnStatusEnabled) && !cfg.Tools.IsToolEnabled("subagent") {
|
||||||
logger.WarnCF("agent", "spawn/spawn_status tools require subagent to be enabled", nil)
|
logger.WarnCF("agent", "spawn/spawn_status tools require subagent to be enabled", nil)
|
||||||
|
|
@ -350,7 +350,7 @@ func registerSharedTools(
|
||||||
delegateTool.SetAllowlistChecker(func(targetAgentID string) bool {
|
delegateTool.SetAllowlistChecker(func(targetAgentID string) bool {
|
||||||
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
return registry.CanSpawnSubagent(currentAgentID, targetAgentID)
|
||||||
})
|
})
|
||||||
agent.Tools.Register(delegateTool)
|
registerToolIfAllowed(agent, delegateTool)
|
||||||
}
|
}
|
||||||
|
|
||||||
warnOnUnknownAgentToolDeclarations(agentID, agent.Workspace, agent.Definition, agent.Tools)
|
warnOnUnknownAgentToolDeclarations(agentID, agent.Workspace, agent.Definition, agent.Tools)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue