synapsekit 1.4.2__tar.gz → 1.4.7__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 (389) hide show
  1. synapsekit-1.4.7/.github/discord-members.json +1 -0
  2. synapsekit-1.4.7/.github/workflows/discord-contributor.yml +45 -0
  3. synapsekit-1.4.7/.github/workflows/discord-issues.yml +30 -0
  4. {synapsekit-1.4.2 → synapsekit-1.4.7}/.gitignore +2 -0
  5. {synapsekit-1.4.2 → synapsekit-1.4.7}/CHANGELOG.md +84 -0
  6. synapsekit-1.4.7/DISCORD_AUTOMOD.md +41 -0
  7. synapsekit-1.4.7/DISCORD_COMMANDS.md +33 -0
  8. synapsekit-1.4.7/DISCORD_INTEREST_ROLES.md +39 -0
  9. synapsekit-1.4.7/DISCORD_RELEASE_WEBHOOKS.md +31 -0
  10. synapsekit-1.4.7/DISCORD_ROLES.md +37 -0
  11. synapsekit-1.4.7/DISCORD_WELCOME.md +58 -0
  12. {synapsekit-1.4.2 → synapsekit-1.4.7}/PKG-INFO +47 -10
  13. {synapsekit-1.4.2 → synapsekit-1.4.7}/README.md +12 -9
  14. synapsekit-1.4.7/assets/banner.svg +54 -0
  15. synapsekit-1.4.7/assets/logo.svg +13 -0
  16. {synapsekit-1.4.2 → synapsekit-1.4.7}/pyproject.toml +34 -3
  17. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/__init__.py +22 -0
  18. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/__init__.py +2 -0
  19. synapsekit-1.4.7/src/synapsekit/agents/tools/notion.py +362 -0
  20. synapsekit-1.4.7/src/synapsekit/agents/tools/python_repl.py +161 -0
  21. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/sqlite.py +6 -0
  22. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/mermaid.py +9 -1
  23. synapsekit-1.4.7/src/synapsekit/graph/subgraph.py +135 -0
  24. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/trace.py +10 -5
  25. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/__init__.py +2 -0
  26. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/multimodal.py +3 -0
  27. synapsekit-1.4.7/src/synapsekit/llm/sambanova.py +88 -0
  28. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/__init__.py +16 -0
  29. synapsekit-1.4.7/src/synapsekit/loaders/arxiv.py +82 -0
  30. synapsekit-1.4.7/src/synapsekit/loaders/discord.py +147 -0
  31. synapsekit-1.4.7/src/synapsekit/loaders/email.py +120 -0
  32. synapsekit-1.4.7/src/synapsekit/loaders/google_drive.py +212 -0
  33. synapsekit-1.4.7/src/synapsekit/loaders/notion.py +369 -0
  34. synapsekit-1.4.7/src/synapsekit/loaders/slack.py +174 -0
  35. synapsekit-1.4.7/src/synapsekit/loaders/wikipedia.py +86 -0
  36. synapsekit-1.4.7/src/synapsekit/loaders/xml_loader.py +39 -0
  37. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/prompts/template.py +31 -3
  38. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/rag/facade.py +8 -1
  39. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/__init__.py +10 -0
  40. synapsekit-1.4.7/src/synapsekit/retrieval/lancedb.py +158 -0
  41. synapsekit-1.4.7/src/synapsekit/retrieval/milvus.py +194 -0
  42. synapsekit-1.4.7/src/synapsekit/retrieval/pgvector.py +201 -0
  43. synapsekit-1.4.7/src/synapsekit/retrieval/strategies/__init__.py +1 -0
  44. synapsekit-1.4.7/src/synapsekit/retrieval/strategies/colbert.py +173 -0
  45. synapsekit-1.4.7/src/synapsekit/retrieval/weaviate.py +114 -0
  46. synapsekit-1.4.7/src/synapsekit/text_splitters/base.py +40 -0
  47. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_shell_tool.py +1 -1
  48. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_tools.py +60 -0
  49. synapsekit-1.4.7/tests/agents/tools/test_notion_tool.py +313 -0
  50. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_checkpointing.py +10 -0
  51. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_mermaid.py +17 -3
  52. synapsekit-1.4.7/tests/graph/test_subgraph_errors.py +261 -0
  53. synapsekit-1.4.7/tests/llm/test_sambanova_provider.py +141 -0
  54. synapsekit-1.4.7/tests/loaders/test_arxiv_loader.py +101 -0
  55. synapsekit-1.4.7/tests/loaders/test_discord_loader.py +189 -0
  56. synapsekit-1.4.7/tests/loaders/test_email_loader.py +358 -0
  57. synapsekit-1.4.7/tests/loaders/test_google_drive_loader.py +407 -0
  58. synapsekit-1.4.7/tests/loaders/test_notion_loader.py +370 -0
  59. synapsekit-1.4.7/tests/loaders/test_slack_loader.py +382 -0
  60. synapsekit-1.4.7/tests/loaders/test_wikipedia_loader.py +141 -0
  61. synapsekit-1.4.7/tests/loaders/test_xml_loader.py +274 -0
  62. synapsekit-1.4.7/tests/retrieval/test_colbert.py +94 -0
  63. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v100_features.py +1 -1
  64. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/text_splitters/test_splitters.py +106 -0
  65. {synapsekit-1.4.2 → synapsekit-1.4.7}/uv.lock +819 -29
  66. synapsekit-1.4.2/assets/banner.svg +0 -63
  67. synapsekit-1.4.2/assets/logo.svg +0 -13
  68. synapsekit-1.4.2/src/synapsekit/agents/tools/python_repl.py +0 -55
  69. synapsekit-1.4.2/src/synapsekit/graph/subgraph.py +0 -60
  70. synapsekit-1.4.2/src/synapsekit/text_splitters/base.py +0 -12
  71. {synapsekit-1.4.2 → synapsekit-1.4.7}/.all-contributorsrc +0 -0
  72. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
  73. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  74. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  75. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  76. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  77. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/profile/README.md +0 -0
  78. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/workflows/ci.yml +0 -0
  79. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/workflows/publish.yml +0 -0
  80. {synapsekit-1.4.2 → synapsekit-1.4.7}/.github/workflows/welcome.yml +0 -0
  81. {synapsekit-1.4.2 → synapsekit-1.4.7}/.pre-commit-config.yaml +0 -0
  82. {synapsekit-1.4.2 → synapsekit-1.4.7}/CODE_OF_CONDUCT.md +0 -0
  83. {synapsekit-1.4.2 → synapsekit-1.4.7}/CONTRIBUTING.md +0 -0
  84. {synapsekit-1.4.2 → synapsekit-1.4.7}/LICENSE +0 -0
  85. {synapsekit-1.4.2 → synapsekit-1.4.7}/Makefile +0 -0
  86. {synapsekit-1.4.2 → synapsekit-1.4.7}/SECURITY.md +0 -0
  87. {synapsekit-1.4.2 → synapsekit-1.4.7}/assets/favicon.svg +0 -0
  88. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/README.md +0 -0
  89. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/agent_tools.py +0 -0
  90. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/caching_retries.py +0 -0
  91. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/graph_workflow.py +0 -0
  92. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/multi_provider.py +0 -0
  93. {synapsekit-1.4.2 → synapsekit-1.4.7}/examples/rag_quickstart.py +0 -0
  94. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/_api.py +0 -0
  95. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/_compat.py +0 -0
  96. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/a2a/__init__.py +0 -0
  97. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/a2a/agent_card.py +0 -0
  98. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/a2a/client.py +0 -0
  99. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/a2a/server.py +0 -0
  100. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/a2a/types.py +0 -0
  101. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/__init__.py +0 -0
  102. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/base.py +0 -0
  103. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/executor.py +0 -0
  104. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/function_calling.py +0 -0
  105. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/guardrails.py +0 -0
  106. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/memory.py +0 -0
  107. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/multi/__init__.py +0 -0
  108. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/multi/crew.py +0 -0
  109. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/multi/handoff.py +0 -0
  110. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/multi/supervisor.py +0 -0
  111. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/pii_redactor.py +0 -0
  112. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/react.py +0 -0
  113. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/registry.py +0 -0
  114. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/step_events.py +0 -0
  115. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tool_decorator.py +0 -0
  116. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/api_builder.py +0 -0
  117. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/arxiv_search.py +0 -0
  118. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/aws_lambda.py +0 -0
  119. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/bing_search.py +0 -0
  120. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/brave_search.py +0 -0
  121. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/calculator.py +0 -0
  122. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/datetime_tool.py +0 -0
  123. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/duck_search.py +0 -0
  124. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/email_tool.py +0 -0
  125. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/file_list.py +0 -0
  126. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/file_read.py +0 -0
  127. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/file_write.py +0 -0
  128. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/github_api.py +0 -0
  129. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/google_calendar.py +0 -0
  130. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/google_search.py +0 -0
  131. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/graphql.py +0 -0
  132. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/http_request.py +0 -0
  133. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/human_input.py +0 -0
  134. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/image_analysis.py +0 -0
  135. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/jira.py +0 -0
  136. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/json_query.py +0 -0
  137. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/pdf_reader.py +0 -0
  138. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/pubmed_search.py +0 -0
  139. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/regex_tool.py +0 -0
  140. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/sentiment.py +0 -0
  141. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/shell.py +0 -0
  142. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/slack.py +0 -0
  143. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/speech_to_text.py +0 -0
  144. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/sql_query.py +0 -0
  145. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/sql_schema.py +0 -0
  146. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/summarization.py +0 -0
  147. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/tavily_search.py +0 -0
  148. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/text_to_speech.py +0 -0
  149. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/translation.py +0 -0
  150. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/vector_search.py +0 -0
  151. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/web_scraper.py +0 -0
  152. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/web_search.py +0 -0
  153. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/wikipedia.py +0 -0
  154. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/wolfram.py +0 -0
  155. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/agents/tools/youtube_search.py +0 -0
  156. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/cli/__init__.py +0 -0
  157. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/cli/main.py +0 -0
  158. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/cli/serve.py +0 -0
  159. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/cli/test.py +0 -0
  160. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/embeddings/__init__.py +0 -0
  161. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/embeddings/backend.py +0 -0
  162. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/__init__.py +0 -0
  163. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/base.py +0 -0
  164. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/decorators.py +0 -0
  165. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/faithfulness.py +0 -0
  166. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/groundedness.py +0 -0
  167. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/pipeline.py +0 -0
  168. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/regression.py +0 -0
  169. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/evaluation/relevancy.py +0 -0
  170. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/__init__.py +0 -0
  171. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/approval.py +0 -0
  172. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/__init__.py +0 -0
  173. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/base.py +0 -0
  174. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/json_file.py +0 -0
  175. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/memory.py +0 -0
  176. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/postgres.py +0 -0
  177. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/checkpointers/redis.py +0 -0
  178. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/compiled.py +0 -0
  179. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/dynamic_route.py +0 -0
  180. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/edge.py +0 -0
  181. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/errors.py +0 -0
  182. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/fan_out.py +0 -0
  183. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/graph.py +0 -0
  184. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/interrupt.py +0 -0
  185. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/node.py +0 -0
  186. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/state.py +0 -0
  187. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/streaming.py +0 -0
  188. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/graph/visualization.py +0 -0
  189. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_cache.py +0 -0
  190. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_cache_dynamodb.py +0 -0
  191. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_cache_memcached.py +0 -0
  192. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_filesystem_cache.py +0 -0
  193. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_rate_limit.py +0 -0
  194. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_redis_cache.py +0 -0
  195. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_retry.py +0 -0
  196. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_semantic_cache.py +0 -0
  197. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/_sqlite_cache.py +0 -0
  198. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/ai21.py +0 -0
  199. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/aleph_alpha.py +0 -0
  200. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/anthropic.py +0 -0
  201. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/azure_openai.py +0 -0
  202. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/base.py +0 -0
  203. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/bedrock.py +0 -0
  204. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/cerebras.py +0 -0
  205. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/cloudflare.py +0 -0
  206. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/cohere.py +0 -0
  207. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/cost_router.py +0 -0
  208. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/databricks.py +0 -0
  209. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/deepseek.py +0 -0
  210. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/ernie.py +0 -0
  211. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/fallback_chain.py +0 -0
  212. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/fireworks.py +0 -0
  213. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/gemini.py +0 -0
  214. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/groq.py +0 -0
  215. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/huggingface.py +0 -0
  216. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/llamacpp.py +0 -0
  217. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/minimax.py +0 -0
  218. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/mistral.py +0 -0
  219. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/moonshot.py +0 -0
  220. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/ollama.py +0 -0
  221. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/openai.py +0 -0
  222. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/openrouter.py +0 -0
  223. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/perplexity.py +0 -0
  224. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/structured.py +0 -0
  225. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/together.py +0 -0
  226. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/vertex_ai.py +0 -0
  227. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/llm/zhipu.py +0 -0
  228. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/audio.py +0 -0
  229. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/base.py +0 -0
  230. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/csv.py +0 -0
  231. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/directory.py +0 -0
  232. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/docx.py +0 -0
  233. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/excel.py +0 -0
  234. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/html.py +0 -0
  235. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/image.py +0 -0
  236. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/json_loader.py +0 -0
  237. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/markdown.py +0 -0
  238. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/pdf.py +0 -0
  239. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/pptx.py +0 -0
  240. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/text.py +0 -0
  241. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/video.py +0 -0
  242. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/web.py +0 -0
  243. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/loaders/yaml_loader.py +0 -0
  244. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/mcp/__init__.py +0 -0
  245. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/mcp/client.py +0 -0
  246. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/mcp/server.py +0 -0
  247. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/__init__.py +0 -0
  248. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/buffer.py +0 -0
  249. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/conversation.py +0 -0
  250. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/entity.py +0 -0
  251. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/hybrid.py +0 -0
  252. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/redis.py +0 -0
  253. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/sqlite.py +0 -0
  254. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/summary_buffer.py +0 -0
  255. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/memory/token_buffer.py +0 -0
  256. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/__init__.py +0 -0
  257. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/audit_log.py +0 -0
  258. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/budget_guard.py +0 -0
  259. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/cost_tracker.py +0 -0
  260. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/distributed.py +0 -0
  261. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/otel.py +0 -0
  262. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/tracer.py +0 -0
  263. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/observability/ui.py +0 -0
  264. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/parsers/__init__.py +0 -0
  265. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/parsers/json_parser.py +0 -0
  266. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/parsers/list_parser.py +0 -0
  267. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/parsers/pydantic_parser.py +0 -0
  268. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/plugins.py +0 -0
  269. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/prompts/__init__.py +0 -0
  270. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/prompts/hub.py +0 -0
  271. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/py.typed +0 -0
  272. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/rag/__init__.py +0 -0
  273. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/rag/pipeline.py +0 -0
  274. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/adaptive.py +0 -0
  275. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/base.py +0 -0
  276. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/chroma.py +0 -0
  277. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/cohere_reranker.py +0 -0
  278. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/contextual.py +0 -0
  279. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/contextual_compression.py +0 -0
  280. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/crag.py +0 -0
  281. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/cross_encoder.py +0 -0
  282. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/ensemble.py +0 -0
  283. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/faiss.py +0 -0
  284. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/flare.py +0 -0
  285. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/graphrag.py +0 -0
  286. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/hybrid_search.py +0 -0
  287. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/hyde.py +0 -0
  288. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/multi_step.py +0 -0
  289. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/parent_document.py +0 -0
  290. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/pinecone.py +0 -0
  291. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/qdrant.py +0 -0
  292. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/query_decomposition.py +0 -0
  293. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/rag_fusion.py +0 -0
  294. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/retriever.py +0 -0
  295. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/self_query.py +0 -0
  296. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/self_rag.py +0 -0
  297. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/sentence_window.py +0 -0
  298. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/step_back.py +0 -0
  299. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/retrieval/vectorstore.py +0 -0
  300. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/__init__.py +0 -0
  301. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/character.py +0 -0
  302. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/markdown.py +0 -0
  303. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/recursive.py +0 -0
  304. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/semantic.py +0 -0
  305. {synapsekit-1.4.2 → synapsekit-1.4.7}/src/synapsekit/text_splitters/token.py +0 -0
  306. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/__init__.py +0 -0
  307. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/__init__.py +0 -0
  308. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_api_builder_tool.py +0 -0
  309. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_aws_lambda_tool.py +0 -0
  310. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_bing_search.py +0 -0
  311. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_executor.py +0 -0
  312. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_function_calling.py +0 -0
  313. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_google_calendar_tool.py +0 -0
  314. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_memory.py +0 -0
  315. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_pii_redactor.py +0 -0
  316. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_react.py +0 -0
  317. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_sql_schema.py +0 -0
  318. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_streaming_steps.py +0 -0
  319. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_tool_decorator.py +0 -0
  320. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_web_scraper.py +0 -0
  321. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/test_wolfram_alpha.py +0 -0
  322. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/tools/test_google_search.py +0 -0
  323. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/agents/tools/test_sql_query.py +0 -0
  324. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/conftest.py +0 -0
  325. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/__init__.py +0 -0
  326. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_build.py +0 -0
  327. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_cycles.py +0 -0
  328. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_json_checkpointer.py +0 -0
  329. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_run.py +0 -0
  330. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_state.py +0 -0
  331. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_stream.py +0 -0
  332. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/graph/test_visualization.py +0 -0
  333. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/__init__.py +0 -0
  334. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_cache_dynamodb.py +0 -0
  335. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_cache_memcached.py +0 -0
  336. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_cache_retry.py +0 -0
  337. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_filesystem_cache.py +0 -0
  338. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_function_calling_providers.py +0 -0
  339. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_huggingface.py +0 -0
  340. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_llamacpp.py +0 -0
  341. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_llm.py +0 -0
  342. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_new_providers_185.py +0 -0
  343. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_providers.py +0 -0
  344. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/llm/test_vertex_ai.py +0 -0
  345. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/__init__.py +0 -0
  346. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/test_audio_video_loaders.py +0 -0
  347. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/test_docx_loader.py +0 -0
  348. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/test_loaders.py +0 -0
  349. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/test_markdown_loader.py +0 -0
  350. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/loaders/test_yaml_loader.py +0 -0
  351. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/memory/__init__.py +0 -0
  352. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/memory/test_memory.py +0 -0
  353. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/memory/test_redis_memory.py +0 -0
  354. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/observability/__init__.py +0 -0
  355. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/observability/test_audit_log.py +0 -0
  356. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/observability/test_tracer.py +0 -0
  357. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/parsers/__init__.py +0 -0
  358. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/parsers/test_parsers.py +0 -0
  359. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/prompts/__init__.py +0 -0
  360. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/prompts/test_prompts.py +0 -0
  361. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/rag/__init__.py +0 -0
  362. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/rag/test_facade.py +0 -0
  363. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/rag/test_pipeline.py +0 -0
  364. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/__init__.py +0 -0
  365. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/test_backends.py +0 -0
  366. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/test_graphrag.py +0 -0
  367. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/test_hyde.py +0 -0
  368. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/test_retriever.py +0 -0
  369. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/retrieval/test_vectorstore.py +0 -0
  370. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v051_features.py +0 -0
  371. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v052_features.py +0 -0
  372. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v053_features.py +0 -0
  373. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v060_features.py +0 -0
  374. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v061_features.py +0 -0
  375. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v062_features.py +0 -0
  376. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v063_features.py +0 -0
  377. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v065_features.py +0 -0
  378. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v066_features.py +0 -0
  379. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v068_features.py +0 -0
  380. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v069_features.py +0 -0
  381. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v070_features.py +0 -0
  382. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v080_features.py +0 -0
  383. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v090_features.py +0 -0
  384. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v120_features.py +0 -0
  385. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v120_integration.py +0 -0
  386. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v130_eval_regression.py +0 -0
  387. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/test_v130_routing.py +0 -0
  388. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/text_splitters/__init__.py +0 -0
  389. {synapsekit-1.4.2 → synapsekit-1.4.7}/tests/text_splitters/test_markdown.py +0 -0
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,45 @@
1
+ name: Assign Discord Contributor Role
2
+
3
+ on:
4
+ pull_request:
5
+ types: [closed]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ assign-role:
12
+ if: github.event.pull_request.merged == true
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Look up Discord ID for PR author
18
+ id: lookup
19
+ shell: bash
20
+ run: |
21
+ set -euo pipefail
22
+ GH_USER="${{ github.event.pull_request.user.login }}"
23
+ if [ ! -f .github/discord-members.json ]; then
24
+ echo "discord_id=" >> "$GITHUB_OUTPUT"
25
+ exit 0
26
+ fi
27
+ DISCORD_ID=$(jq -r --arg user "$GH_USER" '.[$user] // empty' .github/discord-members.json)
28
+ echo "discord_id=$DISCORD_ID" >> "$GITHUB_OUTPUT"
29
+
30
+ - name: Assign Contributor role
31
+ if: steps.lookup.outputs.discord_id != ''
32
+ env:
33
+ DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }}
34
+ DISCORD_GUILD_ID: ${{ secrets.DISCORD_GUILD_ID }}
35
+ DISCORD_CONTRIBUTOR_ROLE_ID: ${{ secrets.DISCORD_CONTRIBUTOR_ROLE_ID }}
36
+ run: |
37
+ set -euo pipefail
38
+ if [ -z "$DISCORD_BOT_TOKEN" ] || [ -z "$DISCORD_GUILD_ID" ] || [ -z "$DISCORD_CONTRIBUTOR_ROLE_ID" ]; then
39
+ echo "Missing DISCORD_* secrets; skipping role assignment."
40
+ exit 0
41
+ fi
42
+ curl -sS -X PUT \
43
+ -H "Authorization: Bot $DISCORD_BOT_TOKEN" \
44
+ -H "Content-Type: application/json" \
45
+ "https://discord.com/api/v10/guilds/$DISCORD_GUILD_ID/members/${{ steps.lookup.outputs.discord_id }}/roles/$DISCORD_CONTRIBUTOR_ROLE_ID"
@@ -0,0 +1,30 @@
1
+ name: Post good-first-issues to Discord
2
+
3
+ on:
4
+ issues:
5
+ types: [labeled]
6
+
7
+ permissions:
8
+ issues: read
9
+
10
+ jobs:
11
+ notify:
12
+ if: |
13
+ github.event.label.name == 'good first issue' ||
14
+ github.event.label.name == 'help wanted'
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Post to Discord
18
+ env:
19
+ DISCORD_WEBHOOK: ${{ secrets.DISCORD_GOOD_FIRST_ISSUES_WEBHOOK }}
20
+ TITLE: ${{ github.event.issue.title }}
21
+ URL: ${{ github.event.issue.html_url }}
22
+ run: |
23
+ set -euo pipefail
24
+ if [ -z "$DISCORD_WEBHOOK" ]; then
25
+ echo "Missing DISCORD_GOOD_FIRST_ISSUES_WEBHOOK; skipping."
26
+ exit 0
27
+ fi
28
+ curl -sS -H "Content-Type: application/json" \
29
+ -d "{\"content\": \"👋 **New issue open for contribution:**\\n$TITLE\\n$URL\"}" \
30
+ "$DISCORD_WEBHOOK"
@@ -63,6 +63,8 @@ Thumbs.db
63
63
  .claude/
