langgraph-agent-toolkit 0.1.0__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.1.0/.coveragerc +5 -0
- langgraph_agent_toolkit-0.1.0/.dockerignore +166 -0
- langgraph_agent_toolkit-0.1.0/.env.example +57 -0
- langgraph_agent_toolkit-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +48 -0
- langgraph_agent_toolkit-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- langgraph_agent_toolkit-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +47 -0
- langgraph_agent_toolkit-0.1.0/.github/RELEASE_TEMPLATE/release-template.md +38 -0
- langgraph_agent_toolkit-0.1.0/.github/codecov.yml +13 -0
- langgraph_agent_toolkit-0.1.0/.github/dependabot.yml +24 -0
- langgraph_agent_toolkit-0.1.0/.github/release/tag_from_pyproject.sh +9 -0
- langgraph_agent_toolkit-0.1.0/.github/workflows/deploy.yml +56 -0
- langgraph_agent_toolkit-0.1.0/.github/workflows/release.yml +38 -0
- langgraph_agent_toolkit-0.1.0/.github/workflows/test.yml +147 -0
- langgraph_agent_toolkit-0.1.0/.gitignore +195 -0
- langgraph_agent_toolkit-0.1.0/.pre-commit-config.yaml +55 -0
- langgraph_agent_toolkit-0.1.0/.project-root +2 -0
- langgraph_agent_toolkit-0.1.0/CHANGELOG.md +32 -0
- langgraph_agent_toolkit-0.1.0/CONTRIBUTING.md +157 -0
- langgraph_agent_toolkit-0.1.0/LICENSE +21 -0
- langgraph_agent_toolkit-0.1.0/Makefile +41 -0
- langgraph_agent_toolkit-0.1.0/PKG-INFO +424 -0
- langgraph_agent_toolkit-0.1.0/README.md +352 -0
- langgraph_agent_toolkit-0.1.0/configs/clickhouse/.clickhouse.env.example +3 -0
- langgraph_agent_toolkit-0.1.0/configs/litellm/.litellm.env.example +3 -0
- langgraph_agent_toolkit-0.1.0/configs/litellm/config.example.yaml +43 -0
- langgraph_agent_toolkit-0.1.0/configs/minio/.minio.env.example +2 -0
- langgraph_agent_toolkit-0.1.0/configs/postgres/.postgres.env.example +3 -0
- langgraph_agent_toolkit-0.1.0/configs/redis/.redis.env.example +1 -0
- langgraph_agent_toolkit-0.1.0/docker/app/Dockerfile +16 -0
- langgraph_agent_toolkit-0.1.0/docker/service/Dockerfile +15 -0
- langgraph_agent_toolkit-0.1.0/docker-compose.yaml +349 -0
- langgraph_agent_toolkit-0.1.0/docs/media/agent_architecture.excalidraw +1771 -0
- langgraph_agent_toolkit-0.1.0/docs/media/agent_architecture.png +0 -0
- langgraph_agent_toolkit-0.1.0/docs/media/agent_diagram.png +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph.json +8 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/__init__.py +7 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/agent.py +14 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/agent_executor.py +415 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +69 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +52 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +17 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +34 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +54 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +140 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/react/agent.py +67 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +39 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +44 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/components/creators/__init__.py +4 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +459 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/components/tools.py +13 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/agents/components/utils.py +42 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/client/__init__.py +4 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/client/client.py +344 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/__init__.py +5 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/base.py +33 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/factory.py +30 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/postgres.py +76 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/sqlite.py +21 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/memory/types.py +6 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/models/__init__.py +5 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/models/chat_openai.py +21 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/models/factory.py +118 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/models/fake.py +25 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/__init__.py +10 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/base.py +331 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/empty.py +67 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/factory.py +43 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/langfuse.py +118 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/langsmith.py +131 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/observability/types.py +34 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +528 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/core/settings.py +164 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/helper/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/helper/constants.py +10 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/helper/logging.py +111 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/helper/types.py +7 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/helper/utils.py +80 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/run_agent.py +68 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/run_client.py +55 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/run_service.py +19 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/schema/__init__.py +28 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/schema/models.py +25 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/schema/schema.py +210 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/schema/task_data.py +72 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/__init__.py +0 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/exception_handlers.py +46 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/factory.py +213 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/handler.py +122 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/middleware.py +18 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/routes.py +169 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/types.py +8 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/service/utils.py +136 -0
- langgraph_agent_toolkit-0.1.0/langgraph_agent_toolkit/streamlit_app.py +368 -0
- langgraph_agent_toolkit-0.1.0/pyproject.toml +178 -0
- langgraph_agent_toolkit-0.1.0/scripts/postgres-init/create_databases.sql +32 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/01-invoke-proxy.py +26 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/02-test-local-pm.py +49 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/03-test-langfuse-pm.py +47 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/04-test-langsmith-pm.py +47 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/05-test-prompt-types.py +109 -0
- langgraph_agent_toolkit-0.1.0/scripts/python/06-test-custom-chat-prompt-template.py +295 -0
- langgraph_agent_toolkit-0.1.0/tests/agents/test_agent_executor.py +389 -0
- langgraph_agent_toolkit-0.1.0/tests/app/conftest.py +25 -0
- langgraph_agent_toolkit-0.1.0/tests/app/test_streamlit_app.py +161 -0
- langgraph_agent_toolkit-0.1.0/tests/client/conftest.py +11 -0
- langgraph_agent_toolkit-0.1.0/tests/client/test_client.py +331 -0
- langgraph_agent_toolkit-0.1.0/tests/conftest.py +42 -0
- langgraph_agent_toolkit-0.1.0/tests/core/test_llm.py +56 -0
- langgraph_agent_toolkit-0.1.0/tests/core/test_memory.py +166 -0
- langgraph_agent_toolkit-0.1.0/tests/core/test_observability.py +692 -0
- langgraph_agent_toolkit-0.1.0/tests/core/test_prompts.py +675 -0
- langgraph_agent_toolkit-0.1.0/tests/core/test_settings.py +235 -0
- langgraph_agent_toolkit-0.1.0/tests/integration/test_docker_e2e.py +43 -0
- langgraph_agent_toolkit-0.1.0/tests/service/conftest.py +160 -0
- langgraph_agent_toolkit-0.1.0/tests/service/test_auth.py +80 -0
- langgraph_agent_toolkit-0.1.0/tests/service/test_factory.py +252 -0
- langgraph_agent_toolkit-0.1.0/tests/service/test_service.py +623 -0
- langgraph_agent_toolkit-0.1.0/tests/service/test_service_e2e.py +170 -0
- langgraph_agent_toolkit-0.1.0/tests/service/test_utils.py +44 -0
- langgraph_agent_toolkit-0.1.0/uv.lock +3447 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# VSCode
|
|
2
|
+
.vscode
|
|
3
|
+
.DS_Store
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
*.pyc
|
|
10
|
+
*.pyo
|
|
11
|
+
*.pyd
|
|
12
|
+
|
|
13
|
+
# C extensions
|
|
14
|
+
*.so
|
|
15
|
+
|
|
16
|
+
# Distribution / packaging
|
|
17
|
+
.Python
|
|
18
|
+
build/
|
|
19
|
+
develop-eggs/
|
|
20
|
+
dist/
|
|
21
|
+
downloads/
|
|
22
|
+
eggs/
|
|
23
|
+
.eggs/
|
|
24
|
+
lib/
|
|
25
|
+
lib64/
|
|
26
|
+
parts/
|
|
27
|
+
sdist/
|
|
28
|
+
var/
|
|
29
|
+
wheels/
|
|
30
|
+
share/python-wheels/
|
|
31
|
+
*.egg-info/
|
|
32
|
+
.installed.cfg
|
|
33
|
+
*.egg
|
|
34
|
+
MANIFEST
|
|
35
|
+
|
|
36
|
+
# PyInstaller
|
|
37
|
+
# Usually these files are written by a python script from a template
|
|
38
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
39
|
+
*.manifest
|
|
40
|
+
*.spec
|
|
41
|
+
|
|
42
|
+
# Installer logs
|
|
43
|
+
pip-log.txt
|
|
44
|
+
pip-delete-this-directory.txt
|
|
45
|
+
|
|
46
|
+
# Unit test / coverage reports
|
|
47
|
+
htmlcov/
|
|
48
|
+
.tox/
|
|
49
|
+
.nox/
|
|
50
|
+
.coverage
|
|
51
|
+
.coverage.*
|
|
52
|
+
.cache
|
|
53
|
+
nosetests.xml
|
|
54
|
+
coverage.xml
|
|
55
|
+
*.cover
|
|
56
|
+
*.py,cover
|
|
57
|
+
.hypothesis/
|
|
58
|
+
.pytest_cache/
|
|
59
|
+
cover/
|
|
60
|
+
|
|
61
|
+
# Translations
|
|
62
|
+
*.mo
|
|
63
|
+
*.pot
|
|
64
|
+
|
|
65
|
+
# Django stuff:
|
|
66
|
+
*.log
|
|
67
|
+
local_settings.py
|
|
68
|
+
db.sqlite3
|
|
69
|
+
db.sqlite3-journal
|
|
70
|
+
|
|
71
|
+
# Flask stuff:
|
|
72
|
+
instance/
|
|
73
|
+
.webassets-cache
|
|
74
|
+
|
|
75
|
+
# Scrapy stuff:
|
|
76
|
+
.scrapy
|
|
77
|
+
|
|
78
|
+
# Sphinx documentation
|
|
79
|
+
docs/_build/
|
|
80
|
+
docs/build/
|
|
81
|
+
docs/source/generated
|
|
82
|
+
|
|
83
|
+
# PyBuilder
|
|
84
|
+
.pybuilder/
|
|
85
|
+
target/
|
|
86
|
+
|
|
87
|
+
# Jupyter Notebook
|
|
88
|
+
.ipynb_checkpoints
|
|
89
|
+
|
|
90
|
+
# IPython
|
|
91
|
+
profile_default/
|
|
92
|
+
ipython_config.py
|
|
93
|
+
|
|
94
|
+
# pdm
|
|
95
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
96
|
+
#pdm.lock
|
|
97
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
98
|
+
# in version control.
|
|
99
|
+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
|
100
|
+
.pdm.toml
|
|
101
|
+
.pdm-python
|
|
102
|
+
.pdm-build/
|
|
103
|
+
|
|
104
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
105
|
+
__pypackages__/
|
|
106
|
+
|
|
107
|
+
# Celery stuff
|
|
108
|
+
celerybeat-schedule
|
|
109
|
+
celerybeat.pid
|
|
110
|
+
|
|
111
|
+
# SageMath parsed files
|
|
112
|
+
*.sage.py
|
|
113
|
+
|
|
114
|
+
# Environments
|
|
115
|
+
.env
|
|
116
|
+
.python-version
|
|
117
|
+
.venv
|
|
118
|
+
env/
|
|
119
|
+
venv/
|
|
120
|
+
ENV/
|
|
121
|
+
env.bak/
|
|
122
|
+
venv.bak/
|
|
123
|
+
|
|
124
|
+
# Spyder project settings
|
|
125
|
+
.spyderproject
|
|
126
|
+
.spyproject
|
|
127
|
+
|
|
128
|
+
# Rope project settings
|
|
129
|
+
.ropeproject
|
|
130
|
+
|
|
131
|
+
# mkdocs documentation
|
|
132
|
+
/site
|
|
133
|
+
|
|
134
|
+
# mypy
|
|
135
|
+
.mypy_cache/
|
|
136
|
+
.dmypy.json
|
|
137
|
+
dmypy.json
|
|
138
|
+
|
|
139
|
+
# ruff
|
|
140
|
+
.ruff_cache/
|
|
141
|
+
|
|
142
|
+
# Pyre type checker
|
|
143
|
+
.pyre/
|
|
144
|
+
|
|
145
|
+
# pytype static type analyzer
|
|
146
|
+
.pytype/
|
|
147
|
+
|
|
148
|
+
# Cython debug symbols
|
|
149
|
+
cython_debug/
|
|
150
|
+
|
|
151
|
+
# PyCharm
|
|
152
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
153
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
154
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
155
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
156
|
+
.idea
|
|
157
|
+
|
|
158
|
+
# other
|
|
159
|
+
.git
|
|
160
|
+
.gitignore
|
|
161
|
+
env
|
|
162
|
+
venv
|
|
163
|
+
*.db
|
|
164
|
+
|
|
165
|
+
# langgraph
|
|
166
|
+
.langgraph_api
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Web server configuration
|
|
2
|
+
HOST=0.0.0.0
|
|
3
|
+
PORT=8080
|
|
4
|
+
|
|
5
|
+
# Application mode. If the value is "dev", it will enable uvicorn reload
|
|
6
|
+
ENV_MODE=development
|
|
7
|
+
|
|
8
|
+
# Authentication secret, HTTP bearer token header is required if set
|
|
9
|
+
AUTH_SECRET=
|
|
10
|
+
|
|
11
|
+
# Observability backend
|
|
12
|
+
# OBSERVABILITY_BACKEND=langfuse
|
|
13
|
+
|
|
14
|
+
# Langfuse configuration
|
|
15
|
+
# LANGFUSE_SECRET_KEY=
|
|
16
|
+
# LANGFUSE_PUBLIC_KEY=
|
|
17
|
+
# LANGFUSE_HOST=http://langfuse-web:3000
|
|
18
|
+
|
|
19
|
+
# Langsmith configuration
|
|
20
|
+
# LANGSMITH_TRACING=true
|
|
21
|
+
# LANGSMITH_API_KEY=
|
|
22
|
+
# LANGSMITH_PROJECT=default
|
|
23
|
+
# LANGSMITH_ENDPOINT=https://api.smith.langchain.com
|
|
24
|
+
|
|
25
|
+
# Database type.
|
|
26
|
+
# If the value is "postgres", then it will require Postgresql related environment variables.
|
|
27
|
+
# If the value is "sqlite", then you can configure optional file path via SQLITE_DB_PATH
|
|
28
|
+
MEMORY_BACKEND=postgres
|
|
29
|
+
|
|
30
|
+
# If DATABASE_TYPE=sqlite (Optional)
|
|
31
|
+
SQLITE_DB_PATH=
|
|
32
|
+
|
|
33
|
+
# If DATABASE_TYPE=postgres
|
|
34
|
+
POSTGRES_USER=
|
|
35
|
+
POSTGRES_PASSWORD=
|
|
36
|
+
POSTGRES_HOST=
|
|
37
|
+
POSTGRES_PORT=
|
|
38
|
+
POSTGRES_DB=agents
|
|
39
|
+
# Connection pool settings (optional)
|
|
40
|
+
POSTGRES_POOL_SIZE=10
|
|
41
|
+
POSTGRES_MIN_SIZE=3
|
|
42
|
+
POSTGRES_MAX_IDLE=5
|
|
43
|
+
|
|
44
|
+
# Agent URL: used in Streamlit app - if not set, defaults to http://{HOST}:{PORT}
|
|
45
|
+
# AGENT_URL=http://0.0.0.0:8080
|
|
46
|
+
|
|
47
|
+
# Use a fake model for testing
|
|
48
|
+
USE_FAKE_MODEL=false
|
|
49
|
+
|
|
50
|
+
# Set a default model
|
|
51
|
+
DEFAULT_MODEL="openai-compatible"
|
|
52
|
+
|
|
53
|
+
# If MODEL is set to "openai-compatible", set the following
|
|
54
|
+
# This is just a flexible solution. If you need multiple model options, you still need to add it to models.py
|
|
55
|
+
COMPATIBLE_MODEL=
|
|
56
|
+
COMPATIBLE_API_KEY=
|
|
57
|
+
COMPATIBLE_BASE_URL=http://litellm:4000/v1
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ""
|
|
5
|
+
labels: "kind/bug, priority/p2"
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Issue Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of what the bug is.
|
|
12
|
+
|
|
13
|
+
### Expected Behavior
|
|
14
|
+
|
|
15
|
+
A clear and concise description of what you expected to happen.
|
|
16
|
+
|
|
17
|
+
### Steps to reproduce
|
|
18
|
+
|
|
19
|
+
Steps to reproduce the behavior:
|
|
20
|
+
|
|
21
|
+
- Step 1
|
|
22
|
+
- Step 2
|
|
23
|
+
|
|
24
|
+
### Reproducible Example
|
|
25
|
+
|
|
26
|
+
Provide a reproducible example.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
# Your code here
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Specifications
|
|
33
|
+
|
|
34
|
+
- Platform:
|
|
35
|
+
- Python Version:
|
|
36
|
+
- Package Version:
|
|
37
|
+
- `package1_name==x.y.z`
|
|
38
|
+
- `package2_name==x.y.z`
|
|
39
|
+
|
|
40
|
+
**Dockerfile (Optional):**
|
|
41
|
+
|
|
42
|
+
```dockerfile
|
|
43
|
+
# Your Dockerfile here
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Possible Solution (Optional)
|
|
47
|
+
|
|
48
|
+
A clear and concise description of the solution you've considered.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ""
|
|
5
|
+
labels: "kind/feature"
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Is your feature request related to a problem? Please describe.** A clear and
|
|
10
|
+
concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
11
|
+
|
|
12
|
+
**Describe the solution you'd like** A clear and concise description of what you
|
|
13
|
+
want to happen.
|
|
14
|
+
|
|
15
|
+
**Describe alternatives you've considered** A clear and concise description of
|
|
16
|
+
any alternative solutions or features you've considered.
|
|
17
|
+
|
|
18
|
+
**Additional context** Add any other context or screenshots about the feature
|
|
19
|
+
request here.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- Provide a concise summary "Why are the changes needed"?
|
|
4
|
+
Include any relevant links, such as Jira tickets, Slack discussions,
|
|
5
|
+
or design documents. -->
|
|
6
|
+
|
|
7
|
+
## Changes Made
|
|
8
|
+
|
|
9
|
+
<!-- Describe the specific changes that have been made in this pull
|
|
10
|
+
request. Provide details on the approach taken to address the problem
|
|
11
|
+
and any notable implementation details. -->
|
|
12
|
+
|
|
13
|
+
## Checklist
|
|
14
|
+
|
|
15
|
+
- [ ] I have added comments to code in hard-to-understand areas
|
|
16
|
+
- [ ] I have made corresponding changes to the documentation
|
|
17
|
+
- [ ] My changes generate no new warnings
|
|
18
|
+
- [ ] I have added tests that prove my fix is effective or that my feature works
|
|
19
|
+
- [ ] Any dependent changes have been merged and published in downstream modules
|
|
20
|
+
|
|
21
|
+
<!-- Optional Sections -->
|
|
22
|
+
<details>
|
|
23
|
+
<summary><strong>Expand for optional sections</strong></summary>
|
|
24
|
+
|
|
25
|
+
## Screenshots
|
|
26
|
+
|
|
27
|
+
<!-- If the changes are visual, including screenshots or GIFs can
|
|
28
|
+
help reviewers understand them more easily. -->
|
|
29
|
+
|
|
30
|
+
## Related issues
|
|
31
|
+
|
|
32
|
+
<!-- A link to any related issues or bugs that the pull request
|
|
33
|
+
addresses, connecting the code's context with the problem it
|
|
34
|
+
solves. -->
|
|
35
|
+
|
|
36
|
+
## Testing instructions
|
|
37
|
+
|
|
38
|
+
<!-- Instructions on how to test the changes made in the pull
|
|
39
|
+
request, helping reviewers validate the code. -->
|
|
40
|
+
|
|
41
|
+
## Special notes for your reviewer
|
|
42
|
+
|
|
43
|
+
<!-- If there are any specific instructions or considerations you
|
|
44
|
+
want to highlight for the reviewer, include them in this section. -->
|
|
45
|
+
|
|
46
|
+
</details>
|
|
47
|
+
<!-- End of Optional Sections -->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Release Notes Template
|
|
2
|
+
|
|
3
|
+
Look through the github diff between the previous release to see what's changed.
|
|
4
|
+
The commit titles should give an outline of what's happened.
|
|
5
|
+
|
|
6
|
+
### Upgrade Steps
|
|
7
|
+
|
|
8
|
+
- List out, as concretely as possible, any steps users have to take when they
|
|
9
|
+
upgrade beyond just dumping the dependency.
|
|
10
|
+
- Write pseudocode that highlights what code should change and how.
|
|
11
|
+
- Call out if users are recommended to upgrade because of known problems with
|
|
12
|
+
older releases.
|
|
13
|
+
- Preferably, there's nothing here.
|
|
14
|
+
|
|
15
|
+
### Breaking Changes
|
|
16
|
+
|
|
17
|
+
- A complete list of breaking changes (preferably there are none, unless this is
|
|
18
|
+
a major version).
|
|
19
|
+
|
|
20
|
+
### New Features
|
|
21
|
+
|
|
22
|
+
- Describe the new feature and when/why to use it. Add some pictures! Call out
|
|
23
|
+
any caveats/warnings? Is it a beta feature?
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- Call out any existing feature/functionality that now works as intended or
|
|
28
|
+
expected.
|
|
29
|
+
|
|
30
|
+
### Improvements
|
|
31
|
+
|
|
32
|
+
- Improvements/enhancements to a workflow, performance, logging, error
|
|
33
|
+
messaging, or user experience
|
|
34
|
+
|
|
35
|
+
### Other Changes
|
|
36
|
+
|
|
37
|
+
- Other miscellaneous changes that don't fit into any of the above categories.
|
|
38
|
+
Try to leave this empty - ideally, all changes fit into the categories above
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
coverage:
|
|
2
|
+
status:
|
|
3
|
+
# Fail PRs that reduce total coverage by more than 2%
|
|
4
|
+
project:
|
|
5
|
+
default:
|
|
6
|
+
target: auto
|
|
7
|
+
threshold: 2%
|
|
8
|
+
# Treat patch coverage as informational only
|
|
9
|
+
patch:
|
|
10
|
+
default:
|
|
11
|
+
informational: true
|
|
12
|
+
comment:
|
|
13
|
+
hide_project_coverage: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
updates:
|
|
4
|
+
- package-ecosystem: "github-actions"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
labels:
|
|
10
|
+
- "dependencies"
|
|
11
|
+
- "github-actions"
|
|
12
|
+
|
|
13
|
+
- package-ecosystem: "pip"
|
|
14
|
+
directory: "/"
|
|
15
|
+
schedule:
|
|
16
|
+
interval: "weekly"
|
|
17
|
+
groups:
|
|
18
|
+
python-packages:
|
|
19
|
+
patterns:
|
|
20
|
+
- "*"
|
|
21
|
+
open-pull-requests-limit: 10
|
|
22
|
+
labels:
|
|
23
|
+
- "dependencies"
|
|
24
|
+
- "python"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Deploy to Azure
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
# Don't try to run deployment in forks and repo copies
|
|
12
|
+
if: github.repository == 'JoshuaC215/agent-service-toolkit'
|
|
13
|
+
uses: ./.github/workflows/test.yml
|
|
14
|
+
|
|
15
|
+
build:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
needs: [test]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Docker Buildx
|
|
23
|
+
uses: docker/setup-buildx-action@v3
|
|
24
|
+
|
|
25
|
+
- name: Log in to container registry
|
|
26
|
+
uses: docker/login-action@v3
|
|
27
|
+
with:
|
|
28
|
+
registry: https://index.docker.io/v1/
|
|
29
|
+
username: ${{ secrets.DOCKER_USERNAME }}
|
|
30
|
+
password: ${{ secrets.DOCKER_TOKEN }}
|
|
31
|
+
|
|
32
|
+
- name: Build and push agent-service container image to registry
|
|
33
|
+
uses: docker/build-push-action@v6
|
|
34
|
+
with:
|
|
35
|
+
context: .
|
|
36
|
+
push: true
|
|
37
|
+
tags:
|
|
38
|
+
index.docker.io/${{ secrets.DOCKER_USERNAME
|
|
39
|
+
}}/agent-service-toolkit.service:${{ github.sha }}
|
|
40
|
+
file: docker/service/Dockerfile
|
|
41
|
+
|
|
42
|
+
deploy:
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: build
|
|
45
|
+
|
|
46
|
+
steps:
|
|
47
|
+
- name: Deploy to Azure Web App
|
|
48
|
+
id: deploy-to-webapp
|
|
49
|
+
uses: azure/webapps-deploy@v3
|
|
50
|
+
with:
|
|
51
|
+
app-name: "agent-service"
|
|
52
|
+
slot-name: "production"
|
|
53
|
+
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
|
|
54
|
+
images:
|
|
55
|
+
"index.docker.io/${{ secrets.DOCKER_USERNAME
|
|
56
|
+
}}/agent-service-toolkit.service:${{ github.sha }}"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [created]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
deploy:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v4
|
|
12
|
+
with:
|
|
13
|
+
fetch-depth: 0
|
|
14
|
+
|
|
15
|
+
- name: Install uv
|
|
16
|
+
uses: astral-sh/setup-uv@v5
|
|
17
|
+
with:
|
|
18
|
+
version: "0.6.12"
|
|
19
|
+
enable-cache: true
|
|
20
|
+
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version-file: "pyproject.toml"
|
|
25
|
+
|
|
26
|
+
- name: Install build dependencies
|
|
27
|
+
run: |
|
|
28
|
+
uv sync --all-extras --dev
|
|
29
|
+
uv pip install build twine
|
|
30
|
+
|
|
31
|
+
- name: Build and publish
|
|
32
|
+
env:
|
|
33
|
+
TWINE_USERNAME: __token__
|
|
34
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
35
|
+
run: |
|
|
36
|
+
uv run python -m build
|
|
37
|
+
uv run twine check dist/*
|
|
38
|
+
uv run twine upload dist/*
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
name: Build and test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
workflow_call:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test-python:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python-version }}
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v5
|
|
28
|
+
with:
|
|
29
|
+
version: "0.6.12"
|
|
30
|
+
- name: Install dependencies with uv
|
|
31
|
+
run: |
|
|
32
|
+
uv sync --all-extras --frozen
|
|
33
|
+
env:
|
|
34
|
+
UV_SYSTEM_PYTHON: 1
|
|
35
|
+
- name: Lint and format with ruff
|
|
36
|
+
run: |
|
|
37
|
+
uv run ruff --config pyproject.toml format --check
|
|
38
|
+
uv run ruff --config pyproject.toml check --output-format github
|
|
39
|
+
|
|
40
|
+
- name: Test with pytest
|
|
41
|
+
run: |
|
|
42
|
+
uv run pytest --cov=langgraph_agent_toolkit/ --cov-report=xml
|
|
43
|
+
env:
|
|
44
|
+
COMPATIBLE_MODEL: ${{ secrets.COMPATIBLE_MODEL }}
|
|
45
|
+
COMPATIBLE_API_KEY: ${{ secrets.COMPATIBLE_API_KEY }}
|
|
46
|
+
COMPATIBLE_BASE_URL: ${{ secrets.COMPATIBLE_BASE_URL }}
|
|
47
|
+
|
|
48
|
+
- name: Upload coverage reports to Codecov
|
|
49
|
+
uses: codecov/codecov-action@v5
|
|
50
|
+
with:
|
|
51
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
52
|
+
fail_ci_if_error: false
|
|
53
|
+
|
|
54
|
+
test-docker:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
|
|
57
|
+
services:
|
|
58
|
+
dind:
|
|
59
|
+
image: docker:dind
|
|
60
|
+
ports:
|
|
61
|
+
- 2375:2375
|
|
62
|
+
options: >-
|
|
63
|
+
--privileged --health-cmd "docker info" --health-interval 10s
|
|
64
|
+
--health-timeout 5s --health-retries 5
|
|
65
|
+
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/checkout@v4
|
|
68
|
+
|
|
69
|
+
- name: Set up Docker Buildx
|
|
70
|
+
uses: docker/setup-buildx-action@v3
|
|
71
|
+
with:
|
|
72
|
+
driver-opts: network=host
|
|
73
|
+
|
|
74
|
+
- name: Build service image
|
|
75
|
+
uses: docker/build-push-action@v6
|
|
76
|
+
with:
|
|
77
|
+
context: .
|
|
78
|
+
push: false
|
|
79
|
+
load: true
|
|
80
|
+
tags: agent-service-toolkit.service:${{ github.sha }}
|
|
81
|
+
file: docker/service/Dockerfile
|
|
82
|
+
|
|
83
|
+
- name: Build app image
|
|
84
|
+
uses: docker/build-push-action@v6
|
|
85
|
+
with:
|
|
86
|
+
context: .
|
|
87
|
+
push: false
|
|
88
|
+
load: true
|
|
89
|
+
tags: agent-service-toolkit.app:${{ github.sha }}
|
|
90
|
+
file: docker/app/Dockerfile
|
|
91
|
+
|
|
92
|
+
- name: Start service container
|
|
93
|
+
run:
|
|
94
|
+
docker run -d --name service-container --network host -e
|
|
95
|
+
USE_FAKE_MODEL=true -e PORT=80 agent-service-toolkit.service:${{
|
|
96
|
+
github.sha }}
|
|
97
|
+
|
|
98
|
+
- name: Confirm service starts correctly
|
|
99
|
+
run: |
|
|
100
|
+
timeout 30 bash -c '
|
|
101
|
+
while ! curl -s http://0.0.0.0/health; do
|
|
102
|
+
echo "Waiting for service to be ready..."
|
|
103
|
+
docker logs service-container
|
|
104
|
+
sleep 2
|
|
105
|
+
done
|
|
106
|
+
'
|
|
107
|
+
|
|
108
|
+
- name: Run app container
|
|
109
|
+
run:
|
|
110
|
+
docker run -d --name app-container --network host -e
|
|
111
|
+
AGENT_URL=http://0.0.0.0 agent-service-toolkit.app:${{ github.sha }}
|
|
112
|
+
|
|
113
|
+
- name: Confirm app starts correctly
|
|
114
|
+
run: |
|
|
115
|
+
timeout 30 bash -c '
|
|
116
|
+
while ! curl -s http://localhost:8501/healthz; do
|
|
117
|
+
echo "Waiting for app to be ready..."
|
|
118
|
+
docker logs app-container
|
|
119
|
+
sleep 2
|
|
120
|
+
done
|
|
121
|
+
'
|
|
122
|
+
|
|
123
|
+
- name: Set up Python
|
|
124
|
+
uses: actions/setup-python@v5
|
|
125
|
+
with:
|
|
126
|
+
python-version-file: "pyproject.toml"
|
|
127
|
+
- name: Install uv
|
|
128
|
+
uses: astral-sh/setup-uv@v5
|
|
129
|
+
with:
|
|
130
|
+
version: "0.6.12"
|
|
131
|
+
- name: Install ONLY CLIENT dependencies with uv
|
|
132
|
+
run: |
|
|
133
|
+
uv sync --frozen --only-group client --only-group dev
|
|
134
|
+
env:
|
|
135
|
+
UV_SYSTEM_PYTHON: 1
|
|
136
|
+
- name: Run integration tests
|
|
137
|
+
run: |
|
|
138
|
+
uv run pytest tests/integration -v --run-docker
|
|
139
|
+
env:
|
|
140
|
+
AGENT_URL: http://0.0.0.0
|
|
141
|
+
USE_FAKE_MODEL: true
|
|
142
|
+
|
|
143
|
+
- name: Clean up containers
|
|
144
|
+
if: always()
|
|
145
|
+
run: |
|
|
146
|
+
docker stop service-container app-container || true
|
|
147
|
+
docker rm service-container app-container || true
|