Skip to content

Commit ce50308

Browse files
authored
Merge pull request #525 from jupyter-naas/dagster
Add Orchestration capability via Dagster
2 parents c269399 + 46006f5 commit ce50308

23 files changed

Lines changed: 9569 additions & 60 deletions

File tree

.github/workflows/pull_request.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ jobs:
1010
steps:
1111
- uses: actions/checkout@v4
1212

13-
- name: Set up Python 3.10
13+
- name: Set up Python 3.11
1414
uses: actions/setup-python@v5
1515
with:
16-
python-version: '3.10'
16+
python-version: '3.11'
1717

1818
- name: Install uv
1919
run: |

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ wheels/
3434
*.egg-info/
3535
.installed.cfg
3636
*.egg
37+
.mypy_cache/
38+
.pytest_cache/
39+
.ruff_cache/
40+
.pytype
3741

3842
# IDEs and editors
3943
.idea/
@@ -106,4 +110,6 @@ storage/vectorstore/*
106110
!storage/*/example/**/*.webp
107111
!storage/*/example/**/*.heic
108112

113+
114+
*.pid
109115
sandbox/

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.10
1+
3.11

Makefile

Lines changed: 78 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ python_version=$(shell cat .python-version)
3434
install: dep
3535
@ uv sync
3636

37-
dev-build: deps
37+
local-build: deps
3838
@ docker compose build
3939

4040
abi-add: deps
@@ -144,9 +144,9 @@ api-prod: deps
144144
@ docker build -t abi-prod -f Dockerfile.linux.x86_64 . --platform linux/amd64
145145
@ docker run --rm -it -p 9879:9879 --env-file .env -e ENV=prod --platform linux/amd64 abi-prod
146146

147-
api-dev: deps
148-
@ docker build -t abi-dev -f Dockerfile.linux.x86_64 . --platform linux/amd64
149-
@ docker run --rm -it -p 9879:9879 -v ./storage:/app/storage --env-file .env -e ENV=dev --platform linux/amd64 abi-dev
147+
api-local: deps
148+
@ docker build -t abi-local -f Dockerfile.linux.x86_64 . --platform linux/amd64
149+
@ docker run --rm -it -p 9879:9879 -v ./storage:/app/storage --env-file .env -e ENV=dev --platform linux/amd64 abi-local
150150

151151
sparql-terminal: deps
152152
@ uv run python -m src.core.apps.sparql_terminal.main
@@ -219,6 +219,7 @@ clean:
219219
docker compose down
220220
docker compose rm -f
221221
rm -rf src/core/modules/common/integrations/siteanalyzer/target
222+
rm -f dagster.pid dagster.log
222223

223224
help:
224225
@echo "ABI Project Makefile Help"
@@ -227,7 +228,7 @@ help:
227228
@echo "ENVIRONMENT SETUP:"
228229
@echo " .venv Create virtual environment (automatically called by other commands)"
229230
@echo " install Install all dependencies (similar to .venv)"
230-
@echo " dev-build Build all Docker containers defined in docker-compose.yml"
231+
@echo " local-build Build all Docker containers defined in docker-compose.yml"
231232
@echo " lock Update the Poetry lock file without installing packages"
232233
@echo ""
233234
@echo "DEVELOPMENT:"
@@ -273,11 +274,20 @@ help:
273274
@echo " oxigraph-up Start Oxigraph container"
274275
@echo " oxigraph-down Stop Oxigraph container"
275276
@echo " oxigraph-status Check Oxigraph container status"
276-
@echo " dev-up Start development services (Oxigraph, YasGUI)"
277-
@echo " dev-down Stop development services"
277+
@echo " local-up Start all local services (Oxigraph, Dagster)"
278+
@echo " local-down Stop all local services"
278279
@echo " container-up Start ABI in container mode (if needed)"
279280
@echo " container-down Stop ABI container"
280281
@echo ""
282+
@echo "DAGSTER (DATA ORCHESTRATION):"
283+
@echo " dagster-dev Start Dagster development server (foreground)"
284+
@echo " dagster-up Start Dagster in background"
285+
@echo " dagster-down Stop background Dagster"
286+
@echo " dagster-logs View Dagster logs"
287+
@echo " dagster-ui Start Dagster web interface only"
288+
@echo " dagster-status Check Dagster assets status"
289+
@echo " dagster-materialize Materialize all Dagster assets"
290+
@echo ""
281291
@echo "CLEANUP:"
282292
@echo " clean Clean up build artifacts, caches, and Docker containers"
283293
@echo " docker-cleanup Clean up Docker conflicts and stuck containers"
@@ -288,7 +298,7 @@ help:
288298
@echo ""
289299
@echo "If 'make' hangs or times out:"
290300
@echo " 1. Run: make docker-cleanup"
291-
@echo " 2. Then: make dev-up"
301+
@echo " 2. Then: make local-up"
292302
@echo " 3. Finally: make"
293303
@echo ""
294304
@echo "For detailed troubleshooting: docs/troubleshooting/docker-conflicts.md"
@@ -319,7 +329,7 @@ build.linux.x86_64: deps
319329
# -------------------------------------------------------------------------------------------------
320330

