spaik-sdk 0.6.4__tar.gz → 0.6.5__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 (228) hide show
  1. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/PKG-INFO +1 -1
  2. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/pyproject.toml +1 -1
  3. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/agent/base_agent.py +1 -4
  4. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/env.py +0 -11
  5. spaik_sdk-0.6.5/spaik_sdk/models/providers/azure_provider.py +55 -0
  6. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/audio_router_factory.py +1 -1
  7. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/base_authorizer.py +1 -1
  8. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/agent_trace.py +1 -3
  9. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/uv.lock +116 -116
  10. spaik_sdk-0.6.4/spaik_sdk/models/providers/azure_provider.py +0 -31
  11. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/global.mdc +0 -0
  12. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/post_run.mdc +0 -0
  13. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/repo_overview.mdc +0 -0
  14. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/testing-structure.mdc +0 -0
  15. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.gitignore +0 -0
  16. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/Makefile +0 -0
  17. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/README.md +0 -0
  18. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/__init__.py.bak +0 -0
  19. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/env.example +0 -0
  20. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/kill.sh +0 -0
  21. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/py.typed +0 -0
  22. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/setup.sh +0 -0
  23. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/__init__.py +0 -0
  24. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/agent/__init__.py +0 -0
  25. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/__init__.py +0 -0
  26. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/builder.py +0 -0
  27. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/file_storage_provider.py +0 -0
  28. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/mime_types.py +0 -0
  29. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/models.py +0 -0
  30. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/provider_support.py +0 -0
  31. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/__init__.py +0 -0
  32. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/base_file_storage.py +0 -0
  33. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/impl/__init__.py +0 -0
  34. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/impl/local_file_storage.py +0 -0
  35. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/__init__.py +0 -0
  36. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/options.py +0 -0
  37. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/__init__.py +0 -0
  38. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/google_tts.py +0 -0
  39. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/openai_stt.py +0 -0
  40. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/openai_tts.py +0 -0
  41. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/stt.py +0 -0
  42. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/tts.py +0 -0
  43. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/credentials_provider.py +0 -0
  44. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/env_credentials_provider.py +0 -0
  45. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/get_credentials_provider.py +0 -0
  46. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/__init__.py +0 -0
  47. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/image_generator.py +0 -0
  48. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/options.py +0 -0
  49. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/__init__.py +0 -0
  50. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/google.py +0 -0
  51. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/openai.py +0 -0
  52. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/__init__.py +0 -0
  53. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cancellation_handle.py +0 -0
  54. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/__init__.py +0 -0
  55. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_estimate.py +0 -0
  56. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_estimate_builder.py +0 -0
  57. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_extractor.py +0 -0
  58. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/token_usage.py +0 -0
  59. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/converters.py +0 -0
  60. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/__init__.py +0 -0
  61. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/builtin_cost_provider.py +0 -0
  62. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/cost_estimate.py +0 -0
  63. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/cost_provider.py +0 -0
  64. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/extract_error_message.py +0 -0
  65. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/langchain_loop_manager.py +0 -0
  66. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/langchain_service.py +0 -0
  67. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/message_handler.py +0 -0
  68. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/__init__.py +0 -0
  69. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/block_manager.py +0 -0
  70. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/models.py +0 -0
  71. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_content_handler.py +0 -0
  72. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_event_handler.py +0 -0
  73. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_state_manager.py +0 -0
  74. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/__init__.py +0 -0
  75. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/__init__.py +0 -0
  76. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/anthropic_factory.py +0 -0
  77. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/base_model_factory.py +0 -0
  78. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/google_factory.py +0 -0
  79. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/ollama_factory.py +0 -0
  80. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/openai_factory.py +0 -0
  81. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_config.py +0 -0
  82. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_families.py +0 -0
  83. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_model.py +0 -0
  84. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_wrapper.py +0 -0
  85. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/model_registry.py +0 -0
  86. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/__init__.py +0 -0
  87. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/anthropic_provider.py +0 -0
  88. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/base_provider.py +0 -0
  89. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/google_provider.py +0 -0
  90. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/ollama_provider.py +0 -0
  91. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/openai_provider.py +0 -0
  92. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/provider_type.py +0 -0
  93. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/__init__.py +0 -0
  94. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/base_orchestrator.py +0 -0
  95. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/checkpoint.py +0 -0
  96. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/models.py +0 -0
  97. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/__init__.py +0 -0
  98. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/get_prompt_loader.py +0 -0
  99. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/local_prompt_loader.py +0 -0
  100. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/prompt_loader.py +0 -0
  101. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/prompt_loader_mode.py +0 -0
  102. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/py.typed +0 -0
  103. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/__init__.py +0 -0
  104. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/base_playback.py +0 -0
  105. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/base_recorder.py +0 -0
  106. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/conditional_recorder.py +0 -0
  107. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/__init__.py +0 -0
  108. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/local_playback.py +0 -0
  109. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/local_recorder.py +0 -0
  110. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/langchain_serializer.py +0 -0
  111. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/__init__.py +0 -0
  112. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/__init__.py +0 -0
  113. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/api_builder.py +0 -0
  114. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/file_router_factory.py +0 -0
  115. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/thread_router_factory.py +0 -0
  116. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/__init__.py +0 -0
  117. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/format_sse_event.py +0 -0
  118. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/negotiate_streaming_response.py +0 -0
  119. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/streaming_negotiator.py +0 -0
  120. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/__init__.py +0 -0
  121. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/base_user.py +0 -0
  122. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/dummy_authorizer.py +0 -0
  123. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/__init__.py +0 -0
  124. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/base_job_processor.py +0 -0
  125. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/thread_job_processor.py +0 -0
  126. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/__init__.py +0 -0
  127. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/cancellation_publisher.py +0 -0
  128. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/cancellation_subscriber.py +0 -0
  129. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/event_publisher.py +0 -0
  130. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/__init__.py +0 -0
  131. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/local_cancellation_pubsub.py +0 -0
  132. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/signalr_publisher.py +0 -0
  133. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/__init__.py +0 -0
  134. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/agent_job_queue.py +0 -0
  135. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/impl/__init__.py +0 -0
  136. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/impl/azure_queue.py +0 -0
  137. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/__init__.py +0 -0
  138. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/agent_response_generator.py +0 -0
  139. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/response_generator.py +0 -0
  140. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/simple_agent_response_generator.py +0 -0
  141. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/__init__.py +0 -0
  142. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_converters.py +0 -0
  143. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_models.py +0 -0
  144. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_service.py +0 -0
  145. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/__init__.py +0 -0
  146. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/base_thread_repository.py +0 -0
  147. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/__init__.py +0 -0
  148. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/in_memory_thread_repository.py +0 -0
  149. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/local_file_thread_repository.py +0 -0
  150. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/thread_filter.py +0 -0
  151. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/thread_metadata.py +0 -0
  152. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/__init__.py +0 -0
  153. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/__init__.py +0 -0
  154. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/__init__.py +0 -0
  155. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/block_display.py +0 -0
  156. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/display_manager.py +0 -0
  157. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/live_cli.py +0 -0
  158. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/event_adapter.py +0 -0
  159. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/streaming_block_adapter.py +0 -0
  160. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/sync_adapter.py +0 -0
  161. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/models.py +0 -0
  162. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/thread_container.py +0 -0
  163. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/__init__.py +0 -0
  164. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/__init__.py +0 -0
  165. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/mcp_tool_provider.py +0 -0
  166. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/search_tool_provider.py +0 -0
  167. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/tool_provider.py +0 -0
  168. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/__init__.py +0 -0
  169. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/get_trace_sink.py +0 -0
  170. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/local_trace_sink.py +0 -0
  171. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/noop_trace_sink.py +0 -0
  172. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/trace_sink.py +0 -0
  173. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/trace_sink_mode.py +0 -0
  174. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/utils/__init__.py +0 -0
  175. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/utils/init_logger.py +0 -0
  176. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/__init__.py +0 -0
  177. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/conftest.py +0 -0
  178. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_consumption_tracking/1.jsonl +0 -0
  179. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_event_stream_basic/1.jsonl +0 -0
  180. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text/1.jsonl +0 -0
  181. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_claude-3-7-sonnet-latest/1.jsonl +0 -0
  182. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_claude-haiku-4-5-20251001/1.jsonl +0 -0
  183. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_claude-opus-4-5-20251101/1.jsonl +0 -0
  184. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_claude-sonnet-4-20250514/1.jsonl +0 -0
  185. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_claude-sonnet-4-5-20250929/1.jsonl +0 -0
  186. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gemini-2.5-flash/1.jsonl +0 -0
  187. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gemini-3-flash-preview/1.jsonl +0 -0
  188. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gemini-3-pro-preview/1.jsonl +0 -0
  189. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-4.1/1.jsonl +0 -0
  190. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-5.1/1.jsonl +0 -0
  191. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-5.2/1.jsonl +0 -0
  192. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_o4-mini/1.jsonl +0 -0
  193. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_with_cancellation/1.jsonl +0 -0
  194. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-3-7-sonnet-latest/1.jsonl +0 -0
  195. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-haiku-4-5-20251001/1.jsonl +0 -0
  196. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-opus-4-1-20250805/1.jsonl +0 -0
  197. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-opus-4-5-20251101/1.jsonl +0 -0
  198. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-sonnet-4-20250514/1.jsonl +0 -0
  199. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_claude-sonnet-4-5-20250929/1.jsonl +0 -0
  200. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gemini-2.5-flash/1.jsonl +0 -0
  201. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gemini-3-flash-preview/1.jsonl +0 -0
  202. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-4.1/1.jsonl +0 -0
  203. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-5/1.jsonl +0 -0
  204. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-5.1/1.jsonl +0 -0
  205. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-5.1-codex/1.jsonl +0 -0
  206. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-5.2/1.jsonl +0 -0
  207. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_gpt-5.2-pro/1.jsonl +0 -0
  208. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_with_tool_call_o4-mini/1.jsonl +0 -0
  209. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_structured_response/1.json +0 -0
  210. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_mystery_streaming_issue/1.jsonl +0 -0
  211. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/__init__.py +0 -0
  212. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/test_cost_tracking_integration.py +0 -0
  213. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/test_mcp_tool_provider.py +0 -0
  214. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/manual/__init__.py +0 -0
  215. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/manual/test_search.py +0 -0
  216. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/__init__.py +0 -0
  217. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/agent/test_base_agent.py +0 -0
  218. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/llm/streaming/test_streaming_event_handler.py +0 -0
  219. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/__init__.py +0 -0
  220. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/__init__.py +0 -0
  221. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/test_google_factory.py +0 -0
  222. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/test_openai_factory.py +0 -0
  223. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/test_model_registry.py +0 -0
  224. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/orchestration/__init__.py +0 -0
  225. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/orchestration/test_base_orchestrator.py +0 -0
  226. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/tools/impl/__init__.py +0 -0
  227. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/tracing/__init__.py +0 -0
  228. {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/tracing/test_tracing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spaik-sdk
3
- Version: 0.6.4
3
+ Version: 0.6.5
4
4
  Summary: Python SDK for building AI agents with multi-LLM support, streaming, and production-ready infrastructure
5
5
  Project-URL: Homepage, https://github.com/siilisolutions/spaik-sdk
6
6
  Project-URL: Repository, https://github.com/siilisolutions/spaik-sdk
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "spaik-sdk"
3
- version = "0.6.4"
3
+ version = "0.6.5"
4
4
  description = "Python SDK for building AI agents with multi-LLM support, streaming, and production-ready infrastructure"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -17,7 +17,6 @@ from spaik_sdk.llm.cost.cost_provider import CostProvider
17
17
  from spaik_sdk.llm.langchain_service import LangChainService
18
18
  from spaik_sdk.models.llm_config import LLMConfig
19
19
  from spaik_sdk.models.llm_model import LLMModel
20
- from spaik_sdk.models.providers.provider_type import ProviderType
21
20
  from spaik_sdk.prompt.get_prompt_loader import get_prompt_loader
22
21
  from spaik_sdk.prompt.prompt_loader import PromptLoader
23
22
  from spaik_sdk.prompt.prompt_loader_mode import PromptLoaderMode
@@ -147,11 +146,9 @@ class BaseAgent(ABC):
147
146
  if llm_model is None:
148
147
  llm_model = self.get_llm_model()
149
148
 
150
- provider_type = ProviderType.from_family(llm_model.family)
151
-
152
149
  return LLMConfig(
153
150
  model=llm_model,
154
- provider_type=provider_type,
151
+ provider_type=env_config.get_provider_type(),
155
152
  reasoning=reasoning if reasoning is not None else llm_model.reasoning,
156
153
  tool_usage=len(self.tools) > 0,
157
154
  )
@@ -1,5 +1,4 @@
1
1
  import os
2
- from typing import Dict
3
2
  from typing import Optional as OptionalType
4
3
 
5
4
  from spaik_sdk.models.llm_model import LLMModel
@@ -16,16 +15,6 @@ class EnvConfig:
16
15
  raise ValueError(f"Environment variable {key} is required but not set")
17
16
  return value
18
17
 
19
- def get_azure_keys(self) -> Dict[str, str]:
20
- return {
21
- "api_key": self.get_key("AZURE_API_KEY"),
22
- "api_version": self.get_key("AZURE_API_VERSION"),
23
- "endpoint": self.get_key("AZURE_ENDPOINT"),
24
- "o3-mini_deployment": self.get_key("AZURE_O3_MINI_DEPLOYMENT", required=False),
25
- "gpt-4_1_deployment": self.get_key("AZURE_GPT_4_1_DEPLOYMENT", required=False),
26
- "gpt-4o_deployment": self.get_key("AZURE_GPT_4O_DEPLOYMENT", required=False),
27
- }
28
-
29
18
  def get_default_model(self) -> LLMModel:
30
19
  return ModelRegistry.from_name(self.get_key("DEFAULT_MODEL"))
31
20
 
@@ -0,0 +1,55 @@
1
+ import os
2
+ from typing import Any, Collection, Dict
3
+
4
+ from langchain_core.language_models.chat_models import BaseChatModel
5
+ from langchain_openai import AzureChatOpenAI
6
+
7
+ from spaik_sdk.models.factories.openai_factory import OpenAIModelFactory
8
+ from spaik_sdk.models.llm_config import LLMConfig
9
+ from spaik_sdk.models.llm_model import LLMModel
10
+ from spaik_sdk.models.providers.base_provider import BaseProvider
11
+
12
+ # Model name -> Environment variable for Azure deployment name
13
+ AZURE_DEPLOYMENT_ENV_VARS: Dict[str, str] = {
14
+ "gpt-4.1": "AZURE_GPT_4_1_DEPLOYMENT",
15
+ "gpt-4o": "AZURE_GPT_4O_DEPLOYMENT",
16
+ "o4-mini": "AZURE_O4_MINI_DEPLOYMENT",
17
+ "o4-mini-2025-04-16": "AZURE_O4_MINI_2025_04_16_DEPLOYMENT",
18
+ "gpt-5": "AZURE_GPT_5_DEPLOYMENT",
19
+ "gpt-5-mini": "AZURE_GPT_5_MINI_DEPLOYMENT",
20
+ "gpt-5-nano": "AZURE_GPT_5_NANO_DEPLOYMENT",
21
+ "gpt-5.1": "AZURE_GPT_5_1_DEPLOYMENT",
22
+ "gpt-5.1-codex": "AZURE_GPT_5_1_CODEX_DEPLOYMENT",
23
+ "gpt-5.1-codex-mini": "AZURE_GPT_5_1_CODEX_MINI_DEPLOYMENT",
24
+ "gpt-5.1-codex-max": "AZURE_GPT_5_1_CODEX_MAX_DEPLOYMENT",
25
+ "gpt-5.2": "AZURE_GPT_5_2_DEPLOYMENT",
26
+ "gpt-5.2-pro": "AZURE_GPT_5_2_PRO_DEPLOYMENT",
27
+ }
28
+
29
+
30
+ class AzureProvider(BaseProvider):
31
+ def get_supported_models(self) -> Collection[LLMModel]:
32
+ return OpenAIModelFactory.MODELS
33
+
34
+ def get_model_config(self, config: LLMConfig) -> Dict[str, Any]:
35
+ return {
36
+ "api_key": self._get_required_env("AZURE_API_KEY"),
37
+ "api_version": self._get_required_env("AZURE_API_VERSION"),
38
+ "azure_endpoint": self._get_required_env("AZURE_ENDPOINT"),
39
+ }
40
+
41
+ def create_langchain_model(self, config: LLMConfig, full_config: Dict[str, Any]) -> BaseChatModel:
42
+ full_config["deployment_name"] = self._get_deployment_name(config.model.name)
43
+ return AzureChatOpenAI(**full_config)
44
+
45
+ def _get_deployment_name(self, model_name: str) -> str:
46
+ env_var = AZURE_DEPLOYMENT_ENV_VARS.get(model_name)
47
+ if not env_var:
48
+ raise ValueError(f"Model '{model_name}' not supported on Azure. Add it to AZURE_DEPLOYMENT_ENV_VARS.")
49
+ return os.environ.get(env_var, model_name)
50
+
51
+ def _get_required_env(self, key: str) -> str:
52
+ value = os.environ.get(key)
53
+ if not value:
54
+ raise ValueError(f"Environment variable {key} is required but not set")
55
+ return value
@@ -178,7 +178,7 @@ class AudioRouterFactory:
178
178
  try:
179
179
  audio_bytes = await file.read()
180
180
  filename = file.filename or "audio.webm"
181
-
181
+
182
182
  logger.info(f"STT request: language={language}, filename={filename}, size={len(audio_bytes)}")
183
183
 
184
184
  options = STTOptions(
@@ -54,7 +54,7 @@ class BaseAuthorizer(ABC, Generic[TUser]):
54
54
 
55
55
  async def can_read_file(self, user: TUser, file_metadata: "FileMetadata") -> bool:
56
56
  """Check if user has permission to read a file.
57
-
57
+
58
58
  By default, users can read files they own, or files owned by 'system' (agent-generated).
59
59
  """
60
60
  return file_metadata.owner_id == user.get_id() or file_metadata.owner_id == "system"
@@ -73,6 +73,4 @@ class AgentTrace:
73
73
 
74
74
  def save(self, name: str) -> None:
75
75
  trace_content = self.to_string(include_system_prompt=False)
76
- self._trace_sink.save_trace(
77
- name, trace_content, self.system_prompt, self.agent_instance_id
78
- )
76
+ self._trace_sink.save_trace(name, trace_content, self.system_prompt, self.agent_instance_id)