64
64
  CLAUDE.md
65
65
 
66
+ #QWEN
67
+ .qwen/
66
68
 
67
69
  # Internal docs (not published)
68
70
  docs/
@@ -7,6 +7,90 @@ SynapseKit uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ---
9
9
 
10
+ ## [1.4.8] — 2026-04-03
11
+
12
+ ### Added
13
+
14
+ - **WikipediaLoader** — load Wikipedia articles as Documents via `wikipedia-api`; pipe-delimited multi-title support; async `aload()`; `pip install synapsekit[wikipedia]`
15
+ - **ArXivLoader** — search arXiv and load papers as Documents (downloads PDFs); uses arxiv v2 `Client` API; async `aload()`; `pip install synapsekit[arxiv,pdf]`
16
+ - **EmailLoader** — load emails from IMAP mailboxes (Gmail, Outlook, etc.) as Documents; stdlib-only, no extra deps; configurable folder and IMAP search; async `aload()`
17
+ - **ColBERTRetriever** — late-interaction ColBERT retrieval via RAGatouille; `add()`, `retrieve()`, `retrieve_with_scores()`; lazy-loads ragatouille on first use; `pip install synapsekit[colbert]`
18
+ - 50 new tests (1500 total)
19
+
20
+ ---
21
+
22
+ ## [1.4.7] — 2026-04-02
23
+
24
+ ### Added
25
+
26
+ - **SlackLoader** — load messages from Slack channels via Bot API; sync `load()` and async `aload()`; configurable `limit`; per-message metadata; `pip install synapsekit[slack]`
27
+ - **NotionLoader** — load pages or full databases from Notion via the Notion API; sync `load()` and async `aload()`; configurable retry/timeout; `pip install synapsekit[notion]`
28
+ - **NotionTool** — agent tool for Notion: `search`, `get_page`, `create_page`, `append_block`; built-in retry with exponential back-off; `pip install synapsekit[notion]`
29
+ - **Subgraph error handling** — `subgraph_node()` gains `on_error` (`"raise"` / `"retry"` / `"fallback"` / `"skip"`), `max_retries`, and `fallback` parameters
30
+ - 17 new tests (1467 total)
31
+
32
+ ---
33
+
34
+ ## [1.4.6] — 2026-04-01
35
+
36
+ ### Added
37
+
38
+ - **Subgraph error handling** — `subgraph_node()` gains four keyword-only parameters: `on_error` (`"raise"` / `"retry"` / `"fallback"` / `"skip"`), `max_retries` (default 3), and `fallback` (a secondary `CompiledGraph`). On any handled failure the parent state receives `"__subgraph_error__"` with `"type"`, `"message"`, and `"attempts"` keys. Backward-compatible: default behaviour (`on_error="raise"`) is unchanged. (#378)
39
+ - 17 new tests (1450 total)
40
+
41
+ ---
42
+
43
+ ## [1.4.5] — 2026-03-31
44
+
45
+ ### Added
46
+
47
+ - **WeaviateVectorStore** — Weaviate v4 client; lazy collection creation; cosine vector search via `query.near_vector`; metadata filtering; `pip install synapsekit[weaviate]`
48
+ - **PGVectorStore** — PostgreSQL + pgvector; async psycopg3; cosine / L2 / inner-product distance; SQL-injection-safe via `psycopg.sql.Identifier`; metadata JSONB; `pip install synapsekit[pgvector]`
49
+ - **MilvusVectorStore** — IVF_FLAT and HNSW index types; `MilvusIndexType` enum; metadata filtering via Milvus expressions; Zilliz Cloud support; `pip install synapsekit[milvus]`
50
+ - **LanceDBVectorStore** — embedded, serverless; local and cloud (S3/GCS) storage; automatic FTS index; metadata filtering; `pip install synapsekit[lancedb]`
51
+
52
+ All four backends follow the existing lazy-import `_BACKENDS` pattern and are included in `synapsekit[all]`.
53
+
54
+ - 0 new tests (1433 total)
55
+
56
+ ---
57
+
58
+ ## [1.4.4] — 2026-03-30
59
+
60
+ ### Added
61
+
62
+ - **SambaNova provider** — fast inference on Meta Llama, Qwen, and other open models via SambaNova Cloud's OpenAI-compatible API; requires `pip install synapsekit[openai]`; always set `provider="sambanova"`
63
+ - **GoogleDriveLoader** — load files and folders from Google Drive via service-account credentials; supports Google Docs (text export), Sheets (CSV export), PDFs, and text files; `pip install synapsekit[gdrive]`
64
+ - **`split_with_metadata()`** — new method on `BaseSplitter`; returns `list[dict]` with `text` and `metadata` keys; automatically injects `chunk_index`; all splitters inherit it
65
+
66
+ ### Fixed
67
+
68
+ - `asyncio.get_event_loop()` → `asyncio.get_running_loop()` in `GoogleDriveLoader` (deprecated in Python 3.10+)
69
+ - `build()` in `GoogleDriveLoader.aload()` wrapped in executor (was blocking the event loop)
70
+ - Failed file downloads in `GoogleDriveLoader._load_folder` now log a warning instead of silently skipping
71
+
72
+ - 49 new tests (1452 total)
73
+
74
+ ---
75
+
76
+ ## [1.4.3] — 2026-03-29
77
+
78
+ ### Added
79
+
80
+ - **XMLLoader** — load XML files via stdlib `xml.etree.ElementTree`; optional `tags` filter; no new dependencies
81
+ - **DiscordLoader** — load messages from Discord channels via bot token; `before_message_id` / `after_message_id` pagination; rich metadata (author, timestamp, attachments); `pip install synapsekit[discord]`
82
+ - **PythonREPLTool timeout** — `timeout: float = 5.0` parameter; Unix uses `signal.SIGALRM`, Windows uses `multiprocessing.Process`; security warning logged on instantiation
83
+
84
+ ### Improved
85
+
86
+ - **Mermaid conditional edges** — render as dashed arrows (`-.->`) to distinguish from deterministic edges; branch labels prefixed with condition function name (e.g. `route:approve`)
87
+ - **SQLiteCheckpointer** — supports `async with` for automatic connection cleanup
88
+ - **Windows compatibility** — `audio/x-wav` MIME normalised to `audio/wav`; shell timeout test uses portable Python sleep; graph tracer uses `time.perf_counter()` for sub-millisecond resolution
89
+
90
+ - 35 new tests (1403 total)
91
+
92
+ ---
93
+
10
94
  ## [1.4.2] — 2026-03-28
11
95
 
12
96
  ### Added
@@ -0,0 +1,41 @@
1
+ # SynapseKit Discord Automod & Spam Protection
2
+
3
+ Draft for issue #394.
4
+
5
+ ## Tool
6
+ Use **Carl-bot** (Automod) — free, no code.
7
+
8
+ Carl-bot dashboard: https://carl.gg
9
+
10
+ ---
11
+
12
+ ## Automod rules to configure
13
+
14
+ | Rule | Action | Target |
15
+ |---|---|---|
16
+ | New account < 7 days old | Kick + DM warning | @everyone |
17
+ | Posting links in first 10 minutes | Delete + warn | New members |
18
+ | More than 5 messages in 5 seconds | Mute 10 min + log | @everyone |
19
+ | Discord invite links | Delete + warn | @everyone (except Moderator+) |
20
+ | Spam caps (ALL CAPS > 70%) | Delete | @everyone |
21
+ | Known phishing domains | Ban + log | @everyone |
22
+
23
+ ---
24
+
25
+ ## Logging
26
+
27
+ Create a private **#mod-log** channel (Admin + Moderator only) and point Carl-bot automod logs there.
28
+
29
+ ---
30
+
31
+ ## Slowmode
32
+
33
+ - **#general** — 5s slowmode
34
+ - **#introductions** — 10s slowmode
35
+ - **Help channels** — no slowmode
36
+
37
+ ---
38
+
39
+ ## Setup path
40
+
41
+ Carl-bot dashboard → Automod → enable each rule. Takes about 10 minutes.
@@ -0,0 +1,33 @@
1
+ # SynapseKit Discord Custom Commands
2
+
3
+ Draft for issue #396.
4
+
5
+ ## Tool
6
+ Use **Carl-bot** (Custom Commands).
7
+
8
+ Carl-bot dashboard: https://carl.gg
9
+
10
+ ---
11
+
12
+ ## Commands to set up
13
+
14
+ | Command | Response |
15
+ |---|---|
16
+ | `/docs` | https://synapsekit.github.io/synapsekit-docs/ |
17
+ | `/docs rag` | https://synapsekit.github.io/synapsekit-docs/docs/rag/pipeline |
18
+ | `/docs agents` | https://synapsekit.github.io/synapsekit-docs/docs/agents/overview |
19
+ | `/docs graph` | https://synapsekit.github.io/synapsekit-docs/docs/graph/overview |
20
+ | `/docs providers` | https://synapsekit.github.io/synapsekit-docs/docs/llms/overview |
21
+ | `/docs install` | https://synapsekit.github.io/synapsekit-docs/docs/getting-started/installation |
22
+ | `/docs quickstart` | https://synapsekit.github.io/synapsekit-docs/docs/getting-started/quickstart |
23
+ | `/changelog` | https://synapsekit.github.io/synapsekit-docs/docs/changelog |
24
+ | `/pypi` | https://pypi.org/project/synapsekit/ |
25
+ | `/github` | https://github.com/SynapseKit/SynapseKit |
26
+
27
+ ---
28
+
29
+ ## Setup path
30
+
31
+ Carl-bot dashboard → Custom Commands → create each command above. Takes ~15 mins.
32
+
33
+ These work in all channels so anyone can type `/docs rag` and get the link instantly.
@@ -0,0 +1,39 @@
1
+ # SynapseKit Discord Interest Roles (Buttons in #roles)
2
+
3
+ Draft for issue #393.
4
+
5
+ ## Tool
6
+ Use **Carl-bot** (Reaction Roles / Button Roles).
7
+
8
+ Carl-bot dashboard: https://carl.gg
9
+
10
+ ---
11
+
12
+ ## Message to pin in #roles
13
+
14
+ ```
15
+ Pick what you're building with SynapseKit.
16
+ You can select multiple.
17
+
18
+ 🗂 RAG Builder — pipelines, loaders, retrievers
19
+ 🤖 Agent Builder — tools, ReAct, function calling
20
+ 🔀 Graph Builder — StateGraph, workflows, HITL
21
+ 🧠 LLM Explorer — providers, caching, cost routing
22
+ 📖 Docs / Writer — docs improvements, examples
23
+ ```
24
+
25
+ ---
26
+
27
+ ## Setup steps
28
+
29
+ 1. Carl-bot dashboard → Reaction Roles → Create new.
30
+ 2. Paste the message above, add emoji → role mappings.
31
+ 3. Set mode to **Toggle** (click once to add, again to remove).
32
+ 4. Post in `#roles` with **send-as-bot** enabled.
33
+ 5. Lock `#roles` so only the bot can post (members interact via buttons only).
34
+
35
+ ---
36
+
37
+ ## Why this matters
38
+
39
+ Lets us @-mention specific groups (e.g., **@RAG Builder**) instead of @everyone.
@@ -0,0 +1,31 @@
1
+ # SynapseKit Discord Release Webhooks
2
+
3
+ Draft for issue #390.
4
+
5
+ ## What this does
6
+
7
+ Automatically posts new GitHub releases to Discord so `#changelog` stays up to date without manual copy-pasting.
8
+
9
+ ## Setup
10
+
11
+ 1. In GitHub, go to the repo → Settings → Webhooks → Add webhook.
12
+ 2. Set the payload URL to the Discord channel webhook URL.
13
+ 3. Use content type `application/json`.
14
+ 4. Select individual events and enable only `Releases`.
15
+ 5. Save the webhook.
16
+
17
+ ## Discord result
18
+
19
+ A published release should show something like:
20
+
21
+ > 🚀 **New release: v1.4.6**
22
+ > Subgraph error handling — retry, fallback, skip
23
+ > [View release](https://github.com/SynapseKit/SynapseKit/releases/tag/v1.4.6)
24
+
25
+ ## Optional extra
26
+
27
+ If you want a wider announcement, point the same GitHub release webhook at `#announcements` too.
28
+
29
+ ## Channel target
30
+
31
+ `#changelog` is the main target for this automation.
@@ -0,0 +1,37 @@
1
+ # SynapseKit Discord Roles & Permissions
2
+
3
+ Draft for issue #389.
4
+
5
+ ## Role hierarchy
6
+
7
+ | Role | Color | Who gets it | How |
8
+ |---|---|---|---|
9
+ | Admin | Red | Amit, Abhay | Manual |
10
+ | Moderator | Orange | Trusted members later | Manual |
11
+ | Contributor | Green | Anyone with a merged PR | Manual for now; see #391 for automation |
12
+ | Member | Blue/grey | Everyone on join | Auto via Carl-bot welcome |
13
+ | Bot | Dark grey | All bots | Manual |
14
+
15
+ ## Interest roles
16
+
17
+ These are self-assign in `#roles` and do not unlock channels:
18
+
19
+ - 🗂 RAG Builder
20
+ - 🤖 Agent Builder
21
+ - 🔀 Graph Builder
22
+ - 🧠 LLM Explorer
23
+ - 📖 Docs / Writer
24
+
25
+ ## Setup steps
26
+
27
+ 1. Create the roles in Server Settings → Roles.
28
+ 2. Set the role colors.
29
+ 3. Order them as: Admin > Moderator > Contributor > Member > @everyone.
30
+ 4. Lock `#contributors-chat` to Contributor+ only.
31
+ 5. Lock `#announcements` and `#changelog` to admin-only posting.
32
+
33
+ ## Permissions
34
+
35
+ - `#contributors-chat` — visible to Contributor, Moderator, and Admin.
36
+ - `#announcements` — visible to everyone, posting restricted to Admin only.
37
+ - `#changelog` — visible to everyone, posting restricted to Admin only.
@@ -0,0 +1,58 @@
1
+ # SynapseKit Discord Welcome & Onboarding
2
+
3
+ Draft for issue #392.
4
+
5
+ ## Tool
6
+ Use **Carl-bot** (free, no code needed).
7
+
8
+ Carl-bot dashboard: https://carl.gg
9
+
10
+ ---
11
+
12
+ ## 1) Welcome DM (Welcomer → DM)
13
+
14
+ ```
15
+ Hey, welcome to the SynapseKit community! 👋
16
+
17
+ A few things to get started:
18
+ • Head to #roles and pick what you're building
19
+ • Introduce yourself in #introductions
20
+ • If you need help, drop a message in the relevant #*-help channel
21
+
22
+ Docs: https://synapsekit.github.io/synapsekit-docs/
23
+ GitHub: https://github.com/SynapseKit/SynapseKit
24
+
25
+ Glad to have you here.
26
+ ```
27
+
28
+ ---
29
+
30
+ ## 2) Auto-assign Member role (Autoroles)
31
+
32
+ - Role: **Member**
33
+ - Trigger: on join
34
+
35
+ ---
36
+
37
+ ## 3) Welcome message in #introductions (Welcomer → Channel)
38
+
39
+ ```
40
+ Welcome {user}! Tell us what you're building 🛠
41
+ ```
42
+
43
+ ---
44
+
45
+ ## 4) #rules pinned message (keep it short)
46
+
47
+ - Be respectful
48
+ - Keep questions in the right help channel
49
+ - No spam or self-promo without context
50
+ - English preferred (or include a translation)
51
+ - No DM-ing members without permission
52
+
53
+ ---
54
+
55
+ ## Notes
56
+
57
+ - Set up channel structure first (see COMMUNITY.md / DISCORD_ROLES.md).
58
+ - If you change channel names, update the DM text accordingly.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synapsekit
3
- Version: 1.4.2
3
+ Version: 1.4.7
4
4
  Summary: Async-native Python framework for building production-grade LLM applications. Streaming-first, 2 dependencies, fully transparent.
5
5
  Project-URL: Homepage, https://github.com/SynapseKit/SynapseKit
6
6
  Project-URL: Repository, https://github.com/SynapseKit/SynapseKit
@@ -29,39 +29,51 @@ Provides-Extra: all
29
29
  Requires-Dist: ai21>=2.0; extra == 'all'
30
30
  Requires-Dist: aiomcache>=0.8; extra == 'all'
31
31
  Requires-Dist: anthropic>=0.25; extra == 'all'
32
+ Requires-Dist: arxiv>=2.0; extra == 'all'
32
33
  Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
33
34
  Requires-Dist: boto3>=1.34; extra == 'all'
34
35
  Requires-Dist: chromadb>=0.5; extra == 'all'
35
36
  Requires-Dist: cohere>=5.0; extra == 'all'
37
+ Requires-Dist: discord-py>=2.0; extra == 'all'
36
38
  Requires-Dist: duckduckgo-search>=6.0; extra == 'all'
37
39
  Requires-Dist: erniebot>=0.5; extra == 'all'
38
40
  Requires-Dist: faiss-cpu>=1.7; extra == 'all'
39
41
  Requires-Dist: fastapi>=0.110; extra == 'all'
42
+ Requires-Dist: google-api-python-client>=2.0; extra == 'all'
43
+ Requires-Dist: google-auth>=2.0; extra == 'all'
40
44
  Requires-Dist: google-cloud-aiplatform>=1.38; extra == 'all'
41
45
  Requires-Dist: google-generativeai>=0.7; extra == 'all'
42
46
  Requires-Dist: google-search-results>=2.4; extra == 'all'
43
47
  Requires-Dist: groq>=0.9; extra == 'all'
44
48
  Requires-Dist: httpx>=0.27; extra == 'all'
45
49
  Requires-Dist: huggingface-hub>=0.20; extra == 'all'
50
+ Requires-Dist: lancedb>=0.5; extra == 'all'
46
51
  Requires-Dist: llama-cpp-python>=0.2; extra == 'all'
47
52
  Requires-Dist: lxml>=5.0; extra == 'all'
48
53
  Requires-Dist: mcp>=1.0; extra == 'all'
49
54
  Requires-Dist: mistralai>=1.0; extra == 'all'
50
55
  Requires-Dist: ollama>=0.2; extra == 'all'
51
56
  Requires-Dist: openai>=1.0; extra == 'all'
57
+ Requires-Dist: pgvector>=0.2; extra == 'all'
52
58
  Requires-Dist: pinecone>=3.0; extra == 'all'
53
59
  Requires-Dist: psycopg[binary]>=3.1; extra == 'all'
60
+ Requires-Dist: pymilvus>=2.4; extra == 'all'
54
61
  Requires-Dist: pypdf>=4.0; extra == 'all'
55
62
  Requires-Dist: pyyaml>=6.0; extra == 'all'
56
63
  Requires-Dist: qdrant-client>=1.9; extra == 'all'
64
+ Requires-Dist: ragatouille; extra == 'all'
57
65
  Requires-Dist: redis>=5.0; extra == 'all'
58
66
  Requires-Dist: sentence-transformers>=2.7; extra == 'all'
59
67
  Requires-Dist: tavily-python>=0.3; extra == 'all'
60
68
  Requires-Dist: uvicorn[standard]>=0.29; extra == 'all'
69
+ Requires-Dist: weaviate-client>=4.0; extra == 'all'
70
+ Requires-Dist: wikipedia-api>=0.6; extra == 'all'
61
71
  Requires-Dist: wolframalpha>=5.0; extra == 'all'
62
72
  Requires-Dist: youtube-search-python>=1.6; extra == 'all'
63
73
  Provides-Extra: anthropic
64
74
  Requires-Dist: anthropic>=0.25; extra == 'anthropic'
75
+ Provides-Extra: arxiv
76
+ Requires-Dist: arxiv>=2.0; extra == 'arxiv'
65
77
  Provides-Extra: audio
66
78
  Requires-Dist: openai>=1.0; extra == 'audio'
67
79
  Provides-Extra: aws-lambda
@@ -74,6 +86,10 @@ Provides-Extra: cloudflare
74
86
  Requires-Dist: httpx>=0.27; extra == 'cloudflare'
75
87
  Provides-Extra: cohere
76
88
  Requires-Dist: cohere>=5.0; extra == 'cohere'
89
+ Provides-Extra: colbert
90
+ Requires-Dist: ragatouille; extra == 'colbert'
91
+ Provides-Extra: discord
92
+ Requires-Dist: discord-py>=2.0; extra == 'discord'
77
93
  Provides-Extra: docx
78
94
  Requires-Dist: python-docx>=1.0; extra == 'docx'
79
95
  Provides-Extra: dynamodb
@@ -86,6 +102,9 @@ Provides-Extra: faiss
86
102
  Requires-Dist: faiss-cpu>=1.7; extra == 'faiss'
87
103
  Provides-Extra: gcal-tool
88
104
  Requires-Dist: google-api-python-client>=2.0; extra == 'gcal-tool'
105
+ Provides-Extra: gdrive
106
+ Requires-Dist: google-api-python-client>=2.0; extra == 'gdrive'
107
+ Requires-Dist: google-auth>=2.0; extra == 'gdrive'
89
108
  Provides-Extra: gemini
90
109
  Requires-Dist: google-generativeai>=0.7; extra == 'gemini'
91
110
  Provides-Extra: google-search
@@ -99,22 +118,31 @@ Provides-Extra: http
99
118
  Requires-Dist: aiohttp>=3.9; extra == 'http'
100
119
  Provides-Extra: huggingface
101
120
  Requires-Dist: huggingface-hub>=0.20; extra == 'huggingface'
121
+ Provides-Extra: lancedb
122
+ Requires-Dist: lancedb>=0.5; extra == 'lancedb'
102
123
  Provides-Extra: llamacpp
103
124
  Requires-Dist: llama-cpp-python>=0.2; extra == 'llamacpp'
104
125
  Provides-Extra: mcp
105
126
  Requires-Dist: mcp>=1.0; extra == 'mcp'
106
127
  Provides-Extra: memcached
107
128
  Requires-Dist: aiomcache>=0.8; extra == 'memcached'
129
+ Provides-Extra: milvus
130
+ Requires-Dist: pymilvus>=2.4; extra == 'milvus'
108
131
  Provides-Extra: minimax
109
132
  Requires-Dist: httpx>=0.27; extra == 'minimax'
110
133
  Provides-Extra: mistral
111
134
  Requires-Dist: mistralai>=1.0; extra == 'mistral'
135
+ Provides-Extra: notion
136
+ Requires-Dist: httpx>=0.27; extra == 'notion'
112
137
  Provides-Extra: ollama
113
138
  Requires-Dist: ollama>=0.2; extra == 'ollama'
114
139
  Provides-Extra: openai
115
140
  Requires-Dist: openai>=1.0; extra == 'openai'
116
141
  Provides-Extra: pdf
117
142
  Requires-Dist: pypdf>=4.0; extra == 'pdf'
143
+ Provides-Extra: pgvector
144
+ Requires-Dist: pgvector>=0.2; extra == 'pgvector'
145
+ Requires-Dist: psycopg[binary]>=3.1; extra == 'pgvector'
118
146
  Provides-Extra: pinecone
119
147
  Requires-Dist: pinecone>=3.0; extra == 'pinecone'
120
148
  Provides-Extra: postgres
@@ -132,15 +160,21 @@ Requires-Dist: sentence-transformers>=2.7; extra == 'semantic'
132
160
  Provides-Extra: serve
133
161
  Requires-Dist: fastapi>=0.110; extra == 'serve'
134
162
  Requires-Dist: uvicorn[standard]>=0.29; extra == 'serve'
163
+ Provides-Extra: slack
164
+ Requires-Dist: slack-sdk>=3.0; extra == 'slack'
135
165
  Provides-Extra: tavily
136
166
  Requires-Dist: tavily-python>=0.3; extra == 'tavily'
137
167
  Provides-Extra: vertex
138
168
  Requires-Dist: google-cloud-aiplatform>=1.38; extra == 'vertex'
139
169
  Provides-Extra: video
140
170
  Requires-Dist: openai>=1.0; extra == 'video'
171
+ Provides-Extra: weaviate
172
+ Requires-Dist: weaviate-client>=4.0; extra == 'weaviate'
141
173
  Provides-Extra: web
142
174
  Requires-Dist: beautifulsoup4>=4.12; extra == 'web'
143
175
  Requires-Dist: httpx>=0.27; extra == 'web'
176
+ Provides-Extra: wikipedia
177
+ Requires-Dist: wikipedia-api>=0.6; extra == 'wikipedia'
144
178
  Provides-Extra: wolfram
145
179
  Requires-Dist: wolframalpha>=5.0; extra == 'wolfram'
146
180
  Provides-Extra: yaml
@@ -155,12 +189,13 @@ Description-Content-Type: text/markdown
155
189
 
156
190
  <div align="center">
157
191
 
158
- [![PyPI version](https://img.shields.io/pypi/v/synapsekit?color=0a7bbd&label=pypi&logo=pypi&logoColor=white)](https://pypi.org/project/synapsekit/)
159
- [![Python](https://img.shields.io/badge/python-3.10%2B-blue?logo=python&logoColor=white)](https://www.python.org/)
192
+ [![PyPI version](https://img.shields.io/pypi/v/synapsekit?color=22c55e&label=pypi&logo=pypi&logoColor=white)](https://pypi.org/project/synapsekit/)
193
+ [![Python](https://img.shields.io/badge/python-3.10%2B-22c55e?logo=python&logoColor=white)](https://www.python.org/)
160
194
  [![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-22c55e)](LICENSE)
161
- [![Tests](https://img.shields.io/badge/tests-1305%20passing-22c55e?logo=pytest&logoColor=white)]()
162
- [![Downloads](https://img.shields.io/pypi/dm/synapsekit?color=0a7bbd&logo=pypi&logoColor=white)](https://pypistats.org/packages/synapsekit)
163
- [![Docs](https://img.shields.io/badge/docs-online-0a7bbd?logo=readthedocs&logoColor=white)](https://synapsekit.github.io/synapsekit-docs/)
195
+ [![Tests](https://img.shields.io/badge/tests-1500%20passing-22c55e?logo=pytest&logoColor=white)]()
196
+ [![Downloads](https://img.shields.io/pypi/dm/synapsekit?color=22c55e&logo=pypi&logoColor=white)](https://pypistats.org/packages/synapsekit)
197
+ [![PyPI Downloads](https://static.pepy.tech/personalized-badge/synapsekit?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/synapsekit)
198
+ [![Docs](https://img.shields.io/badge/docs-online-22c55e?logo=readthedocs&logoColor=white)](https://synapsekit.github.io/synapsekit-docs/)
164
199
 
165
200
  **[Documentation](https://synapsekit.github.io/synapsekit-docs/) · [Quickstart](https://synapsekit.github.io/synapsekit-docs/docs/getting-started/quickstart) · [API Reference](https://synapsekit.github.io/synapsekit-docs/docs/api/llm) · [Changelog](CHANGELOG.md) · [Report a Bug](https://github.com/SynapseKit/SynapseKit/issues/new?template=bug_report.yml)**
166
201
 
@@ -192,7 +227,7 @@ Token-level streaming is the default,<br/>not an afterthought.<br/>Works across
192
227
  <tr>
193
228
  <td align="center" width="33%">
194
229
  <h3>🔌 One interface</h3>
195
- 19 LLM providers and 5 vector stores<br/>behind the same API.<br/>Swap without rewriting.
230
+ 27 LLM providers and 9 vector stores<br/>behind the same API.<br/>Swap without rewriting.
196
231
  </td>
197
232
  <td align="center" width="33%">
198
233
  <h3>🧩 Composable</h3>
@@ -235,7 +270,7 @@ Retrieval-augmented generation with streaming, BM25 reranking, conversation memo
235
270
  <td width="50%">
236
271
 
237
272
  **🤖 Agents**<br/>
238
- ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral). 35 built-in tools including calculator, Python REPL, web search, SQL, HTTP, shell, summarization, sentiment analysis, and translation. Fully extensible.
273
+ ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral). 42 built-in tools including calculator, Python REPL, web search, SQL, HTTP, shell, arxiv, pubmed, wolfram, wikipedia, and more. Fully extensible.
239
274
 
240
275
  </td>
241
276
  </tr>
@@ -249,7 +284,7 @@ DAG-based async pipelines. Nodes run in waves — parallel nodes execute concurr
249
284
  <td width="50%">
250
285
 
251
286
  **🧠 LLM Providers**<br/>
252
- OpenAI, Anthropic, Ollama, Gemini, Cohere, Mistral, Bedrock, Azure OpenAI, Groq, DeepSeek, OpenRouter, Together, Fireworks, Cerebras, Cloudflare, Moonshot, Perplexity, Vertex AI, Zhipu — all behind one interface. Auto-detected from the model name. Swap without rewriting.
287
+ OpenAI, Anthropic, Ollama, Gemini, Cohere, Mistral, Bedrock, Azure OpenAI, Groq, DeepSeek, OpenRouter, Together, Fireworks, Cerebras, Cloudflare, Moonshot, Perplexity, Vertex AI, Zhipu, AI21 Labs, Databricks, Baidu ERNIE, llama.cpp, Minimax, Aleph Alpha, Hugging Face, SambaNova — all behind one interface. Auto-detected from the model name. Swap without rewriting.
253
288
 
254
289
  </td>
255
290
  </tr>
@@ -309,7 +344,7 @@ Everything you need to get started and go deep is in the docs.
309
344
  | 🗂 [RAG](https://synapsekit.github.io/synapsekit-docs/docs/rag/pipeline) | Pipelines, loaders, retrieval, vector stores |
310
345
  | 🤖 [Agents](https://synapsekit.github.io/synapsekit-docs/docs/agents/overview) | ReAct, function calling, tools, executor |
311
346
  | 🔀 [Graph Workflows](https://synapsekit.github.io/synapsekit-docs/docs/graph/overview) | DAG pipelines, conditional routing, parallel execution |
312
- | 🧠 [LLM Providers](https://synapsekit.github.io/synapsekit-docs/docs/llms/overview) | All 13 providers with examples |
347
+ | 🧠 [LLM Providers](https://synapsekit.github.io/synapsekit-docs/docs/llms/overview) | All 27 providers with examples |
313
348
  | 📖 [API Reference](https://synapsekit.github.io/synapsekit-docs/docs/api/llm) | Full class and method reference |
314
349
 
315
350
  ---
@@ -336,6 +371,8 @@ Read [CONTRIBUTING.md](CONTRIBUTING.md) to get started. Look for issues tagged [
336
371
  ## Community
337
372
 
338
373
  - 💬 [Discussions](https://github.com/SynapseKit/SynapseKit/discussions) — ask questions, share ideas
374
+ - 🧭 [Discord roles draft](DISCORD_ROLES.md) — proposed roles and permissions for issue #389
375
+ - 🧭 [Discord release webhook draft](DISCORD_RELEASE_WEBHOOKS.md) — automate release announcements for issue #390
339
376
  - 🐛 [Bug reports](https://github.com/SynapseKit/SynapseKit/issues/new?template=bug_report.yml)
340
377
  - 💡 [Feature requests](https://github.com/SynapseKit/SynapseKit/issues/new?template=feature_request.yml)
341
378
  - 🔒 [Security policy](SECURITY.md)