prompture 1.16.1.dev1__tar.gz → 1.16.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 (715) hide show
  1. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/PKG-INFO +1 -1
  2. prompture-1.16.2.dev1/VERSION +1 -0
  3. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/_version.py +2 -2
  4. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/agent.py +18 -2
  5. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/async_agent.py +18 -2
  6. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/async_conversation.py +47 -1
  7. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/conversation.py +47 -1
  8. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_openai_compat_stream.py +28 -6
  9. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/async_driver.py +6 -0
  10. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/errors.py +14 -1
  11. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/router.py +22 -0
  12. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/PKG-INFO +1 -1
  13. prompture-1.16.1.dev1/VERSION +0 -1
  14. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-driver/SKILL.md +0 -0
  15. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-driver/references/driver-template.md +0 -0
  16. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-example/SKILL.md +0 -0
  17. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-field/SKILL.md +0 -0
  18. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-persona/SKILL.md +0 -0
  19. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-test/SKILL.md +0 -0
  20. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/add-tool/SKILL.md +0 -0
  21. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/create-pr/SKILL.md +0 -0
  22. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/run-tests/SKILL.md +0 -0
  23. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
  24. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.claude/skills/update-pricing/SKILL.md +0 -0
  25. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.env.copy +0 -0
  26. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.gitattributes +0 -0
  27. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/FUNDING.yml +0 -0
  28. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  29. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
  30. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
  31. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
  32. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/scripts/update_docs_version.py +0 -0
  33. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/scripts/update_wrapper_version.py +0 -0
  34. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/workflows/dev.yml +0 -0
  35. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/workflows/documentation.yml +0 -0
  36. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/workflows/pricing-freshness.yml +0 -0
  37. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/workflows/publish.yml +0 -0
  38. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.github/workflows/security.yml +0 -0
  39. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/.safety-project.ini +0 -0
  40. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/AGENTS.md +0 -0
  41. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/BREAKING_CHANGES.md +0 -0
  42. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/CLAUDE.md +0 -0
  43. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/CONTRIBUTING.md +0 -0
  44. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/LICENSE +0 -0
  45. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/MANIFEST.in +0 -0
  46. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/README.md +0 -0
  47. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/ROADMAP.md +0 -0
  48. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/SECURITY.md +0 -0
  49. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/dev.ps1 +0 -0
  50. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/dev.sh +0 -0
  51. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/llms.txt +0 -0
  52. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/mypy_errors.txt +0 -0
  53. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/README.md +0 -0
  54. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_json/README.md +0 -0
  55. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
  56. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_json/pyproject.toml +0 -0
  57. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_json/test.py +0 -0
  58. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_toon/README.md +0 -0
  59. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
  60. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_toon/pyproject.toml +0 -0
  61. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/packages/llm_to_toon/test.py +0 -0
  62. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/__init__.py +0 -0
  63. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/__main__.py +0 -0
  64. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/_internal/__init__.py +0 -0
  65. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/_internal/json_encoder.py +0 -0
  66. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/__init__.py +0 -0
  67. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/assistant.py +0 -0
  68. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/async_deep_agent.py +0 -0
  69. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep/__init__.py +0 -0
  70. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep/planner.py +0 -0
  71. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep/subagents.py +0 -0
  72. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep/summarizer.py +0 -0
  73. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep/vfs.py +0 -0
  74. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep_agent.py +0 -0
  75. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep_prompts.py +0 -0
  76. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/deep_state.py +0 -0
  77. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/live_events.py +0 -0
  78. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/persona.py +0 -0
  79. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/review_loop.py +0 -0
  80. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/simulated_tools.py +0 -0
  81. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/skill_miner.py +0 -0
  82. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/skills.py +0 -0
  83. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/tool_context.py +0 -0
  84. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/tool_grammars.py +0 -0
  85. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/tools_schema.py +0 -0
  86. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/agents/types.py +0 -0
  87. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/aio/__init__.py +0 -0
  88. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/bridges/__init__.py +0 -0
  89. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/bridges/tukuy_backend.py +0 -0
  90. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/__init__.py +0 -0
  91. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/backends.py +0 -0
  92. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/builtin_checks.py +0 -0
  93. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/challenge.py +0 -0
  94. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/errors.py +0 -0
  95. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/health.py +0 -0
  96. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/http.py +0 -0
  97. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/probe.py +0 -0
  98. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/capabilities/url_safety.py +0 -0
  99. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/checkpoints/__init__.py +0 -0
  100. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/checkpoints/core.py +0 -0
  101. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/checkpoints/stores.py +0 -0
  102. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/checkpoints/types.py +0 -0
  103. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/citations/__init__.py +0 -0
  104. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/citations/core.py +0 -0
  105. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/citations/types.py +0 -0
  106. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/__init__.py +0 -0
  107. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/cli.py +0 -0
  108. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/delegate_cmd.py +0 -0
  109. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/doctor_cmd.py +0 -0
  110. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/formatters.py +0 -0
  111. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/mcp_cmd.py +0 -0
  112. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/research_cmd.py +0 -0
  113. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/runner.py +0 -0
  114. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/server.py +0 -0
  115. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/setup_cmd.py +0 -0
  116. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/skill_cmd.py +0 -0
  117. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/cli/transcribe_cmd.py +0 -0
  118. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/__init__.py +0 -0
  119. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/automations.py +0 -0
  120. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/calls.py +0 -0
  121. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/capacity.py +0 -0
  122. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/coding_tools.py +0 -0
  123. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/hook.py +0 -0
  124. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/live.py +0 -0
  125. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/local.py +0 -0
  126. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/memory.py +0 -0
  127. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/reuse.py +0 -0
  128. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/router.py +0 -0
  129. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/routing_policy.py +0 -0
  130. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/server.py +0 -0
  131. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/summary.py +0 -0
  132. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/companion/tool_routing.py +0 -0
  133. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/__init__.py +0 -0
  134. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/dedup.py +0 -0
  135. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/evol.py +0 -0
  136. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/filters.py +0 -0
  137. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/formats.py +0 -0
  138. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/schemas.py +0 -0
  139. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/seed.py +0 -0
  140. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/dataset/synth.py +0 -0
  141. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/doctor/__init__.py +0 -0
  142. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/doctor/core.py +0 -0
  143. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/doctor/providers.py +0 -0
  144. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/__init__.py +0 -0
  145. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_effort.py +0 -0
  146. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_google_genai.py +0 -0
  147. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_media_usage.py +0 -0
  148. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_ollama_options.py +0 -0
  149. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_openai_compat.py +0 -0
  150. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_openai_responses.py +0 -0
  151. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_prompt_cache.py +0 -0
  152. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_prompted_tool_stream.py +0 -0
  153. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/_usage_reporting.py +0 -0
  154. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/aggregator_base.py +0 -0
  155. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/airllm_driver.py +0 -0
  156. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/assemblyai_stt_driver.py +0 -0
  157. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_aggregator_base.py +0 -0
  158. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_airllm_driver.py +0 -0
  159. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
  160. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_azure_driver.py +0 -0
  161. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_base.py +0 -0
  162. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_bedrock_driver.py +0 -0
  163. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
  164. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_cachibot_driver.py +0 -0
  165. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
  166. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_claude_driver.py +0 -0
  167. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_coding_agent_driver.py +0 -0
  168. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_cohere_driver.py +0 -0
  169. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
  170. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
  171. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
  172. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
  173. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_deepseek_driver.py +0 -0
  174. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
  175. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
  176. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_embedding_base.py +0 -0
  177. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
  178. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
  179. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_google_driver.py +0 -0
  180. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_google_img_gen_driver.py +0 -0
  181. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_google_vertexai_driver.py +0 -0
  182. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_grok_driver.py +0 -0
  183. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
  184. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
  185. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_groq_driver.py +0 -0
  186. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_hugging_driver.py +0 -0
  187. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
  188. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_img_gen_base.py +0 -0
  189. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_jina_embedding_driver.py +0 -0
  190. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_jina_rerank_driver.py +0 -0
  191. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_kev_decision_driver.py +0 -0
  192. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
  193. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
  194. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_laya_decision_driver.py +0 -0
  195. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_lmstudio_driver.py +0 -0
  196. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_local_http_driver.py +0 -0
  197. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
  198. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_minimax_driver.py +0 -0
  199. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
  200. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_mistral_driver.py +0 -0
  201. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
  202. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_modelscope_driver.py +0 -0
  203. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_moonshot_driver.py +0 -0
  204. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_muapi_aggregator_driver.py +0 -0
  205. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
  206. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
  207. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
  208. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_ollama_driver.py +0 -0
  209. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
  210. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_compatible_driver.py +0 -0
  211. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_driver.py +0 -0
  212. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_embedding_driver.py +0 -0
  213. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
  214. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_moderation_driver.py +0 -0
  215. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_stt_driver.py +0 -0
  216. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openai_tts_driver.py +0 -0
  217. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_openrouter_driver.py +0 -0
  218. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
  219. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_registry.py +0 -0
  220. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
  221. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_runway_tts_driver.py +0 -0
  222. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
  223. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
  224. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_stt_base.py +0 -0
  225. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_systemone_compatible_driver.py +0 -0
  226. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_tts_base.py +0 -0
  227. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_typesafe_decision_driver.py +0 -0
  228. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_video_gen_base.py +0 -0
  229. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
  230. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
  231. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/async_zai_driver.py +0 -0
  232. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/audio_registry.py +0 -0
  233. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/azure_config.py +0 -0
  234. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/azure_driver.py +0 -0
  235. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/base.py +0 -0
  236. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/bedrock_driver.py +0 -0
  237. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/bfl_img_gen_driver.py +0 -0
  238. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/cachibot_driver.py +0 -0
  239. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/cartesia_tts_driver.py +0 -0
  240. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/claude_driver.py +0 -0
  241. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/coding_agent_driver.py +0 -0
  242. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/cohere_driver.py +0 -0
  243. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/cohere_embedding_driver.py +0 -0
  244. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/cohere_rerank_driver.py +0 -0
  245. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/decision_base.py +0 -0
  246. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/decision_registry.py +0 -0
  247. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/deepgram_stt_driver.py +0 -0
  248. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/deepgram_tts_driver.py +0 -0
  249. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/deepseek_driver.py +0 -0
  250. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/driver_registry.py +0 -0
  251. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
  252. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
  253. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/embedding_base.py +0 -0
  254. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/embedding_registry.py +0 -0
  255. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/fal_img_gen_driver.py +0 -0
  256. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/fal_video_gen_driver.py +0 -0
  257. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/google_driver.py +0 -0
  258. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/google_img_gen_driver.py +0 -0
  259. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/google_vertexai_driver.py +0 -0
  260. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/grok_driver.py +0 -0
  261. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/grok_img_gen_driver.py +0 -0
  262. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/grok_video_gen_driver.py +0 -0
  263. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/groq_driver.py +0 -0
  264. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/hugging_driver.py +0 -0
  265. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
  266. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/img_gen_base.py +0 -0
  267. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/img_gen_registry.py +0 -0
  268. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/jina_embedding_driver.py +0 -0
  269. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/jina_rerank_driver.py +0 -0
  270. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/job_runner.py +0 -0
  271. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/kev_decision_driver.py +0 -0
  272. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/kling_img_gen_driver.py +0 -0
  273. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/kling_video_gen_driver.py +0 -0
  274. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/laya_decision_driver.py +0 -0
  275. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/lipsync_base.py +0 -0
  276. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/lipsync_registry.py +0 -0
  277. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/lmstudio_driver.py +0 -0
  278. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/local_http_driver.py +0 -0
  279. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/luma_video_gen_driver.py +0 -0
  280. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/media_capabilities.py +0 -0
  281. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/minimax_driver.py +0 -0
  282. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/minimax_video_gen_driver.py +0 -0
  283. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/mistral_driver.py +0 -0
  284. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/mistral_moderation_driver.py +0 -0
  285. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/modelscope_driver.py +0 -0
  286. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/moderation_base.py +0 -0
  287. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/moderation_registry.py +0 -0
  288. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/moonshot_driver.py +0 -0
  289. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/muapi_aggregator_driver.py +0 -0
  290. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/music_base.py +0 -0
  291. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/music_registry.py +0 -0
  292. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/mxbai_embedding_driver.py +0 -0
  293. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/mxbai_rerank_driver.py +0 -0
  294. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/nomic_embedding_driver.py +0 -0
  295. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/ollama_driver.py +0 -0
  296. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/ollama_embedding_driver.py +0 -0
  297. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_compatible_driver.py +0 -0
  298. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_driver.py +0 -0
  299. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_embedding_driver.py +0 -0
  300. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_img_gen_driver.py +0 -0
  301. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_moderation_driver.py +0 -0
  302. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_stt_driver.py +0 -0
  303. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openai_tts_driver.py +0 -0
  304. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/openrouter_driver.py +0 -0
  305. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/pika_video_gen_driver.py +0 -0
  306. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/provider_branding.py +0 -0
  307. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/provider_descriptors.py +0 -0
  308. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/registry.py +0 -0
  309. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/rerank_base.py +0 -0
  310. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/rerank_registry.py +0 -0
  311. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/runway_audio_transform_driver.py +0 -0
  312. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/runway_capabilities.py +0 -0
  313. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/runway_img_gen_driver.py +0 -0
  314. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/runway_tts_driver.py +0 -0
  315. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/runway_video_gen_driver.py +0 -0
  316. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/stability_img_gen_driver.py +0 -0
  317. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/stt_base.py +0 -0
  318. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/systemone_compatible_driver.py +0 -0
  319. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/tts_base.py +0 -0
  320. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/typesafe_decision_driver.py +0 -0
  321. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/vertex_img_gen_driver.py +0 -0
  322. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/video_gen_base.py +0 -0
  323. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/video_gen_registry.py +0 -0
  324. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/vision_helpers.py +0 -0
  325. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/voyage_embedding_driver.py +0 -0
  326. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/voyage_rerank_driver.py +0 -0
  327. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/drivers/zai_driver.py +0 -0
  328. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/__init__.py +0 -0
  329. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/base.py +0 -0
  330. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/faithfulness.py +0 -0
  331. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/judge.py +0 -0
  332. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/pairwise.py +0 -0
  333. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/eval/self_consistency.py +0 -0
  334. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/exceptions.py +0 -0
  335. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/__init__.py +0 -0
  336. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/context.py +0 -0
  337. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/context_eval.py +0 -0
  338. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/data/document_qa_policies.json +0 -0
  339. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/data/extraction_contacts.json +0 -0
  340. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/data/tool_task_inventory.json +0 -0
  341. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/fixtures.py +0 -0
  342. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/gates.py +0 -0
  343. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/harness.py +0 -0
  344. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/__init__.py +0 -0
  345. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/candidates.py +0 -0
  346. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/feedback.py +0 -0
  347. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/optimizer.py +0 -0
  348. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/promotion.py +0 -0
  349. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/improve/scorecard.py +0 -0
  350. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/integration.py +0 -0
  351. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/outcomes.py +0 -0
  352. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/policy.py +0 -0
  353. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/sandbox.py +0 -0
  354. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/scoring.py +0 -0
  355. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/__init__.py +0 -0
  356. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/base.py +0 -0
  357. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/critique.py +0 -0
  358. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/direct.py +0 -0
  359. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/registry.py +0 -0
  360. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/strategies/retrieve.py +0 -0
  361. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/execution/types.py +0 -0
  362. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/__init__.py +0 -0
  363. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/_usage.py +0 -0
  364. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/async_core.py +0 -0
  365. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/code_extraction.py +0 -0
  366. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/core.py +0 -0
  367. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/few_shot.py +0 -0
  368. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/fields.py +0 -0
  369. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/reasoning.py +0 -0
  370. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/strategy.py +0 -0
  371. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/streaming.py +0 -0
  372. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/tools.py +0 -0
  373. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/tukuy_bridge.py +0 -0
  374. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/extraction/validator.py +0 -0
  375. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/__init__.py +0 -0
  376. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/base.py +0 -0
  377. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/__init__.py +0 -0
  378. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/exchange.py +0 -0
  379. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/fixtures.py +0 -0
  380. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/harness.py +0 -0
  381. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/motifs.py +0 -0
  382. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/puzzles.py +0 -0
  383. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/chess/render.py +0 -0
  384. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/connect4.py +0 -0
  385. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/control.py +0 -0
  386. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/evaluation.py +0 -0
  387. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/fixtures.py +0 -0
  388. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/match.py +0 -0
  389. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/memory.py +0 -0
  390. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/othello.py +0 -0
  391. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/records.py +0 -0
  392. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/strategies.py +0 -0
  393. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/tournament.py +0 -0
  394. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/games/trace.py +0 -0
  395. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/__init__.py +0 -0
  396. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/anthropic_format.py +0 -0
  397. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/gemini_format.py +0 -0
  398. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/openai_format.py +0 -0
  399. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/reasoning_cache.py +0 -0
  400. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/gateway/responses_format.py +0 -0
  401. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/__init__.py +0 -0
  402. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/async_groups.py +0 -0
  403. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/consensus.py +0 -0
  404. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/debate.py +0 -0
  405. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/fusion.py +0 -0
  406. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/groups.py +0 -0
  407. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/groups/types.py +0 -0
  408. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/imaging/__init__.py +0 -0
  409. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/imaging/enhance.py +0 -0
  410. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/imaging/negative.py +0 -0
  411. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/imaging/set_planner.py +0 -0
  412. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/imaging/style_presets.py +0 -0
  413. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/__init__.py +0 -0
  414. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/accounts.py +0 -0
  415. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/billing.py +0 -0
  416. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/budget.py +0 -0
  417. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/cache.py +0 -0
  418. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/callbacks.py +0 -0
  419. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/capabilities.py +0 -0
  420. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_activity.py +0 -0
  421. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_events.py +0 -0
  422. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_failures.py +0 -0
  423. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_readers.py +0 -0
  424. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_specs.py +0 -0
  425. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agent_usage.py +0 -0
  426. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/coding_agents.py +0 -0
  427. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/compression.py +0 -0
  428. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/cost_mixin.py +0 -0
  429. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/credentials.py +0 -0
  430. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/discovery.py +0 -0
  431. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/environment.py +0 -0
  432. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/ledger.py +0 -0
  433. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/local_servers.py +0 -0
  434. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/logging.py +0 -0
  435. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/media_pricing.py +0 -0
  436. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/media_rates.json +0 -0
  437. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/model_rates.py +0 -0
  438. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/otel.py +0 -0
  439. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/pricing.py +0 -0
  440. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/provider_env.py +0 -0
  441. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/provider_keys.py +0 -0
  442. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rate_limits.py +0 -0
  443. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/anthropic.json +0 -0
  444. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/azure.json +0 -0
  445. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/bedrock.json +0 -0
  446. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/cerebras.json +0 -0
  447. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/cohere.json +0 -0
  448. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/deepinfra.json +0 -0
  449. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/deepseek.json +0 -0
  450. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/fireworks.json +0 -0
  451. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/google.json +0 -0
  452. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/google_vertexai.json +0 -0
  453. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/groq.json +0 -0
  454. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/jina.json +0 -0
  455. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/kev.json +0 -0
  456. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/laya.json +0 -0
  457. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/mistral.json +0 -0
  458. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/mixedbread.json +0 -0
  459. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/moonshot.json +0 -0
  460. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/nomic.json +0 -0
  461. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/nvidia.json +0 -0
  462. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/openai.json +0 -0
  463. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/openrouter.json +0 -0
  464. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/perplexity.json +0 -0
  465. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/sambanova.json +0 -0
  466. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/siliconflow.json +0 -0
  467. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/together.json +0 -0
  468. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/typesafe.json +0 -0
  469. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/voyage.json +0 -0
  470. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/rates/xai.json +0 -0
  471. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/session.py +0 -0
  472. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/settings.py +0 -0
  473. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/token_counting.py +0 -0
  474. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/tracker.py +0 -0
  475. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/tukuy_backend.py +0 -0
  476. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/infra/updates.py +0 -0
  477. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/__init__.py +0 -0
  478. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/chunking.py +0 -0
  479. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/detect.py +0 -0
  480. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/document.py +0 -0
  481. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/__init__.py +0 -0
  482. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/base.py +0 -0
  483. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/csv_parser.py +0 -0
  484. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/docx.py +0 -0
  485. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/html.py +0 -0
  486. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/markdown.py +0 -0
  487. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/pdf.py +0 -0
  488. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/ingestion/parsers/xlsx.py +0 -0
  489. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/integrations/__init__.py +0 -0
  490. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/integrations/mcp_bridge.py +0 -0
  491. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/integrations/tukuy_bridge.py +0 -0
  492. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/jobs.py +0 -0
  493. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/kg/__init__.py +0 -0
  494. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/kg/core.py +0 -0
  495. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/kg/stores.py +0 -0
  496. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/kg/types.py +0 -0
  497. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/marketing/__init__.py +0 -0
  498. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/marketing/claims.py +0 -0
  499. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/marketing/context.py +0 -0
  500. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/marketing/generate.py +0 -0
  501. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/marketing/models.py +0 -0
  502. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/__init__.py +0 -0
  503. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/client.py +0 -0
  504. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/health.py +0 -0
  505. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/hub.py +0 -0
  506. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/importers.py +0 -0
  507. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/server.py +0 -0
  508. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/mcp/tools.py +0 -0
  509. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/__init__.py +0 -0
  510. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/agent_tools.py +0 -0
  511. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/audio.py +0 -0
  512. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/hosting.py +0 -0
  513. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/image.py +0 -0
  514. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/__init__.py +0 -0
  515. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/errors.py +0 -0
  516. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/ffmpeg.py +0 -0
  517. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/groq_stt.py +0 -0
  518. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/health.py +0 -0
  519. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/sources.py +0 -0
  520. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/summarize.py +0 -0
  521. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/tools.py +0 -0
  522. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/understand/transcribe.py +0 -0
  523. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/media/video.py +0 -0
  524. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/01-why-prompture.md +0 -0
  525. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/02-installation.md +0 -0
  526. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/03-quickstart.md +0 -0
  527. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/04-toon-input.md +0 -0
  528. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/05-test-harness.md +0 -0
  529. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/06-stability.md +0 -0
  530. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pages/07-migration.md +0 -0
  531. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/persistence/__init__.py +0 -0
  532. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/persistence/history.py +0 -0
  533. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/persistence/serialization.py +0 -0
  534. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/persistence/store.py +0 -0
  535. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pipeline/__init__.py +0 -0
  536. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pipeline/pipeline.py +0 -0
  537. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pipeline/resolver.py +0 -0
  538. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/pipeline/routing.py +0 -0
  539. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/__init__.py +0 -0
  540. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/base.py +0 -0
  541. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/__init__.py +0 -0
  542. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/_aliases.py +0 -0
  543. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
  544. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/audio_plugin.py +0 -0
  545. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/cloud_plugin.py +0 -0
  546. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/coding_agent_plugin.py +0 -0
  547. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/decision_plugin.py +0 -0
  548. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
  549. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/extras_plugin.py +0 -0
  550. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/google_plugin.py +0 -0
  551. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/image_plugin.py +0 -0
  552. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/local_plugin.py +0 -0
  553. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
  554. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/openai_plugin.py +0 -0
  555. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/builtins/video_plugin.py +0 -0
  556. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/plugins/discovery.py +0 -0
  557. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/py.typed +0 -0
  558. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/__init__.py +0 -0
  559. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/__init__.py +0 -0
  560. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/base.py +0 -0
  561. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/character.py +0 -0
  562. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/chunker_registry.py +0 -0
  563. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/contextual.py +0 -0
  564. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/markdown.py +0 -0
  565. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/recursive.py +0 -0
  566. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/semantic.py +0 -0
  567. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/chunkers/token.py +0 -0
  568. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/documents.py +0 -0
  569. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loader_registry.py +0 -0
  570. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/__init__.py +0 -0
  571. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/csv_loader.py +0 -0
  572. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/docx_loader.py +0 -0
  573. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/epub_loader.py +0 -0
  574. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/html_loader.py +0 -0
  575. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/json_loader.py +0 -0
  576. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/markdown_loader.py +0 -0
  577. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/pdf_loader.py +0 -0
  578. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/text_loader.py +0 -0
  579. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/loaders/xlsx_loader.py +0 -0
  580. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/pipeline.py +0 -0
  581. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/__init__.py +0 -0
  582. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/_fusion.py +0 -0
  583. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/base.py +0 -0
  584. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/hybrid.py +0 -0
  585. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/hyde.py +0 -0
  586. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/mmr.py +0 -0
  587. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/multi_query.py +0 -0
  588. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/retriever_registry.py +0 -0
  589. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/similarity.py +0 -0
  590. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/retrievers/step_back.py +0 -0
  591. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/__init__.py +0 -0
  592. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/base.py +0 -0
  593. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/chroma.py +0 -0
  594. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/faiss.py +0 -0
  595. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/pgvector.py +0 -0
  596. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/pinecone.py +0 -0
  597. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/qdrant.py +0 -0
  598. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
  599. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/rag/vectorstores/weaviate.py +0 -0
  600. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/refusal/__init__.py +0 -0
  601. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/refusal/detector.py +0 -0
  602. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/refusal/evaluator.py +0 -0
  603. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/refusal/markers.py +0 -0
  604. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/__init__.py +0 -0
  605. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/agent.py +0 -0
  606. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/budget.py +0 -0
  607. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/events.py +0 -0
  608. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/planner.py +0 -0
  609. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/ranking.py +0 -0
  610. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/report.py +0 -0
  611. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/synthesis.py +0 -0
  612. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/research/tools.py +0 -0
  613. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/__init__.py +0 -0
  614. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/backoff.py +0 -0
  615. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/breaker.py +0 -0
  616. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/driver.py +0 -0
  617. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/explain.py +0 -0
  618. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/headroom.py +0 -0
  619. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/keys.py +0 -0
  620. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/strategies.py +0 -0
  621. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/resilience/virtual.py +0 -0
  622. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/__init__.py +0 -0
  623. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/generator.py +0 -0
  624. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
  625. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/README.md.j2 +0 -0
  626. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/config.py.j2 +0 -0
  627. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/env.example.j2 +0 -0
  628. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/main.py.j2 +0 -0
  629. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/models.py.j2 +0 -0
  630. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
  631. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/security/__init__.py +0 -0
  632. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/security/injection.py +0 -0
  633. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/security/redaction.py +0 -0
  634. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/session_memory/__init__.py +0 -0
  635. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/session_memory/core.py +0 -0
  636. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/session_memory/project.py +0 -0
  637. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/session_memory/stores.py +0 -0
  638. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/session_memory/types.py +0 -0
  639. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/__init__.py +0 -0
  640. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/SKILL.md +0 -0
  641. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/dev.md +0 -0
  642. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/finance.md +0 -0
  643. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/mcp.md +0 -0
  644. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/media.md +0 -0
  645. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/models.md +0 -0
  646. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/search.md +0 -0
  647. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/skill/data/references/web.md +0 -0
  648. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/__init__.py +0 -0
  649. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/environment.py +0 -0
  650. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/memory.py +0 -0
  651. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/scheduler.py +0 -0
  652. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/swarm.py +0 -0
  653. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/swarm_agent.py +0 -0
  654. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/swarm/types.py +0 -0
  655. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/testing/__init__.py +0 -0
  656. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/testing/driver_contract.py +0 -0
  657. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/__init__.py +0 -0
  658. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/cli/__init__.py +0 -0
  659. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/cli/adapter.py +0 -0
  660. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/cli/builtin.py +0 -0
  661. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/cli/config.py +0 -0
  662. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/cli/health.py +0 -0
  663. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/code_exec.py +0 -0
  664. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/named.py +0 -0
  665. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/packs.py +0 -0
  666. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/__init__.py +0 -0
  667. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/_common.py +0 -0
  668. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/_mcp_http.py +0 -0
  669. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/_types.py +0 -0
  670. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/cache.py +0 -0
  671. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/fetch.py +0 -0
  672. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/health.py +0 -0
  673. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/html2md.py +0 -0
  674. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/platform.py +0 -0
  675. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/__init__.py +0 -0
  676. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/_media.py +0 -0
  677. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/anilist.py +0 -0
  678. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/arxiv.py +0 -0
  679. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/base.py +0 -0
  680. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/feeds.py +0 -0
  681. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/github.py +0 -0
  682. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/hackernews.py +0 -0
  683. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/podcasts.py +0 -0
  684. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/wikipedia.py +0 -0
  685. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/readers/youtube.py +0 -0
  686. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/search.py +0 -0
  687. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web/toolkit.py +0 -0
  688. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/tools/web_search.py +0 -0
  689. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/__init__.py +0 -0
  690. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/architect.py +0 -0
  691. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/engine.py +0 -0
  692. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/errors.py +0 -0
  693. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/model.py +0 -0
  694. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/nodes.py +0 -0
  695. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/recovery.py +0 -0
  696. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/references.py +0 -0
  697. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/registry.py +0 -0
  698. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/scheduler.py +0 -0
  699. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture/workflow/state.py +0 -0
  700. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/SOURCES.txt +0 -0
  701. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/dependency_links.txt +0 -0
  702. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/entry_points.txt +0 -0
  703. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/requires.txt +0 -0
  704. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/scm_file_list.json +0 -0
  705. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture.egg-info/top_level.txt +0 -0
  706. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/prompture_cost_tracking.md +0 -0
  707. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/pyproject.toml +0 -0
  708. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/requirements.txt +0 -0
  709. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/scripts/check_pricing_freshness.py +0 -0
  710. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/setup.cfg +0 -0
  711. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/specs/basic_extraction.json +0 -0
  712. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/specs/schema_validation.json +0 -0
  713. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/specs/strategy_comparison.json +0 -0
  714. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/test.py +0 -0
  715. {prompture-1.16.1.dev1 → prompture-1.16.2.dev1}/test_version_diagnosis.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.16.1.dev1
