prompture 1.1.3.dev3__tar.gz → 1.1.4.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 (418) hide show
  1. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/PKG-INFO +1 -1
  2. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/_version.py +2 -2
  3. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/__init__.py +9 -1
  4. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/assistant.py +66 -16
  5. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/review_loop.py +129 -11
  6. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/coding_agent_events.py +4 -4
  7. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/coding_agents.py +1 -0
  8. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/PKG-INFO +1 -1
  9. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-driver/SKILL.md +0 -0
  10. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-driver/references/driver-template.md +0 -0
  11. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-example/SKILL.md +0 -0
  12. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-field/SKILL.md +0 -0
  13. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-persona/SKILL.md +0 -0
  14. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-test/SKILL.md +0 -0
  15. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/add-tool/SKILL.md +0 -0
  16. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/create-pr/SKILL.md +0 -0
  17. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/run-tests/SKILL.md +0 -0
  18. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
  19. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.claude/skills/update-pricing/SKILL.md +0 -0
  20. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.env.copy +0 -0
  21. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/FUNDING.yml +0 -0
  22. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  23. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
  24. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
  25. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
  26. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/scripts/update_docs_version.py +0 -0
  27. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/scripts/update_wrapper_version.py +0 -0
  28. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/workflows/dev.yml +0 -0
  29. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/workflows/documentation.yml +0 -0
  30. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/workflows/pricing-freshness.yml +0 -0
  31. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/workflows/publish.yml +0 -0
  32. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.github/workflows/security.yml +0 -0
  33. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/.safety-project.ini +0 -0
  34. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/AGENTS.md +0 -0
  35. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/BREAKING_CHANGES.md +0 -0
  36. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/CLAUDE.md +0 -0
  37. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/CONTRIBUTING.md +0 -0
  38. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/LICENSE +0 -0
  39. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/MANIFEST.in +0 -0
  40. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/README.md +0 -0
  41. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/ROADMAP.md +0 -0
  42. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/SECURITY.md +0 -0
  43. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/dev.ps1 +0 -0
  44. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/dev.sh +0 -0
  45. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/mypy_errors.txt +0 -0
  46. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/README.md +0 -0
  47. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_json/README.md +0 -0
  48. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
  49. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_json/pyproject.toml +0 -0
  50. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_json/test.py +0 -0
  51. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_toon/README.md +0 -0
  52. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
  53. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_toon/pyproject.toml +0 -0
  54. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/packages/llm_to_toon/test.py +0 -0
  55. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/__init__.py +0 -0
  56. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/agent.py +0 -0
  57. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/async_agent.py +0 -0
  58. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/async_conversation.py +0 -0
  59. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/async_deep_agent.py +0 -0
  60. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/conversation.py +0 -0
  61. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep/__init__.py +0 -0
  62. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep/planner.py +0 -0
  63. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep/subagents.py +0 -0
  64. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep/summarizer.py +0 -0
  65. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep/vfs.py +0 -0
  66. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep_agent.py +0 -0
  67. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep_prompts.py +0 -0
  68. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/deep_state.py +0 -0
  69. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/persona.py +0 -0
  70. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/simulated_tools.py +0 -0
  71. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/skills.py +0 -0
  72. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/tools_schema.py +0 -0
  73. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/agents/types.py +0 -0
  74. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/aio/__init__.py +0 -0
  75. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/bridges/__init__.py +0 -0
  76. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/bridges/tukuy_backend.py +0 -0
  77. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/cli/__init__.py +0 -0
  78. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/cli/cli.py +0 -0
  79. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/cli/formatters.py +0 -0
  80. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/cli/runner.py +0 -0
  81. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/cli/server.py +0 -0
  82. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/dataset/__init__.py +0 -0
  83. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/dataset/formats.py +0 -0
  84. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/dataset/schemas.py +0 -0
  85. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/dataset/synth.py +0 -0
  86. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/__init__.py +0 -0
  87. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/airllm_driver.py +0 -0
  88. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/assemblyai_stt_driver.py +0 -0
  89. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_airllm_driver.py +0 -0
  90. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
  91. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_azure_driver.py +0 -0
  92. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_base.py +0 -0
  93. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_bedrock_driver.py +0 -0
  94. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
  95. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_cachibot_driver.py +0 -0
  96. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
  97. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_claude_driver.py +0 -0
  98. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_cohere_driver.py +0 -0
  99. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
  100. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
  101. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
  102. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
  103. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_deepseek_driver.py +0 -0
  104. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
  105. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
  106. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_embedding_base.py +0 -0
  107. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
  108. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
  109. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_google_driver.py +0 -0
  110. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_google_img_gen_driver.py +0 -0
  111. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_google_vertexai_driver.py +0 -0
  112. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_grok_driver.py +0 -0
  113. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
  114. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
  115. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_groq_driver.py +0 -0
  116. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_hugging_driver.py +0 -0
  117. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
  118. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_img_gen_base.py +0 -0
  119. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_jina_embedding_driver.py +0 -0
  120. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_jina_rerank_driver.py +0 -0
  121. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
  122. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
  123. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_lmstudio_driver.py +0 -0
  124. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_local_http_driver.py +0 -0
  125. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
  126. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_minimax_driver.py +0 -0
  127. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
  128. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_mistral_driver.py +0 -0
  129. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
  130. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_modelscope_driver.py +0 -0
  131. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_moonshot_driver.py +0 -0
  132. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
  133. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
  134. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
  135. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_ollama_driver.py +0 -0
  136. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
  137. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_compatible_driver.py +0 -0
  138. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_driver.py +0 -0
  139. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_embedding_driver.py +0 -0
  140. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
  141. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_moderation_driver.py +0 -0
  142. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_stt_driver.py +0 -0
  143. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openai_tts_driver.py +0 -0
  144. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_openrouter_driver.py +0 -0
  145. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
  146. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_registry.py +0 -0
  147. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
  148. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_runway_tts_driver.py +0 -0
  149. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
  150. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
  151. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_stt_base.py +0 -0
  152. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_tts_base.py +0 -0
  153. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_video_gen_base.py +0 -0
  154. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
  155. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
  156. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/async_zai_driver.py +0 -0
  157. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/audio_registry.py +0 -0
  158. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/azure_config.py +0 -0
  159. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/azure_driver.py +0 -0
  160. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/base.py +0 -0
  161. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/bedrock_driver.py +0 -0
  162. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/bfl_img_gen_driver.py +0 -0
  163. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/cachibot_driver.py +0 -0
  164. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/cartesia_tts_driver.py +0 -0
  165. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/claude_driver.py +0 -0
  166. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/cohere_driver.py +0 -0
  167. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/cohere_embedding_driver.py +0 -0
  168. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/cohere_rerank_driver.py +0 -0
  169. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/deepgram_stt_driver.py +0 -0
  170. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/deepgram_tts_driver.py +0 -0
  171. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/deepseek_driver.py +0 -0
  172. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/driver_registry.py +0 -0
  173. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
  174. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
  175. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/embedding_base.py +0 -0
  176. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/embedding_registry.py +0 -0
  177. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/fal_img_gen_driver.py +0 -0
  178. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/fal_video_gen_driver.py +0 -0
  179. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/google_driver.py +0 -0
  180. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/google_img_gen_driver.py +0 -0
  181. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/google_vertexai_driver.py +0 -0
  182. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/grok_driver.py +0 -0
  183. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/grok_img_gen_driver.py +0 -0
  184. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/grok_video_gen_driver.py +0 -0
  185. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/groq_driver.py +0 -0
  186. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/hugging_driver.py +0 -0
  187. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
  188. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/img_gen_base.py +0 -0
  189. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/img_gen_registry.py +0 -0
  190. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/jina_embedding_driver.py +0 -0
  191. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/jina_rerank_driver.py +0 -0
  192. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/kling_img_gen_driver.py +0 -0
  193. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/kling_video_gen_driver.py +0 -0
  194. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/lmstudio_driver.py +0 -0
  195. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/local_http_driver.py +0 -0
  196. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/luma_video_gen_driver.py +0 -0
  197. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/minimax_driver.py +0 -0
  198. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/minimax_video_gen_driver.py +0 -0
  199. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/mistral_driver.py +0 -0
  200. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/mistral_moderation_driver.py +0 -0
  201. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/modelscope_driver.py +0 -0
  202. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/moderation_base.py +0 -0
  203. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/moderation_registry.py +0 -0
  204. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/moonshot_driver.py +0 -0
  205. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/mxbai_embedding_driver.py +0 -0
  206. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/mxbai_rerank_driver.py +0 -0
  207. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/nomic_embedding_driver.py +0 -0
  208. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/ollama_driver.py +0 -0
  209. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/ollama_embedding_driver.py +0 -0
  210. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_compatible_driver.py +0 -0
  211. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_driver.py +0 -0
  212. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_embedding_driver.py +0 -0
  213. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_img_gen_driver.py +0 -0
  214. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_moderation_driver.py +0 -0
  215. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_stt_driver.py +0 -0
  216. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openai_tts_driver.py +0 -0
  217. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/openrouter_driver.py +0 -0
  218. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/pika_video_gen_driver.py +0 -0
  219. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/provider_descriptors.py +0 -0
  220. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/registry.py +0 -0
  221. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/rerank_base.py +0 -0
  222. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/rerank_registry.py +0 -0
  223. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/runway_audio_transform_driver.py +0 -0
  224. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/runway_capabilities.py +0 -0
  225. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/runway_img_gen_driver.py +0 -0
  226. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/runway_tts_driver.py +0 -0
  227. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/runway_video_gen_driver.py +0 -0
  228. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/stability_img_gen_driver.py +0 -0
  229. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/stt_base.py +0 -0
  230. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/tts_base.py +0 -0
  231. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/video_gen_base.py +0 -0
  232. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/video_gen_registry.py +0 -0
  233. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/vision_helpers.py +0 -0
  234. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/voyage_embedding_driver.py +0 -0
  235. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/voyage_rerank_driver.py +0 -0
  236. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/drivers/zai_driver.py +0 -0
  237. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/exceptions.py +0 -0
  238. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/__init__.py +0 -0
  239. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/async_core.py +0 -0
  240. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/code_extraction.py +0 -0
  241. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/core.py +0 -0
  242. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/fields.py +0 -0
  243. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/reasoning.py +0 -0
  244. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/strategy.py +0 -0
  245. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/tools.py +0 -0
  246. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/tukuy_bridge.py +0 -0
  247. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/extraction/validator.py +0 -0
  248. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/__init__.py +0 -0
  249. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/async_groups.py +0 -0
  250. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/consensus.py +0 -0
  251. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/debate.py +0 -0
  252. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/groups.py +0 -0
  253. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/groups/types.py +0 -0
  254. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/__init__.py +0 -0
  255. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/budget.py +0 -0
  256. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/cache.py +0 -0
  257. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/callbacks.py +0 -0
  258. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/capabilities.py +0 -0
  259. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/coding_agent_specs.py +0 -0
  260. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/cost_mixin.py +0 -0
  261. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/discovery.py +0 -0
  262. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/ledger.py +0 -0
  263. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/logging.py +0 -0
  264. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/model_rates.py +0 -0
  265. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/pricing.py +0 -0
  266. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/provider_env.py +0 -0
  267. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/anthropic.json +0 -0
  268. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/azure.json +0 -0
  269. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/bedrock.json +0 -0
  270. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/cerebras.json +0 -0
  271. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/cohere.json +0 -0
  272. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/deepinfra.json +0 -0
  273. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/deepseek.json +0 -0
  274. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/fireworks.json +0 -0
  275. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/google.json +0 -0
  276. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/google_vertexai.json +0 -0
  277. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/groq.json +0 -0
  278. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/jina.json +0 -0
  279. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/mistral.json +0 -0
  280. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/mixedbread.json +0 -0
  281. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/moonshot.json +0 -0
  282. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/nomic.json +0 -0
  283. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/nvidia.json +0 -0
  284. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/openai.json +0 -0
  285. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/openrouter.json +0 -0
  286. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/perplexity.json +0 -0
  287. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/sambanova.json +0 -0
  288. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/siliconflow.json +0 -0
  289. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/together.json +0 -0
  290. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/voyage.json +0 -0
  291. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/rates/xai.json +0 -0
  292. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/session.py +0 -0
  293. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/settings.py +0 -0
  294. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/tracker.py +0 -0
  295. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/infra/tukuy_backend.py +0 -0
  296. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/__init__.py +0 -0
  297. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/chunking.py +0 -0
  298. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/detect.py +0 -0
  299. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/document.py +0 -0
  300. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/__init__.py +0 -0
  301. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/base.py +0 -0
  302. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/csv_parser.py +0 -0
  303. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/docx.py +0 -0
  304. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/html.py +0 -0
  305. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/markdown.py +0 -0
  306. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/pdf.py +0 -0
  307. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/ingestion/parsers/xlsx.py +0 -0
  308. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/integrations/__init__.py +0 -0
  309. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/integrations/tukuy_bridge.py +0 -0
  310. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/media/__init__.py +0 -0
  311. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/media/audio.py +0 -0
  312. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/media/image.py +0 -0
  313. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/media/video.py +0 -0
  314. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/01-why-prompture.md +0 -0
  315. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/02-installation.md +0 -0
  316. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/03-quickstart.md +0 -0
  317. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/04-toon-input.md +0 -0
  318. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/05-test-harness.md +0 -0
  319. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/06-stability.md +0 -0
  320. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pages/07-migration.md +0 -0
  321. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/persistence/__init__.py +0 -0
  322. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/persistence/history.py +0 -0
  323. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/persistence/serialization.py +0 -0
  324. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/persistence/store.py +0 -0
  325. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pipeline/__init__.py +0 -0
  326. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pipeline/pipeline.py +0 -0
  327. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pipeline/resolver.py +0 -0
  328. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/pipeline/routing.py +0 -0
  329. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/__init__.py +0 -0
  330. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/base.py +0 -0
  331. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/__init__.py +0 -0
  332. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/_aliases.py +0 -0
  333. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
  334. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/audio_plugin.py +0 -0
  335. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/cloud_plugin.py +0 -0
  336. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
  337. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/extras_plugin.py +0 -0
  338. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/google_plugin.py +0 -0
  339. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/image_plugin.py +0 -0
  340. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/local_plugin.py +0 -0
  341. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
  342. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/openai_plugin.py +0 -0
  343. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/builtins/video_plugin.py +0 -0
  344. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/plugins/discovery.py +0 -0
  345. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/py.typed +0 -0
  346. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/__init__.py +0 -0
  347. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/__init__.py +0 -0
  348. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/base.py +0 -0
  349. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/character.py +0 -0
  350. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/chunker_registry.py +0 -0
  351. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/markdown.py +0 -0
  352. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/recursive.py +0 -0
  353. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/semantic.py +0 -0
  354. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/chunkers/token.py +0 -0
  355. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/documents.py +0 -0
  356. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loader_registry.py +0 -0
  357. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/__init__.py +0 -0
  358. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/csv_loader.py +0 -0
  359. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/docx_loader.py +0 -0
  360. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/epub_loader.py +0 -0
  361. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/html_loader.py +0 -0
  362. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/json_loader.py +0 -0
  363. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/markdown_loader.py +0 -0
  364. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/pdf_loader.py +0 -0
  365. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/text_loader.py +0 -0
  366. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/loaders/xlsx_loader.py +0 -0
  367. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/pipeline.py +0 -0
  368. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/__init__.py +0 -0
  369. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/base.py +0 -0
  370. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/hybrid.py +0 -0
  371. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/mmr.py +0 -0
  372. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/retriever_registry.py +0 -0
  373. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/retrievers/similarity.py +0 -0
  374. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/__init__.py +0 -0
  375. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/base.py +0 -0
  376. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/chroma.py +0 -0
  377. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/faiss.py +0 -0
  378. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/pgvector.py +0 -0
  379. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/pinecone.py +0 -0
  380. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/qdrant.py +0 -0
  381. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
  382. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/rag/vectorstores/weaviate.py +0 -0
  383. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/refusal/__init__.py +0 -0
  384. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/refusal/detector.py +0 -0
  385. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/refusal/evaluator.py +0 -0
  386. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/refusal/markers.py +0 -0
  387. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/__init__.py +0 -0
  388. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/generator.py +0 -0
  389. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
  390. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/README.md.j2 +0 -0
  391. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/config.py.j2 +0 -0
  392. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/env.example.j2 +0 -0
  393. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/main.py.j2 +0 -0
  394. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/models.py.j2 +0 -0
  395. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
  396. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/security/__init__.py +0 -0
  397. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/security/injection.py +0 -0
  398. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/security/redaction.py +0 -0
  399. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/testing/__init__.py +0 -0
  400. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/testing/driver_contract.py +0 -0
  401. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/tools/__init__.py +0 -0
  402. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/tools/code_exec.py +0 -0
  403. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture/tools/web_search.py +0 -0
  404. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/SOURCES.txt +0 -0
  405. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/dependency_links.txt +0 -0
  406. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/entry_points.txt +0 -0
  407. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/requires.txt +0 -0
  408. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture.egg-info/top_level.txt +0 -0
  409. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/prompture_cost_tracking.md +0 -0
  410. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/pyproject.toml +0 -0
  411. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/requirements.txt +0 -0
  412. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/scripts/check_pricing_freshness.py +0 -0
  413. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/setup.cfg +0 -0
  414. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/specs/basic_extraction.json +0 -0
  415. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/specs/schema_validation.json +0 -0
  416. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/specs/strategy_comparison.json +0 -0
  417. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/test.py +0 -0
  418. {prompture-1.1.3.dev3 → prompture-1.1.4.dev1}/test_version_diagnosis.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.1.3.dev3
