docsgraph 0.1.0a2__tar.gz → 0.1.0a4__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.
- docsgraph-0.1.0a4/.editorconfig +15 -0
- docsgraph-0.1.0a4/.github/FUNDING.yml +2 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/ISSUE_TEMPLATE/bug_report.yml +3 -3
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/ISSUE_TEMPLATE/config.yml +3 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/PULL_REQUEST_TEMPLATE.md +3 -3
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/workflows/ci.yml +6 -6
- docsgraph-0.1.0a4/.github/workflows/pages.yml +43 -0
- docsgraph-0.1.0a4/.github/workflows/prepare-release.yml +52 -0
- docsgraph-0.1.0a4/.github/workflows/release.yml +130 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/workflows/repo-regression.yml +2 -2
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/ARCHITECTURE.md +9 -9
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/CHANGELOG.md +47 -10
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/CONTRIBUTING.md +2 -2
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/PKG-INFO +37 -10
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/README.md +35 -8
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/ROADMAP.md +2 -1
- docsgraph-0.1.0a4/SUPPORT.md +50 -0
- docsgraph-0.1.0a4/docs/.nojekyll +1 -0
- docsgraph-0.1.0a4/docs/assets/docsgraph-hero.png +0 -0
- docsgraph-0.1.0a2/docs/assets/cairn-demo.svg → docsgraph-0.1.0a4/docs/assets/docsgraph-repo-demo.svg +7 -7
- docsgraph-0.1.0a4/docs/assets/wechat-reward.jpg +0 -0
- docsgraph-0.1.0a4/docs/index.html +778 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/release-checklist.md +66 -13
- docsgraph-0.1.0a2/docs/repo-lifecycle-canvas.html → docsgraph-0.1.0a4/docs/repo-docs-workflow-canvas.html +13 -13
- docsgraph-0.1.0a2/docs/canvas.html → docsgraph-0.1.0a4/docs/retrieval-architecture-canvas.html +3 -3
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/specs/mcp-tools.md +15 -11
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/examples/hero-demo.md +11 -11
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/pyproject.toml +7 -2
- docsgraph-0.1.0a4/scripts/prepare_release.py +199 -0
- docsgraph-0.1.0a4/scripts/verify_pypi_install.py +185 -0
- docsgraph-0.1.0a4/skills/cairn-friendly-docs/SKILL.md +188 -0
- docsgraph-0.1.0a4/skills/cairn-friendly-docs/agents/openai.yaml +7 -0
- docsgraph-0.1.0a4/skills/cairn-friendly-docs/manifest.json +14 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/__init__.py +1 -1
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/cli/app.py +215 -4
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/mcp/schemas.py +23 -6
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/mcp/server.py +172 -5
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/repo_search.py +1 -1
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_cli.py +121 -6
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_mcp_server.py +106 -1
- docsgraph-0.1.0a2/.github/workflows/release.yml +0 -77
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.cairn/config.toml +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.env.example +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.github/dependabot.yml +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/.gitignore +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/CLAUDE.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/CODE_OF_CONDUCT.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/LICENSE +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/PRODUCT.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/SECURITY.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/benchmarks/README.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/benchmarks/architecture.toml +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/decisions/0000-template.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/decisions/0001-foundation.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/golden-docs-standard.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/docs/inspector-principle.html +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/examples/real-llm-doubao.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/scripts/eval_repos.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/scripts/smoke_many_repos.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/baseline.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/dataset.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/judge.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/metrics.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/report.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/bench/runner.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/cli/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/cli/config.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/core/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/core/errors.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/core/types.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/embed/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/embed/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/embed/doubao.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/embed/fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/embed/openai_compatible.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/engine/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/engine/indexer.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/engine/manifest.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/entity/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/entity/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/entity/fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/entity/heuristic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/entities.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/summaries.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/tree.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/vectors.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/index/xrefs.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/ingest/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/ingest/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/ingest/markdown.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/ingest/markitdown.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/ingest/pdf.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/inspection.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/mcp/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/providers.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/py.typed +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/repo.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/cache.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/openai_compatible.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/summarize/prompts.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/find_mentions.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/get_related.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/get_section.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/outline.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/read_range.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/search_keyword.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/tools/search_semantic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/xref/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/xref/base.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/xref/fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/src/cairn/xref/heuristic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/conftest.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/fixtures/empty.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/fixtures/nested.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/fixtures/no_headings.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/fixtures/simple.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/fixtures/with_frontmatter.md +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/__init__.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/conftest.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_bench_baseline.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_bench_dataset.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_bench_judge.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_bench_metrics.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_bench_runner.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_cli_config.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_embed_doubao.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_embed_fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_embed_openai_compatible.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_engine_indexer.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_engine_manifest.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_entities_builder.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_entity_heuristic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_markdown_parser.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_markitdown_parser.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_pdf_parser.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_repo.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_repo_eval_gates.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summaries_builder.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summaries_reader.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summarize_cache.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summarize_fake.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summarize_openai_compatible.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_summarize_prompts.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_document_index.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_find_mentions.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_get_related.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_get_section.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_outline.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_read_range.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_search_keyword.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tool_search_semantic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_tree_builder.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_types.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_vectors_builder.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_vectors_reader.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_xref_heuristic.py +0 -0
- {docsgraph-0.1.0a2 → docsgraph-0.1.0a4}/tests/unit/test_xrefs_builder.py +0 -0
|
@@ -12,8 +12,8 @@ body:
|
|
|
12
12
|
id: version
|
|
13
13
|
attributes:
|
|
14
14
|
label: Cairn version
|
|
15
|
-
description: Output of `
|
|
16
|
-
placeholder: "0.1.
|
|
15
|
+
description: Output of `docsgraph version` (or your installed package version).
|
|
16
|
+
placeholder: "0.1.0a3"
|
|
17
17
|
validations:
|
|
18
18
|
required: true
|
|
19
19
|
|
|
@@ -53,7 +53,7 @@ body:
|
|
|
53
53
|
id: actual
|
|
54
54
|
attributes:
|
|
55
55
|
label: Actual behavior
|
|
56
|
-
description: Include any error output. If `
|
|
56
|
+
description: Include any error output. If `docsgraph serve` is involved, the JSON-line log is very helpful.
|
|
57
57
|
render: shell
|
|
58
58
|
validations:
|
|
59
59
|
required: true
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
blank_issues_enabled: false
|
|
2
2
|
contact_links:
|
|
3
|
+
- name: Usage questions and support
|
|
4
|
+
url: https://github.com/jokeuncle/cairn/blob/main/SUPPORT.md
|
|
5
|
+
about: Read the support policy before opening a usage question.
|
|
3
6
|
- name: Security disclosure
|
|
4
7
|
url: https://github.com/jokeuncle/cairn/blob/main/SECURITY.md
|
|
5
8
|
about: Report a security issue privately — please do not open a public issue.
|
|
@@ -21,10 +21,10 @@ jobs:
|
|
|
21
21
|
python-version: ["3.11", "3.12", "3.13"]
|
|
22
22
|
|
|
23
23
|
steps:
|
|
24
|
-
- uses: actions/checkout@
|
|
24
|
+
- uses: actions/checkout@v7
|
|
25
25
|
|
|
26
26
|
- name: Set up Python ${{ matrix.python-version }}
|
|
27
|
-
uses: actions/setup-python@
|
|
27
|
+
uses: actions/setup-python@v6
|
|
28
28
|
with:
|
|
29
29
|
python-version: ${{ matrix.python-version }}
|
|
30
30
|
cache: pip
|
|
@@ -38,7 +38,7 @@ jobs:
|
|
|
38
38
|
run: ruff check .
|
|
39
39
|
|
|
40
40
|
- name: mypy --strict
|
|
41
|
-
run: mypy src tests
|
|
41
|
+
run: mypy --python-version "${{ matrix.python-version }}" src tests
|
|
42
42
|
|
|
43
43
|
- name: pytest
|
|
44
44
|
run: pytest
|
|
@@ -48,10 +48,10 @@ jobs:
|
|
|
48
48
|
runs-on: ubuntu-latest
|
|
49
49
|
needs: lint-types-tests
|
|
50
50
|
steps:
|
|
51
|
-
- uses: actions/checkout@
|
|
51
|
+
- uses: actions/checkout@v7
|
|
52
52
|
|
|
53
53
|
- name: Set up Python
|
|
54
|
-
uses: actions/setup-python@
|
|
54
|
+
uses: actions/setup-python@v6
|
|
55
55
|
with:
|
|
56
56
|
python-version: "3.12"
|
|
57
57
|
|
|
@@ -65,7 +65,7 @@ jobs:
|
|
|
65
65
|
run: python -m twine check dist/*
|
|
66
66
|
|
|
67
67
|
- name: Upload artifacts
|
|
68
|
-
uses: actions/upload-artifact@
|
|
68
|
+
uses: actions/upload-artifact@v7
|
|
69
69
|
with:
|
|
70
70
|
name: cairn-dist
|
|
71
71
|
path: dist/*
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_run:
|
|
7
|
+
workflows: ["Release"]
|
|
8
|
+
types: [completed]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
pages: write
|
|
14
|
+
id-token: write
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: pages-${{ github.ref }}
|
|
18
|
+
cancel-in-progress: true
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
deploy:
|
|
22
|
+
name: Deploy static site
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
if: github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success'
|
|
25
|
+
environment:
|
|
26
|
+
name: github-pages
|
|
27
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v7
|
|
30
|
+
with:
|
|
31
|
+
ref: main
|
|
32
|
+
|
|
33
|
+
- name: Configure Pages
|
|
34
|
+
uses: actions/configure-pages@v6
|
|
35
|
+
|
|
36
|
+
- name: Upload Pages artifact
|
|
37
|
+
uses: actions/upload-pages-artifact@v5
|
|
38
|
+
with:
|
|
39
|
+
path: docs
|
|
40
|
+
|
|
41
|
+
- name: Deploy to GitHub Pages
|
|
42
|
+
id: deployment
|
|
43
|
+
uses: actions/deploy-pages@v5
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Prepare release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: "Version without leading v, e.g. 0.1.0a4"
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
date:
|
|
11
|
+
description: "Release date in YYYY-MM-DD format. Defaults to the runner UTC date."
|
|
12
|
+
required: false
|
|
13
|
+
type: string
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
prepare:
|
|
20
|
+
name: Update release metadata
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v7
|
|
24
|
+
with:
|
|
25
|
+
ref: main
|
|
26
|
+
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
uses: actions/setup-python@v6
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.13"
|
|
31
|
+
|
|
32
|
+
- name: Prepare changelog and version metadata
|
|
33
|
+
run: |
|
|
34
|
+
args=("${{ inputs.version }}")
|
|
35
|
+
if [ -n "${{ inputs.date }}" ]; then
|
|
36
|
+
args+=("--date" "${{ inputs.date }}")
|
|
37
|
+
fi
|
|
38
|
+
python scripts/prepare_release.py "${args[@]}"
|
|
39
|
+
python scripts/prepare_release.py "${{ inputs.version }}" --check
|
|
40
|
+
git diff --check
|
|
41
|
+
|
|
42
|
+
- name: Commit release metadata
|
|
43
|
+
run: |
|
|
44
|
+
if git diff --quiet; then
|
|
45
|
+
echo "No release metadata changes to commit."
|
|
46
|
+
exit 0
|
|
47
|
+
fi
|
|
48
|
+
git config user.name "github-actions[bot]"
|
|
49
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
50
|
+
git add pyproject.toml src/cairn/__init__.py README.md CHANGELOG.md docs/release-checklist.md docs/retrieval-architecture-canvas.html
|
|
51
|
+
git commit -m "Prepare release ${{ inputs.version }}"
|
|
52
|
+
git push origin HEAD:main
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
verify:
|
|
10
|
+
name: lint + types + tests
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v7
|
|
14
|
+
|
|
15
|
+
- name: Set up Python
|
|
16
|
+
uses: actions/setup-python@v6
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.13"
|
|
19
|
+
cache: pip
|
|
20
|
+
|
|
21
|
+
- name: Install package + dev extras
|
|
22
|
+
run: |
|
|
23
|
+
python -m pip install --upgrade pip
|
|
24
|
+
python -m pip install -e ".[dev]"
|
|
25
|
+
|
|
26
|
+
- name: Validate release metadata
|
|
27
|
+
run: python scripts/prepare_release.py "${GITHUB_REF_NAME#v}" --check
|
|
28
|
+
|
|
29
|
+
- name: ruff
|
|
30
|
+
run: ruff check .
|
|
31
|
+
|
|
32
|
+
- name: mypy --strict
|
|
33
|
+
run: mypy --python-version "3.13" src tests
|
|
34
|
+
|
|
35
|
+
- name: pytest
|
|
36
|
+
run: pytest
|
|
37
|
+
|
|
38
|
+
build:
|
|
39
|
+
name: Build wheel + sdist for ${{ github.ref_name }}
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
needs: verify
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v7
|
|
44
|
+
|
|
45
|
+
- name: Set up Python
|
|
46
|
+
uses: actions/setup-python@v6
|
|
47
|
+
with:
|
|
48
|
+
python-version: "3.12"
|
|
49
|
+
|
|
50
|
+
- name: Install build tooling
|
|
51
|
+
run: python -m pip install --upgrade pip build twine
|
|
52
|
+
|
|
53
|
+
- name: Build distributions
|
|
54
|
+
run: python -m build --wheel --sdist
|
|
55
|
+
|
|
56
|
+
- name: Check distributions
|
|
57
|
+
run: python -m twine check dist/*
|
|
58
|
+
|
|
59
|
+
- name: Upload artifacts
|
|
60
|
+
uses: actions/upload-artifact@v7
|
|
61
|
+
with:
|
|
62
|
+
name: dist
|
|
63
|
+
path: dist/*
|
|
64
|
+
|
|
65
|
+
publish-pypi:
|
|
66
|
+
name: Publish to PyPI
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
needs: build
|
|
69
|
+
# Trusted publishing requires the PyPI `docsgraph` project to trust this
|
|
70
|
+
# GitHub workflow/environment under Settings → Publishing.
|
|
71
|
+
environment:
|
|
72
|
+
name: pypi
|
|
73
|
+
url: https://pypi.org/p/docsgraph
|
|
74
|
+
permissions:
|
|
75
|
+
id-token: write
|
|
76
|
+
steps:
|
|
77
|
+
- name: Download artifacts
|
|
78
|
+
uses: actions/download-artifact@v8
|
|
79
|
+
with:
|
|
80
|
+
name: dist
|
|
81
|
+
path: dist
|
|
82
|
+
|
|
83
|
+
- name: Publish to PyPI
|
|
84
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
85
|
+
|
|
86
|
+
verify-pypi-install:
|
|
87
|
+
name: Verify install from PyPI
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
needs: publish-pypi
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v7
|
|
92
|
+
|
|
93
|
+
- name: Set up Python
|
|
94
|
+
uses: actions/setup-python@v6
|
|
95
|
+
with:
|
|
96
|
+
python-version: "3.12"
|
|
97
|
+
cache: pip
|
|
98
|
+
|
|
99
|
+
- name: Verify published package from official index
|
|
100
|
+
run: |
|
|
101
|
+
version="${GITHUB_REF_NAME#v}"
|
|
102
|
+
for attempt in 1 2 3 4 5; do
|
|
103
|
+
if python scripts/verify_pypi_install.py --version "$version" --repo . --sync-repo; then
|
|
104
|
+
exit 0
|
|
105
|
+
fi
|
|
106
|
+
echo "PyPI install verification failed on attempt $attempt; retrying..."
|
|
107
|
+
sleep 30
|
|
108
|
+
done
|
|
109
|
+
python scripts/verify_pypi_install.py --version "$version" --repo . --sync-repo
|
|
110
|
+
|
|
111
|
+
github-release:
|
|
112
|
+
name: Attach artifacts to GitHub release
|
|
113
|
+
runs-on: ubuntu-latest
|
|
114
|
+
needs: [build, publish-pypi, verify-pypi-install]
|
|
115
|
+
permissions:
|
|
116
|
+
contents: write
|
|
117
|
+
steps:
|
|
118
|
+
- name: Download artifacts
|
|
119
|
+
uses: actions/download-artifact@v8
|
|
120
|
+
with:
|
|
121
|
+
name: dist
|
|
122
|
+
path: dist
|
|
123
|
+
|
|
124
|
+
- name: Create GitHub release
|
|
125
|
+
uses: softprops/action-gh-release@v3
|
|
126
|
+
with:
|
|
127
|
+
files: dist/*
|
|
128
|
+
generate_release_notes: true
|
|
129
|
+
draft: false
|
|
130
|
+
prerelease: ${{ contains(github.ref_name, '-') || contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
|
|
@@ -302,20 +302,20 @@ configured primary when omitted.
|
|
|
302
302
|
|
|
303
303
|
### Layer 5: Tooling (CLI / inspector / extensions)
|
|
304
304
|
|
|
305
|
-
CLI (`
|
|
305
|
+
CLI (`docsgraph`, typer-based; `cairn` remains a compatibility alias):
|
|
306
306
|
|
|
307
307
|
```
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
308
|
+
docsgraph init # scaffold a .cairn/ in cwd
|
|
309
|
+
docsgraph index <path> # index a document
|
|
310
|
+
docsgraph serve [--http] # start MCP server
|
|
311
|
+
docsgraph inspect <doc-id> # print index stats
|
|
312
|
+
docsgraph outline <doc-id> # print tree
|
|
313
|
+
docsgraph query <doc-id> ... # exercise tools from terminal
|
|
314
|
+
docsgraph migrate # bump index format versions
|
|
315
315
|
```
|
|
316
316
|
|
|
317
317
|
Future (v0.3+):
|
|
318
|
-
- `
|
|
318
|
+
- `docsgraph web` — local inspector UI (read-only).
|
|
319
319
|
- VSCode extension surfacing the same inspector.
|
|
320
320
|
|
|
321
321
|
---
|
|
@@ -6,12 +6,39 @@ All notable changes to Cairn. Format follows
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
+
No unreleased changes yet.
|
|
10
|
+
|
|
11
|
+
## [0.1.0a4] — 2026-06-23
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Product website under `docs/index.html`, deployed to GitHub Pages on `main`
|
|
16
|
+
pushes and after successful release workflows.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Repo-scoped MCP config now defaults to dynamic workspace resolution
|
|
21
|
+
(`args = ["serve"]`) instead of pinning the repo where `docsgraph install` ran.
|
|
22
|
+
Use `--repo` for a fixed-repo server, or per-call `projectPath` for explicit
|
|
23
|
+
cross-repo queries.
|
|
24
|
+
- PyPI project metadata and README now point the project homepage to the
|
|
25
|
+
GitHub Pages site.
|
|
26
|
+
- GitHub Actions workflows now use current major versions to avoid deprecated
|
|
27
|
+
Node runtime warnings.
|
|
28
|
+
- First-run website and contributor docs now prefer the `docsgraph` command and
|
|
29
|
+
deterministic `--fake` smoke-test path.
|
|
30
|
+
- Added support and editor-configuration metadata for contributor onboarding.
|
|
31
|
+
- Added a GitHub Sponsor entry plus website and support-page links for optional
|
|
32
|
+
project sponsorship.
|
|
33
|
+
|
|
34
|
+
## [0.1.0a3] — 2026-06-22
|
|
35
|
+
|
|
9
36
|
### Added
|
|
10
37
|
|
|
11
38
|
- **Doubao multimodal embeddings.** `CAIRN_EMBED_PROVIDER=doubao-vision`
|
|
12
39
|
targets Volcengine ARK's `/embeddings/multimodal` shape and defaults to
|
|
13
40
|
`doubao-embedding-vision-251215` with 2048-dimensional vectors.
|
|
14
|
-
- **Static graph inspector.** `
|
|
41
|
+
- **Static graph inspector.** `docsgraph inspect <doc-dir> --out inspector.html`
|
|
15
42
|
writes a standalone HTML relationship explorer for sections, entities,
|
|
16
43
|
tree edges, mentions, and cross-references.
|
|
17
44
|
- **Semantic hit evidence.** `search_semantic` now returns an explanatory
|
|
@@ -22,8 +49,9 @@ All notable changes to Cairn. Format follows
|
|
|
22
49
|
- **Benchmark/index progress output.** CLI indexing and benchmark runs now
|
|
23
50
|
emit stage progress so hosted-model runs do not sit silently during long
|
|
24
51
|
summary-generation phases.
|
|
25
|
-
- **Repository documentation workflow.** `
|
|
26
|
-
`
|
|
52
|
+
- **Repository documentation workflow.** `docsgraph init -y`, `docsgraph sync`,
|
|
53
|
+
`docsgraph status`, repo-scoped `docsgraph serve`, and repo-scoped
|
|
54
|
+
`docsgraph inspect`
|
|
27
55
|
turn a project directory into a multi-document MCP knowledge layer. Repo MCP
|
|
28
56
|
adds `list_documents`, cross-document `search_documents`, `repo_context`,
|
|
29
57
|
`repo_graph`, `repo_impact`, and routes normal tools by optional `doc`.
|
|
@@ -37,10 +65,14 @@ All notable changes to Cairn. Format follows
|
|
|
37
65
|
`node_modules/**`, `dist/**`, and `.pytest_cache/**` now apply at any depth,
|
|
38
66
|
so broad include globs do not accidentally index frontend dependencies,
|
|
39
67
|
caches, or generated build output.
|
|
40
|
-
- **Open-source DX commands.** `
|
|
41
|
-
freshness; `
|
|
42
|
-
and Goose. `
|
|
43
|
-
from the client's working directory.
|
|
68
|
+
- **Open-source DX commands.** `docsgraph doctor` validates repo setup and index
|
|
69
|
+
freshness; `docsgraph mcp config` prints MCP snippets for Claude, Cursor,
|
|
70
|
+
Codex, and Goose. `docsgraph serve --repo <path>` makes generated configs
|
|
71
|
+
independent from the client's working directory.
|
|
72
|
+
- **Agent self-install command.** `docsgraph install` writes the Cairn MCP
|
|
73
|
+
server config for Codex, Claude, Cursor, or Goose, while
|
|
74
|
+
`docsgraph install --dry-run` prints the target path and config without
|
|
75
|
+
touching disk.
|
|
44
76
|
- **Public repo smoke evaluator.** `scripts/eval_repos.py` reproduces the
|
|
45
77
|
uv / MCP Python SDK / FastAPI template repo-document smoke tests used for
|
|
46
78
|
release readiness.
|
|
@@ -50,7 +82,10 @@ All notable changes to Cairn. Format follows
|
|
|
50
82
|
- **Golden documentation standard.** `docs/golden-docs-standard.md` publishes
|
|
51
83
|
the repo-doc shapes Cairn rewards and the tuning policy maintainers must
|
|
52
84
|
follow when mature-repository smoke runs expose quality gaps.
|
|
53
|
-
- **
|
|
85
|
+
- **PyPI installation verifier.** `scripts/verify_pypi_install.py` installs a
|
|
86
|
+
released `docsgraph` wheel from the official Python index into a clean
|
|
87
|
+
temporary environment and checks both `docsgraph` and `cairn` console scripts.
|
|
88
|
+
- **Optional MarkItDown ingestion.** Installing `docsgraph[markitdown]` lets Cairn
|
|
54
89
|
convert local DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPUB, and related files
|
|
55
90
|
to Markdown before indexing them through the canonical Markdown pipeline.
|
|
56
91
|
|
|
@@ -98,6 +133,8 @@ All notable changes to Cairn. Format follows
|
|
|
98
133
|
Cairn product name while making the installed tool obvious and avoiding the
|
|
99
134
|
unrelated package that already occupies `cairn`.
|
|
100
135
|
- Strict mypy now passes across both `src` and `tests`.
|
|
136
|
+
- The release workflow now runs lint, type checks, tests, build validation, and
|
|
137
|
+
PyPI Trusted Publishing from the `pypi` GitHub environment on version tags.
|
|
101
138
|
|
|
102
139
|
## [0.1.0a2] — 2026-06-11
|
|
103
140
|
|
|
@@ -206,8 +243,8 @@ naive vector-RAG baseline.
|
|
|
206
243
|
- `PRODUCT.md`, `ARCHITECTURE.md`, `CLAUDE.md`, `ROADMAP.md`,
|
|
207
244
|
`CONTRIBUTING.md`, `LICENSE` (Apache-2.0).
|
|
208
245
|
- `docs/specs/mcp-tools.md`: authoritative tool schemas.
|
|
209
|
-
- `docs/canvas.html`: single-file visual explainer
|
|
210
|
-
RAPTOR, BookRAG, A-RAG, and Cairn.
|
|
246
|
+
- `docs/retrieval-architecture-canvas.html`: single-file visual explainer
|
|
247
|
+
comparing Naive RAG, RAPTOR, BookRAG, A-RAG, and Cairn.
|
|
211
248
|
- `docs/decisions/0001-foundation.md`: founding ADR.
|
|
212
249
|
- `examples/hero-demo.md`: self-referential reproducible demo (Cairn
|
|
213
250
|
navigates its own architecture document).
|
|
@@ -139,10 +139,10 @@ A good test:
|
|
|
139
139
|
|
|
140
140
|
Please file an issue with:
|
|
141
141
|
|
|
142
|
-
- Cairn version (`
|
|
142
|
+
- Cairn version (`docsgraph version`) and Python version.
|
|
143
143
|
- A minimal reproducer (ideally a small document and a command).
|
|
144
144
|
- Expected vs. actual behavior.
|
|
145
|
-
- Any error log lines (JSON-lines from `
|
|
145
|
+
- Any error log lines (JSON-lines from `docsgraph serve` are very helpful).
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docsgraph
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a4
|
|
4
4
|
Summary: Local-first documentation graph for AI agents. CodeGraph for docs, exposed through MCP.
|
|
5
|
-
Project-URL: Homepage, https://github.
|
|
5
|
+
Project-URL: Homepage, https://jokeuncle.github.io/cairn/
|
|
6
6
|
Project-URL: Documentation, https://github.com/jokeuncle/cairn/tree/main/docs
|
|
7
7
|
Project-URL: Repository, https://github.com/jokeuncle/cairn
|
|
8
8
|
Project-URL: Issues, https://github.com/jokeuncle/cairn/issues
|
|
@@ -260,11 +260,12 @@ Description-Content-Type: text/markdown
|
|
|
260
260
|
|
|
261
261
|
[](https://github.com/jokeuncle/cairn/actions/workflows/ci.yml)
|
|
262
262
|
[](LICENSE)
|
|
263
|
-
[](https://pypi.org/project/docsgraph/)
|
|
264
|
+
[](https://jokeuncle.github.io/cairn/)
|
|
264
265
|
[](https://www.python.org/)
|
|
265
266
|
[](https://modelcontextprotocol.io/)
|
|
266
267
|
|
|
267
|
-

|
|
268
269
|
|
|
269
270
|
Cairn is a **local-first, MCP-native DocsGraph** for software
|
|
270
271
|
repositories and large structured documents. It turns README files, specs,
|
|
@@ -282,9 +283,9 @@ The result: better retrieval accuracy, lower token spend, and a practical MCP
|
|
|
282
283
|
tool layer between your project documentation and every AI coding agent you
|
|
283
284
|
use. Local-first. Vendor-neutral. Designed for open-source repos.
|
|
284
285
|
|
|
285
|
-
> 🚀 **Alpha — `0.1.
|
|
286
|
+
> 🚀 **Alpha — `0.1.0a4`.** Markdown + PDF ingest, the core MCP tool set,
|
|
286
287
|
> the full structure-aware index (tree + summaries + entities + xrefs +
|
|
287
|
-
> vectors), repo-level `init/sync/status`, repo-scoped MCP with
|
|
288
|
+
> vectors), repo-level `init/sync/status`, repo-scoped MCP tools with
|
|
288
289
|
> `list_documents`, `search_documents`, `repo_context`, `repo_graph`, and
|
|
289
290
|
> `repo_impact`, failure-isolated sync, static graph inspector, Doubao
|
|
290
291
|
> multimodal embeddings, and a benchmark harness with headline numbers. See
|
|
@@ -308,6 +309,7 @@ For the in-depth motivation, see [`PRODUCT.md`](PRODUCT.md).
|
|
|
308
309
|
For the technical design, see [`ARCHITECTURE.md`](ARCHITECTURE.md).
|
|
309
310
|
For the public documentation quality contract Cairn optimizes for, see
|
|
310
311
|
[`docs/golden-docs-standard.md`](docs/golden-docs-standard.md).
|
|
312
|
+
The product website is published at <https://jokeuncle.github.io/cairn/>.
|
|
311
313
|
|
|
312
314
|
---
|
|
313
315
|
|
|
@@ -329,7 +331,11 @@ For the public documentation quality contract Cairn optimizes for, see
|
|
|
329
331
|
result carries stable anchors for verification.
|
|
330
332
|
|
|
331
333
|
A visual explainer comparing Cairn's approach to RAPTOR, BookRAG, and A-RAG
|
|
332
|
-
lives at
|
|
334
|
+
lives at
|
|
335
|
+
[`docs/retrieval-architecture-canvas.html`](docs/retrieval-architecture-canvas.html).
|
|
336
|
+
The repository workflow map lives at
|
|
337
|
+
[`docs/repo-docs-workflow-canvas.html`](docs/repo-docs-workflow-canvas.html).
|
|
338
|
+
Open either file in any browser.
|
|
333
339
|
|
|
334
340
|
---
|
|
335
341
|
|
|
@@ -352,6 +358,25 @@ Or run it without installing:
|
|
|
352
358
|
uvx docsgraph --help
|
|
353
359
|
```
|
|
354
360
|
|
|
361
|
+
AI agents that can run shell commands can install and wire Cairn into their own
|
|
362
|
+
MCP config. Start with a dry run, then write the config once the target path
|
|
363
|
+
looks right:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
uvx docsgraph init -y
|
|
367
|
+
uvx docsgraph sync --fake
|
|
368
|
+
uvx docsgraph install --client codex --dry-run --fake
|
|
369
|
+
uvx docsgraph install --client codex --yes --fake
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
Use `--client claude`, `--client cursor`, or `--client goose` for other MCP
|
|
373
|
+
clients. `docsgraph install` writes the same server config that
|
|
374
|
+
`docsgraph mcp config` prints, with `command = "docsgraph"` and
|
|
375
|
+
`args = ["serve"]`. The server resolves the current MCP workspace at call time,
|
|
376
|
+
so a global agent config does not stay pinned to the repo where it was installed.
|
|
377
|
+
Pass `--repo /path/to/repo` to `docsgraph install` or `docsgraph mcp config`
|
|
378
|
+
only when you intentionally want a fixed-repo MCP server.
|
|
379
|
+
|
|
355
380
|
### Repository Workflow
|
|
356
381
|
|
|
357
382
|
Inside any repository:
|
|
@@ -442,7 +467,7 @@ Markdown parser. This expands coverage to formats such as DOCX, PPTX, XLSX,
|
|
|
442
467
|
HTML, CSV, JSON, XML, and EPUB without making the base install heavy:
|
|
443
468
|
|
|
444
469
|
```bash
|
|
445
|
-
|
|
470
|
+
pip install "docsgraph[markitdown]"
|
|
446
471
|
.venv/bin/docsgraph init -y --force --markitdown
|
|
447
472
|
.venv/bin/docsgraph sync --fake
|
|
448
473
|
```
|
|
@@ -657,11 +682,13 @@ choices we adopted, modified, or declined.
|
|
|
657
682
|
| 4 — v0.4 polish for production | ☐ | DOCX/RTF/EPUB, VSCode extension, security review |
|
|
658
683
|
| v1.0 GA | ☐ | All `PRODUCT.md` §7 success criteria met |
|
|
659
684
|
|
|
660
|
-
Full plan: [`ROADMAP.md`](ROADMAP.md).
|
|
661
|
-
|
|
685
|
+
Full plan: [`ROADMAP.md`](ROADMAP.md). CI runs ruff, strict mypy, pytest, and
|
|
686
|
+
package build checks across Python 3.11, 3.12, and 3.13.
|
|
662
687
|
|
|
663
688
|
Maintainer release gate: [`docs/release-checklist.md`](docs/release-checklist.md).
|
|
664
689
|
|
|
690
|
+
Support and sponsorship options live in [`SUPPORT.md`](SUPPORT.md).
|
|
691
|
+
|
|
665
692
|
---
|
|
666
693
|
|
|
667
694
|
## Contributing
|