3
+ Version: 1.16.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.16.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.16.1.dev1'
22
- __version_tuple__ = version_tuple = (1, 16, 1, 'dev1')
21
+ __version__ = version = '1.16.2.dev1'
22
+ __version_tuple__ = version_tuple = (1, 16, 2, 'dev1')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -368,6 +368,7 @@ class Agent(Generic[DepsType]):
368
368
 
369
369
  self._lifecycle = AgentState.idle
370
370
  self._stop_requested = False
371
+ self._stop_final_answer = True
371
372
 
372
373
  # ------------------------------------------------------------------
373
374
  # Public API
@@ -394,7 +395,7 @@ class Agent(Generic[DepsType]):
394
395
  """Current lifecycle state of the agent."""
395
396
  return self._lifecycle
396
397
 
397
- def stop(self) -> None:
398
+ def stop(self, *, final_answer: bool = True) -> None:
398
399
  """Request graceful shutdown after the current iteration.
399
400
 
400
401
  Sets the agent-level flag and forwards the request to the
@@ -405,11 +406,26 @@ class Agent(Generic[DepsType]):
405
406
  of the run, so the flag is never merely decorative.
406
407
 
407
408
  Safe to call from a tool, a callback, or another thread.
409
+
410
+ Args:
411
+ final_answer: With ``False`` the run ends right after the current
412
+ tool round, with no further model call. For a tool that hands
413
+ the turn back to a person (a question, a form, an approval):
414
+ the default would ask the model for one more answer, written
415
+ without the person's reply.
408
416
  """
