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.
Files changed (714) hide show
  1. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/publish.yml +21 -0
  2. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/PKG-INFO +1 -1
  3. prompture-1.15.2.dev1/VERSION +1 -0
  4. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_version.py +2 -2
  5. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/agent.py +7 -0
  6. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_agent.py +7 -0
  7. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_conversation.py +2 -0
  8. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/conversation.py +2 -0
  9. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tool_context.py +204 -18
  10. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_azure_driver.py +2 -0
  11. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_base.py +4 -0
  12. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_driver.py +2 -0
  13. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/azure_driver.py +2 -0
  14. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/base.py +4 -0
  15. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_driver.py +2 -0
  16. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/PKG-INFO +1 -1
  17. prompture-1.15.1.dev2/VERSION +0 -1
  18. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-driver/SKILL.md +0 -0
  19. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-driver/references/driver-template.md +0 -0
  20. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-example/SKILL.md +0 -0
  21. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-field/SKILL.md +0 -0
  22. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-persona/SKILL.md +0 -0
  23. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-test/SKILL.md +0 -0
  24. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/add-tool/SKILL.md +0 -0
  25. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/create-pr/SKILL.md +0 -0
  26. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/run-tests/SKILL.md +0 -0
  27. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
  28. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.claude/skills/update-pricing/SKILL.md +0 -0
  29. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.env.copy +0 -0
  30. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.gitattributes +0 -0
  31. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/FUNDING.yml +0 -0
  32. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  33. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
  34. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
  35. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
  36. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/scripts/update_docs_version.py +0 -0
  37. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/scripts/update_wrapper_version.py +0 -0
  38. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/dev.yml +0 -0
  39. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/documentation.yml +0 -0
  40. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/pricing-freshness.yml +0 -0
  41. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.github/workflows/security.yml +0 -0
  42. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/.safety-project.ini +0 -0
  43. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/AGENTS.md +0 -0
  44. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/BREAKING_CHANGES.md +0 -0
  45. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/CLAUDE.md +0 -0
  46. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/CONTRIBUTING.md +0 -0
  47. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/LICENSE +0 -0
  48. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/MANIFEST.in +0 -0
  49. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/README.md +0 -0
  50. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/ROADMAP.md +0 -0
  51. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/SECURITY.md +0 -0
  52. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/dev.ps1 +0 -0
  53. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/dev.sh +0 -0
  54. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/llms.txt +0 -0
  55. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/mypy_errors.txt +0 -0
  56. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/README.md +0 -0
  57. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/README.md +0 -0
  58. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
  59. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/pyproject.toml +0 -0
  60. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_json/test.py +0 -0
  61. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/README.md +0 -0
  62. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
  63. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/pyproject.toml +0 -0
  64. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/packages/llm_to_toon/test.py +0 -0
  65. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/__init__.py +0 -0
  66. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/__main__.py +0 -0
  67. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_internal/__init__.py +0 -0
  68. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/_internal/json_encoder.py +0 -0
  69. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/__init__.py +0 -0
  70. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/assistant.py +0 -0
  71. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/async_deep_agent.py +0 -0
  72. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/__init__.py +0 -0
  73. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/planner.py +0 -0
  74. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/subagents.py +0 -0
  75. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/summarizer.py +0 -0
  76. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep/vfs.py +0 -0
  77. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_agent.py +0 -0
  78. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_prompts.py +0 -0
  79. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/deep_state.py +0 -0
  80. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/live_events.py +0 -0
  81. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/persona.py +0 -0
  82. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/review_loop.py +0 -0
  83. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/simulated_tools.py +0 -0
  84. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/skill_miner.py +0 -0
  85. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/skills.py +0 -0
  86. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tool_grammars.py +0 -0
  87. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/tools_schema.py +0 -0
  88. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/agents/types.py +0 -0
  89. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/aio/__init__.py +0 -0
  90. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/bridges/__init__.py +0 -0
  91. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/bridges/tukuy_backend.py +0 -0
  92. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/__init__.py +0 -0
  93. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/backends.py +0 -0
  94. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/builtin_checks.py +0 -0
  95. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/challenge.py +0 -0
  96. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/errors.py +0 -0
  97. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/health.py +0 -0
  98. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/http.py +0 -0
  99. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/probe.py +0 -0
  100. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/capabilities/url_safety.py +0 -0
  101. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/__init__.py +0 -0
  102. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/core.py +0 -0
  103. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/stores.py +0 -0
  104. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/checkpoints/types.py +0 -0
  105. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/__init__.py +0 -0
  106. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/core.py +0 -0
  107. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/citations/types.py +0 -0
  108. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/__init__.py +0 -0
  109. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/cli.py +0 -0
  110. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/delegate_cmd.py +0 -0
  111. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/doctor_cmd.py +0 -0
  112. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/formatters.py +0 -0
  113. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/mcp_cmd.py +0 -0
  114. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/research_cmd.py +0 -0
  115. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/runner.py +0 -0
  116. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/server.py +0 -0
  117. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/setup_cmd.py +0 -0
  118. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/skill_cmd.py +0 -0
  119. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/cli/transcribe_cmd.py +0 -0
  120. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/__init__.py +0 -0
  121. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/automations.py +0 -0
  122. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/calls.py +0 -0
  123. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/capacity.py +0 -0
  124. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/coding_tools.py +0 -0
  125. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/hook.py +0 -0
  126. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/live.py +0 -0
  127. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/local.py +0 -0
  128. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/memory.py +0 -0
  129. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/reuse.py +0 -0
  130. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/router.py +0 -0
  131. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/routing_policy.py +0 -0
  132. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/server.py +0 -0
  133. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/summary.py +0 -0
  134. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/companion/tool_routing.py +0 -0
  135. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/__init__.py +0 -0
  136. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/dedup.py +0 -0
  137. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/evol.py +0 -0
  138. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/filters.py +0 -0
  139. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/formats.py +0 -0
  140. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/schemas.py +0 -0
  141. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/seed.py +0 -0
  142. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/dataset/synth.py +0 -0
  143. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/__init__.py +0 -0
  144. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/core.py +0 -0
  145. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/doctor/providers.py +0 -0
  146. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/__init__.py +0 -0
  147. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_effort.py +0 -0
  148. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_google_genai.py +0 -0
  149. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_media_usage.py +0 -0
  150. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_ollama_options.py +0 -0
  151. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_compat.py +0 -0
  152. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_compat_stream.py +0 -0
  153. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_openai_responses.py +0 -0
  154. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_prompt_cache.py +0 -0
  155. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_prompted_tool_stream.py +0 -0
  156. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/_usage_reporting.py +0 -0
  157. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/aggregator_base.py +0 -0
  158. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/airllm_driver.py +0 -0
  159. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/assemblyai_stt_driver.py +0 -0
  160. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_aggregator_base.py +0 -0
  161. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_airllm_driver.py +0 -0
  162. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
  163. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_bedrock_driver.py +0 -0
  164. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
  165. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cachibot_driver.py +0 -0
  166. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
  167. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_claude_driver.py +0 -0
  168. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_coding_agent_driver.py +0 -0
  169. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_driver.py +0 -0
  170. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
  171. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
  172. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
  173. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
  174. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_deepseek_driver.py +0 -0
  175. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
  176. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
  177. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_embedding_base.py +0 -0
  178. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
  179. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
  180. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_driver.py +0 -0
  181. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_img_gen_driver.py +0 -0
  182. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_google_vertexai_driver.py +0 -0
  183. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_driver.py +0 -0
  184. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
  185. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
  186. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_groq_driver.py +0 -0
  187. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_hugging_driver.py +0 -0
  188. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
  189. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_img_gen_base.py +0 -0
  190. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_jina_embedding_driver.py +0 -0
  191. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_jina_rerank_driver.py +0 -0
  192. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kev_decision_driver.py +0 -0
  193. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
  194. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
  195. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_laya_decision_driver.py +0 -0
  196. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_lmstudio_driver.py +0 -0
  197. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_local_http_driver.py +0 -0
  198. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
  199. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_minimax_driver.py +0 -0
  200. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
  201. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mistral_driver.py +0 -0
  202. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
  203. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_modelscope_driver.py +0 -0
  204. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_moonshot_driver.py +0 -0
  205. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_muapi_aggregator_driver.py +0 -0
  206. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
  207. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
  208. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
  209. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ollama_driver.py +0 -0
  210. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
  211. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_compatible_driver.py +0 -0
  212. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_embedding_driver.py +0 -0
  213. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
  214. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_moderation_driver.py +0 -0
  215. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_stt_driver.py +0 -0
  216. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openai_tts_driver.py +0 -0
  217. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_openrouter_driver.py +0 -0
  218. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
  219. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_registry.py +0 -0
  220. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
  221. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_tts_driver.py +0 -0
  222. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
  223. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
  224. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_stt_base.py +0 -0
  225. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_systemone_compatible_driver.py +0 -0
  226. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_tts_base.py +0 -0
  227. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_typesafe_decision_driver.py +0 -0
  228. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_video_gen_base.py +0 -0
  229. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
  230. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
  231. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/async_zai_driver.py +0 -0
  232. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/audio_registry.py +0 -0
  233. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/azure_config.py +0 -0
  234. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/bedrock_driver.py +0 -0
  235. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/bfl_img_gen_driver.py +0 -0
  236. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cachibot_driver.py +0 -0
  237. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cartesia_tts_driver.py +0 -0
  238. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/claude_driver.py +0 -0
  239. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/coding_agent_driver.py +0 -0
  240. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_driver.py +0 -0
  241. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_embedding_driver.py +0 -0
  242. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/cohere_rerank_driver.py +0 -0
  243. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/decision_base.py +0 -0
  244. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/decision_registry.py +0 -0
  245. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepgram_stt_driver.py +0 -0
  246. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepgram_tts_driver.py +0 -0
  247. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/deepseek_driver.py +0 -0
  248. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/driver_registry.py +0 -0
  249. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
  250. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
  251. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/embedding_base.py +0 -0
  252. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/embedding_registry.py +0 -0
  253. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/fal_img_gen_driver.py +0 -0
  254. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/fal_video_gen_driver.py +0 -0
  255. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_driver.py +0 -0
  256. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_img_gen_driver.py +0 -0
  257. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/google_vertexai_driver.py +0 -0
  258. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_driver.py +0 -0
  259. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_img_gen_driver.py +0 -0
  260. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/grok_video_gen_driver.py +0 -0
  261. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/groq_driver.py +0 -0
  262. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/hugging_driver.py +0 -0
  263. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
  264. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/img_gen_base.py +0 -0
  265. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/img_gen_registry.py +0 -0
  266. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/jina_embedding_driver.py +0 -0
  267. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/jina_rerank_driver.py +0 -0
  268. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/job_runner.py +0 -0
  269. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kev_decision_driver.py +0 -0
  270. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kling_img_gen_driver.py +0 -0
  271. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/kling_video_gen_driver.py +0 -0
  272. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/laya_decision_driver.py +0 -0
  273. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lipsync_base.py +0 -0
  274. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lipsync_registry.py +0 -0
  275. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/lmstudio_driver.py +0 -0
  276. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/local_http_driver.py +0 -0
  277. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/luma_video_gen_driver.py +0 -0
  278. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/media_capabilities.py +0 -0
  279. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/minimax_driver.py +0 -0
  280. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/minimax_video_gen_driver.py +0 -0
  281. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mistral_driver.py +0 -0
  282. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mistral_moderation_driver.py +0 -0
  283. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/modelscope_driver.py +0 -0
  284. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moderation_base.py +0 -0
  285. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moderation_registry.py +0 -0
  286. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/moonshot_driver.py +0 -0
  287. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/muapi_aggregator_driver.py +0 -0
  288. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/music_base.py +0 -0
  289. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/music_registry.py +0 -0
  290. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mxbai_embedding_driver.py +0 -0
  291. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/mxbai_rerank_driver.py +0 -0
  292. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/nomic_embedding_driver.py +0 -0
  293. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ollama_driver.py +0 -0
  294. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/ollama_embedding_driver.py +0 -0
  295. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_compatible_driver.py +0 -0
  296. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_embedding_driver.py +0 -0
  297. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_img_gen_driver.py +0 -0
  298. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_moderation_driver.py +0 -0
  299. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_stt_driver.py +0 -0
  300. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openai_tts_driver.py +0 -0
  301. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/openrouter_driver.py +0 -0
  302. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/pika_video_gen_driver.py +0 -0
  303. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/provider_branding.py +0 -0
  304. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/provider_descriptors.py +0 -0
  305. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/registry.py +0 -0
  306. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/rerank_base.py +0 -0
  307. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/rerank_registry.py +0 -0
  308. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_audio_transform_driver.py +0 -0
  309. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_capabilities.py +0 -0
  310. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_img_gen_driver.py +0 -0
  311. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_tts_driver.py +0 -0
  312. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/runway_video_gen_driver.py +0 -0
  313. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/stability_img_gen_driver.py +0 -0
  314. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/stt_base.py +0 -0
  315. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/systemone_compatible_driver.py +0 -0
  316. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/tts_base.py +0 -0
  317. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/typesafe_decision_driver.py +0 -0
  318. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/vertex_img_gen_driver.py +0 -0
  319. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/video_gen_base.py +0 -0
  320. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/video_gen_registry.py +0 -0
  321. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/vision_helpers.py +0 -0
  322. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/voyage_embedding_driver.py +0 -0
  323. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/voyage_rerank_driver.py +0 -0
  324. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/drivers/zai_driver.py +0 -0
  325. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/__init__.py +0 -0
  326. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/base.py +0 -0
  327. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/faithfulness.py +0 -0
  328. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/judge.py +0 -0
  329. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/pairwise.py +0 -0
  330. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/eval/self_consistency.py +0 -0
  331. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/exceptions.py +0 -0
  332. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/__init__.py +0 -0
  333. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/context.py +0 -0
  334. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/context_eval.py +0 -0
  335. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/document_qa_policies.json +0 -0
  336. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/extraction_contacts.json +0 -0
  337. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/data/tool_task_inventory.json +0 -0
  338. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/fixtures.py +0 -0
  339. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/gates.py +0 -0
  340. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/harness.py +0 -0
  341. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/__init__.py +0 -0
  342. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/candidates.py +0 -0
  343. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/feedback.py +0 -0
  344. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/optimizer.py +0 -0
  345. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/promotion.py +0 -0
  346. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/improve/scorecard.py +0 -0
  347. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/integration.py +0 -0
  348. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/outcomes.py +0 -0
  349. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/policy.py +0 -0
  350. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/sandbox.py +0 -0
  351. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/scoring.py +0 -0
  352. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/__init__.py +0 -0
  353. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/base.py +0 -0
  354. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/critique.py +0 -0
  355. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/direct.py +0 -0
  356. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/registry.py +0 -0
  357. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/strategies/retrieve.py +0 -0
  358. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/execution/types.py +0 -0
  359. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/__init__.py +0 -0
  360. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/_usage.py +0 -0
  361. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/async_core.py +0 -0
  362. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/code_extraction.py +0 -0
  363. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/core.py +0 -0
  364. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/few_shot.py +0 -0
  365. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/fields.py +0 -0
  366. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/reasoning.py +0 -0
  367. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/strategy.py +0 -0
  368. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/streaming.py +0 -0
  369. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/tools.py +0 -0
  370. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/tukuy_bridge.py +0 -0
  371. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/extraction/validator.py +0 -0
  372. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/__init__.py +0 -0
  373. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/base.py +0 -0
  374. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/__init__.py +0 -0
  375. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/exchange.py +0 -0
  376. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/fixtures.py +0 -0
  377. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/harness.py +0 -0
  378. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/motifs.py +0 -0
  379. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/puzzles.py +0 -0
  380. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/chess/render.py +0 -0
  381. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/connect4.py +0 -0
  382. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/control.py +0 -0
  383. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/evaluation.py +0 -0
  384. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/fixtures.py +0 -0
  385. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/match.py +0 -0
  386. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/memory.py +0 -0
  387. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/othello.py +0 -0
  388. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/records.py +0 -0
  389. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/strategies.py +0 -0
  390. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/tournament.py +0 -0
  391. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/games/trace.py +0 -0
  392. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/__init__.py +0 -0
  393. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/anthropic_format.py +0 -0
  394. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/gemini_format.py +0 -0
  395. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/openai_format.py +0 -0
  396. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/reasoning_cache.py +0 -0
  397. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/gateway/responses_format.py +0 -0
  398. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/__init__.py +0 -0
  399. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/async_groups.py +0 -0
  400. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/consensus.py +0 -0
  401. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/debate.py +0 -0
  402. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/fusion.py +0 -0
  403. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/groups.py +0 -0
  404. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/groups/types.py +0 -0
  405. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/__init__.py +0 -0
  406. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/enhance.py +0 -0
  407. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/negative.py +0 -0
  408. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/set_planner.py +0 -0
  409. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/imaging/style_presets.py +0 -0
  410. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/__init__.py +0 -0
  411. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/accounts.py +0 -0
  412. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/billing.py +0 -0
  413. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/budget.py +0 -0
  414. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/cache.py +0 -0
  415. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/callbacks.py +0 -0
  416. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/capabilities.py +0 -0
  417. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_activity.py +0 -0
  418. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_events.py +0 -0
  419. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_readers.py +0 -0
  420. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_specs.py +0 -0
  421. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agent_usage.py +0 -0
  422. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/coding_agents.py +0 -0
  423. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/compression.py +0 -0
  424. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/cost_mixin.py +0 -0
  425. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/credentials.py +0 -0
  426. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/discovery.py +0 -0
  427. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/environment.py +0 -0
  428. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/ledger.py +0 -0
  429. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/local_servers.py +0 -0
  430. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/logging.py +0 -0
  431. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/media_pricing.py +0 -0
  432. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/media_rates.json +0 -0
  433. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/model_rates.py +0 -0
  434. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/otel.py +0 -0
  435. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/pricing.py +0 -0
  436. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/provider_env.py +0 -0
  437. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/provider_keys.py +0 -0
  438. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rate_limits.py +0 -0
  439. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/anthropic.json +0 -0
  440. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/azure.json +0 -0
  441. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/bedrock.json +0 -0
  442. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/cerebras.json +0 -0
  443. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/cohere.json +0 -0
  444. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/deepinfra.json +0 -0
  445. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/deepseek.json +0 -0
  446. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/fireworks.json +0 -0
  447. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/google.json +0 -0
  448. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/google_vertexai.json +0 -0
  449. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/groq.json +0 -0
  450. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/jina.json +0 -0
  451. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/kev.json +0 -0
  452. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/laya.json +0 -0
  453. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/mistral.json +0 -0
  454. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/mixedbread.json +0 -0
  455. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/moonshot.json +0 -0
  456. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/nomic.json +0 -0
  457. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/nvidia.json +0 -0
  458. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/openai.json +0 -0
  459. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/openrouter.json +0 -0
  460. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/perplexity.json +0 -0
  461. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/sambanova.json +0 -0
  462. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/siliconflow.json +0 -0
  463. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/together.json +0 -0
  464. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/typesafe.json +0 -0
  465. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/voyage.json +0 -0
  466. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/rates/xai.json +0 -0
  467. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/session.py +0 -0
  468. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/settings.py +0 -0
  469. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/token_counting.py +0 -0
  470. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/tracker.py +0 -0
  471. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/tukuy_backend.py +0 -0
  472. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/infra/updates.py +0 -0
  473. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/__init__.py +0 -0
  474. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/chunking.py +0 -0
  475. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/detect.py +0 -0
  476. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/document.py +0 -0
  477. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/__init__.py +0 -0
  478. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/base.py +0 -0
  479. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/csv_parser.py +0 -0
  480. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/docx.py +0 -0
  481. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/html.py +0 -0
  482. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/markdown.py +0 -0
  483. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/pdf.py +0 -0
  484. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/ingestion/parsers/xlsx.py +0 -0
  485. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/__init__.py +0 -0
  486. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/mcp_bridge.py +0 -0
  487. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/integrations/tukuy_bridge.py +0 -0
  488. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/jobs.py +0 -0
  489. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/__init__.py +0 -0
  490. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/core.py +0 -0
  491. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/stores.py +0 -0
  492. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/kg/types.py +0 -0
  493. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/__init__.py +0 -0
  494. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/claims.py +0 -0
  495. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/context.py +0 -0
  496. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/generate.py +0 -0
  497. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/marketing/models.py +0 -0
  498. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/__init__.py +0 -0
  499. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/client.py +0 -0
  500. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/health.py +0 -0
  501. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/hub.py +0 -0
  502. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/importers.py +0 -0
  503. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/server.py +0 -0
  504. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/mcp/tools.py +0 -0
  505. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/__init__.py +0 -0
  506. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/agent_tools.py +0 -0
  507. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/audio.py +0 -0
  508. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/hosting.py +0 -0
  509. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/image.py +0 -0
  510. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/__init__.py +0 -0
  511. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/errors.py +0 -0
  512. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/ffmpeg.py +0 -0
  513. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/groq_stt.py +0 -0
  514. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/health.py +0 -0
  515. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/sources.py +0 -0
  516. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/summarize.py +0 -0
  517. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/tools.py +0 -0
  518. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/understand/transcribe.py +0 -0
  519. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/media/video.py +0 -0
  520. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/01-why-prompture.md +0 -0
  521. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/02-installation.md +0 -0
  522. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/03-quickstart.md +0 -0
  523. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/04-toon-input.md +0 -0
  524. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/05-test-harness.md +0 -0
  525. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/06-stability.md +0 -0
  526. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pages/07-migration.md +0 -0
  527. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/__init__.py +0 -0
  528. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/history.py +0 -0
  529. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/serialization.py +0 -0
  530. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/persistence/store.py +0 -0
  531. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/__init__.py +0 -0
  532. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/pipeline.py +0 -0
  533. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/resolver.py +0 -0
  534. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/pipeline/routing.py +0 -0
  535. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/__init__.py +0 -0
  536. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/base.py +0 -0
  537. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/__init__.py +0 -0
  538. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/_aliases.py +0 -0
  539. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
  540. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/audio_plugin.py +0 -0
  541. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/cloud_plugin.py +0 -0
  542. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/coding_agent_plugin.py +0 -0
  543. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/decision_plugin.py +0 -0
  544. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
  545. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/extras_plugin.py +0 -0
  546. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/google_plugin.py +0 -0
  547. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/image_plugin.py +0 -0
  548. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/local_plugin.py +0 -0
  549. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
  550. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/openai_plugin.py +0 -0
  551. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/builtins/video_plugin.py +0 -0
  552. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/plugins/discovery.py +0 -0
  553. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/py.typed +0 -0
  554. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/__init__.py +0 -0
  555. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/__init__.py +0 -0
  556. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/base.py +0 -0
  557. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/character.py +0 -0
  558. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/chunker_registry.py +0 -0
  559. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/contextual.py +0 -0
  560. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/markdown.py +0 -0
  561. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/recursive.py +0 -0
  562. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/semantic.py +0 -0
  563. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/chunkers/token.py +0 -0
  564. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/documents.py +0 -0
  565. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loader_registry.py +0 -0
  566. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/__init__.py +0 -0
  567. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/csv_loader.py +0 -0
  568. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/docx_loader.py +0 -0
  569. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/epub_loader.py +0 -0
  570. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/html_loader.py +0 -0
  571. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/json_loader.py +0 -0
  572. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/markdown_loader.py +0 -0
  573. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/pdf_loader.py +0 -0
  574. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/text_loader.py +0 -0
  575. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/loaders/xlsx_loader.py +0 -0
  576. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/pipeline.py +0 -0
  577. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/__init__.py +0 -0
  578. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/_fusion.py +0 -0
  579. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/base.py +0 -0
  580. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/hybrid.py +0 -0
  581. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/hyde.py +0 -0
  582. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/mmr.py +0 -0
  583. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/multi_query.py +0 -0
  584. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/retriever_registry.py +0 -0
  585. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/similarity.py +0 -0
  586. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/retrievers/step_back.py +0 -0
  587. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/__init__.py +0 -0
  588. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/base.py +0 -0
  589. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/chroma.py +0 -0
  590. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/faiss.py +0 -0
  591. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/pgvector.py +0 -0
  592. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/pinecone.py +0 -0
  593. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/qdrant.py +0 -0
  594. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
  595. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/rag/vectorstores/weaviate.py +0 -0
  596. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/__init__.py +0 -0
  597. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/detector.py +0 -0
  598. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/evaluator.py +0 -0
  599. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/refusal/markers.py +0 -0
  600. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/__init__.py +0 -0
  601. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/agent.py +0 -0
  602. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/budget.py +0 -0
  603. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/events.py +0 -0
  604. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/planner.py +0 -0
  605. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/ranking.py +0 -0
  606. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/report.py +0 -0
  607. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/synthesis.py +0 -0
  608. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/research/tools.py +0 -0
  609. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/__init__.py +0 -0
  610. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/async_driver.py +0 -0
  611. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/backoff.py +0 -0
  612. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/breaker.py +0 -0
  613. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/driver.py +0 -0
  614. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/errors.py +0 -0
  615. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/explain.py +0 -0
  616. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/headroom.py +0 -0
  617. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/keys.py +0 -0
  618. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/router.py +0 -0
  619. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/strategies.py +0 -0
  620. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/resilience/virtual.py +0 -0
  621. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/__init__.py +0 -0
  622. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/generator.py +0 -0
  623. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
  624. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/README.md.j2 +0 -0
  625. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/config.py.j2 +0 -0
  626. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/env.example.j2 +0 -0
  627. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/main.py.j2 +0 -0
  628. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/models.py.j2 +0 -0
  629. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
  630. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/__init__.py +0 -0
  631. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/injection.py +0 -0
  632. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/security/redaction.py +0 -0
  633. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/__init__.py +0 -0
  634. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/core.py +0 -0
  635. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/project.py +0 -0
  636. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/stores.py +0 -0
  637. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/session_memory/types.py +0 -0
  638. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/__init__.py +0 -0
  639. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/SKILL.md +0 -0
  640. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/dev.md +0 -0
  641. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/finance.md +0 -0
  642. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/mcp.md +0 -0
  643. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/media.md +0 -0
  644. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/models.md +0 -0
  645. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/search.md +0 -0
  646. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/skill/data/references/web.md +0 -0
  647. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/__init__.py +0 -0
  648. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/environment.py +0 -0
  649. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/memory.py +0 -0
  650. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/scheduler.py +0 -0
  651. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/swarm.py +0 -0
  652. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/swarm_agent.py +0 -0
  653. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/swarm/types.py +0 -0
  654. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/testing/__init__.py +0 -0
  655. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/testing/driver_contract.py +0 -0
  656. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/__init__.py +0 -0
  657. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/__init__.py +0 -0
  658. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/adapter.py +0 -0
  659. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/builtin.py +0 -0
  660. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/config.py +0 -0
  661. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/cli/health.py +0 -0
  662. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/code_exec.py +0 -0
  663. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/named.py +0 -0
  664. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/packs.py +0 -0
  665. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/__init__.py +0 -0
  666. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_common.py +0 -0
  667. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_mcp_http.py +0 -0
  668. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/_types.py +0 -0
  669. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/cache.py +0 -0
  670. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/fetch.py +0 -0
  671. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/health.py +0 -0
  672. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/html2md.py +0 -0
  673. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/platform.py +0 -0
  674. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/__init__.py +0 -0
  675. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/_media.py +0 -0
  676. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/anilist.py +0 -0
  677. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/arxiv.py +0 -0
  678. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/base.py +0 -0
  679. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/feeds.py +0 -0
  680. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/github.py +0 -0
  681. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/hackernews.py +0 -0
  682. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/podcasts.py +0 -0
  683. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/wikipedia.py +0 -0
  684. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/readers/youtube.py +0 -0
  685. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/search.py +0 -0
  686. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web/toolkit.py +0 -0
  687. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/tools/web_search.py +0 -0
  688. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/__init__.py +0 -0
  689. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/architect.py +0 -0
  690. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/engine.py +0 -0
  691. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/errors.py +0 -0
  692. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/model.py +0 -0
  693. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/nodes.py +0 -0
  694. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/recovery.py +0 -0
  695. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/references.py +0 -0
  696. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/registry.py +0 -0
  697. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/scheduler.py +0 -0
  698. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture/workflow/state.py +0 -0
  699. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/SOURCES.txt +0 -0
  700. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/dependency_links.txt +0 -0
  701. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/entry_points.txt +0 -0
  702. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/requires.txt +0 -0
  703. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/scm_file_list.json +0 -0
  704. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture.egg-info/top_level.txt +0 -0
  705. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/prompture_cost_tracking.md +0 -0
  706. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/pyproject.toml +0 -0
  707. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/requirements.txt +0 -0
  708. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/scripts/check_pricing_freshness.py +0 -0
  709. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/setup.cfg +0 -0
  710. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/basic_extraction.json +0 -0
  711. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/schema_validation.json +0 -0
  712. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/specs/strategy_comparison.json +0 -0
  713. {prompture-1.15.1.dev2 → prompture-1.15.2.dev1}/test.py +0 -0
  714. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.15.1.dev2
