symbolicai 0.20.0__tar.gz → 0.20.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 (265) hide show
  1. {symbolicai-0.20.0 → symbolicai-0.20.1}/PKG-INFO +1 -1
  2. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/__init__.py +1 -1
  3. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_openai.py +67 -0
  4. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/PKG-INFO +1 -1
  5. {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/engines/search/openai_engine.py +26 -2
  6. {symbolicai-0.20.0 → symbolicai-0.20.1}/.gitbook.yaml +0 -0
  7. {symbolicai-0.20.0 → symbolicai-0.20.1}/.github/FUNDING.yml +0 -0
  8. {symbolicai-0.20.0 → symbolicai-0.20.1}/.gitignore +0 -0
  9. {symbolicai-0.20.0 → symbolicai-0.20.1}/.symai/symsh.config.json +0 -0
  10. {symbolicai-0.20.0 → symbolicai-0.20.1}/CITATION.cff +0 -0
  11. {symbolicai-0.20.0 → symbolicai-0.20.1}/Dockerfile +0 -0
  12. {symbolicai-0.20.0 → symbolicai-0.20.1}/LICENSE +0 -0
  13. {symbolicai-0.20.0 → symbolicai-0.20.1}/MANIFEST.in +0 -0
  14. {symbolicai-0.20.0 → symbolicai-0.20.1}/README.md +0 -0
  15. {symbolicai-0.20.0 → symbolicai-0.20.1}/app.py +0 -0
  16. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/banner.png +0 -0
  17. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/cat.jpg +0 -0
  18. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/cat.png +0 -0
  19. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/contract_flow.png +0 -0
  20. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img1.png +0 -0
  21. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img10.png +0 -0
  22. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img2.png +0 -0
  23. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img3.png +0 -0
  24. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img4.png +0 -0
  25. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img5.png +0 -0
  26. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img6.png +0 -0
  27. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img7.png +0 -0
  28. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img8.png +0 -0
  29. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/img9.png +0 -0
  30. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/preview.gif +0 -0
  31. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/screen1.jpeg +0 -0
  32. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/symai_logo.png +0 -0
  33. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/symsh.png +0 -0
  34. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid1.png +0 -0
  35. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid2.png +0 -0
  36. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid3.png +0 -0
  37. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid4.png +0 -0
  38. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid5.png +0 -0
  39. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/images/vid6.png +0 -0
  40. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news.html +0 -0
  41. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news.png +0 -0
  42. {symbolicai-0.20.0 → symbolicai-0.20.1}/assets/results/news_prev.png +0 -0
  43. {symbolicai-0.20.0 → symbolicai-0.20.1}/bin/install.ps1 +0 -0
  44. {symbolicai-0.20.0 → symbolicai-0.20.1}/bin/install.sh +0 -0
  45. {symbolicai-0.20.0 → symbolicai-0.20.1}/build.py +0 -0
  46. {symbolicai-0.20.0 → symbolicai-0.20.1}/docker-compose.yml +0 -0
  47. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/clip_engine.md +0 -0
  48. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/custom_engine.md +0 -0
  49. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/drawing_engine.md +0 -0
  50. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/file_engine.md +0 -0
  51. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/indexing_engine.md +0 -0
  52. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/local_engine.md +0 -0
  53. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/neurosymbolic_engine.md +0 -0
  54. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/ocr_engine.md +0 -0
  55. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/search_engine.md +0 -0
  56. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/speech_to_text_engine.md +0 -0
  57. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/symbolic_engine.md +0 -0
  58. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/ENGINES/webscraping_engine.md +0 -0
  59. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/contracts.md +0 -0
  60. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/error_handling.md +0 -0
  61. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/expressions.md +0 -0
  62. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/import.md +0 -0
  63. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/operations.md +0 -0
  64. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/FEATURES/primitives.md +0 -0
  65. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/INSTALLATION.md +0 -0
  66. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/INTRODUCTION.md +0 -0
  67. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/QUICKSTART.md +0 -0
  68. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/SUMMARY.md +0 -0
  69. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/chatbot.md +0 -0
  70. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/packages.md +0 -0
  71. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TOOLS/shell.md +0 -0
  72. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/chatbot.md +0 -0
  73. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/context.md +0 -0
  74. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/data_query.md +0 -0
  75. {symbolicai-0.20.0 → symbolicai-0.20.1}/docs/source/TUTORIALS/video_tutorials.md +0 -0
  76. {symbolicai-0.20.0 → symbolicai-0.20.1}/environment.yml +0 -0
  77. {symbolicai-0.20.0 → symbolicai-0.20.1}/examples/contracts.ipynb +0 -0
  78. {symbolicai-0.20.0 → symbolicai-0.20.1}/examples/primitives.ipynb +0 -0
  79. {symbolicai-0.20.0 → symbolicai-0.20.1}/icon_converter.py +0 -0
  80. {symbolicai-0.20.0 → symbolicai-0.20.1}/installer.py +0 -0
  81. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Basics.ipynb +0 -0
  82. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/ChatBot.ipynb +0 -0
  83. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Conversation.ipynb +0 -0
  84. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Indexer.ipynb +0 -0
  85. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/News.ipynb +0 -0
  86. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/Queries.ipynb +0 -0
  87. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/TTS_Persona.ipynb +0 -0
  88. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/Lean engine.png +0 -0
  89. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/a_star.txt +0 -0
  90. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/abstract.py +0 -0
  91. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/audio.mp3 +0 -0
  92. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples.jsonl +0 -0
  93. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples_prepared_train.jsonl +0 -0
  94. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/dbpedia_samples_prepared_valid.jsonl +0 -0
  95. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/demo.py +0 -0
  96. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/demo_strategy.py +0 -0
  97. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/docs.py +0 -0
  98. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/einsteins_puzzle.txt +0 -0
  99. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/file.json +0 -0
  100. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/lean.py +0 -0
  101. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/news.py +0 -0
  102. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/paper.pdf +0 -0
  103. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/paper.py +0 -0
  104. {symbolicai-0.20.0 → symbolicai-0.20.1}/legacy/notebooks/examples/sql.py +0 -0
  105. {symbolicai-0.20.0 → symbolicai-0.20.1}/public/eai.svg +0 -0
  106. {symbolicai-0.20.0 → symbolicai-0.20.1}/pyproject.toml +0 -0
  107. {symbolicai-0.20.0 → symbolicai-0.20.1}/pytest.ini +0 -0
  108. {symbolicai-0.20.0 → symbolicai-0.20.1}/setup.cfg +0 -0
  109. {symbolicai-0.20.0 → symbolicai-0.20.1}/setup.py +0 -0
  110. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/TERMS_OF_SERVICE.md +0 -0
  111. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/__init__.py +0 -0
  112. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/base.py +0 -0
  113. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/driver/webclient.py +0 -0
  114. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/__init__.py +0 -0
  115. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/drawing/engine_bfl.py +0 -0
  116. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/drawing/engine_gpt_image.py +0 -0
  117. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_llama_cpp.py +0 -0
  118. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_openai.py +0 -0
  119. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/embedding/engine_plugin_embeddings.py +0 -0
  120. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/execute/engine_python.py +0 -0
  121. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/files/engine_io.py +0 -0
  122. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/imagecaptioning/engine_blip2.py +0 -0
  123. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/imagecaptioning/engine_llavacpp_client.py +0 -0
  124. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/index/engine_pinecone.py +0 -0
  125. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/index/engine_vectordb.py +0 -0
  126. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/lean/engine_lean4.py +0 -0
  127. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/__init__.py +0 -0
  128. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_chat.py +0 -0
  129. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_anthropic_claudeX_reasoning.py +0 -0
  130. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_deepseekX_reasoning.py +0 -0
  131. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_google_geminiX_reasoning.py +0 -0
  132. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_groq.py +0 -0
  133. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_huggingface.py +0 -0
  134. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_llama_cpp.py +0 -0
  135. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_openai_gptX_chat.py +0 -0
  136. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/neurosymbolic/engine_openai_gptX_reasoning.py +0 -0
  137. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/ocr/engine_apilayer.py +0 -0
  138. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/output/engine_stdout.py +0 -0
  139. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_perplexity.py +0 -0
  140. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/search/engine_serpapi.py +0 -0
  141. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/speech_to_text/engine_local_whisper.py +0 -0
  142. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/symbolic/engine_wolframalpha.py +0 -0
  143. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/text_to_speech/engine_openai.py +0 -0
  144. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/text_vision/engine_clip.py +0 -0
  145. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/userinput/engine_console.py +0 -0
  146. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/engines/webscraping/engine_requests.py +0 -0
  147. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/__init__.py +0 -0
  148. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/anthropic.py +0 -0
  149. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/deepseek.py +0 -0
  150. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/google.py +0 -0
  151. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/groq.py +0 -0
  152. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/mixin/openai.py +0 -0
  153. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/backend/settings.py +0 -0
  154. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/chat.py +0 -0
  155. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/__init__.py +0 -0
  156. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/dynamic.py +0 -0
  157. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/pipeline.py +0 -0
  158. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/collect/stats.py +0 -0
  159. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/components.py +0 -0
  160. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/constraints.py +0 -0
  161. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/context.py +0 -0
  162. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/core.py +0 -0
  163. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/core_ext.py +0 -0
  164. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/endpoints/__init__py +0 -0
  165. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/endpoints/api.py +0 -0
  166. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/exceptions.py +0 -0
  167. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/__init__.py +0 -0
  168. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/api_builder.py +0 -0
  169. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/arxiv_pdf_parser.py +0 -0
  170. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/bibtex_parser.py +0 -0
  171. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/conversation.py +0 -0
  172. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/document.py +0 -0
  173. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/file_merger.py +0 -0
  174. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/graph.py +0 -0
  175. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/html_style_template.py +0 -0
  176. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/__init__.py +0 -0
  177. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/blip_2.py +0 -0
  178. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/clip.py +0 -0
  179. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/console.py +0 -0
  180. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/dall_e.py +0 -0
  181. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/file.py +0 -0
  182. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/flux.py +0 -0
  183. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/gpt_image.py +0 -0
  184. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/input.py +0 -0
  185. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/llava.py +0 -0
  186. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/naive_vectordb.py +0 -0
  187. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/naive_webscraping.py +0 -0
  188. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/ocr.py +0 -0
  189. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/openai_search.py +0 -0
  190. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/perplexity.py +0 -0
  191. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/pinecone.py +0 -0
  192. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/python.py +0 -0
  193. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/serpapi.py +0 -0
  194. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/terminal.py +0 -0
  195. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/tts.py +0 -0
  196. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/whisper.py +0 -0
  197. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/interfaces/wolframalpha.py +0 -0
  198. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/metrics/__init__.py +0 -0
  199. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/metrics/similarity.py +0 -0
  200. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/os_command.py +0 -0
  201. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/__init__.py +0 -0
  202. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/symdev.py +0 -0
  203. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/sympkg.py +0 -0
  204. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/packages/symrun.py +0 -0
  205. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/__init__.py +0 -0
  206. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/builder.py +0 -0
  207. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/dialogue.py +0 -0
  208. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/persona.py +0 -0
  209. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/research/__init__.py +0 -0
  210. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/research/yann_lecun.py +0 -0
  211. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/sales/__init__.py +0 -0
  212. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/sales/erik_james.py +0 -0
  213. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/student/__init__.py +0 -0
  214. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/personas/student/max_tenner.py +0 -0
  215. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/repo_cloner.py +0 -0
  216. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/seo_query_optimizer.py +0 -0
  217. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/solver.py +0 -0
  218. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/strategies/__init__.py +0 -0
  219. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/strategies/cot.py +0 -0
  220. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/summarizer.py +0 -0
  221. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/taypan_interpreter.py +0 -0
  222. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/extended/vectordb.py +0 -0
  223. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/__init__.py +0 -0
  224. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/emoji.pytxt +0 -0
  225. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/formatter.py +0 -0
  226. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/formatter/regex.py +0 -0
  227. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/functional.py +0 -0
  228. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/imports.py +0 -0
  229. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/interfaces.py +0 -0
  230. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/memory.py +0 -0
  231. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/menu/__init__.py +0 -0
  232. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/menu/screen.py +0 -0
  233. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/__init__.py +0 -0
  234. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/console.py +0 -0
  235. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/misc/loader.py +0 -0
  236. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/__init__.py +0 -0
  237. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/base.py +0 -0
  238. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/models/errors.py +0 -0
  239. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/__init__.py +0 -0
  240. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/measures.py +0 -0
  241. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/ops/primitives.py +0 -0
  242. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/post_processors.py +0 -0
  243. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/pre_processors.py +0 -0
  244. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/processor.py +0 -0
  245. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/prompts.py +0 -0
  246. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/__init__.py +0 -0
  247. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/huggingface_server.py +0 -0
  248. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/server/llama_cpp_server.py +0 -0
  249. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/shell.py +0 -0
  250. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/shellsv.py +0 -0
  251. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/strategy.py +0 -0
  252. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/symbol.py +0 -0
  253. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/symsh.md +0 -0
  254. {symbolicai-0.20.0 → symbolicai-0.20.1}/symai/utils.py +0 -0
  255. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/SOURCES.txt +0 -0
  256. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/dependency_links.txt +0 -0
  257. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/entry_points.txt +0 -0
  258. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/requires.txt +0 -0
  259. {symbolicai-0.20.0 → symbolicai-0.20.1}/symbolicai.egg-info/top_level.txt +0 -0
  260. {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/README.md +0 -0
  261. {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/data/audio.mp3 +0 -0
  262. {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/data/pg1727.txt +0 -0
  263. {symbolicai-0.20.0 → symbolicai-0.20.1}/tests/engines/search/perplexity_engine.py +0 -0
  264. {symbolicai-0.20.0 → symbolicai-0.20.1}/trusted_repos.yml +0 -0
  265. {symbolicai-0.20.0 → symbolicai-0.20.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: symbolicai
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Summary: A Neurosymbolic Perspective on Large Language Models
5
5
  Author-email: Marius-Constantin Dinu <marius@extensity.ai>, Leoveanu-Condrei Claudiu <leo@extensity.ai>
6
6
  License: BSD 3-Clause License
@@ -33,7 +33,7 @@ os.environ['TOKENIZERS_PARALLELISM'] = "false"
33
33
  # Create singleton instance
34
34
  config_manager = settings.SymAIConfig()
35
35
 
36
- SYMAI_VERSION = "0.20.0"
36
+ SYMAI_VERSION = "0.20.1"
37
37
  __version__ = SYMAI_VERSION
38
38
  __root_dir__ = config_manager.config_dir
39
39
 
@@ -230,6 +230,8 @@ class SearchResult(Result):
230
230
 
231
231
 
232
232
  class GPTXSearchEngine(Engine):
233
+ MAX_ALLOWED_DOMAINS = 20
234
+
233
235
  def __init__(self, api_key: str | None = None, model: str | None = None):
234
236
  super().__init__()
235
237
  self.config = deepcopy(SYMAI_CONFIG)
@@ -250,6 +252,65 @@ class GPTXSearchEngine(Engine):
250
252
  return 'search'
251
253
  return super().id() # default to unregistered
252
254
 
255
+ def _extract_netloc(self, raw_domain: str | None) -> str | None:
256
+ if not isinstance(raw_domain, str):
257
+ return None
258
+ candidate = raw_domain.strip()
259
+ if not candidate:
260
+ return None
261
+ parsed = urlsplit(candidate if '://' in candidate else f"//{candidate}")
262
+ netloc = parsed.netloc or parsed.path
263
+ if not netloc:
264
+ return None
265
+ if '@' in netloc:
266
+ netloc = netloc.split('@', 1)[1]
267
+ if ':' in netloc:
268
+ netloc = netloc.split(':', 1)[0]
269
+ netloc = netloc.strip('.').strip()
270
+ if not netloc:
271
+ return None
272
+ return netloc.lower()
273
+
274
+ def _normalize_allowed_domains(self, domains: list[str] | None) -> list[str]:
275
+ if not domains or not isinstance(domains, list):
276
+ return []
277
+
278
+ normalized: list[str] = []
279
+ seen: set[str] = set()
280
+ for domain in domains:
281
+ netloc = self._extract_netloc(domain)
282
+ if not netloc or netloc in seen:
283
+ continue
284
+ # Validate that netloc is actually a valid domain
285
+ if not self._is_domain(netloc):
286
+ continue
287
+ normalized.append(netloc)
288
+ seen.add(netloc)
289
+ if len(normalized) >= self.MAX_ALLOWED_DOMAINS:
290
+ break
291
+ return normalized
292
+
293
+ def _is_domain(self, s: str) -> bool:
294
+ _label_re = re.compile(r"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$")
295
+ if not s:
296
+ return False
297
+ host = s.strip().rstrip(".")
298
+ # If the input might be a URL, extract the hostname via urllib:
299
+ if "://" in host or "/" in host or "@" in host:
300
+ host = urlsplit(host if "://" in host else f"//{host}").hostname or ""
301
+ if not host:
302
+ return False
303
+ try:
304
+ host_ascii = host.encode("idna").decode("ascii")
305
+ except Exception:
306
+ return False
307
+ if len(host_ascii) > 253:
308
+ return False
309
+ labels = host_ascii.split(".")
310
+ if len(labels) < 2: # require a dot (reject "google")
311
+ return False
312
+ return all(_label_re.fullmatch(lbl or "") for lbl in labels)
313
+
253
314
  def command(self, *args, **kwargs):
254
315
  super().command(*args, **kwargs)
255
316
  if 'SEARCH_ENGINE_API_KEY' in kwargs:
@@ -266,6 +327,12 @@ class GPTXSearchEngine(Engine):
266
327
  if user_location:
267
328
  tool_definition['user_location'] = user_location
268
329
 
330
+ allowed_domains = self._normalize_allowed_domains(kwargs.get('allowed_domains'))
331
+ if allowed_domains:
332
+ tool_definition['filters'] = {
333
+ 'allowed_domains': allowed_domains
334
+ }
335
+
269
336
  self.model = kwargs.get('model', self.model) # Important for MetadataTracker to work correctly
270
337
  payload = {
271
338
  "model": self.model,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: symbolicai
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Summary: A Neurosymbolic Perspective on Large Language Models
5
5
  Author-email: Marius-Constantin Dinu <marius@extensity.ai>, Leoveanu-Condrei Claudiu <leo@extensity.ai>
6
6
  License: BSD 3-Clause License
@@ -1,5 +1,6 @@
1
1
  import os
2
2
  import re
3
+ from urllib.parse import urlparse
3
4
 
4
5
  import pytest
5
6
 
@@ -17,13 +18,12 @@ def _get_api_key():
17
18
  )
18
19
 
19
20
 
20
- @pytest.mark.parametrize("model", ["gpt-4.1-mini", "gpt-5-mini"])
21
+ @pytest.mark.parametrize("model", ["gpt-4.1-mini", "gpt-5-nano"])
21
22
  def test_openai_search_citations_and_formatting_live(model):
22
23
  api_key = _get_api_key()
23
24
  if not api_key:
24
25
  pytest.skip("OPENAI_API_KEY/SEARCH_ENGINE_API_KEY not set; live test skipped")
25
26
 
26
- # Register a fresh engine instance with the provided API key and target model
27
27
  engine = GPTXSearchEngine(api_key=api_key, model=model)
28
28
  EngineRepository.register("search", engine, allow_engine_override=True)
29
29
 
@@ -56,3 +56,27 @@ def test_openai_search_citations_and_formatting_live(model):
56
56
 
57
57
  # 3) Formatting: At least one marker pattern with newline is present
58
58
  assert re.search(r"\[\d+\] \([^)]+\)\n", res.value)
59
+
60
+
61
+ @pytest.mark.parametrize("model", ["gpt-4.1", "gpt-5-nano"])
62
+ def test_openai_search_domain_filtering(model):
63
+ api_key = _get_api_key()
64
+ if not api_key:
65
+ pytest.skip("OPENAI_API_KEY/SEARCH_ENGINE_API_KEY not set; live test skipped")
66
+
67
+ engine = GPTXSearchEngine(api_key=api_key, model=model)
68
+ EngineRepository.register("search", engine, allow_engine_override=True)
69
+
70
+ domains = [
71
+ "tomshardware.com", # ok
72
+ "https://www.arstechnica.com", # ok, but the internal processing should yield the root domain
73
+ "tomshardware" # not ok
74
+ ]
75
+
76
+ query = "what is the best gpu"
77
+ search = openai_search()
78
+ res = search(query, model=model, allowed_domains=domains)
79
+
80
+ allowed_netlocs = { "www.tomshardware.com", "www.arstechnica.com" }
81
+ citation_netlocs = { urlparse(c.url).netloc for c in res.get_citations() }
82
+ assert allowed_netlocs & citation_netlocs, "No citations from allowed domains found"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes