prompture 1.1.2.dev3__tar.gz → 1.1.3.dev2__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 (415) hide show
  1. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/PKG-INFO +105 -226
  2. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/README.md +104 -225
  3. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/_version.py +2 -2
  4. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/PKG-INFO +105 -226
  5. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-driver/SKILL.md +0 -0
  6. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-driver/references/driver-template.md +0 -0
  7. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-example/SKILL.md +0 -0
  8. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-field/SKILL.md +0 -0
  9. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-persona/SKILL.md +0 -0
  10. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-test/SKILL.md +0 -0
  11. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/add-tool/SKILL.md +0 -0
  12. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/create-pr/SKILL.md +0 -0
  13. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/run-tests/SKILL.md +0 -0
  14. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
  15. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.claude/skills/update-pricing/SKILL.md +0 -0
  16. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.env.copy +0 -0
  17. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/FUNDING.yml +0 -0
  18. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  19. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
  20. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
  21. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
  22. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/scripts/update_docs_version.py +0 -0
  23. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/scripts/update_wrapper_version.py +0 -0
  24. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/workflows/dev.yml +0 -0
  25. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/workflows/documentation.yml +0 -0
  26. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/workflows/pricing-freshness.yml +0 -0
  27. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/workflows/publish.yml +0 -0
  28. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.github/workflows/security.yml +0 -0
  29. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/.safety-project.ini +0 -0
  30. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/AGENTS.md +0 -0
  31. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/BREAKING_CHANGES.md +0 -0
  32. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/CLAUDE.md +0 -0
  33. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/CONTRIBUTING.md +0 -0
  34. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/LICENSE +0 -0
  35. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/MANIFEST.in +0 -0
  36. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/ROADMAP.md +0 -0
  37. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/SECURITY.md +0 -0
  38. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/dev.ps1 +0 -0
  39. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/dev.sh +0 -0
  40. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/mypy_errors.txt +0 -0
  41. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/README.md +0 -0
  42. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_json/README.md +0 -0
  43. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
  44. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_json/pyproject.toml +0 -0
  45. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_json/test.py +0 -0
  46. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_toon/README.md +0 -0
  47. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
  48. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_toon/pyproject.toml +0 -0
  49. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/packages/llm_to_toon/test.py +0 -0
  50. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/__init__.py +0 -0
  51. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/__init__.py +0 -0
  52. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/agent.py +0 -0
  53. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/async_agent.py +0 -0
  54. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/async_conversation.py +0 -0
  55. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/async_deep_agent.py +0 -0
  56. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/conversation.py +0 -0
  57. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep/__init__.py +0 -0
  58. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep/planner.py +0 -0
  59. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep/subagents.py +0 -0
  60. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep/summarizer.py +0 -0
  61. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep/vfs.py +0 -0
  62. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep_agent.py +0 -0
  63. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep_prompts.py +0 -0
  64. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/deep_state.py +0 -0
  65. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/persona.py +0 -0
  66. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/simulated_tools.py +0 -0
  67. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/skills.py +0 -0
  68. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/tools_schema.py +0 -0
  69. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/agents/types.py +0 -0
  70. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/aio/__init__.py +0 -0
  71. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/bridges/__init__.py +0 -0
  72. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/bridges/tukuy_backend.py +0 -0
  73. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/cli/__init__.py +0 -0
  74. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/cli/cli.py +0 -0
  75. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/cli/formatters.py +0 -0
  76. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/cli/runner.py +0 -0
  77. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/cli/server.py +0 -0
  78. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/dataset/__init__.py +0 -0
  79. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/dataset/formats.py +0 -0
  80. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/dataset/schemas.py +0 -0
  81. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/dataset/synth.py +0 -0
  82. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/__init__.py +0 -0
  83. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/airllm_driver.py +0 -0
  84. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/assemblyai_stt_driver.py +0 -0
  85. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_airllm_driver.py +0 -0
  86. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
  87. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_azure_driver.py +0 -0
  88. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_base.py +0 -0
  89. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_bedrock_driver.py +0 -0
  90. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
  91. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_cachibot_driver.py +0 -0
  92. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
  93. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_claude_driver.py +0 -0
  94. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_driver.py +0 -0
  95. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
  96. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
  97. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
  98. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
  99. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_deepseek_driver.py +0 -0
  100. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
  101. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
  102. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_embedding_base.py +0 -0
  103. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
  104. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
  105. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_google_driver.py +0 -0
  106. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_google_img_gen_driver.py +0 -0
  107. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_google_vertexai_driver.py +0 -0
  108. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_driver.py +0 -0
  109. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
  110. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
  111. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_groq_driver.py +0 -0
  112. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_hugging_driver.py +0 -0
  113. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
  114. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_img_gen_base.py +0 -0
  115. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_jina_embedding_driver.py +0 -0
  116. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_jina_rerank_driver.py +0 -0
  117. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
  118. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
  119. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_lmstudio_driver.py +0 -0
  120. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_local_http_driver.py +0 -0
  121. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
  122. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_minimax_driver.py +0 -0
  123. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
  124. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_mistral_driver.py +0 -0
  125. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
  126. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_modelscope_driver.py +0 -0
  127. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_moonshot_driver.py +0 -0
  128. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
  129. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
  130. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
  131. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_ollama_driver.py +0 -0
  132. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
  133. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_compatible_driver.py +0 -0
  134. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_driver.py +0 -0
  135. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_embedding_driver.py +0 -0
  136. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
  137. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_moderation_driver.py +0 -0
  138. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_stt_driver.py +0 -0
  139. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openai_tts_driver.py +0 -0
  140. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_openrouter_driver.py +0 -0
  141. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
  142. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_registry.py +0 -0
  143. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
  144. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_tts_driver.py +0 -0
  145. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
  146. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
  147. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_stt_base.py +0 -0
  148. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_tts_base.py +0 -0
  149. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_video_gen_base.py +0 -0
  150. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
  151. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
  152. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/async_zai_driver.py +0 -0
  153. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/audio_registry.py +0 -0
  154. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/azure_config.py +0 -0
  155. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/azure_driver.py +0 -0
  156. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/base.py +0 -0
  157. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/bedrock_driver.py +0 -0
  158. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/bfl_img_gen_driver.py +0 -0
  159. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/cachibot_driver.py +0 -0
  160. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/cartesia_tts_driver.py +0 -0
  161. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/claude_driver.py +0 -0
  162. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/cohere_driver.py +0 -0
  163. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/cohere_embedding_driver.py +0 -0
  164. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/cohere_rerank_driver.py +0 -0
  165. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/deepgram_stt_driver.py +0 -0
  166. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/deepgram_tts_driver.py +0 -0
  167. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/deepseek_driver.py +0 -0
  168. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/driver_registry.py +0 -0
  169. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
  170. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
  171. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/embedding_base.py +0 -0
  172. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/embedding_registry.py +0 -0
  173. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/fal_img_gen_driver.py +0 -0
  174. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/fal_video_gen_driver.py +0 -0
  175. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/google_driver.py +0 -0
  176. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/google_img_gen_driver.py +0 -0
  177. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/google_vertexai_driver.py +0 -0
  178. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/grok_driver.py +0 -0
  179. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/grok_img_gen_driver.py +0 -0
  180. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/grok_video_gen_driver.py +0 -0
  181. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/groq_driver.py +0 -0
  182. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/hugging_driver.py +0 -0
  183. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
  184. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/img_gen_base.py +0 -0
  185. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/img_gen_registry.py +0 -0
  186. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/jina_embedding_driver.py +0 -0
  187. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/jina_rerank_driver.py +0 -0
  188. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/kling_img_gen_driver.py +0 -0
  189. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/kling_video_gen_driver.py +0 -0
  190. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/lmstudio_driver.py +0 -0
  191. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/local_http_driver.py +0 -0
  192. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/luma_video_gen_driver.py +0 -0
  193. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/minimax_driver.py +0 -0
  194. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/minimax_video_gen_driver.py +0 -0
  195. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/mistral_driver.py +0 -0
  196. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/mistral_moderation_driver.py +0 -0
  197. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/modelscope_driver.py +0 -0
  198. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/moderation_base.py +0 -0
  199. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/moderation_registry.py +0 -0
  200. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/moonshot_driver.py +0 -0
  201. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/mxbai_embedding_driver.py +0 -0
  202. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/mxbai_rerank_driver.py +0 -0
  203. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/nomic_embedding_driver.py +0 -0
  204. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/ollama_driver.py +0 -0
  205. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/ollama_embedding_driver.py +0 -0
  206. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_compatible_driver.py +0 -0
  207. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_driver.py +0 -0
  208. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_embedding_driver.py +0 -0
  209. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_img_gen_driver.py +0 -0
  210. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_moderation_driver.py +0 -0
  211. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_stt_driver.py +0 -0
  212. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openai_tts_driver.py +0 -0
  213. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/openrouter_driver.py +0 -0
  214. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/pika_video_gen_driver.py +0 -0
  215. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/provider_descriptors.py +0 -0
  216. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/registry.py +0 -0
  217. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/rerank_base.py +0 -0
  218. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/rerank_registry.py +0 -0
  219. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/runway_audio_transform_driver.py +0 -0
  220. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/runway_capabilities.py +0 -0
  221. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/runway_img_gen_driver.py +0 -0
  222. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/runway_tts_driver.py +0 -0
  223. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/runway_video_gen_driver.py +0 -0
  224. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/stability_img_gen_driver.py +0 -0
  225. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/stt_base.py +0 -0
  226. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/tts_base.py +0 -0
  227. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/video_gen_base.py +0 -0
  228. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/video_gen_registry.py +0 -0
  229. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/vision_helpers.py +0 -0
  230. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/voyage_embedding_driver.py +0 -0
  231. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/voyage_rerank_driver.py +0 -0
  232. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/drivers/zai_driver.py +0 -0
  233. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/exceptions.py +0 -0
  234. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/__init__.py +0 -0
  235. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/async_core.py +0 -0
  236. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/core.py +0 -0
  237. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/fields.py +0 -0
  238. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/reasoning.py +0 -0
  239. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/strategy.py +0 -0
  240. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/tools.py +0 -0
  241. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/tukuy_bridge.py +0 -0
  242. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/extraction/validator.py +0 -0
  243. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/__init__.py +0 -0
  244. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/async_groups.py +0 -0
  245. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/consensus.py +0 -0
  246. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/debate.py +0 -0
  247. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/groups.py +0 -0
  248. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/groups/types.py +0 -0
  249. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/__init__.py +0 -0
  250. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/budget.py +0 -0
  251. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/cache.py +0 -0
  252. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/callbacks.py +0 -0
  253. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/capabilities.py +0 -0
  254. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/coding_agent_events.py +0 -0
  255. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/coding_agent_specs.py +0 -0
  256. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/coding_agents.py +0 -0
  257. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/cost_mixin.py +0 -0
  258. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/discovery.py +0 -0
  259. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/ledger.py +0 -0
  260. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/logging.py +0 -0
  261. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/model_rates.py +0 -0
  262. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/pricing.py +0 -0
  263. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/provider_env.py +0 -0
  264. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/anthropic.json +0 -0
  265. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/azure.json +0 -0
  266. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/bedrock.json +0 -0
  267. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/cerebras.json +0 -0
  268. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/cohere.json +0 -0
  269. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/deepinfra.json +0 -0
  270. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/deepseek.json +0 -0
  271. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/fireworks.json +0 -0
  272. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/google.json +0 -0
  273. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/google_vertexai.json +0 -0
  274. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/groq.json +0 -0
  275. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/jina.json +0 -0
  276. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/mistral.json +0 -0
  277. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/mixedbread.json +0 -0
  278. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/moonshot.json +0 -0
  279. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/nomic.json +0 -0
  280. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/nvidia.json +0 -0
  281. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/openai.json +0 -0
  282. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/openrouter.json +0 -0
  283. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/perplexity.json +0 -0
  284. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/sambanova.json +0 -0
  285. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/siliconflow.json +0 -0
  286. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/together.json +0 -0
  287. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/voyage.json +0 -0
  288. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/rates/xai.json +0 -0
  289. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/session.py +0 -0
  290. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/settings.py +0 -0
  291. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/tracker.py +0 -0
  292. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/infra/tukuy_backend.py +0 -0
  293. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/__init__.py +0 -0
  294. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/chunking.py +0 -0
  295. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/detect.py +0 -0
  296. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/document.py +0 -0
  297. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/__init__.py +0 -0
  298. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/base.py +0 -0
  299. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/csv_parser.py +0 -0
  300. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/docx.py +0 -0
  301. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/html.py +0 -0
  302. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/markdown.py +0 -0
  303. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/pdf.py +0 -0
  304. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/ingestion/parsers/xlsx.py +0 -0
  305. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/integrations/__init__.py +0 -0
  306. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/integrations/tukuy_bridge.py +0 -0
  307. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/media/__init__.py +0 -0
  308. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/media/audio.py +0 -0
  309. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/media/image.py +0 -0
  310. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/media/video.py +0 -0
  311. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/01-why-prompture.md +0 -0
  312. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/02-installation.md +0 -0
  313. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/03-quickstart.md +0 -0
  314. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/04-toon-input.md +0 -0
  315. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/05-test-harness.md +0 -0
  316. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/06-stability.md +0 -0
  317. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pages/07-migration.md +0 -0
  318. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/persistence/__init__.py +0 -0
  319. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/persistence/history.py +0 -0
  320. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/persistence/serialization.py +0 -0
  321. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/persistence/store.py +0 -0
  322. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pipeline/__init__.py +0 -0
  323. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pipeline/pipeline.py +0 -0
  324. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pipeline/resolver.py +0 -0
  325. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/pipeline/routing.py +0 -0
  326. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/__init__.py +0 -0
  327. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/base.py +0 -0
  328. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/__init__.py +0 -0
  329. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/_aliases.py +0 -0
  330. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
  331. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/audio_plugin.py +0 -0
  332. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/cloud_plugin.py +0 -0
  333. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
  334. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/extras_plugin.py +0 -0
  335. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/google_plugin.py +0 -0
  336. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/image_plugin.py +0 -0
  337. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/local_plugin.py +0 -0
  338. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
  339. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/openai_plugin.py +0 -0
  340. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/builtins/video_plugin.py +0 -0
  341. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/plugins/discovery.py +0 -0
  342. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/py.typed +0 -0
  343. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/__init__.py +0 -0
  344. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/__init__.py +0 -0
  345. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/base.py +0 -0
  346. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/character.py +0 -0
  347. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/chunker_registry.py +0 -0
  348. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/markdown.py +0 -0
  349. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/recursive.py +0 -0
  350. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/semantic.py +0 -0
  351. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/chunkers/token.py +0 -0
  352. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/documents.py +0 -0
  353. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loader_registry.py +0 -0
  354. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/__init__.py +0 -0
  355. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/csv_loader.py +0 -0
  356. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/docx_loader.py +0 -0
  357. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/epub_loader.py +0 -0
  358. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/html_loader.py +0 -0
  359. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/json_loader.py +0 -0
  360. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/markdown_loader.py +0 -0
  361. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/pdf_loader.py +0 -0
  362. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/text_loader.py +0 -0
  363. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/loaders/xlsx_loader.py +0 -0
  364. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/pipeline.py +0 -0
  365. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/__init__.py +0 -0
  366. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/base.py +0 -0
  367. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/hybrid.py +0 -0
  368. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/mmr.py +0 -0
  369. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/retriever_registry.py +0 -0
  370. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/retrievers/similarity.py +0 -0
  371. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/__init__.py +0 -0
  372. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/base.py +0 -0
  373. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/chroma.py +0 -0
  374. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/faiss.py +0 -0
  375. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/pgvector.py +0 -0
  376. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/pinecone.py +0 -0
  377. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/qdrant.py +0 -0
  378. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
  379. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/rag/vectorstores/weaviate.py +0 -0
  380. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/refusal/__init__.py +0 -0
  381. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/refusal/detector.py +0 -0
  382. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/refusal/evaluator.py +0 -0
  383. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/refusal/markers.py +0 -0
  384. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/__init__.py +0 -0
  385. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/generator.py +0 -0
  386. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
  387. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/README.md.j2 +0 -0
  388. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/config.py.j2 +0 -0
  389. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/env.example.j2 +0 -0
  390. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/main.py.j2 +0 -0
  391. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/models.py.j2 +0 -0
  392. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
  393. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/security/__init__.py +0 -0
  394. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/security/injection.py +0 -0
  395. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/security/redaction.py +0 -0
  396. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/testing/__init__.py +0 -0
  397. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/testing/driver_contract.py +0 -0
  398. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/tools/__init__.py +0 -0
  399. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/tools/code_exec.py +0 -0
  400. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture/tools/web_search.py +0 -0
  401. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/SOURCES.txt +0 -0
  402. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/dependency_links.txt +0 -0
  403. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/entry_points.txt +0 -0
  404. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/requires.txt +0 -0
  405. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture.egg-info/top_level.txt +0 -0
  406. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/prompture_cost_tracking.md +0 -0
  407. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/pyproject.toml +0 -0
  408. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/requirements.txt +0 -0
  409. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/scripts/check_pricing_freshness.py +0 -0
  410. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/setup.cfg +0 -0
  411. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/specs/basic_extraction.json +0 -0
  412. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/specs/schema_validation.json +0 -0
  413. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/specs/strategy_comparison.json +0 -0
  414. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/test.py +0 -0
  415. {prompture-1.1.2.dev3 → prompture-1.1.3.dev2}/test_version_diagnosis.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.1.2.dev3
