agentforge-graph 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/CHANGELOG.md +19 -1
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/CONTRIBUTING.md +17 -5
- agentforge_graph-0.3.3/PKG-INFO +335 -0
- agentforge_graph-0.3.3/README.md +283 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/ARCHITECTURE.md +3 -3
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/guides/model-providers.md +1 -1
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/guides/using-over-mcp.md +3 -2
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/pyproject.toml +5 -5
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/uv.lock +1 -305
- agentforge_graph-0.3.2/PKG-INFO +0 -291
- agentforge_graph-0.3.2/README.md +0 -238
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.agentforge-state/answers.yml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.agentforge-state/managed-files.lock +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.claude/CLAUDE.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.claude/settings.local.json +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.claude/standards/coding.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.claude/standards/testing.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.cursorrules +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.env.example +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.github/copilot-instructions.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.github/workflows/ci.yml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.gitignore +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.gitkeep +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/.pre-commit-config.yaml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/AGENTS.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/CLAUDE.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/LICENSE +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/NOTICE +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/agentforge.yaml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/ckg.yaml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0001-build-on-agentforge-framework.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0002-tree-sitter-over-compiler-grade-extraction.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0003-stable-symbol-ids-and-per-file-subgraphs.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0004-provenance-on-every-fact.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0005-reserve-higher-level-node-kinds-up-front.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0006-embedded-first-pluggable-storage.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0007-ast-aware-chunking-with-chunk-symbol-separation.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0008-hybrid-retrieval-vector-then-graph.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/0009-top-10-language-scope-with-support-tiers.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/adr/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-001-src-layout-import-resolution.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-002-retrieval-scores-render-zero.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-003-adr-readme-ingested-as-decision.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-004-relative-from-import-resolution.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-005-typescript-abstract-class-not-extracted.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-006-commonjs-require-not-resolved.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-007-overload-resolution-nondeterministic.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/BUG-008-rerank-yaml-boolean-breaks-query.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/bugs/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-001-core-contracts-module.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-002-tree-sitter-ingestion.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-003-graph-storage-adapters.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-004-incremental-indexing.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-005-ast-chunking-and-embeddings.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-006-hybrid-retrieval.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-007-repo-map.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-008-mcp-server-and-tool-api.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-009-temporal-evolution-layer.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-010-adr-and-docs-ingestion.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-011-framework-extractors.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-012-llm-enrichment.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/design/design-012b-summaries.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-001-pattern-recall-tuning.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-002-parallelize-enrichment-calls.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-003-pluggable-model-provider-registry.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-004-first-party-storage-backends.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-005-http-mcp-transport-auth.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-006-cli-path-arg-consistency.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-007-repomap-public-api-orientation.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-008-typescript-symbol-completeness.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/ENH-009-retrieval-precision-dense-codebases.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/enhancements/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/TRACKER.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-001-graph-schema-and-core-contracts.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-002-tree-sitter-ingestion.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-003-graph-storage-adapters.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-004-incremental-indexing.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-005-ast-chunking-and-embeddings.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-006-hybrid-retrieval.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-007-repo-map-summarization.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-008-mcp-server-and-tool-api.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-009-temporal-evolution-layer.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-010-adr-and-docs-ingestion.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-011-framework-extractors.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/features/feat-012-llm-enrichment.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/guides/storage-backends.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/known-limitations/KL-001-llm-summary-hallucination.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/known-limitations/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/open-source-ckg-research.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/01-set-up-new-agent.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/02-add-a-tool.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/03-add-a-pipeline-task.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/04-pick-reasoning-strategy.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/05-write-prompts.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/06-test-your-agent.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/07-debug-a-run.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/08-add-memory.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/09-add-mcp.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/10-add-evaluators.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/11-add-safety-guardrails.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/12-add-observability.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/13-configure-multi-provider.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/14-deploy-your-agent.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/15-upgrade-your-agent.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/16-configuration-reference.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/17-add-reranker.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/18-add-hybrid-search.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/19-add-graphrag.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/20-apply-schema-migrations.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/21-use-streaming-guardrails.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/runbooks/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/README.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/cpp-fmt.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/csharp-newtonsoft-json.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/go-cobra.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/java-gson.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/javascript-express-chalk.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/php-monolog.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/python-click.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/ruby-thor.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/rust-serde-json.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/typescript-zod.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/docs/validation/w4-agent-dogfood.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/chunking/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/chunking/cast.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/chunking/chunk.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/chunking/tokens.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/config.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/contracts.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/kinds.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/models.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/provenance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/core/symbols.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/base.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/bedrock.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/fake.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/openai.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/pipeline.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/embed/report.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/anthropic.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/anthropic_client.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/bedrock.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/bedrock_client.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/bedrock_summarizer.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/claude.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/enricher.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/governs.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/governs_enricher.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/heuristics.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/judge.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/report.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/summarizer.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/summary_enricher.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/enrich/taxonomy.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/base.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/detect.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/extractor.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/orm.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/_js_ast.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/_python_ast.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/django/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/django/models.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/express/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/express/routes.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/fastapi/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/fastapi/depends.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/fastapi/routes.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/flask/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/flask/routes.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/nestjs/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/nestjs/routes.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/spring/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/spring/routes.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/sqlalchemy/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/packs/sqlalchemy/models.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/frameworks/registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/codegraph.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/extractor.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/detect.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/dirty.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/indexer.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/meta.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/incremental/ports.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/cpp/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/cpp/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/cpp/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/csharp/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/csharp/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/csharp/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/go/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/go/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/go/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/java/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/java/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/java/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/javascript/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/javascript/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/javascript/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/php/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/php/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/php/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/python/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/python/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/python/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/ruby/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/ruby/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/ruby/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/rust/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/rust/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/rust/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/typescript/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/typescript/references.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/packs/typescript/structure.scm +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/pipeline.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/report.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/resolver.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/ingest/source.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/adr.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/commits.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/ingest.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/mentions.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/knowledge/report.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/main.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/providers.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/repomap/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/repomap/rank.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/repomap/render.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/repomap/repomap.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/retrieve/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/retrieve/pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/retrieve/rerank.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/retrieve/retriever.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/retrieve/scoring.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/serve/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/serve/engine.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/serve/http_runner.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/serve/server.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/serve/tools.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/_rowmap.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/errors.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/facade.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/kuzu_store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/lance_store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/neo4j_store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/pgvector_store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/store/registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/backfill.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/events.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/index.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/mining.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/recorder.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/src/agentforge_graph/temporal/store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/chunking/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/chunking/test_cast.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/chunking/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_kinds.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_models.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_provenance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_symbols.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/core/test_vector_contracts.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_bedrock.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_fake.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_openai.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_openai_live.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_pipeline.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/embed/test_registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/conftest.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_anthropic.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_anthropic_live.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_bedrock.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_bedrock_client.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_claude.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_enricher.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_heuristics.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_live.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_registry.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_summaries.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_summaries_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/enrich/test_summaries_live.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/django/models.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/express/app.js +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/fastapi/app.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/fastapi/pyproject.toml +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/fastapi/service.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/flask/app.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/nestjs/users.controller.ts +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/spring/Helper.java +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/spring/UserController.java +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/fixtures/sqlalchemy/models.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_contract.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_detect.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_django_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_django_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_express_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_express_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_fastapi_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_flask_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_flask_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_nestjs_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_nestjs_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_spring_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_spring_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_sqlalchemy_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/frameworks/test_sqlalchemy_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/conftest.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/javascript/mathutils.js +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/javascript/shapes.js +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/python/mathutils.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/python/shapes.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/typescript/mathutils.ts +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/fixtures/typescript/shapes.ts +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/incremental/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/incremental/test_equivalence.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/incremental/test_incremental.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_aliased_imports.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_codegraph.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_cpp_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_csharp_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_docstrings.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_export_member.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_go_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_go_receiver_calls.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_inherited_method_calls.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_inherits.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_inherits_packs.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_java_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_javascript_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_jsdoc.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_member_calls.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_member_calls_packs.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_module_member_calls.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_php_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_pipeline.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_python_extractor.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_qualified_bases.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_resolver.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_ruby_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_rust_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_source.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_src_layout.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/ingest/test_typescript_pack.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/fixtures/repo/docs/adr/0007-old-payments.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/fixtures/repo/docs/adr/0012-idempotency.md +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/fixtures/repo/src/app/payments.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_adr_parser.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_commit_messages.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_discover.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_doc_embedding.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_doc_globs.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_infer_governs.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_integration.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/knowledge/test_mentions.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/test_cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/test_edge_cases.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/test_rank.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/repomap/test_render.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_doc_weight.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_filters.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_live_relevance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_pack_scoring.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_rerank.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_retriever.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/retrieve/test_temporal_item.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_binding.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_cli.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_engine.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_guardrails.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_http_auth.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_live_agent.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_schemas.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/serve/test_tools.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_facade.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_kuzu_conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_kuzu_internals.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_lance_conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_layering.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_neo4j_conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_pgvector_conformance.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/store/test_server_drivers.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/__init__.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_asof.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_backfill.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_denormalize.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_index.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_lifecycle.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_mining.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_read_e2e.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/temporal/test_store.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/test_cli_path_args.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/test_config.py +0 -0
- {agentforge_graph-0.3.2 → agentforge_graph-0.3.3}/tests/test_providers.py +0 -0
|
@@ -8,6 +8,23 @@ on a schema mismatch is **rebuild** (ADR-0006).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.3.3] - 2026-06-19
|
|
12
|
+
|
|
13
|
+
Leaner base install + the refreshed README on PyPI.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Dropped the unused `fastembed` dependency** from the base install (and the
|
|
18
|
+
heavy `onnxruntime` wheel it pulled). It was a leftover from the original
|
|
19
|
+
feat-005 plan to default to local embeddings; the shipped embedders are
|
|
20
|
+
`bedrock` / `openai` / `fake`, none of which import it. Removing it keeps the
|
|
21
|
+
promise true: the base install carries only what the engine actually uses, and
|
|
22
|
+
every model/DB provider is opt-in. (No local-embeddings driver existed, so
|
|
23
|
+
nothing is lost; a `fastembed` driver behind a `[local]` extra can be added as
|
|
24
|
+
a deliberate feature later.)
|
|
25
|
+
- README refreshed (out-of-the-box overview, quick start, demo) now renders on
|
|
26
|
+
the PyPI project page.
|
|
27
|
+
|
|
11
28
|
## [0.3.2] - 2026-06-19
|
|
12
29
|
|
|
13
30
|
Packaging fix — base-install completeness (caught on a TestPyPI dry run).
|
|
@@ -412,7 +429,8 @@ questions over the tools, unattended.
|
|
|
412
429
|
on a real repo (fixed BUG-008, a default-config `ckg query` break); and parse
|
|
413
430
|
coverage holds at scale (`django`, 2922 files, ~100%, no crash).
|
|
414
431
|
|
|
415
|
-
[Unreleased]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.
|
|
432
|
+
[Unreleased]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.3...HEAD
|
|
433
|
+
[0.3.3]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.2...v0.3.3
|
|
416
434
|
[0.3.2]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.1...v0.3.2
|
|
417
435
|
[0.3.1]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.0...v0.3.1
|
|
418
436
|
[0.3.0]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.2.0...v0.3.0
|
|
@@ -11,7 +11,7 @@ first for the system map; this doc is the *how to work on it*.
|
|
|
11
11
|
Tooling is **`uv`, not pip**.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
uv sync --extra
|
|
14
|
+
uv sync --extra dev --extra bedrock # engine ships in base; dev = test/lint toolchain
|
|
15
15
|
cp .env.example .env # optional: AWS creds for live model tests
|
|
16
16
|
```
|
|
17
17
|
|
|
@@ -77,10 +77,22 @@ the framework, you're in the wrong layer.
|
|
|
77
77
|
|
|
78
78
|
### Add a framework pack (routes/ORM/DI)
|
|
79
79
|
1. `src/agentforge_graph/frameworks/packs/<name>/`: a `FrameworkPack` with
|
|
80
|
-
`
|
|
81
|
-
nodes/edges.
|
|
82
|
-
|
|
83
|
-
`
|
|
80
|
+
`dep_names`/`import_markers` (detection) and `extract()` emitting framework
|
|
81
|
+
nodes/edges. Pick the closest reference pack: **routes** → `fastapi`/`flask`
|
|
82
|
+
(Python), `express` (JS/TS), `spring`/`nestjs` (decorator style); **ORM** →
|
|
83
|
+
`sqlalchemy`/`django`.
|
|
84
|
+
2. **Reuse the shared rails** — don't re-parse from scratch:
|
|
85
|
+
`packs/_python_ast.py` (Python AST helpers: `iter_class_assignments`,
|
|
86
|
+
`enclosing_class`, `member_descriptor`, …), `packs/_js_ast.py` (JS/TS), and
|
|
87
|
+
`frameworks/orm.py` (`ModelIndex` + `relations_to_edges` for `RELATES_TO`).
|
|
88
|
+
3. A pack spanning sibling languages (e.g. JS *and* TS) overrides the
|
|
89
|
+
`FrameworkPack.slugs` property and builds ids with the file's own slug.
|
|
90
|
+
4. Cross-file stitching (FK/relationship targets, route prefixes) goes in the
|
|
91
|
+
pass-2 `resolve()` hook — see `sqlalchemy`/`django`. It's globally idempotent.
|
|
92
|
+
5. Register in `frameworks/registry.py`. Pass-1 facts are **merged into the
|
|
93
|
+
`FileSubgraph`** so they ride incremental indexing automatically; add a golden
|
|
94
|
+
pack test + an end-to-end test asserting the edge lands on the real symbol node
|
|
95
|
+
(mirror `tests/frameworks/test_<name>_{pack,integration}.py`).
|
|
84
96
|
|
|
85
97
|
### Add a storage backend (Neo4j, SurrealDB, pgvector, …)
|
|
86
98
|
1. Implement `GraphStore` and/or `VectorStore` (`core/contracts.py`).
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentforge-graph
|
|
3
|
+
Version: 0.3.3
|
|
4
|
+
Summary: Code Knowledge Graph (CKG) engine + agent toolset, built on AgentForge.
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
License-File: NOTICE
|
|
8
|
+
Keywords: agent,ckg,code-knowledge-graph,code-search,mcp,rag,static-analysis,tree-sitter
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
15
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
16
|
+
Classifier: Typing :: Typed
|
|
17
|
+
Requires-Python: >=3.13
|
|
18
|
+
Requires-Dist: agentforge-anthropic[anthropic]<0.3,>=0.2.4
|
|
19
|
+
Requires-Dist: agentforge-mcp[mcp]<0.3,>=0.2.4
|
|
20
|
+
Requires-Dist: agentforge-py<0.3,>=0.2.4
|
|
21
|
+
Requires-Dist: kuzu>=0.6
|
|
22
|
+
Requires-Dist: lancedb>=0.15
|
|
23
|
+
Requires-Dist: networkx>=3.3
|
|
24
|
+
Requires-Dist: python-dotenv>=1.0
|
|
25
|
+
Requires-Dist: pyyaml>=6
|
|
26
|
+
Requires-Dist: tree-sitter-language-pack>=0.9
|
|
27
|
+
Requires-Dist: tree-sitter>=0.23
|
|
28
|
+
Provides-Extra: bedrock
|
|
29
|
+
Requires-Dist: boto3>=1.35; extra == 'bedrock'
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: mypy>=1.13; extra == 'dev'
|
|
32
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
|
|
33
|
+
Requires-Dist: pytest-cov>=5; extra == 'dev'
|
|
34
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
35
|
+
Requires-Dist: ruff>=0.7; extra == 'dev'
|
|
36
|
+
Requires-Dist: types-pyyaml>=6; extra == 'dev'
|
|
37
|
+
Provides-Extra: engine
|
|
38
|
+
Provides-Extra: neo4j
|
|
39
|
+
Requires-Dist: neo4j>=5; extra == 'neo4j'
|
|
40
|
+
Provides-Extra: openai
|
|
41
|
+
Requires-Dist: openai>=1.40; extra == 'openai'
|
|
42
|
+
Provides-Extra: otel
|
|
43
|
+
Requires-Dist: agentforge-otel; extra == 'otel'
|
|
44
|
+
Provides-Extra: pgvector
|
|
45
|
+
Requires-Dist: asyncpg>=0.30; extra == 'pgvector'
|
|
46
|
+
Requires-Dist: pgvector>=0.3; extra == 'pgvector'
|
|
47
|
+
Provides-Extra: rerank
|
|
48
|
+
Requires-Dist: sentence-transformers>=2.2; extra == 'rerank'
|
|
49
|
+
Provides-Extra: voyage
|
|
50
|
+
Requires-Dist: agentforge-voyage; extra == 'voyage'
|
|
51
|
+
Description-Content-Type: text/markdown
|
|
52
|
+
|
|
53
|
+
<!-- AGENTFORGE-MANAGED: template:minimal@0.2.4 hash:c474ab3012ec -->
|
|
54
|
+
<!-- NOTE: customized for agentforge-graph (forked from the scaffold README). -->
|
|
55
|
+
# agentforge-graph
|
|
56
|
+
|
|
57
|
+
[](https://github.com/Scaffoldic/agentforge-grpah/actions/workflows/ci.yml)
|
|
58
|
+
[](https://pypi.org/project/agentforge-graph/)
|
|
59
|
+
[](https://pypi.org/project/agentforge-graph/)
|
|
60
|
+
[](LICENSE)
|
|
61
|
+
|
|
62
|
+
> **Turn any repo into a knowledge graph your coding agent can actually reason
|
|
63
|
+
> over.** Symbols, calls, imports, **API routes, ORM models, dependency
|
|
64
|
+
> injection, architecture decisions, git history, LLM summaries** — one typed,
|
|
65
|
+
> provenance-tracked graph, served over **MCP** in a single command.
|
|
66
|
+
|
|
67
|
+
Plain code-graph tools answer *"what is connected."* Agents also need *"what is
|
|
68
|
+
this **for**, what decision governs it, what's the API surface, which tables does
|
|
69
|
+
this touch, who calls this, what changed."* **agentforge-graph puts parsed
|
|
70
|
+
structure, framework semantics, architecture decisions, git evolution, and LLM
|
|
71
|
+
enrichment in one graph an agent can traverse — every fact carrying its
|
|
72
|
+
provenance.** Built on [AgentForge](https://pypi.org/project/agentforge-py/).
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
pip install agentforge-graph # ← the engine is in the box; nothing else to run
|
|
76
|
+
ckg index . # repo → typed graph in seconds (no creds, no server)
|
|
77
|
+
ckg serve-mcp --repo . # → 10 read-only tools for your agent
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## What you get out of the box
|
|
83
|
+
|
|
84
|
+
- 🧩 **A typed code graph in one command** — `pip install` → `ckg index .` → files,
|
|
85
|
+
classes, functions, methods with stable SCIP-style ids and `CONTAINS`/`IMPORTS`/
|
|
86
|
+
`CALLS`/`INHERITS` edges. **Embedded Kuzu + LanceDB under `.ckg/` — no server, no
|
|
87
|
+
cloud, no config.** 10 languages: Python, TypeScript, JavaScript, Go, Ruby, PHP,
|
|
88
|
+
Java, C#, C++, Rust.
|
|
89
|
+
- 🌐 **Framework semantics as graph edges** *(the differentiator)* — routes, ORM
|
|
90
|
+
models, and DI, not just calls. `ckg routes` is your API surface, `ckg models`
|
|
91
|
+
your data model, `ckg services` your injection map — across **7 packs**: FastAPI,
|
|
92
|
+
Flask, SQLAlchemy, Django (Python); Express, NestJS (JS/TS); Spring (Java).
|
|
93
|
+
- 🏛️ **Decisions ↔ code** *(the differentiator)* — ingests ADRs/docs and links them
|
|
94
|
+
to the code they `GOVERN`. A hit on `payments/` surfaces *"ADR-0012 (accepted):
|
|
95
|
+
idempotency keys must be client-side"* **before** the agent edits.
|
|
96
|
+
- 🕰️ **Git evolution built in** — `ckg history <symbol>`, `ckg changed-since <ref>`,
|
|
97
|
+
and `--as-of <commit>` reconstruction. Churn and authorship ride the graph.
|
|
98
|
+
- 🔎 **Hybrid retrieval** — vector search **entry** → typed **graph expansion**. Ask
|
|
99
|
+
in natural language, get *connected* context: the symbol, its callers, *and* its
|
|
100
|
+
governing decision.
|
|
101
|
+
- ⚡ **Incremental by default** — re-index only the diff. Edit 3 files in a 5k-file
|
|
102
|
+
repo → seconds, not minutes. Embeddings/enrichment recompute only what changed.
|
|
103
|
+
- 🤖 **Agent-native** — served read-only over **MCP (10 tools)** or as a native
|
|
104
|
+
AgentForge toolset. Every response carries a staleness envelope.
|
|
105
|
+
- 🧠 **LLM enrichment, budgeted & opt-in** — design-pattern tags (*"this class is a
|
|
106
|
+
Repository,"* with confidence + rationale) and bottom-up module summaries, all
|
|
107
|
+
`llm`-provenance. **CI needs no model calls or cloud creds.**
|
|
108
|
+
|
|
109
|
+
**Status: 0.3.3 — all 12 planned features shipped.** Published on
|
|
110
|
+
[PyPI](https://pypi.org/project/agentforge-graph/). Each language pack validated on
|
|
111
|
+
a real OSS repo with a creds-enabled embed/retrieval/enrich run; a real agent
|
|
112
|
+
answers questions over the tools unattended. See the [`CHANGELOG`](CHANGELOG.md)
|
|
113
|
+
and [`docs/features/TRACKER.md`](docs/features/TRACKER.md).
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Quick start
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pip install agentforge-graph # engine included (tree-sitter + kuzu + lancedb)
|
|
121
|
+
|
|
122
|
+
# 1) index a repo into the graph — incremental on every run after the first
|
|
123
|
+
ckg index . # files/classes/functions/calls (+ ADRs, routes, models…)
|
|
124
|
+
|
|
125
|
+
# explore the graph — no embeddings, no creds, no server
|
|
126
|
+
ckg map --budget 2000 # centrality-ranked repo orientation
|
|
127
|
+
ckg routes # API surface: METHOD PATH → handler
|
|
128
|
+
ckg models # ORM data models: table, fields, relations
|
|
129
|
+
ckg services # dependency-injection map
|
|
130
|
+
ckg decisions --status accepted # ADRs and what they govern
|
|
131
|
+
ckg history <symbol-id> # when/who/churn for a symbol
|
|
132
|
+
ckg status # indexed commit, staleness, node counts
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Add **semantic search** with any embedding provider (AWS Bedrock, OpenAI, or a
|
|
136
|
+
local OpenAI-compatible server — see [Models](#models--pick-a-provider-or-bring-your-own)):
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install "agentforge-graph[bedrock]" # or [openai]
|
|
140
|
+
ckg embed . # AST chunks → vectors
|
|
141
|
+
ckg query "how are auth tokens validated" # ranked, *connected* context
|
|
142
|
+
ckg query --symbol "<id>" --mode impact # reverse deps — "who calls this"
|
|
143
|
+
|
|
144
|
+
# optional: explicit, budgeted LLM enrichment
|
|
145
|
+
ckg enrich . --all --budget-usd 2 # design-pattern tags + module summaries
|
|
146
|
+
ckg tagged Repository # symbols tagged with a design pattern
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### See it in action
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
$ ckg index .
|
|
153
|
+
indexed 1c2f3a4 · 412 files · 5,290 nodes / 9,133 edges · 3.1s
|
|
154
|
+
|
|
155
|
+
$ ckg routes
|
|
156
|
+
POST /payments/{pid}/refund → refund() (app/api.py:42)
|
|
157
|
+
GET /health → health() (app/api.py:16)
|
|
158
|
+
|
|
159
|
+
$ ckg models
|
|
160
|
+
users [users] (app/models.py:7)
|
|
161
|
+
fields: id, name, email
|
|
162
|
+
relations: posts→posts (relationship)
|
|
163
|
+
|
|
164
|
+
$ ckg query "how are auth tokens validated"
|
|
165
|
+
auth/tokens.py:88 TokenValidator.validate (cosine 0.71)
|
|
166
|
+
← called by api/middleware.py:23 require_auth
|
|
167
|
+
⚖ governed by ADR-0007 (accepted): signing keys must rotate every 90 days
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
That last block is the whole point: a natural-language question returns the
|
|
171
|
+
symbol, **who calls it**, *and* **the decision that governs it** — connected, with
|
|
172
|
+
provenance.
|
|
173
|
+
|
|
174
|
+
### Serve it to an agent
|
|
175
|
+
|
|
176
|
+
Read-only over MCP — **10 tools**: `ckg_repo_map`, `ckg_search`, `ckg_symbol`,
|
|
177
|
+
`ckg_impact`, `ckg_neighbors`, `ckg_status`, `ckg_routes`, `ckg_decisions`,
|
|
178
|
+
`ckg_explain`, `ckg_history`:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
claude mcp add ckg -- ckg serve-mcp --repo . # stdio (subprocess)
|
|
182
|
+
ckg serve-mcp --repo . --transport http # or HTTP → http://127.0.0.1:8765/mcp
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Over HTTP, point any MCP client at the URL:
|
|
186
|
+
`{"mcpServers": {"ckg": {"url": "http://127.0.0.1:8765/mcp"}}}`.
|
|
187
|
+
|
|
188
|
+
Or as a native AgentForge toolset:
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
from agentforge import Agent
|
|
192
|
+
from agentforge_graph.serve import code_graph_tools
|
|
193
|
+
|
|
194
|
+
agent = Agent(model="anthropic:claude-sonnet-4-6", tools=code_graph_tools("."))
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
→ Full guide (tool schemas, client config, guardrails, staleness envelope):
|
|
198
|
+
[`docs/guides/using-over-mcp.md`](docs/guides/using-over-mcp.md).
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## What's in the graph
|
|
203
|
+
|
|
204
|
+
| Capability | What you get |
|
|
205
|
+
|---|---|
|
|
206
|
+
| **Typed code graph** | Files, classes, functions, methods with stable SCIP-style ids; `CONTAINS`/`IMPORTS`/`CALLS`/`INHERITS` edges. Conservative, no-guess resolution across 10 language packs. |
|
|
207
|
+
| **Framework awareness** *(differentiator)* | `Route → HANDLED_BY → handler`, `DataModel → HAS_FIELD`/`RELATES_TO`, `Service → INJECTED_INTO` — across FastAPI, Flask, SQLAlchemy, Django, Express, NestJS, Spring. `ckg routes`/`models`/`services`. |
|
|
208
|
+
| **Decisions ↔ code** *(differentiator)* | ADRs/docs ingested and linked to the code they `GOVERN`; doc prose embedded + searchable. |
|
|
209
|
+
| **Temporal / git evolution** | Per-symbol history, churn, authorship; `changed-since`, `as-of` reconstruction. |
|
|
210
|
+
| **Hybrid retrieval** | Vector entry → typed graph expansion. Connected context, not a flat list. |
|
|
211
|
+
| **LLM enrichment** *(differentiator)* | Budgeted design-pattern tags + bottom-up module summaries — `llm`-provenance, opt-out-able. |
|
|
212
|
+
| **Agent-native** | Read-only MCP (10 tools) or native AgentForge toolset; every response carries a staleness envelope. |
|
|
213
|
+
| **Embedded-first** | Local Kuzu graph + LanceDB vectors under `.ckg/`. No server. Storage + models pluggable. |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Storage — what DB, and can I switch it?
|
|
218
|
+
|
|
219
|
+
**By default, nothing to run.** The graph lives in an embedded **Kuzu** database
|
|
220
|
+
and the vectors in an embedded **LanceDB** index, both under `.ckg/` in your repo
|
|
221
|
+
(ADR-0006). Zero config, no server.
|
|
222
|
+
|
|
223
|
+
Storage is **pluggable** behind two contracts — `GraphStore` and `VectorStore`
|
|
224
|
+
([`core/contracts.py`](src/agentforge_graph/core/contracts.py)) — resolved by a
|
|
225
|
+
**driver registry** with entry-point groups
|
|
226
|
+
([`store/registry.py`](src/agentforge_graph/store/registry.py)):
|
|
227
|
+
|
|
228
|
+
```yaml
|
|
229
|
+
# ckg.yaml
|
|
230
|
+
store:
|
|
231
|
+
graph: { driver: kuzu } # built-in
|
|
232
|
+
vectors: { driver: lancedb } # built-in
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
A server backend (Neo4j, pgvector, …) is an **out-of-tree adapter**: implement the
|
|
236
|
+
contract, pass the reusable `GraphStoreConformance` suite, register an entry point —
|
|
237
|
+
then it's `pip install + one config line`, no core change. Neo4j and pgvector ship
|
|
238
|
+
first-party as opt-in extras. → [`docs/guides/storage-backends.md`](docs/guides/storage-backends.md).
|
|
239
|
+
|
|
240
|
+
## Models — pick a provider, or bring your own
|
|
241
|
+
|
|
242
|
+
Every model boundary is an **interface** resolved by a provider registry, so
|
|
243
|
+
switching providers is a `ckg.yaml` line — not a code change:
|
|
244
|
+
|
|
245
|
+
| Interface | Ships first-party | Select with |
|
|
246
|
+
|---|---|---|
|
|
247
|
+
| `Embedder` | `bedrock` (Cohere `embed-v4`) · `openai` (incl. **local** OpenAI-compatible) · `fake` (CI) | `embed.driver` |
|
|
248
|
+
| `PatternJudge` / `Summarizer` | `bedrock` · `anthropic` (direct API) · `scripted` (CI) | `enrich.provider` |
|
|
249
|
+
|
|
250
|
+
- **On AWS?** Default `bedrock` (Claude + Cohere) uses your AWS credentials.
|
|
251
|
+
- **Not on AWS?** `enrich.provider: anthropic` (set `ANTHROPIC_API_KEY`) + `embed.driver:
|
|
252
|
+
openai` (set `OPENAI_API_KEY`) give a full live path, no AWS.
|
|
253
|
+
- **Local / self-hosted?** Point `embed.base_url` at any OpenAI-compatible server
|
|
254
|
+
(Ollama, vLLM, LM Studio) — same `openai` driver.
|
|
255
|
+
- **Fully offline?** `embed.driver: fake` + `enrich.provider: scripted`.
|
|
256
|
+
|
|
257
|
+
CI uses the deterministic fakes, so **no model calls or cloud creds are needed to
|
|
258
|
+
build or test**. → [`docs/guides/model-providers.md`](docs/guides/model-providers.md).
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Architecture
|
|
263
|
+
|
|
264
|
+
See **[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)** for the full overview (layer
|
|
265
|
+
diagram, data model, every pipeline in ASCII, extension points). In one breath: a
|
|
266
|
+
`core` of contracts + value types, a **deterministic engine** that never imports the
|
|
267
|
+
framework (parse, store, resolve, embed, retrieve, **frameworks**, knowledge), and a
|
|
268
|
+
thin **framework layer** (`serve` = MCP/Tools, `enrich` = LLM with budget rails) on top.
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
ckg CLI / MCP server / Agent
|
|
272
|
+
│
|
|
273
|
+
serve · enrich (framework layer — may import agentforge)
|
|
274
|
+
│
|
|
275
|
+
ingest · store · chunking · embed · retrieve · repomap · frameworks · knowledge · temporal
|
|
276
|
+
│ (deterministic engine — no agentforge)
|
|
277
|
+
core: contracts · models · SymbolID · provenance · kinds
|
|
278
|
+
│
|
|
279
|
+
Kuzu (graph) + LanceDB (vectors) under .ckg/
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Configuration & install extras
|
|
285
|
+
|
|
286
|
+
Two config files, on purpose:
|
|
287
|
+
|
|
288
|
+
- **`agentforge.yaml`** — the *framework's* config (agent model, budget, MCP). Strict.
|
|
289
|
+
- **`ckg.yaml`** — *this engine's* config: `store`, `ingest`, `chunking`, `embed`,
|
|
290
|
+
`retrieve`, `repomap`, `serve`, `frameworks`, `knowledge`, `enrich`, `temporal`.
|
|
291
|
+
Lenient (unknown keys ignored), so a config written for a later feature still loads.
|
|
292
|
+
|
|
293
|
+
The base `pip install agentforge-graph` includes the deterministic engine
|
|
294
|
+
(tree-sitter, kuzu, lancedb, networkx). Optional extras add providers/backends:
|
|
295
|
+
|
|
296
|
+
| Install | Adds |
|
|
297
|
+
|---|---|
|
|
298
|
+
| `pip install agentforge-graph` | base: engine + framework runtime + MCP serving |
|
|
299
|
+
| `…[bedrock]` | `boto3` — Bedrock embeddings + Claude enrichment |
|
|
300
|
+
| `…[openai]` | `openai` — OpenAI / local OpenAI-compatible embeddings |
|
|
301
|
+
| `…[neo4j]` / `…[pgvector]` | opt-in server graph / vector backends |
|
|
302
|
+
| `…[rerank]` | sentence-transformers cross-encoder (off by default) |
|
|
303
|
+
|
|
304
|
+
The Anthropic-API enrichment path (`enrich.provider: anthropic`) needs no extra —
|
|
305
|
+
the `anthropic` SDK ships with the base install.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Contributing & AI-assisted development
|
|
310
|
+
|
|
311
|
+
This repo is built to be worked on **with** AI agents. Start here:
|
|
312
|
+
|
|
313
|
+
- **[`CONTRIBUTING.md`](CONTRIBUTING.md)** — setup, the quality gate, the per-feature
|
|
314
|
+
development pipeline, and step-by-step playbooks (add a language pack, a framework
|
|
315
|
+
pack, a storage backend, a model adapter, an MCP tool, an enricher).
|
|
316
|
+
- **[`AGENTS.md`](AGENTS.md)** — read by Claude Code, Cursor, Aider, etc.
|
|
317
|
+
(the [AGENTS.md convention](https://agents.md)); the invariants an AI assistant must respect.
|
|
318
|
+
- **[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)** — the system map.
|
|
319
|
+
|
|
320
|
+
## Documentation map
|
|
321
|
+
|
|
322
|
+
| Doc | What it is |
|
|
323
|
+
|---|---|
|
|
324
|
+
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | High-level architecture + every pipeline (ASCII) |
|
|
325
|
+
| [`docs/guides/`](docs/guides/) | Consumer guides: [using over MCP](docs/guides/using-over-mcp.md), [model providers](docs/guides/model-providers.md), [storage backends](docs/guides/storage-backends.md) |
|
|
326
|
+
| [`docs/adr/`](docs/adr/) | 9 architecture decision records (the *why*) |
|
|
327
|
+
| [`docs/features/`](docs/features/) + [`TRACKER.md`](docs/features/TRACKER.md) | 12 feature specs + status board |
|
|
328
|
+
| [`docs/design/`](docs/design/) | Per-feature design docs (the *how*, pre-build) |
|
|
329
|
+
| [`docs/open-source-ckg-research.md`](docs/open-source-ckg-research.md) | The survey that motivates the design |
|
|
330
|
+
|
|
331
|
+
## License
|
|
332
|
+
|
|
333
|
+
[**Apache-2.0**](LICENSE) — permissive, with an explicit patent grant and
|
|
334
|
+
patent-retaliation clause. See [`LICENSE`](LICENSE) and [`NOTICE`](NOTICE). Aligns
|
|
335
|
+
with AgentForge, which is also Apache-2.0.
|