409
417
  self._stop_requested = True
418
+ self._stop_final_answer = final_answer
410
419
  conv = self._active_conversation or self._conversation
411
420
  if conv is not None:
421
+ self._forward_stop(conv)
422
+
423
+ def _forward_stop(self, conv: Any) -> None:
424
+ """Pass a pending stop on to *conv*, keeping ``final_answer=False``."""
425
+ if self._stop_final_answer:
412
426
  conv.request_stop()
427
+ else:
428
+ conv.request_stop(final_answer=False)
413
429
 
414
430
  @property
415
431
  def callbacks(self) -> AgentCallbacks:
@@ -1045,7 +1061,7 @@ class Agent(Generic[DepsType]):
1045
1061
  """
1046
1062
  self._active_conversation = conv
1047
1063
  if self._stop_requested:
1048
- conv.request_stop()
1064
+ self._forward_stop(conv)
1049
1065
  return conv
1050
1066
 
1051
1067
  def _execute(self, prompt: str, steps: list[AgentStep], deps: Any) -> AgentResult:
@@ -305,6 +305,7 @@ class AsyncAgent(Generic[DepsType]):
305
305
 
306
306
  self._lifecycle = AgentState.idle
307
307
  self._stop_requested = False
308
+ self._stop_final_answer = True
308
309
 
309
310
  # ------------------------------------------------------------------
310
311
  # Public API
@@ -328,7 +329,7 @@ class AsyncAgent(Generic[DepsType]):
328
329
  """Current lifecycle state of the agent."""
329
330
  return self._lifecycle
330
331
 
331
- def stop(self) -> None:
332
+ def stop(self, *, final_answer: bool = True) -> None:
332
333
  """Request graceful shutdown after the current iteration.