321331
chat-abi-agent: deps
322-
@ LOG_LEVEL=CRITICAL uv run python -m src.cli
332+
@ LOG_LEVEL=DEBUG uv run python -m src.cli
323333

324334
chat-naas-agent: deps
325335
@ uv run python -m src.core.apps.terminal_agent.main generic_run_agent NaasAgent
@@ -360,7 +370,7 @@ chat: deps
360370
check-docker:
361371
@if ! docker info > /dev/null 2>&1; then \
362372
echo "❌ Docker is not running. Please start Docker Desktop first."; \
363-
echo "💡 After starting Docker, run: make docker-cleanup && make dev-up"; \
373+
echo "💡 After starting Docker, run: make docker-cleanup && make local-up"; \
364374
exit 1; \
365375
fi
366376

@@ -370,36 +380,46 @@ docker-cleanup: check-docker
370380
@./scripts/docker_cleanup.sh
371381

372382
oxigraph-up: check-docker
373-
@echo "Starting Oxigraph..."
374-
@docker-compose --profile dev up -d oxigraph || (echo "❌ Failed to start Oxigraph. Try: make docker-cleanup"; exit 1)
383+
@docker-compose --profile local up -d oxigraph || (echo "❌ Failed to start Oxigraph. Try: make docker-cleanup"; exit 1)
375384
@echo "✓ Oxigraph started on http://localhost:7878"
376385

377386
oxigraph-down: check-docker
378-
@echo "Stopping Oxigraph..."
379-
@docker-compose --profile dev stop oxigraph || true
387+
@docker-compose --profile local stop oxigraph || true
380388
@echo "✓ Oxigraph stopped"
381389

382390
oxigraph-status: check-docker
383391
@echo "Oxigraph status:"
384-
@docker-compose --profile dev ps oxigraph
392+
@docker-compose --profile local ps oxigraph
385393

386-
dev-up: check-docker
387-
@echo "🚀 Starting development services..."
388-
@if ! docker-compose --profile dev up -d --timeout 60; then \
394+
local-up: check-docker
395+
@echo "🚀 Starting local services..."
396+
@if ! docker-compose --profile local up -d --timeout 60; then \
389397
echo "❌ Failed to start services. Running cleanup..."; \
390398
./scripts/docker_cleanup.sh; \
391399
echo "🔄 Retrying..."; \
392-
docker-compose --profile dev up -d --timeout 60 || (echo "❌ Still failing. Check Docker Desktop status."; exit 1); \
400+
docker-compose --profile local up -d --timeout 60 || (echo "❌ Still failing. Check Docker Desktop status."; exit 1); \
393401
fi
394-
@echo "✓ All development containers started"
402+
@echo "✓ Local containers started"
403+
@make dagster-up
404+
@echo ""
405+
@echo "🌟 Local environment ready!"
395406
@echo "✓ Services available at:"
396407
@echo " - Oxigraph (Knowledge Graph): http://localhost:7878"
397-
@echo " - PostgreSQL (Agent Memory): localhost:5432"
398408
@echo " - YasGUI (SPARQL Editor): http://localhost:3000"
409+
@echo " - PostgreSQL (Agent Memory): localhost:5432"
410+
@echo " - Dagster (Orchestration): http://localhost:3001"
411+
412+
local-logs: check-docker
413+
@docker-compose --profile local logs -f
399414

400-
dev-down: check-docker
401-
@docker-compose --profile dev down --timeout 10 || true
402-
@echo "✓ All development services stopped"
415+
local-stop: check-docker
416+
@docker-compose --profile local stop
417+
@echo "✓ All local services stopped"
418+
419+
local-down: check-docker
420+
@make dagster-down
421+
@docker-compose --profile local down --timeout 10 || true
422+
@echo "✓ All local services stopped"
403423

404424
container-up:
405425
@docker-compose --profile container up -d
@@ -409,4 +429,37 @@ container-down:
409429
@docker-compose --profile container down
410430
@echo "✓ ABI container stopped"
411431

