tool-compass 2.0.1__tar.gz → 2.0.2__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.
- {tool_compass-2.0.1 → tool_compass-2.0.2}/.dockerignore +56 -56
- {tool_compass-2.0.1 → tool_compass-2.0.2}/.env.example +62 -62
- tool_compass-2.0.2/.github/ISSUE_TEMPLATE/bug_report.yml +46 -0
- tool_compass-2.0.2/.github/ISSUE_TEMPLATE/feature_request.yml +29 -0
- tool_compass-2.0.2/.github/dependabot.yml +20 -0
- {tool_compass-2.0.1 → tool_compass-2.0.2}/.github/workflows/publish.yml +36 -36
- {tool_compass-2.0.1 → tool_compass-2.0.2}/.github/workflows/test.yml +110 -110
- {tool_compass-2.0.1 → tool_compass-2.0.2}/.gitignore +98 -98
- {tool_compass-2.0.1 → tool_compass-2.0.2}/AUDIT_REPORT.md +245 -245
- {tool_compass-2.0.1 → tool_compass-2.0.2}/CHANGELOG.md +126 -126
- tool_compass-2.0.2/CODE_OF_CONDUCT.md +26 -0
- {tool_compass-2.0.1 → tool_compass-2.0.2}/CONTRIBUTING.md +311 -311
- {tool_compass-2.0.1 → tool_compass-2.0.2}/Dockerfile +82 -82
- {tool_compass-2.0.1 → tool_compass-2.0.2}/LICENSE +21 -21
- {tool_compass-2.0.1 → tool_compass-2.0.2}/PKG-INFO +102 -105
- {tool_compass-2.0.1 → tool_compass-2.0.2}/README.md +270 -273
- {tool_compass-2.0.1 → tool_compass-2.0.2}/SECURITY.md +100 -100
- {tool_compass-2.0.1 → tool_compass-2.0.2}/analytics.py +713 -628
- {tool_compass-2.0.1 → tool_compass-2.0.2}/backend_client.py +428 -413
- tool_compass-2.0.2/backend_client_simple.py +595 -0
- {tool_compass-2.0.1 → tool_compass-2.0.2}/chain_indexer.py +476 -446
- {tool_compass-2.0.1 → tool_compass-2.0.2}/compass_config.example.json +58 -58
- {tool_compass-2.0.1 → tool_compass-2.0.2}/config.py +358 -338
- {tool_compass-2.0.1 → tool_compass-2.0.2}/docker-compose.yml +99 -99
- tool_compass-2.0.2/docs/assets/social-preview.png +0 -0
- tool_compass-2.0.2/docs/assets/social-preview.svg +36 -0
- {tool_compass-2.0.1 → tool_compass-2.0.2}/embedder.py +226 -235
- {tool_compass-2.0.1 → tool_compass-2.0.2}/gateway.py +1225 -1135
- {tool_compass-2.0.1 → tool_compass-2.0.2}/indexer.py +564 -534
- tool_compass-2.0.2/llms.txt +102 -0
- {tool_compass-2.0.1 → tool_compass-2.0.2}/pyproject.toml +128 -128
- {tool_compass-2.0.1 → tool_compass-2.0.2}/pytest.ini +31 -31
- {tool_compass-2.0.1 → tool_compass-2.0.2}/requirements-dev.txt +24 -24
- {tool_compass-2.0.1 → tool_compass-2.0.2}/requirements.txt +15 -15
- {tool_compass-2.0.1 → tool_compass-2.0.2}/setup.py +77 -74
- {tool_compass-2.0.1 → tool_compass-2.0.2}/sync_manager.py +428 -414
- {tool_compass-2.0.1 → tool_compass-2.0.2}/tool_manifest.py +817 -800
- {tool_compass-2.0.1 → tool_compass-2.0.2}/ui.py +1179 -1136
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# Git
|
|
2
|
-
.git
|
|
3
|
-
.gitignore
|
|
4
|
-
|
|
5
|
-
# Docker
|
|
6
|
-
Dockerfile
|
|
7
|
-
docker-compose.yml
|
|
8
|
-
.dockerignore
|
|
9
|
-
|
|
10
|
-
# Python
|
|
11
|
-
__pycache__
|
|
12
|
-
*.py[cod]
|
|
13
|
-
*$py.class
|
|
14
|
-
*.so
|
|
15
|
-
.Python
|
|
16
|
-
venv/
|
|
17
|
-
.venv/
|
|
18
|
-
ENV/
|
|
19
|
-
env/
|
|
20
|
-
.eggs/
|
|
21
|
-
*.egg-info/
|
|
22
|
-
*.egg
|
|
23
|
-
|
|
24
|
-
# IDE
|
|
25
|
-
.vscode/
|
|
26
|
-
.idea/
|
|
27
|
-
*.swp
|
|
28
|
-
*.swo
|
|
29
|
-
|
|
30
|
-
# Testing
|
|
31
|
-
.pytest_cache/
|
|
32
|
-
.coverage
|
|
33
|
-
htmlcov/
|
|
34
|
-
.tox/
|
|
35
|
-
|
|
36
|
-
# Build artifacts
|
|
37
|
-
dist/
|
|
38
|
-
build/
|
|
39
|
-
*.manifest
|
|
40
|
-
*.spec
|
|
41
|
-
|
|
42
|
-
# OS files
|
|
43
|
-
.DS_Store
|
|
44
|
-
Thumbs.db
|
|
45
|
-
|
|
46
|
-
# Local development files
|
|
47
|
-
*.local.json
|
|
48
|
-
.env.local
|
|
49
|
-
|
|
50
|
-
# Gradio cache
|
|
51
|
-
flagged/
|
|
52
|
-
|
|
53
|
-
# Keep db directory structure but not contents
|
|
54
|
-
db/*.db
|
|
55
|
-
db/*.hnsw
|
|
56
|
-
!db/.gitkeep
|
|
1
|
+
# Git
|
|
2
|
+
.git
|
|
3
|
+
.gitignore
|
|
4
|
+
|
|
5
|
+
# Docker
|
|
6
|
+
Dockerfile
|
|
7
|
+
docker-compose.yml
|
|
8
|
+
.dockerignore
|
|
9
|
+
|
|
10
|
+
# Python
|
|
11
|
+
__pycache__
|
|
12
|
+
*.py[cod]
|
|
13
|
+
*$py.class
|
|
14
|
+
*.so
|
|
15
|
+
.Python
|
|
16
|
+
venv/
|
|
17
|
+
.venv/
|
|
18
|
+
ENV/
|
|
19
|
+
env/
|
|
20
|
+
.eggs/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
*.egg
|
|
23
|
+
|
|
24
|
+
# IDE
|
|
25
|
+
.vscode/
|
|
26
|
+
.idea/
|
|
27
|
+
*.swp
|
|
28
|
+
*.swo
|
|
29
|
+
|
|
30
|
+
# Testing
|
|
31
|
+
.pytest_cache/
|
|
32
|
+
.coverage
|
|
33
|
+
htmlcov/
|
|
34
|
+
.tox/
|
|
35
|
+
|
|
36
|
+
# Build artifacts
|
|
37
|
+
dist/
|
|
38
|
+
build/
|
|
39
|
+
*.manifest
|
|
40
|
+
*.spec
|
|
41
|
+
|
|
42
|
+
# OS files
|
|
43
|
+
.DS_Store
|
|
44
|
+
Thumbs.db
|
|
45
|
+
|
|
46
|
+
# Local development files
|
|
47
|
+
*.local.json
|
|
48
|
+
.env.local
|
|
49
|
+
|
|
50
|
+
# Gradio cache
|
|
51
|
+
flagged/
|
|
52
|
+
|
|
53
|
+
# Keep db directory structure but not contents
|
|
54
|
+
db/*.db
|
|
55
|
+
db/*.hnsw
|
|
56
|
+
!db/.gitkeep
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
# Tool Compass Environment Configuration
|
|
2
|
-
# Copy this file to .env and customize as needed
|
|
3
|
-
|
|
4
|
-
# =============================================================================
|
|
5
|
-
# Core Configuration
|
|
6
|
-
# =============================================================================
|
|
7
|
-
|
|
8
|
-
# Project root directory (auto-detected if not set)
|
|
9
|
-
# TOOL_COMPASS_BASE_PATH=/path/to/mcp-tool-shop
|
|
10
|
-
|
|
11
|
-
# Python executable (auto-detected from venv if not set)
|
|
12
|
-
# TOOL_COMPASS_PYTHON=/path/to/python
|
|
13
|
-
|
|
14
|
-
# Configuration file path (default: ./compass_config.json)
|
|
15
|
-
# TOOL_COMPASS_CONFIG=/path/to/compass_config.json
|
|
16
|
-
|
|
17
|
-
# =============================================================================
|
|
18
|
-
# External Services
|
|
19
|
-
# =============================================================================
|
|
20
|
-
|
|
21
|
-
# Ollama server URL for embeddings
|
|
22
|
-
OLLAMA_URL=http://localhost:11434
|
|
23
|
-
|
|
24
|
-
# ComfyUI server URL (for AI image generation backend)
|
|
25
|
-
COMFYUI_URL=http://localhost:8188
|
|
26
|
-
|
|
27
|
-
# =============================================================================
|
|
28
|
-
# Logging
|
|
29
|
-
# =============================================================================
|
|
30
|
-
|
|
31
|
-
# Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
32
|
-
LOG_LEVEL=INFO
|
|
33
|
-
|
|
34
|
-
# =============================================================================
|
|
35
|
-
# Gradio UI Settings
|
|
36
|
-
# =============================================================================
|
|
37
|
-
|
|
38
|
-
# Server bind address (0.0.0.0 for Docker, 127.0.0.1 for local)
|
|
39
|
-
GRADIO_SERVER_NAME=127.0.0.1
|
|
40
|
-
|
|
41
|
-
# Server port
|
|
42
|
-
GRADIO_SERVER_PORT=7860
|
|
43
|
-
|
|
44
|
-
# Enable public sharing link (set to "true" for Gradio share URL)
|
|
45
|
-
# GRADIO_SHARE=false
|
|
46
|
-
|
|
47
|
-
# =============================================================================
|
|
48
|
-
# Docker-Specific
|
|
49
|
-
# =============================================================================
|
|
50
|
-
|
|
51
|
-
# When running in Docker, use host.docker.internal to reach host services
|
|
52
|
-
# OLLAMA_URL=http://host.docker.internal:11434
|
|
53
|
-
|
|
54
|
-
# =============================================================================
|
|
55
|
-
# Analytics (optional)
|
|
56
|
-
# =============================================================================
|
|
57
|
-
|
|
58
|
-
# Disable analytics tracking
|
|
59
|
-
# TOOL_COMPASS_ANALYTICS_DISABLED=true
|
|
60
|
-
|
|
61
|
-
# Hot cache size (number of frequently used tools to pre-load)
|
|
62
|
-
# TOOL_COMPASS_HOT_CACHE_SIZE=10
|
|
1
|
+
# Tool Compass Environment Configuration
|
|
2
|
+
# Copy this file to .env and customize as needed
|
|
3
|
+
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Core Configuration
|
|
6
|
+
# =============================================================================
|
|
7
|
+
|
|
8
|
+
# Project root directory (auto-detected if not set)
|
|
9
|
+
# TOOL_COMPASS_BASE_PATH=/path/to/mcp-tool-shop
|
|
10
|
+
|
|
11
|
+
# Python executable (auto-detected from venv if not set)
|
|
12
|
+
# TOOL_COMPASS_PYTHON=/path/to/python
|
|
13
|
+
|
|
14
|
+
# Configuration file path (default: ./compass_config.json)
|
|
15
|
+
# TOOL_COMPASS_CONFIG=/path/to/compass_config.json
|
|
16
|
+
|
|
17
|
+
# =============================================================================
|
|
18
|
+
# External Services
|
|
19
|
+
# =============================================================================
|
|
20
|
+
|
|
21
|
+
# Ollama server URL for embeddings
|
|
22
|
+
OLLAMA_URL=http://localhost:11434
|
|
23
|
+
|
|
24
|
+
# ComfyUI server URL (for AI image generation backend)
|
|
25
|
+
COMFYUI_URL=http://localhost:8188
|
|
26
|
+
|
|
27
|
+
# =============================================================================
|
|
28
|
+
# Logging
|
|
29
|
+
# =============================================================================
|
|
30
|
+
|
|
31
|
+
# Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
|
|
32
|
+
LOG_LEVEL=INFO
|
|
33
|
+
|
|
34
|
+
# =============================================================================
|
|
35
|
+
# Gradio UI Settings
|
|
36
|
+
# =============================================================================
|
|
37
|
+
|
|
38
|
+
# Server bind address (0.0.0.0 for Docker, 127.0.0.1 for local)
|
|
39
|
+
GRADIO_SERVER_NAME=127.0.0.1
|
|
40
|
+
|
|
41
|
+
# Server port
|
|
42
|
+
GRADIO_SERVER_PORT=7860
|
|
43
|
+
|
|
44
|
+
# Enable public sharing link (set to "true" for Gradio share URL)
|
|
45
|
+
# GRADIO_SHARE=false
|
|
46
|
+
|
|
47
|
+
# =============================================================================
|
|
48
|
+
# Docker-Specific
|
|
49
|
+
# =============================================================================
|
|
50
|
+
|
|
51
|
+
# When running in Docker, use host.docker.internal to reach host services
|
|
52
|
+
# OLLAMA_URL=http://host.docker.internal:11434
|
|
53
|
+
|
|
54
|
+
# =============================================================================
|
|
55
|
+
# Analytics (optional)
|
|
56
|
+
# =============================================================================
|
|
57
|
+
|
|
58
|
+
# Disable analytics tracking
|
|
59
|
+
# TOOL_COMPASS_ANALYTICS_DISABLED=true
|
|
60
|
+
|
|
61
|
+
# Hot cache size (number of frequently used tools to pre-load)
|
|
62
|
+
# TOOL_COMPASS_HOT_CACHE_SIZE=10
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug or issue
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: description
|
|
8
|
+
attributes:
|
|
9
|
+
label: Description
|
|
10
|
+
description: Clear description of the bug
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: reproduce
|
|
15
|
+
attributes:
|
|
16
|
+
label: Steps to Reproduce
|
|
17
|
+
description: How to reproduce the issue
|
|
18
|
+
placeholder: |
|
|
19
|
+
1. Run command...
|
|
20
|
+
2. See error...
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: expected
|
|
25
|
+
attributes:
|
|
26
|
+
label: Expected Behavior
|
|
27
|
+
description: What you expected to happen
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: dropdown
|
|
31
|
+
id: os
|
|
32
|
+
attributes:
|
|
33
|
+
label: Operating System
|
|
34
|
+
options:
|
|
35
|
+
- Windows
|
|
36
|
+
- Linux
|
|
37
|
+
- macOS
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
- type: input
|
|
41
|
+
id: python
|
|
42
|
+
attributes:
|
|
43
|
+
label: Python Version
|
|
44
|
+
placeholder: "3.11"
|
|
45
|
+
validations:
|
|
46
|
+
required: true
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest a new feature
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: problem
|
|
8
|
+
attributes:
|
|
9
|
+
label: Problem
|
|
10
|
+
description: What problem does this solve?
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: solution
|
|
15
|
+
attributes:
|
|
16
|
+
label: Proposed Solution
|
|
17
|
+
description: How would you like this to work?
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: alternatives
|
|
22
|
+
attributes:
|
|
23
|
+
label: Alternatives Considered
|
|
24
|
+
description: Other solutions you've considered
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: context
|
|
27
|
+
attributes:
|
|
28
|
+
label: Additional Context
|
|
29
|
+
description: Any other information
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
open-pull-requests-limit: 5
|
|
8
|
+
labels:
|
|
9
|
+
- "dependencies"
|
|
10
|
+
commit-message:
|
|
11
|
+
prefix: "deps"
|
|
12
|
+
|
|
13
|
+
- package-ecosystem: "github-actions"
|
|
14
|
+
directory: "/"
|
|
15
|
+
schedule:
|
|
16
|
+
interval: "weekly"
|
|
17
|
+
labels:
|
|
18
|
+
- "ci"
|
|
19
|
+
commit-message:
|
|
20
|
+
prefix: "ci"
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
# Tool Compass PyPI Publishing
|
|
2
|
-
# Triggered when a release is created
|
|
3
|
-
|
|
4
|
-
name: Publish to PyPI
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
release:
|
|
8
|
-
types: [published]
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
publish:
|
|
12
|
-
name: Build and Publish
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
|
|
15
|
-
steps:
|
|
16
|
-
- name: Checkout repository
|
|
17
|
-
uses: actions/checkout@
|
|
18
|
-
|
|
19
|
-
- name: Set up Python
|
|
20
|
-
uses: actions/setup-python@
|
|
21
|
-
with:
|
|
22
|
-
python-version: '3.11'
|
|
23
|
-
|
|
24
|
-
- name: Install build tools
|
|
25
|
-
run: |
|
|
26
|
-
python -m pip install --upgrade pip
|
|
27
|
-
pip install build twine
|
|
28
|
-
|
|
29
|
-
- name: Build package
|
|
30
|
-
run: python -m build
|
|
31
|
-
|
|
32
|
-
- name: Publish to PyPI
|
|
33
|
-
env:
|
|
34
|
-
TWINE_USERNAME: __token__
|
|
35
|
-
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
36
|
-
run: twine upload dist/*
|
|
1
|
+
# Tool Compass PyPI Publishing
|
|
2
|
+
# Triggered when a release is created
|
|
3
|
+
|
|
4
|
+
name: Publish to PyPI
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [published]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
name: Build and Publish
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout repository
|
|
17
|
+
uses: actions/checkout@v6
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v6
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.11'
|
|
23
|
+
|
|
24
|
+
- name: Install build tools
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install build twine
|
|
28
|
+
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: python -m build
|
|
31
|
+
|
|
32
|
+
- name: Publish to PyPI
|
|
33
|
+
env:
|
|
34
|
+
TWINE_USERNAME: __token__
|
|
35
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
36
|
+
run: twine upload dist/*
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
# Tool Compass CI Pipeline
|
|
2
|
-
# Runs tests on every push and PR
|
|
3
|
-
|
|
4
|
-
name: Tests
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
push:
|
|
8
|
-
branches: [main, develop]
|
|
9
|
-
pull_request:
|
|
10
|
-
branches: [main]
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
test:
|
|
14
|
-
name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
15
|
-
runs-on: ${{ matrix.os }}
|
|
16
|
-
|
|
17
|
-
strategy:
|
|
18
|
-
fail-fast: false
|
|
19
|
-
matrix:
|
|
20
|
-
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
21
|
-
python-version: ['3.10', '3.11', '3.12']
|
|
22
|
-
|
|
23
|
-
steps:
|
|
24
|
-
- name: Checkout repository
|
|
25
|
-
uses: actions/checkout@
|
|
26
|
-
|
|
27
|
-
- name: Set up Python ${{ matrix.python-version }}
|
|
28
|
-
uses: actions/setup-python@
|
|
29
|
-
with:
|
|
30
|
-
python-version: ${{ matrix.python-version }}
|
|
31
|
-
cache: 'pip'
|
|
32
|
-
cache-dependency-path: 'requirements*.txt'
|
|
33
|
-
|
|
34
|
-
- name: Install dependencies
|
|
35
|
-
run: |
|
|
36
|
-
python -m pip install --upgrade pip
|
|
37
|
-
pip install -r requirements.txt
|
|
38
|
-
pip install -r requirements-dev.txt
|
|
39
|
-
|
|
40
|
-
- name: Run tests
|
|
41
|
-
run: |
|
|
42
|
-
pytest -v --tb=short -m "not integration"
|
|
43
|
-
|
|
44
|
-
- name: Run tests with coverage
|
|
45
|
-
if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
|
|
46
|
-
run: |
|
|
47
|
-
pytest --cov=. --cov-report=xml --cov-report=term -m "not integration"
|
|
48
|
-
|
|
49
|
-
- name: Upload coverage to Codecov
|
|
50
|
-
if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
|
|
51
|
-
uses: codecov/codecov-action@
|
|
52
|
-
with:
|
|
53
|
-
file: coverage.xml
|
|
54
|
-
fail_ci_if_error: false
|
|
55
|
-
|
|
56
|
-
# Integration tests (requires Ollama)
|
|
57
|
-
integration:
|
|
58
|
-
name: Integration Tests
|
|
59
|
-
runs-on: ubuntu-latest
|
|
60
|
-
needs: test # Only run after unit tests pass
|
|
61
|
-
|
|
62
|
-
steps:
|
|
63
|
-
- name: Checkout repository
|
|
64
|
-
uses: actions/checkout@
|
|
65
|
-
|
|
66
|
-
- name: Set up Python
|
|
67
|
-
uses: actions/setup-python@
|
|
68
|
-
with:
|
|
69
|
-
python-version: '3.11'
|
|
70
|
-
cache: 'pip'
|
|
71
|
-
cache-dependency-path: 'requirements*.txt'
|
|
72
|
-
|
|
73
|
-
- name: Install dependencies
|
|
74
|
-
run: |
|
|
75
|
-
python -m pip install --upgrade pip
|
|
76
|
-
pip install -r requirements.txt
|
|
77
|
-
pip install -r requirements-dev.txt
|
|
78
|
-
|
|
79
|
-
- name: Install Ollama
|
|
80
|
-
run: |
|
|
81
|
-
curl -fsSL https://ollama.com/install.sh | sh
|
|
82
|
-
ollama serve &
|
|
83
|
-
sleep 5
|
|
84
|
-
ollama pull nomic-embed-text
|
|
85
|
-
|
|
86
|
-
- name: Run integration tests
|
|
87
|
-
run: |
|
|
88
|
-
pytest -v -m integration
|
|
89
|
-
continue-on-error: true # Integration tests may be flaky
|
|
90
|
-
|
|
91
|
-
docker:
|
|
92
|
-
name: Docker Build
|
|
93
|
-
runs-on: ubuntu-latest
|
|
94
|
-
needs: test
|
|
95
|
-
|
|
96
|
-
steps:
|
|
97
|
-
- name: Checkout repository
|
|
98
|
-
uses: actions/checkout@
|
|
99
|
-
|
|
100
|
-
- name: Set up Docker Buildx
|
|
101
|
-
uses: docker/setup-buildx-action@v3
|
|
102
|
-
|
|
103
|
-
- name: Build Docker image
|
|
104
|
-
uses: docker/build-push-action@
|
|
105
|
-
with:
|
|
106
|
-
context: .
|
|
107
|
-
push: false
|
|
108
|
-
tags: tool-compass:test
|
|
109
|
-
cache-from: type=gha
|
|
110
|
-
cache-to: type=gha,mode=max
|
|
1
|
+
# Tool Compass CI Pipeline
|
|
2
|
+
# Runs tests on every push and PR
|
|
3
|
+
|
|
4
|
+
name: Tests
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main, develop]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [main]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
15
|
+
runs-on: ${{ matrix.os }}
|
|
16
|
+
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
21
|
+
python-version: ['3.10', '3.11', '3.12']
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout repository
|
|
25
|
+
uses: actions/checkout@v6
|
|
26
|
+
|
|
27
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
28
|
+
uses: actions/setup-python@v6
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
cache: 'pip'
|
|
32
|
+
cache-dependency-path: 'requirements*.txt'
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
pip install -r requirements.txt
|
|
38
|
+
pip install -r requirements-dev.txt
|
|
39
|
+
|
|
40
|
+
- name: Run tests
|
|
41
|
+
run: |
|
|
42
|
+
pytest -v --tb=short -m "not integration"
|
|
43
|
+
|
|
44
|
+
- name: Run tests with coverage
|
|
45
|
+
if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
|
|
46
|
+
run: |
|
|
47
|
+
pytest --cov=. --cov-report=xml --cov-report=term -m "not integration"
|
|
48
|
+
|
|
49
|
+
- name: Upload coverage to Codecov
|
|
50
|
+
if: matrix.python-version == '3.11' && matrix.os == 'ubuntu-latest'
|
|
51
|
+
uses: codecov/codecov-action@v5
|
|
52
|
+
with:
|
|
53
|
+
file: coverage.xml
|
|
54
|
+
fail_ci_if_error: false
|
|
55
|
+
|
|
56
|
+
# Integration tests (requires Ollama)
|
|
57
|
+
integration:
|
|
58
|
+
name: Integration Tests
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
needs: test # Only run after unit tests pass
|
|
61
|
+
|
|
62
|
+
steps:
|
|
63
|
+
- name: Checkout repository
|
|
64
|
+
uses: actions/checkout@v6
|
|
65
|
+
|
|
66
|
+
- name: Set up Python
|
|
67
|
+
uses: actions/setup-python@v6
|
|
68
|
+
with:
|
|
69
|
+
python-version: '3.11'
|
|
70
|
+
cache: 'pip'
|
|
71
|
+
cache-dependency-path: 'requirements*.txt'
|
|
72
|
+
|
|
73
|
+
- name: Install dependencies
|
|
74
|
+
run: |
|
|
75
|
+
python -m pip install --upgrade pip
|
|
76
|
+
pip install -r requirements.txt
|
|
77
|
+
pip install -r requirements-dev.txt
|
|
78
|
+
|
|
79
|
+
- name: Install Ollama
|
|
80
|
+
run: |
|
|
81
|
+
curl -fsSL https://ollama.com/install.sh | sh
|
|
82
|
+
ollama serve &
|
|
83
|
+
sleep 5
|
|
84
|
+
ollama pull nomic-embed-text
|
|
85
|
+
|
|
86
|
+
- name: Run integration tests
|
|
87
|
+
run: |
|
|
88
|
+
pytest -v -m integration
|
|
89
|
+
continue-on-error: true # Integration tests may be flaky
|
|
90
|
+
|
|
91
|
+
docker:
|
|
92
|
+
name: Docker Build
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
needs: test
|
|
95
|
+
|
|
96
|
+
steps:
|
|
97
|
+
- name: Checkout repository
|
|
98
|
+
uses: actions/checkout@v6
|
|
99
|
+
|
|
100
|
+
- name: Set up Docker Buildx
|
|
101
|
+
uses: docker/setup-buildx-action@v3
|
|
102
|
+
|
|
103
|
+
- name: Build Docker image
|
|
104
|
+
uses: docker/build-push-action@v6
|
|
105
|
+
with:
|
|
106
|
+
context: .
|
|
107
|
+
push: false
|
|
108
|
+
tags: tool-compass:test
|
|
109
|
+
cache-from: type=gha
|
|
110
|
+
cache-to: type=gha,mode=max
|