prompture 1.13.4.dev1__tar.gz → 1.13.5.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 (678) hide show
  1. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.env.copy +47 -4
  2. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/PKG-INFO +170 -21
  3. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/README.md +162 -19
  4. prompture-1.13.5.dev1/llms.txt +55 -0
  5. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/__init__.py +40 -0
  6. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/_version.py +2 -2
  7. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/agent.py +8 -3
  8. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/async_agent.py +8 -3
  9. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep_agent.py +3 -1
  10. prompture-1.13.5.dev1/prompture/capabilities/__init__.py +68 -0
  11. prompture-1.13.5.dev1/prompture/capabilities/backends.py +413 -0
  12. prompture-1.13.5.dev1/prompture/capabilities/builtin_checks.py +46 -0
  13. prompture-1.13.5.dev1/prompture/capabilities/challenge.py +75 -0
  14. prompture-1.13.5.dev1/prompture/capabilities/errors.py +93 -0
  15. prompture-1.13.5.dev1/prompture/capabilities/health.py +188 -0
  16. prompture-1.13.5.dev1/prompture/capabilities/http.py +196 -0
  17. prompture-1.13.5.dev1/prompture/capabilities/probe.py +215 -0
  18. prompture-1.13.5.dev1/prompture/capabilities/url_safety.py +208 -0
  19. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/cli/cli.py +46 -0
  20. prompture-1.13.5.dev1/prompture/cli/doctor_cmd.py +136 -0
  21. prompture-1.13.5.dev1/prompture/cli/mcp_cmd.py +365 -0
  22. prompture-1.13.5.dev1/prompture/cli/research_cmd.py +96 -0
  23. prompture-1.13.5.dev1/prompture/cli/setup_cmd.py +704 -0
  24. prompture-1.13.5.dev1/prompture/cli/skill_cmd.py +68 -0
  25. prompture-1.13.5.dev1/prompture/cli/transcribe_cmd.py +98 -0
  26. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/router.py +28 -19
  27. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/routing_policy.py +2 -2
  28. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/server.py +13 -0
  29. prompture-1.13.5.dev1/prompture/doctor/__init__.py +48 -0
  30. prompture-1.13.5.dev1/prompture/doctor/core.py +302 -0
  31. prompture-1.13.5.dev1/prompture/doctor/providers.py +575 -0
  32. prompture-1.13.5.dev1/prompture/drivers/_ollama_options.py +28 -0
  33. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_ollama_driver.py +5 -18
  34. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/base.py +3 -1
  35. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/ollama_driver.py +5 -21
  36. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/cost_mixin.py +20 -7
  37. prompture-1.13.5.dev1/prompture/infra/credentials.py +589 -0
  38. prompture-1.13.5.dev1/prompture/infra/environment.py +163 -0
  39. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/logging.py +19 -0
  40. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/settings.py +69 -3
  41. prompture-1.13.5.dev1/prompture/infra/updates.py +402 -0
  42. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/mcp/__init__.py +44 -1
  43. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/mcp/client.py +78 -0
  44. prompture-1.13.5.dev1/prompture/mcp/health.py +150 -0
  45. prompture-1.13.5.dev1/prompture/mcp/hub.py +1492 -0
  46. prompture-1.13.5.dev1/prompture/mcp/importers.py +302 -0
  47. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/mcp/server.py +9 -4
  48. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/__init__.py +36 -1
  49. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/agent_tools.py +52 -2
  50. prompture-1.13.5.dev1/prompture/media/understand/__init__.py +76 -0
  51. prompture-1.13.5.dev1/prompture/media/understand/errors.py +63 -0
  52. prompture-1.13.5.dev1/prompture/media/understand/ffmpeg.py +232 -0
  53. prompture-1.13.5.dev1/prompture/media/understand/groq_stt.py +72 -0
  54. prompture-1.13.5.dev1/prompture/media/understand/health.py +130 -0
  55. prompture-1.13.5.dev1/prompture/media/understand/sources.py +343 -0
  56. prompture-1.13.5.dev1/prompture/media/understand/summarize.py +350 -0
  57. prompture-1.13.5.dev1/prompture/media/understand/tools.py +112 -0
  58. prompture-1.13.5.dev1/prompture/media/understand/transcribe.py +714 -0
  59. prompture-1.13.5.dev1/prompture/research/__init__.py +54 -0
  60. prompture-1.13.5.dev1/prompture/research/agent.py +937 -0
  61. prompture-1.13.5.dev1/prompture/research/budget.py +279 -0
  62. prompture-1.13.5.dev1/prompture/research/events.py +55 -0
  63. prompture-1.13.5.dev1/prompture/research/planner.py +267 -0
  64. prompture-1.13.5.dev1/prompture/research/ranking.py +274 -0
  65. prompture-1.13.5.dev1/prompture/research/report.py +218 -0
  66. prompture-1.13.5.dev1/prompture/research/synthesis.py +246 -0
  67. prompture-1.13.5.dev1/prompture/research/tools.py +122 -0
  68. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/security/__init__.py +4 -0
  69. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/security/redaction.py +86 -0
  70. prompture-1.13.5.dev1/prompture/skill/__init__.py +143 -0
  71. prompture-1.13.5.dev1/prompture/skill/data/SKILL.md +85 -0
  72. prompture-1.13.5.dev1/prompture/skill/data/references/dev.md +41 -0
  73. prompture-1.13.5.dev1/prompture/skill/data/references/finance.md +36 -0
  74. prompture-1.13.5.dev1/prompture/skill/data/references/mcp.md +46 -0
  75. prompture-1.13.5.dev1/prompture/skill/data/references/media.md +54 -0
  76. prompture-1.13.5.dev1/prompture/skill/data/references/models.md +63 -0
  77. prompture-1.13.5.dev1/prompture/skill/data/references/search.md +72 -0
  78. prompture-1.13.5.dev1/prompture/skill/data/references/web.md +57 -0
  79. prompture-1.13.5.dev1/prompture/tools/__init__.py +73 -0
  80. prompture-1.13.5.dev1/prompture/tools/cli/__init__.py +78 -0
  81. prompture-1.13.5.dev1/prompture/tools/cli/adapter.py +980 -0
  82. prompture-1.13.5.dev1/prompture/tools/cli/builtin.py +436 -0
  83. prompture-1.13.5.dev1/prompture/tools/cli/config.py +170 -0
  84. prompture-1.13.5.dev1/prompture/tools/cli/health.py +63 -0
  85. prompture-1.13.5.dev1/prompture/tools/named.py +93 -0
  86. prompture-1.13.5.dev1/prompture/tools/packs.py +730 -0
  87. prompture-1.13.5.dev1/prompture/tools/web/__init__.py +117 -0
  88. prompture-1.13.5.dev1/prompture/tools/web/_common.py +328 -0
  89. prompture-1.13.5.dev1/prompture/tools/web/_mcp_http.py +213 -0
  90. prompture-1.13.5.dev1/prompture/tools/web/_types.py +75 -0
  91. prompture-1.13.5.dev1/prompture/tools/web/fetch.py +336 -0
  92. prompture-1.13.5.dev1/prompture/tools/web/health.py +70 -0
  93. prompture-1.13.5.dev1/prompture/tools/web/html2md.py +410 -0
  94. prompture-1.13.5.dev1/prompture/tools/web/platform.py +297 -0
  95. prompture-1.13.5.dev1/prompture/tools/web/readers/__init__.py +266 -0
  96. prompture-1.13.5.dev1/prompture/tools/web/readers/_media.py +55 -0
  97. prompture-1.13.5.dev1/prompture/tools/web/readers/arxiv.py +140 -0
  98. prompture-1.13.5.dev1/prompture/tools/web/readers/base.py +218 -0
  99. prompture-1.13.5.dev1/prompture/tools/web/readers/feeds.py +270 -0
  100. prompture-1.13.5.dev1/prompture/tools/web/readers/github.py +409 -0
  101. prompture-1.13.5.dev1/prompture/tools/web/readers/hackernews.py +144 -0
  102. prompture-1.13.5.dev1/prompture/tools/web/readers/podcasts.py +308 -0
  103. prompture-1.13.5.dev1/prompture/tools/web/readers/wikipedia.py +109 -0
  104. prompture-1.13.5.dev1/prompture/tools/web/readers/youtube.py +352 -0
  105. prompture-1.13.5.dev1/prompture/tools/web/search.py +691 -0
  106. prompture-1.13.5.dev1/prompture/tools/web/toolkit.py +248 -0
  107. prompture-1.13.5.dev1/prompture/tools/web_search.py +271 -0
  108. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/PKG-INFO +170 -21
  109. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/SOURCES.txt +80 -0
  110. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/requires.txt +9 -1
  111. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/scm_file_list.json +99 -0
  112. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/pyproject.toml +7 -1
  113. prompture-1.13.4.dev1/prompture/tools/__init__.py +0 -27
  114. prompture-1.13.4.dev1/prompture/tools/web_search.py +0 -336
  115. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-driver/SKILL.md +0 -0
  116. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-driver/references/driver-template.md +0 -0
  117. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-example/SKILL.md +0 -0
  118. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-field/SKILL.md +0 -0
  119. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-persona/SKILL.md +0 -0
  120. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-test/SKILL.md +0 -0
  121. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/add-tool/SKILL.md +0 -0
  122. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/create-pr/SKILL.md +0 -0
  123. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/run-tests/SKILL.md +0 -0
  124. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/scaffold-extraction/SKILL.md +0 -0
  125. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.claude/skills/update-pricing/SKILL.md +0 -0
  126. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.gitattributes +0 -0
  127. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/FUNDING.yml +0 -0
  128. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  129. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/ISSUE_TEMPLATE/pricing_cost_mismatch.yml +0 -0
  130. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/ISSUE_TEMPLATE/provider_driver_bug.yml +0 -0
  131. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/ISSUE_TEMPLATE/schema_extraction_failure.yml +0 -0
  132. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/scripts/update_docs_version.py +0 -0
  133. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/scripts/update_wrapper_version.py +0 -0
  134. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/workflows/dev.yml +0 -0
  135. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/workflows/documentation.yml +0 -0
  136. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/workflows/pricing-freshness.yml +0 -0
  137. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/workflows/publish.yml +0 -0
  138. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.github/workflows/security.yml +0 -0
  139. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/.safety-project.ini +0 -0
  140. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/AGENTS.md +0 -0
  141. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/BREAKING_CHANGES.md +0 -0
  142. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/CLAUDE.md +0 -0
  143. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/CONTRIBUTING.md +0 -0
  144. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/LICENSE +0 -0
  145. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/MANIFEST.in +0 -0
  146. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/ROADMAP.md +0 -0
  147. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/SECURITY.md +0 -0
  148. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/VERSION +0 -0
  149. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/dev.ps1 +0 -0
  150. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/dev.sh +0 -0
  151. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/mypy_errors.txt +0 -0
  152. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/README.md +0 -0
  153. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_json/README.md +0 -0
  154. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_json/llm_to_json/__init__.py +0 -0
  155. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_json/pyproject.toml +0 -0
  156. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_json/test.py +0 -0
  157. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_toon/README.md +0 -0
  158. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_toon/llm_to_toon/__init__.py +0 -0
  159. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_toon/pyproject.toml +0 -0
  160. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/packages/llm_to_toon/test.py +0 -0
  161. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/__main__.py +0 -0
  162. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/_internal/__init__.py +0 -0
  163. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/_internal/json_encoder.py +0 -0
  164. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/__init__.py +0 -0
  165. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/assistant.py +0 -0
  166. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/async_conversation.py +0 -0
  167. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/async_deep_agent.py +0 -0
  168. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/conversation.py +0 -0
  169. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep/__init__.py +0 -0
  170. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep/planner.py +0 -0
  171. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep/subagents.py +0 -0
  172. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep/summarizer.py +0 -0
  173. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep/vfs.py +0 -0
  174. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep_prompts.py +0 -0
  175. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/deep_state.py +0 -0
  176. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/live_events.py +0 -0
  177. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/persona.py +0 -0
  178. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/review_loop.py +0 -0
  179. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/simulated_tools.py +0 -0
  180. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/skill_miner.py +0 -0
  181. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/skills.py +0 -0
  182. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/tool_grammars.py +0 -0
  183. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/tools_schema.py +0 -0
  184. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/agents/types.py +0 -0
  185. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/aio/__init__.py +0 -0
  186. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/bridges/__init__.py +0 -0
  187. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/bridges/tukuy_backend.py +0 -0
  188. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/checkpoints/__init__.py +0 -0
  189. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/checkpoints/core.py +0 -0
  190. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/checkpoints/stores.py +0 -0
  191. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/checkpoints/types.py +0 -0
  192. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/citations/__init__.py +0 -0
  193. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/citations/core.py +0 -0
  194. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/citations/types.py +0 -0
  195. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/cli/__init__.py +0 -0
  196. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/cli/formatters.py +0 -0
  197. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/cli/runner.py +0 -0
  198. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/cli/server.py +0 -0
  199. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/__init__.py +0 -0
  200. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/automations.py +0 -0
  201. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/calls.py +0 -0
  202. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/capacity.py +0 -0
  203. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/coding_tools.py +0 -0
  204. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/hook.py +0 -0
  205. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/live.py +0 -0
  206. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/local.py +0 -0
  207. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/memory.py +0 -0
  208. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/reuse.py +0 -0
  209. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/summary.py +0 -0
  210. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/companion/tool_routing.py +0 -0
  211. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/__init__.py +0 -0
  212. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/dedup.py +0 -0
  213. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/evol.py +0 -0
  214. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/filters.py +0 -0
  215. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/formats.py +0 -0
  216. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/schemas.py +0 -0
  217. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/seed.py +0 -0
  218. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/dataset/synth.py +0 -0
  219. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/__init__.py +0 -0
  220. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_media_usage.py +0 -0
  221. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_openai_compat.py +0 -0
  222. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_openai_compat_stream.py +0 -0
  223. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_openai_responses.py +0 -0
  224. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_prompt_cache.py +0 -0
  225. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_prompted_tool_stream.py +0 -0
  226. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/_usage_reporting.py +0 -0
  227. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/aggregator_base.py +0 -0
  228. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/airllm_driver.py +0 -0
  229. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/assemblyai_stt_driver.py +0 -0
  230. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_aggregator_base.py +0 -0
  231. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_airllm_driver.py +0 -0
  232. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_assemblyai_stt_driver.py +0 -0
  233. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_azure_driver.py +0 -0
  234. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_base.py +0 -0
  235. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_bedrock_driver.py +0 -0
  236. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_bfl_img_gen_driver.py +0 -0
  237. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_cachibot_driver.py +0 -0
  238. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_cartesia_tts_driver.py +0 -0
  239. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_claude_driver.py +0 -0
  240. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_cohere_driver.py +0 -0
  241. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_cohere_embedding_driver.py +0 -0
  242. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_cohere_rerank_driver.py +0 -0
  243. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_deepgram_stt_driver.py +0 -0
  244. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_deepgram_tts_driver.py +0 -0
  245. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_deepseek_driver.py +0 -0
  246. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_elevenlabs_stt_driver.py +0 -0
  247. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_elevenlabs_tts_driver.py +0 -0
  248. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_embedding_base.py +0 -0
  249. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_fal_img_gen_driver.py +0 -0
  250. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_fal_video_gen_driver.py +0 -0
  251. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_google_driver.py +0 -0
  252. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_google_img_gen_driver.py +0 -0
  253. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_google_vertexai_driver.py +0 -0
  254. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_grok_driver.py +0 -0
  255. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_grok_img_gen_driver.py +0 -0
  256. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_grok_video_gen_driver.py +0 -0
  257. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_groq_driver.py +0 -0
  258. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_hugging_driver.py +0 -0
  259. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_ideogram_img_gen_driver.py +0 -0
  260. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_img_gen_base.py +0 -0
  261. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_jina_embedding_driver.py +0 -0
  262. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_jina_rerank_driver.py +0 -0
  263. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_kev_decision_driver.py +0 -0
  264. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_kling_img_gen_driver.py +0 -0
  265. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_kling_video_gen_driver.py +0 -0
  266. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_laya_decision_driver.py +0 -0
  267. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_lmstudio_driver.py +0 -0
  268. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_local_http_driver.py +0 -0
  269. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_luma_video_gen_driver.py +0 -0
  270. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_minimax_driver.py +0 -0
  271. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_minimax_video_gen_driver.py +0 -0
  272. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_mistral_driver.py +0 -0
  273. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_mistral_moderation_driver.py +0 -0
  274. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_modelscope_driver.py +0 -0
  275. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_moonshot_driver.py +0 -0
  276. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_muapi_aggregator_driver.py +0 -0
  277. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_mxbai_embedding_driver.py +0 -0
  278. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_mxbai_rerank_driver.py +0 -0
  279. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_nomic_embedding_driver.py +0 -0
  280. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_ollama_embedding_driver.py +0 -0
  281. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_compatible_driver.py +0 -0
  282. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_driver.py +0 -0
  283. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_embedding_driver.py +0 -0
  284. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_img_gen_driver.py +0 -0
  285. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_moderation_driver.py +0 -0
  286. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_stt_driver.py +0 -0
  287. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openai_tts_driver.py +0 -0
  288. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_openrouter_driver.py +0 -0
  289. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_pika_video_gen_driver.py +0 -0
  290. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_registry.py +0 -0
  291. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_runway_img_gen_driver.py +0 -0
  292. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_runway_tts_driver.py +0 -0
  293. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_runway_video_gen_driver.py +0 -0
  294. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_stability_img_gen_driver.py +0 -0
  295. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_stt_base.py +0 -0
  296. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_systemone_compatible_driver.py +0 -0
  297. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_tts_base.py +0 -0
  298. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_typesafe_decision_driver.py +0 -0
  299. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_video_gen_base.py +0 -0
  300. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_voyage_embedding_driver.py +0 -0
  301. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_voyage_rerank_driver.py +0 -0
  302. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/async_zai_driver.py +0 -0
  303. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/audio_registry.py +0 -0
  304. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/azure_config.py +0 -0
  305. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/azure_driver.py +0 -0
  306. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/bedrock_driver.py +0 -0
  307. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/bfl_img_gen_driver.py +0 -0
  308. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/cachibot_driver.py +0 -0
  309. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/cartesia_tts_driver.py +0 -0
  310. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/claude_driver.py +0 -0
  311. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/cohere_driver.py +0 -0
  312. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/cohere_embedding_driver.py +0 -0
  313. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/cohere_rerank_driver.py +0 -0
  314. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/decision_base.py +0 -0
  315. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/decision_registry.py +0 -0
  316. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/deepgram_stt_driver.py +0 -0
  317. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/deepgram_tts_driver.py +0 -0
  318. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/deepseek_driver.py +0 -0
  319. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/driver_registry.py +0 -0
  320. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/elevenlabs_stt_driver.py +0 -0
  321. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/elevenlabs_tts_driver.py +0 -0
  322. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/embedding_base.py +0 -0
  323. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/embedding_registry.py +0 -0
  324. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/fal_img_gen_driver.py +0 -0
  325. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/fal_video_gen_driver.py +0 -0
  326. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/google_driver.py +0 -0
  327. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/google_img_gen_driver.py +0 -0
  328. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/google_vertexai_driver.py +0 -0
  329. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/grok_driver.py +0 -0
  330. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/grok_img_gen_driver.py +0 -0
  331. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/grok_video_gen_driver.py +0 -0
  332. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/groq_driver.py +0 -0
  333. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/hugging_driver.py +0 -0
  334. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/ideogram_img_gen_driver.py +0 -0
  335. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/img_gen_base.py +0 -0
  336. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/img_gen_registry.py +0 -0
  337. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/jina_embedding_driver.py +0 -0
  338. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/jina_rerank_driver.py +0 -0
  339. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/job_runner.py +0 -0
  340. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/kev_decision_driver.py +0 -0
  341. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/kling_img_gen_driver.py +0 -0
  342. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/kling_video_gen_driver.py +0 -0
  343. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/laya_decision_driver.py +0 -0
  344. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/lipsync_base.py +0 -0
  345. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/lipsync_registry.py +0 -0
  346. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/lmstudio_driver.py +0 -0
  347. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/local_http_driver.py +0 -0
  348. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/luma_video_gen_driver.py +0 -0
  349. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/media_capabilities.py +0 -0
  350. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/minimax_driver.py +0 -0
  351. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/minimax_video_gen_driver.py +0 -0
  352. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/mistral_driver.py +0 -0
  353. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/mistral_moderation_driver.py +0 -0
  354. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/modelscope_driver.py +0 -0
  355. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/moderation_base.py +0 -0
  356. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/moderation_registry.py +0 -0
  357. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/moonshot_driver.py +0 -0
  358. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/muapi_aggregator_driver.py +0 -0
  359. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/music_base.py +0 -0
  360. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/music_registry.py +0 -0
  361. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/mxbai_embedding_driver.py +0 -0
  362. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/mxbai_rerank_driver.py +0 -0
  363. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/nomic_embedding_driver.py +0 -0
  364. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/ollama_embedding_driver.py +0 -0
  365. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_compatible_driver.py +0 -0
  366. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_driver.py +0 -0
  367. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_embedding_driver.py +0 -0
  368. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_img_gen_driver.py +0 -0
  369. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_moderation_driver.py +0 -0
  370. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_stt_driver.py +0 -0
  371. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openai_tts_driver.py +0 -0
  372. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/openrouter_driver.py +0 -0
  373. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/pika_video_gen_driver.py +0 -0
  374. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/provider_branding.py +0 -0
  375. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/provider_descriptors.py +0 -0
  376. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/registry.py +0 -0
  377. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/rerank_base.py +0 -0
  378. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/rerank_registry.py +0 -0
  379. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/runway_audio_transform_driver.py +0 -0
  380. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/runway_capabilities.py +0 -0
  381. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/runway_img_gen_driver.py +0 -0
  382. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/runway_tts_driver.py +0 -0
  383. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/runway_video_gen_driver.py +0 -0
  384. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/stability_img_gen_driver.py +0 -0
  385. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/stt_base.py +0 -0
  386. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/systemone_compatible_driver.py +0 -0
  387. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/tts_base.py +0 -0
  388. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/typesafe_decision_driver.py +0 -0
  389. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/vertex_img_gen_driver.py +0 -0
  390. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/video_gen_base.py +0 -0
  391. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/video_gen_registry.py +0 -0
  392. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/vision_helpers.py +0 -0
  393. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/voyage_embedding_driver.py +0 -0
  394. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/voyage_rerank_driver.py +0 -0
  395. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/drivers/zai_driver.py +0 -0
  396. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/__init__.py +0 -0
  397. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/base.py +0 -0
  398. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/faithfulness.py +0 -0
  399. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/judge.py +0 -0
  400. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/pairwise.py +0 -0
  401. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/eval/self_consistency.py +0 -0
  402. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/exceptions.py +0 -0
  403. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/__init__.py +0 -0
  404. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/context.py +0 -0
  405. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/context_eval.py +0 -0
  406. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/data/document_qa_policies.json +0 -0
  407. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/data/extraction_contacts.json +0 -0
  408. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/data/tool_task_inventory.json +0 -0
  409. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/fixtures.py +0 -0
  410. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/gates.py +0 -0
  411. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/harness.py +0 -0
  412. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/improve/__init__.py +0 -0
  413. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/improve/candidates.py +0 -0
  414. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/improve/optimizer.py +0 -0
  415. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/improve/promotion.py +0 -0
  416. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/improve/scorecard.py +0 -0
  417. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/integration.py +0 -0
  418. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/outcomes.py +0 -0
  419. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/policy.py +0 -0
  420. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/sandbox.py +0 -0
  421. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/scoring.py +0 -0
  422. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/__init__.py +0 -0
  423. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/base.py +0 -0
  424. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/critique.py +0 -0
  425. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/direct.py +0 -0
  426. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/registry.py +0 -0
  427. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/strategies/retrieve.py +0 -0
  428. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/execution/types.py +0 -0
  429. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/__init__.py +0 -0
  430. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/_usage.py +0 -0
  431. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/async_core.py +0 -0
  432. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/code_extraction.py +0 -0
  433. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/core.py +0 -0
  434. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/few_shot.py +0 -0
  435. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/fields.py +0 -0
  436. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/reasoning.py +0 -0
  437. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/strategy.py +0 -0
  438. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/streaming.py +0 -0
  439. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/tools.py +0 -0
  440. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/tukuy_bridge.py +0 -0
  441. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/extraction/validator.py +0 -0
  442. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/__init__.py +0 -0
  443. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/anthropic_format.py +0 -0
  444. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/gemini_format.py +0 -0
  445. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/openai_format.py +0 -0
  446. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/reasoning_cache.py +0 -0
  447. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/gateway/responses_format.py +0 -0
  448. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/__init__.py +0 -0
  449. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/async_groups.py +0 -0
  450. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/consensus.py +0 -0
  451. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/debate.py +0 -0
  452. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/fusion.py +0 -0
  453. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/groups.py +0 -0
  454. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/groups/types.py +0 -0
  455. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/imaging/__init__.py +0 -0
  456. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/imaging/enhance.py +0 -0
  457. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/imaging/negative.py +0 -0
  458. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/imaging/set_planner.py +0 -0
  459. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/imaging/style_presets.py +0 -0
  460. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/__init__.py +0 -0
  461. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/accounts.py +0 -0
  462. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/billing.py +0 -0
  463. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/budget.py +0 -0
  464. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/cache.py +0 -0
  465. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/callbacks.py +0 -0
  466. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/capabilities.py +0 -0
  467. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agent_activity.py +0 -0
  468. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agent_events.py +0 -0
  469. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agent_readers.py +0 -0
  470. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agent_specs.py +0 -0
  471. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agent_usage.py +0 -0
  472. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/coding_agents.py +0 -0
  473. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/compression.py +0 -0
  474. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/discovery.py +0 -0
  475. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/ledger.py +0 -0
  476. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/media_pricing.py +0 -0
  477. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/media_rates.json +0 -0
  478. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/model_rates.py +0 -0
  479. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/otel.py +0 -0
  480. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/pricing.py +0 -0
  481. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/provider_env.py +0 -0
  482. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rate_limits.py +0 -0
  483. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/anthropic.json +0 -0
  484. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/azure.json +0 -0
  485. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/bedrock.json +0 -0
  486. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/cerebras.json +0 -0
  487. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/cohere.json +0 -0
  488. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/deepinfra.json +0 -0
  489. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/deepseek.json +0 -0
  490. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/fireworks.json +0 -0
  491. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/google.json +0 -0
  492. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/google_vertexai.json +0 -0
  493. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/groq.json +0 -0
  494. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/jina.json +0 -0
  495. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/kev.json +0 -0
  496. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/laya.json +0 -0
  497. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/mistral.json +0 -0
  498. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/mixedbread.json +0 -0
  499. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/moonshot.json +0 -0
  500. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/nomic.json +0 -0
  501. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/nvidia.json +0 -0
  502. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/openai.json +0 -0
  503. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/openrouter.json +0 -0
  504. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/perplexity.json +0 -0
  505. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/sambanova.json +0 -0
  506. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/siliconflow.json +0 -0
  507. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/together.json +0 -0
  508. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/typesafe.json +0 -0
  509. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/voyage.json +0 -0
  510. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/rates/xai.json +0 -0
  511. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/session.py +0 -0
  512. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/token_counting.py +0 -0
  513. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/tracker.py +0 -0
  514. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/infra/tukuy_backend.py +0 -0
  515. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/__init__.py +0 -0
  516. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/chunking.py +0 -0
  517. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/detect.py +0 -0
  518. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/document.py +0 -0
  519. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/__init__.py +0 -0
  520. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/base.py +0 -0
  521. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/csv_parser.py +0 -0
  522. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/docx.py +0 -0
  523. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/html.py +0 -0
  524. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/markdown.py +0 -0
  525. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/pdf.py +0 -0
  526. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/ingestion/parsers/xlsx.py +0 -0
  527. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/integrations/__init__.py +0 -0
  528. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/integrations/mcp_bridge.py +0 -0
  529. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/integrations/tukuy_bridge.py +0 -0
  530. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/jobs.py +0 -0
  531. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/kg/__init__.py +0 -0
  532. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/kg/core.py +0 -0
  533. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/kg/stores.py +0 -0
  534. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/kg/types.py +0 -0
  535. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/mcp/tools.py +0 -0
  536. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/audio.py +0 -0
  537. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/hosting.py +0 -0
  538. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/image.py +0 -0
  539. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/media/video.py +0 -0
  540. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/01-why-prompture.md +0 -0
  541. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/02-installation.md +0 -0
  542. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/03-quickstart.md +0 -0
  543. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/04-toon-input.md +0 -0
  544. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/05-test-harness.md +0 -0
  545. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/06-stability.md +0 -0
  546. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pages/07-migration.md +0 -0
  547. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/persistence/__init__.py +0 -0
  548. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/persistence/history.py +0 -0
  549. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/persistence/serialization.py +0 -0
  550. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/persistence/store.py +0 -0
  551. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pipeline/__init__.py +0 -0
  552. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pipeline/pipeline.py +0 -0
  553. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pipeline/resolver.py +0 -0
  554. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/pipeline/routing.py +0 -0
  555. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/__init__.py +0 -0
  556. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/base.py +0 -0
  557. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/__init__.py +0 -0
  558. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/_aliases.py +0 -0
  559. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/anthropic_plugin.py +0 -0
  560. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/audio_plugin.py +0 -0
  561. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/cloud_plugin.py +0 -0
  562. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/decision_plugin.py +0 -0
  563. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/embedding_rerank_plugin.py +0 -0
  564. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/extras_plugin.py +0 -0
  565. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/google_plugin.py +0 -0
  566. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/image_plugin.py +0 -0
  567. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/local_plugin.py +0 -0
  568. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/openai_compatible_plugin.py +0 -0
  569. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/openai_plugin.py +0 -0
  570. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/builtins/video_plugin.py +0 -0
  571. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/plugins/discovery.py +0 -0
  572. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/py.typed +0 -0
  573. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/__init__.py +0 -0
  574. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/__init__.py +0 -0
  575. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/base.py +0 -0
  576. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/character.py +0 -0
  577. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/chunker_registry.py +0 -0
  578. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/contextual.py +0 -0
  579. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/markdown.py +0 -0
  580. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/recursive.py +0 -0
  581. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/semantic.py +0 -0
  582. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/chunkers/token.py +0 -0
  583. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/documents.py +0 -0
  584. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loader_registry.py +0 -0
  585. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/__init__.py +0 -0
  586. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/csv_loader.py +0 -0
  587. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/docx_loader.py +0 -0
  588. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/epub_loader.py +0 -0
  589. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/html_loader.py +0 -0
  590. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/json_loader.py +0 -0
  591. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/markdown_loader.py +0 -0
  592. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/pdf_loader.py +0 -0
  593. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/text_loader.py +0 -0
  594. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/loaders/xlsx_loader.py +0 -0
  595. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/pipeline.py +0 -0
  596. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/__init__.py +0 -0
  597. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/_fusion.py +0 -0
  598. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/base.py +0 -0
  599. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/hybrid.py +0 -0
  600. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/hyde.py +0 -0
  601. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/mmr.py +0 -0
  602. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/multi_query.py +0 -0
  603. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/retriever_registry.py +0 -0
  604. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/similarity.py +0 -0
  605. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/retrievers/step_back.py +0 -0
  606. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/__init__.py +0 -0
  607. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/base.py +0 -0
  608. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/chroma.py +0 -0
  609. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/faiss.py +0 -0
  610. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/pgvector.py +0 -0
  611. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/pinecone.py +0 -0
  612. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/qdrant.py +0 -0
  613. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/vectorstore_registry.py +0 -0
  614. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/rag/vectorstores/weaviate.py +0 -0
  615. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/refusal/__init__.py +0 -0
  616. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/refusal/detector.py +0 -0
  617. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/refusal/evaluator.py +0 -0
  618. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/refusal/markers.py +0 -0
  619. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/__init__.py +0 -0
  620. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/async_driver.py +0 -0
  621. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/backoff.py +0 -0
  622. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/breaker.py +0 -0
  623. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/driver.py +0 -0
  624. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/errors.py +0 -0
  625. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/explain.py +0 -0
  626. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/headroom.py +0 -0
  627. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/keys.py +0 -0
  628. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/router.py +0 -0
  629. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/strategies.py +0 -0
  630. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/resilience/virtual.py +0 -0
  631. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/__init__.py +0 -0
  632. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/generator.py +0 -0
  633. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/Dockerfile.j2 +0 -0
  634. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/README.md.j2 +0 -0
  635. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/config.py.j2 +0 -0
  636. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/env.example.j2 +0 -0
  637. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/main.py.j2 +0 -0
  638. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/models.py.j2 +0 -0
  639. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/scaffold/templates/requirements.txt.j2 +0 -0
  640. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/security/injection.py +0 -0
  641. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/session_memory/__init__.py +0 -0
  642. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/session_memory/core.py +0 -0
  643. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/session_memory/project.py +0 -0
  644. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/session_memory/stores.py +0 -0
  645. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/session_memory/types.py +0 -0
  646. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/__init__.py +0 -0
  647. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/environment.py +0 -0
  648. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/memory.py +0 -0
  649. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/scheduler.py +0 -0
  650. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/swarm.py +0 -0
  651. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/swarm_agent.py +0 -0
  652. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/swarm/types.py +0 -0
  653. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/testing/__init__.py +0 -0
  654. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/testing/driver_contract.py +0 -0
  655. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/tools/code_exec.py +0 -0
  656. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/__init__.py +0 -0
  657. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/architect.py +0 -0
  658. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/engine.py +0 -0
  659. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/errors.py +0 -0
  660. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/model.py +0 -0
  661. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/nodes.py +0 -0
  662. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/recovery.py +0 -0
  663. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/references.py +0 -0
  664. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/registry.py +0 -0
  665. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/scheduler.py +0 -0
  666. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture/workflow/state.py +0 -0
  667. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/dependency_links.txt +0 -0
  668. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/entry_points.txt +0 -0
  669. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture.egg-info/top_level.txt +0 -0
  670. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/prompture_cost_tracking.md +0 -0
  671. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/requirements.txt +0 -0
  672. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/scripts/check_pricing_freshness.py +0 -0
  673. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/setup.cfg +0 -0
  674. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/specs/basic_extraction.json +0 -0
  675. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/specs/schema_validation.json +0 -0
  676. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/specs/strategy_comparison.json +0 -0
  677. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/test.py +0 -0
  678. {prompture-1.13.4.dev1 → prompture-1.13.5.dev1}/test_version_diagnosis.py +0 -0