333
334
 
334
335
  Sets the agent-level flag and forwards the request to the conversation
@@ -339,11 +340,26 @@ class AsyncAgent(Generic[DepsType]):
339
340
  the flag is never merely decorative.
340
341
 
341
342
  Safe to call from a tool, a callback, or another thread.
343
+
344
+ Args:
345
+ final_answer: With ``False`` the run ends right after the current
346
+ tool round, with no further model call. For a tool that hands
347
+ the turn back to a person (a question, a form, an approval):
348
+ the default would ask the model for one more answer, written
349
+ without the person's reply.
342
350
  """
343
351
  self._stop_requested = True
352
+ self._stop_final_answer = final_answer
344
353
  conv = self._active_conversation or self._conversation
345
354
  if conv is not None:
355
+ self._forward_stop(conv)
356
+
357
+ def _forward_stop(self, conv: Any) -> None:
358
+ """Pass a pending stop on to *conv*, keeping ``final_answer=False``."""
359
+ if self._stop_final_answer:
346
360
  conv.request_stop()
361
+ else:
362
+ conv.request_stop(final_answer=False)
347
363
 
348
364
  @property
349
365
  def callbacks(self) -> AgentCallbacks:
@@ -1073,7 +1089,7 @@ class AsyncAgent(Generic[DepsType]):
1073
1089
  """
