vault-graph 0.1.0__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.
- vault_graph-0.1.0/.github/workflows/ci.yml +27 -0
- vault_graph-0.1.0/.github/workflows/publish-pypi.yml +37 -0
- vault_graph-0.1.0/.github/workflows/publish-testpypi.yml +35 -0
- vault_graph-0.1.0/.gitignore +8 -0
- vault_graph-0.1.0/AGENTS.md +138 -0
- vault_graph-0.1.0/LICENSE +21 -0
- vault_graph-0.1.0/PKG-INFO +222 -0
- vault_graph-0.1.0/README.md +193 -0
- vault_graph-0.1.0/configs/vaults.yaml +13 -0
- vault_graph-0.1.0/docs/CONVENTIONS.md +129 -0
- vault_graph-0.1.0/docs/DECISIONS.md +397 -0
- vault_graph-0.1.0/docs/DESIGN.md +1754 -0
- vault_graph-0.1.0/docs/FEATURES.md +702 -0
- vault_graph-0.1.0/docs/PATCH_LOG.md +1991 -0
- vault_graph-0.1.0/docs/PUBLISHING.md +106 -0
- vault_graph-0.1.0/docs/SEARCH_ARCHITECTURE.md +418 -0
- vault_graph-0.1.0/docs/SPEC.md +2665 -0
- vault_graph-0.1.0/docs/stenc/.gitignore +9 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-05-phase-1-vault-catalog-metadata.plan.json +1554 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-08-phase-2a-retrieval-contract-vectorstore-boundary.plan.json +1232 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-08-phase-2b-local-vector-indexing.plan.json +1685 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-09-phase-2c-evidence-first-keyword-vector-search.plan.json +1763 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-10-phase-3a-graphstore-contract-readiness.plan.json +1519 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-11-phase-3b-local-entity-relationship-indexing.plan.json +1895 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-11-phase-3c-graph-projection-retrieval.plan.json +1875 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-12-phase-4a-context-pack-contract-builder-boundary.plan.json +1617 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-12-phase-4b-local-context-pack-assembly-rendering.plan.json +1348 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-15-phase-5a-mcp-server-foundation-stdio.plan.json +1466 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-17-phase-5b-mcp-resources-context-pack-resources.plan.json +1635 -0
- vault_graph-0.1.0/docs/stenc/content/plans/2026-06-18-phase-5c-mcp-tools-prompts-agent-workflows-ko.plan.json +828 -0
- vault_graph-0.1.0/docs/stenc/content/site.json +4 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-08-phase-2a-retrieval-contract-vectorstore-boundary-design.spec.json +937 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-08-phase-2b-local-vector-indexing-design.spec.json +854 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-09-phase-2c-evidence-first-keyword-vector-search-design.spec.json +806 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-10-phase-3-overview-design.spec.json +526 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-10-phase-3a-graphstore-contract-readiness-design.spec.json +885 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-10-phase-3b-local-entity-relationship-indexing-design.spec.json +906 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-10-phase-3c-graph-projection-retrieval-design.spec.json +931 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-12-phase-4-context-pack-overview-design.spec.json +517 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-12-phase-4a-context-pack-contract-builder-boundary-design.spec.json +717 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-12-phase-4b-local-context-pack-assembly-rendering-design.spec.json +645 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-15-phase-5-mcp-server-overview-design.spec.json +556 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-15-phase-5a-mcp-server-foundation-stdio-design.spec.json +699 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-15-phase-5b-mcp-resources-context-pack-resources-design.spec.json +1121 -0
- vault_graph-0.1.0/docs/stenc/content/specs/2026-06-15-phase-5c-mcp-tools-prompts-agent-workflows-design.spec.json +1430 -0
- vault_graph-0.1.0/docs/stenc/content/specs/specs-phase-3-context.spec.json +310 -0
- vault_graph-0.1.0/docs/stenc/content/specs/specs-phase-3-readme.spec.json +254 -0
- vault_graph-0.1.0/docs/stenc/content/specs/specs-phase-4-readme.spec.json +252 -0
- vault_graph-0.1.0/docs/stenc/content/specs/specs-phase-5-readme.spec.json +252 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-05-phase-1-vault-catalog-metadata.md +1783 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-08-phase-2a-retrieval-contract-vectorstore-boundary.md +1852 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-08-phase-2b-local-vector-indexing.md +2388 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-09-phase-2c-evidence-first-keyword-vector-search.md +2867 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-10-phase-3a-graphstore-contract-readiness.md +2708 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-11-phase-3b-local-entity-relationship-indexing.md +1896 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-11-phase-3c-graph-projection-retrieval.md +2755 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-12-phase-4a-context-pack-contract-builder-boundary.md +1545 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-12-phase-4b-local-context-pack-assembly-rendering.md +1774 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-15-phase-5a-mcp-server-foundation-stdio.md +1779 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-17-phase-5b-mcp-resources-context-pack-resources.md +1544 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-18-phase-5c-mcp-tools-prompts-agent-workflows-ko.md +827 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-18-phase-5c-mcp-tools-prompts-agent-workflows.md +2039 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-19-phase-6a-result-explanation-contract.md +1336 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-19-phase-6b-project-decision-issue-memory.md +1808 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-22-phase-6c-timeline-health-explorer.md +3056 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-23-acceptance-review-guide.md +649 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-23-implementation-success-criteria-acceptance-review.md +794 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-26-cli-todo-command-implementation.md +1475 -0
- vault_graph-0.1.0/docs/superpowers/plans/2026-06-26-evidence-first-ask-and-reasoning.md +1457 -0
- vault_graph-0.1.0/docs/superpowers/reviews/2026-06-23-implementation-success-criteria-acceptance-review-ko.md +220 -0
- vault_graph-0.1.0/docs/superpowers/reviews/2026-06-23-implementation-success-criteria-acceptance-review.md +218 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-08-phase-2a-retrieval-contract-vectorstore-boundary-design.md +742 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-08-phase-2b-local-vector-indexing-design.md +692 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-09-phase-2c-evidence-first-keyword-vector-search-design.md +612 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-24-cli-todo-command-implementation-design.md +715 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-25-evidence-first-ask-and-reasoning-design.md +1065 -0
- vault_graph-0.1.0/docs/superpowers/specs/2026-06-29-okf-compatible-vault-graph-projection-design.md +665 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/2026-06-10-phase-3-overview-design.md +180 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/2026-06-10-phase-3a-graphstore-contract-readiness-design.md +711 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/2026-06-10-phase-3b-local-entity-relationship-indexing-design.md +1021 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/2026-06-10-phase-3c-graph-projection-retrieval-design.md +1037 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/CONTEXT.md +122 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-3/README.md +26 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-4/2026-06-12-phase-4-context-pack-overview-design.md +155 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-4/2026-06-12-phase-4a-context-pack-contract-builder-boundary-design.md +528 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-4/2026-06-12-phase-4b-local-context-pack-assembly-rendering-design.md +312 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-4/README.md +23 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/2026-06-15-phase-5-mcp-server-overview-design.md +188 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/2026-06-15-phase-5a-mcp-server-foundation-stdio-design.md +276 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/2026-06-15-phase-5b-mcp-resources-context-pack-resources-design.md +822 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/2026-06-15-phase-5c-mcp-tools-prompts-agent-workflows-design.md +961 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/README.md +25 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-5/codex-local-stdio-config.example.json +17 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6-memory-and-explorer-views-overview-design-ko.md +230 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6-memory-and-explorer-views-overview-design.md +234 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6a-result-explanation-contract-design-ko.md +317 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6a-result-explanation-contract-design.md +317 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6b-project-decision-issue-memory-design-ko.md +976 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6b-project-decision-issue-memory-design.md +995 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6c-timeline-health-explorer-design-ko.md +858 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/2026-06-18-phase-6c-timeline-health-explorer-design.md +873 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/README-ko.md +32 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-6/README.md +31 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-7/2026-06-23-phase-7b-timeline-health-ui-design.md +369 -0
- vault_graph-0.1.0/docs/superpowers/specs/phase-7/2026-06-23-phase-7c-decision-agent-workspace-design.md +439 -0
- vault_graph-0.1.0/open-docs.sh +155 -0
- vault_graph-0.1.0/pyproject.toml +71 -0
- vault_graph-0.1.0/src/vault_graph/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/answer/__init__.py +90 -0
- vault_graph-0.1.0/src/vault_graph/answer/answer_composer.py +76 -0
- vault_graph-0.1.0/src/vault_graph/answer/answer_plan.py +113 -0
- vault_graph-0.1.0/src/vault_graph/answer/answer_renderer.py +106 -0
- vault_graph-0.1.0/src/vault_graph/answer/answer_response.py +237 -0
- vault_graph-0.1.0/src/vault_graph/answer/citation_guard.py +36 -0
- vault_graph-0.1.0/src/vault_graph/answer/evidence_planner.py +475 -0
- vault_graph-0.1.0/src/vault_graph/app/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/app/answer_service.py +63 -0
- vault_graph-0.1.0/src/vault_graph/app/catalog_service.py +65 -0
- vault_graph-0.1.0/src/vault_graph/app/graph_readiness_service.py +460 -0
- vault_graph-0.1.0/src/vault_graph/app/graph_resource_service.py +240 -0
- vault_graph-0.1.0/src/vault_graph/app/graph_retrieval_service.py +1025 -0
- vault_graph-0.1.0/src/vault_graph/app/index_service.py +471 -0
- vault_graph-0.1.0/src/vault_graph/app/local_index_service_factory.py +86 -0
- vault_graph-0.1.0/src/vault_graph/app/path_guard.py +40 -0
- vault_graph-0.1.0/src/vault_graph/app/query_scope_resolution.py +3 -0
- vault_graph-0.1.0/src/vault_graph/app/read_only_service_factory.py +337 -0
- vault_graph-0.1.0/src/vault_graph/app/search_readiness_service.py +146 -0
- vault_graph-0.1.0/src/vault_graph/app/setup_service.py +127 -0
- vault_graph-0.1.0/src/vault_graph/app/watch_service.py +92 -0
- vault_graph-0.1.0/src/vault_graph/cli/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/cli/main.py +1328 -0
- vault_graph-0.1.0/src/vault_graph/context/__init__.py +125 -0
- vault_graph-0.1.0/src/vault_graph/context/context_pack.py +356 -0
- vault_graph-0.1.0/src/vault_graph/context/context_pack_builder.py +633 -0
- vault_graph-0.1.0/src/vault_graph/context/context_pack_renderer.py +221 -0
- vault_graph-0.1.0/src/vault_graph/context/context_pack_serialization.py +107 -0
- vault_graph-0.1.0/src/vault_graph/context/context_pack_warnings.py +157 -0
- vault_graph-0.1.0/src/vault_graph/embeddings/__init__.py +21 -0
- vault_graph-0.1.0/src/vault_graph/embeddings/fastembed_text_embeddings.py +173 -0
- vault_graph-0.1.0/src/vault_graph/embeddings/text_embeddings.py +57 -0
- vault_graph-0.1.0/src/vault_graph/errors.py +94 -0
- vault_graph-0.1.0/src/vault_graph/extraction/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/extraction/entity_extractor.py +308 -0
- vault_graph-0.1.0/src/vault_graph/extraction/graph_occurrences.py +119 -0
- vault_graph-0.1.0/src/vault_graph/extraction/graph_source_store.py +130 -0
- vault_graph-0.1.0/src/vault_graph/extraction/relationship_extractor.py +175 -0
- vault_graph-0.1.0/src/vault_graph/graph/__init__.py +49 -0
- vault_graph-0.1.0/src/vault_graph/graph/graph_contracts.py +416 -0
- vault_graph-0.1.0/src/vault_graph/graph/graph_identity.py +78 -0
- vault_graph-0.1.0/src/vault_graph/graph/graph_query.py +114 -0
- vault_graph-0.1.0/src/vault_graph/graph/graph_readiness.py +56 -0
- vault_graph-0.1.0/src/vault_graph/http/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/http/http_errors.py +119 -0
- vault_graph-0.1.0/src/vault_graph/http/http_explanation_serialization.py +612 -0
- vault_graph-0.1.0/src/vault_graph/http/http_serialization.py +58 -0
- vault_graph-0.1.0/src/vault_graph/http/http_server.py +297 -0
- vault_graph-0.1.0/src/vault_graph/http/http_service_factory.py +48 -0
- vault_graph-0.1.0/src/vault_graph/indexing/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/indexing/graph_indexer.py +732 -0
- vault_graph-0.1.0/src/vault_graph/indexing/metadata_indexer.py +155 -0
- vault_graph-0.1.0/src/vault_graph/indexing/revision_planner.py +21 -0
- vault_graph-0.1.0/src/vault_graph/indexing/vector_indexer.py +321 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/document_normalizer.py +92 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/markdown_parser.py +40 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/query_scope_resolution.py +30 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/vault_catalog.py +188 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/vault_frontmatter_reader.py +31 -0
- vault_graph-0.1.0/src/vault_graph/ingestion/vault_loader.py +66 -0
- vault_graph-0.1.0/src/vault_graph/mcp/__init__.py +173 -0
- vault_graph-0.1.0/src/vault_graph/mcp/context_pack_resource_cache.py +79 -0
- vault_graph-0.1.0/src/vault_graph/mcp/graph_resource_reader.py +176 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_answer_serialization.py +142 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_config_examples.py +36 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_config_registration.py +153 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_errors.py +197 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_memory_serialization.py +418 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_prompts.py +235 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_resources.py +431 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_scope.py +76 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_server.py +127 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_service_factory.py +92 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_tool_serialization.py +895 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_tools.py +1108 -0
- vault_graph-0.1.0/src/vault_graph/mcp/mcp_uri.py +220 -0
- vault_graph-0.1.0/src/vault_graph/mcp/metadata_resource_reader.py +234 -0
- vault_graph-0.1.0/src/vault_graph/mcp/result_explanation_cache.py +5 -0
- vault_graph-0.1.0/src/vault_graph/memory/__init__.py +263 -0
- vault_graph-0.1.0/src/vault_graph/memory/decision_memory.py +395 -0
- vault_graph-0.1.0/src/vault_graph/memory/health_explorer.py +292 -0
- vault_graph-0.1.0/src/vault_graph/memory/issue_memory.py +293 -0
- vault_graph-0.1.0/src/vault_graph/memory/memory_models.py +300 -0
- vault_graph-0.1.0/src/vault_graph/memory/memory_request_context.py +69 -0
- vault_graph-0.1.0/src/vault_graph/memory/memory_source_reader.py +159 -0
- vault_graph-0.1.0/src/vault_graph/memory/project_memory.py +404 -0
- vault_graph-0.1.0/src/vault_graph/memory/result_explanation.py +232 -0
- vault_graph-0.1.0/src/vault_graph/memory/result_explanation_cache.py +58 -0
- vault_graph-0.1.0/src/vault_graph/memory/timeline_memory.py +648 -0
- vault_graph-0.1.0/src/vault_graph/projection/__init__.py +51 -0
- vault_graph-0.1.0/src/vault_graph/projection/graph_projection.py +105 -0
- vault_graph-0.1.0/src/vault_graph/projection/rustworkx_projection.py +249 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/__init__.py +73 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/graph_candidates.py +96 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/graph_retrieval.py +158 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/retrieval_candidate.py +24 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/retrieval_result.py +113 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/retrieval_service.py +474 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/search_readiness.py +30 -0
- vault_graph-0.1.0/src/vault_graph/retrieval/search_response.py +101 -0
- vault_graph-0.1.0/src/vault_graph/storage/__init__.py +1 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/__init__.py +27 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/graph_store.py +73 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/keyword_index.py +57 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/metadata_store.py +83 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/store_health.py +10 -0
- vault_graph-0.1.0/src/vault_graph/storage/interfaces/vector_store.py +150 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/__init__.py +5 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/chroma_vector_store.py +531 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/graph_status_store.py +99 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/sqlite_graph_store.py +1822 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/sqlite_keyword_index.py +283 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/sqlite_metadata_store.py +545 -0
- vault_graph-0.1.0/src/vault_graph/storage/local/vector_status_store.py +98 -0
- vault_graph-0.1.0/tests/__init__.py +1 -0
- vault_graph-0.1.0/tests/conftest.py +11 -0
- vault_graph-0.1.0/tests/fakes/__init__.py +1 -0
- vault_graph-0.1.0/tests/fakes/deterministic_text_embeddings.py +41 -0
- vault_graph-0.1.0/tests/fakes/in_memory_graph_store.py +673 -0
- vault_graph-0.1.0/tests/fakes/in_memory_keyword_index.py +56 -0
- vault_graph-0.1.0/tests/fakes/in_memory_vector_store.py +127 -0
- vault_graph-0.1.0/tests/fakes/search_readiness.py +44 -0
- vault_graph-0.1.0/tests/test_acceptance_success_criteria.py +220 -0
- vault_graph-0.1.0/tests/test_answer_composer.py +106 -0
- vault_graph-0.1.0/tests/test_answer_import_boundaries.py +26 -0
- vault_graph-0.1.0/tests/test_answer_plan_contract.py +77 -0
- vault_graph-0.1.0/tests/test_answer_renderer.py +55 -0
- vault_graph-0.1.0/tests/test_answer_response_contract.py +175 -0
- vault_graph-0.1.0/tests/test_answer_service.py +117 -0
- vault_graph-0.1.0/tests/test_app_search_readiness_service.py +98 -0
- vault_graph-0.1.0/tests/test_chroma_vector_store.py +257 -0
- vault_graph-0.1.0/tests/test_citation_guard.py +100 -0
- vault_graph-0.1.0/tests/test_cli_ask.py +105 -0
- vault_graph-0.1.0/tests/test_cli_catalog_metadata.py +133 -0
- vault_graph-0.1.0/tests/test_cli_context.py +607 -0
- vault_graph-0.1.0/tests/test_cli_decision_trace.py +246 -0
- vault_graph-0.1.0/tests/test_cli_graph_indexing.py +124 -0
- vault_graph-0.1.0/tests/test_cli_graph_status.py +84 -0
- vault_graph-0.1.0/tests/test_cli_mcp_config.py +59 -0
- vault_graph-0.1.0/tests/test_cli_mcp_serve.py +90 -0
- vault_graph-0.1.0/tests/test_cli_related.py +249 -0
- vault_graph-0.1.0/tests/test_cli_search.py +286 -0
- vault_graph-0.1.0/tests/test_cli_setup.py +36 -0
- vault_graph-0.1.0/tests/test_cli_surface_boundary.py +33 -0
- vault_graph-0.1.0/tests/test_cli_vector_indexing.py +119 -0
- vault_graph-0.1.0/tests/test_cli_watch.py +76 -0
- vault_graph-0.1.0/tests/test_context_pack_builder.py +699 -0
- vault_graph-0.1.0/tests/test_context_pack_contract.py +195 -0
- vault_graph-0.1.0/tests/test_context_pack_docs_contract.py +53 -0
- vault_graph-0.1.0/tests/test_context_pack_evidence_budget.py +160 -0
- vault_graph-0.1.0/tests/test_context_pack_import_boundaries.py +78 -0
- vault_graph-0.1.0/tests/test_context_pack_read_only_boundary.py +44 -0
- vault_graph-0.1.0/tests/test_context_pack_renderer.py +113 -0
- vault_graph-0.1.0/tests/test_context_pack_resource_cache.py +79 -0
- vault_graph-0.1.0/tests/test_context_pack_serialization.py +121 -0
- vault_graph-0.1.0/tests/test_context_pack_warnings.py +149 -0
- vault_graph-0.1.0/tests/test_decision_memory_service.py +297 -0
- vault_graph-0.1.0/tests/test_document_normalizer.py +75 -0
- vault_graph-0.1.0/tests/test_entity_extractor.py +143 -0
- vault_graph-0.1.0/tests/test_evidence_planner.py +144 -0
- vault_graph-0.1.0/tests/test_fastembed_text_embeddings.py +152 -0
- vault_graph-0.1.0/tests/test_graph_contracts.py +158 -0
- vault_graph-0.1.0/tests/test_graph_indexer.py +310 -0
- vault_graph-0.1.0/tests/test_graph_indexing_read_only_boundary.py +80 -0
- vault_graph-0.1.0/tests/test_graph_occurrences.py +98 -0
- vault_graph-0.1.0/tests/test_graph_projection.py +298 -0
- vault_graph-0.1.0/tests/test_graph_query_contract.py +97 -0
- vault_graph-0.1.0/tests/test_graph_readiness.py +460 -0
- vault_graph-0.1.0/tests/test_graph_resource_reader.py +307 -0
- vault_graph-0.1.0/tests/test_graph_retrieval_contract.py +150 -0
- vault_graph-0.1.0/tests/test_graph_retrieval_read_only_boundary.py +118 -0
- vault_graph-0.1.0/tests/test_graph_retrieval_service.py +603 -0
- vault_graph-0.1.0/tests/test_graph_source_store.py +68 -0
- vault_graph-0.1.0/tests/test_graph_status_store.py +52 -0
- vault_graph-0.1.0/tests/test_graph_store_contract.py +674 -0
- vault_graph-0.1.0/tests/test_health_explorer_service.py +111 -0
- vault_graph-0.1.0/tests/test_http_server.py +96 -0
- vault_graph-0.1.0/tests/test_index_service_graph_reconcile.py +211 -0
- vault_graph-0.1.0/tests/test_index_service_vector_reconcile.py +151 -0
- vault_graph-0.1.0/tests/test_issue_memory_service.py +178 -0
- vault_graph-0.1.0/tests/test_keyword_index_contract.py +48 -0
- vault_graph-0.1.0/tests/test_mcp_ask_vault.py +77 -0
- vault_graph-0.1.0/tests/test_mcp_config_examples.py +38 -0
- vault_graph-0.1.0/tests/test_mcp_config_registration.py +69 -0
- vault_graph-0.1.0/tests/test_mcp_current_context_resource.py +132 -0
- vault_graph-0.1.0/tests/test_mcp_errors.py +88 -0
- vault_graph-0.1.0/tests/test_mcp_explain_result.py +156 -0
- vault_graph-0.1.0/tests/test_mcp_import_boundaries.py +179 -0
- vault_graph-0.1.0/tests/test_mcp_memory_tools.py +379 -0
- vault_graph-0.1.0/tests/test_mcp_prompts.py +83 -0
- vault_graph-0.1.0/tests/test_mcp_recent_changes_tool.py +157 -0
- vault_graph-0.1.0/tests/test_mcp_resource_read_only_boundary.py +131 -0
- vault_graph-0.1.0/tests/test_mcp_resources.py +177 -0
- vault_graph-0.1.0/tests/test_mcp_result_explanation_cache.py +75 -0
- vault_graph-0.1.0/tests/test_mcp_scope.py +86 -0
- vault_graph-0.1.0/tests/test_mcp_server.py +68 -0
- vault_graph-0.1.0/tests/test_mcp_service_factory.py +347 -0
- vault_graph-0.1.0/tests/test_mcp_stdio_smoke.py +70 -0
- vault_graph-0.1.0/tests/test_mcp_timeline_resource.py +50 -0
- vault_graph-0.1.0/tests/test_mcp_tool_read_only_boundary.py +224 -0
- vault_graph-0.1.0/tests/test_mcp_tool_serialization.py +412 -0
- vault_graph-0.1.0/tests/test_mcp_tools.py +632 -0
- vault_graph-0.1.0/tests/test_mcp_uri.py +117 -0
- vault_graph-0.1.0/tests/test_memory_models.py +188 -0
- vault_graph-0.1.0/tests/test_memory_request_context.py +118 -0
- vault_graph-0.1.0/tests/test_memory_source_reader.py +159 -0
- vault_graph-0.1.0/tests/test_metadata_chunk_listing.py +88 -0
- vault_graph-0.1.0/tests/test_metadata_evidence_resolution.py +193 -0
- vault_graph-0.1.0/tests/test_metadata_indexer.py +155 -0
- vault_graph-0.1.0/tests/test_metadata_resource_reader.py +344 -0
- vault_graph-0.1.0/tests/test_multi_vault_graph_identity.py +168 -0
- vault_graph-0.1.0/tests/test_multi_vault_graph_indexing.py +53 -0
- vault_graph-0.1.0/tests/test_multi_vault_graph_retrieval.py +212 -0
- vault_graph-0.1.0/tests/test_multi_vault_identity.py +49 -0
- vault_graph-0.1.0/tests/test_multi_vault_search.py +60 -0
- vault_graph-0.1.0/tests/test_naming_conventions.py +51 -0
- vault_graph-0.1.0/tests/test_package_import.py +12 -0
- vault_graph-0.1.0/tests/test_project_memory_service.py +264 -0
- vault_graph-0.1.0/tests/test_query_scope_resolution.py +56 -0
- vault_graph-0.1.0/tests/test_read_only_boundary.py +135 -0
- vault_graph-0.1.0/tests/test_relationship_extractor.py +177 -0
- vault_graph-0.1.0/tests/test_result_explanation.py +192 -0
- vault_graph-0.1.0/tests/test_retrieval_import_boundaries.py +65 -0
- vault_graph-0.1.0/tests/test_retrieval_result_contract.py +275 -0
- vault_graph-0.1.0/tests/test_retrieval_service_search.py +497 -0
- vault_graph-0.1.0/tests/test_search_include_graph.py +208 -0
- vault_graph-0.1.0/tests/test_search_read_only_boundary.py +59 -0
- vault_graph-0.1.0/tests/test_search_response_contract.py +137 -0
- vault_graph-0.1.0/tests/test_setup_service.py +110 -0
- vault_graph-0.1.0/tests/test_sqlite_graph_store.py +216 -0
- vault_graph-0.1.0/tests/test_sqlite_keyword_index.py +128 -0
- vault_graph-0.1.0/tests/test_sqlite_metadata_store.py +405 -0
- vault_graph-0.1.0/tests/test_text_embeddings_contract.py +127 -0
- vault_graph-0.1.0/tests/test_timeline_memory_service.py +301 -0
- vault_graph-0.1.0/tests/test_vault_catalog.py +97 -0
- vault_graph-0.1.0/tests/test_vault_loader.py +97 -0
- vault_graph-0.1.0/tests/test_vector_indexer.py +161 -0
- vault_graph-0.1.0/tests/test_vector_indexing_read_only_boundary.py +71 -0
- vault_graph-0.1.0/tests/test_vector_store_contract.py +438 -0
- vault_graph-0.1.0/tests/test_watch_service.py +45 -0
- vault_graph-0.1.0/uv.lock +2879 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
verify:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: astral-sh/setup-uv@v6
|
|
18
|
+
- name: Lint
|
|
19
|
+
run: uv run --python 3.12 ruff check src tests
|
|
20
|
+
- name: Type check
|
|
21
|
+
run: uv run --python 3.12 mypy src tests
|
|
22
|
+
- name: Test
|
|
23
|
+
run: uv run --python 3.12 pytest -q
|
|
24
|
+
- name: Build distributions
|
|
25
|
+
run: uv build
|
|
26
|
+
- name: Check distributions
|
|
27
|
+
run: uv run --python 3.12 --with twine python -m twine check dist/*
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: publish-pypi
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types:
|
|
6
|
+
- published
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: publish-pypi
|
|
13
|
+
cancel-in-progress: false
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
publish:
|
|
17
|
+
if: github.repository == 'cutehackers/vault-graph'
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
environment: pypi
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
id-token: write
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
- uses: astral-sh/setup-uv@v6
|
|
26
|
+
- name: Lint
|
|
27
|
+
run: uv run --python 3.12 ruff check src tests
|
|
28
|
+
- name: Type check
|
|
29
|
+
run: uv run --python 3.12 mypy src tests
|
|
30
|
+
- name: Test
|
|
31
|
+
run: uv run --python 3.12 pytest -q
|
|
32
|
+
- name: Build distributions
|
|
33
|
+
run: uv build
|
|
34
|
+
- name: Check distributions
|
|
35
|
+
run: uv run --python 3.12 --with twine python -m twine check dist/*
|
|
36
|
+
- name: Publish to PyPI
|
|
37
|
+
run: uv publish --trusted-publishing always
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: publish-testpypi
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: publish-testpypi
|
|
11
|
+
cancel-in-progress: false
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
publish:
|
|
15
|
+
if: github.repository == 'cutehackers/vault-graph'
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
environment: testpypi
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
id-token: write
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
- uses: astral-sh/setup-uv@v6
|
|
24
|
+
- name: Lint
|
|
25
|
+
run: uv run --python 3.12 ruff check src tests
|
|
26
|
+
- name: Type check
|
|
27
|
+
run: uv run --python 3.12 mypy src tests
|
|
28
|
+
- name: Test
|
|
29
|
+
run: uv run --python 3.12 pytest -q
|
|
30
|
+
- name: Build distributions
|
|
31
|
+
run: uv build
|
|
32
|
+
- name: Check distributions
|
|
33
|
+
run: uv run --python 3.12 --with twine python -m twine check dist/*
|
|
34
|
+
- name: Publish to TestPyPI
|
|
35
|
+
run: uv publish --publish-url https://test.pypi.org/legacy/ --trusted-publishing always
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Project Boundary
|
|
4
|
+
|
|
5
|
+
Vault Graph is a read-only, rebuildable access layer over Vault. Do not make
|
|
6
|
+
Vault Graph a durable knowledge source, and do not add behavior that edits,
|
|
7
|
+
renames, rewrites, or deletes Vault content.
|
|
8
|
+
|
|
9
|
+
## Source Documents
|
|
10
|
+
|
|
11
|
+
- Read `docs/SPEC.md` before changing architecture, indexing, retrieval, graph,
|
|
12
|
+
or context-pack behavior.
|
|
13
|
+
- Follow `docs/CONVENTIONS.md` for Python style and naming.
|
|
14
|
+
|
|
15
|
+
## Documentation Operation Rules
|
|
16
|
+
|
|
17
|
+
Use these rules when writing specs, implementation plans, or prompt templates.
|
|
18
|
+
|
|
19
|
+
- Keep prompt templates compact. Move repeatable repository policy here instead
|
|
20
|
+
of duplicating it inside every goal prompt.
|
|
21
|
+
- `docs/PATCH_LOG.md` records corrections made after review or verification.
|
|
22
|
+
Use it only when a plan, spec, or implementation is changed because a mismatch,
|
|
23
|
+
defect, or risk was found.
|
|
24
|
+
- New patch entries must match the existing project style:
|
|
25
|
+
`## YYYY-MM-DD - <Short Title>`, then `**Trigger:**`, `**Scope:**`,
|
|
26
|
+
`**Core Values Protected:**`, `**Changes Applied:**`, and
|
|
27
|
+
`**Verification:**`.
|
|
28
|
+
- `docs/DECISIONS.md` records accepted product, architecture, and policy
|
|
29
|
+
decisions only. Do not add pending decisions there.
|
|
30
|
+
- If a decision needs user judgment, keep it in the active plan under
|
|
31
|
+
`Open Decisions` with context, options, trade-offs, and a recommendation.
|
|
32
|
+
Move it to `docs/DECISIONS.md` only after approval, using the existing
|
|
33
|
+
`Question`, `Decision`, `Reason`, and `Implications` style.
|
|
34
|
+
- For both logs, be short, specific, and evidence-linked. Do not copy long
|
|
35
|
+
implementation-plan content into them.
|
|
36
|
+
|
|
37
|
+
## 🤖 Software Engineering Philosophy
|
|
38
|
+
|
|
39
|
+
> **Core Principle:**
|
|
40
|
+
> "Always prioritize **'Deep Modules'**, **'Less Complexity'**, and **'Changeability'** over quick implementations."
|
|
41
|
+
|
|
42
|
+
### 1. Complexity & Changeability
|
|
43
|
+
|
|
44
|
+
- **Definition of Complexity:** Anything in the software structure that makes it hard to understand or modify.
|
|
45
|
+
- **The Goal:** Maintain a codebase where changes are easy and predictable. A good codebase is one that rewards future development rather than punishing it.
|
|
46
|
+
- **Anti-Entropy:** Actively resist "Software Entropy." Do not just add code; improve the design with every change. If a task increases entropy, **refactor first**, then implement.
|
|
47
|
+
|
|
48
|
+
### 2. Deep Modules vs. Shallow Modules
|
|
49
|
+
|
|
50
|
+
- **Deep Modules (Preferred):** High functionality hidden behind a simple, stable interface. These modules encapsulate complexity and reduce the cognitive load for both humans and AI.
|
|
51
|
+
- **Shallow Modules (Avoid):** Small pieces of code with complex interfaces that expose internal logic. These lead to fragmented, fragile systems.
|
|
52
|
+
- **Information Hiding:** Hide implementation details. The consumer of a module should never need to know _how_ it works, only _what_ it does.
|
|
53
|
+
|
|
54
|
+
### 3. Strategic Programming
|
|
55
|
+
|
|
56
|
+
- **Think Strategically:** Don't just solve the immediate problem (Tactical Programming). Design for the long-term health of the system.
|
|
57
|
+
- **Shared Design Concept:** Before coding, ensure a shared understanding of the architecture. Reach a "shared mental model" through rigorous planning and questioning (e.g., "Grilling" process).
|
|
58
|
+
- **Ubiquitous Language:** Use consistent terminology across documentation, design, and code to minimize communication gaps.
|
|
59
|
+
|
|
60
|
+
### 4. Development Workflow & Safety
|
|
61
|
+
|
|
62
|
+
- **Test-Driven Safety:** Use **TDD** and **Static Typing** (like Dart/Flutter) as a "speed limit." Never outrun your headlights; take small, verifiable steps.
|
|
63
|
+
- **Interface-First:** Focus on designing robust interfaces. Delegate the tactical implementation to the AI while keeping it strictly within the defined boundaries.
|
|
64
|
+
- **Modern Standards:** Always prioritize improved versions of methods and current industry standards over legacy or deprecated patterns.
|
|
65
|
+
|
|
66
|
+
### 5. Human-AI Collaboration Role
|
|
67
|
+
|
|
68
|
+
- **Human:** **Strategic Leader & Architect.** Focus on high-level design, module boundaries, and complexity management.
|
|
69
|
+
- **AI:** **Tactical Programmer.** Execute implementation details, refactor according to the philosophy, and ensure code adheres to the strategic boundaries.
|
|
70
|
+
|
|
71
|
+
## Coding Guidelines
|
|
72
|
+
|
|
73
|
+
**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.
|
|
74
|
+
|
|
75
|
+
### 1. Think Before Coding
|
|
76
|
+
|
|
77
|
+
**Don't assume. Don't hide confusion. Surface tradeoffs.**
|
|
78
|
+
|
|
79
|
+
Before implementing:
|
|
80
|
+
|
|
81
|
+
- State your assumptions explicitly. If uncertain, ask.
|
|
82
|
+
- If multiple interpretations exist, present them - don't pick silently.
|
|
83
|
+
- If a simpler approach exists, say so. Push back when warranted.
|
|
84
|
+
- If something is unclear, stop. Name what's confusing. Ask.
|
|
85
|
+
|
|
86
|
+
### 2. Simplicity First
|
|
87
|
+
|
|
88
|
+
**Minimum code that solves the problem. Nothing speculative.**
|
|
89
|
+
|
|
90
|
+
- No features beyond what was asked.
|
|
91
|
+
- No abstractions for single-use code.
|
|
92
|
+
- No "flexibility" or "configurability" that wasn't requested.
|
|
93
|
+
- No error handling for impossible scenarios.
|
|
94
|
+
- If you write 200 lines and it could be 50, rewrite it.
|
|
95
|
+
|
|
96
|
+
Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
|
|
97
|
+
|
|
98
|
+
### 3. Surgical Changes
|
|
99
|
+
|
|
100
|
+
**Touch only what you must. Clean up only your own mess.**
|
|
101
|
+
|
|
102
|
+
When editing existing code:
|
|
103
|
+
|
|
104
|
+
- Don't "improve" adjacent code, comments, or formatting.
|
|
105
|
+
- Don't refactor things that aren't broken.
|
|
106
|
+
- Match existing style, even if you'd do it differently.
|
|
107
|
+
- If you notice unrelated dead code, mention it - don't delete it.
|
|
108
|
+
|
|
109
|
+
When your changes create orphans:
|
|
110
|
+
|
|
111
|
+
- Remove imports/variables/functions that YOUR changes made unused.
|
|
112
|
+
- Don't remove pre-existing dead code unless asked.
|
|
113
|
+
|
|
114
|
+
The test: Every changed line should trace directly to the user's request.
|
|
115
|
+
|
|
116
|
+
### 4. Goal-Driven Execution
|
|
117
|
+
|
|
118
|
+
**Define success criteria. Loop until verified.**
|
|
119
|
+
|
|
120
|
+
Transform tasks into verifiable goals:
|
|
121
|
+
|
|
122
|
+
- "Add validation" → "Write tests for invalid inputs, then make them pass"
|
|
123
|
+
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
|
|
124
|
+
- "Refactor X" → "Ensure tests pass before and after"
|
|
125
|
+
|
|
126
|
+
For multi-step tasks, state a brief plan:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
1. [Step] → verify: [check]
|
|
130
|
+
2. [Step] → verify: [check]
|
|
131
|
+
3. [Step] → verify: [check]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
**These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jun Hyoung Lee
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vault-graph
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Read-only, rebuildable knowledge access layer over Vault.
|
|
5
|
+
Project-URL: Homepage, https://github.com/cutehackers/vault-graph
|
|
6
|
+
Project-URL: Repository, https://github.com/cutehackers/vault-graph
|
|
7
|
+
Project-URL: Issues, https://github.com/cutehackers/vault-graph/issues
|
|
8
|
+
Author: Jun Hyoung Lee
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Text Processing :: Indexing
|
|
18
|
+
Requires-Python: >=3.12
|
|
19
|
+
Requires-Dist: chromadb<2.0,>=1.5.9
|
|
20
|
+
Requires-Dist: fastapi<1,>=0.115
|
|
21
|
+
Requires-Dist: fastembed<1.0,>=0.8.0
|
|
22
|
+
Requires-Dist: huggingface-hub<1.0,>=0.31
|
|
23
|
+
Requires-Dist: mcp<2,>=1.27
|
|
24
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
25
|
+
Requires-Dist: rustworkx<1.0,>=0.17
|
|
26
|
+
Requires-Dist: typer>=0.12.5
|
|
27
|
+
Requires-Dist: uvicorn<1,>=0.30
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# Vault Graph
|
|
31
|
+
|
|
32
|
+
Status: Active local development
|
|
33
|
+
|
|
34
|
+
Vault Graph is a read-only, rebuildable knowledge access layer over Vault.
|
|
35
|
+
|
|
36
|
+
It helps humans and agents search Vault, trace decisions, inspect project
|
|
37
|
+
memory, and build task-specific context packs without turning retrieval output
|
|
38
|
+
into durable knowledge.
|
|
39
|
+
|
|
40
|
+
Vault remains the source of truth. Vault Graph reads, indexes, retrieves, and
|
|
41
|
+
explains Vault-derived context. It does not publish wiki pages, mutate raw
|
|
42
|
+
sources, edit Vault documents, or replace Vault's validation workflow.
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
Prerequisites:
|
|
47
|
+
|
|
48
|
+
- Python 3.12+
|
|
49
|
+
- [`uv`](https://docs.astral.sh/uv/)
|
|
50
|
+
|
|
51
|
+
Current source-checkout install:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
git clone git@me.github.com:cutehackers/vault-graph.git
|
|
55
|
+
cd vault-graph
|
|
56
|
+
uv sync
|
|
57
|
+
uv run --python 3.12 vg --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Optional local command install from this checkout:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
uv tool install -e .
|
|
64
|
+
vg --help
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
PyPI registration is not required to use the current source checkout. It becomes
|
|
68
|
+
necessary only when Vault Graph wants to promise this public install path:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
uv tool install vault-graph
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Do not advertise the PyPI command as the primary install path until the package
|
|
75
|
+
has been published.
|
|
76
|
+
|
|
77
|
+
## Quick Start
|
|
78
|
+
|
|
79
|
+
Keep Vault Graph state outside your Vault:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
vg init --vault /path/to/llm-wiki --state ~/.vault-graph
|
|
83
|
+
vg index --state ~/.vault-graph
|
|
84
|
+
vg status --state ~/.vault-graph
|
|
85
|
+
vg search --state ~/.vault-graph "GraphRAG"
|
|
86
|
+
vg context --state ~/.vault-graph "Implement GraphRAG MVP"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The first index builds local metadata, keyword, vector, and graph projections.
|
|
90
|
+
Vault Graph uses local storage and local embeddings by default; it does not
|
|
91
|
+
require hosted services for normal use.
|
|
92
|
+
|
|
93
|
+
## Common Commands
|
|
94
|
+
|
|
95
|
+
| Goal | Command |
|
|
96
|
+
| --- | --- |
|
|
97
|
+
| Register a Vault | `vg init --vault /path/to/llm-wiki --state ~/.vault-graph` |
|
|
98
|
+
| Add another Vault | `vg vault add work --path /path/to/other-vault --state ~/.vault-graph` |
|
|
99
|
+
| List Vaults | `vg vault list --state ~/.vault-graph` |
|
|
100
|
+
| Index the active Vault | `vg index --state ~/.vault-graph` |
|
|
101
|
+
| Index one Vault | `vg index --vault-id work --state ~/.vault-graph` |
|
|
102
|
+
| Index all Vaults | `vg index --all-vaults --state ~/.vault-graph` |
|
|
103
|
+
| Check health | `vg status --state ~/.vault-graph` |
|
|
104
|
+
| Search evidence | `vg search --state ~/.vault-graph "query"` |
|
|
105
|
+
| Include graph signals | `vg search --include-graph --state ~/.vault-graph "query"` |
|
|
106
|
+
| Ask with evidence | `vg ask --state ~/.vault-graph "question"` |
|
|
107
|
+
| Build a context pack | `vg context --state ~/.vault-graph "goal"` |
|
|
108
|
+
| Find related items | `vg related --state ~/.vault-graph GraphRAG` |
|
|
109
|
+
| Trace a decision | `vg decision-trace --state ~/.vault-graph GraphRAG` |
|
|
110
|
+
|
|
111
|
+
Commands that accept `--vault-id` operate on one registered Vault. Commands that
|
|
112
|
+
accept `--all-vaults` expand to all enabled registered Vaults. Commands without
|
|
113
|
+
either option use the active Vault.
|
|
114
|
+
|
|
115
|
+
## Connect An Agent Through MCP
|
|
116
|
+
|
|
117
|
+
MCP server installation and MCP server registration are different things:
|
|
118
|
+
|
|
119
|
+
- installation makes the `vg` command available
|
|
120
|
+
- registration tells an agent how to start `vg serve --mcp`
|
|
121
|
+
|
|
122
|
+
After indexing your Vault, register this stdio server in the agent's MCP config:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"vault-graph": {
|
|
128
|
+
"command": "uv",
|
|
129
|
+
"args": [
|
|
130
|
+
"run",
|
|
131
|
+
"--python",
|
|
132
|
+
"3.12",
|
|
133
|
+
"vg",
|
|
134
|
+
"serve",
|
|
135
|
+
"--mcp",
|
|
136
|
+
"--state",
|
|
137
|
+
"/path/to/.vault-graph"
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
The current Codex-style example lives at
|
|
145
|
+
[`docs/superpowers/specs/phase-5/codex-local-stdio-config.example.json`](docs/superpowers/specs/phase-5/codex-local-stdio-config.example.json).
|
|
146
|
+
|
|
147
|
+
Once connected, the agent can use these MCP tools:
|
|
148
|
+
|
|
149
|
+
- `search_vault`
|
|
150
|
+
- `build_context_pack`
|
|
151
|
+
- `find_related`
|
|
152
|
+
- `get_decision_trace`
|
|
153
|
+
- `check_index_status`
|
|
154
|
+
- `explain_result`
|
|
155
|
+
- `summarize_project_memory`
|
|
156
|
+
- `get_open_questions`
|
|
157
|
+
- `get_recent_changes`
|
|
158
|
+
- `ask_vault`
|
|
159
|
+
|
|
160
|
+
Vault Graph provides evidence-first working context and evidence-first answers
|
|
161
|
+
through `ask_vault` and `vg ask`.
|
|
162
|
+
|
|
163
|
+
## Recommended Easy Setup
|
|
164
|
+
|
|
165
|
+
The accepted onboarding target is a one-command setup flow:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
vg setup --vault /path/to/llm-wiki --agent codex
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This command:
|
|
172
|
+
|
|
173
|
+
- uses `~/.vault-graph` as the default state path when `--state` is omitted
|
|
174
|
+
- registers the Vault path
|
|
175
|
+
- runs indexing
|
|
176
|
+
- prepares MCP registration for the selected agent
|
|
177
|
+
- prints the MCP server command or writes it only to an explicit agent config path
|
|
178
|
+
|
|
179
|
+
The lower-level MCP commands should remain available for explicit control:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
vg mcp register --agent codex --state ~/.vault-graph --config-path /path/to/agent-config.json
|
|
183
|
+
vg mcp config --agent codex --state ~/.vault-graph --print
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
These commands are implemented product features. Their implementation design
|
|
187
|
+
lives at
|
|
188
|
+
[`docs/superpowers/specs/2026-06-24-cli-todo-command-implementation-design.md`](docs/superpowers/specs/2026-06-24-cli-todo-command-implementation-design.md):
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
vg setup --vault /path/to/llm-wiki --agent codex
|
|
192
|
+
vg mcp register --agent codex --state ~/.vault-graph --config-path /path/to/agent-config.json
|
|
193
|
+
vg mcp config --agent codex --state ~/.vault-graph --print
|
|
194
|
+
vg watch
|
|
195
|
+
vg ask "question"
|
|
196
|
+
vg serve --http
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Guarantees
|
|
200
|
+
|
|
201
|
+
Vault Graph user-facing features preserve these guarantees:
|
|
202
|
+
|
|
203
|
+
- read-only access to Vault
|
|
204
|
+
- local-first operation without mandatory hosted services
|
|
205
|
+
- evidence-first retrieval, context packs, and answers
|
|
206
|
+
- clear separation between stated facts and inferred links
|
|
207
|
+
- warnings for stale, missing, contested, or deprecated material
|
|
208
|
+
- reproducible indexes that can be deleted and rebuilt from Vault
|
|
209
|
+
- Vault-scoped identity for multiple registered Vault roots
|
|
210
|
+
- visible backend health and index freshness status
|
|
211
|
+
- durable knowledge publication only through Vault
|
|
212
|
+
|
|
213
|
+
## More Documentation
|
|
214
|
+
|
|
215
|
+
- [`docs/FEATURES.md`](docs/FEATURES.md): user-facing feature catalog
|
|
216
|
+
- [`docs/SPEC.md`](docs/SPEC.md): product specification and architecture
|
|
217
|
+
- [`docs/DESIGN.md`](docs/DESIGN.md): design goals and boundaries
|
|
218
|
+
- [`docs/PUBLISHING.md`](docs/PUBLISHING.md): PyPI release workflow and permissions
|
|
219
|
+
|
|
220
|
+
## License
|
|
221
|
+
|
|
222
|
+
Vault Graph is distributed under the MIT License. See [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# Vault Graph
|
|
2
|
+
|
|
3
|
+
Status: Active local development
|
|
4
|
+
|
|
5
|
+
Vault Graph is a read-only, rebuildable knowledge access layer over Vault.
|
|
6
|
+
|
|
7
|
+
It helps humans and agents search Vault, trace decisions, inspect project
|
|
8
|
+
memory, and build task-specific context packs without turning retrieval output
|
|
9
|
+
into durable knowledge.
|
|
10
|
+
|
|
11
|
+
Vault remains the source of truth. Vault Graph reads, indexes, retrieves, and
|
|
12
|
+
explains Vault-derived context. It does not publish wiki pages, mutate raw
|
|
13
|
+
sources, edit Vault documents, or replace Vault's validation workflow.
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
Prerequisites:
|
|
18
|
+
|
|
19
|
+
- Python 3.12+
|
|
20
|
+
- [`uv`](https://docs.astral.sh/uv/)
|
|
21
|
+
|
|
22
|
+
Current source-checkout install:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
git clone git@me.github.com:cutehackers/vault-graph.git
|
|
26
|
+
cd vault-graph
|
|
27
|
+
uv sync
|
|
28
|
+
uv run --python 3.12 vg --help
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Optional local command install from this checkout:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
uv tool install -e .
|
|
35
|
+
vg --help
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
PyPI registration is not required to use the current source checkout. It becomes
|
|
39
|
+
necessary only when Vault Graph wants to promise this public install path:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
uv tool install vault-graph
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Do not advertise the PyPI command as the primary install path until the package
|
|
46
|
+
has been published.
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
Keep Vault Graph state outside your Vault:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
vg init --vault /path/to/llm-wiki --state ~/.vault-graph
|
|
54
|
+
vg index --state ~/.vault-graph
|
|
55
|
+
vg status --state ~/.vault-graph
|
|
56
|
+
vg search --state ~/.vault-graph "GraphRAG"
|
|
57
|
+
vg context --state ~/.vault-graph "Implement GraphRAG MVP"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The first index builds local metadata, keyword, vector, and graph projections.
|
|
61
|
+
Vault Graph uses local storage and local embeddings by default; it does not
|
|
62
|
+
require hosted services for normal use.
|
|
63
|
+
|
|
64
|
+
## Common Commands
|
|
65
|
+
|
|
66
|
+
| Goal | Command |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| Register a Vault | `vg init --vault /path/to/llm-wiki --state ~/.vault-graph` |
|
|
69
|
+
| Add another Vault | `vg vault add work --path /path/to/other-vault --state ~/.vault-graph` |
|
|
70
|
+
| List Vaults | `vg vault list --state ~/.vault-graph` |
|
|
71
|
+
| Index the active Vault | `vg index --state ~/.vault-graph` |
|
|
72
|
+
| Index one Vault | `vg index --vault-id work --state ~/.vault-graph` |
|
|
73
|
+
| Index all Vaults | `vg index --all-vaults --state ~/.vault-graph` |
|
|
74
|
+
| Check health | `vg status --state ~/.vault-graph` |
|
|
75
|
+
| Search evidence | `vg search --state ~/.vault-graph "query"` |
|
|
76
|
+
| Include graph signals | `vg search --include-graph --state ~/.vault-graph "query"` |
|
|
77
|
+
| Ask with evidence | `vg ask --state ~/.vault-graph "question"` |
|
|
78
|
+
| Build a context pack | `vg context --state ~/.vault-graph "goal"` |
|
|
79
|
+
| Find related items | `vg related --state ~/.vault-graph GraphRAG` |
|
|
80
|
+
| Trace a decision | `vg decision-trace --state ~/.vault-graph GraphRAG` |
|
|
81
|
+
|
|
82
|
+
Commands that accept `--vault-id` operate on one registered Vault. Commands that
|
|
83
|
+
accept `--all-vaults` expand to all enabled registered Vaults. Commands without
|
|
84
|
+
either option use the active Vault.
|
|
85
|
+
|
|
86
|
+
## Connect An Agent Through MCP
|
|
87
|
+
|
|
88
|
+
MCP server installation and MCP server registration are different things:
|
|
89
|
+
|
|
90
|
+
- installation makes the `vg` command available
|
|
91
|
+
- registration tells an agent how to start `vg serve --mcp`
|
|
92
|
+
|
|
93
|
+
After indexing your Vault, register this stdio server in the agent's MCP config:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"mcpServers": {
|
|
98
|
+
"vault-graph": {
|
|
99
|
+
"command": "uv",
|
|
100
|
+
"args": [
|
|
101
|
+
"run",
|
|
102
|
+
"--python",
|
|
103
|
+
"3.12",
|
|
104
|
+
"vg",
|
|
105
|
+
"serve",
|
|
106
|
+
"--mcp",
|
|
107
|
+
"--state",
|
|
108
|
+
"/path/to/.vault-graph"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The current Codex-style example lives at
|
|
116
|
+
[`docs/superpowers/specs/phase-5/codex-local-stdio-config.example.json`](docs/superpowers/specs/phase-5/codex-local-stdio-config.example.json).
|
|
117
|
+
|
|
118
|
+
Once connected, the agent can use these MCP tools:
|
|
119
|
+
|
|
120
|
+
- `search_vault`
|
|
121
|
+
- `build_context_pack`
|
|
122
|
+
- `find_related`
|
|
123
|
+
- `get_decision_trace`
|
|
124
|
+
- `check_index_status`
|
|
125
|
+
- `explain_result`
|
|
126
|
+
- `summarize_project_memory`
|
|
127
|
+
- `get_open_questions`
|
|
128
|
+
- `get_recent_changes`
|
|
129
|
+
- `ask_vault`
|
|
130
|
+
|
|
131
|
+
Vault Graph provides evidence-first working context and evidence-first answers
|
|
132
|
+
through `ask_vault` and `vg ask`.
|
|
133
|
+
|
|
134
|
+
## Recommended Easy Setup
|
|
135
|
+
|
|
136
|
+
The accepted onboarding target is a one-command setup flow:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
vg setup --vault /path/to/llm-wiki --agent codex
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
This command:
|
|
143
|
+
|
|
144
|
+
- uses `~/.vault-graph` as the default state path when `--state` is omitted
|
|
145
|
+
- registers the Vault path
|
|
146
|
+
- runs indexing
|
|
147
|
+
- prepares MCP registration for the selected agent
|
|
148
|
+
- prints the MCP server command or writes it only to an explicit agent config path
|
|
149
|
+
|
|
150
|
+
The lower-level MCP commands should remain available for explicit control:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
vg mcp register --agent codex --state ~/.vault-graph --config-path /path/to/agent-config.json
|
|
154
|
+
vg mcp config --agent codex --state ~/.vault-graph --print
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
These commands are implemented product features. Their implementation design
|
|
158
|
+
lives at
|
|
159
|
+
[`docs/superpowers/specs/2026-06-24-cli-todo-command-implementation-design.md`](docs/superpowers/specs/2026-06-24-cli-todo-command-implementation-design.md):
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
vg setup --vault /path/to/llm-wiki --agent codex
|
|
163
|
+
vg mcp register --agent codex --state ~/.vault-graph --config-path /path/to/agent-config.json
|
|
164
|
+
vg mcp config --agent codex --state ~/.vault-graph --print
|
|
165
|
+
vg watch
|
|
166
|
+
vg ask "question"
|
|
167
|
+
vg serve --http
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Guarantees
|
|
171
|
+
|
|
172
|
+
Vault Graph user-facing features preserve these guarantees:
|
|
173
|
+
|
|
174
|
+
- read-only access to Vault
|
|
175
|
+
- local-first operation without mandatory hosted services
|
|
176
|
+
- evidence-first retrieval, context packs, and answers
|
|
177
|
+
- clear separation between stated facts and inferred links
|
|
178
|
+
- warnings for stale, missing, contested, or deprecated material
|
|
179
|
+
- reproducible indexes that can be deleted and rebuilt from Vault
|
|
180
|
+
- Vault-scoped identity for multiple registered Vault roots
|
|
181
|
+
- visible backend health and index freshness status
|
|
182
|
+
- durable knowledge publication only through Vault
|
|
183
|
+
|
|
184
|
+
## More Documentation
|
|
185
|
+
|
|
186
|
+
- [`docs/FEATURES.md`](docs/FEATURES.md): user-facing feature catalog
|
|
187
|
+
- [`docs/SPEC.md`](docs/SPEC.md): product specification and architecture
|
|
188
|
+
- [`docs/DESIGN.md`](docs/DESIGN.md): design goals and boundaries
|
|
189
|
+
- [`docs/PUBLISHING.md`](docs/PUBLISHING.md): PyPI release workflow and permissions
|
|
190
|
+
|
|
191
|
+
## License
|
|
192
|
+
|
|
193
|
+
Vault Graph is distributed under the MIT License. See [`LICENSE`](LICENSE).
|