@@ -228,19 +228,62 @@ MIXEDBREAD_API_KEY=
228
228
  MXBAI_EMBEDDING_MODEL=mxbai-embed-large-v1
229
229
  MXBAI_RERANK_MODEL=mxbai-rerank-large-v1
230
230
 
231
- # GitHub Models — used through the openai_compatible driver with
232
- # profile=github_models. Auth uses a GitHub Personal Access Token.
231
+ # GitHub Personal Access Token — GitHub Models (openai_compatible driver,
232
+ # profile=github_models) and the web GitHub reader/search (higher rate
233
+ # limits, discussions, code search).
233
234
  GITHUB_TOKEN=
234
235
 
235
- # ─── Web search backends (prompture.tools.WebSearchTool) ────────────────────
236
- # Tavily — default backend, AI-friendly snippets, generous free tier.
236
+ # ─── Web tools (prompture.tools.web) ─────────────────────────────────────────
237
+ # Search, fetch and the URL readers work with no keys at all (keyless Exa MCP
238
+ # search, Jina reader + direct fetch). Keys raise quality and rate limits.
239
+ # Keyed search providers are tried first, the keyless one last.
237
240
  TAVILY_API_KEY=
241
+ # Exa REST search with page contents.
242
+ EXA_API_KEY=
238
243
  # Serper — Google Search API wrapper.
