prompture 1.15.1.dev2__tar.gz → 1.15.2.dev1__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.
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/publish.yml +21 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/PKG-INFO +1 -1
- prompture-1.15.2.dev1/VERSION +1 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_version.py +2 -2
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/agent.py +7 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_agent.py +7 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_conversation.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/conversation.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tool_context.py +204 -18
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_azure_driver.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_base.py +4 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_driver.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/azure_driver.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/base.py +4 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_driver.py +2 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/PKG-INFO +1 -1
- prompture-1.15.1.dev2/VERSION +0 -1
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-driver/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-driver/references/driver-template.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-example/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-field/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-persona/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-test/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-tool/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/create-pr/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/run-tests/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/update-pricing/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.env.copy +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.gitattributes +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/FUNDING.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/scripts/update_docs_version.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/scripts/update_wrapper_version.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/dev.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/documentation.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/pricing-freshness.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/security.yml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.safety-project.ini +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/AGENTS.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/BREAKING_CHANGES.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/CLAUDE.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/CONTRIBUTING.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/LICENSE +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/MANIFEST.in +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/README.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/ROADMAP.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/SECURITY.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/dev.ps1 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/dev.sh +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/llms.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/mypy_errors.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/README.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/README.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/pyproject.toml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/test.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/README.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/pyproject.toml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/test.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/__main__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_internal/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_internal/json_encoder.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/assistant.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_deep_agent.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/planner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/subagents.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/summarizer.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/vfs.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_agent.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_prompts.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_state.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/live_events.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/persona.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/review_loop.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/simulated_tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/skill_miner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/skills.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tool_grammars.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tools_schema.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/aio/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/bridges/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/bridges/tukuy_backend.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/backends.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/builtin_checks.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/challenge.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/errors.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/health.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/http.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/probe.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/url_safety.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/stores.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/cli.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/delegate_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/doctor_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/formatters.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/mcp_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/research_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/runner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/server.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/setup_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/skill_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/transcribe_cmd.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/automations.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/calls.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/capacity.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/coding_tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/hook.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/live.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/local.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/memory.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/reuse.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/router.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/routing_policy.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/server.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/summary.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/tool_routing.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/dedup.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/evol.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/filters.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/formats.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/schemas.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/seed.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/synth.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/providers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_effort.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_google_genai.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_media_usage.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_ollama_options.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_compat.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_compat_stream.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_responses.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_prompt_cache.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_prompted_tool_stream.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_usage_reporting.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/aggregator_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/airllm_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/assemblyai_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_aggregator_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_airllm_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_bedrock_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cachibot_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_claude_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_coding_agent_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepseek_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_embedding_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_vertexai_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_groq_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_hugging_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_img_gen_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_jina_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_jina_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kev_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_laya_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_lmstudio_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_local_http_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_minimax_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mistral_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_modelscope_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_moonshot_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_muapi_aggregator_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ollama_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_compatible_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_moderation_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openrouter_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_stt_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_systemone_compatible_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_tts_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_typesafe_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_video_gen_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_zai_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/audio_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/azure_config.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/bedrock_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/bfl_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cachibot_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cartesia_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/claude_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/coding_agent_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/decision_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/decision_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepgram_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepgram_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepseek_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/driver_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/embedding_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/embedding_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/fal_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/fal_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_vertexai_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/groq_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/hugging_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/img_gen_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/img_gen_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/jina_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/jina_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/job_runner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kev_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kling_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kling_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/laya_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lipsync_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lipsync_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lmstudio_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/local_http_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/luma_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/media_capabilities.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/minimax_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/minimax_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mistral_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mistral_moderation_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/modelscope_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moderation_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moderation_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moonshot_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/muapi_aggregator_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/music_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/music_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mxbai_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mxbai_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/nomic_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ollama_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ollama_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_compatible_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_moderation_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_stt_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openrouter_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/pika_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/provider_branding.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/provider_descriptors.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/rerank_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/rerank_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_audio_transform_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_capabilities.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_tts_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_video_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/stability_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/stt_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/systemone_compatible_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/tts_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/typesafe_decision_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/vertex_img_gen_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/video_gen_base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/video_gen_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/vision_helpers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/voyage_embedding_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/voyage_rerank_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/zai_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/faithfulness.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/judge.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/pairwise.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/self_consistency.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/exceptions.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/context.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/context_eval.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/document_qa_policies.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/extraction_contacts.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/tool_task_inventory.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/fixtures.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/gates.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/harness.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/candidates.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/feedback.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/optimizer.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/promotion.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/scorecard.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/integration.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/outcomes.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/policy.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/sandbox.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/scoring.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/critique.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/direct.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/retrieve.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/_usage.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/async_core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/code_extraction.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/few_shot.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/fields.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/reasoning.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/strategy.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/streaming.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/tukuy_bridge.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/validator.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/exchange.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/fixtures.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/harness.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/motifs.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/puzzles.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/render.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/connect4.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/control.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/evaluation.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/fixtures.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/match.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/memory.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/othello.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/records.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/strategies.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/tournament.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/trace.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/anthropic_format.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/gemini_format.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/openai_format.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/reasoning_cache.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/responses_format.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/async_groups.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/consensus.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/debate.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/fusion.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/groups.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/enhance.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/negative.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/set_planner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/style_presets.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/accounts.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/billing.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/budget.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/cache.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/callbacks.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/capabilities.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_activity.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_events.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_readers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_specs.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_usage.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agents.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/compression.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/cost_mixin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/credentials.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/discovery.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/environment.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/ledger.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/local_servers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/logging.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/media_pricing.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/media_rates.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/model_rates.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/otel.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/pricing.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/provider_env.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/provider_keys.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rate_limits.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/anthropic.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/azure.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/bedrock.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/cerebras.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/cohere.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/deepinfra.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/deepseek.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/fireworks.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/google.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/google_vertexai.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/groq.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/jina.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/kev.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/laya.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/mistral.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/mixedbread.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/moonshot.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/nomic.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/nvidia.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/openai.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/openrouter.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/perplexity.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/sambanova.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/siliconflow.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/together.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/typesafe.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/voyage.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/xai.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/session.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/settings.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/token_counting.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/tracker.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/tukuy_backend.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/updates.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/chunking.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/detect.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/document.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/csv_parser.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/docx.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/html.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/markdown.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/pdf.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/xlsx.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/mcp_bridge.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/tukuy_bridge.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/jobs.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/stores.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/claims.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/context.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/generate.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/models.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/client.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/health.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/hub.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/importers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/server.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/agent_tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/audio.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/hosting.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/image.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/errors.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/ffmpeg.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/groq_stt.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/health.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/sources.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/summarize.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/transcribe.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/video.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/01-why-prompture.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/02-installation.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/03-quickstart.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/04-toon-input.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/05-test-harness.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/06-stability.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/07-migration.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/history.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/serialization.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/store.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/pipeline.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/resolver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/routing.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/_aliases.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/audio_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/cloud_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/coding_agent_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/decision_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/extras_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/google_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/image_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/local_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/openai_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/video_plugin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/discovery.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/py.typed +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/character.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/chunker_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/contextual.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/markdown.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/recursive.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/semantic.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/token.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/documents.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loader_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/csv_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/docx_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/epub_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/html_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/json_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/markdown_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/pdf_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/text_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/xlsx_loader.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/pipeline.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/_fusion.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/hybrid.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/hyde.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/mmr.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/multi_query.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/retriever_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/similarity.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/step_back.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/chroma.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/faiss.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/pgvector.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/pinecone.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/qdrant.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/weaviate.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/detector.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/evaluator.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/markers.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/agent.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/budget.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/events.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/planner.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/ranking.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/report.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/synthesis.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/tools.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/async_driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/backoff.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/breaker.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/driver.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/errors.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/explain.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/headroom.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/keys.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/router.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/strategies.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/virtual.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/generator.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/README.md.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/config.py.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/env.example.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/main.py.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/models.py.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/injection.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/redaction.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/core.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/project.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/stores.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/SKILL.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/dev.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/finance.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/mcp.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/media.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/models.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/search.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/web.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/environment.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/memory.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/scheduler.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/swarm.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/swarm_agent.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/testing/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/testing/driver_contract.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/adapter.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/builtin.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/config.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/health.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/code_exec.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/named.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/packs.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_common.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_mcp_http.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_types.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/cache.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/fetch.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/health.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/html2md.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/platform.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/_media.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/anilist.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/arxiv.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/base.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/feeds.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/github.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/hackernews.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/podcasts.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/wikipedia.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/youtube.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/search.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/toolkit.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web_search.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/__init__.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/architect.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/engine.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/errors.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/model.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/nodes.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/recovery.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/references.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/registry.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/scheduler.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/state.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/SOURCES.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/dependency_links.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/entry_points.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/requires.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/scm_file_list.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/top_level.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture_cost_tracking.md +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/pyproject.toml +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/requirements.txt +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/scripts/check_pricing_freshness.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/setup.cfg +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/basic_extraction.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/schema_validation.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/strategy_comparison.json +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/test.py +0 -0
- {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/test_version_diagnosis.py +0 -0
|
@@ -171,3 +171,24 @@ jobs:
|
|
|
171
171
|
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN_LLM_TO_TOON }}
|
|
172
172
|
run: |
|
|
173
173
|
python -m twine upload dist/llm_to_toon/* --non-interactive
|
|
174
|
+
|
|
175
|
+
# A release adds a merge commit and the VERSION bump to main, which never
|
|
176
|
+
# reached dev, so dev drifted behind main release after release. Bring them
|
|
177
|
+
# back. dev never touches VERSION, so the merge cannot conflict on it. A push
|
|
178
|
+
# made with GITHUB_TOKEN starts no workflow, so this publishes no dev build.
|
|
179
|
+
sync-dev:
|
|
180
|
+
needs: [release]
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
steps:
|
|
183
|
+
- name: Checkout dev
|
|
184
|
+
uses: actions/checkout@v4
|
|
185
|
+
with: { ref: dev, fetch-depth: 0 }
|
|
186
|
+
|
|
187
|
+
- name: Merge main into dev
|
|
188
|
+
run: |
|
|
189
|
+
git config user.name "github-actions[bot]"
|
|
190
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
191
|
+
git fetch origin main
|
|
192
|
+
git merge --ff-only origin/main \
|
|
193
|
+
|| git merge --no-edit -m "Merge main into dev [skip ci]" origin/main
|
|
194
|
+
git push origin HEAD:dev
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.15.1
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.15.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 15,
|
|
21
|
+
__version__ = version = '1.15.2.dev1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 15, 2, 'dev1')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -265,6 +265,9 @@ class Agent(Generic[DepsType]):
|
|
|
265
265
|
schemas would cost more than ~8k tokens.
|
|
266
266
|
preload_tools: Tools whose schemas are always sent, even when
|
|
267
267
|
deferring.
|
|
268
|
+
seed_tools: When deferring, load this many tools most relevant to
|
|
269
|
+
each new user message up front, so the likely tools need no
|
|
270
|
+
search first. ``0`` (default) loads none.
|
|
268
271
|
brand: A :class:`~prompture.marketing.BrandContext` (or dict /
|
|
269
272
|
brand file path). Its block is added to the system prompt
|
|
270
273
|
right after the persona on every run.
|
|
@@ -301,6 +304,7 @@ class Agent(Generic[DepsType]):
|
|
|
301
304
|
tool_result_policy: ToolResultPolicy | None = None,
|
|
302
305
|
defer_tools: bool | Literal["auto"] = "auto",
|
|
303
306
|
preload_tools: list[str] | None = None,
|
|
307
|
+
seed_tools: int = 0,
|
|
304
308
|
max_depth: int = _DEFAULT_MAX_AGENT_DEPTH,
|
|
305
309
|
env: ProviderEnvironment | None = None,
|
|
306
310
|
brand: Any = None,
|
|
@@ -341,6 +345,7 @@ class Agent(Generic[DepsType]):
|
|
|
341
345
|
self._tool_result_policy = tool_result_policy
|
|
342
346
|
self._defer_tools = defer_tools
|
|
343
347
|
self._preload_tools = list(preload_tools) if preload_tools else None
|
|
348
|
+
self._seed_tools = seed_tools
|
|
344
349
|
self._tool_timeout = tool_timeout
|
|
345
350
|
self._conversation: Conversation | None = None
|
|
346
351
|
# The conversation driving the current run. Tracked separately from
|
|
@@ -997,6 +1002,8 @@ class Agent(Generic[DepsType]):
|
|
|
997
1002
|
kwargs["defer_tools"] = self._defer_tools
|
|
998
1003
|
if self._preload_tools:
|
|
999
1004
|
kwargs["preload_tools"] = self._preload_tools
|
|
1005
|
+
if self._seed_tools:
|
|
1006
|
+
kwargs["seed_tools"] = self._seed_tools
|
|
1000
1007
|
if self._tool_timeout is not None:
|
|
1001
1008
|
kwargs["tool_timeout"] = self._tool_timeout
|
|
1002
1009
|
if self._options:
|
|
@@ -202,6 +202,9 @@ class AsyncAgent(Generic[DepsType]):
|
|
|
202
202
|
schemas would cost more than ~8k tokens.
|
|
203
203
|
preload_tools: Tools whose schemas are always sent, even when
|
|
204
204
|
deferring.
|
|
205
|
+
seed_tools: When deferring, load this many tools most relevant to
|
|
206
|
+
each new user message up front, so the likely tools need no
|
|
207
|
+
search first. ``0`` (default) loads none.
|
|
205
208
|
brand: A :class:`~prompture.marketing.BrandContext` (or dict /
|
|
206
209
|
brand file path). Its block is added to the system prompt
|
|
207
210
|
right after the persona on every run.
|
|
@@ -238,6 +241,7 @@ class AsyncAgent(Generic[DepsType]):
|
|
|
238
241
|
tool_result_policy: ToolResultPolicy | None = None,
|
|
239
242
|
defer_tools: bool | Literal["auto"] = "auto",
|
|
240
243
|
preload_tools: list[str] | None = None,
|
|
244
|
+
seed_tools: int = 0,
|
|
241
245
|
max_depth: int = _DEFAULT_MAX_AGENT_DEPTH,
|
|
242
246
|
env: ProviderEnvironment | None = None,
|
|
243
247
|
brand: Any = None,
|
|
@@ -278,6 +282,7 @@ class AsyncAgent(Generic[DepsType]):
|
|
|
278
282
|
self._tool_result_policy = tool_result_policy
|
|
279
283
|
self._defer_tools = defer_tools
|
|
280
284
|
self._preload_tools = list(preload_tools) if preload_tools else None
|
|
285
|
+
self._seed_tools = seed_tools
|
|
281
286
|
self._tool_timeout = tool_timeout
|
|
282
287
|
self._conversation: Any = None
|
|
283
288
|
# The conversation driving the current run. Tracked separately from
|
|
@@ -1025,6 +1030,8 @@ class AsyncAgent(Generic[DepsType]):
|
|
|
1025
1030
|
kwargs["defer_tools"] = self._defer_tools
|
|
1026
1031
|
if self._preload_tools:
|
|
1027
1032
|
kwargs["preload_tools"] = self._preload_tools
|
|
1033
|
+
if self._seed_tools:
|
|
1034
|
+
kwargs["seed_tools"] = self._seed_tools
|
|
1028
1035
|
if self._tool_timeout is not None:
|
|
1029
1036
|
kwargs["tool_timeout"] = self._tool_timeout
|
|
1030
1037
|
if self._options:
|
|
@@ -79,6 +79,7 @@ class AsyncConversation(ToolContextMixin):
|
|
|
79
79
|
tool_result_policy: ToolResultPolicy | None = None,
|
|
80
80
|
defer_tools: bool | Literal["auto"] = "auto",
|
|
81
81
|
preload_tools: list[str] | None = None,
|
|
82
|
+
seed_tools: int = 0,
|
|
82
83
|
) -> None:
|
|
83
84
|
if system_prompt is not None and persona is not None:
|
|
84
85
|
raise ValueError("Cannot provide both 'system_prompt' and 'persona'. Use one or the other.")
|
|
@@ -136,6 +137,7 @@ class AsyncConversation(ToolContextMixin):
|
|
|
136
137
|
tool_result_policy=tool_result_policy,
|
|
137
138
|
defer_tools=defer_tools,
|
|
138
139
|
preload_tools=preload_tools,
|
|
140
|
+
seed_tools=seed_tools,
|
|
139
141
|
)
|
|
140
142
|
self._simulated_tools = simulated_tools
|
|
141
143
|
self._max_history_messages = max_history_messages
|
|
@@ -80,6 +80,7 @@ class Conversation(ToolContextMixin):
|
|
|
80
80
|
tool_result_policy: ToolResultPolicy | None = None,
|
|
81
81
|
defer_tools: bool | Literal["auto"] = "auto",
|
|
82
82
|
preload_tools: list[str] | None = None,
|
|
83
|
+
seed_tools: int = 0,
|
|
83
84
|
) -> None:
|
|
84
85
|
if system_prompt is not None and persona is not None:
|
|
85
86
|
raise ValueError("Cannot provide both 'system_prompt' and 'persona'. Use one or the other.")
|
|
@@ -139,6 +140,7 @@ class Conversation(ToolContextMixin):
|
|
|
139
140
|
tool_result_policy=tool_result_policy,
|
|
140
141
|
defer_tools=defer_tools,
|
|
141
142
|
preload_tools=preload_tools,
|
|
143
|
+
seed_tools=seed_tools,
|
|
142
144
|
)
|
|
143
145
|
self._simulated_tools = simulated_tools
|
|
144
146
|
self._max_history_messages = max_history_messages
|
|
@@ -7,9 +7,11 @@ Three loop-level helpers shared by :class:`Conversation` and
|
|
|
7
7
|
parallel batch, are moved into an :class:`ArtifactStore` and replaced by a
|
|
8
8
|
head/tail preview plus a handle. The model reads them back with the
|
|
9
9
|
``read_tool_result`` tool instead of losing everything past a cut-off.
|
|
10
|
-
* :class:`ToolLoader` — when the tool schemas themselves are too large,
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
* :class:`ToolLoader` — when the tool schemas themselves are too large, or
|
|
11
|
+
there are more tools than the model accepts in one request (the driver's
|
|
12
|
+
``max_tools``), only a ``search_tools`` / ``load_tools`` pair is sent, plus
|
|
13
|
+
the tools most relevant to the message when ``seed_tools`` is set. The
|
|
14
|
+
schemas the model loads stay loaded, up to that per-request limit.
|
|
13
15
|
* :func:`repair_tool_pairs` — every assistant tool call gets a result and no
|
|
14
16
|
result is left without its call, so an interrupted run does not leave a
|
|
15
17
|
history that providers reject.
|
|
@@ -19,6 +21,7 @@ from __future__ import annotations
|
|
|
19
21
|
|
|
20
22
|
import json
|
|
21
23
|
import logging
|
|
24
|
+
import re
|
|
22
25
|
from collections.abc import Callable, Iterable, Sequence
|
|
23
26
|
from dataclasses import dataclass
|
|
24
27
|
from typing import Any, Literal
|
|
@@ -201,6 +204,93 @@ def make_read_tool_result(store: ArtifactStore, scope: str, *, page_chars: int =
|
|
|
201
204
|
# ---------------------------------------------------------------------------
|
|
202
205
|
|
|
203
206
|
|
|
207
|
+
_WORDS = re.compile(r"[a-z0-9]+")
|
|
208
|
+
# Words that say nothing about which tool a request needs. Plain overlap
|
|
209
|
+
# counts them, which let a tool whose description says "the" and "in" outrank
|
|
210
|
+
# get_weather for "What's the weather in Lima?".
|
|
211
|
+
_STOP_WORDS = frozenset(
|
|
212
|
+
[
|
|
213
|
+
"a",
|
|
214
|
+
"an",
|
|
215
|
+
"and",
|
|
216
|
+
"are",
|
|
217
|
+
"as",
|
|
218
|
+
"at",
|
|
219
|
+
"be",
|
|
220
|
+
"by",
|
|
221
|
+
"can",
|
|
222
|
+
"do",
|
|
223
|
+
"does",
|
|
224
|
+
"for",
|
|
225
|
+
"from",
|
|
226
|
+
"get",
|
|
227
|
+
"give",
|
|
228
|
+
"how",
|
|
229
|
+
"i",
|
|
230
|
+
"in",
|
|
231
|
+
"is",
|
|
232
|
+
"it",
|
|
233
|
+
"me",
|
|
234
|
+
"my",
|
|
235
|
+
"of",
|
|
236
|
+
"on",
|
|
237
|
+
"or",
|
|
238
|
+
"our",
|
|
239
|
+
"please",
|
|
240
|
+
"s",
|
|
241
|
+
"show",
|
|
242
|
+
"tell",
|
|
243
|
+
"that",
|
|
244
|
+
"the",
|
|
245
|
+
"their",
|
|
246
|
+
"them",
|
|
247
|
+
"then",
|
|
248
|
+
"there",
|
|
249
|
+
"these",
|
|
250
|
+
"this",
|
|
251
|
+
"to",
|
|
252
|
+
"us",
|
|
253
|
+
"use",
|
|
254
|
+
"using",
|
|
255
|
+
"we",
|
|
256
|
+
"what",
|
|
257
|
+
"when",
|
|
258
|
+
"where",
|
|
259
|
+
"which",
|
|
260
|
+
"who",
|
|
261
|
+
"why",
|
|
262
|
+
"will",
|
|
263
|
+
"with",
|
|
264
|
+
"would",
|
|
265
|
+
"you",
|
|
266
|
+
"your",
|
|
267
|
+
]
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def _rank_terms(text: str) -> set[str]:
|
|
272
|
+
out = set()
|
|
273
|
+
for word in _WORDS.findall((text or "").casefold()):
|
|
274
|
+
if word in _STOP_WORDS or len(word) < 2:
|
|
275
|
+
continue
|
|
276
|
+
out.add(word[:-1] if len(word) > 3 and word.endswith("s") else word)
|
|
277
|
+
return out
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def rank_tool(query: str, summary: Any) -> float:
|
|
281
|
+
"""How well a tool fits *query*: its name's words count three times its description's.
|
|
282
|
+
|
|
283
|
+
The ranking ``search_tools`` and seeding use. Stop words are ignored and a
|
|
284
|
+
trailing plural ``s`` is folded, so "invoices" finds ``get_invoice``.
|
|
285
|
+
"""
|
|
286
|
+
wanted = _rank_terms(query)
|
|
287
|
+
if not wanted:
|
|
288
|
+
return 0.0
|
|
289
|
+
name_hits = len(wanted & _rank_terms(str(summary.name).replace("_", " ")))
|
|
290
|
+
description_hits = len(wanted & _rank_terms(summary.description or ""))
|
|
291
|
+
return (3 * name_hits + description_hits) / (4 * len(wanted))
|
|
292
|
+
|
|
293
|
+
|
|
204
294
|
class ToolLoader:
|
|
205
295
|
"""Sends tool schemas on demand once a registry is too large to send whole.
|
|
206
296
|
|
|
@@ -209,6 +299,15 @@ class ToolLoader:
|
|
|
209
299
|
once the full schemas would cost more than ``auto_threshold_tokens``.
|
|
210
300
|
auto_threshold_tokens: Schema size that switches ``"auto"`` on.
|
|
211
301
|
preload: Tools whose schemas are always sent, deferred or not.
|
|
302
|
+
seed: When deferring, load the schemas of this many tools most
|
|
303
|
+
relevant to each new user message before the model's first step,
|
|
304
|
+
so the likely tools are already in hand instead of behind a search.
|
|
305
|
+
``0`` (default) loads nothing up front.
|
|
306
|
+
max_tools: The most tools one request may carry, usually the driver's
|
|
307
|
+
:attr:`~prompture.drivers.base.Driver.max_tools`. A registry over it
|
|
308
|
+
is deferred even when ``defer`` is ``False``, because sending it
|
|
309
|
+
whole would be rejected, and the tools sent never exceed it: the
|
|
310
|
+
least recently used loaded tools go back to being searchable.
|
|
212
311
|
"""
|
|
213
312
|
|
|
214
313
|
def __init__(
|
|
@@ -217,10 +316,20 @@ class ToolLoader:
|
|
|
217
316
|
defer: bool | Literal["auto"] = "auto",
|
|
218
317
|
auto_threshold_tokens: int = 8000,
|
|
219
318
|
preload: Iterable[str] = (),
|
|
319
|
+
seed: int = 0,
|
|
320
|
+
max_tools: int | None = None,
|
|
220
321
|
) -> None:
|
|
221
322
|
self.defer = defer
|
|
222
323
|
self.auto_threshold_tokens = auto_threshold_tokens
|
|
223
|
-
self.
|
|
324
|
+
self.seed = max(0, int(seed))
|
|
325
|
+
self.max_tools = max_tools
|
|
326
|
+
self.pinned: frozenset[str] = frozenset(preload)
|
|
327
|
+
self.loaded: set[str] = set(self.pinned)
|
|
328
|
+
# Recency of each loaded tool, for choosing what to unload at the cap.
|
|
329
|
+
self._last_touched: dict[str, int] = {}
|
|
330
|
+
self._clock = 0
|
|
331
|
+
self._seed_key: str | None = None
|
|
332
|
+
self._warned_limit = False
|
|
224
333
|
self._size_cache: tuple[tuple[str, ...], int] | None = None
|
|
225
334
|
|
|
226
335
|
def schema_tokens(self, registry: ToolRegistry) -> int:
|
|
@@ -229,23 +338,76 @@ class ToolLoader:
|
|
|
229
338
|
self._size_cache = (key, count_tokens(json.dumps(registry.to_openai_format())))
|
|
230
339
|
return self._size_cache[1]
|
|
231
340
|
|
|
232
|
-
def
|
|
233
|
-
|
|
341
|
+
def over_limit(self, registry: ToolRegistry, reserve: int = 0) -> bool:
|
|
342
|
+
"""Whether sending every tool, plus ``reserve`` helpers, would pass ``max_tools``."""
|
|
343
|
+
return bool(self.max_tools) and len(registry) + reserve > self.max_tools # type: ignore[operator]
|
|
344
|
+
|
|
345
|
+
def is_deferring(self, registry: ToolRegistry, reserve: int = 0) -> bool:
|
|
346
|
+
if not registry:
|
|
347
|
+
return False
|
|
348
|
+
if self.over_limit(registry, reserve):
|
|
349
|
+
if self.defer is False and not self._warned_limit:
|
|
350
|
+
logger.warning(
|
|
351
|
+
"%d tools is over this model's limit of %d per request; deferring tool schemas "
|
|
352
|
+
"although defer_tools=False, since the request would be rejected otherwise",
|
|
353
|
+
len(registry),
|
|
354
|
+
self.max_tools,
|
|
355
|
+
)
|
|
356
|
+
self._warned_limit = True
|
|
357
|
+
return True
|
|
358
|
+
if self.defer is False:
|
|
234
359
|
return False
|
|
235
360
|
if self.defer is True:
|
|
236
361
|
return True
|
|
237
362
|
return self.schema_tokens(registry) > self.auto_threshold_tokens
|
|
238
363
|
|
|
364
|
+
def touch(self, name: str) -> None:
|
|
365
|
+
"""Load *name* (or mark it used), making it the most recent."""
|
|
366
|
+
self._clock += 1
|
|
367
|
+
self.loaded.add(name)
|
|
368
|
+
self._last_touched[name] = self._clock
|
|
369
|
+
|
|
239
370
|
def mark_used(self, name: str, registry: ToolRegistry) -> None:
|
|
240
371
|
"""A tool called by name without loading it is loaded from then on."""
|
|
241
372
|
if name in registry:
|
|
242
|
-
self.
|
|
243
|
-
|
|
244
|
-
def
|
|
245
|
-
"""
|
|
246
|
-
if not self.
|
|
373
|
+
self.touch(name)
|
|
374
|
+
|
|
375
|
+
def seed_from(self, query: str | None, registry: ToolRegistry) -> list[str]:
|
|
376
|
+
"""Load the ``seed`` tools most relevant to *query*, once per new query."""
|
|
377
|
+
if not self.seed or not query or query == self._seed_key:
|
|
378
|
+
return []
|
|
379
|
+
self._seed_key = query
|
|
380
|
+
hits = ToolCatalog(registry).search(query, limit=self.seed, min_relevance=0.01, rank=rank_tool)
|
|
381
|
+
for summary in hits:
|
|
382
|
+
self.touch(summary.name)
|
|
383
|
+
return [s.name for s in hits]
|
|
384
|
+
|
|
385
|
+
def visible(self, registry: ToolRegistry, *, reserve: int = 0, deferring: bool | None = None) -> ToolRegistry:
|
|
386
|
+
"""The user tools whose schemas go to the model this round.
|
|
387
|
+
|
|
388
|
+
``reserve`` is the number of helper tools sent beside them, counted
|
|
389
|
+
against ``max_tools``.
|
|
390
|
+
"""
|
|
391
|
+
if deferring is None:
|
|
392
|
+
deferring = self.is_deferring(registry)
|
|
393
|
+
if not deferring:
|
|
247
394
|
return registry
|
|
248
|
-
|
|
395
|
+
names = [n for n in registry.names if n in self.loaded]
|
|
396
|
+
cap = None if not self.max_tools else max(0, self.max_tools - reserve)
|
|
397
|
+
if cap is not None and len(names) > cap:
|
|
398
|
+
# Preloaded tools stay; the rest by how recently they were loaded or used.
|
|
399
|
+
pinned = [n for n in names if n in self.pinned][:cap]
|
|
400
|
+
others = sorted(
|
|
401
|
+
(n for n in names if n not in self.pinned),
|
|
402
|
+
key=lambda n: self._last_touched.get(n, 0),
|
|
403
|
+
reverse=True,
|
|
404
|
+
)
|
|
405
|
+
keep = set(pinned) | set(others[: cap - len(pinned)])
|
|
406
|
+
for name in names:
|
|
407
|
+
if name not in keep:
|
|
408
|
+
self.loaded.discard(name)
|
|
409
|
+
names = [n for n in names if n in keep]
|
|
410
|
+
return registry.subset(names)
|
|
249
411
|
|
|
250
412
|
def meta_tools(self, registry_getter: Callable[[], ToolRegistry]) -> list[ToolDefinition]:
|
|
251
413
|
registry = registry_getter()
|
|
@@ -257,7 +419,7 @@ class ToolLoader:
|
|
|
257
419
|
def search_tools(query: str, limit: int = 8) -> str:
|
|
258
420
|
reg = registry_getter()
|
|
259
421
|
catalog = ToolCatalog(reg)
|
|
260
|
-
hits = catalog.search(query, limit=max(1, int(limit)), min_relevance=0.01)
|
|
422
|
+
hits = catalog.search(query, limit=max(1, int(limit)), min_relevance=0.01, rank=rank_tool)
|
|
261
423
|
if not hits:
|
|
262
424
|
needle = query.casefold().strip()
|
|
263
425
|
hits = [s for s in catalog.summaries() if needle and needle in s.name.casefold()][: int(limit)]
|
|
@@ -273,7 +435,8 @@ class ToolLoader:
|
|
|
273
435
|
reg = registry_getter()
|
|
274
436
|
found = [n for n in names if n in reg]
|
|
275
437
|
missing = [n for n in names if n not in reg]
|
|
276
|
-
|
|
438
|
+
for name in found:
|
|
439
|
+
self.touch(name)
|
|
277
440
|
parts = []
|
|
278
441
|
if found:
|
|
279
442
|
parts.append(f"Loaded {', '.join(found)}. Their full schemas are available from your next step on.")
|
|
@@ -325,6 +488,7 @@ class ToolContextMixin:
|
|
|
325
488
|
tool_result_policy: ToolResultPolicy | None,
|
|
326
489
|
defer_tools: bool | Literal["auto"],
|
|
327
490
|
preload_tools: Iterable[str] | None,
|
|
491
|
+
seed_tools: int = 0,
|
|
328
492
|
) -> None:
|
|
329
493
|
# An explicit max_tool_result_length=None keeps the old "never shorten" meaning.
|
|
330
494
|
if tool_result_policy is None and max_tool_result_length is not None:
|
|
@@ -332,7 +496,7 @@ class ToolContextMixin:
|
|
|
332
496
|
self._tool_result_policy = tool_result_policy
|
|
333
497
|
self._artifacts = ArtifactStore()
|
|
334
498
|
self._has_offloaded = False
|
|
335
|
-
self._tool_loader = ToolLoader(defer=defer_tools, preload=preload_tools or ())
|
|
499
|
+
self._tool_loader = ToolLoader(defer=defer_tools, preload=preload_tools or (), seed=seed_tools)
|
|
336
500
|
self._system_tools = ToolRegistry()
|
|
337
501
|
|
|
338
502
|
def _reset_tool_context(self) -> None:
|
|
@@ -347,17 +511,22 @@ class ToolContextMixin:
|
|
|
347
511
|
``read_tool_result`` once something was offloaded). A user tool with
|
|
348
512
|
the same name always wins over a helper.
|
|
349
513
|
"""
|
|
514
|
+
loader = self._tool_loader
|
|
515
|
+
# The model's own cap on tools per request (OpenAI: 128); None when unlimited.
|
|
516
|
+
loader.max_tools = getattr(getattr(self, "_driver", None), "max_tools", None)
|
|
350
517
|
system = ToolRegistry()
|
|
351
518
|
helpers = []
|
|
352
|
-
|
|
353
|
-
|
|
519
|
+
deferring = loader.is_deferring(self._tools, reserve=1 if self._has_offloaded else 0)
|
|
520
|
+
if deferring:
|
|
521
|
+
loader.seed_from(self._latest_user_text(), self._tools)
|
|
522
|
+
helpers.extend(loader.meta_tools(lambda: self._tools))
|
|
354
523
|
if self._has_offloaded:
|
|
355
524
|
helpers.append(make_read_tool_result(self._artifacts, self._conversation_id))
|
|
356
525
|
for td in helpers:
|
|
357
526
|
if td.name not in self._tools:
|
|
358
527
|
system.add(td)
|
|
359
528
|
self._system_tools = system
|
|
360
|
-
visible =
|
|
529
|
+
visible = loader.visible(self._tools, reserve=len(system), deferring=deferring)
|
|
361
530
|
if not system:
|
|
362
531
|
return visible
|
|
363
532
|
active = ToolRegistry()
|
|
@@ -365,6 +534,23 @@ class ToolContextMixin:
|
|
|
365
534
|
active.add(td)
|
|
366
535
|
return active
|
|
367
536
|
|
|
537
|
+
def _latest_user_text(self) -> str:
|
|
538
|
+
"""The text of the newest user message, the query tool seeding ranks against."""
|
|
539
|
+
for message in reversed(getattr(self, "_messages", []) or []):
|
|
540
|
+
if message.get("role") != "user":
|
|
541
|
+
continue
|
|
542
|
+
content = message.get("content")
|
|
543
|
+
if isinstance(content, str):
|
|
544
|
+
return content
|
|
545
|
+
if isinstance(content, list):
|
|
546
|
+
return " ".join(
|
|
547
|
+
str(part.get("text", ""))
|
|
548
|
+
for part in content
|
|
549
|
+
if isinstance(part, dict) and part.get("type") == "text"
|
|
550
|
+
)
|
|
551
|
+
return ""
|
|
552
|
+
return ""
|
|
553
|
+
|
|
368
554
|
def _dispatch_registry(self, name: str) -> ToolRegistry:
|
|
369
555
|
"""Registry that executes *name*: a helper or the user's tools."""
|
|
370
556
|
if name in self._system_tools and name not in self._tools:
|
|
@@ -34,6 +34,8 @@ class AsyncAzureDriver(CostMixin, AsyncDriver):
|
|
|
34
34
|
supports_json_mode = True
|
|
35
35
|
supports_json_schema = True
|
|
36
36
|
supports_tool_use = True
|
|
37
|
+
# OpenAI rejects a request with more than 128 tools.
|
|
38
|
+
max_tools = 128
|
|
37
39
|
supports_vision = True
|
|
38
40
|
|
|
39
41
|
MODEL_PRICING = AzureDriver.MODEL_PRICING
|
|
@@ -39,6 +39,10 @@ class AsyncDriver(ABC):
|
|
|
39
39
|
supports_streaming: bool = False
|
|
40
40
|
supports_streaming_tool_use: bool = False
|
|
41
41
|
supports_vision: bool = False
|
|
42
|
+
#: The most tools one request may carry, or ``None`` for no known limit.
|
|
43
|
+
#: Conversations defer tool schemas past it (see ``ToolLoader``) rather
|
|
44
|
+
#: than send a request the provider would reject.
|
|
45
|
+
max_tools: int | None = None
|
|
42
46
|
|
|
43
47
|
callbacks: DriverCallbacks | None = None
|
|
44
48
|
|
|
@@ -34,6 +34,8 @@ class AsyncOpenAIDriver(CostMixin, AsyncDriver):
|
|
|
34
34
|
supports_json_mode = True
|
|
35
35
|
supports_json_schema = True
|
|
36
36
|
supports_tool_use = True
|
|
37
|
+
# OpenAI rejects a request with more than 128 tools.
|
|
38
|
+
max_tools = 128
|
|
37
39
|
supports_streaming = True
|
|
38
40
|
supports_streaming_tool_use = True
|
|
39
41
|
supports_vision = True
|
|
@@ -37,6 +37,8 @@ class AzureDriver(CostMixin, Driver):
|
|
|
37
37
|
supports_json_mode = True
|
|
38
38
|
supports_json_schema = True
|
|
39
39
|
supports_tool_use = True
|
|
40
|
+
# OpenAI rejects a request with more than 128 tools.
|
|
41
|
+
max_tools = 128
|
|
40
42
|
supports_vision = True
|
|
41
43
|
|
|
42
44
|
# All pricing and model config now resolved from JSON rate files (KB) and
|
|
@@ -403,6 +403,10 @@ class Driver(ABC):
|
|
|
403
403
|
supports_streaming: bool = False
|
|
404
404
|
supports_streaming_tool_use: bool = False
|
|
405
405
|
supports_vision: bool = False
|
|
406
|
+
#: The most tools one request may carry, or ``None`` for no known limit.
|
|
407
|
+
#: Conversations defer tool schemas past it (see ``ToolLoader``) rather
|
|
408
|
+
#: than send a request the provider would reject.
|
|
409
|
+
max_tools: int | None = None
|
|
406
410
|
|
|
407
411
|
callbacks: DriverCallbacks | None = None
|
|
408
412
|
|
|
@@ -195,6 +195,8 @@ class OpenAIDriver(CostMixin, Driver):
|
|
|
195
195
|
supports_json_mode = True
|
|
196
196
|
supports_json_schema = True
|
|
197
197
|
supports_tool_use = True
|
|
198
|
+
# OpenAI rejects a request with more than 128 tools.
|
|
199
|
+
max_tools = 128
|
|
198
200
|
supports_streaming = True
|
|
199
201
|
supports_streaming_tool_use = True
|
|
200
202
|
supports_vision = True
|
prompture-1.15.1.dev2/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.15.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml
RENAMED
|
File without changes
|
{prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml
RENAMED
|
File without changes
|
{prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|