agent-code 2.0.0__py3-none-any.whl → 2.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
agent_code/__init__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  """Agent + Skill Store — local AI agent with headless browser and skills."""
2
- __version__ = "2.0.0"
2
+ __version__ = "2.1.0"
agent_code/addons.py CHANGED
@@ -11,6 +11,7 @@ import json
11
11
  import re
12
12
  import sys
13
13
  import traceback
14
+ from .tool_namespace import make_tool_name
14
15
  from dataclasses import dataclass, field
15
16
  from pathlib import Path
16
17
  from typing import Any, Callable
@@ -114,6 +115,7 @@ class AddonManager:
114
115
  self.apis: list[AddonAPI] = []
115
116
  self.schemas: list[dict] = []
116
117
  self.callables: dict[str, Callable] = {}
118
+ self.tool_identities: dict[str, dict] = {}
117
119
  self.commands: dict[str, dict] = {}
118
120
  self.actions: list[dict] = []
119
121
  self.ui_contributions: list[dict] = []
@@ -145,7 +147,7 @@ class AddonManager:
145
147
  return found
146
148
 
147
149
  def load(self):
148
- self.apis.clear(); self.schemas.clear(); self.callables.clear()
150
+ self.apis.clear(); self.schemas.clear(); self.callables.clear(); self.tool_identities.clear()
149
151
  self.commands.clear(); self.actions.clear(); self.ui_contributions.clear()
150
152
  self.services.clear(); self._loaded_modules.clear()
151
153
  for info in self.discover():
@@ -169,11 +171,17 @@ class AddonManager:
169
171
  if not callable(register):
170
172
  raise TypeError("addon.py must export register(api)")
171
173
  register(api)
174
+ used_names = set(self.callables)
172
175
  for schema, handler in api.tools:
173
- name = schema["function"]["name"]
174
- if name in self.callables:
175
- raise ValueError(f"duplicate add-on tool name: {name}")
176
- self.schemas.append(schema); self.callables[name] = handler
176
+ original = schema["function"]["name"]
177
+ name = make_tool_name(info.name, original, used_names)
178
+ normalized = dict(schema)
179
+ normalized["function"] = {**schema["function"], "name": name}
180
+ self.schemas.append(normalized)
181
+ self.callables[name] = handler
182
+ self.tool_identities[name] = {"namespace": info.name,
183
+ "original_name": original,
184
+ "source_type": "addon"}
177
185
  for name, definition in api.commands.items():
178
186
  if name in self.commands:
179
187
  raise ValueError(f"duplicate add-on command: {name}")