412-
.PHONY: test chat-abi-agent chat-naas-agent chat-ontology-agent chat-support-agent chat-qwen-agent chat-deepseek-agent chat-gemma-agent api sh lock add abi-add help uv oxigraph-up oxigraph-down oxigraph-status dev-up dev-down container-up container-down
432+
dagster-dev:
433+
@echo "🚀 Starting Dagster development server..."
434+
@docker-compose --profile local up dagster
435+
436+
dagster-up:
437+
@echo "🚀 Starting Dagster in background..."
438+
@docker-compose --profile local up -d dagster
439+
@echo "✓ Dagster started on http://localhost:3001"
440+
@echo "📝 Logs: make dagster-logs"
441+
442+
dagster-down:
443+
@echo "🛑 Stopping Dagster..."
444+
@docker-compose --profile local down dagster
445+
@echo "✓ Dagster stopped"
446+
447+
dagster-logs:
448+
@echo "📄 Showing Dagster logs..."
449+
@docker-compose --profile local logs -f dagster
450+
451+
dagster-ui:
452+
@echo "🌐 Opening Dagster web interface..."
453+
@echo "📍 Visit: http://localhost:3001"
454+
@command -v open >/dev/null 2>&1 && open "http://localhost:3001" || echo "Open the URL manually in your browser"
455+
@docker-compose --profile local up dagster
456+
457+
dagster-status:
458+
@echo "📊 Checking Dagster asset status..."
459+
@docker-compose --profile local exec dagster uv run dagster asset list -m src.core.modules.__demo__.orchestration.definitions
460+
461+
dagster-materialize:
462+
@echo "⚙️ Materializing all Dagster assets..."
463+
@docker-compose --profile local exec dagster uv run dagster asset materialize --select "*" -m src.core.modules.__demo__.orchestration.definitions
464+
465+
.PHONY: test chat-abi-agent chat-naas-agent chat-ontology-agent chat-support-agent chat-qwen-agent chat-deepseek-agent chat-gemma-agent api sh lock add abi-add help uv oxigraph-up oxigraph-down oxigraph-status local-up local-down container-up container-down dagster-dev dagster-up dagster-down dagster-ui dagster-logs dagster-status dagster-materialize

docker-compose.yml

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ services:
5050
networks:
5151
- abi-network
5252
profiles:
53-
- dev
53+
- local
5454
- prod
5555
- container
5656

@@ -64,7 +64,7 @@ services:
6464
networks:
6565
- abi-network
6666
profiles:
67-
- dev
67+
- local
6868
- prod
6969

7070
oxigraph-proxy:
@@ -79,7 +79,7 @@ services:
7979
networks:
8080
- abi-network
8181
profiles:
82-
- dev
82+
- local
8383
- prod
8484

8585
yasgui:
@@ -94,14 +94,40 @@ services:
9494
networks:
9595
- abi-network
9696
profiles:
97-
- dev
97+
- local
98+
- prod
99+
100+
dagster:
101+
build: .
102+
ports:
103+
- 3001:3000 # Changed to 3001 to avoid conflict with yasgui
104+
volumes:
105+
- ./scripts:/app/scripts
106+
- ./uv.lock:/app/uv.lock
107+
- ./config.yaml:/app/config.yaml
108+
- ./pyproject.toml:/app/pyproject.toml
109+
- ./src:/app/src
110+
- ./lib:/app/lib
111+
- ./README.md:/app/README.md
112+
- venv_cache:/app/.venv
113+
- dagster_home:/app/.dagster
114+
platform: linux/arm64
115+
environment:
116+
- PYTHONPATH=/app
117+
- DAGSTER_HOME=/app/.dagster
118+
command: ["sh", "-c", "uv sync --frozen --all-extras && uv run python scripts/generate_dagster_command.py | xargs uv run"]
119+
networks:
120+
- abi-network
121+
profiles:
122+
- local
98123
- prod
99124

100125
volumes:
101126
cargo-cache:
102127
venv_cache:
103128
oxigraph_data:
104129
postgres_data:
130+
dagster_home:
105131

106132
networks:
107133
abi-network:

docs/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ Welcome to ABI Documentation.
7878
- [Test-Driven Development Approach](capabilities/modules.md#test-driven-development-approach)
7979
- [Best Practices](capabilities/modules.md#best-practices)
8080
- [Troubleshooting](capabilities/modules.md#troubleshooting)
81+
- [Dagster Integration](capabilities/dagster.md)
82+
- [Overview](capabilities/dagster.md#overview)
83+
- [Current Implementation](capabilities/dagster.md#current-implementation)
84+
- [Use Cases in ABI](capabilities/dagster.md#use-cases-in-abi)
85+
- [Integration with ABI Architecture](capabilities/dagster.md#integration-with-abi-architecture)
86+
- [Development Workflow](capabilities/dagster.md#development-workflow)
87+
- [Future Roadmap](capabilities/dagster.md#future-roadmap)
88+
- [Best Practices](capabilities/dagster.md#best-practices)
8189
- [Developer Tool Chain](developer_tool_chain/)
8290
- [Makefile](developer_tool_chain/makefile.md)
8391
- [Manage Dependencies](developer_tool_chain/manage_dependencies.md)

0 commit comments

Comments
 (0)