signalwire-agents 1.0.14__tar.gz → 1.0.15__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 (154) hide show
  1. {signalwire_agents-1.0.14/signalwire_agents.egg-info → signalwire_agents-1.0.15}/PKG-INFO +1 -1
  2. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/pyproject.toml +1 -1
  3. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/__init__.py +1 -1
  4. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/agent_server.py +12 -15
  5. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15/signalwire_agents.egg-info}/PKG-INFO +1 -1
  6. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/LICENSE +0 -0
  7. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/README.md +0 -0
  8. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/man/sw-agent-init.1 +0 -0
  9. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/man/sw-search.1 +0 -0
  10. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/man/swaig-test.1 +0 -0
  11. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/setup.cfg +0 -0
  12. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/setup.py +0 -0
  13. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/agents/bedrock.py +0 -0
  14. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/__init__.py +0 -0
  15. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/build_search.py +0 -0
  16. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/config.py +0 -0
  17. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/core/__init__.py +0 -0
  18. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/core/agent_loader.py +0 -0
  19. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/core/argparse_helpers.py +0 -0
  20. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/core/dynamic_config.py +0 -0
  21. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/core/service_loader.py +0 -0
  22. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/dokku.py +0 -0
  23. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/execution/__init__.py +0 -0
  24. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/execution/datamap_exec.py +0 -0
  25. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/execution/webhook_exec.py +0 -0
  26. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/init_project.py +0 -0
  27. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/output/__init__.py +0 -0
  28. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/output/output_formatter.py +0 -0
  29. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/output/swml_dump.py +0 -0
  30. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/simulation/__init__.py +0 -0
  31. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/simulation/data_generation.py +0 -0
  32. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/simulation/data_overrides.py +0 -0
  33. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/simulation/mock_env.py +0 -0
  34. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/swaig_test_wrapper.py +0 -0
  35. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/test_swaig.py +0 -0
  36. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/cli/types.py +0 -0
  37. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/__init__.py +0 -0
  38. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/__init__.py +0 -0
  39. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/config/__init__.py +0 -0
  40. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/deployment/__init__.py +0 -0
  41. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/deployment/handlers/__init__.py +0 -0
  42. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/prompt/__init__.py +0 -0
  43. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/prompt/manager.py +0 -0
  44. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/routing/__init__.py +0 -0
  45. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/security/__init__.py +0 -0
  46. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/swml/__init__.py +0 -0
  47. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/tools/__init__.py +0 -0
  48. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/tools/decorator.py +0 -0
  49. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent/tools/registry.py +0 -0
  50. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/agent_base.py +0 -0
  51. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/auth_handler.py +0 -0
  52. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/config_loader.py +0 -0
  53. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/contexts.py +0 -0
  54. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/data_map.py +0 -0
  55. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/function_result.py +0 -0
  56. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/logging_config.py +0 -0
  57. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/__init__.py +0 -0
  58. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/ai_config_mixin.py +0 -0
  59. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/auth_mixin.py +0 -0
  60. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/prompt_mixin.py +0 -0
  61. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/serverless_mixin.py +0 -0
  62. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/skill_mixin.py +0 -0
  63. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/state_mixin.py +0 -0
  64. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/tool_mixin.py +0 -0
  65. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/mixins/web_mixin.py +0 -0
  66. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/pom_builder.py +0 -0
  67. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/security/__init__.py +0 -0
  68. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/security/session_manager.py +0 -0
  69. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/security_config.py +0 -0
  70. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/skill_base.py +0 -0
  71. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/skill_manager.py +0 -0
  72. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/swaig_function.py +0 -0
  73. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/swml_builder.py +0 -0
  74. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/swml_handler.py +0 -0
  75. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/swml_renderer.py +0 -0
  76. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/core/swml_service.py +0 -0
  77. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/mcp_gateway/__init__.py +0 -0
  78. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/mcp_gateway/gateway_service.py +0 -0
  79. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/mcp_gateway/mcp_manager.py +0 -0
  80. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/mcp_gateway/session_manager.py +0 -0
  81. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/__init__.py +0 -0
  82. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/concierge.py +0 -0
  83. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/faq_bot.py +0 -0
  84. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/info_gatherer.py +0 -0
  85. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/receptionist.py +0 -0
  86. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/prefabs/survey.py +0 -0
  87. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/schema.json +0 -0
  88. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/__init__.py +0 -0
  89. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/document_processor.py +0 -0
  90. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/index_builder.py +0 -0
  91. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/migration.py +0 -0
  92. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/models.py +0 -0
  93. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/pgvector_backend.py +0 -0
  94. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/query_processor.py +0 -0
  95. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/search_engine.py +0 -0
  96. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/search/search_service.py +0 -0
  97. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/README.md +0 -0
  98. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/__init__.py +0 -0
  99. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/api_ninjas_trivia/README.md +0 -0
  100. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/api_ninjas_trivia/__init__.py +0 -0
  101. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/api_ninjas_trivia/skill.py +0 -0
  102. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere/README.md +0 -0
  103. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere/__init__.py +0 -0
  104. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere/skill.py +0 -0
  105. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere_serverless/README.md +0 -0
  106. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere_serverless/__init__.py +0 -0
  107. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datasphere_serverless/skill.py +0 -0
  108. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datetime/README.md +0 -0
  109. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datetime/__init__.py +0 -0
  110. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/datetime/skill.py +0 -0
  111. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/joke/README.md +0 -0
  112. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/joke/__init__.py +0 -0
  113. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/joke/skill.py +0 -0
  114. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/math/README.md +0 -0
  115. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/math/__init__.py +0 -0
  116. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/math/skill.py +0 -0
  117. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/mcp_gateway/README.md +0 -0
  118. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/mcp_gateway/__init__.py +0 -0
  119. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/mcp_gateway/skill.py +0 -0
  120. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/native_vector_search/README.md +0 -0
  121. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/native_vector_search/__init__.py +0 -0
  122. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/native_vector_search/skill.py +0 -0
  123. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/play_background_file/README.md +0 -0
  124. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/play_background_file/__init__.py +0 -0
  125. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/play_background_file/skill.py +0 -0
  126. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/registry.py +0 -0
  127. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/spider/README.md +0 -0
  128. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/spider/__init__.py +0 -0
  129. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/spider/skill.py +0 -0
  130. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/swml_transfer/README.md +0 -0
  131. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/swml_transfer/__init__.py +0 -0
  132. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/swml_transfer/skill.py +0 -0
  133. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/weather_api/README.md +0 -0
  134. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/weather_api/__init__.py +0 -0
  135. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/weather_api/skill.py +0 -0
  136. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/web_search/README.md +0 -0
  137. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/web_search/__init__.py +0 -0
  138. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/web_search/skill.py +0 -0
  139. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/wikipedia_search/README.md +0 -0
  140. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/wikipedia_search/__init__.py +0 -0
  141. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/skills/wikipedia_search/skill.py +0 -0
  142. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/utils/__init__.py +0 -0
  143. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/utils/pom_utils.py +0 -0
  144. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/utils/schema_utils.py +0 -0
  145. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/utils/token_generators.py +0 -0
  146. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/utils/validators.py +0 -0
  147. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/web/__init__.py +0 -0
  148. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents/web/web_service.py +0 -0
  149. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents.egg-info/SOURCES.txt +0 -0
  150. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents.egg-info/dependency_links.txt +0 -0
  151. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents.egg-info/entry_points.txt +0 -0
  152. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents.egg-info/requires.txt +0 -0
  153. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/signalwire_agents.egg-info/top_level.txt +0 -0
  154. {signalwire_agents-1.0.14 → signalwire_agents-1.0.15}/tests/test_examples.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: signalwire_agents