3
+ Version: 1.15.2.dev1
4
4
  Summary: Ask LLMs to return structured JSON and run cross-model tests. API-first.
5
5
  Author-email: Juan Denis <juan@vene.co>
6
6
  License-Expression: MIT
@@ -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.1.dev2'
22
- __version_tuple__ = version_tuple = (1, 15, 1, 'dev2')
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, only a
11
- ``search_tools`` / ``load_tools`` pair is sent; the schemas the model loads
12
- stay loaded for the rest of the conversation.
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.loaded: set[str] = set(preload)
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 is_deferring(self, registry: ToolRegistry) -> bool:
233
- if not registry or self.defer is False:
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.loaded.add(name)
243
-
244
- def visible(self, registry: ToolRegistry) -> ToolRegistry:
245
- """The user tools whose schemas go to the model this round."""
246
- if not self.is_deferring(registry):
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
- return registry.subset([n for n in registry.names if n in self.loaded])
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
- self.loaded.update(found)
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
- if self._tool_loader.is_deferring(self._tools):
353
- helpers.extend(self._tool_loader.meta_tools(lambda: self._tools))
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 = self._tool_loader.visible(self._tools)
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.15.1.dev2
3
+ Version: 1.15.2.dev1
4
4
  Summary: Ask LLMs to return structured JSON and run cross-model tests. API-first.
5
5
  Author-email: Juan Denis <juan@vene.co>
6
6
  License-Expression: MIT
@@ -1 +0,0 @@
1
- 1.15.0
File without changes
File without changes
File without changes