3
+ Version: 1.1.4.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
@@ -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.1.3.dev3'
22
- __version_tuple__ = version_tuple = (1, 1, 3, 'dev3')
21
+ __version__ = version = '1.1.4.dev1'
22
+ __version_tuple__ = version_tuple = (1, 1, 4, 'dev1')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -38,7 +38,13 @@ from .persona import (
38
38
  reset_persona_registry,
39
39
  reset_trait_registry,
40
40
  )
41
- from .review_loop import AsyncReviewLoop, ReviewLoopIteration, ReviewLoopResult
41
+ from .review_loop import (
42
+ AsyncReviewLoop,
43
+ ReviewLoopEvent,
44
+ ReviewLoopEventType,
45
+ ReviewLoopIteration,
46
+ ReviewLoopResult,
47
+ )
42
48
  from .skills import (
43
49
  SKILLS,
44
50
  SkillInfo,
@@ -97,6 +103,8 @@ __all__ = [
97
103
  "GuardrailError",
98
104
  "ModelRetry",
99
105
  "Persona",
106
+ "ReviewLoopEvent",
107
+ "ReviewLoopEventType",
100
108
  "ReviewLoopIteration",
101
109
  "ReviewLoopResult",
102
110
  "RunContext",
@@ -62,7 +62,7 @@ import asyncio
62
62
  import dataclasses
63
63
  import logging
64
64
  import threading
65
- from collections.abc import AsyncIterator, Callable
65
+ from collections.abc import AsyncIterator
66
66
  from typing import Any
67
67
 
68
68
  from .persona import Persona
@@ -155,24 +155,31 @@ class Assistant:
155
155
  name: str
156
156
  persona: Persona
157
157
  skills: tuple[SkillInfo, ...] = ()
158
- tools: tuple[Callable[..., Any], ...] = ()
158
+ # Either a tuple of Python callables OR a ToolRegistry — both are
159
+ # accepted by the underlying AsyncAgent.
160
+ tools: Any = ()
159
161
  model: str | None = None
160
162
  coding_agent: str | None = None
161
163
  description: str = ""
162
164
  variables: dict[str, Any] = dataclasses.field(default_factory=dict)
163
165
  enable_planning: bool = False
164
166
  output_type: Any = None
167
+ output_key: str | None = None
165
168
  options: dict[str, Any] = dataclasses.field(default_factory=dict)
166
169
  coding_agent_options: dict[str, Any] = dataclasses.field(default_factory=dict)
170
+ # Extra kwargs forwarded to AsyncDeepAgent when enable_planning=True
171
+ # (e.g. {"enable_vfs": False, "enable_summarization": False}).
172
+ deep_agent_options: dict[str, Any] = dataclasses.field(default_factory=dict)
167
173
 
168
174
  # ----- construction --------------------------------------------------
169
175
 
170
176
  def __post_init__(self) -> None:
171
- # Normalise iterable args to immutable tuples so the dataclass
172
- # stays hashable + frozen-friendly.
177
+ # Normalise skills to an immutable tuple. Tools may be either a
178
+ # tuple of callables OR a ToolRegistry — both are passed
179
+ # through to AsyncAgent unchanged.
173
180
  if not isinstance(self.skills, tuple):
174
181
  object.__setattr__(self, "skills", tuple(self.skills))
175
- if not isinstance(self.tools, tuple):
182
+ if isinstance(self.tools, (list, set)):
176
183
  object.__setattr__(self, "tools", tuple(self.tools))
177
184
 
178
185
  if bool(self.model) == bool(self.coding_agent):
@@ -183,8 +190,7 @@ class Assistant:
183
190
  )
184
191
  if self.enable_planning and not self.model:
185
192
  raise ValueError(
186
- "enable_planning=True only applies to the LLM backend "
187
- "(set `model=...`, not `coding_agent=...`)."
193
+ "enable_planning=True only applies to the LLM backend (set `model=...`, not `coding_agent=...`)."
188
194
  )
189
195
 
190
196
  # ----- composition ---------------------------------------------------
@@ -204,10 +210,7 @@ class Assistant:
204
210
  persona = self.persona
205
211
 
206
212
  for skill in self.skills:
207
- block = (
208
- f"## Skill: {skill.name}\n"
209
- f"{skill.description}\n\n{skill.instructions}".rstrip()
210
- )
213
+ block = f"## Skill: {skill.name}\n{skill.description}\n\n{skill.instructions}".rstrip()
211
214
  persona = persona.extend(block)
212
215
 
213
216
  # Push merged variables back so render() (called by AsyncAgent)
@@ -275,19 +278,52 @@ class Assistant:
275
278
 
276
279
  # ----- LLM backend ---------------------------------------------------
277
280
 
281
+ def build_async_agent(self, **vars: Any) -> Any:
282
+ """Construct the underlying ``AsyncAgent`` (or ``AsyncDeepAgent``).
283
+
284
+ Use this when you want the Assistant as a *configuration* bundle
285
+ (persona + skills + tools + model + options) but need to drive
286
+ the underlying agent yourself — through a group, a streaming
287
+ callback machinery, or any other orchestration layer that
288
+ operates on :class:`AsyncAgent` directly.
289
+
290
+ Args:
291
+ **vars: Per-call template variables merged into the persona
292
+ before rendering. Equivalent to the per-call kwargs of
293
+ :meth:`arun` / :meth:`astream`, but applied at
294
+ construction time.
295
+
296
+ Returns:
297
+ An :class:`AsyncAgent` when ``enable_planning=False``,
298
+ otherwise an :class:`AsyncDeepAgent`.
299
+
300
+ Raises:
301
+ ValueError: When this Assistant is configured with a
302
+ ``coding_agent`` backend (it shells out to a CLI and has
303
+ no in-process agent to expose).
304
+ """
305
+ if self.coding_agent:
306
+ raise ValueError(
307
+ "build_async_agent() is only available for the LLM backend; "
308
+ f"this Assistant uses coding_agent={self.coding_agent!r}."
309
+ )
310
+ return self._build_async_agent(call_vars=vars)
311
+
278
312
  def _build_async_agent(self, *, call_vars: dict[str, Any]) -> Any:
279
313
  persona = self._composed_persona(call_vars)
314
+ tools_arg = self._tools_for_agent()
280
315
  if self.enable_planning:
281
316
  from .async_deep_agent import AsyncDeepAgent
282
317
 
283
318
  return AsyncDeepAgent(
284
319
  self.model or "",
285
320
  system_prompt=persona,
286
- tools=list(self.tools) or None,
321
+ tools=tools_arg,
287
322
  name=self.name,
288
323
  description=self.description,
289
324
  enable_planning=True,
290
325
  options=dict(self.options) or None,
326
+ **dict(self.deep_agent_options),
291
327
  )
292
328
 
293
329
  from .async_agent import AsyncAgent
@@ -295,13 +331,29 @@ class Assistant:
295
331
  return AsyncAgent(
296
332
  self.model or "",
297
333
  system_prompt=persona,
298
- tools=list(self.tools) or None,
334
+ tools=tools_arg,
299
335
  output_type=self.output_type,
336
+ output_key=self.output_key,
300
337
  name=self.name,
301
338
  description=self.description,
302
339
  options=dict(self.options) or None,
303
340
  )
304
341
 
342
+ def _tools_for_agent(self) -> Any:
343
+ """Coerce ``self.tools`` into the shape ``AsyncAgent`` expects.
344
+
345
+ Returns ``None`` when nothing is configured, the underlying
346
+ ``ToolRegistry`` when one was passed in directly, or a list of
347
+ callables otherwise.
348
+ """
349
+ if not self.tools:
350
+ return None
351
+ # Tuples / lists of callables → list (AsyncAgent expects a list).
352
+ if isinstance(self.tools, tuple):
353
+ return list(self.tools) or None
354
+ # Any other object (e.g. ToolRegistry) is passed through verbatim.
355
+ return self.tools
356
+
305
357
  async def _run_llm(
306
358
  self,
307
359
  prompt: str,
@@ -429,9 +481,7 @@ def clear_assistant_registry() -> None:
429
481
  def _from_registry(cls: type[Assistant], name: str) -> Assistant:
430
482
  found = get_assistant(name)
431
483
  if found is None:
432
- raise KeyError(
433
- f"No Assistant registered as {name!r}. Known: {get_assistant_names()}"
434
- )
484
+ raise KeyError(f"No Assistant registered as {name!r}. Known: {get_assistant_names()}")
435
485
  return found
436
486
 
437
487
 
@@ -50,8 +50,8 @@ from __future__ import annotations
50
50
 
51
51
  import dataclasses
52
52
  import logging
53
- from collections.abc import Callable
54
- from typing import Any, Protocol, runtime_checkable
53
+ from collections.abc import AsyncIterator, Callable
54
+ from typing import Any, Literal, Protocol, runtime_checkable
55
55
 
56
56
  logger = logging.getLogger("prompture.review_loop")
57
57
 
@@ -96,6 +96,53 @@ class ReviewLoopIteration:
96
96
  review_result: Any = None
97
97
 
98
98
 
99
+ ReviewLoopEventType = Literal[
100
+ "iteration_started",
101
+ "coder_done",
102
+ "reviewer_done",
103
+ "approved",
104
+ "rejected",
105
+ "done",
106
+ ]
107
+
108
+
109
+ @dataclasses.dataclass(frozen=True)
110
+ class ReviewLoopEvent:
111
+ """Event yielded by :meth:`AsyncReviewLoop.astream`.
112
+
113
+ Field meaning per ``type``:
114
+
115
+ * ``iteration_started`` — emitted before each coder run. ``index``
116
+ is the 0-based iteration number; ``prompt`` is the exact text the
117
+ coder will receive (for the first iteration this is the user
118
+ prompt; for later iterations it is ``feedback_prompt(...)``
119
+ output).
120
+ * ``coder_done`` — coder finished. ``code_output`` populated;
121
+ ``code_result`` carries the raw coder return value (e.g.
122
+ :class:`AssistantResult` or :class:`AgentResult`) for backend-
123
+ specific fields like cost.
124
+ * ``reviewer_done`` — reviewer finished. ``review_output`` +
125
+ ``review_result`` populated; ``approved`` reflects the
126
+ ``approve_when`` verdict for this iteration.
127
+ * ``approved`` — terminal: the loop is about to exit because the
128
+ latest iteration was approved.
129
+ * ``rejected`` — terminal: the loop is about to exit because
130
+ ``max_iters`` was hit without approval.
131
+ * ``done`` — emitted last, always. ``result`` carries the same
132
+ :class:`ReviewLoopResult` that :meth:`arun` would return.
133
+ """
134
+
135
+ type: ReviewLoopEventType
136
+ index: int = -1 # iteration index; -1 for the terminal "done" event
137
+ prompt: str = "" # only on iteration_started
138
+ code_output: str = "" # populated from coder_done onwards
139
+ review_output: str = "" # populated from reviewer_done onwards
140
+ approved: bool = False
141
+ code_result: Any = None
142
+ review_result: Any = None
143
+ result: Any = None # only on the final "done" event
144
+
145
+
99
146
  @dataclasses.dataclass(frozen=True)
100
147
  class ReviewLoopResult:
101
148
  """Final result returned by :meth:`AsyncReviewLoop.arun`."""
@@ -167,9 +214,7 @@ class AsyncReviewLoop:
167
214
  review_prompt: Callable[[str], str] = dataclasses.field(
168
215
  default=lambda code: f"Review this work and give feedback:\n\n{code}"
169
216
  )
170
- feedback_prompt: Callable[[str, ReviewLoopIteration], str] = (
171
- _default_feedback_prompt
172
- )
217
+ feedback_prompt: Callable[[str, ReviewLoopIteration], str] = _default_feedback_prompt
173
218
 
174
219
  def __post_init__(self) -> None:
175
220
  if self.max_iters < 1:
@@ -182,7 +227,10 @@ class AsyncReviewLoop:
182
227
  coder_kwargs: dict[str, Any] | None = None,
183
228
  reviewer_kwargs: dict[str, Any] | None = None,
184
229
  ) -> ReviewLoopResult:
185
- """Run the loop to completion.
230
+ """Run the loop to completion and return the final result.
231
+
232
+ Equivalent to consuming :meth:`astream` and returning its final
233
+ ``done`` event's ``result``.
186
234
 
187
235
  Args:
188
236
  prompt: The initial task for the coder.
@@ -191,21 +239,69 @@ class AsyncReviewLoop:
191
239
  reviewer_kwargs: Extra kwargs forwarded to every
192
240
  ``reviewer.arun`` call.
193
241
  """
242
+ final: ReviewLoopResult | None = None
243
+ async for event in self.astream(
244
+ prompt,
245
+ coder_kwargs=coder_kwargs,
246
+ reviewer_kwargs=reviewer_kwargs,
247
+ ):
248
+ if event.type == "done":
249
+ final = event.result
250
+ assert final is not None # astream always emits a done event
251
+ return final
252
+
253
+ async def astream(
254
+ self,
255
+ prompt: str,
256
+ *,
257
+ coder_kwargs: dict[str, Any] | None = None,
258
+ reviewer_kwargs: dict[str, Any] | None = None,
259
+ ) -> AsyncIterator[ReviewLoopEvent]:
260
+ """Run the loop and yield :class:`ReviewLoopEvent` events live.
261
+
262
+ The sequence per iteration is:
263
+ ``iteration_started`` → ``coder_done`` → ``reviewer_done``.
264
+ After the final iteration, ``approved`` or ``rejected`` fires,
265
+ followed by a single ``done`` event carrying the full
266
+ :class:`ReviewLoopResult`.
267
+
268
+ UI consumers can re-emit each event onto their own transport
269
+ (WebSocket, SSE, log line) without buffering the whole run.
270
+ """
194
271
  coder_kwargs = coder_kwargs or {}
195
272
  reviewer_kwargs = reviewer_kwargs or {}
196
273
  history: list[ReviewLoopIteration] = []
197
274
  current_prompt = prompt
198
275
 
199
276
  for i in range(self.max_iters):
277
+ yield ReviewLoopEvent(
278
+ type="iteration_started",
279
+ index=i,
280
+ prompt=current_prompt,
281
+ )
282
+
200
283
  code_result = await self.coder.arun(current_prompt, **coder_kwargs)
201
284
  code_text = getattr(code_result, "output", "") or ""
202
-
203
- review_result = await self.reviewer.arun(
204
- self.review_prompt(code_text), **reviewer_kwargs
285
+ yield ReviewLoopEvent(
286
+ type="coder_done",
287
+ index=i,
288
+ code_output=code_text,
289
+ code_result=code_result,
205
290
  )
206
- review_text = getattr(review_result, "output", "") or ""
207
291
 
292
+ review_result = await self.reviewer.arun(self.review_prompt(code_text), **reviewer_kwargs)
293
+ review_text = getattr(review_result, "output", "") or ""
208
294
  approved = bool(self.approve_when(review_result))
295
+ yield ReviewLoopEvent(
296
+ type="reviewer_done",
297
+ index=i,
298
+ code_output=code_text,
299
+ review_output=review_text,
300
+ approved=approved,
301
+ code_result=code_result,
302
+ review_result=review_result,
303
+ )
304
+
209
305
  iteration = ReviewLoopIteration(
210
306
  index=i,
211
307
  code_output=code_text,
@@ -227,16 +323,38 @@ class AsyncReviewLoop:
227
323
  current_prompt = self.feedback_prompt(prompt, iteration)
228
324
 
229
325
  last = history[-1]
230
- return ReviewLoopResult(
326
+ result = ReviewLoopResult(
231
327
  output=last.code_output,
232
328
  approved=last.approved,
233
329
  iterations=len(history),
234
330
  history=tuple(history),
235
331
  )
236
332
 
333
+ yield ReviewLoopEvent(
334
+ type="approved" if result.approved else "rejected",
335
+ index=last.index,
336
+ code_output=result.output,
337
+ review_output=last.review_output,
338
+ approved=result.approved,
339
+ code_result=last.code_result,
340
+ review_result=last.review_result,
341
+ )
342
+ yield ReviewLoopEvent(
343
+ type="done",
344
+ index=last.index,
345
+ code_output=result.output,
346
+ review_output=last.review_output,
347
+ approved=result.approved,
348
+ code_result=last.code_result,
349
+ review_result=last.review_result,
350
+ result=result,
351
+ )
352
+
237
353
 
238
354
  __all__ = [
239
355
  "AsyncReviewLoop",
356
+ "ReviewLoopEvent",
357
+ "ReviewLoopEventType",
240
358
  "ReviewLoopIteration",
241
359
  "ReviewLoopResult",
242
360
  ]
@@ -251,10 +251,10 @@ _QUESTION_PHRASE_RE = re.compile(
251
251
 
252
252
  _CHOICE_LINE_RE = re.compile(
253
253
  r"^\s*(?:"
254
- r"(?P<num>\d+)[.\):]\s+|" # 1. foo 1) foo 1: foo
255
- r"[-*•]\s+|" # - foo * foo • foo
256
- r"\([a-zA-Z]\)\s+|" # (a) foo
257
- r"[a-zA-Z][.\)]\s+" # a) foo a. foo
254
+ r"(?P<num>\d+)[.\):]\s+|" # 1. foo 1) foo 1: foo
255
+ r"[-*•]\s+|" # - foo * foo • foo
256
+ r"\([a-zA-Z]\)\s+|" # (a) foo
257
+ r"[a-zA-Z][.\)]\s+" # a) foo a. foo
258
258
  r")(?P<body>.+\S)\s*$"
259
259
  )
260
260
 
@@ -55,6 +55,7 @@ def _record_into_session(
55
55
  }
56
56
  session.record(response_info)
57
57
 
58
+
58
59
  CodingAgentId = str
59
60
  ApprovalMode = Literal["default", "auto", "yolo"]
60
61
  OutputFormat = Literal["text", "json"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.1.3.dev3
3
+ Version: 1.1.4.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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes