signalwire-agents 0.1.34__tar.gz → 0.1.36__tar.gz
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.
- {signalwire_agents-0.1.34/signalwire_agents.egg-info → signalwire_agents-0.1.36}/PKG-INFO +11 -7
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/README.md +10 -6
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/pyproject.toml +1 -1
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/__init__.py +66 -2
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent_base.py +15 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/skill_base.py +64 -1
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datetime/skill.py +16 -1
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/math/skill.py +16 -1
- signalwire_agents-0.1.36/signalwire_agents/skills/registry.py +423 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/web_search/skill.py +60 -1
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36/signalwire_agents.egg-info}/PKG-INFO +11 -7
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents.egg-info/SOURCES.txt +0 -4
- signalwire_agents-0.1.34/CHANGELOG.md +0 -160
- signalwire_agents-0.1.34/requirements-dev.txt +0 -16
- signalwire_agents-0.1.34/requirements.txt +0 -11
- signalwire_agents-0.1.34/signalwire_agents/schema.json +0 -7606
- signalwire_agents-0.1.34/signalwire_agents/skills/registry.py +0 -120
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/LICENSE +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/setup.cfg +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/setup.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/agent_server.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/build_search.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/config.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/core/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/core/agent_loader.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/core/argparse_helpers.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/core/dynamic_config.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/core/service_loader.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/execution/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/execution/datamap_exec.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/execution/webhook_exec.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/output/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/output/output_formatter.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/output/swml_dump.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/simulation/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/simulation/data_generation.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/simulation/data_overrides.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/simulation/mock_env.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/swaig_test_wrapper.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/test_swaig.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/cli/types.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/config/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/deployment/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/deployment/handlers/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/prompt/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/prompt/manager.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/routing/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/security/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/swml/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/tools/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/tools/decorator.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/agent/tools/registry.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/auth_handler.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/config_loader.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/contexts.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/data_map.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/function_result.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/logging_config.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/ai_config_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/auth_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/prompt_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/serverless_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/skill_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/state_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/tool_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/mixins/web_mixin.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/pom_builder.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/security/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/security/session_manager.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/security_config.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/skill_manager.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/swaig_function.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/swml_builder.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/swml_handler.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/swml_renderer.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/core/swml_service.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/concierge.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/faq_bot.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/info_gatherer.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/receptionist.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/prefabs/survey.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36/signalwire_agents}/schema.json +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/document_processor.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/index_builder.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/query_processor.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/search_engine.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/search/search_service.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/api_ninjas_trivia/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/api_ninjas_trivia/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/api_ninjas_trivia/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere_serverless/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere_serverless/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datasphere_serverless/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datetime/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datetime/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/joke/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/joke/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/joke/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/math/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/math/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/mcp_gateway/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/mcp_gateway/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/mcp_gateway/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/native_vector_search/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/native_vector_search/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/play_background_file/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/play_background_file/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/play_background_file/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/spider/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/spider/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/spider/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/swml_transfer/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/swml_transfer/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/swml_transfer/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/weather_api/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/weather_api/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/weather_api/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/web_search/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/web_search/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/wikipedia_search/README.md +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/wikipedia_search/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/wikipedia_search/skill.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/utils/__init__.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/utils/pom_utils.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/utils/schema_utils.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/utils/token_generators.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/utils/validators.py +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents.egg-info/dependency_links.txt +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents.egg-info/entry_points.txt +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents.egg-info/requires.txt +0 -0
- {signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: signalwire_agents
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.36
|
4
4
|
Summary: SignalWire AI Agents SDK
|
5
5
|
Author-email: SignalWire Team <info@signalwire.com>
|
6
6
|
License: MIT
|
@@ -74,7 +74,9 @@ Dynamic: license-file
|
|
74
74
|
|
75
75
|
<!-- Header -->
|
76
76
|
<div align="center">
|
77
|
-
<
|
77
|
+
<a href="https://signalwire.com" target="_blank">
|
78
|
+
<img src="https://github.com/user-attachments/assets/0c8ed3b9-8c50-4dc6-9cc4-cc6cd137fd50" width="500" />
|
79
|
+
</a>
|
78
80
|
|
79
81
|
# Agents SDK
|
80
82
|
|
@@ -92,15 +94,17 @@ Dynamic: license-file
|
|
92
94
|
|
93
95
|
<!-- Badges -->
|
94
96
|
<div align="center">
|
95
|
-
<img src="https://img.shields.io/badge/Discord%20Community-5865F2" alt="Discord"
|
96
|
-
<img src="https://img.shields.io/badge/MIT-License-blue" alt="MIT License"
|
97
|
-
<img src="https://img.shields.io/badge/GitHub-%23121011.svg?logo=github&logoColor=white&" alt="GitHub"
|
98
|
-
<img src="https://img.shields.io/github/stars/signalwire/signalwire-agents" alt="GitHub Stars"
|
97
|
+
<a href="https://discord.com/invite/F2WNYTNjuF" target="_blank"><img src="https://img.shields.io/badge/Discord%20Community-5865F2" alt="Discord" /></a>
|
98
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/MIT-License-blue" alt="MIT License" /></a>
|
99
|
+
<a href="https://github.com/signalwire" target="_blank"><img src="https://img.shields.io/badge/GitHub-%23121011.svg?logo=github&logoColor=white&" alt="GitHub" /></a>
|
100
|
+
<a href="https://github.com/signalwire/docs" target="_blank"><img src="https://img.shields.io/github/stars/signalwire/signalwire-agents" alt="GitHub Stars" /></a>
|
99
101
|
</div>
|
100
102
|
|
101
103
|
<br/>
|
102
104
|
|
103
|
-
<
|
105
|
+
<a href="https://signalwire.com/signup" target="_blank">
|
106
|
+
<img src="https://github.com/user-attachments/assets/c2510c86-ae03-42a9-be06-ab9bcea948e1" alt="Sign Up" height="65"/>
|
107
|
+
</a>
|
104
108
|
|
105
109
|
</div>
|
106
110
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
<!-- Header -->
|
2
2
|
<div align="center">
|
3
|
-
<
|
3
|
+
<a href="https://signalwire.com" target="_blank">
|
4
|
+
<img src="https://github.com/user-attachments/assets/0c8ed3b9-8c50-4dc6-9cc4-cc6cd137fd50" width="500" />
|
5
|
+
</a>
|
4
6
|
|
5
7
|
# Agents SDK
|
6
8
|
|
@@ -18,15 +20,17 @@
|
|
18
20
|
|
19
21
|
<!-- Badges -->
|
20
22
|
<div align="center">
|
21
|
-
<img src="https://img.shields.io/badge/Discord%20Community-5865F2" alt="Discord"
|
22
|
-
<img src="https://img.shields.io/badge/MIT-License-blue" alt="MIT License"
|
23
|
-
<img src="https://img.shields.io/badge/GitHub-%23121011.svg?logo=github&logoColor=white&" alt="GitHub"
|
24
|
-
<img src="https://img.shields.io/github/stars/signalwire/signalwire-agents" alt="GitHub Stars"
|
23
|
+
<a href="https://discord.com/invite/F2WNYTNjuF" target="_blank"><img src="https://img.shields.io/badge/Discord%20Community-5865F2" alt="Discord" /></a>
|
24
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/MIT-License-blue" alt="MIT License" /></a>
|
25
|
+
<a href="https://github.com/signalwire" target="_blank"><img src="https://img.shields.io/badge/GitHub-%23121011.svg?logo=github&logoColor=white&" alt="GitHub" /></a>
|
26
|
+
<a href="https://github.com/signalwire/docs" target="_blank"><img src="https://img.shields.io/github/stars/signalwire/signalwire-agents" alt="GitHub Stars" /></a>
|
25
27
|
</div>
|
26
28
|
|
27
29
|
<br/>
|
28
30
|
|
29
|
-
<
|
31
|
+
<a href="https://signalwire.com/signup" target="_blank">
|
32
|
+
<img src="https://github.com/user-attachments/assets/c2510c86-ae03-42a9-be06-ab9bcea948e1" alt="Sign Up" height="65"/>
|
33
|
+
</a>
|
30
34
|
|
31
35
|
</div>
|
32
36
|
|
@@ -18,7 +18,7 @@ A package for building AI agents using SignalWire's AI and SWML capabilities.
|
|
18
18
|
from .core.logging_config import configure_logging
|
19
19
|
configure_logging()
|
20
20
|
|
21
|
-
__version__ = "0.1.
|
21
|
+
__version__ = "0.1.36"
|
22
22
|
|
23
23
|
# Import core classes for easier access
|
24
24
|
from .core.agent_base import AgentBase
|
@@ -62,6 +62,67 @@ def list_skills(*args, **kwargs):
|
|
62
62
|
except ImportError:
|
63
63
|
raise NotImplementedError("CLI helpers not available")
|
64
64
|
|
65
|
+
def list_skills_with_params():
|
66
|
+
"""
|
67
|
+
Get complete schema for all available skills including parameter metadata
|
68
|
+
|
69
|
+
This function returns a comprehensive schema for all available skills,
|
70
|
+
including their metadata and parameter definitions. This is useful for
|
71
|
+
GUI configuration tools, API documentation, or programmatic skill discovery.
|
72
|
+
|
73
|
+
Returns:
|
74
|
+
Dict[str, Dict[str, Any]]: Complete skill schema where keys are skill names
|
75
|
+
|
76
|
+
Example:
|
77
|
+
>>> schema = list_skills_with_params()
|
78
|
+
>>> print(schema['web_search']['parameters']['api_key'])
|
79
|
+
{
|
80
|
+
'type': 'string',
|
81
|
+
'description': 'Google Custom Search API key',
|
82
|
+
'required': True,
|
83
|
+
'hidden': True,
|
84
|
+
'env_var': 'GOOGLE_SEARCH_API_KEY'
|
85
|
+
}
|
86
|
+
"""
|
87
|
+
from signalwire_agents.skills.registry import skill_registry
|
88
|
+
return skill_registry.get_all_skills_schema()
|
89
|
+
|
90
|
+
def register_skill(skill_class):
|
91
|
+
"""
|
92
|
+
Register a custom skill class
|
93
|
+
|
94
|
+
This allows third-party code to register skill classes directly without
|
95
|
+
requiring them to be in a specific directory structure.
|
96
|
+
|
97
|
+
Args:
|
98
|
+
skill_class: A class that inherits from SkillBase
|
99
|
+
|
100
|
+
Example:
|
101
|
+
>>> from my_custom_skills import MyWeatherSkill
|
102
|
+
>>> register_skill(MyWeatherSkill)
|
103
|
+
>>> # Now you can use it in agents:
|
104
|
+
>>> agent.add_skill('my_weather')
|
105
|
+
"""
|
106
|
+
from signalwire_agents.skills.registry import skill_registry
|
107
|
+
return skill_registry.register_skill(skill_class)
|
108
|
+
|
109
|
+
def add_skill_directory(path):
|
110
|
+
"""
|
111
|
+
Add a directory to search for skills
|
112
|
+
|
113
|
+
This allows third-party skill collections to be registered by path.
|
114
|
+
Skills in these directories should follow the same structure as built-in skills.
|
115
|
+
|
116
|
+
Args:
|
117
|
+
path: Path to directory containing skill subdirectories
|
118
|
+
|
119
|
+
Example:
|
120
|
+
>>> add_skill_directory('/opt/custom_skills')
|
121
|
+
>>> # Now agent.add_skill('my_custom_skill') will search in this directory
|
122
|
+
"""
|
123
|
+
from signalwire_agents.skills.registry import skill_registry
|
124
|
+
return skill_registry.add_skill_directory(path)
|
125
|
+
|
65
126
|
__all__ = [
|
66
127
|
"AgentBase",
|
67
128
|
"AgentServer",
|
@@ -78,5 +139,8 @@ __all__ = [
|
|
78
139
|
"create_simple_context",
|
79
140
|
"start_agent",
|
80
141
|
"run_agent",
|
81
|
-
"list_skills"
|
142
|
+
"list_skills",
|
143
|
+
"list_skills_with_params",
|
144
|
+
"register_skill",
|
145
|
+
"add_skill_directory"
|
82
146
|
]
|
@@ -692,6 +692,13 @@ class AgentBase(
|
|
692
692
|
# Add answer verb with auto-answer enabled
|
693
693
|
agent_to_use.add_verb("answer", {})
|
694
694
|
|
695
|
+
# Add recording if enabled
|
696
|
+
if agent_to_use._record_call:
|
697
|
+
agent_to_use.add_verb("record_call", {
|
698
|
+
"format": agent_to_use._record_format,
|
699
|
+
"stereo": agent_to_use._record_stereo
|
700
|
+
})
|
701
|
+
|
695
702
|
# Use the AI verb handler to build and validate the AI verb config
|
696
703
|
ai_config = {}
|
697
704
|
|
@@ -811,6 +818,14 @@ class AgentBase(
|
|
811
818
|
# Clear and rebuild the document with the modified AI config
|
812
819
|
agent_to_use.reset_document()
|
813
820
|
agent_to_use.add_verb("answer", {})
|
821
|
+
|
822
|
+
# Add recording if enabled
|
823
|
+
if agent_to_use._record_call:
|
824
|
+
agent_to_use.add_verb("record_call", {
|
825
|
+
"format": agent_to_use._record_format,
|
826
|
+
"stereo": agent_to_use._record_stereo
|
827
|
+
})
|
828
|
+
|
814
829
|
agent_to_use.add_verb("ai", ai_config)
|
815
830
|
|
816
831
|
# Return the rendered document as a string
|
@@ -114,4 +114,67 @@ class SkillBase(ABC):
|
|
114
114
|
|
115
115
|
# For multi-instance skills, create key from skill name + tool name
|
116
116
|
tool_name = self.params.get('tool_name', self.SKILL_NAME)
|
117
|
-
return f"{self.SKILL_NAME}_{tool_name}"
|
117
|
+
return f"{self.SKILL_NAME}_{tool_name}"
|
118
|
+
|
119
|
+
@classmethod
|
120
|
+
def get_parameter_schema(cls) -> Dict[str, Dict[str, Any]]:
|
121
|
+
"""
|
122
|
+
Get the parameter schema for this skill
|
123
|
+
|
124
|
+
This method returns metadata about all parameters the skill accepts,
|
125
|
+
including their types, descriptions, default values, and whether they
|
126
|
+
are required or should be hidden (e.g., API keys).
|
127
|
+
|
128
|
+
The base implementation provides common parameters available to all skills.
|
129
|
+
Subclasses should override this method and merge their specific parameters
|
130
|
+
with the base schema.
|
131
|
+
|
132
|
+
Returns:
|
133
|
+
Dict[str, Dict[str, Any]]: Parameter schema where keys are parameter names
|
134
|
+
and values are dictionaries containing:
|
135
|
+
- type: Parameter type ("string", "integer", "number", "boolean", "object", "array")
|
136
|
+
- description: Human-readable description
|
137
|
+
- default: Default value if not provided (optional)
|
138
|
+
- required: Whether the parameter is required (default: False)
|
139
|
+
- hidden: Whether to hide this field in UIs (for secrets/keys)
|
140
|
+
- env_var: Environment variable that can provide this value (optional)
|
141
|
+
- enum: List of allowed values (optional)
|
142
|
+
- min/max: Minimum/maximum values for numeric types (optional)
|
143
|
+
|
144
|
+
Example:
|
145
|
+
{
|
146
|
+
"tool_name": {
|
147
|
+
"type": "string",
|
148
|
+
"description": "Name for the tool when using multiple instances",
|
149
|
+
"default": "my_skill",
|
150
|
+
"required": False
|
151
|
+
},
|
152
|
+
"api_key": {
|
153
|
+
"type": "string",
|
154
|
+
"description": "API key for the service",
|
155
|
+
"required": True,
|
156
|
+
"hidden": True,
|
157
|
+
"env_var": "MY_API_KEY"
|
158
|
+
}
|
159
|
+
}
|
160
|
+
"""
|
161
|
+
schema = {}
|
162
|
+
|
163
|
+
# Add swaig_fields parameter (available to all skills)
|
164
|
+
schema["swaig_fields"] = {
|
165
|
+
"type": "object",
|
166
|
+
"description": "Additional SWAIG function metadata to merge into tool definitions",
|
167
|
+
"default": {},
|
168
|
+
"required": False
|
169
|
+
}
|
170
|
+
|
171
|
+
# Add tool_name for multi-instance skills
|
172
|
+
if cls.SUPPORTS_MULTIPLE_INSTANCES:
|
173
|
+
schema["tool_name"] = {
|
174
|
+
"type": "string",
|
175
|
+
"description": "Custom name for this skill instance (for multiple instances)",
|
176
|
+
"default": cls.SKILL_NAME,
|
177
|
+
"required": False
|
178
|
+
}
|
179
|
+
|
180
|
+
return schema
|
{signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/datetime/skill.py
RENAMED
@@ -110,4 +110,19 @@ class DateTimeSkill(SkillBase):
|
|
110
110
|
"Both tools support different timezones"
|
111
111
|
]
|
112
112
|
}
|
113
|
-
]
|
113
|
+
]
|
114
|
+
|
115
|
+
@classmethod
|
116
|
+
def get_parameter_schema(cls) -> Dict[str, Dict[str, Any]]:
|
117
|
+
"""
|
118
|
+
Get the parameter schema for the datetime skill
|
119
|
+
|
120
|
+
The datetime skill has no custom parameters - it inherits only
|
121
|
+
the base parameters from SkillBase.
|
122
|
+
"""
|
123
|
+
# Get base schema from parent
|
124
|
+
schema = super().get_parameter_schema()
|
125
|
+
|
126
|
+
# No additional parameters for datetime skill
|
127
|
+
|
128
|
+
return schema
|
{signalwire_agents-0.1.34 → signalwire_agents-0.1.36}/signalwire_agents/skills/math/skill.py
RENAMED
@@ -88,4 +88,19 @@ class MathSkill(SkillBase):
|
|
88
88
|
"Can handle parentheses for complex expressions"
|
89
89
|
]
|
90
90
|
}
|
91
|
-
]
|
91
|
+
]
|
92
|
+
|
93
|
+
@classmethod
|
94
|
+
def get_parameter_schema(cls) -> Dict[str, Dict[str, Any]]:
|
95
|
+
"""
|
96
|
+
Get the parameter schema for the math skill
|
97
|
+
|
98
|
+
The math skill has no custom parameters - it inherits only
|
99
|
+
the base parameters from SkillBase.
|
100
|
+
"""
|
101
|
+
# Get base schema from parent
|
102
|
+
schema = super().get_parameter_schema()
|
103
|
+
|
104
|
+
# No additional parameters for math skill
|
105
|
+
|
106
|
+
return schema
|