239
244
  SERPER_API_KEY=
240
245
  # Brave Search — independent index.
241
246
  BRAVE_SEARCH_API_KEY=
242
247
  # SearXNG — self-hosted metasearch engine (no key, set the base URL).
243
248
  SEARXNG_ENDPOINT=
249
+ # JINA_API_KEY (above) also enables s.jina.ai search and raises r.jina.ai limits.
250
+ # Preferred order; backends not listed keep their place after these.
251
+ PROMPTURE_SEARCH_PROVIDERS=
252
+ PROMPTURE_FETCH_BACKENDS=
253
+ # Allow tools to reach private/loopback addresses (off by default).
254
+ PROMPTURE_WEB_ALLOW_PRIVATE=
255
+
256
+ # ─── Media understanding (transcripts / summaries) ───────────────────────────
257
+ # Uses the first configured STT key: GROQ_API_KEY ▸ OPENAI_API_KEY ▸
258
+ # ELEVENLABS_API_KEY. Audio never goes to a second provider unless you pass
259
+ # allow_provider_fallback=True. Optional reorder, e.g. "openai,groq".
260
+ PROMPTURE_STT_PROVIDERS=
261
+ GROQ_STT_ENDPOINT=
262
+
263
+ # ─── Domain tool packs (tools=["pack:<name>"]) ──────────────────────────────
264
+ # pack:finance quotes/news/search (crypto tools need no key)
265
+ FINNHUB_API_KEY=
266
+ # pack:news headlines/search
267
+ NEWSAPI_API_KEY=
268
+ # pack:places geocoding/places (country data needs no key)
269
+ GOOGLE_MAPS_API_KEY=
270
+ OPENCAGE_API_KEY=
271
+
272
+ # ─── MCP hub ─────────────────────────────────────────────────────────────────
273
+ # Override the user registry file (default ~/.prompture/mcp.json).
274
+ PROMPTURE_MCP_CONFIG=
275
+
276
+ # ─── Setup, profiles and proxies ─────────────────────────────────────────────
277
+ # `prompture setup` stores keys in ~/.prompture/credentials.yaml; env vars and
278
+ # this file always win over it. Pick a profile section of that file:
279
+ PROMPTURE_PROFILE=
280
+ # Default model written by `prompture setup` (provider/model).
281
+ PROMPTURE_DEFAULT_MODEL=
282
+ # Model for `prompture research` (defaults to the first configured provider).
283
+ PROMPTURE_RESEARCH_MODEL=
284
+ # Proxy for all capability backends, or per backend:
285
+ # PROMPTURE_<BACKEND>_PROXY, e.g. PROMPTURE_JINA_READER_PROXY.
286
+ PROMPTURE_PROXY=
244
287
 