1074
1090
  self._active_conversation = conv
1075
1091
  if self._stop_requested:
1076
- conv.request_stop()
1092
+ self._forward_stop(conv)
1077
1093
  return conv
1078
1094
 
1079
1095
  async def _execute(
@@ -146,6 +146,7 @@ class AsyncConversation(ToolContextMixin):
146
146
 
147
147
  # Cooperative stop (C2) and graceful max-rounds (C4) state.
148
148
  self._stop_requested = False
149
+ self._stop_final_answer = True
149
150
  self._max_rounds_reached = False
150
151
 
151
152
  # Budget enforcement
@@ -231,13 +232,37 @@ class AsyncConversation(ToolContextMixin):
231
232
  self._full_tool_results.clear()
232
233
  self._reset_tool_context()
233
234
 
234
- def request_stop(self) -> None:
235
+ def request_stop(self, *, final_answer: bool = True) -> None:
235
236
  """Request a cooperative stop of the tool loop.
236
237
 
237
238
  The loop checks the flag between rounds; when set, it finishes
238
239
  with one final no-tools answer instead of executing more tools.
240
+
241
+ Args:
242
+ final_answer: With ``False`` the turn ends right after the
243
+ current round, with no further model call: the reply is
244
+ the text the model wrote alongside its last tool calls.
245
+ For a tool that hands the turn back to a person (a
246
+ question, a form, an approval) and must not be followed
247
+ by an answer written without them.
239
248
  """
240
249
  self._stop_requested = True
250
+ self._stop_final_answer = final_answer
251
+
252
+ def _text_on_stop(self) -> str:
253
+ """The reply of a turn stopped with ``final_answer=False``.
254
+
255
+ The text of the last assistant message when it carried native tool
256
+ calls, else ``""`` (a simulated-tools round holds only the call).
257
+ """
258
+ for msg in reversed(self._messages):
259
+ if msg.get("role") != "assistant":
260
+ continue
261
+ content = msg.get("content")
262
+ if msg.get("tool_calls") and isinstance(content, str):
263
+ return content
264
+ return ""
265
+ return ""
241
266
 
242
267
  @property
243
268
  def max_rounds_reached(self) -> bool:
@@ -673,6 +698,7 @@ class AsyncConversation(ToolContextMixin):
673
698
  ) -> str:
