tool-compass 2.5.2__tar.gz → 2.5.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.
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/workflows/ci.yml +123 -26
- {tool_compass-2.5.2 → tool_compass-2.5.3}/CHANGELOG.md +4 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/PKG-INFO +1 -1
- tool_compass-2.5.3/atlas/README.md +101 -0
- tool_compass-2.5.3/atlas/boundaries.yaml +34 -0
- tool_compass-2.5.3/atlas/page.json +537 -0
- tool_compass-2.5.3/atlas/statistics.json +782 -0
- tool_compass-2.5.3/atlas/structure.json +10546 -0
- tool_compass-2.5.3/codecov.yml +18 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/pyproject.toml +1 -1
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.dockerignore +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.env.example +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.gitattributes +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/dependabot.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/workflows/publish.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/workflows/release-binaries.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.github/workflows/release.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.gitignore +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/.pre-commit-config.yaml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/CODE_OF_CONDUCT.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/CONTRIBUTING.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/Dockerfile +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/LICENSE +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/Makefile +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/README.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/SCORECARD.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/SECURITY.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/SHIP_GATE.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/_version.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/analytics.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/backend_client_mcp.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/backend_client_simple.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/bootstrap.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/chain_indexer.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/cli.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/compass_config.example.json +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/config.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/docker-compose.yml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/docker-entrypoint.sh +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/docs/index.md +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/embedder.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/fly.toml +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/gateway.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/indexer.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/llms.txt +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/requirements-dev.txt +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/requirements.txt +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/scripts/check-org-urls.sh +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/scripts/regenerate-scorecard.sh +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/scripts/sync-version.mjs +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/scripts/verify-metrics.sh +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/sync_manager.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/tool_manifest.py +0 -0
- {tool_compass-2.5.2 → tool_compass-2.5.3}/ui.py +0 -0
|
@@ -34,23 +34,15 @@ on:
|
|
|
34
34
|
- 'npm/**'
|
|
35
35
|
- 'site/**'
|
|
36
36
|
- '.github/workflows/**'
|
|
37
|
+
- 'atlas/**'
|
|
38
|
+
# Codecov reads its status and comment settings from this file.
|
|
39
|
+
- 'codecov.yml'
|
|
40
|
+
# No paths filter on pull requests, deliberately: this workflow emits the
|
|
41
|
+
# required status check, and a PR that matched no path (a docs-only change)
|
|
42
|
+
# would never report it and could never merge. Pushes to main stay
|
|
43
|
+
# paths-gated.
|
|
37
44
|
pull_request:
|
|
38
45
|
branches: [main]
|
|
39
|
-
paths:
|
|
40
|
-
- '*.py'
|
|
41
|
-
- 'tests/**'
|
|
42
|
-
- 'scripts/**'
|
|
43
|
-
- 'requirements*.txt'
|
|
44
|
-
- 'pyproject.toml'
|
|
45
|
-
- 'Dockerfile'
|
|
46
|
-
- 'docker-compose.yml'
|
|
47
|
-
- 'Makefile'
|
|
48
|
-
- 'fly.toml'
|
|
49
|
-
- '.pre-commit-config.yaml'
|
|
50
|
-
- '.dockerignore'
|
|
51
|
-
- 'npm/**'
|
|
52
|
-
- 'site/**'
|
|
53
|
-
- '.github/workflows/**'
|
|
54
46
|
# TST-FT-002: nightly-fuzz job runs Hypothesis in `nightly` profile
|
|
55
47
|
# Mon/Wed/Fri at 09:00 UTC. Kept in this file to preserve the
|
|
56
48
|
# two-workflow-per-repo limit.
|
|
@@ -185,6 +177,10 @@ jobs:
|
|
|
185
177
|
# Reinstating 3.11 is a deliberate decision with its own test strategy
|
|
186
178
|
# (a self-hosted runner, or a source build of hnswlib/numpy).
|
|
187
179
|
python-version: ['3.12']
|
|
180
|
+
env:
|
|
181
|
+
# 'true' on the one leg whose coverage and test results go to Codecov,
|
|
182
|
+
# on a pull request or a push to the default branch.
|
|
183
|
+
COVERAGE_LEG: ${{ matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest' && (github.event_name == 'pull_request' || github.ref == format('refs/heads/{0}', github.event.repository.default_branch)) }}
|
|
188
184
|
|
|
189
185
|
steps:
|
|
190
186
|
- name: Checkout repository
|
|
@@ -197,6 +193,19 @@ jobs:
|
|
|
197
193
|
cache: 'pip'
|
|
198
194
|
cache-dependency-path: 'requirements*.txt'
|
|
199
195
|
|
|
196
|
+
# The committed Atlas map (atlas/) must match the tree. Atlas needs
|
|
197
|
+
# Node 22 or later, and the map is the same on every cell, so it is
|
|
198
|
+
# checked on the Linux cell only.
|
|
199
|
+
- name: Set up Node for Atlas
|
|
200
|
+
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
|
|
201
|
+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
202
|
+
with:
|
|
203
|
+
node-version: '22'
|
|
204
|
+
|
|
205
|
+
- name: Atlas check
|
|
206
|
+
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
|
|
207
|
+
run: npx --yes @dogfood-lab/atlas@1.24.0 check
|
|
208
|
+
|
|
200
209
|
- name: Install dependencies
|
|
201
210
|
run: |
|
|
202
211
|
python -m pip install --upgrade pip
|
|
@@ -220,16 +229,36 @@ jobs:
|
|
|
220
229
|
retention-days: 14
|
|
221
230
|
|
|
222
231
|
- name: Run tests with coverage
|
|
232
|
+
id: tests
|
|
223
233
|
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
|
|
224
234
|
run: |
|
|
225
|
-
pytest --cov=. --cov-report=xml --cov-report=term -m "not integration"
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
235
|
+
pytest --cov=. --cov-report=xml --cov-report=term -m "not integration" --junitxml=junit.xml
|
|
236
|
+
|
|
237
|
+
# The codecov job below uploads what these two steps save; this job
|
|
238
|
+
# never holds an OIDC token. Coverage is saved when the tests passed,
|
|
239
|
+
# and test results whenever they ran, failures included, because a
|
|
240
|
+
# failing test is what that report exists to show. A save step with no
|
|
241
|
+
# file to save fails the job. overwrite lets a re-run of this job
|
|
242
|
+
# replace the artifact its earlier attempt saved.
|
|
243
|
+
- name: Save coverage for Codecov
|
|
244
|
+
if: ${{ env.COVERAGE_LEG == 'true' }}
|
|
245
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
246
|
+
with:
|
|
247
|
+
name: codecov-coverage
|
|
248
|
+
path: coverage.xml
|
|
249
|
+
if-no-files-found: error
|
|
250
|
+
retention-days: 3
|
|
251
|
+
overwrite: true
|
|
252
|
+
|
|
253
|
+
- name: Save test results for Codecov
|
|
254
|
+
if: ${{ !cancelled() && env.COVERAGE_LEG == 'true' && steps.tests.outcome != 'skipped' }}
|
|
255
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
230
256
|
with:
|
|
231
|
-
|
|
232
|
-
|
|
257
|
+
name: codecov-test-results
|
|
258
|
+
path: junit.xml
|
|
259
|
+
if-no-files-found: error
|
|
260
|
+
retention-days: 3
|
|
261
|
+
overwrite: true
|
|
233
262
|
|
|
234
263
|
- name: Run pip-audit (report only)
|
|
235
264
|
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
|
|
@@ -256,6 +285,68 @@ jobs:
|
|
|
256
285
|
run: |
|
|
257
286
|
pip-audit -r requirements.txt
|
|
258
287
|
|
|
288
|
+
codecov:
|
|
289
|
+
# Uploads what the test job saved, from a job of its own, so the OIDC
|
|
290
|
+
# token that signs in to Codecov never exists beside the install and the
|
|
291
|
+
# tests. The checkout, which keeps no token, is there only so Codecov can
|
|
292
|
+
# match report paths to files: the job installs nothing and runs none of
|
|
293
|
+
# the repository's code. It runs whenever the test job ran, failures
|
|
294
|
+
# included, so failing tests still reach Codecov, and only on the events
|
|
295
|
+
# that collect coverage. A run the concurrency group cancels uploads
|
|
296
|
+
# nothing, and each run reads only its own artifacts.
|
|
297
|
+
needs: test
|
|
298
|
+
if: ${{ !cancelled() && needs.test.result != 'cancelled' && needs.test.result != 'skipped' && (github.event_name == 'pull_request' || github.ref == format('refs/heads/{0}', github.event.repository.default_branch)) }}
|
|
299
|
+
runs-on: ubuntu-latest
|
|
300
|
+
timeout-minutes: 10
|
|
301
|
+
permissions:
|
|
302
|
+
contents: read
|
|
303
|
+
id-token: write
|
|
304
|
+
steps:
|
|
305
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
306
|
+
with:
|
|
307
|
+
persist-credentials: false
|
|
308
|
+
|
|
309
|
+
# Each artifact unpacks where the test job wrote its files. A pattern
|
|
310
|
+
# that matches nothing, unlike a name, does not fail: a failing test
|
|
311
|
+
# run saves test results and no coverage.
|
|
312
|
+
- name: Download coverage
|
|
313
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
314
|
+
with:
|
|
315
|
+
pattern: codecov-coverage
|
|
316
|
+
path: .
|
|
317
|
+
|
|
318
|
+
- name: Download test results
|
|
319
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
320
|
+
with:
|
|
321
|
+
pattern: codecov-test-results
|
|
322
|
+
path: .
|
|
323
|
+
|
|
324
|
+
# After a passing test job both artifacts exist, so each upload runs,
|
|
325
|
+
# and fails the job if its files are missing; after a failing one each
|
|
326
|
+
# runs when its files arrived. Both sign in with OIDC, fail the job when
|
|
327
|
+
# Codecov refuses the report, and run the Codecov CLI at a fixed version
|
|
328
|
+
# rather than whichever is newest.
|
|
329
|
+
- name: Upload coverage to Codecov
|
|
330
|
+
if: ${{ needs.test.result == 'success' || hashFiles('coverage.xml') != '' }}
|
|
331
|
+
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
|
332
|
+
with:
|
|
333
|
+
version: v11.3.1
|
|
334
|
+
use_oidc: true
|
|
335
|
+
fail_ci_if_error: true
|
|
336
|
+
disable_search: true
|
|
337
|
+
files: ./coverage.xml
|
|
338
|
+
|
|
339
|
+
- name: Upload test results to Codecov
|
|
340
|
+
if: ${{ needs.test.result == 'success' || hashFiles('junit.xml') != '' }}
|
|
341
|
+
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
|
342
|
+
with:
|
|
343
|
+
version: v11.3.1
|
|
344
|
+
use_oidc: true
|
|
345
|
+
fail_ci_if_error: true
|
|
346
|
+
report_type: test_results
|
|
347
|
+
disable_search: true
|
|
348
|
+
files: ./junit.xml
|
|
349
|
+
|
|
259
350
|
npm-wrapper:
|
|
260
351
|
name: npm wrapper tests
|
|
261
352
|
runs-on: ubuntu-latest
|
|
@@ -285,7 +376,9 @@ jobs:
|
|
|
285
376
|
# On failure, opens a tracking issue via actions/github-script.
|
|
286
377
|
nightly-fuzz:
|
|
287
378
|
name: Nightly Hypothesis fuzz
|
|
288
|
-
|
|
379
|
+
# A required check, so it also runs on pull requests, with the `ci` profile
|
|
380
|
+
# (200 examples); the schedule and manual runs keep the slow `nightly` one.
|
|
381
|
+
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'pull_request'
|
|
289
382
|
runs-on: ubuntu-latest
|
|
290
383
|
# CT-B-011: Hypothesis nightly profile is deliberately slow — 45 min cap
|
|
291
384
|
# is wider than the test job because fuzz examples are unbounded.
|
|
@@ -313,10 +406,10 @@ jobs:
|
|
|
313
406
|
- name: Run Hypothesis (nightly profile)
|
|
314
407
|
id: fuzz
|
|
315
408
|
run: |
|
|
316
|
-
HYPOTHESIS_PROFILE
|
|
409
|
+
HYPOTHESIS_PROFILE=${{ github.event_name == 'pull_request' && 'ci' || 'nightly' }} pytest -m "not integration"
|
|
317
410
|
|
|
318
411
|
- name: Open tracking issue on failure
|
|
319
|
-
if: failure() && steps.fuzz.conclusion == 'failure'
|
|
412
|
+
if: failure() && steps.fuzz.conclusion == 'failure' && github.event_name != 'pull_request'
|
|
320
413
|
# SHA-pinned per SLSA L3 supply-chain hygiene (CT-B-001). nightly-fuzz
|
|
321
414
|
# carries issues:write, so a compromised v7 mutable tag would inherit
|
|
322
415
|
# issue-creation capability. Bump via dependabot's github-actions sweep.
|
|
@@ -485,7 +578,9 @@ jobs:
|
|
|
485
578
|
# ===========================================================================
|
|
486
579
|
pages-build:
|
|
487
580
|
name: Build site
|
|
488
|
-
|
|
581
|
+
# A required check, so the site also builds on pull requests; only a push to
|
|
582
|
+
# main configures Pages and uploads the artifact that pages-deploy publishes.
|
|
583
|
+
if: github.event_name == 'pull_request' || (github.ref == 'refs/heads/main' && github.event_name == 'push')
|
|
489
584
|
runs-on: ubuntu-latest
|
|
490
585
|
# CT-B-011: Starlight npm ci + Astro build; 10 min is generous.
|
|
491
586
|
timeout-minutes: 10
|
|
@@ -502,6 +597,7 @@ jobs:
|
|
|
502
597
|
# silently dependent on Settings → Pages UI state. configure-pages
|
|
503
598
|
# is idempotent and exposes the base path to downstream steps.
|
|
504
599
|
- name: Configure Pages
|
|
600
|
+
if: github.event_name == 'push'
|
|
505
601
|
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
|
|
506
602
|
|
|
507
603
|
- name: Install site dependencies
|
|
@@ -513,6 +609,7 @@ jobs:
|
|
|
513
609
|
run: npm run build
|
|
514
610
|
|
|
515
611
|
- uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
|
|
612
|
+
if: github.event_name == 'push'
|
|
516
613
|
with:
|
|
517
614
|
path: site/dist
|
|
518
615
|
|
|
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.5.3] - 2026-10-14
|
|
11
|
+
|
|
12
|
+
- Build fake credentials at runtime in config and HTTP backend tests so secret scanners do not flag test fixtures.
|
|
13
|
+
|
|
10
14
|
## [2.5.2] - 2026-09-09
|
|
11
15
|
|
|
12
16
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tool-compass
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.3
|
|
4
4
|
Summary: Semantic MCP tool discovery gateway - find tools by intent, not memory
|
|
5
5
|
Project-URL: Homepage, https://github.com/mcp-tool-shop-org/tool-compass
|
|
6
6
|
Project-URL: Documentation, https://github.com/mcp-tool-shop-org/tool-compass#readme
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# tool-compass: how it works
|
|
2
|
+
|
|
3
|
+
Mapped at 2026-10-01 from commit e6e5806 by Atlas 1.24.0.
|
|
4
|
+
|
|
5
|
+
## What this is
|
|
6
|
+
|
|
7
|
+
8 parts, mostly Python (46 files), JavaScript (4), shell (4), CSS (2), TypeScript (2) and Astro (1). Work enters through 7 doors; the busiest is CI, which reaches 5 parts. It publishes to PyPI, @mcptoolshop/tool-compass to npm, and a container image. It deploys a site to GitHub Pages. People run tool-compass and tool-compass-ui.
|
|
8
|
+
|
|
9
|
+
## What changed since 2026-10-01 (98f8498)
|
|
10
|
+
|
|
11
|
+
Nothing structural changed since 2026-10-01; 1 file changed content.
|
|
12
|
+
|
|
13
|
+
## What comes in
|
|
14
|
+
|
|
15
|
+
1. **CI.** On a pull request to main; on a push to main touching 16 paths; on a schedule (`0 9 * * 1,3,5`); or by hand. Runs docker-entrypoint.sh, gateway.py, scripts/check-org-urls.sh and 35 more; checks requirements.txt; packs LICENSE, README.md, _version.py and 15 more into an image. Except on a schedule or when run by hand, it also runs site/astro.config.mjs and site/src/.
|
|
16
|
+
2. **Publish.** When a release is published; when the workflow Release completes; or by hand. Runs cli.py, docker-entrypoint.sh and gateway.py; packs LICENSE, README.md, _version.py and 15 more into an image.
|
|
17
|
+
3. **Release.** When a tag matching `v*` is pushed; or by hand. Runs ui.py.
|
|
18
|
+
4. **Release Binaries.** When a release is published; on a `workflow_call` event; or by hand. Runs ui.py; builds cli.py.
|
|
19
|
+
5. **tool-compass** (a command people run, from npm/package.json). Runs npm/bin/tool-compass.js.
|
|
20
|
+
6. **tool-compass** (a command people run, from pyproject.toml). Runs cli.py.
|
|
21
|
+
7. **tool-compass-ui** (a command people run). Runs ui.py.
|
|
22
|
+
|
|
23
|
+
## What happens through CI
|
|
24
|
+
|
|
25
|
+
1. The workflow runs npm/test/ in npm, docker-entrypoint.sh and gateway.py in the repository root, scripts/check-org-urls.sh, scripts/regenerate-scorecard.sh and scripts/verify-metrics.sh in scripts, and tests/ in tests; it checks requirements.txt in the repository root; it packs 18 files in the repository root into an image.
|
|
26
|
+
1. Inside gateway.py, `main` does, in order: `config.py` (6 steps), `backend_client_simple.py` (3 steps), `ToolDefinition`, `Embedder`, `indexer.py` (3 steps), `disconnect_all` (SimpleBackendManager) and `indexer.py` (3 steps).
|
|
27
|
+
2. Or, when `isinstance(explicit, str) and explicit.strip()`, `main` does `redact_url_credentials` instead.
|
|
28
|
+
3. Or, when `_is_ollama_embedding_provider(cfg)`, `main` does `redact_url_credentials` instead.
|
|
29
|
+
4. Or, when `not tools`, `main` does `disconnect_all` (SimpleBackendManager) instead.
|
|
30
|
+
5. `main` returns early 1 more way.
|
|
31
|
+
2. Except on a schedule or when run by hand, it also runs site/astro.config.mjs and site/src/.
|
|
32
|
+
3. It uploads coverage to Codecov.
|
|
33
|
+
4. It runs the pre-commit hooks.
|
|
34
|
+
5. It deploys the site on a push to main.
|
|
35
|
+
|
|
36
|
+
## Who reads the results
|
|
37
|
+
|
|
38
|
+
CI writes nothing this map can see.
|
|
39
|
+
|
|
40
|
+
## The other doors
|
|
41
|
+
|
|
42
|
+
**Publish** runs cli.py, docker-entrypoint.sh and gateway.py, packs LICENSE, README.md, _version.py and 15 more into an image, and publishes to PyPI and a container image.
|
|
43
|
+
|
|
44
|
+
**Release** runs ui.py, publishes @mcptoolshop/tool-compass to npm, creates a GitHub release, and uploads artifacts/* to the release.
|
|
45
|
+
|
|
46
|
+
**Release Binaries** runs ui.py, creates a GitHub release, and builds cli.py into binaries for darwin-arm64, linux-x64 and win-x64 and uploads them to the release.
|
|
47
|
+
|
|
48
|
+
**tool-compass** (a command people run, from npm/package.json) runs npm/bin/tool-compass.js.
|
|
49
|
+
|
|
50
|
+
**tool-compass** (a command people run, from pyproject.toml) runs cli.py.
|
|
51
|
+
|
|
52
|
+
**tool-compass-ui** (a command people run) runs ui.py.
|
|
53
|
+
|
|
54
|
+
## What breaks what
|
|
55
|
+
|
|
56
|
+
- **the repository root** is imported only from tests, by 1 part (tests), and sits on the path of 6 doors.
|
|
57
|
+
- **npm** is imported by no other part and sits on the path of 2 doors.
|
|
58
|
+
|
|
59
|
+
## What tends to change together
|
|
60
|
+
|
|
61
|
+
No two source files changed together often enough to name.
|
|
62
|
+
|
|
63
|
+
Window: 180 days; a pair counts from 3 shared commits, since 0 source files reach 10 revisions; the floor rises to 10 when 25 do.
|
|
64
|
+
|
|
65
|
+
## What no test touches
|
|
66
|
+
|
|
67
|
+
- **scripts** is imported by no test.
|
|
68
|
+
|
|
69
|
+
npm is tested only by its package's own test script, which a workflow runs.
|
|
70
|
+
|
|
71
|
+
## Written but never read
|
|
72
|
+
|
|
73
|
+
Every written place has a reader.
|
|
74
|
+
|
|
75
|
+
## Helpers that look duplicated
|
|
76
|
+
|
|
77
|
+
No two parts export a helper that looks alike.
|
|
78
|
+
|
|
79
|
+
## Generated, never hand-edited
|
|
80
|
+
|
|
81
|
+
- **npm/bin/tool-compass.js** has a block written by scripts/sync-version.mjs.
|
|
82
|
+
- **npm/package.json** has a block written by scripts/sync-version.mjs.
|
|
83
|
+
|
|
84
|
+
## Hand-authored
|
|
85
|
+
|
|
86
|
+
People write .github/, assets/, docs/ and site/; 11 writes with paths built at run time may land here.
|
|
87
|
+
|
|
88
|
+
## Where to start
|
|
89
|
+
|
|
90
|
+
.github/workflows/ci.yml → gateway.py → config.py → backend_client_simple.py → tool_manifest.py → embedder.py → indexer.py
|
|
91
|
+
|
|
92
|
+
Read those in order to follow one pull request end to end.
|
|
93
|
+
|
|
94
|
+
## What this map cannot see
|
|
95
|
+
|
|
96
|
+
- 11 writes and 4 reads use paths built at run time and are not named here.
|
|
97
|
+
- 5 writes and 35 reads go to a path their caller passes, not to this repository.
|
|
98
|
+
- There is a docker-compose.yml and a fly.toml that no workflow runs; what deploys from them does so from outside this repository, and is not on this page.
|
|
99
|
+
- Statistics confidence is low: fewer than 25 source files reach 10 revisions in the window.
|
|
100
|
+
|
|
101
|
+
Regenerate with `npx --yes @dogfood-lab/atlas map`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
summary: ""
|
|
2
|
+
boundaries:
|
|
3
|
+
- name: .github
|
|
4
|
+
globs:
|
|
5
|
+
- .github/**
|
|
6
|
+
role: config
|
|
7
|
+
- name: assets
|
|
8
|
+
globs:
|
|
9
|
+
- assets/**
|
|
10
|
+
role: data
|
|
11
|
+
- name: docs
|
|
12
|
+
globs:
|
|
13
|
+
- docs/**
|
|
14
|
+
role: data
|
|
15
|
+
- name: npm
|
|
16
|
+
globs:
|
|
17
|
+
- npm/**
|
|
18
|
+
role: code
|
|
19
|
+
- name: root
|
|
20
|
+
globs:
|
|
21
|
+
- "*"
|
|
22
|
+
role: code
|
|
23
|
+
- name: scripts
|
|
24
|
+
globs:
|
|
25
|
+
- scripts/**
|
|
26
|
+
role: code
|
|
27
|
+
- name: site
|
|
28
|
+
globs:
|
|
29
|
+
- site/**
|
|
30
|
+
role: site
|
|
31
|
+
- name: tests
|
|
32
|
+
globs:
|
|
33
|
+
- tests/**
|
|
34
|
+
role: test
|