Skip to content

Commit 637c0fc

Browse files
committed
feat: ACP agents example
Signed-off-by: Kai Wedekind <[email protected]>
1 parent a4cc3c7 commit 637c0fc

File tree

148 files changed

+38443
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+38443
-0
lines changed

acp-agents/.env.example

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Ollama
2+
3+
# INFERENCE_BASE_URL=http://<MACHINE-IP>:11434/v1
4+
# INFERENCE_API_KEY=YOUR-API-KEY
5+
# INFERENCE_MODEL_NAME=openai/qwen3:8b
6+
7+
## watsonx.ai
8+
9+
INFERENCE_BASE_URL=https://us-south.ml.cloud.ibm.com
10+
INFERENCE_API_KEY=
11+
INFERENCE_MODEL_NAME=watsonx/meta-llama/llama-3-3-70b-instruct
12+
INFERENCE_PROJECT_ID=

acp-agents/.gitignore

Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
# This is to avoid Opencommit hook from getting pushed
2+
prepare-commit-msg
3+
# Logs
4+
logs
5+
*.log
6+
npm-debug.log*
7+
yarn-debug.log*
8+
yarn-error.log*
9+
lerna-debug.log*
10+
qdrant_storage
11+
12+
.dspy_cache
13+
# Mac
14+
.DS_Store
15+
16+
# VSCode
17+
.vscode/settings.json
18+
.chroma
19+
.ruff_cache
20+
21+
# PyCharm
22+
.idea/
23+
24+
# Diagnostic reports (https://nodejs.org/api/report.html)
25+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
26+
27+
# Runtime data
28+
pids
29+
*.pid
30+
*.seed
31+
*.pid.lock
32+
33+
# Directory for instrumented libs generated by jscoverage/JSCover
34+
lib-cov
35+
36+
# Coverage directory used by tools like istanbul
37+
coverage
38+
*.lcov
39+
40+
# nyc test coverage
41+
.nyc_output
42+
43+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
44+
.grunt
45+
46+
# Bower dependency directory (https://bower.io/)
47+
bower_components
48+
49+
# node-waf configuration
50+
.lock-wscript
51+
52+
# Compiled binary addons (https://nodejs.org/api/addons.html)
53+
build/Release
54+
55+
# Dependency directories
56+
node_modules/
57+
jspm_packages/
58+
59+
# TypeScript v1 declaration files
60+
typings/
61+
62+
# TypeScript cache
63+
*.tsbuildinfo
64+
65+
# Optional npm cache directory
66+
.npm
67+
68+
# Optional eslint cache
69+
.eslintcache
70+
71+
# Microbundle cache
72+
.rpt2_cache/
73+
.rts2_cache_cjs/
74+
.rts2_cache_es/
75+
.rts2_cache_umd/
76+
77+
# Optional REPL history
78+
.node_repl_history
79+
80+
# Output of 'npm pack'
81+
*.tgz
82+
83+
# Yarn Integrity file
84+
.yarn-integrity
85+
86+
# dotenv environment variables file
87+
.env
88+
.env.test
89+
90+
# parcel-bundler cache (https://parceljs.org/)
91+
.cache
92+
93+
# Next.js build output
94+
.next
95+
96+
# Nuxt.js build / generate output
97+
.nuxt
98+
dist
99+
100+
# Gatsby files
101+
.cache/
102+
# Comment in the public line in if your project uses Gatsby and *not* Next.js
103+
# https://nextjs.org/blog/next-9-1#public-directory-support
104+
# public
105+
106+
# vuepress build output
107+
.vuepress/dist
108+
109+
# Serverless directories
110+
.serverless/
111+
112+
# FuseBox cache
113+
.fusebox/
114+
115+
# DynamoDB Local files
116+
.dynamodb/
117+
118+
# TernJS port file
119+
.tern-port
120+
# Byte-compiled / optimized / DLL files
121+
__pycache__/
122+
*.py[cod]
123+
*$py.class
124+
125+
# C extensions
126+
*.so
127+
128+
# Distribution / packaging
129+
.Python
130+
build/
131+
develop-eggs/
132+
dist/
133+
downloads/
134+
eggs/
135+
.eggs/
136+
lib/
137+
lib64/
138+
parts/
139+
sdist/
140+
var/
141+
wheels/
142+
pip-wheel-metadata/
143+
share/python-wheels/
144+
*.egg-info/
145+
.installed.cfg
146+
*.egg
147+
MANIFEST
148+
149+
# PyInstaller
150+
# Usually these files are written by a python script from a template
151+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
152+
*.manifest
153+
*.spec
154+
155+
# Installer logs
156+
pip-log.txt
157+
pip-delete-this-directory.txt
158+
159+
# Unit test / coverage reports
160+
htmlcov/
161+
.tox/
162+
.nox/
163+
.coverage
164+
.coverage.*
165+
.cache
166+
nosetests.xml
167+
coverage.xml
168+
*.cover
169+
*.py,cover
170+
.hypothesis/
171+
.pytest_cache/
172+
.testmondata*
173+
174+
# Translations
175+
*.mo
176+
*.pot
177+
178+
# Django stuff:
179+
*.log
180+
local_settings.py
181+
db.sqlite3
182+
db.sqlite3-journal
183+
*.db-shm
184+
*.db-wal
185+
186+
# Flask stuff:
187+
instance/
188+
.webassets-cache
189+
190+
# Scrapy stuff:
191+
.scrapy
192+
193+
# Sphinx documentation
194+
docs/_build/
195+
196+
# PyBuilder
197+
target/
198+
199+
# Jupyter Notebook
200+
.ipynb_checkpoints
201+
202+
# IPython
203+
profile_default/
204+
ipython_config.py
205+
206+
# pyenv
207+
.python-version
208+
209+
# pipenv
210+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
211+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
212+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
213+
# install all needed dependencies.
214+
#Pipfile.lock
215+
216+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
217+
__pypackages__/
218+
219+
# Celery stuff
220+
celerybeat-schedule
221+
celerybeat.pid
222+
223+
# SageMath parsed files
224+
*.sage.py
225+
226+
# Environments
227+
.env
228+
.venv
229+
env/
230+
venv/
231+
ENV/
232+
env.bak/
233+
venv.bak/
234+
235+
# Spyder project settings
236+
.spyderproject
237+
.spyproject
238+
239+
# Rope project settings
240+
.ropeproject
241+
242+
# mkdocs documentation
243+
/site
244+
245+
# mypy
246+
.mypy_cache/
247+
.dmypy.json
248+
dmypy.json
249+
250+
# Poetry
251+
.testenv/*
252+
langflow.db
253+
254+
255+
.githooks/prepare-commit-msg
256+
.langchain.db
257+
258+
# docusaurus
259+
.docusaurus/
260+
261+
/tmp/*
262+
src/backend/langflow/frontend/
263+
src/backend/base/langflow/frontend/
264+
.docker
265+
scratchpad*
266+
chroma*/*
267+
stuff/*
268+
src/frontend/playwright-report/index.html
269+
*.bak
270+
prof/*
271+
272+
src/frontend/temp
273+
*-shm
274+
*-wal
275+
.history
276+
277+
.dspy_cache/
278+
*.db

acp-agents/Makefile

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
PWD := $(shell pwd)
2+
CONTAINER_COMPOSE_FILE = $(PWD)/container-compose.yml
3+
4+
.PHONY: start-podman
5+
start-podman:
6+
@echo "📦 Building container images"
7+
podman-compose --file ${CONTAINER_COMPOSE_FILE} build --no-cache;
8+
@echo "🚀 Starting containers"
9+
podman-compose --file ${CONTAINER_COMPOSE_FILE} --project-name travel-agents up -d;
10+
11+
.PHONY: stop-podman
12+
stop-podman:
13+
podman-compose --file ${CONTAINER_COMPOSE_FILE} --project-name travel-agents down -v;
14+
15+
.PHONY: start-docker
16+
start-docker:
17+
@echo "📦 Building container images"
18+
docker compose --file ${CONTAINER_COMPOSE_FILE} build;
19+
@echo "🚀 Starting containers"
20+
docker compose --file ${CONTAINER_COMPOSE_FILE} --project-name travel-agents up -d;
21+
22+
.PHONY: stop-docker
23+
stop-docker:
24+
docker compose --file ${CONTAINER_COMPOSE_FILE} --project-name travel-agents down -v;
25+
26+
.PHONY: check
27+
check: ## Run code quality tools
28+
@echo "🚀 Checking lock file consistency with 'pyproject.toml'"
29+
@uv lock --locked
30+
@echo "🚀 Linting code: Running pre-commit"
31+
@uv run pre-commit run -a
32+
@echo "🚀 Static type checking: Running mypy"
33+
@uv run mypy agents/travel_concierge_agent
34+
@uv run mypy agents/city_selection_agent
35+
@uv run mypy agents/flight_planner_agent
36+
@uv run mypy agents/hotel_planner_agent
37+
@uv run mypy agents/city_expert_agent
38+
@uv run mypy agents/itinerary_planner_agent
39+
40+
.PHONY: deploy-codeengine
41+
deploy-codeengine:
42+
@echo "📦 Deploy agents to Code Engine"
43+
sh scripts/deploy.sh
44+
45+
.PHONY: undeploy-codeengine
46+
undeploy-codeengine:
47+
@echo "📦 Undeploy agents from Code Engine"
48+
sh scripts/undeploy.sh
49+
50+
51+
52+
.PHONY: help
53+
help:
54+
@uv run python -c "import re; \
55+
[[print(f'\033[36m{m[0]:<20}\033[0m {m[1]}') for m in re.findall(r'^([a-zA-Z_-]+):.*?## (.*)$$', open(makefile).read(), re.M)] for makefile in ('$(MAKEFILE_LIST)').strip().split()]"
56+
57+
.DEFAULT_GOAL := help

0 commit comments

Comments
 (0)