synapsekit 1.4.2__tar.gz → 1.4.6__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.
- {synapsekit-1.4.2 → synapsekit-1.4.6}/CHANGELOG.md +60 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/PKG-INFO +32 -10
- {synapsekit-1.4.2 → synapsekit-1.4.6}/README.md +10 -9
- synapsekit-1.4.6/assets/banner.svg +54 -0
- synapsekit-1.4.6/assets/logo.svg +13 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/pyproject.toml +22 -2
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/__init__.py +16 -0
- synapsekit-1.4.6/src/synapsekit/agents/tools/python_repl.py +161 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/sqlite.py +6 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/mermaid.py +9 -1
- synapsekit-1.4.6/src/synapsekit/graph/subgraph.py +133 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/trace.py +10 -5
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/__init__.py +2 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/multimodal.py +3 -0
- synapsekit-1.4.6/src/synapsekit/llm/sambanova.py +88 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/__init__.py +6 -0
- synapsekit-1.4.6/src/synapsekit/loaders/discord.py +147 -0
- synapsekit-1.4.6/src/synapsekit/loaders/google_drive.py +210 -0
- synapsekit-1.4.6/src/synapsekit/loaders/xml_loader.py +39 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/prompts/template.py +31 -3
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/rag/facade.py +8 -1
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/__init__.py +8 -0
- synapsekit-1.4.6/src/synapsekit/retrieval/lancedb.py +158 -0
- synapsekit-1.4.6/src/synapsekit/retrieval/milvus.py +194 -0
- synapsekit-1.4.6/src/synapsekit/retrieval/pgvector.py +203 -0
- synapsekit-1.4.6/src/synapsekit/retrieval/weaviate.py +114 -0
- synapsekit-1.4.6/src/synapsekit/text_splitters/base.py +40 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_shell_tool.py +1 -1
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_tools.py +60 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_checkpointing.py +10 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_mermaid.py +17 -3
- synapsekit-1.4.6/tests/graph/test_subgraph_errors.py +262 -0
- synapsekit-1.4.6/tests/llm/test_sambanova_provider.py +141 -0
- synapsekit-1.4.6/tests/loaders/test_discord_loader.py +189 -0
- synapsekit-1.4.6/tests/loaders/test_google_drive_loader.py +380 -0
- synapsekit-1.4.6/tests/loaders/test_xml_loader.py +274 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v100_features.py +1 -1
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/text_splitters/test_splitters.py +106 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/uv.lock +364 -2
- synapsekit-1.4.2/assets/banner.svg +0 -63
- synapsekit-1.4.2/assets/logo.svg +0 -13
- synapsekit-1.4.2/src/synapsekit/agents/tools/python_repl.py +0 -55
- synapsekit-1.4.2/src/synapsekit/graph/subgraph.py +0 -60
- synapsekit-1.4.2/src/synapsekit/text_splitters/base.py +0 -12
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.all-contributorsrc +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/profile/README.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/workflows/ci.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/workflows/publish.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.github/workflows/welcome.yml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.gitignore +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/.pre-commit-config.yaml +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/CODE_OF_CONDUCT.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/CONTRIBUTING.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/LICENSE +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/Makefile +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/SECURITY.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/assets/favicon.svg +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/README.md +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/agent_tools.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/caching_retries.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/graph_workflow.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/multi_provider.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/examples/rag_quickstart.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/_api.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/_compat.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/a2a/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/a2a/agent_card.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/a2a/client.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/a2a/server.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/a2a/types.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/executor.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/function_calling.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/guardrails.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/memory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/multi/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/multi/crew.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/multi/handoff.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/multi/supervisor.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/pii_redactor.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/react.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/registry.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/step_events.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tool_decorator.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/api_builder.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/arxiv_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/aws_lambda.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/bing_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/brave_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/calculator.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/datetime_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/duck_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/email_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/file_list.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/file_read.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/file_write.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/github_api.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/google_calendar.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/google_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/graphql.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/http_request.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/human_input.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/image_analysis.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/jira.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/json_query.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/pdf_reader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/pubmed_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/regex_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/sentiment.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/shell.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/slack.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/speech_to_text.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/sql_query.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/sql_schema.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/summarization.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/tavily_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/text_to_speech.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/translation.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/vector_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/web_scraper.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/web_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/wikipedia.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/wolfram.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/agents/tools/youtube_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/cli/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/cli/main.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/cli/serve.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/cli/test.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/embeddings/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/embeddings/backend.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/decorators.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/faithfulness.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/groundedness.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/pipeline.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/regression.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/evaluation/relevancy.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/approval.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/json_file.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/memory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/postgres.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/checkpointers/redis.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/compiled.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/dynamic_route.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/edge.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/errors.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/fan_out.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/graph.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/interrupt.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/node.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/state.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/streaming.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/graph/visualization.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_cache_dynamodb.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_cache_memcached.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_filesystem_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_rate_limit.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_redis_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_retry.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_semantic_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/_sqlite_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/ai21.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/aleph_alpha.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/anthropic.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/azure_openai.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/bedrock.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/cerebras.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/cloudflare.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/cohere.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/cost_router.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/databricks.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/deepseek.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/ernie.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/fallback_chain.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/fireworks.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/gemini.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/groq.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/huggingface.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/llamacpp.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/minimax.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/mistral.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/moonshot.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/ollama.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/openai.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/openrouter.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/perplexity.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/structured.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/together.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/vertex_ai.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/llm/zhipu.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/audio.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/csv.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/directory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/docx.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/excel.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/html.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/image.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/json_loader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/markdown.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/pdf.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/pptx.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/text.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/video.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/web.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/loaders/yaml_loader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/mcp/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/mcp/client.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/mcp/server.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/buffer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/conversation.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/entity.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/hybrid.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/redis.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/sqlite.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/summary_buffer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/memory/token_buffer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/audit_log.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/budget_guard.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/cost_tracker.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/distributed.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/otel.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/tracer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/observability/ui.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/parsers/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/parsers/json_parser.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/parsers/list_parser.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/parsers/pydantic_parser.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/plugins.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/prompts/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/prompts/hub.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/py.typed +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/rag/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/rag/pipeline.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/adaptive.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/base.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/chroma.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/cohere_reranker.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/contextual.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/contextual_compression.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/crag.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/cross_encoder.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/ensemble.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/faiss.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/flare.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/graphrag.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/hybrid_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/hyde.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/multi_step.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/parent_document.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/pinecone.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/qdrant.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/query_decomposition.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/rag_fusion.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/retriever.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/self_query.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/self_rag.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/sentence_window.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/step_back.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/retrieval/vectorstore.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/character.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/markdown.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/recursive.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/semantic.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/src/synapsekit/text_splitters/token.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_api_builder_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_aws_lambda_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_bing_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_executor.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_function_calling.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_google_calendar_tool.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_memory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_pii_redactor.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_react.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_sql_schema.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_streaming_steps.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_tool_decorator.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_web_scraper.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/test_wolfram_alpha.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/tools/test_google_search.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/agents/tools/test_sql_query.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/conftest.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_build.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_cycles.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_json_checkpointer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_run.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_state.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_stream.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/graph/test_visualization.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_cache_dynamodb.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_cache_memcached.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_cache_retry.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_filesystem_cache.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_function_calling_providers.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_huggingface.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_llamacpp.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_llm.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_new_providers_185.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_providers.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/llm/test_vertex_ai.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/test_audio_video_loaders.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/test_docx_loader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/test_loaders.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/test_markdown_loader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/loaders/test_yaml_loader.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/memory/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/memory/test_memory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/memory/test_redis_memory.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/observability/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/observability/test_audit_log.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/observability/test_tracer.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/parsers/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/parsers/test_parsers.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/prompts/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/prompts/test_prompts.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/rag/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/rag/test_facade.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/rag/test_pipeline.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/test_backends.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/test_graphrag.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/test_hyde.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/test_retriever.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/retrieval/test_vectorstore.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v051_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v052_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v053_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v060_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v061_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v062_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v063_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v065_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v066_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v068_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v069_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v070_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v080_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v090_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v120_features.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v120_integration.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v130_eval_regression.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/test_v130_routing.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/text_splitters/__init__.py +0 -0
- {synapsekit-1.4.2 → synapsekit-1.4.6}/tests/text_splitters/test_markdown.py +0 -0
|
@@ -7,6 +7,66 @@ SynapseKit uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.4.6] — 2026-04-01
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **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)
|
|
15
|
+
- 17 new tests (1450 total)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## [1.4.5] — 2026-03-31
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **WeaviateVectorStore** — Weaviate v4 client; lazy collection creation; cosine vector search via `query.near_vector`; metadata filtering; `pip install synapsekit[weaviate]`
|
|
24
|
+
- **PGVectorStore** — PostgreSQL + pgvector; async psycopg3; cosine / L2 / inner-product distance; SQL-injection-safe via `psycopg.sql.Identifier`; metadata JSONB; `pip install synapsekit[pgvector]`
|
|
25
|
+
- **MilvusVectorStore** — IVF_FLAT and HNSW index types; `MilvusIndexType` enum; metadata filtering via Milvus expressions; Zilliz Cloud support; `pip install synapsekit[milvus]`
|
|
26
|
+
- **LanceDBVectorStore** — embedded, serverless; local and cloud (S3/GCS) storage; automatic FTS index; metadata filtering; `pip install synapsekit[lancedb]`
|
|
27
|
+
|
|
28
|
+
All four backends follow the existing lazy-import `_BACKENDS` pattern and are included in `synapsekit[all]`.
|
|
29
|
+
|
|
30
|
+
- 0 new tests (1433 total)
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## [1.4.4] — 2026-03-30
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- **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"`
|
|
39
|
+
- **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]`
|
|
40
|
+
- **`split_with_metadata()`** — new method on `BaseSplitter`; returns `list[dict]` with `text` and `metadata` keys; automatically injects `chunk_index`; all splitters inherit it
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- `asyncio.get_event_loop()` → `asyncio.get_running_loop()` in `GoogleDriveLoader` (deprecated in Python 3.10+)
|
|
45
|
+
- `build()` in `GoogleDriveLoader.aload()` wrapped in executor (was blocking the event loop)
|
|
46
|
+
- Failed file downloads in `GoogleDriveLoader._load_folder` now log a warning instead of silently skipping
|
|
47
|
+
|
|
48
|
+
- 49 new tests (1452 total)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## [1.4.3] — 2026-03-29
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- **XMLLoader** — load XML files via stdlib `xml.etree.ElementTree`; optional `tags` filter; no new dependencies
|
|
57
|
+
- **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]`
|
|
58
|
+
- **PythonREPLTool timeout** — `timeout: float = 5.0` parameter; Unix uses `signal.SIGALRM`, Windows uses `multiprocessing.Process`; security warning logged on instantiation
|
|
59
|
+
|
|
60
|
+
### Improved
|
|
61
|
+
|
|
62
|
+
- **Mermaid conditional edges** — render as dashed arrows (`-.->`) to distinguish from deterministic edges; branch labels prefixed with condition function name (e.g. `route:approve`)
|
|
63
|
+
- **SQLiteCheckpointer** — supports `async with` for automatic connection cleanup
|
|
64
|
+
- **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
|
|
65
|
+
|
|
66
|
+
- 35 new tests (1403 total)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
10
70
|
## [1.4.2] — 2026-03-28
|
|
11
71
|
|
|
12
72
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synapsekit
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.6
|
|
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
|
|
@@ -33,24 +33,30 @@ Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
|
|
|
33
33
|
Requires-Dist: boto3>=1.34; extra == 'all'
|
|
34
34
|
Requires-Dist: chromadb>=0.5; extra == 'all'
|
|
35
35
|
Requires-Dist: cohere>=5.0; extra == 'all'
|
|
36
|
+
Requires-Dist: discord-py>=2.0; extra == 'all'
|
|
36
37
|
Requires-Dist: duckduckgo-search>=6.0; extra == 'all'
|
|
37
38
|
Requires-Dist: erniebot>=0.5; extra == 'all'
|
|
38
39
|
Requires-Dist: faiss-cpu>=1.7; extra == 'all'
|
|
39
40
|
Requires-Dist: fastapi>=0.110; extra == 'all'
|
|
41
|
+
Requires-Dist: google-api-python-client>=2.0; extra == 'all'
|
|
42
|
+
Requires-Dist: google-auth>=2.0; extra == 'all'
|
|
40
43
|
Requires-Dist: google-cloud-aiplatform>=1.38; extra == 'all'
|
|
41
44
|
Requires-Dist: google-generativeai>=0.7; extra == 'all'
|
|
42
45
|
Requires-Dist: google-search-results>=2.4; extra == 'all'
|
|
43
46
|
Requires-Dist: groq>=0.9; extra == 'all'
|
|
44
47
|
Requires-Dist: httpx>=0.27; extra == 'all'
|
|
45
48
|
Requires-Dist: huggingface-hub>=0.20; extra == 'all'
|
|
49
|
+
Requires-Dist: lancedb>=0.5; extra == 'all'
|
|
46
50
|
Requires-Dist: llama-cpp-python>=0.2; extra == 'all'
|
|
47
51
|
Requires-Dist: lxml>=5.0; extra == 'all'
|
|
48
52
|
Requires-Dist: mcp>=1.0; extra == 'all'
|
|
49
53
|
Requires-Dist: mistralai>=1.0; extra == 'all'
|
|
50
54
|
Requires-Dist: ollama>=0.2; extra == 'all'
|
|
51
55
|
Requires-Dist: openai>=1.0; extra == 'all'
|
|
56
|
+
Requires-Dist: pgvector>=0.2; extra == 'all'
|
|
52
57
|
Requires-Dist: pinecone>=3.0; extra == 'all'
|
|
53
58
|
Requires-Dist: psycopg[binary]>=3.1; extra == 'all'
|
|
59
|
+
Requires-Dist: pymilvus>=2.4; extra == 'all'
|
|
54
60
|
Requires-Dist: pypdf>=4.0; extra == 'all'
|
|
55
61
|
Requires-Dist: pyyaml>=6.0; extra == 'all'
|
|
56
62
|
Requires-Dist: qdrant-client>=1.9; extra == 'all'
|
|
@@ -58,6 +64,7 @@ Requires-Dist: redis>=5.0; extra == 'all'
|
|
|
58
64
|
Requires-Dist: sentence-transformers>=2.7; extra == 'all'
|
|
59
65
|
Requires-Dist: tavily-python>=0.3; extra == 'all'
|
|
60
66
|
Requires-Dist: uvicorn[standard]>=0.29; extra == 'all'
|
|
67
|
+
Requires-Dist: weaviate-client>=4.0; extra == 'all'
|
|
61
68
|
Requires-Dist: wolframalpha>=5.0; extra == 'all'
|
|
62
69
|
Requires-Dist: youtube-search-python>=1.6; extra == 'all'
|
|
63
70
|
Provides-Extra: anthropic
|
|
@@ -74,6 +81,8 @@ Provides-Extra: cloudflare
|
|
|
74
81
|
Requires-Dist: httpx>=0.27; extra == 'cloudflare'
|
|
75
82
|
Provides-Extra: cohere
|
|
76
83
|
Requires-Dist: cohere>=5.0; extra == 'cohere'
|
|
84
|
+
Provides-Extra: discord
|
|
85
|
+
Requires-Dist: discord-py>=2.0; extra == 'discord'
|
|
77
86
|
Provides-Extra: docx
|
|
78
87
|
Requires-Dist: python-docx>=1.0; extra == 'docx'
|
|
79
88
|
Provides-Extra: dynamodb
|
|
@@ -86,6 +95,9 @@ Provides-Extra: faiss
|
|
|
86
95
|
Requires-Dist: faiss-cpu>=1.7; extra == 'faiss'
|
|
87
96
|
Provides-Extra: gcal-tool
|
|
88
97
|
Requires-Dist: google-api-python-client>=2.0; extra == 'gcal-tool'
|
|
98
|
+
Provides-Extra: gdrive
|
|
99
|
+
Requires-Dist: google-api-python-client>=2.0; extra == 'gdrive'
|
|
100
|
+
Requires-Dist: google-auth>=2.0; extra == 'gdrive'
|
|
89
101
|
Provides-Extra: gemini
|
|
90
102
|
Requires-Dist: google-generativeai>=0.7; extra == 'gemini'
|
|
91
103
|
Provides-Extra: google-search
|
|
@@ -99,12 +111,16 @@ Provides-Extra: http
|
|
|
99
111
|
Requires-Dist: aiohttp>=3.9; extra == 'http'
|
|
100
112
|
Provides-Extra: huggingface
|
|
101
113
|
Requires-Dist: huggingface-hub>=0.20; extra == 'huggingface'
|
|
114
|
+
Provides-Extra: lancedb
|
|
115
|
+
Requires-Dist: lancedb>=0.5; extra == 'lancedb'
|
|
102
116
|
Provides-Extra: llamacpp
|
|
103
117
|
Requires-Dist: llama-cpp-python>=0.2; extra == 'llamacpp'
|
|
104
118
|
Provides-Extra: mcp
|
|
105
119
|
Requires-Dist: mcp>=1.0; extra == 'mcp'
|
|
106
120
|
Provides-Extra: memcached
|
|
107
121
|
Requires-Dist: aiomcache>=0.8; extra == 'memcached'
|
|
122
|
+
Provides-Extra: milvus
|
|
123
|
+
Requires-Dist: pymilvus>=2.4; extra == 'milvus'
|
|
108
124
|
Provides-Extra: minimax
|
|
109
125
|
Requires-Dist: httpx>=0.27; extra == 'minimax'
|
|
110
126
|
Provides-Extra: mistral
|
|
@@ -115,6 +131,9 @@ Provides-Extra: openai
|
|
|
115
131
|
Requires-Dist: openai>=1.0; extra == 'openai'
|
|
116
132
|
Provides-Extra: pdf
|
|
117
133
|
Requires-Dist: pypdf>=4.0; extra == 'pdf'
|
|
134
|
+
Provides-Extra: pgvector
|
|
135
|
+
Requires-Dist: pgvector>=0.2; extra == 'pgvector'
|
|
136
|
+
Requires-Dist: psycopg[binary]>=3.1; extra == 'pgvector'
|
|
118
137
|
Provides-Extra: pinecone
|
|
119
138
|
Requires-Dist: pinecone>=3.0; extra == 'pinecone'
|
|
120
139
|
Provides-Extra: postgres
|
|
@@ -138,6 +157,8 @@ Provides-Extra: vertex
|
|
|
138
157
|
Requires-Dist: google-cloud-aiplatform>=1.38; extra == 'vertex'
|
|
139
158
|
Provides-Extra: video
|
|
140
159
|
Requires-Dist: openai>=1.0; extra == 'video'
|
|
160
|
+
Provides-Extra: weaviate
|
|
161
|
+
Requires-Dist: weaviate-client>=4.0; extra == 'weaviate'
|
|
141
162
|
Provides-Extra: web
|
|
142
163
|
Requires-Dist: beautifulsoup4>=4.12; extra == 'web'
|
|
143
164
|
Requires-Dist: httpx>=0.27; extra == 'web'
|
|
@@ -155,12 +176,13 @@ Description-Content-Type: text/markdown
|
|
|
155
176
|
|
|
156
177
|
<div align="center">
|
|
157
178
|
|
|
158
|
-
[](https://pypi.org/project/synapsekit/)
|
|
180
|
+
[](https://www.python.org/)
|
|
160
181
|
[](LICENSE)
|
|
161
|
-
[]()
|
|
183
|
+
[](https://pypistats.org/packages/synapsekit)
|
|
184
|
+
[](https://pepy.tech/projects/synapsekit)
|
|
185
|
+
[](https://synapsekit.github.io/synapsekit-docs/)
|
|
164
186
|
|
|
165
187
|
**[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
188
|
|
|
@@ -192,7 +214,7 @@ Token-level streaming is the default,<br/>not an afterthought.<br/>Works across
|
|
|
192
214
|
<tr>
|
|
193
215
|
<td align="center" width="33%">
|
|
194
216
|
<h3>🔌 One interface</h3>
|
|
195
|
-
|
|
217
|
+
27 LLM providers and 5 vector stores<br/>behind the same API.<br/>Swap without rewriting.
|
|
196
218
|
</td>
|
|
197
219
|
<td align="center" width="33%">
|
|
198
220
|
<h3>🧩 Composable</h3>
|
|
@@ -235,7 +257,7 @@ Retrieval-augmented generation with streaming, BM25 reranking, conversation memo
|
|
|
235
257
|
<td width="50%">
|
|
236
258
|
|
|
237
259
|
**🤖 Agents**<br/>
|
|
238
|
-
ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral).
|
|
260
|
+
ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral). 41 built-in tools including calculator, Python REPL, web search, SQL, HTTP, shell, arxiv, pubmed, wolfram, wikipedia, and more. Fully extensible.
|
|
239
261
|
|
|
240
262
|
</td>
|
|
241
263
|
</tr>
|
|
@@ -249,7 +271,7 @@ DAG-based async pipelines. Nodes run in waves — parallel nodes execute concurr
|
|
|
249
271
|
<td width="50%">
|
|
250
272
|
|
|
251
273
|
**🧠 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.
|
|
274
|
+
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
275
|
|
|
254
276
|
</td>
|
|
255
277
|
</tr>
|
|
@@ -309,7 +331,7 @@ Everything you need to get started and go deep is in the docs.
|
|
|
309
331
|
| 🗂 [RAG](https://synapsekit.github.io/synapsekit-docs/docs/rag/pipeline) | Pipelines, loaders, retrieval, vector stores |
|
|
310
332
|
| 🤖 [Agents](https://synapsekit.github.io/synapsekit-docs/docs/agents/overview) | ReAct, function calling, tools, executor |
|
|
311
333
|
| 🔀 [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
|
|
334
|
+
| 🧠 [LLM Providers](https://synapsekit.github.io/synapsekit-docs/docs/llms/overview) | All 27 providers with examples |
|
|
313
335
|
| 📖 [API Reference](https://synapsekit.github.io/synapsekit-docs/docs/api/llm) | Full class and method reference |
|
|
314
336
|
|
|
315
337
|
---
|
|
@@ -4,12 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
6
6
|
|
|
7
|
-
[](https://pypi.org/project/synapsekit/)
|
|
8
|
+
[](https://www.python.org/)
|
|
9
9
|
[](LICENSE)
|
|
10
|
-
[]()
|
|
11
|
+
[](https://pypistats.org/packages/synapsekit)
|
|
12
|
+
[](https://pepy.tech/projects/synapsekit)
|
|
13
|
+
[](https://synapsekit.github.io/synapsekit-docs/)
|
|
13
14
|
|
|
14
15
|
**[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)**
|
|
15
16
|
|
|
@@ -41,7 +42,7 @@ Token-level streaming is the default,<br/>not an afterthought.<br/>Works across
|
|
|
41
42
|
<tr>
|
|
42
43
|
<td align="center" width="33%">
|
|
43
44
|
<h3>🔌 One interface</h3>
|
|
44
|
-
|
|
45
|
+
27 LLM providers and 5 vector stores<br/>behind the same API.<br/>Swap without rewriting.
|
|
45
46
|
</td>
|
|
46
47
|
<td align="center" width="33%">
|
|
47
48
|
<h3>🧩 Composable</h3>
|
|
@@ -84,7 +85,7 @@ Retrieval-augmented generation with streaming, BM25 reranking, conversation memo
|
|
|
84
85
|
<td width="50%">
|
|
85
86
|
|
|
86
87
|
**🤖 Agents**<br/>
|
|
87
|
-
ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral).
|
|
88
|
+
ReAct loop (any LLM) and native function calling (OpenAI / Anthropic / Gemini / Mistral). 41 built-in tools including calculator, Python REPL, web search, SQL, HTTP, shell, arxiv, pubmed, wolfram, wikipedia, and more. Fully extensible.
|
|
88
89
|
|
|
89
90
|
</td>
|
|
90
91
|
</tr>
|
|
@@ -98,7 +99,7 @@ DAG-based async pipelines. Nodes run in waves — parallel nodes execute concurr
|
|
|
98
99
|
<td width="50%">
|
|
99
100
|
|
|
100
101
|
**🧠 LLM Providers**<br/>
|
|
101
|
-
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.
|
|
102
|
+
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.
|
|
102
103
|
|
|
103
104
|
</td>
|
|
104
105
|
</tr>
|
|
@@ -158,7 +159,7 @@ Everything you need to get started and go deep is in the docs.
|
|
|
158
159
|
| 🗂 [RAG](https://synapsekit.github.io/synapsekit-docs/docs/rag/pipeline) | Pipelines, loaders, retrieval, vector stores |
|
|
159
160
|
| 🤖 [Agents](https://synapsekit.github.io/synapsekit-docs/docs/agents/overview) | ReAct, function calling, tools, executor |
|
|
160
161
|
| 🔀 [Graph Workflows](https://synapsekit.github.io/synapsekit-docs/docs/graph/overview) | DAG pipelines, conditional routing, parallel execution |
|
|
161
|
-
| 🧠 [LLM Providers](https://synapsekit.github.io/synapsekit-docs/docs/llms/overview) | All
|
|
162
|
+
| 🧠 [LLM Providers](https://synapsekit.github.io/synapsekit-docs/docs/llms/overview) | All 27 providers with examples |
|
|
162
163
|
| 📖 [API Reference](https://synapsekit.github.io/synapsekit-docs/docs/api/llm) | Full class and method reference |
|
|
163
164
|
|
|
164
165
|
---
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<svg width="900" height="200" viewBox="0 0 900 200" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="nodegrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#22c55e"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#15803d"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Background: clean off-white -->
|
|
10
|
+
<rect width="900" height="200" fill="#f8fafc" rx="12"/>
|
|
11
|
+
|
|
12
|
+
<!-- Left green accent bar -->
|
|
13
|
+
<rect x="0" y="0" width="5" height="200" fill="#22c55e"/>
|
|
14
|
+
|
|
15
|
+
<!-- Subtle dot grid -->
|
|
16
|
+
<pattern id="dots" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
|
|
17
|
+
<circle cx="10" cy="10" r="1" fill="#e2e8f0"/>
|
|
18
|
+
</pattern>
|
|
19
|
+
<rect x="5" y="0" width="895" height="200" fill="url(#dots)" opacity="0.9"/>
|
|
20
|
+
<rect x="5" y="0" width="895" height="200" fill="#f8fafc" opacity="0.7"/>
|
|
21
|
+
|
|
22
|
+
<!-- Graph node logo mark -->
|
|
23
|
+
<circle cx="55" cy="100" r="10" fill="url(#nodegrad)"/>
|
|
24
|
+
<circle cx="88" cy="76" r="7" fill="#16a34a" opacity="0.85"/>
|
|
25
|
+
<circle cx="88" cy="124" r="7" fill="#16a34a" opacity="0.85"/>
|
|
26
|
+
<line x1="64" y1="95" x2="82" y2="80" stroke="url(#nodegrad)" stroke-width="2.2" stroke-linecap="round"/>
|
|
27
|
+
<line x1="64" y1="105" x2="82" y2="120" stroke="url(#nodegrad)" stroke-width="2.2" stroke-linecap="round"/>
|
|
28
|
+
|
|
29
|
+
<!-- Vertical divider -->
|
|
30
|
+
<line x1="113" y1="68" x2="113" y2="132" stroke="#cbd5e1" stroke-width="1.5"/>
|
|
31
|
+
|
|
32
|
+
<!-- SynapseKit wordmark -->
|
|
33
|
+
<text x="130" y="119" font-family="-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif" font-size="50" font-weight="800" fill="#0f172a" letter-spacing="-2">SynapseKit</text>
|
|
34
|
+
|
|
35
|
+
<!-- Tagline -->
|
|
36
|
+
<text x="132" y="146" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="12.5" fill="#64748b" letter-spacing="0.2">async-native Python · RAG pipelines · agents · graph workflows · 2 hard deps</text>
|
|
37
|
+
|
|
38
|
+
<!-- Stat pills -->
|
|
39
|
+
<rect x="132" y="159" width="90" height="22" rx="11" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1.5"/>
|
|
40
|
+
<text x="177" y="174" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="10" fill="#15803d" text-anchor="middle">27 providers</text>
|
|
41
|
+
|
|
42
|
+
<rect x="230" y="159" width="68" height="22" rx="11" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1.5"/>
|
|
43
|
+
<text x="264" y="174" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="10" fill="#15803d" text-anchor="middle">41 tools</text>
|
|
44
|
+
|
|
45
|
+
<rect x="306" y="159" width="76" height="22" rx="11" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1.5"/>
|
|
46
|
+
<text x="344" y="174" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="10" fill="#15803d" text-anchor="middle">18 loaders</text>
|
|
47
|
+
|
|
48
|
+
<rect x="390" y="159" width="100" height="22" rx="11" fill="#f1f5f9" stroke="#e2e8f0" stroke-width="1.5"/>
|
|
49
|
+
<text x="440" y="174" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="10" fill="#64748b" text-anchor="middle">9 vector stores</text>
|
|
50
|
+
|
|
51
|
+
<rect x="498" y="159" width="88" height="22" rx="11" fill="#f1f5f9" stroke="#e2e8f0" stroke-width="1.5"/>
|
|
52
|
+
<text x="542" y="174" font-family="'SF Mono','Fira Code','Consolas',monospace" font-size="10" fill="#64748b" text-anchor="middle">async-native</text>
|
|
53
|
+
|
|
54
|
+
</svg>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#22c55e"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#15803d"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<circle cx="8" cy="16" r="4.5" fill="url(#g)"/>
|
|
9
|
+
<circle cx="25" cy="7" r="3.5" fill="#16a34a" opacity="0.9"/>
|
|
10
|
+
<circle cx="25" cy="25" r="3.5" fill="#16a34a" opacity="0.9"/>
|
|
11
|
+
<line x1="12" y1="13.5" x2="22" y2="9" stroke="url(#g)" stroke-width="1.8" stroke-linecap="round"/>
|
|
12
|
+
<line x1="12" y1="18.5" x2="22" y2="23" stroke="url(#g)" stroke-width="1.8" stroke-linecap="round"/>
|
|
13
|
+
</svg>
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "synapsekit"
|
|
7
|
-
version = "1.4.
|
|
7
|
+
version = "1.4.6"
|
|
8
8
|
description = "Async-native Python framework for building production-grade LLM applications. Streaming-first, 2 dependencies, fully transparent."
|
|
9
9
|
authors = [{ name = "Amit", email = "de.amit.nautiyal@gmail.com" }]
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
@@ -47,6 +47,9 @@ chroma = ["chromadb>=0.5"]
|
|
|
47
47
|
faiss = ["faiss-cpu>=1.7"]
|
|
48
48
|
qdrant = ["qdrant-client>=1.9"]
|
|
49
49
|
pinecone = ["pinecone>=3.0"]
|
|
50
|
+
weaviate = ["weaviate-client>=4.0"]
|
|
51
|
+
milvus = ["pymilvus>=2.4"]
|
|
52
|
+
lancedb = ["lancedb>=0.5"]
|
|
50
53
|
ollama = ["ollama>=0.2"]
|
|
51
54
|
ai21 = ["ai21>=2.0"]
|
|
52
55
|
cohere = ["cohere>=5.0"]
|
|
@@ -79,8 +82,11 @@ ernie = ["erniebot>=0.5"]
|
|
|
79
82
|
minimax = ["httpx>=0.27"]
|
|
80
83
|
serve = ["fastapi>=0.110", "uvicorn[standard]>=0.29"]
|
|
81
84
|
postgres = ["psycopg[binary]>=3.1"]
|
|
85
|
+
pgvector = ["psycopg[binary]>=3.1", "pgvector>=0.2"]
|
|
82
86
|
wolfram = ["wolframalpha>=5.0"]
|
|
83
87
|
dynamodb = ["boto3>=1.34"]
|
|
88
|
+
discord = ["discord.py>=2.0"]
|
|
89
|
+
gdrive = ["google-api-python-client>=2.0", "google-auth>=2.0"]
|
|
84
90
|
all = [
|
|
85
91
|
"openai>=1.0",
|
|
86
92
|
"anthropic>=0.25",
|
|
@@ -93,6 +99,10 @@ all = [
|
|
|
93
99
|
"faiss-cpu>=1.7",
|
|
94
100
|
"qdrant-client>=1.9",
|
|
95
101
|
"pinecone>=3.0",
|
|
102
|
+
"weaviate-client>=4.0",
|
|
103
|
+
"pymilvus>=2.4",
|
|
104
|
+
"lancedb>=0.5",
|
|
105
|
+
"pgvector>=0.2",
|
|
96
106
|
"ollama>=0.2",
|
|
97
107
|
"ai21>=2.0",
|
|
98
108
|
"cohere>=5.0",
|
|
@@ -116,6 +126,9 @@ all = [
|
|
|
116
126
|
"llama-cpp-python>=0.2",
|
|
117
127
|
"erniebot>=0.5",
|
|
118
128
|
"wolframalpha>=5.0",
|
|
129
|
+
"discord.py>=2.0",
|
|
130
|
+
"google-api-python-client>=2.0",
|
|
131
|
+
"google-auth>=2.0",
|
|
119
132
|
]
|
|
120
133
|
|
|
121
134
|
[dependency-groups]
|
|
@@ -182,8 +195,12 @@ module = [
|
|
|
182
195
|
"synapsekit.embeddings.backend",
|
|
183
196
|
"synapsekit.retrieval.chroma",
|
|
184
197
|
"synapsekit.retrieval.faiss",
|
|
198
|
+
"synapsekit.retrieval.lancedb",
|
|
199
|
+
"synapsekit.retrieval.milvus",
|
|
200
|
+
"synapsekit.retrieval.pgvector",
|
|
185
201
|
"synapsekit.retrieval.qdrant",
|
|
186
202
|
"synapsekit.retrieval.pinecone",
|
|
203
|
+
"synapsekit.retrieval.weaviate",
|
|
187
204
|
"synapsekit.llm.groq",
|
|
188
205
|
"synapsekit.llm.azure_openai",
|
|
189
206
|
"synapsekit.llm.deepseek",
|
|
@@ -215,6 +232,7 @@ pep621_dev_dependency_groups = ["dev"]
|
|
|
215
232
|
[tool.deptry.package_module_name_map]
|
|
216
233
|
google-generativeai = "google"
|
|
217
234
|
google-api-python-client = "googleapiclient"
|
|
235
|
+
google-auth = "google"
|
|
218
236
|
beautifulsoup4 = "bs4"
|
|
219
237
|
faiss-cpu = "faiss"
|
|
220
238
|
python-pptx = "pptx"
|
|
@@ -223,8 +241,10 @@ tavily-python = "tavily"
|
|
|
223
241
|
youtube-search-python = "youtubesearchpython"
|
|
224
242
|
google-cloud-aiplatform = "vertexai"
|
|
225
243
|
llama-cpp-python = "llama_cpp"
|
|
244
|
+
"discord.py" = "discord"
|
|
226
245
|
|
|
227
246
|
[tool.deptry.per_rule_ignores]
|
|
228
247
|
DEP001 = ["sqlalchemy", "pydantic", "aiohttp", "opentelemetry", "whisper", "botocore", "aiomcache", "nest_asyncio", "huggingface_hub", "serpapi"]
|
|
229
|
-
DEP002 = ["numpy", "rank-bm25", "beautifulsoup4", "lxml", "faiss-cpu", "google-generativeai", "tavily-python", "youtube-search-python", "psycopg", "google-search-results"]
|
|
248
|
+
DEP002 = ["numpy", "rank-bm25", "beautifulsoup4", "lxml", "faiss-cpu", "google-generativeai", "tavily-python", "youtube-search-python", "psycopg", "google-search-results", "discord.py", "google-auth", "weaviate-client", "pymilvus", "lancedb", "pgvector"]
|
|
249
|
+
DEP003 = ["sqlalchemy", "botocore", "nest_asyncio"]
|
|
230
250
|
DEP004 = ["pydantic"]
|
|
@@ -251,6 +251,7 @@ __all__ = [
|
|
|
251
251
|
"MoonshotLLM",
|
|
252
252
|
"OpenRouterLLM",
|
|
253
253
|
"PerplexityLLM",
|
|
254
|
+
"SambaNovaLLM",
|
|
254
255
|
"TogetherLLM",
|
|
255
256
|
"VertexAILLM",
|
|
256
257
|
"ZhipuLLM",
|
|
@@ -261,8 +262,12 @@ __all__ = [
|
|
|
261
262
|
"InMemoryVectorStore",
|
|
262
263
|
"ChromaVectorStore",
|
|
263
264
|
"FAISSVectorStore",
|
|
265
|
+
"LanceDBVectorStore",
|
|
266
|
+
"MilvusVectorStore",
|
|
267
|
+
"PGVectorStore",
|
|
264
268
|
"QdrantVectorStore",
|
|
265
269
|
"PineconeVectorStore",
|
|
270
|
+
"WeaviateVectorStore",
|
|
266
271
|
# Retrieval
|
|
267
272
|
"Retriever",
|
|
268
273
|
"AdaptiveRAGRetriever",
|
|
@@ -490,6 +495,9 @@ __all__ = [
|
|
|
490
495
|
"VideoLoader",
|
|
491
496
|
"ImageLoader",
|
|
492
497
|
"YAMLLoader",
|
|
498
|
+
"DiscordLoader",
|
|
499
|
+
"XMLLoader",
|
|
500
|
+
"GoogleDriveLoader",
|
|
493
501
|
# Plugins
|
|
494
502
|
"PluginRegistry",
|
|
495
503
|
# API stability markers
|
|
@@ -503,8 +511,12 @@ _LAZY_IMPORTS = {
|
|
|
503
511
|
# Vector stores
|
|
504
512
|
"ChromaVectorStore": "retrieval.chroma",
|
|
505
513
|
"FAISSVectorStore": "retrieval.faiss",
|
|
514
|
+
"LanceDBVectorStore": "retrieval.lancedb",
|
|
515
|
+
"MilvusVectorStore": "retrieval.milvus",
|
|
516
|
+
"PGVectorStore": "retrieval.pgvector",
|
|
506
517
|
"QdrantVectorStore": "retrieval.qdrant",
|
|
507
518
|
"PineconeVectorStore": "retrieval.pinecone",
|
|
519
|
+
"WeaviateVectorStore": "retrieval.weaviate",
|
|
508
520
|
# LLM providers
|
|
509
521
|
"AsyncLRUCache": "llm._cache",
|
|
510
522
|
"DynamoDBCacheBackend": "llm._cache_dynamodb",
|
|
@@ -518,6 +530,7 @@ _LAZY_IMPORTS = {
|
|
|
518
530
|
"HuggingFaceLLM": "llm.huggingface",
|
|
519
531
|
"OpenRouterLLM": "llm.openrouter",
|
|
520
532
|
"PerplexityLLM": "llm.perplexity",
|
|
533
|
+
"SambaNovaLLM": "llm.sambanova",
|
|
521
534
|
"TogetherLLM": "llm.together",
|
|
522
535
|
"MinimaxLLM": "llm.minimax",
|
|
523
536
|
"MoonshotLLM": "llm.moonshot",
|
|
@@ -534,6 +547,9 @@ _LAZY_IMPORTS = {
|
|
|
534
547
|
"ExcelLoader": "loaders.excel",
|
|
535
548
|
"PowerPointLoader": "loaders.pptx",
|
|
536
549
|
"YAMLLoader": "loaders.yaml_loader",
|
|
550
|
+
"DiscordLoader": "loaders.discord",
|
|
551
|
+
"XMLLoader": "loaders.xml_loader",
|
|
552
|
+
"GoogleDriveLoader": "loaders.google_drive",
|
|
537
553
|
}
|
|
538
554
|
|
|
539
555
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import contextlib
|
|
4
|
+
import io
|
|
5
|
+
import logging
|
|
6
|
+
import math
|
|
7
|
+
import multiprocessing
|
|
8
|
+
import platform
|
|
9
|
+
import signal
|
|
10
|
+
import sys
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from ..base import BaseTool, ToolResult
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class _CodeTimeoutError(Exception):
|
|
19
|
+
"""Raised when code execution times out."""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _exec_with_capture(code: str, namespace: dict, output_queue: multiprocessing.Queue) -> None:
|
|
23
|
+
"""Execute code in a subprocess and send results back via queue.
|
|
24
|
+
|
|
25
|
+
Used for Windows timeout implementation with multiprocessing.
|
|
26
|
+
"""
|
|
27
|
+
old_stdout = sys.stdout
|
|
28
|
+
sys.stdout = buf = io.StringIO()
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
exec(code, namespace)
|
|
32
|
+
output = buf.getvalue()
|
|
33
|
+
# Send back (success, output, error, namespace)
|
|
34
|
+
output_queue.put((True, output, None, namespace))
|
|
35
|
+
except Exception as e:
|
|
36
|
+
error_msg = f"{type(e).__name__}: {e}"
|
|
37
|
+
output_queue.put((False, "", error_msg, namespace))
|
|
38
|
+
finally:
|
|
39
|
+
sys.stdout = old_stdout
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class PythonREPLTool(BaseTool):
|
|
43
|
+
"""
|
|
44
|
+
Execute arbitrary Python code and capture stdout.
|
|
45
|
+
|
|
46
|
+
Timeout behavior:
|
|
47
|
+
- Unix/Linux: Uses signal.SIGALRM (fast, full namespace persistence)
|
|
48
|
+
- Windows: Uses multiprocessing.Process (reliable timeout, namespace limited to picklable objects)
|
|
49
|
+
|
|
50
|
+
Warning: This executes real Python code. Only use in trusted environments.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
name = "python_repl"
|
|
54
|
+
description = (
|
|
55
|
+
"Execute Python code and return its output. "
|
|
56
|
+
"Input: a Python code string. Use print() to produce output. "
|
|
57
|
+
"WARNING: executes real Python — only use in trusted environments."
|
|
58
|
+
)
|
|
59
|
+
parameters = {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"properties": {
|
|
62
|
+
"code": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "Python code to execute",
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"required": ["code"],
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
def __init__(self, timeout: float = 5.0) -> None:
|
|
71
|
+
logger.warning(
|
|
72
|
+
"PythonREPLTool executes arbitrary Python code. "
|
|
73
|
+
"Only use in trusted environments with controlled input. "
|
|
74
|
+
"Malicious code can access files, network, and system resources."
|
|
75
|
+
)
|
|
76
|
+
self._namespace: dict = {}
|
|
77
|
+
self.timeout = timeout
|
|
78
|
+
|
|
79
|
+
async def run(self, code: str = "", **kwargs: Any) -> ToolResult:
|
|
80
|
+
src = code or kwargs.get("input", "")
|
|
81
|
+
if not src:
|
|
82
|
+
return ToolResult(output="", error="No code provided.")
|
|
83
|
+
|
|
84
|
+
is_windows = platform.system() == "Windows"
|
|
85
|
+
|
|
86
|
+
if is_windows:
|
|
87
|
+
return await self._run_windows(src)
|
|
88
|
+
else:
|
|
89
|
+
return await self._run_unix(src)
|
|
90
|
+
|
|
91
|
+
async def _run_unix(self, code: str) -> ToolResult:
|
|
92
|
+
"""Execute code with signal.SIGALRM timeout (Unix/Linux)."""
|
|
93
|
+
old_stdout = sys.stdout
|
|
94
|
+
sys.stdout = buf = io.StringIO()
|
|
95
|
+
|
|
96
|
+
def timeout_handler(signum, frame):
|
|
97
|
+
raise _CodeTimeoutError(f"Code execution timed out after {self.timeout} seconds")
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
signal.signal(signal.SIGALRM, timeout_handler)
|
|
101
|
+
signal.alarm(max(1, math.ceil(self.timeout)))
|
|
102
|
+
try:
|
|
103
|
+
exec(code, self._namespace)
|
|
104
|
+
finally:
|
|
105
|
+
signal.alarm(0) # Cancel alarm
|
|
106
|
+
|
|
107
|
+
output = buf.getvalue()
|
|
108
|
+
return ToolResult(output=output or "(no output)")
|
|
109
|
+
except _CodeTimeoutError as e:
|
|
110
|
+
return ToolResult(output="", error=str(e))
|
|
111
|
+
except Exception as e:
|
|
112
|
+
return ToolResult(output="", error=f"{type(e).__name__}: {e}")
|
|
113
|
+
finally:
|
|
114
|
+
sys.stdout = old_stdout
|
|
115
|
+
signal.alarm(0) # Ensure alarm is cancelled
|
|
116
|
+
|
|
117
|
+
async def _run_windows(self, code: str) -> ToolResult:
|
|
118
|
+
"""Execute code with multiprocessing timeout (Windows).
|
|
119
|
+
|
|
120
|
+
Note: Namespace persistence limited to picklable objects.
|
|
121
|
+
"""
|
|
122
|
+
output_queue: multiprocessing.Queue = multiprocessing.Queue()
|
|
123
|
+
|
|
124
|
+
# Create process to execute code
|
|
125
|
+
process = multiprocessing.Process(
|
|
126
|
+
target=_exec_with_capture, args=(code, self._namespace.copy(), output_queue)
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
process.start()
|
|
130
|
+
process.join(timeout=self.timeout)
|
|
131
|
+
|
|
132
|
+
if process.is_alive():
|
|
133
|
+
# Timeout occurred
|
|
134
|
+
process.terminate()
|
|
135
|
+
process.join(timeout=1.0) # Wait for graceful termination
|
|
136
|
+
if process.is_alive():
|
|
137
|
+
process.kill() # Force kill if still running
|
|
138
|
+
return ToolResult(
|
|
139
|
+
output="", error=f"Code execution timed out after {self.timeout} seconds"
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# Process completed, get results
|
|
143
|
+
if not output_queue.empty():
|
|
144
|
+
success, output, error, updated_namespace = output_queue.get()
|
|
145
|
+
|
|
146
|
+
# Update namespace with picklable objects from subprocess
|
|
147
|
+
# This allows persistence of basic types but not complex objects
|
|
148
|
+
with contextlib.suppress(Exception):
|
|
149
|
+
self._namespace.update(updated_namespace)
|
|
150
|
+
|
|
151
|
+
if success:
|
|
152
|
+
return ToolResult(output=output or "(no output)")
|
|
153
|
+
else:
|
|
154
|
+
return ToolResult(output="", error=error)
|
|
155
|
+
else:
|
|
156
|
+
# Process died without sending results
|
|
157
|
+
return ToolResult(output="", error="Code execution failed unexpectedly")
|
|
158
|
+
|
|
159
|
+
def reset(self) -> None:
|
|
160
|
+
"""Clear the persistent namespace between runs."""
|
|
161
|
+
self._namespace.clear()
|