langgraph-agent-toolkit 0.4.1__tar.gz → 0.4.3__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.
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/workflows/deploy.yml +16 -1
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/workflows/sphinx.yml +1 -1
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/CHANGELOG.md +15 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/PKG-INFO +19 -17
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/README.md +15 -13
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docker/app/Dockerfile +3 -3
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/agent_executor.py +7 -8
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/client/client.py +7 -3
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/postgres.py +1 -3
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/streamlit_app.py +15 -12
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/pyproject.toml +5 -5
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/app/test_streamlit_app.py +27 -20
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/test_service.py +1 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/uv.lock +1980 -1973
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.coveragerc +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.dockerignore +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/codecov.yml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/dependabot.yml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/scripts/tag_from_pyproject.sh +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/workflows/release.yml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/workflows/test.yml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.gitignore +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.pre-commit-config.yaml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.project-root +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/CONTRIBUTING.md +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/LICENSE +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/Makefile +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/clickhouse/.clickhouse.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/langfuse/.langfuse.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/litellm/.litellm.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/litellm/config.example.yaml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/minio/.minio.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/postgres/.postgres.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/configs/redis/.redis.env.example +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docker/service/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docker-compose.yaml +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/.gitignore +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/Makefile +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/_static/custom.css +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/_templates/class.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/_templates/layout.html +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/_templates/module.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/conf.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/contributing.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/environment_setup.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/index.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/installation.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/make.bat +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/media/agent_architecture.excalidraw +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/media/agent_architecture.png +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/media/agent_diagram.png +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/media/logo.svg +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/docs/usage.rst +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph.json +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/agents/components/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/client/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/base.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/memory/types.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/models/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/models/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/models/fake.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/base.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/langfuse.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/observability/types.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/core/settings.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/helper/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/helper/constants.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/helper/logging.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/helper/types.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/helper/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/run_agent.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/run_client.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/run_service.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/schema/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/schema/models.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/schema/schema.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/schema/task_data.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/handler.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/middleware.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/routes.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/types.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/langgraph_agent_toolkit/service/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/postgres-init/create_databases.sql +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/01-invoke-proxy.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/02-test-local-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/03-test-langfuse-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/04-test-langsmith-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/05-test-prompt-types.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/07-test-get-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/08-test-update-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/scripts/python/09-test-clear-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/agents/test_agent_executor.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/agents/test_service_streaming.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/app/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/client/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/client/test_client.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/core/test_llm.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/core/test_memory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/core/test_observability.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/core/test_prompts.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/core/test_settings.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/integration/test_docker_e2e.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/test_auth.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/test_factory.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/test_service_e2e.py +0 -0
- {langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/service/test_utils.py +0 -0
{langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/.github/workflows/deploy.yml
RENAMED
|
@@ -5,16 +5,29 @@ on:
|
|
|
5
5
|
branches:
|
|
6
6
|
- main
|
|
7
7
|
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
deploy_enabled:
|
|
10
|
+
description: 'Enable deployment (set to "true" to deploy)'
|
|
11
|
+
required: true
|
|
12
|
+
default: "false"
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- "false"
|
|
16
|
+
- "true"
|
|
8
17
|
|
|
9
18
|
jobs:
|
|
10
19
|
test:
|
|
11
20
|
# Don't try to run deployment in forks and repo copies
|
|
12
|
-
if: github.repository == '
|
|
21
|
+
if: github.repository == 'kryvokhyzha/langgraph-agent-toolkit'
|
|
13
22
|
uses: ./.github/workflows/test.yml
|
|
14
23
|
|
|
15
24
|
build:
|
|
16
25
|
runs-on: ubuntu-latest
|
|
17
26
|
needs: [test]
|
|
27
|
+
# Skip build if not manually triggered with deploy_enabled=true
|
|
28
|
+
if:
|
|
29
|
+
github.event_name == 'workflow_dispatch' &&
|
|
30
|
+
github.event.inputs.deploy_enabled == 'true'
|
|
18
31
|
|
|
19
32
|
steps:
|
|
20
33
|
- uses: actions/checkout@v4
|
|
@@ -42,6 +55,8 @@ jobs:
|
|
|
42
55
|
deploy:
|
|
43
56
|
runs-on: ubuntu-latest
|
|
44
57
|
needs: build
|
|
58
|
+
# This job will only run if build job runs and succeeds
|
|
59
|
+
if: always() && needs.build.result == 'success'
|
|
45
60
|
|
|
46
61
|
steps:
|
|
47
62
|
- name: Deploy to Azure Web App
|
|
@@ -6,6 +6,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
and this project adheres to
|
|
7
7
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [0.4.3]
|
|
10
|
+
|
|
11
|
+
### Updated
|
|
12
|
+
|
|
13
|
+
- Project dependencies
|
|
14
|
+
|
|
15
|
+
## [0.4.2]
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Streaming bug
|
|
20
|
+
- Steamlit welcom message display
|
|
21
|
+
- Client handling error
|
|
22
|
+
- Package dependencies
|
|
23
|
+
|
|
9
24
|
## [0.4.1]
|
|
10
25
|
|
|
11
26
|
### Updated
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-agent-toolkit
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit
|
|
5
5
|
Project-URL: documentation, https://kryvokhyzha.github.io/langgraph-agent-toolkit
|
|
6
6
|
Project-URL: repository, https://github.com/kryvokhyzha/langgraph-agent-toolkit
|
|
@@ -28,14 +28,14 @@ Requires-Dist: grpcio>=1.68.0
|
|
|
28
28
|
Requires-Dist: httpx~=0.28.1
|
|
29
29
|
Requires-Dist: jinja2~=3.1.6
|
|
30
30
|
Requires-Dist: jiter~=0.9.0
|
|
31
|
-
Requires-Dist: joblib
|
|
31
|
+
Requires-Dist: joblib>=1.4.2
|
|
32
32
|
Requires-Dist: langchain-community~=0.3.21
|
|
33
33
|
Requires-Dist: langchain-core~=0.3.52
|
|
34
34
|
Requires-Dist: langgraph-checkpoint-postgres~=2.0.19
|
|
35
35
|
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.6
|
|
36
36
|
Requires-Dist: langgraph-cli[inmem]~=0.2.3
|
|
37
37
|
Requires-Dist: langgraph-supervisor~=0.0.16
|
|
38
|
-
Requires-Dist: langgraph~=0.
|
|
38
|
+
Requires-Dist: langgraph~=0.4.1
|
|
39
39
|
Requires-Dist: loguru~=0.7.3
|
|
40
40
|
Requires-Dist: multidict>6.3.2
|
|
41
41
|
Requires-Dist: numpy~=1.26.4; python_version <= '3.12'
|
|
@@ -49,7 +49,7 @@ Requires-Dist: pyowm~=3.3.0
|
|
|
49
49
|
Requires-Dist: python-dotenv~=1.1.0
|
|
50
50
|
Requires-Dist: rootutils>=1.0.7
|
|
51
51
|
Requires-Dist: setuptools>=75.6.0
|
|
52
|
-
Requires-Dist: streamlit~=1.
|
|
52
|
+
Requires-Dist: streamlit~=1.45.0
|
|
53
53
|
Requires-Dist: uvicorn~=0.34.0
|
|
54
54
|
Requires-Dist: watchdog~=6.0.0
|
|
55
55
|
Provides-Extra: all-backends
|
|
@@ -101,18 +101,18 @@ Requires-Dist: uvicorn~=0.34.2; extra == 'uvicorn-backend'
|
|
|
101
101
|
Description-Content-Type: text/markdown
|
|
102
102
|
|
|
103
103
|
<div align="center">
|
|
104
|
-
<img alt="LangGraph Agent Toolkit Logo" src="https://
|
|
104
|
+
<img alt="LangGraph Agent Toolkit Logo" src="https://raw.githubusercontent.com/kryvokhyzha/langgraph-agent-toolkit/main/docs/media/logo.svg" width="300">
|
|
105
105
|
</div>
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
109
|
-
# 🧰
|
|
109
|
+
# 🧰 LangGraph Agent Toolkit
|
|
110
110
|
|
|
111
|
-
| |
|
|
112
|
-
| ---------- |
|
|
113
|
-
| CI/Testing | [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/test.yml) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/sphinx.yml) [](https://codecov.io/gh/kryvokhyzha/langgraph-agent-toolkit)
|
|
114
|
-
| Package | [](https://github.com/astral-sh/ruff) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/LICENSE)
|
|
111
|
+
| | |
|
|
112
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
113
|
+
| CI/Testing | [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/test.yml) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/sphinx.yml) [](https://codecov.io/gh/kryvokhyzha/langgraph-agent-toolkit) |
|
|
114
|
+
| Package | [](https://pypi.org/project/langgraph-agent-toolkit/) [](https://pypi.org/project/langgraph-agent-toolkit/) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/pyproject.toml) |
|
|
115
|
+
| Meta | [](https://github.com/astral-sh/ruff) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/LICENSE) |
|
|
116
116
|
|
|
117
117
|
<!-- [](https://langgraph-agent-toolkit.streamlit.app/) -->
|
|
118
118
|
|
|
@@ -123,7 +123,7 @@ LangGraph, FastAPI, and Streamlit. It provides a production-ready framework for
|
|
|
123
123
|
creating conversational AI agents with features like multi-provider LLM support,
|
|
124
124
|
streaming responses, observability, memory and prompt management.
|
|
125
125
|
|
|
126
|
-
### What is
|
|
126
|
+
### What is langGraph-agent-toolkit?
|
|
127
127
|
|
|
128
128
|
The langgraph-agent-toolkit is a full-featured framework for developing and
|
|
129
129
|
deploying AI agent services. Built on the foundation of:
|
|
@@ -213,7 +213,7 @@ For detailed installation instructions and available extras, see the
|
|
|
213
213
|
|
|
214
214
|
## 🏗️ Architecture
|
|
215
215
|
|
|
216
|
-
<img src="https://
|
|
216
|
+
<img src="https://raw.githubusercontent.com/kryvokhyzha/langgraph-agent-toolkit/main/docs/media/agent_architecture.png" width="800">
|
|
217
217
|
|
|
218
218
|
<a name="key-features"></a>
|
|
219
219
|
|
|
@@ -284,11 +284,13 @@ Docker setup, using the AgentClient, and local development, see the
|
|
|
284
284
|
|
|
285
285
|
## 📚 Documentation
|
|
286
286
|
|
|
287
|
-
Full documentation is available
|
|
287
|
+
Full documentation is available at
|
|
288
|
+
[GitHub repository](https://github.com/kryvokhyzha/langgraph-agent-toolkit/tree/main/docs/)
|
|
289
|
+
and includes:
|
|
288
290
|
|
|
289
|
-
- [Installation Guide](docs/installation.rst)
|
|
290
|
-
- [Environment Setup](docs/environment_setup.rst)
|
|
291
|
-
- [Usage Guide](docs/usage.rst)
|
|
291
|
+
- [Installation Guide](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/installation.rst)
|
|
292
|
+
- [Environment Setup](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/environment_setup.rst)
|
|
293
|
+
- [Usage Guide](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/usage.rst)
|
|
292
294
|
|
|
293
295
|
<a name="useful-resources"></a>
|
|
294
296
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img alt="LangGraph Agent Toolkit Logo" src="https://
|
|
2
|
+
<img alt="LangGraph Agent Toolkit Logo" src="https://raw.githubusercontent.com/kryvokhyzha/langgraph-agent-toolkit/main/docs/media/logo.svg" width="300">
|
|
3
3
|
</div>
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# 🧰
|
|
7
|
+
# 🧰 LangGraph Agent Toolkit
|
|
8
8
|
|
|
9
|
-
| |
|
|
10
|
-
| ---------- |
|
|
11
|
-
| CI/Testing | [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/test.yml) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/sphinx.yml) [](https://codecov.io/gh/kryvokhyzha/langgraph-agent-toolkit)
|
|
12
|
-
| Package | [](https://github.com/astral-sh/ruff) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/LICENSE)
|
|
9
|
+
| | |
|
|
10
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| CI/Testing | [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/test.yml) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/actions/workflows/sphinx.yml) [](https://codecov.io/gh/kryvokhyzha/langgraph-agent-toolkit) |
|
|
12
|
+
| Package | [](https://pypi.org/project/langgraph-agent-toolkit/) [](https://pypi.org/project/langgraph-agent-toolkit/) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/pyproject.toml) |
|
|
13
|
+
| Meta | [](https://github.com/astral-sh/ruff) [](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/LICENSE) |
|
|
14
14
|
|
|
15
15
|
<!-- [](https://langgraph-agent-toolkit.streamlit.app/) -->
|
|
16
16
|
|
|
@@ -21,7 +21,7 @@ LangGraph, FastAPI, and Streamlit. It provides a production-ready framework for
|
|
|
21
21
|
creating conversational AI agents with features like multi-provider LLM support,
|
|
22
22
|
streaming responses, observability, memory and prompt management.
|
|
23
23
|
|
|
24
|
-
### What is
|
|
24
|
+
### What is langGraph-agent-toolkit?
|
|
25
25
|
|
|
26
26
|
The langgraph-agent-toolkit is a full-featured framework for developing and
|
|
27
27
|
deploying AI agent services. Built on the foundation of:
|
|
@@ -111,7 +111,7 @@ For detailed installation instructions and available extras, see the
|
|
|
111
111
|
|
|
112
112
|
## 🏗️ Architecture
|
|
113
113
|
|
|
114
|
-
<img src="https://
|
|
114
|
+
<img src="https://raw.githubusercontent.com/kryvokhyzha/langgraph-agent-toolkit/main/docs/media/agent_architecture.png" width="800">
|
|
115
115
|
|
|
116
116
|
<a name="key-features"></a>
|
|
117
117
|
|
|
@@ -182,11 +182,13 @@ Docker setup, using the AgentClient, and local development, see the
|
|
|
182
182
|
|
|
183
183
|
## 📚 Documentation
|
|
184
184
|
|
|
185
|
-
Full documentation is available
|
|
185
|
+
Full documentation is available at
|
|
186
|
+
[GitHub repository](https://github.com/kryvokhyzha/langgraph-agent-toolkit/tree/main/docs/)
|
|
187
|
+
and includes:
|
|
186
188
|
|
|
187
|
-
- [Installation Guide](docs/installation.rst)
|
|
188
|
-
- [Environment Setup](docs/environment_setup.rst)
|
|
189
|
-
- [Usage Guide](docs/usage.rst)
|
|
189
|
+
- [Installation Guide](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/installation.rst)
|
|
190
|
+
- [Environment Setup](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/environment_setup.rst)
|
|
191
|
+
- [Usage Guide](https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/usage.rst)
|
|
190
192
|
|
|
191
193
|
<a name="useful-resources"></a>
|
|
192
194
|
|
|
@@ -6,10 +6,10 @@ ENV UV_PROJECT_ENVIRONMENT="/usr/local/"
|
|
|
6
6
|
ENV UV_COMPILE_BYTECODE=1
|
|
7
7
|
ENV PYTHONPATH="/app"
|
|
8
8
|
|
|
9
|
-
COPY pyproject.toml .
|
|
10
|
-
|
|
9
|
+
COPY pyproject.toml uv.lock ./
|
|
10
|
+
|
|
11
11
|
RUN pip install --no-cache-dir uv
|
|
12
|
-
RUN uv sync --frozen --only-group client \
|
|
12
|
+
RUN uv sync --frozen --no-install-project --only-group client \
|
|
13
13
|
&& rm -rf /root/.cache
|
|
14
14
|
|
|
15
15
|
COPY langgraph_agent_toolkit/ ./langgraph_agent_toolkit/
|
|
@@ -387,8 +387,7 @@ class AgentExecutor:
|
|
|
387
387
|
new_messages.append(AIMessage(content=interrupt.value))
|
|
388
388
|
continue
|
|
389
389
|
|
|
390
|
-
|
|
391
|
-
update_messages = updates.get("messages", [])
|
|
390
|
+
update_messages = (updates or {}).get("messages", [])
|
|
392
391
|
|
|
393
392
|
# Special case for supervisor agent
|
|
394
393
|
if node == "supervisor":
|
|
@@ -430,9 +429,9 @@ class AgentExecutor:
|
|
|
430
429
|
# More info at: https://langchain-ai.github.io/langgraph/cloud/how-tos/stream_messages/
|
|
431
430
|
processed_messages = []
|
|
432
431
|
current_message: dict[str, Any] = {}
|
|
433
|
-
for
|
|
434
|
-
if isinstance(
|
|
435
|
-
key, value =
|
|
432
|
+
for msg in new_messages:
|
|
433
|
+
if isinstance(msg, tuple):
|
|
434
|
+
key, value = msg
|
|
436
435
|
# Store parts in temporary dict
|
|
437
436
|
current_message[key] = value
|
|
438
437
|
else:
|
|
@@ -440,18 +439,18 @@ class AgentExecutor:
|
|
|
440
439
|
if current_message:
|
|
441
440
|
processed_messages.append(create_ai_message(current_message))
|
|
442
441
|
current_message = {}
|
|
443
|
-
processed_messages.append(
|
|
442
|
+
processed_messages.append(msg)
|
|
444
443
|
|
|
445
444
|
# Add any remaining message parts
|
|
446
445
|
if current_message:
|
|
447
446
|
processed_messages.append(create_ai_message(current_message))
|
|
448
447
|
|
|
449
|
-
for
|
|
448
|
+
for msg in new_messages:
|
|
450
449
|
try:
|
|
451
450
|
chat_message = langchain_to_chat_message(msg)
|
|
452
451
|
chat_message.run_id = str(run_id)
|
|
453
452
|
# Skip the input message if it's repeated by LangGraph
|
|
454
|
-
if chat_message.type == "human" and chat_message.content ==
|
|
453
|
+
if chat_message.type == "human" and chat_message.content == msg:
|
|
455
454
|
continue
|
|
456
455
|
yield chat_message
|
|
457
456
|
except Exception as e:
|
|
@@ -370,10 +370,14 @@ class AgentClient:
|
|
|
370
370
|
response.raise_for_status()
|
|
371
371
|
async for line in response.aiter_lines():
|
|
372
372
|
if line.strip():
|
|
373
|
-
|
|
374
|
-
|
|
373
|
+
try:
|
|
374
|
+
parsed = self._parse_stream_line(line)
|
|
375
|
+
if parsed is None:
|
|
376
|
+
break
|
|
377
|
+
yield parsed
|
|
378
|
+
except GeneratorExit:
|
|
379
|
+
# Handle GeneratorExit properly to close the stream gracefully
|
|
375
380
|
break
|
|
376
|
-
yield parsed
|
|
377
381
|
except httpx.HTTPError as e:
|
|
378
382
|
raise AgentClientError(f"Error: {e}")
|
|
379
383
|
|
|
@@ -59,8 +59,6 @@ class PostgresMemoryBackend(BaseMemoryBackend):
|
|
|
59
59
|
The object created by the factory_func
|
|
60
60
|
|
|
61
61
|
"""
|
|
62
|
-
conn_string = self.get_connection_string()
|
|
63
|
-
|
|
64
62
|
logger.info(
|
|
65
63
|
f"Creating PostgreSQL connection pool: min_size={settings.POSTGRES_MIN_SIZE}, "
|
|
66
64
|
f"max_size={settings.POSTGRES_POOL_SIZE}, max_idle={settings.POSTGRES_MAX_IDLE}"
|
|
@@ -68,7 +66,7 @@ class PostgresMemoryBackend(BaseMemoryBackend):
|
|
|
68
66
|
|
|
69
67
|
# Use AsyncConnectionPool as an async context manager
|
|
70
68
|
async with AsyncConnectionPool(
|
|
71
|
-
|
|
69
|
+
self.get_connection_string(),
|
|
72
70
|
min_size=settings.POSTGRES_MIN_SIZE,
|
|
73
71
|
max_size=settings.POSTGRES_POOL_SIZE,
|
|
74
72
|
max_idle=settings.POSTGRES_MAX_IDLE,
|
|
@@ -75,6 +75,19 @@ async def main() -> None:
|
|
|
75
75
|
if not thread_id:
|
|
76
76
|
thread_id = str(uuid.uuid4())
|
|
77
77
|
messages = []
|
|
78
|
+
# Add welcome message to messages when creating a new thread
|
|
79
|
+
welcome_message = None
|
|
80
|
+
match agent_client.agent:
|
|
81
|
+
case "chatbot":
|
|
82
|
+
welcome_content = "Hello! I'm a simple chatbot. Ask me anything!"
|
|
83
|
+
case "interrupt-agent":
|
|
84
|
+
welcome_content = (
|
|
85
|
+
"Hello! I'm an interrupt agent. Tell me your birthday and I will predict your personality!"
|
|
86
|
+
)
|
|
87
|
+
case _:
|
|
88
|
+
welcome_content = "Hello! I'm an AI agent. Ask me anything!"
|
|
89
|
+
welcome_message = ChatMessage(type="ai", content=welcome_content)
|
|
90
|
+
messages.append(welcome_message)
|
|
78
91
|
else:
|
|
79
92
|
try:
|
|
80
93
|
messages: List[ChatMessage] = agent_client.get_history(
|
|
@@ -155,17 +168,6 @@ async def main() -> None:
|
|
|
155
168
|
# Draw existing messages
|
|
156
169
|
messages: list[ChatMessage] = st.session_state.messages
|
|
157
170
|
|
|
158
|
-
if len(messages) == 0:
|
|
159
|
-
match agent_client.agent:
|
|
160
|
-
case "chatbot":
|
|
161
|
-
WELCOME = "Hello! I'm a simple chatbot. Ask me anything!"
|
|
162
|
-
case "interrupt-agent":
|
|
163
|
-
WELCOME = "Hello! I'm an interrupt agent. Tell me your birthday and I will predict your personality!"
|
|
164
|
-
case _:
|
|
165
|
-
WELCOME = "Hello! I'm an AI agent. Ask me anything!"
|
|
166
|
-
with st.chat_message("assistant"):
|
|
167
|
-
st.write(WELCOME)
|
|
168
|
-
|
|
169
171
|
# draw_messages() expects an async iterator over messages
|
|
170
172
|
async def amessage_iter() -> AsyncGenerator[ChatMessage, None]:
|
|
171
173
|
for m in messages:
|
|
@@ -198,7 +200,7 @@ async def main() -> None:
|
|
|
198
200
|
st.error(f"Error generating response: {e}")
|
|
199
201
|
st.stop()
|
|
200
202
|
|
|
201
|
-
# If messages have been generated, show feedback widget
|
|
203
|
+
# If messages have been generated, show feedback widget only for AI messages
|
|
202
204
|
if len(messages) > 0 and st.session_state.last_message:
|
|
203
205
|
with st.session_state.last_message:
|
|
204
206
|
await handle_feedback()
|
|
@@ -248,6 +250,7 @@ async def draw_messages(
|
|
|
248
250
|
streaming_content += msg
|
|
249
251
|
streaming_placeholder.write(streaming_content)
|
|
250
252
|
continue
|
|
253
|
+
|
|
251
254
|
if not isinstance(msg, ChatMessage):
|
|
252
255
|
st.error(f"Unexpected message type: {type(msg)}")
|
|
253
256
|
st.write(msg)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "langgraph-agent-toolkit"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.3"
|
|
8
8
|
description = "Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Roman Kryvokhyzha", email = "kriwohizha@gmail.com" }, { name = "Joshua Carroll", email = "carroll.joshk@gmail.com" }]
|
|
@@ -36,7 +36,7 @@ dependencies = [
|
|
|
36
36
|
"jiter ~= 0.9.0",
|
|
37
37
|
"langchain-core ~= 0.3.52",
|
|
38
38
|
"langchain-community ~= 0.3.21",
|
|
39
|
-
"langgraph ~= 0.
|
|
39
|
+
"langgraph ~= 0.4.1",
|
|
40
40
|
"langgraph-cli[inmem] ~= 0.2.3",
|
|
41
41
|
"langgraph-checkpoint-sqlite ~= 2.0.6",
|
|
42
42
|
"langgraph-checkpoint-postgres ~= 2.0.19",
|
|
@@ -51,9 +51,9 @@ dependencies = [
|
|
|
51
51
|
"pyowm ~= 3.3.0",
|
|
52
52
|
"python-dotenv ~= 1.1.0",
|
|
53
53
|
"setuptools >= 75.6.0",
|
|
54
|
-
"streamlit ~= 1.
|
|
54
|
+
"streamlit ~= 1.45.0",
|
|
55
55
|
"watchdog ~= 6.0.0",
|
|
56
|
-
"joblib
|
|
56
|
+
"joblib >= 1.4.2",
|
|
57
57
|
"uvicorn ~= 0.34.0",
|
|
58
58
|
"loguru ~= 0.7.3",
|
|
59
59
|
"fire ~= 0.7.0",
|
|
@@ -80,7 +80,7 @@ client = [
|
|
|
80
80
|
"httpx ~= 0.28.1",
|
|
81
81
|
"pydantic ~= 2.11.1",
|
|
82
82
|
"python-dotenv ~= 1.1.0",
|
|
83
|
-
"streamlit ~= 1.
|
|
83
|
+
"streamlit ~= 1.45.0",
|
|
84
84
|
"watchdog ~= 6.0.0",
|
|
85
85
|
]
|
|
86
86
|
|
{langgraph_agent_toolkit-0.4.1 → langgraph_agent_toolkit-0.4.3}/tests/app/test_streamlit_app.py
RENAMED
|
@@ -15,7 +15,14 @@ class MockUUID:
|
|
|
15
15
|
return "test session id"
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
# Add a fixture to patch st.feedback to avoid issues with the feedback component
|
|
19
|
+
@pytest.fixture
|
|
20
|
+
def patch_feedback():
|
|
21
|
+
with patch("streamlit.feedback", return_value=None) as mock_feedback:
|
|
22
|
+
yield mock_feedback
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_app_simple_non_streaming(mock_agent_client, patch_feedback):
|
|
19
26
|
"""Test the full app - happy path."""
|
|
20
27
|
at = AppTest.from_file("../../langgraph_agent_toolkit/streamlit_app.py").run()
|
|
21
28
|
|
|
@@ -32,15 +39,16 @@ def test_app_simple_non_streaming(mock_agent_client):
|
|
|
32
39
|
|
|
33
40
|
at.sidebar.toggle[0].set_value(False) # Use Streaming = False
|
|
34
41
|
at.chat_input[0].set_value(PROMPT).run()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
assert at.chat_message[
|
|
38
|
-
assert at.chat_message[1].
|
|
39
|
-
assert at.chat_message[
|
|
42
|
+
|
|
43
|
+
# Fix indices - welcome message is at index 0, user message at index 1, response at index 2
|
|
44
|
+
assert at.chat_message[1].avatar == "user"
|
|
45
|
+
assert at.chat_message[1].markdown[0].value == PROMPT
|
|
46
|
+
assert at.chat_message[2].avatar == "assistant"
|
|
47
|
+
assert at.chat_message[2].markdown[0].value == RESPONSE
|
|
40
48
|
assert not at.exception
|
|
41
49
|
|
|
42
50
|
|
|
43
|
-
def test_app_settings(mock_agent_client):
|
|
51
|
+
def test_app_settings(mock_agent_client, patch_feedback):
|
|
44
52
|
"""Test the full app - happy path."""
|
|
45
53
|
at = AppTest.from_file("../../langgraph_agent_toolkit/streamlit_app.py").run()
|
|
46
54
|
|
|
@@ -64,11 +72,11 @@ def test_app_settings(mock_agent_client):
|
|
|
64
72
|
at.sidebar.selectbox[0].set_value("chatbot")
|
|
65
73
|
at.chat_input[0].set_value(PROMPT).run()
|
|
66
74
|
|
|
67
|
-
# Basic checks
|
|
68
|
-
assert at.chat_message[
|
|
69
|
-
assert at.chat_message[
|
|
70
|
-
assert at.chat_message[
|
|
71
|
-
assert at.chat_message[
|
|
75
|
+
# Basic checks - adjusted for welcome message at index 0
|
|
76
|
+
assert at.chat_message[1].avatar == "user"
|
|
77
|
+
assert at.chat_message[1].markdown[0].value == PROMPT
|
|
78
|
+
assert at.chat_message[2].avatar == "assistant"
|
|
79
|
+
assert at.chat_message[2].markdown[0].value == RESPONSE
|
|
72
80
|
|
|
73
81
|
# Check the args match the settings
|
|
74
82
|
assert mock_agent_client.agent == "chatbot"
|
|
@@ -107,7 +115,7 @@ def test_app_thread_id_history(mock_handle_feedback, mock_draw_messages, mock_ag
|
|
|
107
115
|
|
|
108
116
|
|
|
109
117
|
@pytest.mark.asyncio
|
|
110
|
-
async def test_app_streaming(mock_agent_client):
|
|
118
|
+
async def test_app_streaming(mock_agent_client, patch_feedback):
|
|
111
119
|
"""Test the app with streaming enabled - including tool messages."""
|
|
112
120
|
at = AppTest.from_file("../../langgraph_agent_toolkit/streamlit_app.py").run()
|
|
113
121
|
|
|
@@ -131,11 +139,11 @@ async def test_app_streaming(mock_agent_client):
|
|
|
131
139
|
|
|
132
140
|
at.toggle[0].set_value(True) # Use Streaming = True
|
|
133
141
|
at.chat_input[0].set_value(PROMPT).run()
|
|
134
|
-
print(at)
|
|
135
142
|
|
|
136
|
-
|
|
137
|
-
assert at.chat_message[
|
|
138
|
-
|
|
143
|
+
# Fix indices - welcome message is at index 0, user message at index 1, response at index 2
|
|
144
|
+
assert at.chat_message[1].avatar == "user"
|
|
145
|
+
assert at.chat_message[1].markdown[0].value == PROMPT
|
|
146
|
+
response = at.chat_message[2]
|
|
139
147
|
tool_status = response.status[0]
|
|
140
148
|
assert response.avatar == "assistant"
|
|
141
149
|
assert tool_status.label == "Tool Call: calculator"
|
|
@@ -149,7 +157,7 @@ async def test_app_streaming(mock_agent_client):
|
|
|
149
157
|
|
|
150
158
|
|
|
151
159
|
@pytest.mark.asyncio
|
|
152
|
-
async def test_app_init_error(mock_agent_client):
|
|
160
|
+
async def test_app_init_error(mock_agent_client, patch_feedback):
|
|
153
161
|
"""Test the app with an error in the agent initialization."""
|
|
154
162
|
at = AppTest.from_file("../../langgraph_agent_toolkit/streamlit_app.py").run()
|
|
155
163
|
|
|
@@ -159,7 +167,6 @@ async def test_app_init_error(mock_agent_client):
|
|
|
159
167
|
|
|
160
168
|
at.toggle[0].set_value(True) # Use Streaming = True
|
|
161
169
|
at.chat_input[0].set_value(PROMPT).run()
|
|
162
|
-
print(at)
|
|
163
170
|
|
|
164
171
|
assert at.chat_message[0].avatar == "assistant"
|
|
165
172
|
assert at.chat_message[1].avatar == "user"
|
|
@@ -168,7 +175,7 @@ async def test_app_init_error(mock_agent_client):
|
|
|
168
175
|
assert not at.exception
|
|
169
176
|
|
|
170
177
|
|
|
171
|
-
def test_app_new_chat_btn(mock_agent_client):
|
|
178
|
+
def test_app_new_chat_btn(mock_agent_client, patch_feedback):
|
|
172
179
|
at = AppTest.from_file("../../langgraph_agent_toolkit/streamlit_app.py").run()
|
|
173
180
|
thread_id_a = at.session_state.thread_id
|
|
174
181
|
|