674
699
  """Async tool-use loop: send -> check tool_calls -> execute -> re-send."""
675
700
  self._stop_requested = False
701
+ self._stop_final_answer = True
676
702
  self._max_rounds_reached = False
677
703
  merged = {**self._options, **(options or {})}
678
704
 
@@ -682,6 +708,9 @@ class AsyncConversation(ToolContextMixin):
682
708
 
683
709
  for _round in range(self._max_tool_rounds):
684
710
  if self._stop_requested:
711
+ if not self._stop_final_answer:
712
+ logger.info("Stop requested; ending the turn without a final answer")
713
+ return self._text_on_stop()
685
714
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
686
715
  return await self._final_answer_without_tools(msgs, merged)
687
716
  self._check_budget()
@@ -776,6 +805,7 @@ class AsyncConversation(ToolContextMixin):
776
805
 
777
806
  # Native tool calling with event emission
778
807
  self._stop_requested = False
808
+ self._stop_final_answer = True
779
809
  self._max_rounds_reached = False
780
810
  merged = {**self._options, **(options or {})}
781
811
 
@@ -785,6 +815,9 @@ class AsyncConversation(ToolContextMixin):
785
815
 
786
816
  for _round in range(self._max_tool_rounds):
787
817
  if self._stop_requested:
818
+ if not self._stop_final_answer:
819
+ logger.info("Stop requested; ending the turn without a final answer")
820
+ return
788
821
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
789
822
  final_text = await self._final_answer_without_tools(msgs, merged)
790
823
  yield {"type": "text_delta", "text": final_text}
@@ -926,6 +959,7 @@ class AsyncConversation(ToolContextMixin):
926
959
  return
927
960
 
928
961
  self._stop_requested = False
962
+ self._stop_final_answer = True
929
963
  self._max_rounds_reached = False
930
964
  merged = {**self._options, **(options or {})}
931
965
 
@@ -935,6 +969,10 @@ class AsyncConversation(ToolContextMixin):
935
969
 
936
970
  for round_idx in range(self._max_tool_rounds):
937
971
  if self._stop_requested:
972
+ if not self._stop_final_answer:
973
+ logger.info("Stop requested; ending the turn without a final answer")
974
+ yield TurnComplete(usage=dict(self._usage))
975
+ return
938
976
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
939
977
  final_text = await self._final_answer_without_tools(msgs, merged)
940
978
  yield TextDelta(text=final_text)
@@ -1078,6 +1116,7 @@ class AsyncConversation(ToolContextMixin):
1078
1116
  from .simulated_tools import format_tool_result, parse_simulated_response
1079
1117
 
1080
1118
  self._stop_requested = False
1119
+ self._stop_final_answer = True
1081
1120
  self._max_rounds_reached = False
1082
1121
  merged = {**self._options, **(options or {})}
1083
1122
  augmented_system = self._simulated_system_prompt()
@@ -1087,6 +1126,9 @@ class AsyncConversation(ToolContextMixin):
1087
1126
 
1088
1127
  for _round in range(self._max_tool_rounds):
1089
1128
  if self._stop_requested:
1129
+ if not self._stop_final_answer:
1130
+ logger.info("Stop requested; ending the turn without a final answer")
1131
+ return
1090
1132
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
1091
1133
  answer = await self._final_answer_simulated(augmented_system, merged)
1092
1134
  yield {"type": "text_delta", "text": answer}
@@ -1160,6 +1202,7 @@ class AsyncConversation(ToolContextMixin):
1160
1202
  from .simulated_tools import format_tool_result, parse_simulated_response
1161
1203
 
1162
1204
  self._stop_requested = False
1205
+ self._stop_final_answer = True
1163
1206
  self._max_rounds_reached = False
1164
1207
  merged = {**self._options, **(options or {})}
1165
1208
  augmented_system = self._simulated_system_prompt()
@@ -1170,6 +1213,9 @@ class AsyncConversation(ToolContextMixin):
1170
1213
 
1171
1214
  for _round in range(self._max_tool_rounds):
1172
1215
  if self._stop_requested:
1216
+ if not self._stop_final_answer:
1217
+ logger.info("Stop requested; ending the turn without a final answer")
1218
+ return self._text_on_stop()
1173
1219
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
1174
1220
  return await self._final_answer_simulated(augmented_system, merged)
1175
1221
  self._check_budget()
@@ -148,6 +148,7 @@ class Conversation(ToolContextMixin):
148
148
 
149
149
  # Cooperative stop (C2) and graceful max-rounds (C4) state.
150
150
  self._stop_requested = False
