signalwire-sdk 3.0.2.dev41__tar.gz → 3.0.2.dev43__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_sdk-3.0.2.dev41/signalwire/signalwire_sdk.egg-info → signalwire_sdk-3.0.2.dev43}/PKG-INFO +1 -1
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/pyproject.toml +1 -1
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/__init__.py +9 -27
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/agent_server.py +1 -1
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/call.py +214 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/registry.py +7 -4
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43/signalwire/signalwire_sdk.egg-info}/PKG-INFO +1 -1
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/LICENSE +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/man/sw-agent-init.1 +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/man/sw-search.1 +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/man/swaig-test.1 +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/setup.cfg +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/setup.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/agents/bedrock.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/build_search.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/config.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/agent_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/argparse_helpers.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/dynamic_config.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/service_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/dokku.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/execution/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/execution/datamap_exec.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/execution/webhook_exec.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/init_project.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/output/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/output/output_formatter.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/output/swml_dump.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/simulation/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/simulation/data_generation.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/simulation/data_overrides.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/simulation/mock_env.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/swaig_test_wrapper.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/test_swaig.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/types.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/config/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/deployment/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/deployment/handlers/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/prompt/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/prompt/manager.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/routing/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/security/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/swml/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/tools/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/tools/decorator.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/tools/registry.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent/tools/type_inference.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent_base.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/auth_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/config_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/contexts.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/data_map.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/function_result.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/logging_config.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/ai_config_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/auth_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/mcp_server_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/prompt_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/serverless_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/skill_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/state_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/tool_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/mixins/web_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/pom_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/security/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/security/session_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/security/webhook_middleware.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/security/webhook_validator.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/security_config.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/skill_base.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/skill_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swaig_function.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_renderer.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_service.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/livewire/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/livewire/plugins.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/mcp_gateway/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/mcp_gateway/gateway_service.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/mcp_gateway/mcp_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/mcp_gateway/session_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/pom/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/pom/pom.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/pom/pom_tool.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/concierge.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/faq_bot.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/info_gatherer.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/receptionist.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/survey.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/client.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/constants.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/event.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/message.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/_base.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/_pagination.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/call_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/client.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/addresses.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/calling.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/chat.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/compat.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/datasphere.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/fabric.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/imported_numbers.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/logs.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/lookup.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/mfa.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/number_groups.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/phone_numbers.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/project.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/pubsub.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/queues.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/recordings.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/registry.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/short_codes.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/sip_profile.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/verified_callers.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/namespaces/video.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/schema.json +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/document_processor.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/index_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/migration.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/models.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/pgvector_backend.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/query_processor.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/search_engine.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/search_service.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/api_ninjas_trivia/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/api_ninjas_trivia/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/api_ninjas_trivia/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/claude_skills/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/claude_skills/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/claude_skills/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere_serverless/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere_serverless/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datasphere_serverless/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datetime/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datetime/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/datetime/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/google_maps/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/google_maps/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/info_gatherer/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/info_gatherer/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/info_gatherer/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/joke/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/joke/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/joke/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/math/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/math/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/math/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/mcp_gateway/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/mcp_gateway/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/mcp_gateway/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/native_vector_search/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/native_vector_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/native_vector_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/play_background_file/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/play_background_file/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/play_background_file/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/spider/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/spider/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/spider/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/swml_transfer/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/swml_transfer/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/swml_transfer/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/weather_api/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/weather_api/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/weather_api/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/web_search/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/web_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/web_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/web_search/skill_improved.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/web_search/skill_original.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/wikipedia_search/README.md +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/wikipedia_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/wikipedia_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/pom_utils.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/schema_utils.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/token_generators.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/url_validator.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/validators.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/web/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/web/web_service.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire_sdk.egg-info/SOURCES.txt +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire_sdk.egg-info/dependency_links.txt +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire_sdk.egg-info/entry_points.txt +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire_sdk.egg-info/requires.txt +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire_sdk.egg-info/top_level.txt +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/tests/test_examples.py +0 -0
- {signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/tests/test_mcp_integration.py +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__ = "3.0.2.
|
|
21
|
+
__version__ = "3.0.2.dev43"
|
|
22
22
|
|
|
23
23
|
# Import core classes for easier access
|
|
24
24
|
from .core.agent_base import AgentBase
|
|
@@ -42,30 +42,14 @@ def _get_skill_registry():
|
|
|
42
42
|
import signalwire.skills
|
|
43
43
|
return signalwire.skills.skill_registry
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def run_agent(*args, **kwargs):
|
|
55
|
-
"""Run an agent (lazy import)"""
|
|
56
|
-
try:
|
|
57
|
-
from signalwire.cli.helpers import run_agent as _run_agent
|
|
58
|
-
return _run_agent(*args, **kwargs)
|
|
59
|
-
except ImportError:
|
|
60
|
-
raise NotImplementedError("CLI helpers not available")
|
|
61
|
-
|
|
62
|
-
def list_skills(*args, **kwargs):
|
|
63
|
-
"""List available skills (lazy import)"""
|
|
64
|
-
try:
|
|
65
|
-
from signalwire.cli.helpers import list_skills as _list_skills
|
|
66
|
-
return _list_skills(*args, **kwargs)
|
|
67
|
-
except ImportError:
|
|
68
|
-
raise NotImplementedError("CLI helpers not available")
|
|
45
|
+
def list_skills():
|
|
46
|
+
"""List all available skills with metadata.
|
|
47
|
+
|
|
48
|
+
Returns one dict per skill (name, description, version, required packages /
|
|
49
|
+
env vars, multi-instance support). Delegates to the skill registry — the
|
|
50
|
+
same source as ``list_skills_with_params()``, but the lighter summary."""
|
|
51
|
+
from signalwire.skills.registry import skill_registry
|
|
52
|
+
return skill_registry.list_skills()
|
|
69
53
|
|
|
70
54
|
def list_skills_with_params():
|
|
71
55
|
"""
|
|
@@ -148,8 +132,6 @@ __all__ = [
|
|
|
148
132
|
"Step",
|
|
149
133
|
"create_simple_context",
|
|
150
134
|
"WebService",
|
|
151
|
-
"start_agent",
|
|
152
|
-
"run_agent",
|
|
153
135
|
"list_skills",
|
|
154
136
|
"list_skills_with_params",
|
|
155
137
|
"register_skill",
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/call.py
RENAMED
|
@@ -9,6 +9,10 @@ from typing import Any, Callable, Coroutine, Optional, TYPE_CHECKING
|
|
|
9
9
|
from signalwire.core.logging_config import get_logger
|
|
10
10
|
|
|
11
11
|
from .constants import (
|
|
12
|
+
CALL_STATE_CREATED,
|
|
13
|
+
CALL_STATE_RINGING,
|
|
14
|
+
CALL_STATE_ANSWERED,
|
|
15
|
+
CALL_STATE_ENDING,
|
|
12
16
|
CALL_STATE_ENDED,
|
|
13
17
|
EVENT_CALL_PLAY,
|
|
14
18
|
EVENT_CALL_RECORD,
|
|
@@ -515,6 +519,216 @@ class Call:
|
|
|
515
519
|
action = PlayAction(self, cid)
|
|
516
520
|
return await self._start_action(action, "play", params, on_completed=on_completed)
|
|
517
521
|
|
|
522
|
+
async def play_tts(
|
|
523
|
+
self,
|
|
524
|
+
text: str,
|
|
525
|
+
*,
|
|
526
|
+
language: Optional[str] = None,
|
|
527
|
+
gender: Optional[str] = None,
|
|
528
|
+
voice: Optional[str] = None,
|
|
529
|
+
volume: Optional[float] = None,
|
|
530
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
531
|
+
) -> PlayAction:
|
|
532
|
+
"""Play text-to-speech. Typed convenience over :meth:`play`.
|
|
533
|
+
|
|
534
|
+
Restores the legacy ``call.play_tts(text=...)`` ergonomics so callers
|
|
535
|
+
don't hand-build the ``{"type": "tts", "params": {...}}`` media shape.
|
|
536
|
+
"""
|
|
537
|
+
tts: dict[str, Any] = {"text": text}
|
|
538
|
+
if language is not None:
|
|
539
|
+
tts["language"] = language
|
|
540
|
+
if gender is not None:
|
|
541
|
+
tts["gender"] = gender
|
|
542
|
+
if voice is not None:
|
|
543
|
+
tts["voice"] = voice
|
|
544
|
+
return await self.play(
|
|
545
|
+
[{"type": "tts", "params": tts}], volume=volume, on_completed=on_completed
|
|
546
|
+
)
|
|
547
|
+
|
|
548
|
+
async def play_audio(
|
|
549
|
+
self,
|
|
550
|
+
url: str,
|
|
551
|
+
*,
|
|
552
|
+
volume: Optional[float] = None,
|
|
553
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
554
|
+
) -> PlayAction:
|
|
555
|
+
"""Play an audio file from a URL. Typed convenience over :meth:`play`."""
|
|
556
|
+
return await self.play(
|
|
557
|
+
[{"type": "audio", "params": {"url": url}}],
|
|
558
|
+
volume=volume,
|
|
559
|
+
on_completed=on_completed,
|
|
560
|
+
)
|
|
561
|
+
|
|
562
|
+
async def play_silence(
|
|
563
|
+
self,
|
|
564
|
+
duration: float,
|
|
565
|
+
*,
|
|
566
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
567
|
+
) -> PlayAction:
|
|
568
|
+
"""Play silence for ``duration`` seconds. Typed convenience over :meth:`play`."""
|
|
569
|
+
return await self.play(
|
|
570
|
+
[{"type": "silence", "params": {"duration": duration}}],
|
|
571
|
+
on_completed=on_completed,
|
|
572
|
+
)
|
|
573
|
+
|
|
574
|
+
async def play_ringtone(
|
|
575
|
+
self,
|
|
576
|
+
name: str,
|
|
577
|
+
*,
|
|
578
|
+
duration: Optional[float] = None,
|
|
579
|
+
volume: Optional[float] = None,
|
|
580
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
581
|
+
) -> PlayAction:
|
|
582
|
+
"""Play a named ringtone by country code. Typed convenience over :meth:`play`."""
|
|
583
|
+
rt: dict[str, Any] = {"name": name}
|
|
584
|
+
if duration is not None:
|
|
585
|
+
rt["duration"] = duration
|
|
586
|
+
return await self.play(
|
|
587
|
+
[{"type": "ringtone", "params": rt}], volume=volume, on_completed=on_completed
|
|
588
|
+
)
|
|
589
|
+
|
|
590
|
+
# ------------------------------------------------------------------
|
|
591
|
+
# Detect convenience (typed wrappers over detect())
|
|
592
|
+
# ------------------------------------------------------------------
|
|
593
|
+
|
|
594
|
+
async def detect_digit(
|
|
595
|
+
self,
|
|
596
|
+
*,
|
|
597
|
+
digits: Optional[str] = None,
|
|
598
|
+
timeout: Optional[float] = None,
|
|
599
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
600
|
+
) -> DetectAction:
|
|
601
|
+
"""Detect DTMF digits. Typed convenience over :meth:`detect`."""
|
|
602
|
+
params: dict[str, Any] = {}
|
|
603
|
+
if digits is not None:
|
|
604
|
+
params["digits"] = digits
|
|
605
|
+
return await self.detect(
|
|
606
|
+
{"type": "digit", "params": params}, timeout=timeout, on_completed=on_completed
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
async def detect_answering_machine(
|
|
610
|
+
self,
|
|
611
|
+
*,
|
|
612
|
+
initial_timeout: Optional[float] = None,
|
|
613
|
+
end_silence_timeout: Optional[float] = None,
|
|
614
|
+
machine_voice_threshold: Optional[float] = None,
|
|
615
|
+
machine_words_threshold: Optional[int] = None,
|
|
616
|
+
detect_interruptions: Optional[bool] = None,
|
|
617
|
+
detect_message_end: Optional[bool] = None,
|
|
618
|
+
timeout: Optional[float] = None,
|
|
619
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
620
|
+
) -> DetectAction:
|
|
621
|
+
"""Detect human vs answering machine (AMD). Typed convenience over :meth:`detect`."""
|
|
622
|
+
params: dict[str, Any] = {}
|
|
623
|
+
for key, val in (
|
|
624
|
+
("initial_timeout", initial_timeout),
|
|
625
|
+
("end_silence_timeout", end_silence_timeout),
|
|
626
|
+
("machine_voice_threshold", machine_voice_threshold),
|
|
627
|
+
("machine_words_threshold", machine_words_threshold),
|
|
628
|
+
("detect_interruptions", detect_interruptions),
|
|
629
|
+
("detect_message_end", detect_message_end),
|
|
630
|
+
):
|
|
631
|
+
if val is not None:
|
|
632
|
+
params[key] = val
|
|
633
|
+
return await self.detect(
|
|
634
|
+
{"type": "machine", "params": params}, timeout=timeout, on_completed=on_completed
|
|
635
|
+
)
|
|
636
|
+
|
|
637
|
+
async def detect_fax(
|
|
638
|
+
self,
|
|
639
|
+
*,
|
|
640
|
+
tone: Optional[str] = None,
|
|
641
|
+
timeout: Optional[float] = None,
|
|
642
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
643
|
+
) -> DetectAction:
|
|
644
|
+
"""Detect a fax tone (CED/CNG). Typed convenience over :meth:`detect`."""
|
|
645
|
+
params: dict[str, Any] = {}
|
|
646
|
+
if tone is not None:
|
|
647
|
+
params["tone"] = tone
|
|
648
|
+
return await self.detect(
|
|
649
|
+
{"type": "fax", "params": params}, timeout=timeout, on_completed=on_completed
|
|
650
|
+
)
|
|
651
|
+
|
|
652
|
+
# ------------------------------------------------------------------
|
|
653
|
+
# Prompt convenience (typed media over play_and_collect())
|
|
654
|
+
# ------------------------------------------------------------------
|
|
655
|
+
|
|
656
|
+
async def prompt_tts(
|
|
657
|
+
self,
|
|
658
|
+
text: str,
|
|
659
|
+
collect: dict[str, Any],
|
|
660
|
+
*,
|
|
661
|
+
language: Optional[str] = None,
|
|
662
|
+
gender: Optional[str] = None,
|
|
663
|
+
voice: Optional[str] = None,
|
|
664
|
+
volume: Optional[float] = None,
|
|
665
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
666
|
+
) -> CollectAction:
|
|
667
|
+
"""Play TTS then collect input. Typed media over :meth:`play_and_collect`."""
|
|
668
|
+
tts: dict[str, Any] = {"text": text}
|
|
669
|
+
if language is not None:
|
|
670
|
+
tts["language"] = language
|
|
671
|
+
if gender is not None:
|
|
672
|
+
tts["gender"] = gender
|
|
673
|
+
if voice is not None:
|
|
674
|
+
tts["voice"] = voice
|
|
675
|
+
return await self.play_and_collect(
|
|
676
|
+
[{"type": "tts", "params": tts}], collect, volume=volume, on_completed=on_completed
|
|
677
|
+
)
|
|
678
|
+
|
|
679
|
+
async def prompt_audio(
|
|
680
|
+
self,
|
|
681
|
+
url: str,
|
|
682
|
+
collect: dict[str, Any],
|
|
683
|
+
*,
|
|
684
|
+
volume: Optional[float] = None,
|
|
685
|
+
on_completed: Optional[Callable[[RelayEvent], Any]] = None,
|
|
686
|
+
) -> CollectAction:
|
|
687
|
+
"""Play an audio file then collect input. Typed media over :meth:`play_and_collect`."""
|
|
688
|
+
return await self.play_and_collect(
|
|
689
|
+
[{"type": "audio", "params": {"url": url}}],
|
|
690
|
+
collect,
|
|
691
|
+
volume=volume,
|
|
692
|
+
on_completed=on_completed,
|
|
693
|
+
)
|
|
694
|
+
|
|
695
|
+
# ------------------------------------------------------------------
|
|
696
|
+
# State-wait convenience (typed waits over wait_for())
|
|
697
|
+
# ------------------------------------------------------------------
|
|
698
|
+
|
|
699
|
+
async def _wait_for_state(self, target: str, timeout: Optional[float]) -> RelayEvent:
|
|
700
|
+
order = (
|
|
701
|
+
CALL_STATE_CREATED,
|
|
702
|
+
CALL_STATE_RINGING,
|
|
703
|
+
CALL_STATE_ANSWERED,
|
|
704
|
+
CALL_STATE_ENDING,
|
|
705
|
+
CALL_STATE_ENDED,
|
|
706
|
+
)
|
|
707
|
+
|
|
708
|
+
def rank(s: str) -> int:
|
|
709
|
+
return order.index(s) if s in order else -1
|
|
710
|
+
|
|
711
|
+
# Already at or past the target -> return immediately (matches legacy SDK).
|
|
712
|
+
if rank(self.state) >= rank(target):
|
|
713
|
+
return RelayEvent(event_type=EVENT_CALL_STATE, params={"call_state": self.state})
|
|
714
|
+
return await self.wait_for(
|
|
715
|
+
EVENT_CALL_STATE,
|
|
716
|
+
lambda e: e.params.get("call_state") == target,
|
|
717
|
+
timeout=timeout,
|
|
718
|
+
)
|
|
719
|
+
|
|
720
|
+
async def wait_for_answered(self, timeout: Optional[float] = None) -> RelayEvent:
|
|
721
|
+
"""Wait until the call is answered (immediate if already answered or past it)."""
|
|
722
|
+
return await self._wait_for_state(CALL_STATE_ANSWERED, timeout)
|
|
723
|
+
|
|
724
|
+
async def wait_for_ringing(self, timeout: Optional[float] = None) -> RelayEvent:
|
|
725
|
+
"""Wait until the call is ringing (immediate if already ringing or past it)."""
|
|
726
|
+
return await self._wait_for_state(CALL_STATE_RINGING, timeout)
|
|
727
|
+
|
|
728
|
+
async def wait_for_ending(self, timeout: Optional[float] = None) -> RelayEvent:
|
|
729
|
+
"""Wait until the call is ending (immediate if already ending or past it)."""
|
|
730
|
+
return await self._wait_for_state(CALL_STATE_ENDING, timeout)
|
|
731
|
+
|
|
518
732
|
# ------------------------------------------------------------------
|
|
519
733
|
# Recording
|
|
520
734
|
# ------------------------------------------------------------------
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/registry.py
RENAMED
|
@@ -119,10 +119,13 @@ class SkillRegistry:
|
|
|
119
119
|
self.logger.error(f"Failed to load skill '{skill_name}' from {skill_file}: {e}")
|
|
120
120
|
return None
|
|
121
121
|
|
|
122
|
-
def discover_skills(self) ->
|
|
123
|
-
"""
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
def discover_skills(self) -> List[Dict[str, str]]:
|
|
123
|
+
"""Discover and return all available skills.
|
|
124
|
+
|
|
125
|
+
Skills load on-demand, so there is nothing to eagerly register; this
|
|
126
|
+
scans the skills package and returns metadata for everything
|
|
127
|
+
discoverable, so callers can enumerate what is available."""
|
|
128
|
+
return self.list_skills()
|
|
126
129
|
|
|
127
130
|
def _load_skill_from_directory(self, skill_dir: Path) -> None:
|
|
128
131
|
"""Deprecated: Skills are now loaded on-demand"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/agents/bedrock.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/build_search.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/config.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/dokku.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/init_project.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
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/test_swaig.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/cli/types.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/__init__.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/agent_base.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/auth_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/contexts.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/data_map.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/pom_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/skill_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_builder.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/core/swml_service.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/livewire/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/livewire/plugins.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/pom/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/pom/pom_tool.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/concierge.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/faq_bot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/prefabs/survey.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/client.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/constants.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/event.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/relay/message.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/_base.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/_pagination.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/call_handler.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/rest/client.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/migration.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/search/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/README.md
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/__init__.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/joke/skill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/skills/math/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/pom_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/utils/validators.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/web/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev41 → signalwire_sdk-3.0.2.dev43}/signalwire/signalwire/web/web_service.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
|