3
+ Version: 1.1.3.dev2
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
@@ -102,6 +102,7 @@ Requires-Dist: prompture[rag-docx,rag-epub,rag-html,rag-hybrid,rag-pdf,rag-seman
102
102
  Dynamic: license-file
103
103
 
104
104
  <p align="center">
105
+ <img width="800" alt="prompture" src="https://github.com/user-attachments/assets/005f8019-b5f0-4128-9605-dd672693c46b" />
105
106
  <h1 align="center">Prompture</h1>
106
107
  <p align="center">Structured JSON extraction from any LLM. Schema-enforced, Pydantic-native, multi-provider.</p>
107
108
  </p>
@@ -133,29 +134,37 @@ print(person.name) # Maria
133
134
 
134
135
  ## Key Features
135
136
 
136
- - **Structured output** — JSON schema enforcement and direct Pydantic model population
137
- - **36+ providers** — OpenAI, Claude, Google, Groq, Grok, Azure, AWS Bedrock, Ollama, LM Studio, OpenRouter, HuggingFace, Moonshot, ModelScope, Z.ai, Vertex AI, AirLLM, CachiBot, Runway, MiniMax/Hailuo, Kling AI, Luma AI, Pika Labs, Fal.ai, Ideogram, Black Forest Labs (Flux), Mistral AI, DeepSeek, Cohere, Voyage AI, Jina AI, Nomic, Mixedbread (mxbai), Cartesia, Deepgram, AssemblyAI, generic OpenAI-compatible (Fireworks, Together, Cerebras, SambaNova, Perplexity, NVIDIA, DeepInfra, SiliconFlow, GitHub Models), and generic HTTP
138
- - **Multi-modal** — Drivers for embeddings (OpenAI, Cohere, Voyage, Jina, Nomic, Mixedbread, Ollama), rerank (Cohere, Voyage, Jina, Mixedbread), moderation (OpenAI, Mistral), image generation (DALL-E, Imagen, Grok, Stability, Runway, Kling, Fal, Ideogram, Black Forest Labs / Flux), video generation (Grok Imagine Video, Runway text/image/video → video, MiniMax/Hailuo, Kling, Luma Dream Machine, Pika, Fal), text-to-speech (OpenAI, ElevenLabs, Cartesia Sonic, Deepgram Aura, Runway), sound effects, voice dubbing / isolation / conversion (Runway), and speech-to-text (Whisper, ElevenLabs, Deepgram Nova-3, AssemblyAI Universal-2)
139
- - **RAG stack** — Document loaders (PDF, DOCX, HTML, Markdown, JSON/JSONL, CSV, EPUB, XLSX), chunkers (character, recursive, token-aware via tiktoken, semantic, markdown-aware), vector stores (Chroma, Pinecone, Qdrant, pgvector, FAISS, Weaviate), retrievers (similarity, MMR, hybrid dense+BM25 via RRF), and an end-to-end `RAGPipeline` that composes loader → chunker → embedder → store → retriever → optional reranker → LLM
140
- - **Multi-model fallback** — Try a list of models in sequence with per-attempt cost, token, and capability accounting
141
- - **Strategy cascade** — Auto-selects between provider-native JSON mode, tool-call extraction, and prompted repair so extraction works on any model
142
- - **TOON input conversion** — 45-60% token savings when sending structured data via [Token-Oriented Object Notation](https://github.com/jhd3197/python-toon)
143
- - **Stepwise extraction** — Per-field prompts with smart type coercion (shorthand numbers, multilingual booleans, dates)
144
- - **Field registry** — 50+ predefined extraction fields with template variables and Pydantic integration
145
- - **Conversations** — Stateful multi-turn sessions with sync and async support
146
- - **Tool use** — Function calling and streaming across supported providers, with automatic prompt-based simulation for models without native tool support
147
- - **Sandboxed Python execution** — Drop-in `python_execute` tool backed by Tukuy's `PythonSandbox` (import whitelist, path restrictions, timeout, memory limit, AST risk gate)
148
- - **Web search** — Drop-in `web_search` tool with Tavily, Serper, Brave, and SearXNG backends; returns Markdown so the LLM can cite by URL
149
- - **OpenAI-compatible server** — `prompture serve` exposes `/v1/chat/completions`, `/v1/completions`, `/v1/embeddings`, `/v1/models`, and `/v1/coding-agents`; point Claude Code, Codex, Cursor, Aider, or any OpenAI SDK at it and route to any of the 36+ providers
150
- - **Synthetic datasets** — `generate_qa_dataset()` turns documents into fine-tuning JSONL (Q&A, ShareGPT, or Alpaca) ready for Unsloth, Axolotl, or TRL
151
- - **Refusal detection** — `RefusalDetector` + `RefusalEvaluator` flag and score LLM refusals (5 categories, en/es markers, position-weighted confidence); useful for cross-provider alignment comparison and validating abliterated models
152
- - **Input safety** — `PromptInjectionDetector` (jailbreak, role-hijack, delimiter attacks, encoded payloads) + `PIIRedactor` (emails, phones, Luhn-checked cards, SSN, IBAN, IPs, API keys, embedded URL credentials)
153
- - **Deep agents** — Drop-in `DeepAgent` with planning (`write_todos`), virtual filesystem (`read_file` / `write_file` / `edit_file` / `ls` / `glob` / `grep`), sub-agent delegation (`task`), and automatic context summarization — no LangChain or LangGraph required
154
- - **Caching** — Built-in response cache with memory, SQLite, and Redis backends
155
- - **Plugin system** — Register custom drivers via entry points
156
- - **Usage tracking** — Token counts and cost calculation on every call
157
- - **Auto-repair** — Optional second LLM pass to fix malformed JSON
158
- - **Batch testing** — Spec-driven suites to compare models side by side
137
+ **Structured extraction**
138
+ - JSON schema enforcement and direct Pydantic model population
139
+ - Stepwise per-field extraction with smart type coercion (shorthand numbers, multilingual booleans, dates)
140
+ - Field registry — 50+ predefined fields with template variables and Pydantic integration
141
+ - Strategy cascade — auto-selects provider-native JSON mode, tool-call extraction, or prompted repair
142
+ - Multi-model fallback with per-attempt cost, token, and capability accounting
143
+ - Optional auto-repair pass for malformed JSON
144
+
145
+ **Providers & modalities**
146
+ - 36+ providers under a unified `provider/model` string — see [Providers](#providers)
147
+ - Multi-modal drivers for embeddings, rerank, moderation, image, video, TTS, STT, and audio transforms — see [Multi-Modal](#multi-modal)
148
+ - TOON input conversion for 45–60% token savings on structured input ([python-toon](https://github.com/jhd3197/python-toon))
149
+
150
+ **Agents, tools, RAG**
151
+ - Stateful conversations with sync + async support
152
+ - Function calling and streaming across providers, with prompt-based simulation for models without native tool use
153
+ - Drop-in tools: sandboxed `python_execute` (Tukuy), `web_search` (Tavily / Serper / Brave / SearXNG)
154
+ - `DeepAgent` with planning, virtual filesystem, sub-agents, and auto-summarization — no LangChain
155
+ - Full RAG stack — loaders, chunkers, vector stores, hybrid dense+BM25 retrieval, end-to-end `RAGPipeline` — see [RAG](#rag)
156
+
157
+ **Safety & evaluation**
158
+ - `PromptInjectionDetector` + `PIIRedactor` for input-side defense
159
+ - `RefusalDetector` / `RefusalEvaluator` for cross-provider alignment scoring
160
+ - `generate_qa_dataset()` — synthetic JSONL datasets ready for Unsloth, Axolotl, TRL
161
+
162
+ **Ops**
163
+ - `prompture serve` — OpenAI-compatible server (`/v1/chat/completions`, `/v1/embeddings`, `/v1/coding-agents`, …) routes any client to any provider
164
+ - Usage tracking — tokens + cost on every call
165
+ - Response cache — memory, SQLite, Redis backends
166
+ - Plugin system — register custom drivers via entry points
167
+ - Spec-driven batch testing for cross-model comparison
159
168
 
160
169
  ## Built With Prompture
161
170
 
@@ -170,34 +179,70 @@ Projects powered by Prompture at their core:
170
179
  pip install prompture
171
180
  ```
172
181
 
173
- Optional extras:
182
+ That's all you need for the core driver system, structured extraction, and
183
+ agent loop. Everything below is **opt-in** — install only what you'll actually
184
+ use.
185
+
186
+ > **TL;DR** — Building a RAG app? `pip install prompture[rag]` and skip the
187
+ > rest of this section. Just doing structured extraction or agents? You don't
188
+ > need any extras.
189
+
190
+ ### Core extras
191
+
192
+ | Extra | Adds | Install |
193
+ |---|---|---|
194
+ | `redis` | Redis cache backend | `pip install prompture[redis]` |
195
+ | `serve` | FastAPI server mode (`prompture serve`) | `pip install prompture[serve]` |
196
+ | `airllm` | AirLLM local inference | `pip install prompture[airllm]` |
197
+ | `bedrock` | AWS Bedrock driver (`boto3`) | `pip install prompture[bedrock]` |
198
+ | `sandbox` | Sandboxed Python execution tool (`tukuy`) | `pip install prompture[sandbox]` |
199
+
200
+ ### RAG — the easy path
174
201
 
175
202
  ```bash
176
- pip install prompture[redis] # Redis cache backend
177
- pip install prompture[serve] # FastAPI server mode
178
- pip install prompture[airllm] # AirLLM local inference
179
- pip install prompture[bedrock] # AWS Bedrock driver (boto3)
180
- pip install prompture[sandbox] # Sandboxed Python execution tool (tukuy)
181
- pip install prompture[rag] # Full RAG stack (all loaders, chunkers, vector stores, hybrid retrieval)
203
+ pip install prompture[rag]
182
204
  ```
183
205
 
184
- Fine-grained RAG extras (install only what you need):
206
+ Pulls in every loader, chunker, hybrid retrieval, and all vector-store
207
+ backends. Use this unless you need to keep the dependency footprint small.
208
+
209
+ ### RAG — à la carte
210
+
211
+ Pick only the pieces you need.
212
+
213
+ **Loaders** — one per document format:
214
+
215
+ | Extra | Format | Backed by |
216
+ |---|---|---|
217
+ | `rag-pdf` | PDF | `pypdf` |
218
+ | `rag-docx` | DOCX | `python-docx` |
219
+ | `rag-html` | HTML | `beautifulsoup4` + `markdownify` + `lxml` |
220
+ | `rag-epub` | EPUB | `ebooklib` |
221
+ | `rag-xlsx` | XLSX | `openpyxl` |
222
+
223
+ **Chunking & retrieval:**
224
+
225
+ | Extra | What it adds | Backed by |
226
+ |---|---|---|
227
+ | `rag-token` | Token-aware chunker | `tiktoken` |
228
+ | `rag-semantic` | Semantic chunker | `numpy` |
229
+ | `rag-hybrid` | Hybrid retriever (BM25 + vectors) | `rank-bm25` |
230
+
231
+ **Vector stores** — pick whichever you deploy against:
232
+
233
+ | Extra | Vector store |
234
+ |---|---|
235
+ | `rag-vs-chroma` | Chroma |
236
+ | `rag-vs-pinecone` | Pinecone |
237
+ | `rag-vs-qdrant` | Qdrant |
238
+ | `rag-vs-pgvector` | pgvector / PostgreSQL |
239
+ | `rag-vs-faiss` | FAISS (CPU build) |
240
+ | `rag-vs-weaviate` | Weaviate |
241
+
242
+ Combine them as needed, e.g.:
185
243
 
186
244
  ```bash
187
- pip install prompture[rag-pdf] # PDF loader (pypdf)
188
- pip install prompture[rag-docx] # DOCX loader (python-docx)
189
- pip install prompture[rag-html] # HTML loader (beautifulsoup4 + markdownify + lxml)
190
- pip install prompture[rag-epub] # EPUB loader (ebooklib)
191
- pip install prompture[rag-xlsx] # XLSX loader (openpyxl)
192
- pip install prompture[rag-token] # Token-aware chunker (tiktoken)
193
- pip install prompture[rag-semantic] # Semantic chunker (numpy)
194
- pip install prompture[rag-hybrid] # Hybrid retriever with BM25 (rank-bm25)
195
- pip install prompture[rag-vs-chroma] # Chroma vector store
196
- pip install prompture[rag-vs-pinecone] # Pinecone vector store
197
- pip install prompture[rag-vs-qdrant] # Qdrant vector store
198
- pip install prompture[rag-vs-pgvector] # pgvector / PostgreSQL
199
- pip install prompture[rag-vs-faiss] # FAISS vector store (CPU build)
200
- pip install prompture[rag-vs-weaviate] # Weaviate vector store
245
+ pip install "prompture[rag-pdf,rag-token,rag-vs-qdrant]"
201
246
  ```
202
247
 
203
248
  ## Configuration
@@ -246,17 +291,23 @@ Model strings use `"provider/model"` format. The provider prefix routes to the c
246
291
  | `openai` | `openai/gpt-4` | Automatic |
247
292
  | `claude` | `claude/claude-3` | Automatic |
248
293
  | `google` | `google/gemini-1.5-pro` | Automatic |
249
- | `google_vertexai` | `google_vertexai/gemini-1.5-pro` | Automatic |
250
294
  | `groq` | `groq/llama2-70b-4096` | Automatic |
295
+ | `openrouter` | `openrouter/anthropic/claude-2` | Automatic |
296
+ | `ollama` | `ollama/llama3.1:8b` | Free (local) |
297
+
298
+ <details>
299
+ <summary><b>Show all 30+ providers</b></summary>
300
+
301
+ | Provider | Example Model | Cost |
302
+ |---|---|---|
303
+ | `google_vertexai` | `google_vertexai/gemini-1.5-pro` | Automatic |
251
304
  | `grok` | `grok/grok-4-fast-reasoning` | Automatic |
252
305
  | `azure` | `azure/deployed-name` | Automatic |
253
306
  | `bedrock` | `bedrock/anthropic.claude-3-5-haiku-20241022-v1:0` (requires `pip install prompture[bedrock]`) | Automatic |
254
- | `openrouter` | `openrouter/anthropic/claude-2` | Automatic |
255
307
  | `moonshot` | `moonshot/kimi-k2` | Automatic |
256
308
  | `modelscope` | `modelscope/Qwen2.5-72B-Instruct` | Automatic |
257
309
  | `zai` | `zai/glm-4` | Automatic |
258
310
  | `cachibot` | `cachibot/openai/gpt-4o-mini` | Automatic |
259
- | `ollama` | `ollama/llama3.1:8b` | Free (local) |
260
311
  | `lmstudio` | `lmstudio/local-model` | Free (local) |
261
312
  | `huggingface` | `hf/model-name` | Free (local) |
262
313
  | `airllm` | `airllm/Qwen2-7B` | Free (local) |
@@ -276,6 +327,8 @@ Model strings use `"provider/model"` format. The provider prefix routes to the c
276
327
  | `mixedbread` | `mixedbread/mxbai-embed-large-v1` (embedding), `mixedbread/mxbai-rerank-large-v1` (rerank) | Automatic |
277
328
  | `openai_compatible` | `openai_compatible/<profile>/<model>` — 9 curated profiles: `fireworks`, `together`, `cerebras`, `sambanova`, `perplexity`, `nvidia`, `deepinfra`, `siliconflow`, `github_models` (or pass an explicit `endpoint=` for anything else) | Automatic where pricing is known |
278
329
 
330
+ </details>
331
+
279
332
  Aliases (`anthropic`, `gemini`, `chatgpt`, `xai`, `lm_studio`, `zhipu`, `hf`, `dalle`, `runwayml`, `hailuo`, `mistralai`, `flux`, `mxbai`) route to their canonical providers.
280
333
 
281
334
  ## Multi-Modal
@@ -1591,184 +1644,10 @@ Selected flags:
1591
1644
 
1592
1645
  Full example walkthrough: [`examples/openai_server_example.md`](examples/openai_server_example.md).
1593
1646
 
1594
- ## Integrating Prompture into Your Project
1595
-
1596
- ### FastAPI + AsyncAgent with Tools
1597
-
1598
- The most common integration pattern — an AI chat endpoint with database-backed tools:
1599
-
1600
- ```python
1601
- from fastapi import APIRouter, Depends
1602
- from prompture import AsyncAgent, ToolRegistry, ProviderEnvironment, BudgetExceededError
1603
-
1604
- router = APIRouter()
1605
-
1606
- def build_tools(db) -> ToolRegistry:
1607
- registry = ToolRegistry()
1608
-
1609
- @registry.tool
1610
- async def search_records(query: str) -> str:
1611
- """Search the database for matching records."""
1612
- results = await db.execute(...)
1613
- return format_results(results)
1614
-
1615
- return registry
1616
-
1617
- @router.post("/chat")
1618
- async def chat(message: str, db=Depends(get_db)):
1619
- env = ProviderEnvironment(openai_api_key=get_api_key_from_db(db))
1620
-
1621
- agent = AsyncAgent(
1622
- "openai/gpt-4o",
1623
- env=env,
1624
- tools=build_tools(db),
1625
- system_prompt="You are a helpful assistant with database access.",
1626
- max_cost=0.25,
1627
- budget_policy="hard_stop",
1628
- )
1629
-
1630
- try:
1631
- result = await agent.run(message)
1632
- return {"reply": result.output_text, "usage": result.usage}
1633
- except BudgetExceededError:
1634
- return {"error": "Cost limit exceeded"}, 429
1635
- ```
1636
-
1637
- ### SSE Streaming Endpoint
1647
+ ## Integrating & Extending
1638
1648
 
1639
- Stream responses via Server-Sent Events:
1640
-
1641
- ```python
1642
- from fastapi.responses import StreamingResponse
1643
- from prompture import AsyncAgent, StreamEventType
1644
-
1645
- @router.post("/chat/stream")
1646
- async def chat_stream(message: str):
1647
- agent = AsyncAgent("claude/claude-sonnet-4-6", env=env, system_prompt="...")
1648
-
1649
- async def event_stream():
1650
- async for event in agent.run_stream(message):
1651
- match event.event_type:
1652
- case StreamEventType.text_delta:
1653
- yield f"data: {json.dumps({'type': 'text', 'content': event.data})}\n\n"
1654
- case StreamEventType.tool_call:
1655
- yield f"data: {json.dumps({'type': 'tool_call', 'name': event.data['name']})}\n\n"
1656
- case StreamEventType.output:
1657
- yield f"data: {json.dumps({'type': 'done'})}\n\n"
1658
-
1659
- return StreamingResponse(event_stream(), media_type="text/event-stream")
1660
- ```
1661
-
1662
- ### Structured Extraction in Endpoints
1663
-
1664
- Use `AsyncConversation.ask_for_json()` for one-shot structured data extraction:
1665
-
1666
- ```python
1667
- from prompture import AsyncConversation
1668
-
1669
- @router.get("/insights")
1670
- async def get_insights():
1671
- conv = AsyncConversation("openai/gpt-4o", system_prompt="You analyze data.")
1672
- result = await conv.ask_for_json(
1673
- f"Analyze this data and produce insights:\n\n{context}",
1674
- {"type": "object", "properties": {
1675
- "insights": {"type": "array", "items": {"type": "object", ...}},
1676
- "summary": {"type": "string"},
1677
- }},
1678
- )
1679
- return result["json_object"]
1680
- ```
1681
-
1682
- ### Error Handling
1683
-
1684
- Key exceptions to catch in production:
1685
-
1686
- ```python
1687
- from prompture import BudgetExceededError, DriverError, ExtractionError, ValidationError
1688
-
1689
- try:
1690
- result = await agent.run(message)
1691
- except BudgetExceededError:
1692
- # Cost or token limit exceeded — return 429
1693
- pass
1694
- except DriverError:
1695
- # Provider API error (auth, rate limit, network) — return 502
1696
- pass
1697
- except ExtractionError:
1698
- # JSON parsing/validation failed — return 422
1699
- pass
1700
- except ValidationError:
1701
- # Schema validation failed — return 422
1702
- pass
1703
- ```
1704
-
1705
- ## Extending Prompture
1706
-
1707
- Prompture's provider registry is plugin-based. Every built-in provider
1708
- (OpenAI, Claude, Google, etc.) is contributed by a `ProviderPlugin`
1709
- instance registered in `prompture.plugins.builtins`. Third-party packages
1710
- can register their own providers via the `prompture.providers` Python
1711
- entry-point group — no fork required.
1712
-
1713
- ### Plugin Architecture
1714
-
1715
- At import time, `prompture` discovers plugins from two sources:
1716
-
1717
- 1. **Built-in plugins** — loaded from `prompture.plugins.builtins` directly.
1718
- 2. **External plugins** — discovered through the `prompture.providers`
1719
- entry-point group via `importlib.metadata.entry_points()`.
1720
-
1721
- Each plugin returns one or more `ProviderDescriptor` instances. Prompture
1722
- then wires them up to the LLM, audio, image, video, embedding, rerank,
1723
- and moderation driver registries.
1724
-
1725
- ### Writing a Plugin
1726
-
1727
- Create a Python file that subclasses `ProviderPlugin`:
1728
-
1729
- ```python
1730
- # my_package/plugin.py
1731
- from prompture.plugins import ProviderPlugin
1732
- from prompture.drivers.provider_descriptors import (
1733
- ProviderDescriptor,
1734
- DriverSpec,
1735
- )
1736
-
1737
-
1738
- class MyProviderPlugin(ProviderPlugin):
1739
- name = "my_provider"
1740
- version = "0.1.0"
1741
-
1742
- def descriptors(self):
1743
- return [
1744
- ProviderDescriptor(
1745
- name="my_provider",
1746
- llm_sync=DriverSpec(
1747
- cls_path="my_package.driver.MyDriver",
1748
- kwarg_map={"api_key": "my_provider_api_key"},
1749
- default_model="my-model-1",
1750
- ),
1751
- display_name="My Provider",
1752
- is_configured_check="my_provider_api_key",
1753
- ),
1754
- ]
1755
- ```
1756
-
1757
- Then declare the entry point in your package's `pyproject.toml`:
1758
-
1759
- ```toml
1760
- [project.entry-points."prompture.providers"]
1761
- my_provider = "my_package.plugin:MyProviderPlugin"
1762
- ```
1763
-
1764
- Once `pip install`-ed alongside Prompture, your provider becomes
1765
- available automatically:
1766
-
1767
- ```python
1768
- from prompture import get_driver_for_model
1769
-
1770
- driver = get_driver_for_model("my_provider/my-model-1")
1771
- ```
1649
+ - **FastAPI integration patterns** (AsyncAgent + tools, SSE streaming, structured endpoints, error handling) — see [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md#integrating-prompture-into-your-project)
1650
+ - **Custom provider plugins** (architecture + a complete `ProviderPlugin` walkthrough) — see [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md#extending-prompture)
1772
1651
 
1773
1652
  ## Development
1774
1653