151
+ self._stop_final_answer = True
151
152
  self._max_rounds_reached = False
152
153
 
153
154
  # Budget enforcement
@@ -233,13 +234,37 @@ class Conversation(ToolContextMixin):
233
234
  self._full_tool_results.clear()
234
235
  self._reset_tool_context()
235
236
 
236
- def request_stop(self) -> None:
237
+ def request_stop(self, *, final_answer: bool = True) -> None:
237
238
  """Request a cooperative stop of the tool loop.
238
239
 
239
240
  The loop checks the flag between rounds; when set, it finishes
240
241
  with one final no-tools answer instead of executing more tools.
242
+
243
+ Args:
244
+ final_answer: With ``False`` the turn ends right after the
245
+ current round, with no further model call: the reply is
246
+ the text the model wrote alongside its last tool calls.
247
+ For a tool that hands the turn back to a person (a
248
+ question, a form, an approval) and must not be followed
249
+ by an answer written without them.
241
250
  """
242
251
  self._stop_requested = True
252
+ self._stop_final_answer = final_answer
253
+
254
+ def _text_on_stop(self) -> str:
255
+ """The reply of a turn stopped with ``final_answer=False``.
256
+
257
+ The text of the last assistant message when it carried native tool
258
+ calls, else ``""`` (a simulated-tools round holds only the call).
259
+ """
260
+ for msg in reversed(self._messages):
261
+ if msg.get("role") != "assistant":
262
+ continue
263
+ content = msg.get("content")
264
+ if msg.get("tool_calls") and isinstance(content, str):
265
+ return content
266
+ return ""
267
+ return ""
243
268
 
244
269
  @property
245
270
  def max_rounds_reached(self) -> bool:
@@ -687,6 +712,7 @@ class Conversation(ToolContextMixin):
687
712
  ) -> str:
688
713
  """Execute the tool-use loop: send -> check tool_calls -> execute -> re-send."""
689
714
  self._stop_requested = False
715
+ self._stop_final_answer = True
690
716
  self._max_rounds_reached = False
691
717
  merged = {**self._options, **(options or {})}
692
718
 
@@ -697,6 +723,9 @@ class Conversation(ToolContextMixin):
697
723
 
698
724
  for _round in range(self._max_tool_rounds):
699
725
  if self._stop_requested:
726
+ if not self._stop_final_answer:
727
+ logger.info("Stop requested; ending the turn without a final answer")
728
+ return self._text_on_stop()
700
729
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
701
730
  return self._final_answer_without_tools(msgs, merged)
702
731
  self._check_budget()
@@ -801,6 +830,7 @@ class Conversation(ToolContextMixin):
801
830
 
802
831
  # Native tool calling with event emission
803
832
  self._stop_requested = False
833
+ self._stop_final_answer = True
804
834
  self._max_rounds_reached = False
805
835
  merged = {**self._options, **(options or {})}
806
836
 
@@ -810,6 +840,9 @@ class Conversation(ToolContextMixin):
810
840
 
811
841
  for _round in range(self._max_tool_rounds):
812
842
  if self._stop_requested:
843
+ if not self._stop_final_answer:
844
+ logger.info("Stop requested; ending the turn without a final answer")
845
+ return
813
846
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
814
847
  final_text = self._final_answer_without_tools(msgs, merged)
815
848
  yield {"type": "text_delta", "text": final_text}
@@ -966,6 +999,7 @@ class Conversation(ToolContextMixin):
966
999
  return
967
1000
 
968
1001
  self._stop_requested = False
1002
+ self._stop_final_answer = True
969
1003
  self._max_rounds_reached = False
970
1004
  merged = {**self._options, **(options or {})}
971
1005
 
@@ -975,6 +1009,10 @@ class Conversation(ToolContextMixin):
975
1009
 
976
1010
  for round_idx in range(self._max_tool_rounds):
977
1011
  if self._stop_requested:
1012
+ if not self._stop_final_answer:
1013
+ logger.info("Stop requested; ending the turn without a final answer")
1014
+ yield TurnComplete(usage=dict(self._usage))
1015
+ return
978
1016
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
979
1017
  final_text = self._final_answer_without_tools(msgs, merged)
980
1018
  yield TextDelta(text=final_text)
@@ -1124,6 +1162,7 @@ class Conversation(ToolContextMixin):
1124
1162
  from .simulated_tools import format_tool_result, parse_simulated_response
1125
1163
 
1126
1164
  self._stop_requested = False
1165
+ self._stop_final_answer = True
1127
1166
  self._max_rounds_reached = False
1128
1167
  merged = {**self._options, **(options or {})}
1129
1168
  augmented_system = self._simulated_system_prompt()
@@ -1133,6 +1172,9 @@ class Conversation(ToolContextMixin):
1133
1172
 
1134
1173
  for _round in range(self._max_tool_rounds):
1135
1174
  if self._stop_requested:
1175
+ if not self._stop_final_answer:
1176
+ logger.info("Stop requested; ending the turn without a final answer")
1177
+ return
1136
1178
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
1137
1179
  answer = self._final_answer_simulated(augmented_system, merged)
1138
1180
  yield {"type": "text_delta", "text": answer}
@@ -1202,6 +1244,7 @@ class Conversation(ToolContextMixin):
1202
1244
  from .simulated_tools import format_tool_result, parse_simulated_response
1203
1245
 
1204
1246
  self._stop_requested = False
1247
+ self._stop_final_answer = True
1205
1248
  self._max_rounds_reached = False
1206
1249
  merged = {**self._options, **(options or {})}
1207
1250
  augmented_system = self._simulated_system_prompt()
@@ -1212,6 +1255,9 @@ class Conversation(ToolContextMixin):
1212
1255
 
1213
1256
  for _round in range(self._max_tool_rounds):
1214
1257
  if self._stop_requested:
1258
+ if not self._stop_final_answer:
1259
+ logger.info("Stop requested; ending the turn without a final answer")
1260
+ return self._text_on_stop()
1215
1261
  logger.info("Stop requested; finishing with a final answer (no more tool calls)")
1216
1262
  return self._final_answer_simulated(augmented_system, merged)
1217
1263
  self._check_budget()