245
288
  # ─── Coding-agent CLI binaries (optional path overrides) ─────────────────────
246
289
  # Set if a CLI isn't on PATH or you want to pin a specific install.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prompture
3
- Version: 1.13.4.dev1
3
+ Version: 1.13.5.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
@@ -36,8 +36,14 @@ Provides-Extra: sandbox
36
36
  Requires-Dist: tukuy>=0.0.30; extra == "sandbox"
37
37
  Provides-Extra: mcp
38
38
  Requires-Dist: mcp>=1.0; extra == "mcp"
39
+ Provides-Extra: web
40
+ Requires-Dist: feedparser>=6.0; extra == "web"
41
+ Requires-Dist: youtube-transcript-api>=1.0; extra == "web"
42
+ Requires-Dist: trafilatura>=1.8; extra == "web"
43
+ Provides-Extra: media
44
+ Requires-Dist: yt-dlp>=2024.8.6; extra == "media"
39
45
  Provides-Extra: all
40
- Requires-Dist: prompture[anthropic,google,groq,mcp,openai,pandas,sandbox,toon]; extra == "all"
46
+ Requires-Dist: prompture[anthropic,google,groq,mcp,media,openai,pandas,sandbox,toon,web]; extra == "all"
41
47
  Provides-Extra: test