3
- Version: 1.0.14
3
+ Version: 1.0.15
4
4
  Summary: SignalWire AI Agents SDK
5
5
  Author-email: SignalWire Team <info@signalwire.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "signalwire_agents"
7
- version = "1.0.14"
7
+ version = "1.0.15"
8
8
  description = "SignalWire AI Agents SDK"
9
9
  authors = [
10
10
  {name = "SignalWire Team", email = "info@signalwire.com"}
@@ -18,7 +18,7 @@ A package for building AI agents using SignalWire's AI and SWML capabilities.
18
18
  from .core.logging_config import configure_logging
19
19
  configure_logging()
20
20
 
21
- __version__ = "1.0.14"
21
+ __version__ = "1.0.15"
22
22
 
23
23
  # Import core classes for easier access
24
24
  from .core.agent_base import AgentBase
@@ -76,6 +76,13 @@ class AgentServer:
76
76
  # Register health endpoints immediately so they're available
77
77
  # whether using server.run() or server.app with gunicorn
78
78
  self._register_health_endpoints()
79
+
80
+ # Register catch-all handler on startup (not in __init__) so it runs AFTER
81
+ # all other routes are registered. This ensures custom routes like /get_token
82
+ # don't get overshadowed by the catch-all /{full_path:path} route.
83
+ @self.app.on_event("startup")
84
+ async def _setup_catch_all():
85
+ self._register_catch_all_handler()
79
86
 
80
87
  def register(self, agent: AgentBase, route: Optional[str] = None) -> None:
81
88
  """
@@ -104,12 +111,12 @@ class AgentServer:
104
111
 
105
112
  # Store the agent
106
113
  self.agents[route] = agent
107
-
114
+
108
115
  # Get the router and register it using the standard approach
109
116
  # The agent's router already handles both trailing slash versions properly
110
117
  router = agent.as_router()
111
118
  self.app.include_router(router, prefix=route)
112
-
119
+
113
120
  self.logger.info(f"Registered agent '{agent.get_name()}' at route '{route}'")
114
121
 
115
122
  # If SIP routing is enabled and auto-mapping is on, register SIP usernames for this agent
@@ -550,9 +557,6 @@ class AgentServer:
550
557
  if not self.agents:
551
558
  self.logger.warning("Starting server with no registered agents")
552
559
 
553
- # Register catch-all route handler (handles agent routing and static files)
554
- self._register_catch_all_handler()
555
-
556
560
  # Set host and port
557
561
  host = host or self.host
558
562
  port = port or self.port
@@ -682,9 +686,6 @@ class AgentServer:
682
686
 
683
687
  self.logger.info(f"Serving static files from '{directory}' at route '{route or '/'}'")
684
688
 
685
- # Register catch-all handler immediately so it works with gunicorn
686
- # (when using server.app directly instead of server.run())
687
- self._register_catch_all_handler()
688
689
 
689
690
  def _serve_static_file(self, file_path: str, route: str = "/") -> Optional[Response]:
690
691
  """
@@ -742,14 +743,10 @@ class AgentServer:
742
743
  1. Routing requests without trailing slashes to agents (e.g., /santa instead of /santa/)
743
744
  2. Serving static files from directories registered with serve_static_files()
744
745
 
745
- The handler is registered once and works with both server.run() and
746
- direct use of server.app with gunicorn/uvicorn.
746
+ Called via startup event (not __init__) to ensure it runs AFTER all other routes
747
+ are registered. This prevents the catch-all from overshadowing custom routes
748
+ like /get_token that users may add to server.app.
747
749
  """
748
- # Only register once
749
- if getattr(self, '_catch_all_registered', False):
750
- return
751
- self._catch_all_registered = True
752
-
753
750
  @self.app.get("/{full_path:path}")
754
751
  @self.app.post("/{full_path:path}")
755
752
  async def handle_all_routes(request: Request, full_path: str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: signalwire_agents
3
- Version: 1.0.14
3
+ Version: 1.0.15
4
4
  Summary: SignalWire AI Agents SDK
5
5
  Author-email: SignalWire Team <info@signalwire.com>
6
6
  License: MIT