msgflux 0.3.0__tar.gz → 0.4.1__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 (479) hide show
  1. {msgflux-0.3.0 → msgflux-0.4.1}/CHANGELOG.md +11 -0
  2. {msgflux-0.3.0 → msgflux-0.4.1}/PKG-INFO +1 -1
  3. {msgflux-0.3.0 → msgflux-0.4.1}/docs/dependency-management.md +21 -13
  4. {msgflux-0.3.0 → msgflux-0.4.1}/docs/index.md +2 -0
  5. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/chat_completion.md +93 -0
  6. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/tools.md +54 -0
  7. msgflux-0.4.1/docs/learn/retrievers/web.md +730 -0
  8. {msgflux-0.3.0 → msgflux-0.4.1}/mkdocs.yml +0 -13
  9. msgflux-0.4.1/src/msgflux/data/retrievers/providers/arxiv.py +229 -0
  10. msgflux-0.4.1/src/msgflux/data/retrievers/providers/brave.py +149 -0
  11. msgflux-0.4.1/src/msgflux/data/retrievers/providers/exa.py +196 -0
  12. msgflux-0.4.1/src/msgflux/data/retrievers/providers/linkup.py +162 -0
  13. msgflux-0.4.1/src/msgflux/data/retrievers/providers/serpapi.py +225 -0
  14. msgflux-0.4.1/src/msgflux/data/retrievers/providers/tavily.py +180 -0
  15. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/retriever.py +5 -0
  16. msgflux-0.4.1/src/msgflux/models/providers/brave.py +27 -0
  17. msgflux-0.4.1/src/msgflux/models/providers/exa.py +57 -0
  18. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/groq.py +1 -1
  19. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/ollama.py +1 -1
  20. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/openai.py +6 -0
  21. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/openrouter.py +1 -1
  22. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/vllm.py +1 -1
  23. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/tools/builtin/__init__.py +2 -1
  24. msgflux-0.4.1/src/msgflux/tools/builtin/web_search.py +257 -0
  25. msgflux-0.4.1/src/msgflux/version.py +1 -0
  26. msgflux-0.4.1/tests/data/retrievers/providers/test_arxiv.py +173 -0
  27. msgflux-0.4.1/tests/data/retrievers/providers/test_brave.py +114 -0
  28. msgflux-0.4.1/tests/data/retrievers/providers/test_exa.py +174 -0
  29. msgflux-0.4.1/tests/data/retrievers/providers/test_linkup.py +149 -0
  30. msgflux-0.4.1/tests/data/retrievers/providers/test_serpapi.py +275 -0
  31. msgflux-0.4.1/tests/data/retrievers/providers/test_tavily.py +146 -0
  32. msgflux-0.4.1/tests/models/providers/test_brave.py +35 -0
  33. msgflux-0.4.1/tests/models/providers/test_exa.py +49 -0
  34. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/providers/test_openai.py +45 -0
  35. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/providers/test_vllm.py +24 -0
  36. msgflux-0.4.1/tests/tools/builtin/test_web_search.py +303 -0
  37. {msgflux-0.3.0 → msgflux-0.4.1}/uv.lock +61 -163
  38. msgflux-0.3.0/docs/learn/retrievers/web.md +0 -196
  39. msgflux-0.3.0/src/msgflux/version.py +0 -1
  40. {msgflux-0.3.0 → msgflux-0.4.1}/.github/CODEOWNERS +0 -0
  41. {msgflux-0.3.0 → msgflux-0.4.1}/.github/SECURITY.md +0 -0
  42. {msgflux-0.3.0 → msgflux-0.4.1}/.github/dependabot.yml +0 -0
  43. {msgflux-0.3.0 → msgflux-0.4.1}/.github/labeler.yml +0 -0
  44. {msgflux-0.3.0 → msgflux-0.4.1}/.github/pull_request_template.md +0 -0
  45. {msgflux-0.3.0 → msgflux-0.4.1}/.github/release-drafter.yml +0 -0
  46. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/ci.yml +0 -0
  47. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/docs.yml +0 -0
  48. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/labeler.yml +0 -0
  49. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/merge-bot.yml +0 -0
  50. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/pre-commit-autoupdate.yml +0 -0
  51. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/publish.yml +0 -0
  52. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/release-drafter.yml +0 -0
  53. {msgflux-0.3.0 → msgflux-0.4.1}/.github/workflows/validate-release.yml +0 -0
  54. {msgflux-0.3.0 → msgflux-0.4.1}/.gitignore +0 -0
  55. {msgflux-0.3.0 → msgflux-0.4.1}/.pre-commit-config.yaml +0 -0
  56. {msgflux-0.3.0 → msgflux-0.4.1}/.python-version +0 -0
  57. {msgflux-0.3.0 → msgflux-0.4.1}/.readthedocs.yaml +0 -0
  58. {msgflux-0.3.0 → msgflux-0.4.1}/CONTRIBUTING.md +0 -0
  59. {msgflux-0.3.0 → msgflux-0.4.1}/LICENSE +0 -0
  60. {msgflux-0.3.0 → msgflux-0.4.1}/README.md +0 -0
  61. {msgflux-0.3.0 → msgflux-0.4.1}/docs/CHANGELOG.md +0 -0
  62. {msgflux-0.3.0 → msgflux-0.4.1}/docs/CNAME +0 -0
  63. {msgflux-0.3.0 → msgflux-0.4.1}/docs/_includes/init_chat_completion_model.md +0 -0
  64. {msgflux-0.3.0 → msgflux-0.4.1}/docs/_includes/install.md +0 -0
  65. {msgflux-0.3.0 → msgflux-0.4.1}/docs/_includes/install_openai.md +0 -0
  66. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/agent.md +0 -0
  67. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/chat-schema-utils.md +0 -0
  68. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/dict-lowering-and-restoration.md +0 -0
  69. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/index.md +0 -0
  70. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/llm-as-a-verifier.md +0 -0
  71. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/logical-vs-provider-schema.md +0 -0
  72. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/msgspec-transport-lowering.md +0 -0
  73. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/openai-chat-completion.md +0 -0
  74. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/react-provider-schemas.md +0 -0
  75. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/signatures.md +0 -0
  76. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/tool-flow-control.md +0 -0
  77. {msgflux-0.3.0 → msgflux-0.4.1}/docs/anatomy/tool-library.md +0 -0
  78. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/databases/database.md +0 -0
  79. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/databases/types/kv.md +0 -0
  80. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/databases/types/vector.md +0 -0
  81. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/model.md +0 -0
  82. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/model_gateway.md +0 -0
  83. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/chat_completion.md +0 -0
  84. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/image_classifier.md +0 -0
  85. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/image_embedder.md +0 -0
  86. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/image_text_to_image.md +0 -0
  87. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/moderation.md +0 -0
  88. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/speech_to_text.md +0 -0
  89. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/text_classifier.md +0 -0
  90. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/text_embedder.md +0 -0
  91. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/text_reranker.md +0 -0
  92. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/text_to_image.md +0 -0
  93. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/models/types/text_to_speech.md +0 -0
  94. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/functional.md +0 -0
  95. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/agent.md +0 -0
  96. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/module.md +0 -0
  97. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/module_dict.md +0 -0
  98. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/module_list.md +0 -0
  99. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/predictor.md +0 -0
  100. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/searcher.md +0 -0
  101. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/sequential.md +0 -0
  102. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/speaker.md +0 -0
  103. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/tool.md +0 -0
  104. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference/nn/modules/transcriber.md +0 -0
  105. {msgflux-0.3.0 → msgflux-0.4.1}/docs/api-reference.md +0 -0
  106. {msgflux-0.3.0 → msgflux-0.4.1}/docs/assets/logo-msgflux-horizon.png +0 -0
  107. {msgflux-0.3.0 → msgflux-0.4.1}/docs/assets/logo.png +0 -0
  108. {msgflux-0.3.0 → msgflux-0.4.1}/docs/assets/msgflux-wordmark.png +0 -0
  109. {msgflux-0.3.0 → msgflux-0.4.1}/docs/assets/msgflux.png +0 -0
  110. {msgflux-0.3.0 → msgflux-0.4.1}/docs/assets/tmd-mascot.png +0 -0
  111. {msgflux-0.3.0 → msgflux-0.4.1}/docs/blog/.authors.yml +0 -0
  112. {msgflux-0.3.0 → msgflux-0.4.1}/docs/blog/index.md +0 -0
  113. {msgflux-0.3.0 → msgflux-0.4.1}/docs/blog/posts/.meta.yml +0 -0
  114. {msgflux-0.3.0 → msgflux-0.4.1}/docs/blog/posts/26-04/why-msgflux-exists.md +0 -0
  115. {msgflux-0.3.0 → msgflux-0.4.1}/docs/changelog.md +0 -0
  116. {msgflux-0.3.0 → msgflux-0.4.1}/docs/hooks/copy_markdown.py +0 -0
  117. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/dotdict.md +0 -0
  118. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/inline.md +0 -0
  119. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/image_text_to_image.md +0 -0
  120. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/model.md +0 -0
  121. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/model_gateway.md +0 -0
  122. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/moderation.md +0 -0
  123. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/speech_to_text.md +0 -0
  124. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/text_classifier.md +0 -0
  125. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/text_embedder.md +0 -0
  126. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/text_reranker.md +0 -0
  127. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/text_to_image.md +0 -0
  128. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/models/text_to_speech.md +0 -0
  129. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/async.md +0 -0
  130. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/debug.md +0 -0
  131. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/generation-schemas.md +0 -0
  132. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/hooks.md +0 -0
  133. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/index.md +0 -0
  134. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/model-gateway.md +0 -0
  135. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/prefilling.md +0 -0
  136. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/quickstart.md +0 -0
  137. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/reasoning.md +0 -0
  138. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/signatures.md +0 -0
  139. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/streaming.md +0 -0
  140. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/system-prompt.md +0 -0
  141. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/task-and-context.md +0 -0
  142. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/agent/vars.md +0 -0
  143. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/functional.md +0 -0
  144. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/mediamaker.md +0 -0
  145. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/message.md +0 -0
  146. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/composing.md +0 -0
  147. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/core-concepts.md +0 -0
  148. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/forward-and-async.md +0 -0
  149. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/index.md +0 -0
  150. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/module-dict.md +0 -0
  151. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/module-list.md +0 -0
  152. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/sequential.md +0 -0
  153. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/module/visualization.md +0 -0
  154. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/predictor.md +0 -0
  155. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/searcher.md +0 -0
  156. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/speaker.md +0 -0
  157. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/nn/transcriber.md +0 -0
  158. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/parsers.md +0 -0
  159. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/retrievers/fuzzy.md +0 -0
  160. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/retrievers/lexical.md +0 -0
  161. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/retrievers/retriever.md +0 -0
  162. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/telemetry.md +0 -0
  163. {msgflux-0.3.0 → msgflux-0.4.1}/docs/learn/verifiers.md +0 -0
  164. {msgflux-0.3.0 → msgflux-0.4.1}/docs/stylesheets/extra.css +0 -0
  165. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/ad-focus-group.md +0 -0
  166. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/advisor-specialist-tool.md +0 -0
  167. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/call-transcript-analysis.md +0 -0
  168. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/deal-briefing-generator.md +0 -0
  169. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/email-auto-responder.md +0 -0
  170. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/food-delivery-assistant.md +0 -0
  171. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/index.md +0 -0
  172. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/intent-router.md +0 -0
  173. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/lead-scoring.md +0 -0
  174. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/meeting-action-items.md +0 -0
  175. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/meeting-assistant.md +0 -0
  176. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/pix-assistant.md +0 -0
  177. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/plan-tool-with-root-context.md +0 -0
  178. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/product-poster.md +0 -0
  179. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/restaurant-supply-assistant.md +0 -0
  180. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/signature-router.md +0 -0
  181. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/streaming-support-triage.md +0 -0
  182. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/support-ticket-router.md +0 -0
  183. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/visit-report.md +0 -0
  184. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/workplace-incident-reporter.md +0 -0
  185. {msgflux-0.3.0 → msgflux-0.4.1}/docs/tutorials/youtube-cut-detector.md +0 -0
  186. {msgflux-0.3.0 → msgflux-0.4.1}/examples/ad_focus_group.py +0 -0
  187. {msgflux-0.3.0 → msgflux-0.4.1}/examples/advisor_specialist_tool.py +0 -0
  188. {msgflux-0.3.0 → msgflux-0.4.1}/examples/call_transcript_analysis.py +0 -0
  189. {msgflux-0.3.0 → msgflux-0.4.1}/examples/deal_briefing_generator.py +0 -0
  190. {msgflux-0.3.0 → msgflux-0.4.1}/examples/food_delivery_assistant.py +0 -0
  191. {msgflux-0.3.0 → msgflux-0.4.1}/examples/intent-router.py +0 -0
  192. {msgflux-0.3.0 → msgflux-0.4.1}/examples/lead_scoring.py +0 -0
  193. {msgflux-0.3.0 → msgflux-0.4.1}/examples/meeting_action_items.py +0 -0
  194. {msgflux-0.3.0 → msgflux-0.4.1}/examples/meeting_assistant.py +0 -0
  195. {msgflux-0.3.0 → msgflux-0.4.1}/examples/pix_assistant.py +0 -0
  196. {msgflux-0.3.0 → msgflux-0.4.1}/examples/plan_tool_with_root_history.py +0 -0
  197. {msgflux-0.3.0 → msgflux-0.4.1}/examples/restaurant-supply-assistant.py +0 -0
  198. {msgflux-0.3.0 → msgflux-0.4.1}/examples/streaming_support_triage.py +0 -0
  199. {msgflux-0.3.0 → msgflux-0.4.1}/examples/visit_report.py +0 -0
  200. {msgflux-0.3.0 → msgflux-0.4.1}/examples/youtube_cut_detector.py +0 -0
  201. {msgflux-0.3.0 → msgflux-0.4.1}/pyproject.toml +0 -0
  202. {msgflux-0.3.0 → msgflux-0.4.1}/scripts/release.sh +0 -0
  203. {msgflux-0.3.0 → msgflux-0.4.1}/scripts/setup-branch-protection.sh +0 -0
  204. {msgflux-0.3.0 → msgflux-0.4.1}/scripts/setup-labels.sh +0 -0
  205. {msgflux-0.3.0 → msgflux-0.4.1}/scripts/svg_render.py +0 -0
  206. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/__init__.py +0 -0
  207. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/_private/__init__.py +0 -0
  208. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/_private/client.py +0 -0
  209. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/_private/core.py +0 -0
  210. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/_private/executor.py +0 -0
  211. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/_private/response.py +0 -0
  212. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/auto/__init__.py +0 -0
  213. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/auto/params.py +0 -0
  214. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/cache.py +0 -0
  215. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/core/__init__.py +0 -0
  216. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/core/dotdict.py +0 -0
  217. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/core/examples.py +0 -0
  218. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/core/message.py +0 -0
  219. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/core/registry.py +0 -0
  220. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/__init__.py +0 -0
  221. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/audio.py +0 -0
  222. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/__init__.py +0 -0
  223. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/base.py +0 -0
  224. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/db.py +0 -0
  225. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/providers/__init__.py +0 -0
  226. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/providers/cachetools.py +0 -0
  227. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/providers/diskcache.py +0 -0
  228. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/providers/faiss.py +0 -0
  229. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/registry.py +0 -0
  230. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/response.py +0 -0
  231. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/dbs/types.py +0 -0
  232. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/__init__.py +0 -0
  233. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/base.py +0 -0
  234. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/parser.py +0 -0
  235. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/__init__.py +0 -0
  236. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/csv_parser.py +0 -0
  237. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/email_parser.py +0 -0
  238. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/html_parser.py +0 -0
  239. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/openpyxl.py +0 -0
  240. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/pypdf.py +0 -0
  241. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/python_docx.py +0 -0
  242. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/providers/python_pptx.py +0 -0
  243. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/registry.py +0 -0
  244. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/response.py +0 -0
  245. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/parsers/types.py +0 -0
  246. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/__init__.py +0 -0
  247. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/base.py +0 -0
  248. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/__init__.py +0 -0
  249. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/bm25.py +0 -0
  250. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/bm25s.py +0 -0
  251. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/rank_bm25.py +0 -0
  252. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/rapidfuzz.py +0 -0
  253. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/providers/wikipedia.py +0 -0
  254. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/registry.py +0 -0
  255. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/retrievers/types.py +0 -0
  256. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/__init__.py +0 -0
  257. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/audio.py +0 -0
  258. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/base.py +0 -0
  259. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/file.py +0 -0
  260. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/image.py +0 -0
  261. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/data/types/video.py +0 -0
  262. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/__init__.py +0 -0
  263. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/inline.py +0 -0
  264. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/signature.py +0 -0
  265. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/typed_parsers/__init__.py +0 -0
  266. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/typed_parsers/base.py +0 -0
  267. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/typed_parsers/providers/__init__.py +0 -0
  268. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/typed_parsers/providers/xml.py +0 -0
  269. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/dsl/typed_parsers/registry.py +0 -0
  270. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/envs.py +0 -0
  271. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/exceptions.py +0 -0
  272. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/__init__.py +0 -0
  273. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/control_flow.py +0 -0
  274. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/reasoning/__init__.py +0 -0
  275. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/reasoning/cot.py +0 -0
  276. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/reasoning/react.py +0 -0
  277. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/reasoning/self_consistency.py +0 -0
  278. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/templates.py +0 -0
  279. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/verifiers/__init__.py +0 -0
  280. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/verifiers/formatters.py +0 -0
  281. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/generation/verifiers/llm_as_a_verifier.py +0 -0
  282. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/logger.py +0 -0
  283. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/__init__.py +0 -0
  284. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/base.py +0 -0
  285. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/cache.py +0 -0
  286. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/gateway.py +0 -0
  287. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/httpx.py +0 -0
  288. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/model.py +0 -0
  289. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/profiles/__init__.py +0 -0
  290. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/profiles/base.py +0 -0
  291. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/profiles/loader.py +0 -0
  292. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/profiles/registry.py +0 -0
  293. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/__init__.py +0 -0
  294. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/cerebras.py +0 -0
  295. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/imagerouter.py +0 -0
  296. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/jinaai.py +0 -0
  297. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/replicate.py +0 -0
  298. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/sambanova.py +0 -0
  299. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/providers/together.py +0 -0
  300. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/registry.py +0 -0
  301. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/response.py +0 -0
  302. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/tool_call_agg.py +0 -0
  303. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/models/types.py +0 -0
  304. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/__init__.py +0 -0
  305. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/functional.py +0 -0
  306. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/hooks/__init__.py +0 -0
  307. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/hooks/guard.py +0 -0
  308. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/hooks/hook.py +0 -0
  309. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/__init__.py +0 -0
  310. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/agent.py +0 -0
  311. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/container.py +0 -0
  312. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/embedder.py +0 -0
  313. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/generator.py +0 -0
  314. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/mediamaker.py +0 -0
  315. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/module.py +0 -0
  316. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/predictor.py +0 -0
  317. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/searcher.py +0 -0
  318. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/speaker.py +0 -0
  319. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/tool.py +0 -0
  320. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/modules/transcriber.py +0 -0
  321. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/nn/parameter.py +0 -0
  322. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/__init__.py +0 -0
  323. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/__init__.py +0 -0
  324. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/__init__.py +0 -0
  325. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/apikey.py +0 -0
  326. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/base.py +0 -0
  327. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/basic.py +0 -0
  328. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/bearer.py +0 -0
  329. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/custom.py +0 -0
  330. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/auth/oauth2.py +0 -0
  331. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/client.py +0 -0
  332. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/exceptions.py +0 -0
  333. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/integration.py +0 -0
  334. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/loglevels.py +0 -0
  335. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/transports.py +0 -0
  336. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/protocols/mcp/types.py +0 -0
  337. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/py.typed +0 -0
  338. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/telemetry/__init__.py +0 -0
  339. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/telemetry/config.py +0 -0
  340. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/telemetry/span.py +0 -0
  341. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/tools/__init__.py +0 -0
  342. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/tools/builtin/web_fetch.py +0 -0
  343. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/tools/config.py +0 -0
  344. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/tools/definitions.py +0 -0
  345. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/__init__.py +0 -0
  346. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/chat.py +0 -0
  347. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/common.py +0 -0
  348. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/console.py +0 -0
  349. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/convert.py +0 -0
  350. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/encode.py +0 -0
  351. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/html.py +0 -0
  352. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/imports.py +0 -0
  353. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/inspect.py +0 -0
  354. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/logging.py +0 -0
  355. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/mermaid.py +0 -0
  356. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/msgspec.py +0 -0
  357. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/pooling.py +0 -0
  358. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/templates.py +0 -0
  359. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/tenacity.py +0 -0
  360. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/torch.py +0 -0
  361. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/validation.py +0 -0
  362. {msgflux-0.3.0 → msgflux-0.4.1}/src/msgflux/utils/xml.py +0 -0
  363. {msgflux-0.3.0 → msgflux-0.4.1}/tests/__init__.py +0 -0
  364. {msgflux-0.3.0 → msgflux-0.4.1}/tests/auto/__init__.py +0 -0
  365. {msgflux-0.3.0 → msgflux-0.4.1}/tests/auto/test_params.py +0 -0
  366. {msgflux-0.3.0 → msgflux-0.4.1}/tests/conftest.py +0 -0
  367. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/__init__.py +0 -0
  368. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/parsers/__init__.py +0 -0
  369. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/parsers/test_parsers.py +0 -0
  370. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/__init__.py +0 -0
  371. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/__init__.py +0 -0
  372. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/test_bm25.py +0 -0
  373. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/test_bm25s.py +0 -0
  374. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/test_rank_bm25.py +0 -0
  375. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/test_rapidfuzz.py +0 -0
  376. {msgflux-0.3.0 → msgflux-0.4.1}/tests/data/retrievers/providers/test_wikipedia.py +0 -0
  377. {msgflux-0.3.0 → msgflux-0.4.1}/tests/dsl/test_inline.py +0 -0
  378. {msgflux-0.3.0 → msgflux-0.4.1}/tests/dsl/test_signature.py +0 -0
  379. {msgflux-0.3.0 → msgflux-0.4.1}/tests/dsl/test_typed_parsers.py +0 -0
  380. {msgflux-0.3.0 → msgflux-0.4.1}/tests/generation/__init__.py +0 -0
  381. {msgflux-0.3.0 → msgflux-0.4.1}/tests/generation/test_control_flow.py +0 -0
  382. {msgflux-0.3.0 → msgflux-0.4.1}/tests/generation/test_reasoning.py +0 -0
  383. {msgflux-0.3.0 → msgflux-0.4.1}/tests/generation/test_templates.py +0 -0
  384. {msgflux-0.3.0 → msgflux-0.4.1}/tests/generation/test_verifiers.py +0 -0
  385. {msgflux-0.3.0 → msgflux-0.4.1}/tests/integration/test_agent_reasoning.py +0 -0
  386. {msgflux-0.3.0 → msgflux-0.4.1}/tests/integration/test_guard_moderation.py +0 -0
  387. {msgflux-0.3.0 → msgflux-0.4.1}/tests/integration/test_reasoning.py +0 -0
  388. {msgflux-0.3.0 → msgflux-0.4.1}/tests/integration/test_tool_dict_e2e.py +0 -0
  389. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/__init__.py +0 -0
  390. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/providers/__init__.py +0 -0
  391. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/providers/test_openrouter.py +0 -0
  392. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_base.py +0 -0
  393. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_cache.py +0 -0
  394. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_gateway.py +0 -0
  395. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_httpx.py +0 -0
  396. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_model.py +0 -0
  397. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_profiles.py +0 -0
  398. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_registry.py +0 -0
  399. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_response.py +0 -0
  400. {msgflux-0.3.0 → msgflux-0.4.1}/tests/models/test_tool_call_agg.py +0 -0
  401. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/__init__.py +0 -0
  402. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/__init__.py +0 -0
  403. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_agent.py +0 -0
  404. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_container.py +0 -0
  405. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_embedder.py +0 -0
  406. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_lm.py +0 -0
  407. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_mediamaker.py +0 -0
  408. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_module.py +0 -0
  409. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_predictor.py +0 -0
  410. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_searcher.py +0 -0
  411. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_speaker.py +0 -0
  412. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_tool.py +0 -0
  413. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_tool_transport_params.py +0 -0
  414. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/modules/test_transcriber.py +0 -0
  415. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/test_functional.py +0 -0
  416. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/test_guard.py +0 -0
  417. {msgflux-0.3.0 → msgflux-0.4.1}/tests/nn/test_parameter.py +0 -0
  418. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/__init__.py +0 -0
  419. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/__init__.py +0 -0
  420. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/auth/test_auth_providers.py +0 -0
  421. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/conftest.py +0 -0
  422. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/mcp_simple_server.py +0 -0
  423. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_client.py +0 -0
  424. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_exceptions.py +0 -0
  425. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_integration.py +0 -0
  426. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_loglevels.py +0 -0
  427. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_mcp_live.py +0 -0
  428. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_toollibrary_mcp.py +0 -0
  429. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_transports.py +0 -0
  430. {msgflux-0.3.0 → msgflux-0.4.1}/tests/protocols/mcp/test_types.py +0 -0
  431. {msgflux-0.3.0 → msgflux-0.4.1}/tests/telemetry/__init__.py +0 -0
  432. {msgflux-0.3.0 → msgflux-0.4.1}/tests/telemetry/test_config.py +0 -0
  433. {msgflux-0.3.0 → msgflux-0.4.1}/tests/telemetry/test_span_agent_decorators.py +0 -0
  434. {msgflux-0.3.0 → msgflux-0.4.1}/tests/telemetry/test_span_tool_decorators.py +0 -0
  435. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_as_tool_with_signature.py +0 -0
  436. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_generation_schema.py +0 -0
  437. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_image_detail.py +0 -0
  438. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_include_date.py +0 -0
  439. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_named_kwargs.py +0 -0
  440. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_signature_annotations.py +0 -0
  441. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_agent_templates_fix.py +0 -0
  442. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_async_hooks.py +0 -0
  443. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_autoparams.py +0 -0
  444. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_data_types.py +0 -0
  445. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_dotdict.py +0 -0
  446. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_embedder.py +0 -0
  447. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_examples.py +0 -0
  448. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_image_block_kwargs_refactor.py +0 -0
  449. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_inject_message.py +0 -0
  450. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_mcp_fastmcp.py +0 -0
  451. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_registry.py +0 -0
  452. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_tool_config_decorator.py +0 -0
  453. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_tool_control.py +0 -0
  454. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_tools_visualization.py +0 -0
  455. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_type_inheritance_struct.py +0 -0
  456. {msgflux-0.3.0 → msgflux-0.4.1}/tests/test_video_block_kwargs.py +0 -0
  457. {msgflux-0.3.0 → msgflux-0.4.1}/tests/tools/__init__.py +0 -0
  458. {msgflux-0.3.0 → msgflux-0.4.1}/tests/tools/builtin/__init__.py +0 -0
  459. {msgflux-0.3.0 → msgflux-0.4.1}/tests/tools/builtin/test_web_fetch.py +0 -0
  460. {msgflux-0.3.0 → msgflux-0.4.1}/tests/tools/test_config.py +0 -0
  461. {msgflux-0.3.0 → msgflux-0.4.1}/tests/tools/test_toolflowcontrol.py +0 -0
  462. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_chat.py +0 -0
  463. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_common.py +0 -0
  464. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_console.py +0 -0
  465. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_convert.py +0 -0
  466. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_encode.py +0 -0
  467. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_hint_to_schema_dict.py +0 -0
  468. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_hooks.py +0 -0
  469. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_imports.py +0 -0
  470. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_inspect.py +0 -0
  471. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_logging.py +0 -0
  472. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_mermaid.py +0 -0
  473. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_msgspec.py +0 -0
  474. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_pooling.py +0 -0
  475. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_templates.py +0 -0
  476. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_tenacity.py +0 -0
  477. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_torch.py +0 -0
  478. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_validation.py +0 -0
  479. {msgflux-0.3.0 → msgflux-0.4.1}/tests/utils/test_xml.py +0 -0
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.1] - 2026-04-22
4
+
5
+ - Fixes: restored uv.lock file for CI compatibility (#78).
6
+
7
+ ## [0.4.0] - 2026-04-22
8
+
9
+ - Features: added new web retrievers (Arxiv, Brave, Exa, LinkUp, SerpAPI, Tavily) and model integrations (Brave, Exa), plus configurable WebSearch tool (#71).
10
+ - Web Retriever: added support for Wikipedia highlighting in web retriever section (#73).
11
+ - Providers: added OpenAI-compatible `extra_body` support for chat completions (#72).
12
+ - Maintenance: removed uv.lock file (#74).
13
+
3
14
  ## [0.3.0] - 2026-04-20
4
15
 
5
16
  - Features: added OpenAI prompt cache retention support (#52), token logprobs metadata for chat completions (#53), and the `LLMAsVerifier` workflow with docs and examples (#54).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: msgflux
3
- Version: 0.3.0
3
+ Version: 0.4.1
4
4
  Summary: Messages and Dynamic AI Systems in Python powered by pretrained models
5
5
  Project-URL: Homepage, https://github.com/msgflux/msgflux
6
6
  Project-URL: Documentation, https://github.com/msgflux/msgflux
@@ -10,16 +10,17 @@ hide:
10
10
 
11
11
  ### Chat Completion
12
12
 
13
- | Provider | Dependency | Auth Env |
14
- |-------------|-------------------|----------------------|
15
- | Cerebras | `msgflux[openai]` | `CEREBRAS_API_KEY` |
16
- | Groq | `msgflux[openai]` | `GROQ_API_KEY` |
17
- | Ollama | `msgflux[openai]` | |
18
- | OpenAI | `msgflux[openai]` | `OPENAI_API_KEY` |
19
- | OpenRouter | `msgflux[openai]` | `OPENROUTER_API_KEY` |
20
- | SambaNova | `msgflux[openai]` | `SAMBANOVA_API_KEY` |
21
- | Together | `msgflux[openai]` | `TOGETHER_API_KEY` |
22
- | vLLM | `msgflux[openai]` | |
13
+ | Provider | Dependency | Auth Env |
14
+ |-------------|-------------------|------------------------|
15
+ | Brave | `msgflux[openai]` | `BRAVE_SEARCH_API_KEY` |
16
+ | Cerebras | `msgflux[openai]` | `CEREBRAS_API_KEY` |
17
+ | Groq | `msgflux[openai]` | `GROQ_API_KEY` |
18
+ | Ollama | `msgflux[openai]` | |
19
+ | OpenAI | `msgflux[openai]` | `OPENAI_API_KEY` |
20
+ | OpenRouter | `msgflux[openai]` | `OPENROUTER_API_KEY` |
21
+ | SambaNova | `msgflux[openai]` | `SAMBANOVA_API_KEY` |
22
+ | Together | `msgflux[openai]` | `TOGETHER_API_KEY` |
23
+ | vLLM | `msgflux[openai]` | |
23
24
 
24
25
  ### Image Embedder
25
26
 
@@ -144,6 +145,13 @@ hide:
144
145
 
145
146
  ### Web Search
146
147
 
147
- | Provider | Dependency |
148
- |-------------|---------------|
149
- | Wikipedia | `wikipedia` |
148
+ | Provider | Installation | Auth Env |
149
+ |-------------|----------------------------------|-----------------------------------|
150
+ | Trafilatura | `httpx`, `trafilatura` | |
151
+ | SerpApi | `httpx` | `SERPAPI_KEY` |
152
+ | Linkup | `linkup-sdk` | `LINKUP_API_KEY` |
153
+ | Tavily | `tavily-python` | `TAVILY_API_KEY` |
154
+ | Exa | `exa-py` | `EXA_API_KEY` |
155
+ | Brave | `brave-search-python-client` | `BRAVE_SEARCH_API_KEY` |
156
+ | arXiv | `arxiv` | |
157
+ | Wikipedia | `wikipedia` | |
@@ -34,6 +34,8 @@ hide:
34
34
 
35
35
  msgFlux is an open-source framework for building dynamic AI systems with **composable modules**. It treats prompts, signatures, tools, and message flow as explicit program structure instead of ad-hoc glue. Architecture, data flow, and prompting remain separate layers, so systems can evolve by changing contracts, modules, or routes without forcing everything to change together.
36
36
 
37
+ For web search, msgFlux includes both retriever-backed and model-backed options. The built-in `WebSearch` tool can be pointed at a retriever backend like `retriever/wikipedia` or a model backend like `model/openai/gpt-4o-search-preview`, returns `data` plus `annotations` when the backend supplies citations, and can read its engine plus JSON params from `MSGFLUX_TOOL_WEB_SEARCH_*` environment variables.
38
+
37
39
  ## **AI Systems *not* ML Systems**
38
40
 
39
41
  **ML systems** are systems *for* AI - they train, evaluate, and deploy models. **AI systems** are systems *with* AI - software where pretrained models operate as components inside a broader application. In that setting, the model is not the whole product; it is one building block among many. You are not optimizing weights - you are designing behavior, interfaces, and flow around a model. This is the space msgFlux occupies.
@@ -72,6 +72,7 @@ Chat completion models are stateless - they don't maintain conversation history
72
72
  verbose=False, # Print raw output before transformation
73
73
  # --- Search ---
74
74
  web_search_options={}, # Web search config (OpenAI / OpenRouter only)
75
+ extra_body={}, # Provider-specific OpenAI-compatible extensions
75
76
  prompt_cache_retention="24h", # OpenAI only: "in_memory" or "24h"
76
77
  # --- Infrastructure ---
77
78
  base_url="https://api.openai.com/v1", # Override provider API endpoint
@@ -82,6 +83,10 @@ Chat completion models are stateless - they don't maintain conversation history
82
83
  )
83
84
  ```
84
85
 
86
+ Use `extra_body` for provider-specific request body fields supported by
87
+ OpenAI-compatible APIs but not modeled directly by msgFlux. The dict is
88
+ forwarded to the underlying OpenAI SDK client.
89
+
85
90
  ## 2. **System Prompt**
86
91
 
87
92
  The `system_prompt` parameter sets the model's overarching behavior and role before any user messages. It is a convenience shorthand: when provided, msgFlux automatically inserts a `system` message at the beginning of the conversation, so you don't have to do it manually in the messages list.
@@ -736,6 +741,8 @@ Force the model to start its response with specific text. msgFlux appends the va
736
741
 
737
742
  The `web_search_options` parameter enables real-time web search, letting the model ground its answers in up-to-date information retrieved from the internet. It is currently supported by OpenAI search models (`gpt-4o-search-preview`, `gpt-4o-mini-search-preview`) and OpenRouter.
738
743
 
744
+ OpenAI-compatible search providers can also expose chat completion models that search the web before answering. Brave uses `BRAVE_SEARCH_API_KEY` with the `brave/brave` model id, and Exa uses `EXA_API_KEY` with the `exa/exa` model id.
745
+
739
746
  !!! info "Dependencies"
740
747
  Install the OpenAI extra if you haven't already:
741
748
 
@@ -794,6 +801,92 @@ The `web_search_options` parameter enables real-time web search, letting the mod
794
801
  print(response.consume())
795
802
  ```
796
803
 
804
+ === "Brave Search"
805
+
806
+ Brave Answers uses an OpenAI-compatible endpoint. Set
807
+ `BRAVE_SEARCH_API_KEY` and use the `brave/brave` model id:
808
+
809
+ ```python
810
+ import msgflux as mf
811
+
812
+ mf.set_envs(BRAVE_SEARCH_API_KEY="...")
813
+
814
+ model = mf.Model.chat_completion("brave/brave")
815
+ response = model("What are the latest Python packaging updates?")
816
+
817
+ print(response.consume())
818
+ ```
819
+
820
+ Brave-specific request fields are passed through `extra_body`:
821
+
822
+ ```python
823
+ import msgflux as mf
824
+
825
+ mf.set_envs(BRAVE_SEARCH_API_KEY="...")
826
+
827
+ model = mf.Model.chat_completion(
828
+ "brave/brave",
829
+ extra_body={
830
+ "country": "BR", # target country for search results
831
+ "language": "pt", # answer language
832
+ },
833
+ )
834
+
835
+ response = model("Quais foram as principais novidades do Python este mês?")
836
+ print(response.consume())
837
+ ```
838
+
839
+ Brave's richer answer fields require streaming mode:
840
+
841
+ ```python
842
+ import msgflux as mf
843
+
844
+ mf.set_envs(BRAVE_SEARCH_API_KEY="...")
845
+
846
+ model = mf.Model.chat_completion(
847
+ "brave/brave",
848
+ extra_body={
849
+ "country": "US",
850
+ "language": "en",
851
+ "enable_citations": True,
852
+ "enable_entities": True,
853
+ "enable_research": False,
854
+ },
855
+ )
856
+
857
+ response = model("Summarize the latest Python packaging updates.", stream=True)
858
+
859
+ async for chunk in response.consume():
860
+ print(chunk, end="", flush=True)
861
+ ```
862
+
863
+ Supported Brave Answers parameters include:
864
+
865
+ | Parameter | Description | Default |
866
+ |---|---|---|
867
+ | `country` | Target country for search results | `"us"` |
868
+ | `language` | Response language | `"en"` |
869
+ | `enable_citations` | Include inline citation tags in streamed responses | `False` |
870
+ | `enable_entities` | Include entity tags in streamed responses | `False` |
871
+ | `enable_research` | Enable multi-search research mode for more thorough answers | `False` |
872
+
873
+ `enable_citations`, `enable_entities`, and `enable_research` require
874
+ `stream=True`. Research mode can be slower and more expensive because
875
+ Brave may run multiple searches before answering.
876
+
877
+ === "Exa Answer"
878
+
879
+ ```python
880
+ import msgflux as mf
881
+
882
+ mf.set_envs(EXA_API_KEY="...")
883
+
884
+ model = mf.Model.chat_completion("exa/exa")
885
+ response = model("What are the latest changes in Python packaging?")
886
+
887
+ print(response.consume())
888
+ ```
889
+
797
890
  ### 11.1 **search_context_size**
798
891
 
799
892
  Controls how much web content is retrieved and included in the model's context window:
@@ -218,6 +218,60 @@ When the model decides to use a tool, the Agent intercepts the response, execute
218
218
  response = agent("Summarize the main points from https://news.ycombinator.com")
219
219
  ```
220
220
 
221
+ === "Web Search"
222
+
223
+ Use a built-in web search tool backed by either a retriever or a model:
224
+
225
+ ```python
226
+ # pip install msgflux[openai]
227
+ import msgflux as mf
228
+ import msgflux.nn as nn
229
+ from msgflux.tools.builtin import WebSearch
230
+
231
+ # Option 1: retriever-backed web search
232
+ wikipedia_search = WebSearch(
233
+ "retriever/wikipedia",
234
+ call_params={"top_k": 2},
235
+ )
236
+
237
+ # Option 2: model-backed web search
238
+ openai_search = WebSearch(
239
+ "model/openai/gpt-4o-search-preview",
240
+ init_params={
241
+ "web_search_options": {"search_context_size": "low"},
242
+ },
243
+ )
244
+
245
+ # Or read the engine and params from the environment:
246
+ # export MSGFLUX_TOOL_WEB_SEARCH_ENGINE="retriever/wikipedia"
247
+ # export MSGFLUX_TOOL_WEB_SEARCH_INIT_PARAMS='{"language": "pt"}'
248
+ # export MSGFLUX_TOOL_WEB_SEARCH_CALL_PARAMS='{"top_k": 2}'
249
+ env_search = WebSearch()
250
+
251
+ class Researcher(nn.Agent):
252
+ model = mf.Model.chat_completion("openai/gpt-4.1-mini")
253
+ system_message = "You help users find up-to-date information."
254
+ tools = [wikipedia_search, openai_search, env_search]
255
+ config = {"verbose": True}
256
+
257
+ agent = Researcher()
258
+
259
+ result = agent("What is the latest Python version?")
260
+ ```
261
+
262
+ The tool returns a `dict` with:
263
+
264
+ - `data`: the search result payload
265
+ - `annotations`: citation metadata when available
266
+
267
+ `init_params` is unpacked into the backend constructor
268
+ (`Retriever.web_search(...)` or `Model.chat_completion(...)`).
269
+ `call_params` is supported only for retriever engines and is unpacked
270
+ whenever the retriever is called. If these values are not passed
271
+ explicitly, `WebSearch` reads the JSON objects from
272
+ `MSGFLUX_TOOL_WEB_SEARCH_INIT_PARAMS` and
273
+ `MSGFLUX_TOOL_WEB_SEARCH_CALL_PARAMS`.
274
+
221
275
  === "Wikipedia Search"
222
276
 
223
277
  Use msgflux's built-in Wikipedia retriever as a tool: