feat: agent resources upgrade

This commit is contained in:
Shivering Ocelot committed 2026-10-02 20:37:58 -05:00
1 parent 659b7497fb
commit ee323fe660
6 files changed
+170 -71

No files matched your search

+32 -17
View File
@@ -36,15 +36,25 @@ class Agent:
# should be in expert init?
self.tools = []
self.remotes = []
for resource in self.resources:
if resource.kind != 'tool': continue
if resource.value.get('type') == 'native' and 'name' in resource.value:
tool_cls = next((t for t in self.app.tool_classes if t.tool_name() == resource.value['name']), None)
if tool_cls:
tool = tool_cls()
spec = tool.get_spec().clone()
spec.name = resource.key
self.tools.append(spec)
if resource.kind == 'tool':
if resource.value.get('type') == 'native' and 'name' in resource.value:
tool_cls = next((t for t in self.app.tool_classes if t.tool_name() == resource.value['name']), None)
if tool_cls:
tool = tool_cls()
spec = tool.get_spec().clone()
spec.name = resource.key
self.tools.append(spec)
elif resource.kind == 'remote':
value = resource.value or {}
if isinstance(value, str):
value = {'prefix': value}
self.remotes.append({
'name': resource.key,
'prefix': value.get('prefix'),
})
def _set_basic_info(self, id, name, user_id):
self.id = id
@@ -205,16 +215,21 @@ class Agent:
if r.kind == kind and (key is None or r.key == key)]
def get_tools(self, run=None):
"""Collect the tools available to this agent.
Returns the agent-configured tools (derived from its resources) plus
any remote tools referenced by the run input. When a run is given,
remote names in ``run.input['remotes']`` are resolved and appended.
"""
tools = list(self.tools)
remotes = list(self.remotes)
if run is not None and 'remotes' in run.input:
tools += self.app.getRemoteTools(self.user_id, run.input['remotes'])
return tools
remotes += list(run.input['remotes'])
tools = list(self.tools) + self.app.getRemoteTools(self.user_id, remotes)
# Dedupe by tool name (agent-configured vs run-input vs native collisions)
seen, result = set(), []
for tool in tools:
if tool.name in seen:
continue
seen.add(tool.name)
result.append(tool)
return result
class DebugAgent(Agent):