@@ -522,6 +522,28 @@ def _bearer_headers(api_key: str) -> dict[str, str]:
522
522
  return {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
523
523
 
524
524
 
525
+ def _compat_url(driver: Any) -> str:
526
+ """The driver's ``/chat/completions`` URL.
527
+
528
+ Raw-HTTP drivers name their base URL ``api_base`` or ``base_url``; both are
529
+ accepted so a driver can't break streaming tool calls by its naming.
530
+ """
531
+ base = getattr(driver, "api_base", None) or getattr(driver, "base_url", None)
532
+ if not base:
533
+ raise AttributeError(f"{type(driver).__name__} has no api_base or base_url for streaming tool calls")
534
+ base = str(base).rstrip("/")
535
+ return base if base.endswith("/chat/completions") else f"{base}/chat/completions"
536
+
537
+
538
+ def _compat_headers(driver: Any) -> dict[str, str]:
539
+ """The driver's own request headers when it keeps them (attribution
540
+ headers, provider extras), else a plain bearer header."""
541
+ own = getattr(driver, "headers", None)
542
+ if isinstance(own, dict) and own:
543
+ return {"Content-Type": "application/json", **own}
544
+ return _bearer_headers(driver.api_key)
545
+
546
+
525
547
  def stream_raw_http_compat_tool_call(
526
548
  driver: Any,
527
549
  messages: list[dict[str, Any]],
@@ -541,8 +563,8 @@ def stream_raw_http_compat_tool_call(
541
563
  of using the OpenAI SDK).
542
564
 
543
565
  Defaults assume the driver exposes:
544
- - ``self.api_base`` — base URL (no trailing ``/chat/completions``)
545
- - ``self.api_key`` — used as ``Authorization: Bearer <key>``
566
+ - ``self.api_base`` or ``self.base_url`` — base URL (no trailing ``/chat/completions``)
567
+ - ``self.headers`` (used as is) or ``self.api_key`` (``Authorization: Bearer <key>``)
546
568
 
547
569
  Override *url* or *headers* if the driver uses a different shape.
548
570
  Pass a complete *payload* (including streaming options) to preserve a
@@ -562,8 +584,8 @@ def stream_raw_http_compat_tool_call(
562
584
  )
563
585
  else:
564
586
  model = payload["model"]
565
- resolved_url = url or f"{driver.api_base}/chat/completions"
566
- resolved_headers = headers or _bearer_headers(driver.api_key)
587
+ resolved_url = url or _compat_url(driver)
588
+ resolved_headers = headers or _compat_headers(driver)
567
589
 
568
590
  state = _fresh_state()
569
591
  with requests.post(
@@ -634,8 +656,8 @@ async def astream_raw_http_compat_tool_call(
634
656
  )
635
657
  else:
636
658
  model = payload["model"]
637
- resolved_url = url or f"{driver.api_base}/chat/completions"
638
- resolved_headers = headers or _bearer_headers(driver.api_key)
659
+ resolved_url = url or _compat_url(driver)
660
+ resolved_headers = headers or _compat_headers(driver)
639
661
 
640
662
  state = _fresh_state()
641
663
  async with (
@@ -202,6 +202,12 @@ class AsyncResilientDriver(AsyncDriver):
202
202
  self._plan.observe(target, event)
203
203
  yield _attach_route_to_event(event, route)
204
204
  except Exception as exc:
205
+ # Mid-stream failures do not fail over, on purpose. Events already
206
+ # reached the caller (text, tool calls), and replaying the request on
207
+ # another model would duplicate or contradict them. The target is
208
+ # penalized so the next request routes around it; the caller decides
209
+ # whether to retry the turn. Failures before the first event do fail
210
+ # over, because the opener runs inside ``_route``.
205
211
  self._plan.penalize(target, classify_error(exc))
206
212
  raise
207
213
 
@@ -51,6 +51,8 @@ class ErrorInfo:
51
51
  retry_after: float | None = None
52
52
  message: str = ""
53
53
  provider: str | None = None
54
+ error_type: str | None = None
55
+ """Class name of the exception that was classified (e.g. ``KeyError``)."""
54
56
 
55
57
  def to_dict(self) -> dict[str, Any]:
56
58
  return {
@@ -59,6 +61,7 @@ class ErrorInfo:
59
61
  "status_code": self.status_code,
60
62
  "retry_after": self.retry_after,
61
63
  "message": self.message,
64
+ "error_type": self.error_type,
62
65
  }
63
66
 
64
67
 
@@ -148,6 +151,16 @@ _DEFAULT_RULES: list[ErrorRule] = [
148
151
  pattern=r"does not support|not supported|unsupported|does not have access|not enabled for",
149
152
  priority=60,
150
153
  ),
154
+ # A valid OpenAI-schema request that one upstream validates against its own
155
+ # native schema (content block tags, part types). The next target is fine.
156
+ ErrorRule(
157
+ "provider_schema",
158
+ _A.FAILOVER,
159
+ pattern=r"does not match any of the expected tags|input tag .{0,80} found using|"
160
+ r"(?:invalid|unknown|unexpected|unrecognized) content (?:block|part|type)|"
161
+ r"content (?:block|part) type .{0,60} (?:is )?not (?:supported|allowed|permitted)",
162
+ priority=55,
163
+ ),
151
164
  ErrorRule("overloaded", _A.COOLDOWN, pattern=r"overloaded|at capacity|server is busy", priority=50),
152
165
  ErrorRule("rate_limit", _A.COOLDOWN, pattern=r"rate[_ ]limit|too many requests", priority=40),
153
166
  # Status-only rules.
@@ -355,7 +368,7 @@ def classify_error(exc: BaseException) -> ErrorInfo:
355
368
  message = str(exc) or type(exc).__name__
356
369
 
357
370
  def info(category: str, action: ErrorAction) -> ErrorInfo:
358
- return ErrorInfo(action, category, status, retry_after, message, provider)
371
+ return ErrorInfo(action, category, status, retry_after, message, provider, type(exc).__name__)
359
372
 
360
373
  # Local capability gaps and missing configuration never improve on retry.
361
374
  # DriverError subclasses NotImplementedError for historical reasons, so
@@ -305,6 +305,25 @@ def should_retry_same(policy: RetryPolicy, info: ErrorInfo, attempt: int, is_las
305
305
  return None
306
306
 
307
307
 
308
+ _REASON_MAX = 160
309
+
310
+
311
+ def _reason(err: dict[str, Any]) -> str:
312
+ """The failure's own words, shortened to one line.
313
+
314
+ A status code says little on its own and an ``unknown`` category says
315
+ nothing, so the summary carries what the exception said (and, when there
316
+ is no HTTP status, its type) to make a failed route diagnosable.
317
+ """
318
+ message = " ".join(str(err.get("message") or "").split())
319
+ error_type = err.get("error_type")
320
+ if error_type and not err.get("status_code") and error_type not in message:
321
+ message = f"{error_type}: {message}" if message else error_type
322
+ if len(message) > _REASON_MAX:
323
+ message = message[: _REASON_MAX - 3].rstrip() + "..."
324
+ return message
325
+
326
+
308
327
  def failure_message(attempts: list[dict[str, Any]]) -> str:
309
328
  if not attempts:
310
329
  return "No route targets were available"
@@ -314,5 +333,8 @@ def failure_message(attempts: list[dict[str, Any]]) -> str:
314
333
  detail = err.get("category") or a["outcome"]
315
334
  if err.get("status_code"):
316
335
  detail += f" {err['status_code']}"
336
+ reason = _reason(err) if err else ""
337
+ if reason and reason != err.get("category"):
338
+ detail += f" ({reason})"
317
339
  parts.append(f"{a['model']}: {detail}")
318
340
  return "All route targets failed (" + "; ".join(parts) + ")"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.16.1.dev1
3
+ Version: 1.16.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.16.0
File without changes
File without changes