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.
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/PKG-INFO +1 -1
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/pyproject.toml +1 -1
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/agent/base_agent.py +1 -4
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/env.py +0 -11
- spaik_sdk-0.6.5/spaik_sdk/models/providers/azure_provider.py +55 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/audio_router_factory.py +1 -1
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/base_authorizer.py +1 -1
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/agent_trace.py +1 -3
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/uv.lock +116 -116
- spaik_sdk-0.6.4/spaik_sdk/models/providers/azure_provider.py +0 -31
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/global.mdc +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/post_run.mdc +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/repo_overview.mdc +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.cursor/rules/testing-structure.mdc +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/.gitignore +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/Makefile +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/README.md +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/__init__.py.bak +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/env.example +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/kill.sh +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/py.typed +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/setup.sh +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/agent/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/builder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/file_storage_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/mime_types.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/models.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/provider_support.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/base_file_storage.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/attachments/storage/impl/local_file_storage.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/options.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/google_tts.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/openai_stt.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/providers/openai_tts.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/stt.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/audio/tts.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/credentials_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/env_credentials_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/config/get_credentials_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/image_generator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/options.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/google.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/image_gen/providers/openai.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cancellation_handle.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_estimate.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_estimate_builder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/consumption_extractor.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/consumption/token_usage.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/converters.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/builtin_cost_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/cost_estimate.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/cost/cost_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/extract_error_message.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/langchain_loop_manager.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/langchain_service.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/message_handler.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/block_manager.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/models.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_content_handler.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_event_handler.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/llm/streaming/streaming_state_manager.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/anthropic_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/base_model_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/google_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/ollama_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/factories/openai_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_config.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_families.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_model.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/llm_wrapper.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/model_registry.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/anthropic_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/base_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/google_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/ollama_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/openai_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/models/providers/provider_type.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/base_orchestrator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/checkpoint.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/orchestration/models.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/get_prompt_loader.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/local_prompt_loader.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/prompt_loader.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/prompt/prompt_loader_mode.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/py.typed +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/base_playback.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/base_recorder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/conditional_recorder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/local_playback.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/impl/local_recorder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/recording/langchain_serializer.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/api_builder.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/file_router_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/routers/thread_router_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/format_sse_event.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/negotiate_streaming_response.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/api/streaming/streaming_negotiator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/base_user.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/authorization/dummy_authorizer.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/base_job_processor.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/job_processor/thread_job_processor.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/cancellation_publisher.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/cancellation_subscriber.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/event_publisher.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/local_cancellation_pubsub.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/pubsub/impl/signalr_publisher.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/agent_job_queue.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/queue/impl/azure_queue.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/agent_response_generator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/response_generator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/response/simple_agent_response_generator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_converters.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_models.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/services/thread_service.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/base_thread_repository.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/in_memory_thread_repository.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/impl/local_file_thread_repository.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/thread_filter.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/server/storage/thread_metadata.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/block_display.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/display_manager.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/cli/live_cli.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/event_adapter.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/streaming_block_adapter.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/adapters/sync_adapter.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/models.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/thread/thread_container.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/mcp_tool_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/impl/search_tool_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tools/tool_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/get_trace_sink.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/local_trace_sink.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/noop_trace_sink.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/trace_sink.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/tracing/trace_sink_mode.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/utils/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/spaik_sdk/utils/init_logger.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/conftest.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_consumption_tracking/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_event_stream_basic/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text/1.jsonl +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-4.1/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-5.1/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_gpt-5.2/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_o4-mini/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_response_text_with_cancellation/1.jsonl +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_get_structured_response/1.json +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/data/recordings/test_mystery_streaming_issue/1.jsonl +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/test_cost_tracking_integration.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/integration/test_mcp_tool_provider.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/manual/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/manual/test_search.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/agent/test_base_agent.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/llm/streaming/test_streaming_event_handler.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/test_google_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/factories/test_openai_factory.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/models/test_model_registry.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/orchestration/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/orchestration/test_base_orchestrator.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/tools/impl/__init__.py +0 -0
- {spaik_sdk-0.6.4 → spaik_sdk-0.6.5}/tests/unit/spaik_sdk/tracing/__init__.py +0 -0
- {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.
|
|
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
|
|
@@ -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=
|
|
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)
|