signalwire-agents 0.1.39__tar.gz → 0.1.40__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.39/signalwire_agents.egg-info → signalwire_agents-0.1.40}/PKG-INFO +1 -1
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/pyproject.toml +1 -1
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/__init__.py +4 -2
- signalwire_agents-0.1.40/signalwire_agents/agents/bedrock.py +296 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/function_result.py +3 -1
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/swml_transfer/skill.py +16 -4
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/weather_api/skill.py +1 -1
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40/signalwire_agents.egg-info}/PKG-INFO +1 -1
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/SOURCES.txt +1 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/LICENSE +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/setup.cfg +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/setup.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/agent_server.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/build_search.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/config.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/agent_loader.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/argparse_helpers.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/dynamic_config.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/service_loader.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/execution/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/execution/datamap_exec.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/execution/webhook_exec.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/output/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/output/output_formatter.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/output/swml_dump.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/data_generation.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/data_overrides.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/mock_env.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/swaig_test_wrapper.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/test_swaig.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/types.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/config/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/deployment/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/deployment/handlers/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/prompt/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/prompt/manager.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/routing/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/security/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/swml/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/tools/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/tools/decorator.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/tools/registry.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent_base.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/auth_handler.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/config_loader.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/contexts.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/data_map.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/logging_config.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/ai_config_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/auth_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/prompt_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/serverless_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/skill_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/state_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/tool_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/web_mixin.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/pom_builder.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/security/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/security/session_manager.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/security_config.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/skill_base.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/skill_manager.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swaig_function.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_builder.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_handler.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_renderer.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_service.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/concierge.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/faq_bot.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/info_gatherer.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/receptionist.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/survey.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/schema.json +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/document_processor.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/index_builder.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/pgvector_backend.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/query_processor.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/search_engine.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/search_service.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/api_ninjas_trivia/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/api_ninjas_trivia/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/api_ninjas_trivia/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere_serverless/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere_serverless/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere_serverless/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/mcp_gateway/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/mcp_gateway/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/mcp_gateway/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/native_vector_search/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/native_vector_search/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/native_vector_search/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/play_background_file/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/play_background_file/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/play_background_file/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/registry.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/swml_transfer/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/swml_transfer/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/weather_api/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/weather_api/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/web_search/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/web_search/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/web_search/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/wikipedia_search/README.md +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/wikipedia_search/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/wikipedia_search/skill.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/__init__.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/pom_utils.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/schema_utils.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/token_generators.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/validators.py +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/dependency_links.txt +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/entry_points.txt +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/requires.txt +0 -0
- {signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/top_level.txt +0 -0
@@ -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.40"
|
22
22
|
|
23
23
|
# Import core classes for easier access
|
24
24
|
from .core.agent_base import AgentBase
|
@@ -29,6 +29,7 @@ from signalwire_agents.core.swml_service import SWMLService
|
|
29
29
|
from signalwire_agents.core.swml_builder import SWMLBuilder
|
30
30
|
from signalwire_agents.core.function_result import SwaigFunctionResult
|
31
31
|
from signalwire_agents.core.swaig_function import SWAIGFunction
|
32
|
+
from signalwire_agents.agents.bedrock import BedrockAgent
|
32
33
|
|
33
34
|
# Lazy import skills to avoid slow startup for CLI tools
|
34
35
|
# Skills are now loaded on-demand when requested
|
@@ -142,5 +143,6 @@ __all__ = [
|
|
142
143
|
"list_skills",
|
143
144
|
"list_skills_with_params",
|
144
145
|
"register_skill",
|
145
|
-
"add_skill_directory"
|
146
|
+
"add_skill_directory",
|
147
|
+
"BedrockAgent"
|
146
148
|
]
|
@@ -0,0 +1,296 @@
|
|
1
|
+
"""
|
2
|
+
Copyright (c) 2025 SignalWire
|
3
|
+
|
4
|
+
This file is part of the SignalWire AI Agents SDK.
|
5
|
+
|
6
|
+
Licensed under the MIT License.
|
7
|
+
See LICENSE file in the project root for full license information.
|
8
|
+
"""
|
9
|
+
|
10
|
+
"""
|
11
|
+
Bedrock Agent - Amazon Bedrock voice-to-voice integration
|
12
|
+
|
13
|
+
This module provides BedrockAgent, which extends AgentBase to support
|
14
|
+
Amazon Bedrock's voice-to-voice model while maintaining compatibility
|
15
|
+
with all SignalWire agent features like skills, POM, and SWAIG functions.
|
16
|
+
"""
|
17
|
+
|
18
|
+
import json
|
19
|
+
from typing import Dict, List, Any, Optional, Union
|
20
|
+
from signalwire_agents.core.agent_base import AgentBase
|
21
|
+
from signalwire_agents.core.logging_config import get_logger
|
22
|
+
|
23
|
+
logger = get_logger("bedrock_agent")
|
24
|
+
|
25
|
+
|
26
|
+
class BedrockAgent(AgentBase):
|
27
|
+
"""
|
28
|
+
Agent implementation for Amazon Bedrock voice-to-voice model
|
29
|
+
|
30
|
+
This agent extends AgentBase to provide full compatibility with
|
31
|
+
SignalWire's agent ecosystem while using Amazon Bedrock as the
|
32
|
+
AI backend. It supports all standard agent features including:
|
33
|
+
- Prompt building with text and POM
|
34
|
+
- Skills and SWAIG functions
|
35
|
+
- Post-prompt functionality
|
36
|
+
- Dynamic configuration
|
37
|
+
|
38
|
+
The main difference from the standard agent is that it generates
|
39
|
+
SWML with the "amazon_bedrock" verb instead of "ai".
|
40
|
+
"""
|
41
|
+
|
42
|
+
def __init__(
|
43
|
+
self,
|
44
|
+
name: str = "bedrock_agent",
|
45
|
+
route: str = "/bedrock",
|
46
|
+
system_prompt: Optional[str] = None,
|
47
|
+
voice_id: str = "matthew",
|
48
|
+
temperature: float = 0.7,
|
49
|
+
top_p: float = 0.9,
|
50
|
+
max_tokens: int = 1024,
|
51
|
+
**kwargs
|
52
|
+
):
|
53
|
+
"""
|
54
|
+
Initialize BedrockAgent
|
55
|
+
|
56
|
+
Args:
|
57
|
+
name: Agent name
|
58
|
+
route: HTTP route for the agent
|
59
|
+
system_prompt: Initial system prompt (can be overridden with set_prompt)
|
60
|
+
voice_id: Bedrock voice ID (default: matthew)
|
61
|
+
temperature: Generation temperature (0-1)
|
62
|
+
top_p: Nucleus sampling parameter (0-1)
|
63
|
+
max_tokens: Maximum tokens to generate
|
64
|
+
**kwargs: Additional arguments passed to AgentBase
|
65
|
+
"""
|
66
|
+
# Store Bedrock-specific parameters first
|
67
|
+
self._voice_id = voice_id
|
68
|
+
self._temperature = temperature
|
69
|
+
self._top_p = top_p
|
70
|
+
self._max_tokens = max_tokens
|
71
|
+
|
72
|
+
# Initialize base class
|
73
|
+
super().__init__(name=name, route=route, **kwargs)
|
74
|
+
|
75
|
+
# Set initial prompt if provided (after super init)
|
76
|
+
if system_prompt:
|
77
|
+
self.set_prompt_text(system_prompt)
|
78
|
+
|
79
|
+
logger.info(f"BedrockAgent initialized: {name} on route {route}")
|
80
|
+
|
81
|
+
def _render_swml(self, call_id: str = None, modifications: Optional[dict] = None) -> str:
|
82
|
+
"""
|
83
|
+
Render SWML document with amazon_bedrock verb
|
84
|
+
|
85
|
+
This method overrides the base implementation to generate
|
86
|
+
SWML with the amazon_bedrock verb structure that matches
|
87
|
+
the ai verb structure for consistency.
|
88
|
+
|
89
|
+
Args:
|
90
|
+
call_id: Optional call ID for session-specific tokens
|
91
|
+
modifications: Optional dict of modifications to apply
|
92
|
+
|
93
|
+
Returns:
|
94
|
+
SWML document as JSON string with amazon_bedrock verb
|
95
|
+
"""
|
96
|
+
# Call parent to build the base SWML with ai verb
|
97
|
+
base_swml_json = super()._render_swml(call_id, modifications)
|
98
|
+
|
99
|
+
# Parse the JSON to modify it
|
100
|
+
swml = json.loads(base_swml_json)
|
101
|
+
|
102
|
+
# Find and transform the ai verb to amazon_bedrock
|
103
|
+
sections = swml.get("sections", {})
|
104
|
+
main_section = sections.get("main", [])
|
105
|
+
|
106
|
+
# Look for ai verb and transform it
|
107
|
+
for i, verb in enumerate(main_section):
|
108
|
+
if "ai" in verb:
|
109
|
+
ai_config = verb["ai"]
|
110
|
+
|
111
|
+
# Build amazon_bedrock verb with same structure
|
112
|
+
bedrock_verb = {
|
113
|
+
"amazon_bedrock": {
|
114
|
+
# Add voice configuration and inference params inside prompt
|
115
|
+
# Note: In Bedrock, voice and inference params are part of prompt config
|
116
|
+
"prompt": self._add_voice_to_prompt(ai_config.get("prompt", {})),
|
117
|
+
|
118
|
+
# Copy SWAIG if present
|
119
|
+
"SWAIG": ai_config.get("SWAIG", {}),
|
120
|
+
|
121
|
+
# Include params only if they were explicitly set via set_params()
|
122
|
+
# The C++ code ignores params for now (marked for future extensibility)
|
123
|
+
"params": ai_config.get("params", {}),
|
124
|
+
|
125
|
+
# Copy global_data if present
|
126
|
+
"global_data": ai_config.get("global_data", {}),
|
127
|
+
|
128
|
+
# Copy post_prompt if present
|
129
|
+
"post_prompt": ai_config.get("post_prompt"),
|
130
|
+
|
131
|
+
# Copy post_prompt_url if present
|
132
|
+
"post_prompt_url": ai_config.get("post_prompt_url")
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
# Remove None values
|
137
|
+
bedrock_config = bedrock_verb["amazon_bedrock"]
|
138
|
+
bedrock_verb["amazon_bedrock"] = {
|
139
|
+
k: v for k, v in bedrock_config.items()
|
140
|
+
if v is not None
|
141
|
+
}
|
142
|
+
|
143
|
+
# Replace ai verb with amazon_bedrock verb
|
144
|
+
main_section[i] = bedrock_verb
|
145
|
+
break
|
146
|
+
|
147
|
+
# Convert back to JSON string
|
148
|
+
return json.dumps(swml)
|
149
|
+
|
150
|
+
def _add_voice_to_prompt(self, prompt_config: Dict[str, Any]) -> Dict[str, Any]:
|
151
|
+
"""
|
152
|
+
Add voice configuration to the prompt object
|
153
|
+
|
154
|
+
In Bedrock, voice configuration is part of the prompt object,
|
155
|
+
not a separate field like in OpenAI.
|
156
|
+
|
157
|
+
Args:
|
158
|
+
prompt_config: Current prompt configuration
|
159
|
+
|
160
|
+
Returns:
|
161
|
+
Updated prompt configuration with voice
|
162
|
+
"""
|
163
|
+
# Create a clean copy, filtering out text-model-specific parameters
|
164
|
+
# that don't apply to Bedrock's voice-to-voice model
|
165
|
+
filtered_config = {}
|
166
|
+
|
167
|
+
# Copy over only the relevant fields
|
168
|
+
for key, value in prompt_config.items():
|
169
|
+
# Skip text-model-specific parameters
|
170
|
+
if key in ['barge_confidence', 'presence_penalty', 'frequency_penalty']:
|
171
|
+
continue
|
172
|
+
filtered_config[key] = value
|
173
|
+
|
174
|
+
# Add voice_id to the prompt configuration
|
175
|
+
filtered_config["voice_id"] = self._voice_id
|
176
|
+
|
177
|
+
# Add/override inference parameters (where C code expects them)
|
178
|
+
filtered_config["temperature"] = self._temperature
|
179
|
+
filtered_config["top_p"] = self._top_p
|
180
|
+
|
181
|
+
return filtered_config
|
182
|
+
|
183
|
+
def _build_bedrock_params(self, base_params: Dict[str, Any]) -> Dict[str, Any]:
|
184
|
+
"""
|
185
|
+
Build Bedrock-specific parameters
|
186
|
+
|
187
|
+
Merges base parameters with Bedrock-specific inference settings.
|
188
|
+
|
189
|
+
Args:
|
190
|
+
base_params: Base parameters from AgentBase
|
191
|
+
|
192
|
+
Returns:
|
193
|
+
Combined parameters for Bedrock
|
194
|
+
"""
|
195
|
+
# Start with base params
|
196
|
+
params = base_params.copy()
|
197
|
+
|
198
|
+
# Add Bedrock inference parameters
|
199
|
+
params.update({
|
200
|
+
"temperature": self._temperature,
|
201
|
+
"top_p": self._top_p,
|
202
|
+
"max_tokens": self._max_tokens
|
203
|
+
})
|
204
|
+
|
205
|
+
return params
|
206
|
+
|
207
|
+
def set_voice(self, voice_id: str) -> None:
|
208
|
+
"""
|
209
|
+
Set the Bedrock voice ID
|
210
|
+
|
211
|
+
Args:
|
212
|
+
voice_id: Bedrock voice identifier (e.g., 'matthew', 'joanna')
|
213
|
+
"""
|
214
|
+
self._voice_id = voice_id
|
215
|
+
logger.debug(f"Voice set to: {voice_id}")
|
216
|
+
|
217
|
+
def set_inference_params(
|
218
|
+
self,
|
219
|
+
temperature: Optional[float] = None,
|
220
|
+
top_p: Optional[float] = None,
|
221
|
+
max_tokens: Optional[int] = None
|
222
|
+
) -> None:
|
223
|
+
"""
|
224
|
+
Update Bedrock inference parameters
|
225
|
+
|
226
|
+
Args:
|
227
|
+
temperature: Generation temperature (0-1)
|
228
|
+
top_p: Nucleus sampling parameter (0-1)
|
229
|
+
max_tokens: Maximum tokens to generate
|
230
|
+
"""
|
231
|
+
if temperature is not None:
|
232
|
+
self._temperature = temperature
|
233
|
+
if top_p is not None:
|
234
|
+
self._top_p = top_p
|
235
|
+
if max_tokens is not None:
|
236
|
+
self._max_tokens = max_tokens
|
237
|
+
|
238
|
+
logger.debug(f"Inference params updated: temp={self._temperature}, "
|
239
|
+
f"top_p={self._top_p}, max_tokens={self._max_tokens}")
|
240
|
+
|
241
|
+
# Methods that may not be relevant to Bedrock
|
242
|
+
# These are overridden to provide appropriate behavior or warnings
|
243
|
+
|
244
|
+
def set_llm_model(self, model: str) -> None:
|
245
|
+
"""
|
246
|
+
Set LLM model - not applicable for Bedrock
|
247
|
+
|
248
|
+
Bedrock uses a fixed voice-to-voice model, so this method
|
249
|
+
logs a warning and does nothing.
|
250
|
+
|
251
|
+
Args:
|
252
|
+
model: Model name (ignored)
|
253
|
+
"""
|
254
|
+
logger.warning(f"set_llm_model('{model}') called but Bedrock uses a fixed voice-to-voice model")
|
255
|
+
|
256
|
+
def set_llm_temperature(self, temperature: float) -> None:
|
257
|
+
"""
|
258
|
+
Set LLM temperature - redirects to set_inference_params
|
259
|
+
|
260
|
+
Args:
|
261
|
+
temperature: Temperature value
|
262
|
+
"""
|
263
|
+
self.set_inference_params(temperature=temperature)
|
264
|
+
|
265
|
+
def set_post_prompt_llm_params(self, **params) -> None:
|
266
|
+
"""
|
267
|
+
Set post-prompt LLM parameters - not applicable for Bedrock
|
268
|
+
|
269
|
+
Bedrock uses OpenAI for post-prompt summarization, but those
|
270
|
+
parameters are configured in the C code.
|
271
|
+
|
272
|
+
Args:
|
273
|
+
**params: Ignored parameters
|
274
|
+
"""
|
275
|
+
logger.warning("set_post_prompt_llm_params() called but Bedrock post-prompt uses OpenAI configured in C code")
|
276
|
+
|
277
|
+
def set_prompt_llm_params(self, **params) -> None:
|
278
|
+
"""
|
279
|
+
Set prompt LLM parameters - use set_inference_params instead
|
280
|
+
|
281
|
+
For Bedrock, use set_inference_params() to configure temperature,
|
282
|
+
top_p, and max_tokens.
|
283
|
+
|
284
|
+
Args:
|
285
|
+
**params: Parameters (ignored, use set_inference_params)
|
286
|
+
"""
|
287
|
+
logger.warning("set_prompt_llm_params() called - use set_inference_params() for Bedrock")
|
288
|
+
|
289
|
+
# Note: We don't override prompt methods like set_prompt_text, set_prompt_pom
|
290
|
+
# because those work fine - they just build the prompt structure that we
|
291
|
+
# transform in _render_swml()
|
292
|
+
|
293
|
+
def __repr__(self) -> str:
|
294
|
+
"""String representation of the agent"""
|
295
|
+
return (f"BedrockAgent(name='{self.name}', route='{self.route}', "
|
296
|
+
f"voice='{self._voice_id}')")
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/function_result.py
RENAMED
@@ -611,7 +611,8 @@ class SwaigFunctionResult:
|
|
611
611
|
currency: str = "usd", language: str = "en-US", voice: str = "woman",
|
612
612
|
description: Optional[str] = None, valid_card_types: str = "visa mastercard amex",
|
613
613
|
parameters: Optional[List[Dict[str, str]]] = None,
|
614
|
-
prompts: Optional[List[Dict[str, Any]]] = None
|
614
|
+
prompts: Optional[List[Dict[str, Any]]] = None,
|
615
|
+
ai_response: Optional[str] = "The payment status is ${pay_result}, do not mention anything else about collecting payment if successful.") -> 'SwaigFunctionResult':
|
615
616
|
"""
|
616
617
|
Process payment using SWML pay action.
|
617
618
|
|
@@ -679,6 +680,7 @@ class SwaigFunctionResult:
|
|
679
680
|
"version": "1.0.0",
|
680
681
|
"sections": {
|
681
682
|
"main": [
|
683
|
+
{"set": {"ai_response": ai_response}},
|
682
684
|
{"pay": pay_params}
|
683
685
|
]
|
684
686
|
}
|
@@ -270,9 +270,15 @@ class SWMLTransferSkill(SkillBase):
|
|
270
270
|
# Extract common words from patterns for hints
|
271
271
|
for pattern in self.transfers.keys():
|
272
272
|
# Remove regex delimiters and flags
|
273
|
-
clean_pattern = pattern
|
274
|
-
|
273
|
+
clean_pattern = pattern
|
274
|
+
# Remove leading and trailing slashes
|
275
|
+
if clean_pattern.startswith('/'):
|
276
|
+
clean_pattern = clean_pattern[1:]
|
277
|
+
if clean_pattern.endswith('/'):
|
275
278
|
clean_pattern = clean_pattern[:-1]
|
279
|
+
# Remove flags after the pattern (e.g., 'i' for case-insensitive)
|
280
|
+
elif clean_pattern.endswith('/i'):
|
281
|
+
clean_pattern = clean_pattern[:-2]
|
276
282
|
|
277
283
|
# Only add if it's not a catch-all pattern
|
278
284
|
if clean_pattern and not clean_pattern.startswith('.'):
|
@@ -299,9 +305,15 @@ class SWMLTransferSkill(SkillBase):
|
|
299
305
|
for pattern, config in self.transfers.items():
|
300
306
|
# Extract meaningful name from pattern
|
301
307
|
# Remove regex delimiters and flags
|
302
|
-
clean_pattern = pattern
|
303
|
-
|
308
|
+
clean_pattern = pattern
|
309
|
+
# Remove leading and trailing slashes
|
310
|
+
if clean_pattern.startswith('/'):
|
311
|
+
clean_pattern = clean_pattern[1:]
|
312
|
+
if clean_pattern.endswith('/'):
|
304
313
|
clean_pattern = clean_pattern[:-1]
|
314
|
+
# Remove flags after the pattern (e.g., 'i' for case-insensitive)
|
315
|
+
elif clean_pattern.endswith('/i'):
|
316
|
+
clean_pattern = clean_pattern[:-2]
|
305
317
|
|
306
318
|
# Only add if it's not a catch-all pattern
|
307
319
|
if clean_pattern and not clean_pattern.startswith('.'):
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/weather_api/skill.py
RENAMED
@@ -176,7 +176,7 @@ class WeatherApiSkill(SkillBase):
|
|
176
176
|
"data_map": {
|
177
177
|
"webhooks": [
|
178
178
|
{
|
179
|
-
"url": f"https://api.weatherapi.com/v1/current.json?key={self.api_key}&q
|
179
|
+
"url": f"https://api.weatherapi.com/v1/current.json?key={self.api_key}&q=${{args.location}}&aqi=no",
|
180
180
|
"method": "GET",
|
181
181
|
"output": SwaigFunctionResult(weather_template).to_dict()
|
182
182
|
}
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/SOURCES.txt
RENAMED
@@ -11,6 +11,7 @@ signalwire_agents.egg-info/dependency_links.txt
|
|
11
11
|
signalwire_agents.egg-info/entry_points.txt
|
12
12
|
signalwire_agents.egg-info/requires.txt
|
13
13
|
signalwire_agents.egg-info/top_level.txt
|
14
|
+
signalwire_agents/agents/bedrock.py
|
14
15
|
signalwire_agents/cli/__init__.py
|
15
16
|
signalwire_agents/cli/build_search.py
|
16
17
|
signalwire_agents/cli/config.py
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/agent_loader.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/argparse_helpers.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/dynamic_config.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/core/service_loader.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/execution/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/output/__init__.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/output/swml_dump.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/simulation/mock_env.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/cli/swaig_test_wrapper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/prompt/manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/swml/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/tools/__init__.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/agent/tools/registry.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/auth_handler.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/config_loader.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/logging_config.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/__init__.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/auth_mixin.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/prompt_mixin.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/skill_mixin.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/state_mixin.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/tool_mixin.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/mixins/web_mixin.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/security/__init__.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/security_config.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/skill_manager.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swaig_function.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_builder.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_handler.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_renderer.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/core/swml_service.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/concierge.py
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/info_gatherer.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/prefabs/receptionist.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/document_processor.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/index_builder.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/pgvector_backend.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/query_processor.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/search_engine.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/search/search_service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere/README.md
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datasphere/skill.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/README.md
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/datetime/skill.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/README.md
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/joke/skill.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/README.md
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/math/skill.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/mcp_gateway/README.md
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/mcp_gateway/skill.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/README.md
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/__init__.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/spider/skill.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/weather_api/README.md
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/web_search/README.md
RENAMED
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/skills/web_search/skill.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/schema_utils.py
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents/utils/token_generators.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/entry_points.txt
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/requires.txt
RENAMED
File without changes
|
{signalwire_agents-0.1.39 → signalwire_agents-0.1.40}/signalwire_agents.egg-info/top_level.txt
RENAMED
File without changes
|