signalwire-sdk 3.0.2.dev74__tar.gz → 3.0.2.dev77__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.dev74 → signalwire_sdk-3.0.2.dev77}/PKG-INFO +2 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/README.md +1 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/pyproject.toml +10 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/__init__.py +1 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/agent_server.py +1 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/contexts.py +110 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/client.py +1 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/README.md +9 -8
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/README.md +4 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/README.md +1 -1
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/README.md +3 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/README.md +3 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/README.md +3 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/README.md +2 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/PKG-INFO +2 -2
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/LICENSE +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/sw-agent-init.1 +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/sw-search.1 +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/swaig-test.1 +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/setup.cfg +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/setup.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/agents/bedrock.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/build_search.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/config.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/agent_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/argparse_helpers.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/dynamic_config.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/service_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/dokku.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/datamap_exec.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/webhook_exec.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/init_project.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/output_formatter.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/swml_dump.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/data_generation.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/data_overrides.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/mock_env.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/swaig_test_wrapper.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/test_swaig.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/types.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/_agent_host.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/config/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/deployment/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/deployment/handlers/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/prompt/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/prompt/manager.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/routing/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/security/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/swml/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/decorator.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/registry.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/type_inference.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent_base.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/auth_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/config_loader.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/data_map.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/function_result.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/logging_config.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/_mixin_host.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/ai_config_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/auth_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/mcp_server_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/prompt_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/serverless_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/skill_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/state_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/tool_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/web_mixin.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/pom_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/post_prompt_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/security_utils.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/session_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/webhook_middleware.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/webhook_validator.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security_config.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/skill_base.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/skill_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_actions_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_function.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_request_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_renderer.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_service.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_verbs_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/web.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/livewire/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/livewire/plugins.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/gateway_service.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/mcp_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/session_manager.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/pom.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/pom_tool.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/concierge.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/faq_bot.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/info_gatherer.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/receptionist.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/survey.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/py.typed +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/call.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/client.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/constants.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/event.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/message.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/protocol_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/_base.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/_pagination.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/call_handler.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/_client_tree_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/addresses.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fax_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fax_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/imported_numbers.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/lookup.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/message_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/message_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/mfa.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/number_groups.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/phone_numbers.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/queues.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/recordings.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/registry.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/relay_rest_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/relay_rest_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/short_codes.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/sip_profile.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/swml_webhooks_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/verified_callers.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/voice_resources_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/voice_types_generated.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/schema.json +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/document_processor.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/index_builder.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/migration.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/models.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/pgvector_backend.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/query_processor.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/search_engine.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/search_service.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/google_maps/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/google_maps/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/registry.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/README.md +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill_improved.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill_original.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/skill.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/pom_utils.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/schema_utils.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/token_generators.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/url_validator.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/validators.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/web/__init__.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/web/web_service.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/SOURCES.txt +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/dependency_links.txt +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/entry_points.txt +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/requires.txt +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/top_level.txt +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/tests/test_examples.py +0 -0
- {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/tests/test_mcp_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: signalwire-sdk
|
|
3
|
-
Version: 3.0.2.
|
|
3
|
+
Version: 3.0.2.dev77
|
|
4
4
|
Summary: SignalWire SDK
|
|
5
5
|
Author-email: SignalWire Team <info@signalwire.com>
|
|
6
6
|
License: MIT
|
|
@@ -247,7 +247,7 @@ client = RestClient(project="...", token="...", host="example.signalwire.com")
|
|
|
247
247
|
|
|
248
248
|
client.fabric.ai_agents.create(name="Support Bot", prompt={"text": "You are helpful."})
|
|
249
249
|
client.calling.play(call_id, play=[{"type": "tts", "text": "Hello!"}])
|
|
250
|
-
client.phone_numbers.search(
|
|
250
|
+
client.phone_numbers.search(areacode="512")
|
|
251
251
|
client.datasphere.documents.search(query_string="billing policy")
|
|
252
252
|
```
|
|
253
253
|
|
|
@@ -149,7 +149,7 @@ client = RestClient(project="...", token="...", host="example.signalwire.com")
|
|
|
149
149
|
|
|
150
150
|
client.fabric.ai_agents.create(name="Support Bot", prompt={"text": "You are helpful."})
|
|
151
151
|
client.calling.play(call_id, play=[{"type": "tts", "text": "Hello!"}])
|
|
152
|
-
client.phone_numbers.search(
|
|
152
|
+
client.phone_numbers.search(areacode="512")
|
|
153
153
|
client.datasphere.documents.search(query_string="billing policy")
|
|
154
154
|
```
|
|
155
155
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "signalwire-sdk"
|
|
7
|
-
version = "3.0.2.
|
|
7
|
+
version = "3.0.2.dev77"
|
|
8
8
|
description = "SignalWire SDK"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "SignalWire Team", email = "info@signalwire.com"}
|
|
@@ -167,6 +167,15 @@ signalwire = [
|
|
|
167
167
|
target-version = "py310"
|
|
168
168
|
line-length = 88
|
|
169
169
|
|
|
170
|
+
[tool.ruff.format]
|
|
171
|
+
# Pin STABLE formatting explicitly. Without this, CI's `ruff format --check` was
|
|
172
|
+
# resolving preview-mode formatting (it wanted the preview-only frozenset({...})
|
|
173
|
+
# collapse) while a local stable run left the file unchanged — a local≠CI split
|
|
174
|
+
# with no visible cause. An explicit `preview = false` overrides any ambient
|
|
175
|
+
# RUFF_PREVIEW env / default drift so the gate is deterministic and matches a
|
|
176
|
+
# plain local `ruff format`.
|
|
177
|
+
preview = false
|
|
178
|
+
|
|
170
179
|
[tool.ruff.lint]
|
|
171
180
|
# E4/E7/E9 + F are the ruff defaults (E501 line-length intentionally excluded —
|
|
172
181
|
# formatting is owned by `ruff format`, not the linter). B = flake8-bugbear
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/contexts.py
RENAMED
|
@@ -19,6 +19,23 @@ MAX_CONTEXTS = 50
|
|
|
19
19
|
MAX_STEPS_PER_CONTEXT = 100
|
|
20
20
|
|
|
21
21
|
|
|
22
|
+
#: Valid values for a step's or context's ``history`` visibility mode.
|
|
23
|
+
#:
|
|
24
|
+
#: ``keep`` nothing is cleared — every prior step's instructions *and*
|
|
25
|
+
#: dialogue stay in the model's context.
|
|
26
|
+
#: ``default`` prior step instructions are hidden; the dialogue is kept.
|
|
27
|
+
#: ``hide`` prior instructions hidden **and** the prior dialogue pulled
|
|
28
|
+
#: out of the model's context. The only way back in is an
|
|
29
|
+
#: explicit ``${step_history.*}`` reference in the new prompt.
|
|
30
|
+
HISTORY_MODES = ("keep", "default", "hide")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _validate_history(mode: str) -> str:
|
|
34
|
+
if mode not in HISTORY_MODES:
|
|
35
|
+
raise ValueError(f"history must be one of {HISTORY_MODES}, got {mode!r}")
|
|
36
|
+
return mode
|
|
37
|
+
|
|
38
|
+
|
|
22
39
|
class GatherQuestion:
|
|
23
40
|
"""Represents a single question in a gather_info configuration"""
|
|
24
41
|
|
|
@@ -30,6 +47,7 @@ class GatherQuestion:
|
|
|
30
47
|
confirm: bool = False,
|
|
31
48
|
prompt: str | None = None,
|
|
32
49
|
functions: list[str] | None = None,
|
|
50
|
+
isolated: bool | None = None,
|
|
33
51
|
):
|
|
34
52
|
self.key = key
|
|
35
53
|
self.question = question
|
|
@@ -37,6 +55,8 @@ class GatherQuestion:
|
|
|
37
55
|
self.confirm = confirm
|
|
38
56
|
self.prompt = prompt
|
|
39
57
|
self.functions = functions
|
|
58
|
+
# Tri-state: None means "inherit the gather_info default"
|
|
59
|
+
self.isolated = isolated
|
|
40
60
|
|
|
41
61
|
def to_dict(self) -> dict[str, Any]:
|
|
42
62
|
"""Convert question to dictionary for SWML generation"""
|
|
@@ -49,6 +69,9 @@ class GatherQuestion:
|
|
|
49
69
|
d["prompt"] = self.prompt
|
|
50
70
|
if self.functions:
|
|
51
71
|
d["functions"] = self.functions
|
|
72
|
+
# Emitted even when False, so it can override an isolated gather
|
|
73
|
+
if self.isolated is not None:
|
|
74
|
+
d["isolated"] = self.isolated
|
|
52
75
|
return d
|
|
53
76
|
|
|
54
77
|
|
|
@@ -65,11 +88,13 @@ class GatherInfo:
|
|
|
65
88
|
output_key: str | None = None,
|
|
66
89
|
completion_action: str | None = None,
|
|
67
90
|
prompt: str | None = None,
|
|
91
|
+
isolated: bool = False,
|
|
68
92
|
):
|
|
69
93
|
self._questions: list[GatherQuestion] = []
|
|
70
94
|
self._output_key = output_key
|
|
71
95
|
self._completion_action = completion_action
|
|
72
96
|
self._prompt = prompt
|
|
97
|
+
self._isolated = isolated
|
|
73
98
|
|
|
74
99
|
def add_question(self, key: str, question: str, **kwargs: Any) -> "GatherInfo":
|
|
75
100
|
"""
|
|
@@ -78,7 +103,7 @@ class GatherInfo:
|
|
|
78
103
|
Args:
|
|
79
104
|
key: Key name for storing the answer in global_data
|
|
80
105
|
question: The question text to ask
|
|
81
|
-
**kwargs: Optional fields - type, confirm, prompt, functions
|
|
106
|
+
**kwargs: Optional fields - type, confirm, prompt, functions, isolated
|
|
82
107
|
|
|
83
108
|
Returns:
|
|
84
109
|
Self for method chaining
|
|
@@ -90,6 +115,7 @@ class GatherInfo:
|
|
|
90
115
|
confirm=kwargs.get("confirm", False),
|
|
91
116
|
prompt=kwargs.get("prompt"),
|
|
92
117
|
functions=kwargs.get("functions"),
|
|
118
|
+
isolated=kwargs.get("isolated"),
|
|
93
119
|
)
|
|
94
120
|
self._questions.append(q)
|
|
95
121
|
return self
|
|
@@ -105,6 +131,8 @@ class GatherInfo:
|
|
|
105
131
|
d["output_key"] = self._output_key
|
|
106
132
|
if self._completion_action:
|
|
107
133
|
d["completion_action"] = self._completion_action
|
|
134
|
+
if self._isolated:
|
|
135
|
+
d["isolated"] = True
|
|
108
136
|
return d
|
|
109
137
|
|
|
110
138
|
|
|
@@ -130,6 +158,9 @@ class Step:
|
|
|
130
158
|
self._skip_user_turn: bool = False
|
|
131
159
|
self._skip_to_next_step: bool = False
|
|
132
160
|
|
|
161
|
+
# Visibility of everything that came before this step
|
|
162
|
+
self._history: str | None = None
|
|
163
|
+
|
|
133
164
|
# Reset object for context switching from steps
|
|
134
165
|
self._reset_system_prompt: str | None = None
|
|
135
166
|
self._reset_user_prompt: str | None = None
|
|
@@ -339,11 +370,46 @@ class Step:
|
|
|
339
370
|
self._skip_to_next_step = skip
|
|
340
371
|
return self
|
|
341
372
|
|
|
373
|
+
def set_history(self, history: str) -> "Step":
|
|
374
|
+
"""
|
|
375
|
+
Control what the model still sees when this step is entered.
|
|
376
|
+
|
|
377
|
+
The mode applies at the moment this step is entered and governs
|
|
378
|
+
everything that came before it — including the turn that triggered the
|
|
379
|
+
transition. It does not affect this step's own turns, which accumulate
|
|
380
|
+
fresh. Nothing is deleted: the call log keeps every message.
|
|
381
|
+
|
|
382
|
+
Args:
|
|
383
|
+
history: One of:
|
|
384
|
+
- "keep": clear nothing. Every prior step's instructions and
|
|
385
|
+
dialogue stay visible to the model.
|
|
386
|
+
- "default": hide the prior step *instructions*, keep the
|
|
387
|
+
user/assistant dialogue. This is the default when unset.
|
|
388
|
+
- "hide": hide the prior instructions *and* pull the prior
|
|
389
|
+
dialogue out of the model's context. Pair it with a
|
|
390
|
+
``${step_history.*}`` reference in this step's text to choose
|
|
391
|
+
exactly what comes back.
|
|
392
|
+
|
|
393
|
+
Raises:
|
|
394
|
+
ValueError: if history is not one of the three modes.
|
|
395
|
+
|
|
396
|
+
Returns:
|
|
397
|
+
Self for method chaining
|
|
398
|
+
|
|
399
|
+
Example:
|
|
400
|
+
>>> step.set_history("hide").set_text(
|
|
401
|
+
... "Previously: ${step_history.prev.summary}\\n\\nNow help them."
|
|
402
|
+
... )
|
|
403
|
+
"""
|
|
404
|
+
self._history = _validate_history(history)
|
|
405
|
+
return self
|
|
406
|
+
|
|
342
407
|
def set_gather_info(
|
|
343
408
|
self,
|
|
344
409
|
output_key: str | None = None,
|
|
345
410
|
completion_action: str | None = None,
|
|
346
411
|
prompt: str | None = None,
|
|
412
|
+
isolated: bool = False,
|
|
347
413
|
) -> "Step":
|
|
348
414
|
"""
|
|
349
415
|
Enable info gathering for this step. Questions are presented one at a time
|
|
@@ -362,12 +428,20 @@ class Step:
|
|
|
362
428
|
and named steps must exist in the same context.
|
|
363
429
|
prompt: Preamble text injected once when entering the gather step, giving
|
|
364
430
|
the model personality/context for why it is asking these questions
|
|
431
|
+
isolated: Default for every question in this gather. When True, a
|
|
432
|
+
question is asked with the sibling Q&A hidden from the model, so
|
|
433
|
+
it must ask rather than derive the answer from an earlier one.
|
|
434
|
+
A question's own ``isolated`` overrides this. The hidden turns
|
|
435
|
+
remain in the call log.
|
|
365
436
|
|
|
366
437
|
Returns:
|
|
367
438
|
Self for method chaining
|
|
368
439
|
"""
|
|
369
440
|
self._gather_info = GatherInfo(
|
|
370
|
-
output_key=output_key,
|
|
441
|
+
output_key=output_key,
|
|
442
|
+
completion_action=completion_action,
|
|
443
|
+
prompt=prompt,
|
|
444
|
+
isolated=isolated,
|
|
371
445
|
)
|
|
372
446
|
return self
|
|
373
447
|
|
|
@@ -379,6 +453,7 @@ class Step:
|
|
|
379
453
|
confirm: bool = False,
|
|
380
454
|
prompt: str | None = None,
|
|
381
455
|
functions: list[str] | None = None,
|
|
456
|
+
isolated: bool | None = None,
|
|
382
457
|
) -> "Step":
|
|
383
458
|
"""
|
|
384
459
|
Add a question to this step's gather_info configuration.
|
|
@@ -412,6 +487,10 @@ class Step:
|
|
|
412
487
|
functions: Names of functions to unlock for this question only.
|
|
413
488
|
These are activated on top of `gather_submit`. All other step
|
|
414
489
|
functions remain locked out.
|
|
490
|
+
isolated: Override the gather's ``isolated`` default for this one
|
|
491
|
+
question. True hides the sibling Q&A while this question is
|
|
492
|
+
asked; False keeps it visible even in an isolated gather.
|
|
493
|
+
None (default) inherits the gather's setting.
|
|
415
494
|
|
|
416
495
|
Returns:
|
|
417
496
|
Self for method chaining.
|
|
@@ -425,6 +504,7 @@ class Step:
|
|
|
425
504
|
confirm=confirm,
|
|
426
505
|
prompt=prompt,
|
|
427
506
|
functions=functions,
|
|
507
|
+
isolated=isolated,
|
|
428
508
|
)
|
|
429
509
|
return self
|
|
430
510
|
|
|
@@ -538,6 +618,9 @@ class Step:
|
|
|
538
618
|
if self._skip_to_next_step:
|
|
539
619
|
step_dict["skip_to_next_step"] = True
|
|
540
620
|
|
|
621
|
+
if self._history is not None:
|
|
622
|
+
step_dict["history"] = self._history
|
|
623
|
+
|
|
541
624
|
# Add reset object if any reset parameters are set
|
|
542
625
|
reset_obj: dict[str, Any] = {}
|
|
543
626
|
if self._reset_system_prompt is not None:
|
|
@@ -618,6 +701,9 @@ class Context:
|
|
|
618
701
|
self._enter_fillers: dict[str, list[str]] | None = None
|
|
619
702
|
self._exit_fillers: dict[str, list[str]] | None = None
|
|
620
703
|
|
|
704
|
+
# Default visibility mode for the steps in this context
|
|
705
|
+
self._history: str | None = None
|
|
706
|
+
|
|
621
707
|
def add_step(
|
|
622
708
|
self,
|
|
623
709
|
name: str,
|
|
@@ -846,6 +932,25 @@ class Context:
|
|
|
846
932
|
self._user_prompt = user_prompt
|
|
847
933
|
return self
|
|
848
934
|
|
|
935
|
+
def set_history(self, history: str) -> "Context":
|
|
936
|
+
"""
|
|
937
|
+
Set the default visibility mode for every step in this context.
|
|
938
|
+
|
|
939
|
+
A step's own ``set_history()`` overrides this. See ``Step.set_history``
|
|
940
|
+
for what each mode does.
|
|
941
|
+
|
|
942
|
+
Args:
|
|
943
|
+
history: One of "keep", "default", or "hide".
|
|
944
|
+
|
|
945
|
+
Raises:
|
|
946
|
+
ValueError: if history is not one of the three modes.
|
|
947
|
+
|
|
948
|
+
Returns:
|
|
949
|
+
Self for method chaining
|
|
950
|
+
"""
|
|
951
|
+
self._history = _validate_history(history)
|
|
952
|
+
return self
|
|
953
|
+
|
|
849
954
|
def set_isolated(self, isolated: bool) -> "Context":
|
|
850
955
|
"""
|
|
851
956
|
Mark this context as isolated — entering it wipes conversation history.
|
|
@@ -1127,6 +1232,9 @@ class Context:
|
|
|
1127
1232
|
if self._exit_fillers is not None:
|
|
1128
1233
|
context_dict["exit_fillers"] = self._exit_fillers
|
|
1129
1234
|
|
|
1235
|
+
if self._history is not None:
|
|
1236
|
+
context_dict["history"] = self._history
|
|
1237
|
+
|
|
1130
1238
|
return context_dict
|
|
1131
1239
|
|
|
1132
1240
|
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/client.py
RENAMED
|
@@ -32,7 +32,7 @@ class RestClient(_GeneratedResourceTree):
|
|
|
32
32
|
# Use namespaced resources
|
|
33
33
|
client.fabric.ai_agents.list()
|
|
34
34
|
client.calling.play(call_id, play=[...])
|
|
35
|
-
client.phone_numbers.search(
|
|
35
|
+
client.phone_numbers.search(areacode="512")
|
|
36
36
|
client.video.rooms.create(name="standup")
|
|
37
37
|
|
|
38
38
|
The resource object tree (flat resources + namespace containers) is generated from
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/README.md
RENAMED
|
@@ -84,9 +84,9 @@ See LICENSE file in the project root for full license information.
|
|
|
84
84
|
|
|
85
85
|
from typing import List, Dict, Any
|
|
86
86
|
|
|
87
|
-
from
|
|
88
|
-
from
|
|
89
|
-
from
|
|
87
|
+
from signalwire.core.skill_base import SkillBase
|
|
88
|
+
from signalwire.core.data_map import DataMap
|
|
89
|
+
from signalwire.core.function_result import SwaigFunctionResult
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
class YourSkillClass(SkillBase):
|
|
@@ -243,7 +243,7 @@ pip install . --force-reinstall
|
|
|
243
243
|
### 2. Test Skill Discovery
|
|
244
244
|
|
|
245
245
|
```python
|
|
246
|
-
from
|
|
246
|
+
from signalwire.skills.registry import skill_registry
|
|
247
247
|
|
|
248
248
|
skill_registry.discover_skills()
|
|
249
249
|
skills = skill_registry.list_skills()
|
|
@@ -254,8 +254,9 @@ for skill in skills:
|
|
|
254
254
|
|
|
255
255
|
### 3. Test Skill Usage
|
|
256
256
|
|
|
257
|
+
<!-- snippet: no-run illustrative skill name a reader would provide (not a built-in skill) -->
|
|
257
258
|
```python
|
|
258
|
-
from
|
|
259
|
+
from signalwire import AgentBase
|
|
259
260
|
|
|
260
261
|
class TestAgent(AgentBase):
|
|
261
262
|
def __init__(self):
|
|
@@ -313,7 +314,7 @@ Detailed explanation of the skill's purpose and capabilities.
|
|
|
313
314
|
### Basic Usage
|
|
314
315
|
|
|
315
316
|
```python
|
|
316
|
-
from
|
|
317
|
+
from signalwire import AgentBase
|
|
317
318
|
|
|
318
319
|
class MyAgent(AgentBase):
|
|
319
320
|
def __init__(self):
|
|
@@ -359,7 +360,7 @@ This demo shows how to use your skill with the SignalWire Agents SDK.
|
|
|
359
360
|
Run with: python examples/your_skill_demo.py
|
|
360
361
|
"""
|
|
361
362
|
|
|
362
|
-
from
|
|
363
|
+
from signalwire import AgentBase
|
|
363
364
|
|
|
364
365
|
class YourSkillAgent(AgentBase):
|
|
365
366
|
def __init__(self):
|
|
@@ -449,4 +450,4 @@ if __name__ == "__main__":
|
|
|
449
450
|
- Test API calls independently first
|
|
450
451
|
- Use `.error_keys()` to handle API errors
|
|
451
452
|
|
|
452
|
-
Remember to always test your skill thoroughly and provide clear documentation for other developers!
|
|
453
|
+
Remember to always test your skill thoroughly and provide clear documentation for other developers!
|
|
@@ -26,8 +26,9 @@ Use $ARGUMENTS for context passed to this skill.
|
|
|
26
26
|
|
|
27
27
|
## Usage
|
|
28
28
|
|
|
29
|
+
<!-- snippet: no-run add_skill('claude_skills') sets up against a real ~/.claude/skills directory (external dependency, not present in CI) -->
|
|
29
30
|
```python
|
|
30
|
-
from
|
|
31
|
+
from signalwire import AgentBase
|
|
31
32
|
|
|
32
33
|
agent = AgentBase(name="my-agent")
|
|
33
34
|
|
|
@@ -438,8 +439,9 @@ Directory structure:
|
|
|
438
439
|
```
|
|
439
440
|
|
|
440
441
|
Agent code:
|
|
442
|
+
<!-- snippet: no-run starts a blocking server/client (covered by SNIPPET-COMPILE + EXAMPLES-RUN) -->
|
|
441
443
|
```python
|
|
442
|
-
from
|
|
444
|
+
from signalwire import AgentBase
|
|
443
445
|
|
|
444
446
|
agent = AgentBase(name="code-assistant")
|
|
445
447
|
|
|
@@ -33,8 +33,9 @@ The Joke skill provides joke-telling capabilities to your SignalWire AI agents u
|
|
|
33
33
|
|
|
34
34
|
### Basic Usage
|
|
35
35
|
|
|
36
|
+
<!-- snippet: no-run starts a blocking server/client (covered by SNIPPET-COMPILE + EXAMPLES-RUN) -->
|
|
36
37
|
```python
|
|
37
|
-
from
|
|
38
|
+
from signalwire import AgentBase
|
|
38
39
|
|
|
39
40
|
class MyAgent(AgentBase):
|
|
40
41
|
def __init__(self):
|
|
@@ -146,4 +147,4 @@ logging.basicConfig(level=logging.DEBUG)
|
|
|
146
147
|
"joke": "Why don't scientists trust atoms? Because they make up everything!"
|
|
147
148
|
}
|
|
148
149
|
]
|
|
149
|
-
```
|
|
150
|
+
```
|
|
@@ -46,8 +46,9 @@ Either Basic Auth credentials OR Bearer token:
|
|
|
46
46
|
|
|
47
47
|
### Basic Usage (All Services)
|
|
48
48
|
|
|
49
|
+
<!-- snippet: no-run starts a blocking server/client (covered by SNIPPET-COMPILE + EXAMPLES-RUN) -->
|
|
49
50
|
```python
|
|
50
|
-
from
|
|
51
|
+
from signalwire import AgentBase
|
|
51
52
|
|
|
52
53
|
class MyAgent(AgentBase):
|
|
53
54
|
def __init__(self):
|
|
@@ -229,4 +230,4 @@ python3 gateway_service.py -c myconfig.json
|
|
|
229
230
|
2. Use strong authentication credentials
|
|
230
231
|
3. Limit service access to required tools only
|
|
231
232
|
4. Monitor gateway logs for suspicious activity
|
|
232
|
-
5. Set appropriate session timeouts
|
|
233
|
+
5. Set appropriate session timeouts
|
|
@@ -58,8 +58,9 @@ Each entry in the `transfers` dictionary should have:
|
|
|
58
58
|
|
|
59
59
|
### Basic Usage
|
|
60
60
|
|
|
61
|
+
<!-- snippet: no-run starts a blocking server/client (covered by SNIPPET-COMPILE + EXAMPLES-RUN) -->
|
|
61
62
|
```python
|
|
62
|
-
from
|
|
63
|
+
from signalwire import AgentBase
|
|
63
64
|
|
|
64
65
|
class MyAgent(AgentBase):
|
|
65
66
|
def __init__(self):
|
|
@@ -392,4 +393,4 @@ def configure_transfers(self, query_params, body_params, headers, agent):
|
|
|
392
393
|
}
|
|
393
394
|
}
|
|
394
395
|
})
|
|
395
|
-
```
|
|
396
|
+
```
|
|
@@ -39,7 +39,7 @@ This skill creates one SWAIG tool:
|
|
|
39
39
|
### Basic Usage
|
|
40
40
|
|
|
41
41
|
```python
|
|
42
|
-
from
|
|
42
|
+
from signalwire import AgentBase
|
|
43
43
|
|
|
44
44
|
agent = AgentBase("Wikipedia Assistant")
|
|
45
45
|
|
|
@@ -225,4 +225,4 @@ Enable debug logging to see detailed API interactions and error information.
|
|
|
225
225
|
- **datasphere**: For searching custom knowledge bases
|
|
226
226
|
- **datetime**: For current date/time context in historical queries
|
|
227
227
|
|
|
228
|
-
The Wikipedia skill is perfect for factual, encyclopedic information, while web search is better for current events and specific products/services.
|
|
228
|
+
The Wikipedia skill is perfect for factual, encyclopedic information, while web search is better for current events and specific products/services.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: signalwire-sdk
|
|
3
|
-
Version: 3.0.2.
|
|
3
|
+
Version: 3.0.2.dev77
|
|
4
4
|
Summary: SignalWire SDK
|
|
5
5
|
Author-email: SignalWire Team <info@signalwire.com>
|
|
6
6
|
License: MIT
|
|
@@ -247,7 +247,7 @@ client = RestClient(project="...", token="...", host="example.signalwire.com")
|
|
|
247
247
|
|
|
248
248
|
client.fabric.ai_agents.create(name="Support Bot", prompt={"text": "You are helpful."})
|
|
249
249
|
client.calling.play(call_id, play=[{"type": "tts", "text": "Hello!"}])
|
|
250
|
-
client.phone_numbers.search(
|
|
250
|
+
client.phone_numbers.search(areacode="512")
|
|
251
251
|
client.datasphere.documents.search(query_string="billing policy")
|
|
252
252
|
```
|
|
253
253
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/agents/bedrock.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/build_search.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/config.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/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.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/dokku.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/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.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/test_swaig.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/types.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/__init__.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/_agent_host.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.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent_base.py
RENAMED
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/auth_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/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
|