42
48
  Requires-Dist: pytest>=7.0; extra == "test"
43
49
  Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
@@ -188,7 +194,8 @@ No setup: Desk runs `prompture companion` (Prompture 1.13+) on localhost for you
188
194
  **Agents, tools, RAG**
189
195
  - Stateful conversations with sync + async support
190
196
  - Function calling and streaming across providers, with prompt-based simulation for models without native tool use
191
- - Drop-in tools: sandboxed `python_execute` (Tukuy), `web_search` (Tavily / Serper / Brave / SearXNG)
197
+ - Drop-in tools: sandboxed `python_execute` (Tukuy), keyless `web_search` / `web_fetch` / `read_url` (YouTube, GitHub, HN, arXiv, Wikipedia, feeds, podcasts) — see [Capabilities](#capabilities)
198
+ - Mount tools by name: `tools=["web:all", "mcp:exa", "pack:finance", "cli:gh"]`; `ResearchAgent` for cited multi-source research
192
199
  - `DeepAgent` with planning, virtual filesystem, sub-agents, and auto-summarization — no LangChain
193
200
  - Full RAG stack — loaders, chunkers, vector stores, hybrid dense+BM25 retrieval, end-to-end `RAGPipeline` — see [RAG](#rag)
194
201
 
@@ -198,6 +205,7 @@ No setup: Desk runs `prompture companion` (Prompture 1.13+) on localhost for you
198
205
  - `generate_qa_dataset()` — synthetic JSONL datasets ready for Unsloth, Axolotl, TRL
199
206
 
200
207
  **Ops**
208
+ - `prompture doctor` — what works on this machine (providers, tools, media, MCP servers, binaries), which backend is active, and the exact fix for anything that isn't
201
209
  - Resilient routing — `resilient()` retries transient errors, honors `Retry-After`, rotates API keys, trips circuit breakers and fails over across models; every response records who served it — see [Resilient Routing](#resilient-routing)
202
210
  - [Prompture Desk](#prompture-desk-usage-in-your-tray) — desktop tray app: usage per provider and project, rate limits and balances, live calls
203
211
  - [prompture-hub](#prompture-hub-gateway--dashboard) — optional companion app: web dashboard, scoped per-app keys, spend caps and per-call metering (`pip install prompture[hub]`)
@@ -238,6 +246,9 @@ use.
238
246
  | `airllm` | AirLLM local inference | `pip install prompture[airllm]` |
239
247
  | `bedrock` | AWS Bedrock driver (`boto3`) | `pip install prompture[bedrock]` |
240
248
  | `sandbox` | Sandboxed Python execution tool (`tukuy`) | `pip install prompture[sandbox]` |
249
+ | `web` | Feed reader, YouTube transcripts, article extraction for the [web tools](#web-tools-zero-keys-required) | `pip install prompture[web]` |
250
+ | `media` | `yt-dlp` for video/podcast [transcription](#media-understanding-transcripts-and-summaries) | `pip install prompture[media]` |
251
+ | `mcp` | [MCP hub](#mcp-hub) client and server | `pip install prompture[mcp]` |
241
252
 
242
253
  ### RAG — the easy path
243
254
 
@@ -1468,21 +1479,14 @@ Runnable example: `python examples/python_sandbox_example.py`.
1468
1479
 
1469
1480
  ### Web search
1470
1481
 
1471
- `WebSearchTool` ships a ready-to-register `web_search` tool with four
1472
- interchangeable backends:
1473
-
1474
- | Provider | Env var | Notes |
1475
- |------------|------------------------|------------------------------------------|
1476
- | `tavily` | `TAVILY_API_KEY` | Default. AI-friendly snippets + answer. |
1477
- | `serper` | `SERPER_API_KEY` | Google Search API wrapper. |
1478
- | `brave` | `BRAVE_SEARCH_API_KEY` | Independent index. |
1479
- | `searxng` | `SEARXNG_ENDPOINT` | Self-hosted metasearch, no key required. |
1482
+ Web search works with no keys. See [Web tools](#web-tools-zero-keys-required)
1483
+ for the full set (fetch, URL readers, platform search) and the fallback order.
1480
1484
 
1481
1485
  ```python
1482
1486
  from prompture import Agent, ToolRegistry, WebSearchTool
1483
1487
 
1484
1488
  registry = ToolRegistry()
1485
- WebSearchTool().register_on(registry) # auto-pick from env
1489
+ WebSearchTool().register_on(registry) # keyed providers first, keyless Exa last
1486
1490
 
1487
1491
  agent = Agent(
1488
1492
  "openai/gpt-4o",
@@ -1492,12 +1496,9 @@ agent = Agent(
1492
1496
  print(agent.run("What's new in LangChain this month?").output)
1493
1497
  ```
1494
1498
 
1495
- Override the backend per call site by passing `provider="serper"` (or
1496
- `brave`/`searxng`). Results come back as Markdown so the LLM can cite
1497
- each hit inline; Tavily's synthesised answer (when available) is
1498
- prepended.
1499
-
1500
- Runnable example: `python examples/web_search_agent_example.py`.
1499
+ `WebSearchTool(provider="serper")` pins a single provider (`tavily`, `exa`,
1500
+ `serper`, `brave`, `jina`, `searxng`, `exa_mcp`). Runnable example:
1501
+ `python examples/web_search_agent_example.py`.
1501
1502
 
1502
1503
  ### Deep Agents
1503
1504
 
@@ -2052,13 +2053,161 @@ All extraction functions return a consistent structure:
2052
2053
  }
2053
2054
  ```
2054
2055
 
2056
+ ## Capabilities
2057
+
2058
+ Prompture also gives agents working capabilities — search, read, watch,
2059
+ listen, call external tools — and tells you what works on this machine. Each
2060
+ one works with nothing configured, improves as keys are added, fails over
2061
+ instead of failing, and reports its own health.
2062
+
2063
+ ### Doctor
2064
+
2065
+ ```bash
2066
+ prompture doctor # table: capability, status, active backend, message, fix
2067
+ prompture doctor --only providers -v # every provider, including unconfigured ones
2068
+ prompture doctor --live # cheap real calls (model lists), never a paid generation
2069
+ prompture doctor --json # stable "prompture.doctor/1" schema for agents
2070
+ ```
2071
+
2072
+ Offline by default: no network, no writes. Binary checks actually run the
2073
+ binary, so a stale `yt-dlp` shim left by a Python upgrade shows as `broken`
2074
+ with a reinstall hint. Python: `from prompture.doctor import check_all`.
2075
+
2076
+ ### Web tools (zero keys required)
2077
+
2078
+ ```python
2079
+ from prompture import Agent
2080
+ from prompture.tools.web import web_search, web_fetch, read_url, search_platform
2081
+
2082
+ resp = web_search("latest CPython release", max_results=3)
2083
+ print(resp.to_markdown()) # ... served by exa_mcp
2084
+ page = web_fetch("https://example.com", max_chars=20000) # Jina reader, then direct; page with start=
2085
+ video = read_url("https://youtu.be/<id>") # transcript
2086
+ repos = search_platform("github", "web scraping", kind="repositories")
2087
+
2088
+ agent = Agent("openai/gpt-4o", tools=["web:all"])
2089
+ ```
2090
+
2091
+ | Capability | Chain (first available wins, failures move on) |
2092
+ |---|---|
2093
+ | `web_search` | `tavily` ▸ `exa` ▸ `serper` ▸ `brave` ▸ `jina` ▸ `searxng` ▸ `exa_mcp` (keyless) |
2094
+ | `web_fetch` | `jina_reader` (keyless) ▸ `direct` (safe GET + HTML to Markdown) |
2095
+ | `read_url` | YouTube, GitHub, Hacker News, arXiv, Wikipedia, podcasts, RSS/Atom readers ▸ `web_fetch` |
2096
+ | `search_platform` | YouTube (`yt-dlp`), GitHub, Hacker News (Algolia), arXiv |
2097
+
2098
+ - Auth, quota and rate-limit errors fail over immediately; timeouts and 5xx
2099
+ retry once. Every result reports `route["served_by"]` and `route["fallback"]`.
2100
+ - Reorder with `PROMPTURE_SEARCH_PROVIDERS` / `PROMPTURE_FETCH_BACKENDS`
2101
+ (unknown names are ignored; unlisted backends keep their place).
2102
+ - Only public URLs: private, loopback, link-local and metadata addresses are
2103
+ refused, redirects are re-checked per hop, bodies are size-capped and
2104
+ challenge pages move to the next backend.
2105
+
2106
+ ### Media understanding: transcripts and summaries
2107
+
2108
+ ```python
2109
+ from prompture.media.understand import transcribe, summarize_media
2110
+
2111
+ t = transcribe("https://example.com/episode.mp3") # URL or local file
2112
+ print(t.to_markdown()) # [00:01:05] ...
2113
+ s = summarize_media(t, model="openai/gpt-4o-mini")
2114
+ ```
2115
+
2116
+ `auto` uses the first configured STT key (Groq ▸ OpenAI ▸ ElevenLabs). Audio
2117
+ never goes to a second provider unless you pass
2118
+ `allow_provider_fallback=True`. Long media is downmixed and split into
2119
+ 10-minute chunks with `ffmpeg`; video/podcast pages need `yt-dlp`. CLI:
2120
+ `prompture transcribe <url|file> [--summary] [--out x.json]`.
2121
+
2122
+ ### Research agent
2123
+
2124
+ ```bash
2125
+ prompture research "What changed in Python 3.13?" --depth quick --json
2126
+ ```
2127
+
2128
+ ```python
2129
+ from prompture.research import ResearchAgent, ResearchBudget
2130
+ report = ResearchAgent("openai/gpt-4o-mini", budget=ResearchBudget(max_fetches=6, max_cost=0.05)).run("...")
2131
+ print(report.to_markdown())
2132
+ ```
2133
+
2134
+ Plans sub-questions, searches the web plus GitHub/HN/arXiv/YouTube in
2135
+ parallel, reads the top pages and writes an answer whose citations point only
2136
+ at pages it actually opened, with coverage gaps and conflicting claims.
2137
+ Fetch, token, cost and wall-clock budgets are enforced. Other agents can use
2138
+ it as a tool: `tools=[research_tool(depth="quick")]`.
2139
+
2140
+ ### MCP hub
2141
+
2142
+ ```bash
2143
+ prompture mcp add --preset exa # keyless web search server
2144
+ prompture mcp add search --url https://host/mcp --header 'Authorization=Bearer ${SEARCH_TOKEN}'
2145
+ prompture mcp list | test | remove | import --from cursor
2146
+ ```
2147
+
2148
+ ```python
2149
+ agent = Agent("openai/gpt-4o-mini", tools=["mcp:exa"])
2150
+ ```
2151
+
2152
+ Servers live in `~/.prompture/mcp.json` and `./.prompture/mcp.json` (project
2153
+ wins). Secrets are stored only as `${ENV}` references. Sessions are pooled,
2154
+ tools are prefixed `<server>__<tool>`, and each call lands in the usage
2155
+ ledger.
2156
+
2157
+ ### CLI tools and domain packs
2158
+
2159
+ ```python
2160
+ agent = Agent("openai/gpt-4o", tools=["cli:gh", "pack:finance", "pack:dev"])
2161
+ ```
2162
+
2163
+ - `cli:gh` (repo/issue/PR read + search, `gh api` GET-only), `cli:yt-dlp`, or
2164
+ your own read-only commands in `.prompture/tools.yaml`. No shell, only
2165
+ declared subcommands, flag-injection guards, timeouts and output caps.
2166
+ - Packs: `finance` (Finnhub, CoinGecko), `news` (NewsAPI, feeds), `dev`
2167
+ (GitHub, HN, arXiv, PyPI, npm), `places` (Google Maps, OpenCage, country
2168
+ data). Tools without their key are left out; doctor shows which env var to set.
2169
+
2170
+ ### Setup and credentials
2171
+
2172
+ ```bash
2173
+ prompture setup # wizard: providers, keys (validated live), default model, proxy
2174
+ prompture configure OPENAI_API_KEY # prompted, hidden
2175
+ prompture configure --list # names + masked values
2176
+ prompture reset --dry-run
2177
+ ```
2178
+
2179
+ Keys live in `~/.prompture/credentials.yaml` (owner-only, created on first
2180
+ write); environment variables and `.env` always win. Profiles via
2181
+ `--profile` / `PROMPTURE_PROFILE`. Proxies: `PROMPTURE_PROXY` or
2182
+ `PROMPTURE_<BACKEND>_PROXY`. Every mutating command takes `--dry-run`.
2183
+
2184
+ ### Agent skill and updates
2185
+
2186
+ ```bash
2187
+ prompture skill install --target claude # or --target project / --target path --path DIR
2188
+ prompture check-update # one PyPI call, cached 24 h
2189
+ prompture watch # offline doctor + update check for cron (exit 1 = broken)
2190
+ ```
2191
+
2192
+ The skill teaches coding agents the standing rules (run doctor first,
2193
+ announce the backend, follow the fallback chain) and routes them to
2194
+ per-capability references. For agents setting Prompture up from scratch, see
2195
+ [docs/agent-install.md](docs/agent-install.md); [llms.txt](llms.txt) maps
2196
+ the library for LLMs.
2197
+
2055
2198
  ## CLI
2056
2199
 
2057
2200
  ```bash
2058
- prompture run <spec-file>
2201
+ prompture doctor | setup | configure | reset # health and credentials
2202
+ prompture research | transcribe # capabilities
2203
+ prompture mcp add|list|test|remove|import # MCP hub
2204
+ prompture skill install | check-update | watch # agents and updates
2205
+ prompture serve | hub | companion # servers
2206
+ prompture run <spec-file> # spec-driven cross-model suites
2059
2207
  ```
2060
2208
 
2061
- Run spec-driven extraction suites for cross-model comparison.
2209
+ `prompture --help` lists every command; `python -m prompture` works when the
2210
+ script isn't on PATH.
2062
2211
 
2063
2212
  ## OpenAI-Compatible Server
2064
2213
 
@@ -77,7 +77,8 @@ No setup: Desk runs `prompture companion` (Prompture 1.13+) on localhost for you
77
77
  **Agents, tools, RAG**
78
78
  - Stateful conversations with sync + async support
79
79
  - Function calling and streaming across providers, with prompt-based simulation for models without native tool use
80
- - Drop-in tools: sandboxed `python_execute` (Tukuy), `web_search` (Tavily / Serper / Brave / SearXNG)
80
+ - Drop-in tools: sandboxed `python_execute` (Tukuy), keyless `web_search` / `web_fetch` / `read_url` (YouTube, GitHub, HN, arXiv, Wikipedia, feeds, podcasts) — see [Capabilities](#capabilities)
81
+ - Mount tools by name: `tools=["web:all", "mcp:exa", "pack:finance", "cli:gh"]`; `ResearchAgent` for cited multi-source research
81
82
  - `DeepAgent` with planning, virtual filesystem, sub-agents, and auto-summarization — no LangChain
82
83
  - Full RAG stack — loaders, chunkers, vector stores, hybrid dense+BM25 retrieval, end-to-end `RAGPipeline` — see [RAG](#rag)
83
84
 
@@ -87,6 +88,7 @@ No setup: Desk runs `prompture companion` (Prompture 1.13+) on localhost for you
87
88
  - `generate_qa_dataset()` — synthetic JSONL datasets ready for Unsloth, Axolotl, TRL
88
89
 
89
90
  **Ops**
91
+ - `prompture doctor` — what works on this machine (providers, tools, media, MCP servers, binaries), which backend is active, and the exact fix for anything that isn't
90
92
  - Resilient routing — `resilient()` retries transient errors, honors `Retry-After`, rotates API keys, trips circuit breakers and fails over across models; every response records who served it — see [Resilient Routing](#resilient-routing)
91
93
  - [Prompture Desk](#prompture-desk-usage-in-your-tray) — desktop tray app: usage per provider and project, rate limits and balances, live calls
92
94
  - [prompture-hub](#prompture-hub-gateway--dashboard) — optional companion app: web dashboard, scoped per-app keys, spend caps and per-call metering (`pip install prompture[hub]`)
@@ -127,6 +129,9 @@ use.
127
129
  | `airllm` | AirLLM local inference | `pip install prompture[airllm]` |
128
130
  | `bedrock` | AWS Bedrock driver (`boto3`) | `pip install prompture[bedrock]` |
129
131
  | `sandbox` | Sandboxed Python execution tool (`tukuy`) | `pip install prompture[sandbox]` |
132
+ | `web` | Feed reader, YouTube transcripts, article extraction for the [web tools](#web-tools-zero-keys-required) | `pip install prompture[web]` |
133
+ | `media` | `yt-dlp` for video/podcast [transcription](#media-understanding-transcripts-and-summaries) | `pip install prompture[media]` |
134
+ | `mcp` | [MCP hub](#mcp-hub) client and server | `pip install prompture[mcp]` |
130
135
 
131
136
  ### RAG — the easy path
132
137
 
@@ -1357,21 +1362,14 @@ Runnable example: `python examples/python_sandbox_example.py`.
1357
1362
 
1358
1363
  ### Web search
1359
1364
 
1360
- `WebSearchTool` ships a ready-to-register `web_search` tool with four
1361
- interchangeable backends:
1362
-
1363
- | Provider | Env var | Notes |
1364
- |------------|------------------------|------------------------------------------|
1365
- | `tavily` | `TAVILY_API_KEY` | Default. AI-friendly snippets + answer. |
1366
- | `serper` | `SERPER_API_KEY` | Google Search API wrapper. |
1367
- | `brave` | `BRAVE_SEARCH_API_KEY` | Independent index. |
1368
- | `searxng` | `SEARXNG_ENDPOINT` | Self-hosted metasearch, no key required. |
1365
+ Web search works with no keys. See [Web tools](#web-tools-zero-keys-required)
1366
+ for the full set (fetch, URL readers, platform search) and the fallback order.
1369
1367
 
1370
1368
  ```python
1371
1369
  from prompture import Agent, ToolRegistry, WebSearchTool
1372
1370
 
1373
1371
  registry = ToolRegistry()
1374
- WebSearchTool().register_on(registry) # auto-pick from env
1372
+ WebSearchTool().register_on(registry) # keyed providers first, keyless Exa last
1375
1373
 
1376
1374
  agent = Agent(
1377
1375
  "openai/gpt-4o",
@@ -1381,12 +1379,9 @@ agent = Agent(
1381
1379
  print(agent.run("What's new in LangChain this month?").output)
1382
1380
  ```
1383
1381
 
1384
- Override the backend per call site by passing `provider="serper"` (or
1385
- `brave`/`searxng`). Results come back as Markdown so the LLM can cite
1386
- each hit inline; Tavily's synthesised answer (when available) is
1387
- prepended.
1388
-
1389
- Runnable example: `python examples/web_search_agent_example.py`.
1382
+ `WebSearchTool(provider="serper")` pins a single provider (`tavily`, `exa`,
1383
+ `serper`, `brave`, `jina`, `searxng`, `exa_mcp`). Runnable example:
1384
+ `python examples/web_search_agent_example.py`.
1390
1385
 
1391
1386
  ### Deep Agents
1392
1387
 
@@ -1941,13 +1936,161 @@ All extraction functions return a consistent structure:
1941
1936
  }
1942
1937
  ```
1943
1938
 
1939
+ ## Capabilities
1940
+
1941
+ Prompture also gives agents working capabilities — search, read, watch,
1942
+ listen, call external tools — and tells you what works on this machine. Each
1943
+ one works with nothing configured, improves as keys are added, fails over
1944
+ instead of failing, and reports its own health.
1945
+
1946
+ ### Doctor
1947
+
1948
+ ```bash
1949
+ prompture doctor # table: capability, status, active backend, message, fix
1950
+ prompture doctor --only providers -v # every provider, including unconfigured ones
1951
+ prompture doctor --live # cheap real calls (model lists), never a paid generation
1952
+ prompture doctor --json # stable "prompture.doctor/1" schema for agents
1953
+ ```
1954
+
1955
+ Offline by default: no network, no writes. Binary checks actually run the
1956
+ binary, so a stale `yt-dlp` shim left by a Python upgrade shows as `broken`
1957
+ with a reinstall hint. Python: `from prompture.doctor import check_all`.
1958
+
1959
+ ### Web tools (zero keys required)
1960
+
1961
+ ```python
1962
+ from prompture import Agent
1963
+ from prompture.tools.web import web_search, web_fetch, read_url, search_platform
1964
+
1965
+ resp = web_search("latest CPython release", max_results=3)
1966
+ print(resp.to_markdown()) # ... served by exa_mcp
1967
+ page = web_fetch("https://example.com", max_chars=20000) # Jina reader, then direct; page with start=
1968
+ video = read_url("https://youtu.be/<id>") # transcript
1969
+ repos = search_platform("github", "web scraping", kind="repositories")
1970
+
1971
+ agent = Agent("openai/gpt-4o", tools=["web:all"])
1972
+ ```
1973
+
1974
+ | Capability | Chain (first available wins, failures move on) |
1975
+ |---|---|
1976
+ | `web_search` | `tavily` ▸ `exa` ▸ `serper` ▸ `brave` ▸ `jina` ▸ `searxng` ▸ `exa_mcp` (keyless) |
1977
+ | `web_fetch` | `jina_reader` (keyless) ▸ `direct` (safe GET + HTML to Markdown) |
1978
+ | `read_url` | YouTube, GitHub, Hacker News, arXiv, Wikipedia, podcasts, RSS/Atom readers ▸ `web_fetch` |
1979
+ | `search_platform` | YouTube (`yt-dlp`), GitHub, Hacker News (Algolia), arXiv |
1980
+
1981
+ - Auth, quota and rate-limit errors fail over immediately; timeouts and 5xx
1982
+ retry once. Every result reports `route["served_by"]` and `route["fallback"]`.
1983
+ - Reorder with `PROMPTURE_SEARCH_PROVIDERS` / `PROMPTURE_FETCH_BACKENDS`
1984
+ (unknown names are ignored; unlisted backends keep their place).
1985
+ - Only public URLs: private, loopback, link-local and metadata addresses are
1986
+ refused, redirects are re-checked per hop, bodies are size-capped and
1987
+ challenge pages move to the next backend.
1988
+
1989
+ ### Media understanding: transcripts and summaries
1990
+
1991
+ ```python
1992
+ from prompture.media.understand import transcribe, summarize_media
1993
+
1994
+ t = transcribe("https://example.com/episode.mp3") # URL or local file
1995
+ print(t.to_markdown()) # [00:01:05] ...
1996
+ s = summarize_media(t, model="openai/gpt-4o-mini")
1997
+ ```
1998
+
1999
+ `auto` uses the first configured STT key (Groq ▸ OpenAI ▸ ElevenLabs). Audio
2000
+ never goes to a second provider unless you pass
2001
+ `allow_provider_fallback=True`. Long media is downmixed and split into
2002
+ 10-minute chunks with `ffmpeg`; video/podcast pages need `yt-dlp`. CLI:
2003
+ `prompture transcribe <url|file> [--summary] [--out x.json]`.
2004
+
2005
+ ### Research agent
2006
+
2007
+ ```bash
2008
+ prompture research "What changed in Python 3.13?" --depth quick --json
2009
+ ```
2010
+
2011
+ ```python
2012
+ from prompture.research import ResearchAgent, ResearchBudget
2013
+ report = ResearchAgent("openai/gpt-4o-mini", budget=ResearchBudget(max_fetches=6, max_cost=0.05)).run("...")
2014
+ print(report.to_markdown())
2015
+ ```
2016
+
2017
+ Plans sub-questions, searches the web plus GitHub/HN/arXiv/YouTube in
2018
+ parallel, reads the top pages and writes an answer whose citations point only
2019
+ at pages it actually opened, with coverage gaps and conflicting claims.
2020
+ Fetch, token, cost and wall-clock budgets are enforced. Other agents can use
2021
+ it as a tool: `tools=[research_tool(depth="quick")]`.
2022
+
2023
+ ### MCP hub
2024
+
2025
+ ```bash
2026
+ prompture mcp add --preset exa # keyless web search server
2027
+ prompture mcp add search --url https://host/mcp --header 'Authorization=Bearer ${SEARCH_TOKEN}'
2028
+ prompture mcp list | test | remove | import --from cursor
2029
+ ```
2030
+
2031
+ ```python
2032
+ agent = Agent("openai/gpt-4o-mini", tools=["mcp:exa"])
2033
+ ```
2034
+
2035
+ Servers live in `~/.prompture/mcp.json` and `./.prompture/mcp.json` (project
2036
+ wins). Secrets are stored only as `${ENV}` references. Sessions are pooled,
2037
+ tools are prefixed `<server>__<tool>`, and each call lands in the usage
2038
+ ledger.
2039
+
2040
+ ### CLI tools and domain packs
2041
+
2042
+ ```python
2043
+ agent = Agent("openai/gpt-4o", tools=["cli:gh", "pack:finance", "pack:dev"])
2044
+ ```
2045
+
2046
+ - `cli:gh` (repo/issue/PR read + search, `gh api` GET-only), `cli:yt-dlp`, or
2047
+ your own read-only commands in `.prompture/tools.yaml`. No shell, only
2048
+ declared subcommands, flag-injection guards, timeouts and output caps.
2049
+ - Packs: `finance` (Finnhub, CoinGecko), `news` (NewsAPI, feeds), `dev`
2050
+ (GitHub, HN, arXiv, PyPI, npm), `places` (Google Maps, OpenCage, country
2051
+ data). Tools without their key are left out; doctor shows which env var to set.
2052
+
2053
+ ### Setup and credentials
2054
+
2055
+ ```bash
2056
+ prompture setup # wizard: providers, keys (validated live), default model, proxy
2057
+ prompture configure OPENAI_API_KEY # prompted, hidden
2058
+ prompture configure --list # names + masked values
2059
+ prompture reset --dry-run
2060
+ ```
2061
+
2062
+ Keys live in `~/.prompture/credentials.yaml` (owner-only, created on first
2063
+ write); environment variables and `.env` always win. Profiles via
2064
+ `--profile` / `PROMPTURE_PROFILE`. Proxies: `PROMPTURE_PROXY` or
2065
+ `PROMPTURE_<BACKEND>_PROXY`. Every mutating command takes `--dry-run`.
2066
+
2067
+ ### Agent skill and updates
2068
+
2069
+ ```bash
2070
+ prompture skill install --target claude # or --target project / --target path --path DIR
2071
+ prompture check-update # one PyPI call, cached 24 h
2072
+ prompture watch # offline doctor + update check for cron (exit 1 = broken)
2073
+ ```
2074
+
2075
+ The skill teaches coding agents the standing rules (run doctor first,
2076
+ announce the backend, follow the fallback chain) and routes them to
2077
+ per-capability references. For agents setting Prompture up from scratch, see
2078
+ [docs/agent-install.md](docs/agent-install.md); [llms.txt](llms.txt) maps
2079
+ the library for LLMs.
2080
+
1944
2081
  ## CLI
1945
2082
 
1946
2083
  ```bash
1947
- prompture run <spec-file>
2084
+ prompture doctor | setup | configure | reset # health and credentials
2085
+ prompture research | transcribe # capabilities
2086
+ prompture mcp add|list|test|remove|import # MCP hub
2087
+ prompture skill install | check-update | watch # agents and updates
2088
+ prompture serve | hub | companion # servers
2089
+ prompture run <spec-file> # spec-driven cross-model suites
1948
2090
  ```
1949
2091
 
1950
- Run spec-driven extraction suites for cross-model comparison.
2092
+ `prompture --help` lists every command; `python -m prompture` works when the
2093
+ script isn't on PATH.
1951
2094
 
1952
2095
  ## OpenAI-Compatible Server
1953
2096
 
@@ -0,0 +1,55 @@
1
+ # Prompture
2
+
3
+ > Python library and CLI that gives agents working capabilities: call and compare LLMs with structured (JSON / Pydantic) output, search and read the web with zero keys, transcribe and summarize video/audio, research with citations, mount MCP servers and CLI tools, and report exactly what works on this machine and how to fix what doesn't. Install with `pip install prompture`.
4
+
5
+ Model strings are `provider/model` (e.g. `openai/gpt-4o-mini`, `claude/claude-haiku-4-5`, `ollama/llama3.1:8b`). Every capability has a keyless default, fails over across backends, and reports which backend served it (`route["served_by"]`, `route["fallback"]`). Agents accept tool specs such as `tools=["web:all", "mcp:exa", "pack:finance", "cli:gh"]`.
6
+
7
+ ## Start here
8
+
9
+ - [Agent install guide](docs/agent-install.md): install, run doctor, offer extras, configure only what the user picks
10
+ - [Agent update guide](docs/agent-update.md): check-update, upgrade, re-run doctor
11
+ - [Agent skill](prompture/skill/data/SKILL.md): standing rules and routing table (`prompture skill install`)
12
+ - [README](README.md): full feature tour
13
+
14
+ ## CLI
15
+
16
+ - `prompture doctor [--live] [--json] [--only providers|tools|media|mcp|binaries]`: health, active backend and exact fix per capability (schema `prompture.doctor/1`)
17
+ - `prompture research "question" [--depth quick|standard|deep] [--json]`: cited multi-source report
18
+ - `prompture transcribe <url|file> [--summary] [--out file]`: timestamped transcript
19
+ - `prompture mcp add|list|remove|test|import|enable|disable`: named MCP servers
20
+ - `prompture setup`, `prompture configure KEY [VALUE]`, `prompture reset`: credentials and profiles (all take `--dry-run`)
21
+ - `prompture check-update`, `prompture watch`: update awareness and scheduled health
22
+ - `prompture skill install|uninstall|show`: the bundled agent skill
23
+ - `prompture serve`: OpenAI-compatible server
24
+
25
+ ## Capability references
26
+
27
+ - [Web search and research](prompture/skill/data/references/search.md): `web_search`, `search_platform`, `ResearchAgent`
28
+ - [Reading URLs](prompture/skill/data/references/web.md): `read_url` readers, `web_fetch`, URL safety
29
+ - [Media](prompture/skill/data/references/media.md): `transcribe`, `summarize_media`, STT provider privacy
30
+ - [Models](prompture/skill/data/references/models.md): `extract_with_model`, `Agent`, `Conversation`, `resilient`
31
+ - [MCP](prompture/skill/data/references/mcp.md): presets, registry, `${ENV}` secrets
32
+ - [Finance, news, places packs](prompture/skill/data/references/finance.md)
33
+ - [Developer sources and CLI tools](prompture/skill/data/references/dev.md): GitHub, HN, arXiv, PyPI, npm, `gh`, `yt-dlp`
34
+
35
+ ## Modules
36
+
37
+ - `prompture.extraction`: `ask_for_json`, `extract_and_jsonify`, `extract_with_model`, `stepwise_extract_with_model`
38
+ - `prompture.agents`: `Agent`, `Conversation`, `DeepAgent`, `ToolRegistry`
39
+ - `prompture.drivers`: one driver per provider; `get_driver_for_model("provider/model")`
40
+ - `prompture.resilience`: `resilient()`, `classify_error`, combos and virtual models
41
+ - `prompture.capabilities`: `BackendChain`, `probe_command`, `HealthStatus`, `safe_get`, `normalize_public_http_url`
42
+ - `prompture.tools.web`: `web_search`, `web_fetch`, `read_url`, `search_platform`, `WebToolkit`
43
+ - `prompture.media.understand`: `transcribe`, `summarize_media`
44
+ - `prompture.mcp`: MCP client/server and `hub` (`MCPHub`, `resolve_mcp_tools`)
45
+ - `prompture.tools.cli`, `prompture.tools.packs`: `CLITool`, domain packs
46
+ - `prompture.research`: `ResearchAgent`, `research_tool`
47
+ - `prompture.doctor`: `check_all()` → `DoctorReport`
48
+ - `prompture.infra`: settings, credentials store, environment detection, updates, discovery
49
+ - `prompture.gateway`: OpenAI / Anthropic / Responses wire formats
50
+
51
+ ## Optional
52
+
53
+ - [Multimodal drivers](docs/MULTIMODAL.md): image, video, TTS, STT, embeddings
54
+ - [Integrations](docs/INTEGRATIONS.md)
55
+ - [Breaking changes](BREAKING_CHANGES.md)