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.
Files changed (243) hide show
  1. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/PKG-INFO +2 -2
  2. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/README.md +1 -1
  3. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/pyproject.toml +10 -1
  4. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/__init__.py +1 -1
  5. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/agent_server.py +1 -1
  6. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/contexts.py +110 -2
  7. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/client.py +1 -1
  8. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/README.md +9 -8
  9. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/README.md +4 -2
  10. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/README.md +1 -1
  11. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/README.md +3 -2
  12. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/README.md +3 -2
  13. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/README.md +3 -2
  14. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/README.md +2 -2
  15. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/PKG-INFO +2 -2
  16. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/LICENSE +0 -0
  17. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/sw-agent-init.1 +0 -0
  18. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/sw-search.1 +0 -0
  19. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/man/swaig-test.1 +0 -0
  20. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/setup.cfg +0 -0
  21. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/setup.py +0 -0
  22. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/agents/bedrock.py +0 -0
  23. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/__init__.py +0 -0
  24. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/build_search.py +0 -0
  25. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/config.py +0 -0
  26. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/__init__.py +0 -0
  27. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/agent_loader.py +0 -0
  28. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/argparse_helpers.py +0 -0
  29. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/dynamic_config.py +0 -0
  30. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/core/service_loader.py +0 -0
  31. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/dokku.py +0 -0
  32. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/__init__.py +0 -0
  33. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/datamap_exec.py +0 -0
  34. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/execution/webhook_exec.py +0 -0
  35. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/init_project.py +0 -0
  36. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/__init__.py +0 -0
  37. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/output_formatter.py +0 -0
  38. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/output/swml_dump.py +0 -0
  39. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/__init__.py +0 -0
  40. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/data_generation.py +0 -0
  41. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/data_overrides.py +0 -0
  42. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/simulation/mock_env.py +0 -0
  43. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/swaig_test_wrapper.py +0 -0
  44. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/test_swaig.py +0 -0
  45. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/cli/types.py +0 -0
  46. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/__init__.py +0 -0
  47. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/_agent_host.py +0 -0
  48. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/__init__.py +0 -0
  49. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/config/__init__.py +0 -0
  50. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/deployment/__init__.py +0 -0
  51. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/deployment/handlers/__init__.py +0 -0
  52. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/prompt/__init__.py +0 -0
  53. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/prompt/manager.py +0 -0
  54. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/routing/__init__.py +0 -0
  55. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/security/__init__.py +0 -0
  56. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/swml/__init__.py +0 -0
  57. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/__init__.py +0 -0
  58. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/decorator.py +0 -0
  59. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/registry.py +0 -0
  60. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent/tools/type_inference.py +0 -0
  61. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/agent_base.py +0 -0
  62. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/auth_handler.py +0 -0
  63. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/config_loader.py +0 -0
  64. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/data_map.py +0 -0
  65. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/function_result.py +0 -0
  66. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/logging_config.py +0 -0
  67. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/__init__.py +0 -0
  68. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/_mixin_host.py +0 -0
  69. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/ai_config_mixin.py +0 -0
  70. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/auth_mixin.py +0 -0
  71. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/mcp_server_mixin.py +0 -0
  72. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/prompt_mixin.py +0 -0
  73. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/serverless_mixin.py +0 -0
  74. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/skill_mixin.py +0 -0
  75. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/state_mixin.py +0 -0
  76. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/tool_mixin.py +0 -0
  77. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/mixins/web_mixin.py +0 -0
  78. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/pom_builder.py +0 -0
  79. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/post_prompt_generated.py +0 -0
  80. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/__init__.py +0 -0
  81. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/security_utils.py +0 -0
  82. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/session_manager.py +0 -0
  83. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/webhook_middleware.py +0 -0
  84. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security/webhook_validator.py +0 -0
  85. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/security_config.py +0 -0
  86. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/skill_base.py +0 -0
  87. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/skill_manager.py +0 -0
  88. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_actions_generated.py +0 -0
  89. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_function.py +0 -0
  90. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swaig_request_generated.py +0 -0
  91. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_builder.py +0 -0
  92. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_handler.py +0 -0
  93. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_renderer.py +0 -0
  94. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_service.py +0 -0
  95. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/swml_verbs_generated.py +0 -0
  96. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/core/web.py +0 -0
  97. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/livewire/__init__.py +0 -0
  98. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/livewire/plugins.py +0 -0
  99. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/__init__.py +0 -0
  100. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/gateway_service.py +0 -0
  101. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/mcp_manager.py +0 -0
  102. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/mcp_gateway/session_manager.py +0 -0
  103. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/__init__.py +0 -0
  104. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/pom.py +0 -0
  105. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/pom/pom_tool.py +0 -0
  106. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/__init__.py +0 -0
  107. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/concierge.py +0 -0
  108. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/faq_bot.py +0 -0
  109. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/info_gatherer.py +0 -0
  110. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/receptionist.py +0 -0
  111. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/prefabs/survey.py +0 -0
  112. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/py.typed +0 -0
  113. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/__init__.py +0 -0
  114. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/call.py +0 -0
  115. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/client.py +0 -0
  116. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/constants.py +0 -0
  117. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/event.py +0 -0
  118. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/message.py +0 -0
  119. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/relay/protocol_types_generated.py +0 -0
  120. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/__init__.py +0 -0
  121. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/_base.py +0 -0
  122. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/_pagination.py +0 -0
  123. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/call_handler.py +0 -0
  124. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/__init__.py +0 -0
  125. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/_client_tree_generated.py +0 -0
  126. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/addresses.py +0 -0
  127. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling.py +0 -0
  128. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling_resources_generated.py +0 -0
  129. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/calling_types_generated.py +0 -0
  130. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat.py +0 -0
  131. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat_resources_generated.py +0 -0
  132. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/chat_types_generated.py +0 -0
  133. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere.py +0 -0
  134. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere_resources_generated.py +0 -0
  135. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/datasphere_types_generated.py +0 -0
  136. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric.py +0 -0
  137. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric_resources_generated.py +0 -0
  138. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fabric_types_generated.py +0 -0
  139. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fax_resources_generated.py +0 -0
  140. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/fax_types_generated.py +0 -0
  141. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/imported_numbers.py +0 -0
  142. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs.py +0 -0
  143. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs_resources_generated.py +0 -0
  144. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/logs_types_generated.py +0 -0
  145. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/lookup.py +0 -0
  146. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/message_resources_generated.py +0 -0
  147. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/message_types_generated.py +0 -0
  148. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/mfa.py +0 -0
  149. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/number_groups.py +0 -0
  150. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/phone_numbers.py +0 -0
  151. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project.py +0 -0
  152. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project_resources_generated.py +0 -0
  153. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/project_types_generated.py +0 -0
  154. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub.py +0 -0
  155. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub_resources_generated.py +0 -0
  156. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/pubsub_types_generated.py +0 -0
  157. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/queues.py +0 -0
  158. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/recordings.py +0 -0
  159. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/registry.py +0 -0
  160. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/relay_rest_resources_generated.py +0 -0
  161. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/relay_rest_types_generated.py +0 -0
  162. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/short_codes.py +0 -0
  163. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/sip_profile.py +0 -0
  164. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/swml_webhooks_types_generated.py +0 -0
  165. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/verified_callers.py +0 -0
  166. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video.py +0 -0
  167. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video_resources_generated.py +0 -0
  168. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/video_types_generated.py +0 -0
  169. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/voice_resources_generated.py +0 -0
  170. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/rest/namespaces/voice_types_generated.py +0 -0
  171. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/schema.json +0 -0
  172. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/__init__.py +0 -0
  173. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/document_processor.py +0 -0
  174. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/index_builder.py +0 -0
  175. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/migration.py +0 -0
  176. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/models.py +0 -0
  177. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/pgvector_backend.py +0 -0
  178. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/query_processor.py +0 -0
  179. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/search_engine.py +0 -0
  180. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/search/search_service.py +0 -0
  181. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/__init__.py +0 -0
  182. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/README.md +0 -0
  183. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/__init__.py +0 -0
  184. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/api_ninjas_trivia/skill.py +0 -0
  185. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/__init__.py +0 -0
  186. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/claude_skills/skill.py +0 -0
  187. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/README.md +0 -0
  188. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/__init__.py +0 -0
  189. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere/skill.py +0 -0
  190. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/README.md +0 -0
  191. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/__init__.py +0 -0
  192. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datasphere_serverless/skill.py +0 -0
  193. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/README.md +0 -0
  194. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/__init__.py +0 -0
  195. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/datetime/skill.py +0 -0
  196. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/google_maps/__init__.py +0 -0
  197. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/google_maps/skill.py +0 -0
  198. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/__init__.py +0 -0
  199. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/info_gatherer/skill.py +0 -0
  200. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/__init__.py +0 -0
  201. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/joke/skill.py +0 -0
  202. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/README.md +0 -0
  203. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/__init__.py +0 -0
  204. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/math/skill.py +0 -0
  205. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/__init__.py +0 -0
  206. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/mcp_gateway/skill.py +0 -0
  207. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/README.md +0 -0
  208. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/__init__.py +0 -0
  209. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/native_vector_search/skill.py +0 -0
  210. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/README.md +0 -0
  211. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/__init__.py +0 -0
  212. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/play_background_file/skill.py +0 -0
  213. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/registry.py +0 -0
  214. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/README.md +0 -0
  215. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/__init__.py +0 -0
  216. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/spider/skill.py +0 -0
  217. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/__init__.py +0 -0
  218. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/swml_transfer/skill.py +0 -0
  219. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/README.md +0 -0
  220. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/__init__.py +0 -0
  221. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/weather_api/skill.py +0 -0
  222. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/README.md +0 -0
  223. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/__init__.py +0 -0
  224. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill.py +0 -0
  225. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill_improved.py +0 -0
  226. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/web_search/skill_original.py +0 -0
  227. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/__init__.py +0 -0
  228. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/skills/wikipedia_search/skill.py +0 -0
  229. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/__init__.py +0 -0
  230. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/pom_utils.py +0 -0
  231. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/schema_utils.py +0 -0
  232. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/token_generators.py +0 -0
  233. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/url_validator.py +0 -0
  234. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/utils/validators.py +0 -0
  235. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/web/__init__.py +0 -0
  236. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire/web/web_service.py +0 -0
  237. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/SOURCES.txt +0 -0
  238. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/dependency_links.txt +0 -0
  239. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/entry_points.txt +0 -0
  240. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/requires.txt +0 -0
  241. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/signalwire/signalwire_sdk.egg-info/top_level.txt +0 -0
  242. {signalwire_sdk-3.0.2.dev74 → signalwire_sdk-3.0.2.dev77}/tests/test_examples.py +0 -0
  243. {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.dev74
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(area_code="512")
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(area_code="512")
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.dev74"
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
@@ -24,7 +24,7 @@ if TYPE_CHECKING:
24
24
 
25
25
  configure_logging()
26
26
 
27
- __version__ = "3.0.2.dev74"
27
+ __version__ = "3.0.2.dev77"
28
28
 
29
29
  # Import core classes for easier access.
30
30
  # These imports are intentionally placed after configure_logging() so the SDK's
@@ -68,7 +68,7 @@ class AgentServer:
68
68
  self.app = FastAPI(
69
69
  title="SignalWire AI Agents",
70
70
  description="Hosted SignalWire AI Agents",
71
- version="3.0.2.dev74",
71
+ version="3.0.2.dev77",
72
72
  redirect_slashes=False,
73
73
  docs_url=None,
74
74
  redoc_url=None,
@@ -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, completion_action=completion_action, prompt=prompt
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
 
@@ -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(area_code="512")
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
@@ -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 signalwire_agents.core.skill_base import SkillBase
88
- from signalwire_agents.core.data_map import DataMap
89
- from signalwire_agents.core.function_result import SwaigFunctionResult
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 signalwire_agents.skills.registry import skill_registry
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
444
+ from signalwire import AgentBase
443
445
 
444
446
  agent = AgentBase(name="code-assistant")
445
447
 
@@ -21,7 +21,7 @@ Each question object:
21
21
  ## Single Instance Usage
22
22
 
23
23
  ```python
24
- from signalwire_agents import AgentBase
24
+ from signalwire import AgentBase
25
25
 
26
26
  agent = AgentBase(name="intake", route="/intake")
27
27
 
@@ -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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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 signalwire_agents import AgentBase
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.dev74
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(area_code="512")
250
+ client.phone_numbers.search(areacode="512")
251
251
  client.datasphere.documents.search(query_string="billing policy")
252
252
  ```
253
253