agentforge-graph 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentforge_graph-0.3.2/.agentforge-state/answers.yml +8 -0
- agentforge_graph-0.3.2/.agentforge-state/managed-files.lock +170 -0
- agentforge_graph-0.3.2/.claude/CLAUDE.md +54 -0
- agentforge_graph-0.3.2/.claude/settings.local.json +7 -0
- agentforge_graph-0.3.2/.claude/standards/coding.md +19 -0
- agentforge_graph-0.3.2/.claude/standards/testing.md +18 -0
- agentforge_graph-0.3.2/.cursorrules +12 -0
- agentforge_graph-0.3.2/.env.example +5 -0
- agentforge_graph-0.3.2/.github/copilot-instructions.md +14 -0
- agentforge_graph-0.3.2/.github/workflows/ci.yml +94 -0
- agentforge_graph-0.3.2/.gitignore +27 -0
- agentforge_graph-0.3.2/.gitkeep +1 -0
- agentforge_graph-0.3.2/.pre-commit-config.yaml +29 -0
- agentforge_graph-0.3.2/AGENTS.md +166 -0
- agentforge_graph-0.3.2/CHANGELOG.md +420 -0
- agentforge_graph-0.3.2/CLAUDE.md +14 -0
- agentforge_graph-0.3.2/CONTRIBUTING.md +147 -0
- agentforge_graph-0.3.2/LICENSE +202 -0
- agentforge_graph-0.3.2/NOTICE +14 -0
- agentforge_graph-0.3.2/PKG-INFO +291 -0
- agentforge_graph-0.3.2/README.md +238 -0
- agentforge_graph-0.3.2/agentforge.yaml +24 -0
- agentforge_graph-0.3.2/ckg.yaml +116 -0
- agentforge_graph-0.3.2/docs/ARCHITECTURE.md +415 -0
- agentforge_graph-0.3.2/docs/adr/0001-build-on-agentforge-framework.md +95 -0
- agentforge_graph-0.3.2/docs/adr/0002-tree-sitter-over-compiler-grade-extraction.md +99 -0
- agentforge_graph-0.3.2/docs/adr/0003-stable-symbol-ids-and-per-file-subgraphs.md +105 -0
- agentforge_graph-0.3.2/docs/adr/0004-provenance-on-every-fact.md +94 -0
- agentforge_graph-0.3.2/docs/adr/0005-reserve-higher-level-node-kinds-up-front.md +93 -0
- agentforge_graph-0.3.2/docs/adr/0006-embedded-first-pluggable-storage.md +98 -0
- agentforge_graph-0.3.2/docs/adr/0007-ast-aware-chunking-with-chunk-symbol-separation.md +101 -0
- agentforge_graph-0.3.2/docs/adr/0008-hybrid-retrieval-vector-then-graph.md +105 -0
- agentforge_graph-0.3.2/docs/adr/0009-top-10-language-scope-with-support-tiers.md +96 -0
- agentforge_graph-0.3.2/docs/adr/README.md +60 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-001-src-layout-import-resolution.md +72 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-002-retrieval-scores-render-zero.md +62 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-003-adr-readme-ingested-as-decision.md +58 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-004-relative-from-import-resolution.md +94 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-005-typescript-abstract-class-not-extracted.md +66 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-006-commonjs-require-not-resolved.md +176 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-007-overload-resolution-nondeterministic.md +97 -0
- agentforge_graph-0.3.2/docs/bugs/BUG-008-rerank-yaml-boolean-breaks-query.md +85 -0
- agentforge_graph-0.3.2/docs/bugs/README.md +54 -0
- agentforge_graph-0.3.2/docs/design/README.md +35 -0
- agentforge_graph-0.3.2/docs/design/design-001-core-contracts-module.md +340 -0
- agentforge_graph-0.3.2/docs/design/design-002-tree-sitter-ingestion.md +348 -0
- agentforge_graph-0.3.2/docs/design/design-003-graph-storage-adapters.md +391 -0
- agentforge_graph-0.3.2/docs/design/design-004-incremental-indexing.md +361 -0
- agentforge_graph-0.3.2/docs/design/design-005-ast-chunking-and-embeddings.md +311 -0
- agentforge_graph-0.3.2/docs/design/design-006-hybrid-retrieval.md +291 -0
- agentforge_graph-0.3.2/docs/design/design-007-repo-map.md +195 -0
- agentforge_graph-0.3.2/docs/design/design-008-mcp-server-and-tool-api.md +228 -0
- agentforge_graph-0.3.2/docs/design/design-009-temporal-evolution-layer.md +442 -0
- agentforge_graph-0.3.2/docs/design/design-010-adr-and-docs-ingestion.md +271 -0
- agentforge_graph-0.3.2/docs/design/design-011-framework-extractors.md +299 -0
- agentforge_graph-0.3.2/docs/design/design-012-llm-enrichment.md +309 -0
- agentforge_graph-0.3.2/docs/design/design-012b-summaries.md +216 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-001-pattern-recall-tuning.md +59 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-002-parallelize-enrichment-calls.md +52 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-003-pluggable-model-provider-registry.md +107 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-004-first-party-storage-backends.md +98 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-005-http-mcp-transport-auth.md +93 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-006-cli-path-arg-consistency.md +54 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-007-repomap-public-api-orientation.md +76 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-008-typescript-symbol-completeness.md +79 -0
- agentforge_graph-0.3.2/docs/enhancements/ENH-009-retrieval-precision-dense-codebases.md +129 -0
- agentforge_graph-0.3.2/docs/enhancements/README.md +50 -0
- agentforge_graph-0.3.2/docs/features/README.md +53 -0
- agentforge_graph-0.3.2/docs/features/TRACKER.md +402 -0
- agentforge_graph-0.3.2/docs/features/feat-001-graph-schema-and-core-contracts.md +263 -0
- agentforge_graph-0.3.2/docs/features/feat-002-tree-sitter-ingestion.md +241 -0
- agentforge_graph-0.3.2/docs/features/feat-003-graph-storage-adapters.md +217 -0
- agentforge_graph-0.3.2/docs/features/feat-004-incremental-indexing.md +199 -0
- agentforge_graph-0.3.2/docs/features/feat-005-ast-chunking-and-embeddings.md +218 -0
- agentforge_graph-0.3.2/docs/features/feat-006-hybrid-retrieval.md +214 -0
- agentforge_graph-0.3.2/docs/features/feat-007-repo-map-summarization.md +198 -0
- agentforge_graph-0.3.2/docs/features/feat-008-mcp-server-and-tool-api.md +212 -0
- agentforge_graph-0.3.2/docs/features/feat-009-temporal-evolution-layer.md +160 -0
- agentforge_graph-0.3.2/docs/features/feat-010-adr-and-docs-ingestion.md +264 -0
- agentforge_graph-0.3.2/docs/features/feat-011-framework-extractors.md +293 -0
- agentforge_graph-0.3.2/docs/features/feat-012-llm-enrichment.md +224 -0
- agentforge_graph-0.3.2/docs/guides/model-providers.md +195 -0
- agentforge_graph-0.3.2/docs/guides/storage-backends.md +88 -0
- agentforge_graph-0.3.2/docs/guides/using-over-mcp.md +173 -0
- agentforge_graph-0.3.2/docs/known-limitations/KL-001-llm-summary-hallucination.md +41 -0
- agentforge_graph-0.3.2/docs/known-limitations/README.md +36 -0
- agentforge_graph-0.3.2/docs/open-source-ckg-research.md +406 -0
- agentforge_graph-0.3.2/docs/runbooks/01-set-up-new-agent.md +68 -0
- agentforge_graph-0.3.2/docs/runbooks/02-add-a-tool.md +73 -0
- agentforge_graph-0.3.2/docs/runbooks/03-add-a-pipeline-task.md +70 -0
- agentforge_graph-0.3.2/docs/runbooks/04-pick-reasoning-strategy.md +68 -0
- agentforge_graph-0.3.2/docs/runbooks/05-write-prompts.md +76 -0
- agentforge_graph-0.3.2/docs/runbooks/06-test-your-agent.md +76 -0
- agentforge_graph-0.3.2/docs/runbooks/07-debug-a-run.md +71 -0
- agentforge_graph-0.3.2/docs/runbooks/08-add-memory.md +76 -0
- agentforge_graph-0.3.2/docs/runbooks/09-add-mcp.md +79 -0
- agentforge_graph-0.3.2/docs/runbooks/10-add-evaluators.md +77 -0
- agentforge_graph-0.3.2/docs/runbooks/11-add-safety-guardrails.md +84 -0
- agentforge_graph-0.3.2/docs/runbooks/12-add-observability.md +78 -0
- agentforge_graph-0.3.2/docs/runbooks/13-configure-multi-provider.md +92 -0
- agentforge_graph-0.3.2/docs/runbooks/14-deploy-your-agent.md +71 -0
- agentforge_graph-0.3.2/docs/runbooks/15-upgrade-your-agent.md +68 -0
- agentforge_graph-0.3.2/docs/runbooks/16-configuration-reference.md +82 -0
- agentforge_graph-0.3.2/docs/runbooks/17-add-reranker.md +79 -0
- agentforge_graph-0.3.2/docs/runbooks/18-add-hybrid-search.md +79 -0
- agentforge_graph-0.3.2/docs/runbooks/19-add-graphrag.md +84 -0
- agentforge_graph-0.3.2/docs/runbooks/20-apply-schema-migrations.md +93 -0
- agentforge_graph-0.3.2/docs/runbooks/21-use-streaming-guardrails.md +83 -0
- agentforge_graph-0.3.2/docs/runbooks/README.md +69 -0
- agentforge_graph-0.3.2/docs/validation/README.md +118 -0
- agentforge_graph-0.3.2/docs/validation/cpp-fmt.md +71 -0
- agentforge_graph-0.3.2/docs/validation/csharp-newtonsoft-json.md +75 -0
- agentforge_graph-0.3.2/docs/validation/go-cobra.md +83 -0
- agentforge_graph-0.3.2/docs/validation/java-gson.md +73 -0
- agentforge_graph-0.3.2/docs/validation/javascript-express-chalk.md +112 -0
- agentforge_graph-0.3.2/docs/validation/php-monolog.md +70 -0
- agentforge_graph-0.3.2/docs/validation/python-click.md +124 -0
- agentforge_graph-0.3.2/docs/validation/ruby-thor.md +70 -0
- agentforge_graph-0.3.2/docs/validation/rust-serde-json.md +75 -0
- agentforge_graph-0.3.2/docs/validation/typescript-zod.md +128 -0
- agentforge_graph-0.3.2/docs/validation/w4-agent-dogfood.md +76 -0
- agentforge_graph-0.3.2/pyproject.toml +137 -0
- agentforge_graph-0.3.2/src/agentforge_graph/__init__.py +6 -0
- agentforge_graph-0.3.2/src/agentforge_graph/chunking/__init__.py +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/chunking/cast.py +159 -0
- agentforge_graph-0.3.2/src/agentforge_graph/chunking/chunk.py +19 -0
- agentforge_graph-0.3.2/src/agentforge_graph/chunking/tokens.py +15 -0
- agentforge_graph-0.3.2/src/agentforge_graph/cli.py +607 -0
- agentforge_graph-0.3.2/src/agentforge_graph/config.py +259 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/__init__.py +54 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/conformance.py +270 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/contracts.py +163 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/kinds.py +68 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/models.py +134 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/provenance.py +62 -0
- agentforge_graph-0.3.2/src/agentforge_graph/core/symbols.py +116 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/__init__.py +28 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/base.py +22 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/bedrock.py +85 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/fake.py +34 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/openai.py +67 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/pipeline.py +184 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/registry.py +66 -0
- agentforge_graph-0.3.2/src/agentforge_graph/embed/report.py +15 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/__init__.py +70 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/anthropic.py +38 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/anthropic_client.py +109 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/bedrock.py +24 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/bedrock_client.py +115 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/bedrock_summarizer.py +23 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/claude.py +172 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/enricher.py +108 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/governs.py +173 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/governs_enricher.py +152 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/heuristics.py +224 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/judge.py +63 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/registry.py +133 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/report.py +60 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/summarizer.py +62 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/summary_enricher.py +211 -0
- agentforge_graph-0.3.2/src/agentforge_graph/enrich/taxonomy.py +38 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/__init__.py +29 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/base.py +75 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/detect.py +124 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/extractor.py +63 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/orm.py +93 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/_js_ast.py +56 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/_python_ast.py +157 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/django/__init__.py +240 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/django/models.scm +7 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/express/__init__.py +133 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/express/routes.scm +8 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/fastapi/__init__.py +210 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/fastapi/depends.scm +6 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/fastapi/routes.scm +10 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/flask/__init__.py +143 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/flask/routes.scm +11 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/nestjs/__init__.py +205 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/nestjs/routes.scm +6 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/spring/__init__.py +267 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/spring/routes.scm +6 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/sqlalchemy/__init__.py +250 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/packs/sqlalchemy/models.scm +7 -0
- agentforge_graph-0.3.2/src/agentforge_graph/frameworks/registry.py +44 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/__init__.py +30 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/codegraph.py +847 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/extractor.py +353 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/__init__.py +25 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/detect.py +118 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/dirty.py +61 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/indexer.py +218 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/meta.py +72 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/incremental/ports.py +39 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/pack.py +160 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/__init__.py +34 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/cpp/__init__.py +35 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/cpp/references.scm +15 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/cpp/structure.scm +49 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/csharp/__init__.py +35 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/csharp/references.scm +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/csharp/structure.scm +45 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/go/__init__.py +38 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/go/references.scm +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/go/structure.scm +64 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/java/__init__.py +35 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/java/references.scm +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/java/structure.scm +38 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/javascript/__init__.py +34 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/javascript/references.scm +11 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/javascript/structure.scm +166 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/php/__init__.py +35 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/php/references.scm +15 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/php/structure.scm +44 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/python/__init__.py +25 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/python/references.scm +14 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/python/structure.scm +57 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/ruby/__init__.py +37 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/ruby/references.scm +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/ruby/structure.scm +37 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/rust/__init__.py +39 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/rust/references.scm +12 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/rust/structure.scm +46 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/typescript/__init__.py +31 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/typescript/references.scm +11 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/packs/typescript/structure.scm +99 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/pipeline.py +134 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/report.py +84 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/resolver.py +467 -0
- agentforge_graph-0.3.2/src/agentforge_graph/ingest/source.py +79 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/__init__.py +28 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/adr.py +136 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/commits.py +152 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/ingest.py +312 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/mentions.py +71 -0
- agentforge_graph-0.3.2/src/agentforge_graph/knowledge/report.py +32 -0
- agentforge_graph-0.3.2/src/agentforge_graph/main.py +21 -0
- agentforge_graph-0.3.2/src/agentforge_graph/providers.py +36 -0
- agentforge_graph-0.3.2/src/agentforge_graph/repomap/__init__.py +14 -0
- agentforge_graph-0.3.2/src/agentforge_graph/repomap/rank.py +161 -0
- agentforge_graph-0.3.2/src/agentforge_graph/repomap/render.py +55 -0
- agentforge_graph-0.3.2/src/agentforge_graph/repomap/repomap.py +66 -0
- agentforge_graph-0.3.2/src/agentforge_graph/retrieve/__init__.py +21 -0
- agentforge_graph-0.3.2/src/agentforge_graph/retrieve/pack.py +76 -0
- agentforge_graph-0.3.2/src/agentforge_graph/retrieve/rerank.py +251 -0
- agentforge_graph-0.3.2/src/agentforge_graph/retrieve/retriever.py +286 -0
- agentforge_graph-0.3.2/src/agentforge_graph/retrieve/scoring.py +36 -0
- agentforge_graph-0.3.2/src/agentforge_graph/serve/__init__.py +19 -0
- agentforge_graph-0.3.2/src/agentforge_graph/serve/engine.py +204 -0
- agentforge_graph-0.3.2/src/agentforge_graph/serve/http_runner.py +133 -0
- agentforge_graph-0.3.2/src/agentforge_graph/serve/server.py +110 -0
- agentforge_graph-0.3.2/src/agentforge_graph/serve/tools.py +307 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/__init__.py +32 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/_rowmap.py +102 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/errors.py +22 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/facade.py +89 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/kuzu_store.py +380 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/lance_store.py +146 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/neo4j_store.py +294 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/pgvector_store.py +170 -0
- agentforge_graph-0.3.2/src/agentforge_graph/store/registry.py +45 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/__init__.py +36 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/backfill.py +338 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/events.py +82 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/index.py +190 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/mining.py +190 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/recorder.py +114 -0
- agentforge_graph-0.3.2/src/agentforge_graph/temporal/store.py +282 -0
- agentforge_graph-0.3.2/tests/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/chunking/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/chunking/test_cast.py +124 -0
- agentforge_graph-0.3.2/tests/chunking/test_layering.py +37 -0
- agentforge_graph-0.3.2/tests/core/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/core/test_conformance.py +204 -0
- agentforge_graph-0.3.2/tests/core/test_kinds.py +19 -0
- agentforge_graph-0.3.2/tests/core/test_layering.py +34 -0
- agentforge_graph-0.3.2/tests/core/test_models.py +62 -0
- agentforge_graph-0.3.2/tests/core/test_provenance.py +36 -0
- agentforge_graph-0.3.2/tests/core/test_symbols.py +68 -0
- agentforge_graph-0.3.2/tests/core/test_vector_contracts.py +24 -0
- agentforge_graph-0.3.2/tests/embed/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/embed/test_bedrock.py +84 -0
- agentforge_graph-0.3.2/tests/embed/test_cli.py +42 -0
- agentforge_graph-0.3.2/tests/embed/test_fake.py +49 -0
- agentforge_graph-0.3.2/tests/embed/test_openai.py +79 -0
- agentforge_graph-0.3.2/tests/embed/test_openai_live.py +25 -0
- agentforge_graph-0.3.2/tests/embed/test_pipeline.py +94 -0
- agentforge_graph-0.3.2/tests/embed/test_registry.py +53 -0
- agentforge_graph-0.3.2/tests/enrich/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/enrich/conftest.py +52 -0
- agentforge_graph-0.3.2/tests/enrich/test_anthropic.py +85 -0
- agentforge_graph-0.3.2/tests/enrich/test_anthropic_live.py +50 -0
- agentforge_graph-0.3.2/tests/enrich/test_bedrock.py +112 -0
- agentforge_graph-0.3.2/tests/enrich/test_bedrock_client.py +48 -0
- agentforge_graph-0.3.2/tests/enrich/test_claude.py +127 -0
- agentforge_graph-0.3.2/tests/enrich/test_enricher.py +112 -0
- agentforge_graph-0.3.2/tests/enrich/test_heuristics.py +134 -0
- agentforge_graph-0.3.2/tests/enrich/test_integration.py +103 -0
- agentforge_graph-0.3.2/tests/enrich/test_live.py +50 -0
- agentforge_graph-0.3.2/tests/enrich/test_registry.py +59 -0
- agentforge_graph-0.3.2/tests/enrich/test_summaries.py +116 -0
- agentforge_graph-0.3.2/tests/enrich/test_summaries_integration.py +108 -0
- agentforge_graph-0.3.2/tests/enrich/test_summaries_live.py +32 -0
- agentforge_graph-0.3.2/tests/frameworks/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/django/models.py +38 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/express/app.js +18 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/fastapi/app.py +31 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/fastapi/pyproject.toml +4 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/fastapi/service.py +2 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/flask/app.py +31 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/nestjs/users.controller.ts +30 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/spring/Helper.java +8 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/spring/UserController.java +31 -0
- agentforge_graph-0.3.2/tests/frameworks/fixtures/sqlalchemy/models.py +32 -0
- agentforge_graph-0.3.2/tests/frameworks/test_contract.py +48 -0
- agentforge_graph-0.3.2/tests/frameworks/test_detect.py +97 -0
- agentforge_graph-0.3.2/tests/frameworks/test_django_integration.py +77 -0
- agentforge_graph-0.3.2/tests/frameworks/test_django_pack.py +130 -0
- agentforge_graph-0.3.2/tests/frameworks/test_express_integration.py +58 -0
- agentforge_graph-0.3.2/tests/frameworks/test_express_pack.py +86 -0
- agentforge_graph-0.3.2/tests/frameworks/test_fastapi_pack.py +151 -0
- agentforge_graph-0.3.2/tests/frameworks/test_flask_integration.py +51 -0
- agentforge_graph-0.3.2/tests/frameworks/test_flask_pack.py +93 -0
- agentforge_graph-0.3.2/tests/frameworks/test_integration.py +155 -0
- agentforge_graph-0.3.2/tests/frameworks/test_layering.py +30 -0
- agentforge_graph-0.3.2/tests/frameworks/test_nestjs_integration.py +57 -0
- agentforge_graph-0.3.2/tests/frameworks/test_nestjs_pack.py +92 -0
- agentforge_graph-0.3.2/tests/frameworks/test_spring_integration.py +63 -0
- agentforge_graph-0.3.2/tests/frameworks/test_spring_pack.py +96 -0
- agentforge_graph-0.3.2/tests/frameworks/test_sqlalchemy_integration.py +133 -0
- agentforge_graph-0.3.2/tests/frameworks/test_sqlalchemy_pack.py +125 -0
- agentforge_graph-0.3.2/tests/ingest/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/ingest/conftest.py +22 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/javascript/mathutils.js +11 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/javascript/shapes.js +18 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/python/mathutils.py +11 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/python/shapes.py +18 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/typescript/mathutils.ts +11 -0
- agentforge_graph-0.3.2/tests/ingest/fixtures/typescript/shapes.ts +20 -0
- agentforge_graph-0.3.2/tests/ingest/incremental/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/ingest/incremental/test_equivalence.py +154 -0
- agentforge_graph-0.3.2/tests/ingest/incremental/test_incremental.py +197 -0
- agentforge_graph-0.3.2/tests/ingest/test_aliased_imports.py +78 -0
- agentforge_graph-0.3.2/tests/ingest/test_cli.py +77 -0
- agentforge_graph-0.3.2/tests/ingest/test_codegraph.py +78 -0
- agentforge_graph-0.3.2/tests/ingest/test_cpp_pack.py +145 -0
- agentforge_graph-0.3.2/tests/ingest/test_csharp_pack.py +107 -0
- agentforge_graph-0.3.2/tests/ingest/test_docstrings.py +122 -0
- agentforge_graph-0.3.2/tests/ingest/test_export_member.py +117 -0
- agentforge_graph-0.3.2/tests/ingest/test_go_pack.py +212 -0
- agentforge_graph-0.3.2/tests/ingest/test_go_receiver_calls.py +79 -0
- agentforge_graph-0.3.2/tests/ingest/test_inherited_method_calls.py +97 -0
- agentforge_graph-0.3.2/tests/ingest/test_inherits.py +75 -0
- agentforge_graph-0.3.2/tests/ingest/test_inherits_packs.py +87 -0
- agentforge_graph-0.3.2/tests/ingest/test_java_pack.py +110 -0
- agentforge_graph-0.3.2/tests/ingest/test_javascript_pack.py +234 -0
- agentforge_graph-0.3.2/tests/ingest/test_jsdoc.py +86 -0
- agentforge_graph-0.3.2/tests/ingest/test_layering.py +31 -0
- agentforge_graph-0.3.2/tests/ingest/test_member_calls.py +108 -0
- agentforge_graph-0.3.2/tests/ingest/test_member_calls_packs.py +104 -0
- agentforge_graph-0.3.2/tests/ingest/test_module_member_calls.py +77 -0
- agentforge_graph-0.3.2/tests/ingest/test_pack.py +52 -0
- agentforge_graph-0.3.2/tests/ingest/test_php_pack.py +108 -0
- agentforge_graph-0.3.2/tests/ingest/test_pipeline.py +58 -0
- agentforge_graph-0.3.2/tests/ingest/test_python_extractor.py +127 -0
- agentforge_graph-0.3.2/tests/ingest/test_qualified_bases.py +104 -0
- agentforge_graph-0.3.2/tests/ingest/test_resolver.py +156 -0
- agentforge_graph-0.3.2/tests/ingest/test_ruby_pack.py +112 -0
- agentforge_graph-0.3.2/tests/ingest/test_rust_pack.py +112 -0
- agentforge_graph-0.3.2/tests/ingest/test_source.py +53 -0
- agentforge_graph-0.3.2/tests/ingest/test_src_layout.py +87 -0
- agentforge_graph-0.3.2/tests/ingest/test_typescript_pack.py +211 -0
- agentforge_graph-0.3.2/tests/knowledge/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/knowledge/fixtures/repo/docs/adr/0007-old-payments.md +15 -0
- agentforge_graph-0.3.2/tests/knowledge/fixtures/repo/docs/adr/0012-idempotency.md +22 -0
- agentforge_graph-0.3.2/tests/knowledge/fixtures/repo/src/app/payments.py +7 -0
- agentforge_graph-0.3.2/tests/knowledge/test_adr_parser.py +54 -0
- agentforge_graph-0.3.2/tests/knowledge/test_commit_messages.py +102 -0
- agentforge_graph-0.3.2/tests/knowledge/test_discover.py +21 -0
- agentforge_graph-0.3.2/tests/knowledge/test_doc_embedding.py +122 -0
- agentforge_graph-0.3.2/tests/knowledge/test_doc_globs.py +85 -0
- agentforge_graph-0.3.2/tests/knowledge/test_infer_governs.py +120 -0
- agentforge_graph-0.3.2/tests/knowledge/test_integration.py +120 -0
- agentforge_graph-0.3.2/tests/knowledge/test_layering.py +31 -0
- agentforge_graph-0.3.2/tests/knowledge/test_mentions.py +51 -0
- agentforge_graph-0.3.2/tests/repomap/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/repomap/test_cli.py +39 -0
- agentforge_graph-0.3.2/tests/repomap/test_edge_cases.py +53 -0
- agentforge_graph-0.3.2/tests/repomap/test_layering.py +29 -0
- agentforge_graph-0.3.2/tests/repomap/test_rank.py +131 -0
- agentforge_graph-0.3.2/tests/repomap/test_render.py +89 -0
- agentforge_graph-0.3.2/tests/retrieve/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/retrieve/test_cli.py +53 -0
- agentforge_graph-0.3.2/tests/retrieve/test_doc_weight.py +89 -0
- agentforge_graph-0.3.2/tests/retrieve/test_filters.py +71 -0
- agentforge_graph-0.3.2/tests/retrieve/test_layering.py +30 -0
- agentforge_graph-0.3.2/tests/retrieve/test_live_relevance.py +35 -0
- agentforge_graph-0.3.2/tests/retrieve/test_pack_scoring.py +88 -0
- agentforge_graph-0.3.2/tests/retrieve/test_rerank.py +120 -0
- agentforge_graph-0.3.2/tests/retrieve/test_retriever.py +108 -0
- agentforge_graph-0.3.2/tests/retrieve/test_temporal_item.py +59 -0
- agentforge_graph-0.3.2/tests/serve/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/serve/test_binding.py +64 -0
- agentforge_graph-0.3.2/tests/serve/test_cli.py +87 -0
- agentforge_graph-0.3.2/tests/serve/test_engine.py +59 -0
- agentforge_graph-0.3.2/tests/serve/test_guardrails.py +31 -0
- agentforge_graph-0.3.2/tests/serve/test_http_auth.py +150 -0
- agentforge_graph-0.3.2/tests/serve/test_live_agent.py +34 -0
- agentforge_graph-0.3.2/tests/serve/test_schemas.py +36 -0
- agentforge_graph-0.3.2/tests/serve/test_tools.py +109 -0
- agentforge_graph-0.3.2/tests/store/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/store/test_facade.py +145 -0
- agentforge_graph-0.3.2/tests/store/test_kuzu_conformance.py +22 -0
- agentforge_graph-0.3.2/tests/store/test_kuzu_internals.py +185 -0
- agentforge_graph-0.3.2/tests/store/test_lance_conformance.py +91 -0
- agentforge_graph-0.3.2/tests/store/test_layering.py +39 -0
- agentforge_graph-0.3.2/tests/store/test_neo4j_conformance.py +57 -0
- agentforge_graph-0.3.2/tests/store/test_pgvector_conformance.py +70 -0
- agentforge_graph-0.3.2/tests/store/test_server_drivers.py +45 -0
- agentforge_graph-0.3.2/tests/temporal/__init__.py +0 -0
- agentforge_graph-0.3.2/tests/temporal/test_asof.py +135 -0
- agentforge_graph-0.3.2/tests/temporal/test_backfill.py +154 -0
- agentforge_graph-0.3.2/tests/temporal/test_denormalize.py +123 -0
- agentforge_graph-0.3.2/tests/temporal/test_index.py +112 -0
- agentforge_graph-0.3.2/tests/temporal/test_lifecycle.py +96 -0
- agentforge_graph-0.3.2/tests/temporal/test_mining.py +121 -0
- agentforge_graph-0.3.2/tests/temporal/test_read_e2e.py +134 -0
- agentforge_graph-0.3.2/tests/temporal/test_store.py +60 -0
- agentforge_graph-0.3.2/tests/test_cli_path_args.py +60 -0
- agentforge_graph-0.3.2/tests/test_config.py +53 -0
- agentforge_graph-0.3.2/tests/test_providers.py +43 -0
- agentforge_graph-0.3.2/uv.lock +2927 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# AgentForge scaffold answers — DO NOT EDIT MANUALLY.
|
|
2
|
+
# Used by `agentforge upgrade` to re-render managed template files.
|
|
3
|
+
_template_name: minimal
|
|
4
|
+
_template_version: 0.2.4
|
|
5
|
+
project_name: Agentforge Graph
|
|
6
|
+
project_slug: agentforge-graph
|
|
7
|
+
llm_provider: anthropic
|
|
8
|
+
description: An AgentForge agent (minimal).
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
.cursorrules:
|
|
2
|
+
forked: false
|
|
3
|
+
hash: 8a75b914bdf3cadbde5693497f0c1812a67ee01fde9e2166e97006a299b78962
|
|
4
|
+
source_module: template:minimal:_shared
|
|
5
|
+
source_version: 0.2.4
|
|
6
|
+
.env.example:
|
|
7
|
+
forked: false
|
|
8
|
+
hash: 45e023968759bfc3b10eee810fe2cde2033e8f80c998db5eda156b7ec1eccbe5
|
|
9
|
+
source_module: template:minimal
|
|
10
|
+
source_version: 0.2.4
|
|
11
|
+
.github/copilot-instructions.md:
|
|
12
|
+
forked: false
|
|
13
|
+
hash: 23c6e939d9d162837a85f0e3859f8e5808327aa77380d2a8e07f5b8c91d423e2
|
|
14
|
+
source_module: template:minimal:_shared
|
|
15
|
+
source_version: 0.2.4
|
|
16
|
+
.gitignore:
|
|
17
|
+
forked: false
|
|
18
|
+
hash: e2e64343502ba0a2753b9b76908c3861fcdcafa1f4052c9da02be123f3d7404a
|
|
19
|
+
source_module: template:minimal
|
|
20
|
+
source_version: 0.2.4
|
|
21
|
+
.gitkeep:
|
|
22
|
+
forked: false
|
|
23
|
+
hash: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
|
|
24
|
+
source_module: template:minimal:_shared
|
|
25
|
+
source_version: 0.2.4
|
|
26
|
+
AGENTS.md:
|
|
27
|
+
forked: false
|
|
28
|
+
hash: c2f4dad7b549ce1f78d932e03c00159080caa1569a25be4a03f2e33d795fe8e2
|
|
29
|
+
source_module: template:minimal:_shared
|
|
30
|
+
source_version: 0.2.4
|
|
31
|
+
CLAUDE.md:
|
|
32
|
+
forked: false
|
|
33
|
+
hash: 9120f1c4a7740f3147e85b6010ea0c0cd12d09e886b496fd6d0b958e2239b469
|
|
34
|
+
source_module: template:minimal:_shared
|
|
35
|
+
source_version: 0.2.4
|
|
36
|
+
README.md:
|
|
37
|
+
forked: false
|
|
38
|
+
hash: c474ab3012ec420a13389cd5cbfeebc1d69ee35b4f9ad0c6fb84a0404d820303
|
|
39
|
+
source_module: template:minimal
|
|
40
|
+
source_version: 0.2.4
|
|
41
|
+
agentforge.yaml:
|
|
42
|
+
forked: false
|
|
43
|
+
hash: 3f971e1f7bac5a4d647849d5f6fcdf7b9cb7ad2e399247b38d66c726918e6d98
|
|
44
|
+
source_module: template:minimal
|
|
45
|
+
source_version: 0.2.4
|
|
46
|
+
docs/runbooks/01-set-up-new-agent.md:
|
|
47
|
+
forked: false
|
|
48
|
+
hash: 9767d5fccc9a78206289504337f26b3ebfd18a62c4ec68c75d5684e64f2ff0d3
|
|
49
|
+
source_module: template:minimal:_shared
|
|
50
|
+
source_version: 0.2.4
|
|
51
|
+
docs/runbooks/02-add-a-tool.md:
|
|
52
|
+
forked: false
|
|
53
|
+
hash: 54e75ed0aa463dcc143fbee577746b7d853ca19c7b31d4ed91557f2afb1b5f03
|
|
54
|
+
source_module: template:minimal:_shared
|
|
55
|
+
source_version: 0.2.4
|
|
56
|
+
docs/runbooks/03-add-a-pipeline-task.md:
|
|
57
|
+
forked: false
|
|
58
|
+
hash: e02a38df57668ab1873d35c83c666bc0b3e4f01f9836babe1eb780eb3a3e3d0b
|
|
59
|
+
source_module: template:minimal:_shared
|
|
60
|
+
source_version: 0.2.4
|
|
61
|
+
docs/runbooks/04-pick-reasoning-strategy.md:
|
|
62
|
+
forked: false
|
|
63
|
+
hash: abe78f8b53fe324f2b86c0a7c69822425c3e267ed232c83021baca0cf6eb804b
|
|
64
|
+
source_module: template:minimal:_shared
|
|
65
|
+
source_version: 0.2.4
|
|
66
|
+
docs/runbooks/05-write-prompts.md:
|
|
67
|
+
forked: false
|
|
68
|
+
hash: 248e76f52c90220d05d1bb2ad1976643d8e68896e5888e9da4b5ccdbf25ccaae
|
|
69
|
+
source_module: template:minimal:_shared
|
|
70
|
+
source_version: 0.2.4
|
|
71
|
+
docs/runbooks/06-test-your-agent.md:
|
|
72
|
+
forked: false
|
|
73
|
+
hash: 81af251a9a4ce45d3b80bf07ffd88173926363fa2e27d7c958279c3b760fdd9b
|
|
74
|
+
source_module: template:minimal:_shared
|
|
75
|
+
source_version: 0.2.4
|
|
76
|
+
docs/runbooks/07-debug-a-run.md:
|
|
77
|
+
forked: false
|
|
78
|
+
hash: 336052b797bc5f39d29ed754fec76e37c50511515a765fbe874cacb1dd06165f
|
|
79
|
+
source_module: template:minimal:_shared
|
|
80
|
+
source_version: 0.2.4
|
|
81
|
+
docs/runbooks/08-add-memory.md:
|
|
82
|
+
forked: false
|
|
83
|
+
hash: 34357485fbb087775cfd99e55500515795e7ff4207b1257b9b66b77b55e82ea5
|
|
84
|
+
source_module: template:minimal:_shared
|
|
85
|
+
source_version: 0.2.4
|
|
86
|
+
docs/runbooks/09-add-mcp.md:
|
|
87
|
+
forked: false
|
|
88
|
+
hash: 3e945da99f484716937036b6dd4686a3f84b3784c877e3ef01166ea1b7399cb2
|
|
89
|
+
source_module: template:minimal:_shared
|
|
90
|
+
source_version: 0.2.4
|
|
91
|
+
docs/runbooks/10-add-evaluators.md:
|
|
92
|
+
forked: false
|
|
93
|
+
hash: acfbdccaaad2ffb9c6fdd7a99de9a42a5fac365585d5cb7fd3e8230ee77bbf26
|
|
94
|
+
source_module: template:minimal:_shared
|
|
95
|
+
source_version: 0.2.4
|
|
96
|
+
docs/runbooks/11-add-safety-guardrails.md:
|
|
97
|
+
forked: false
|
|
98
|
+
hash: c52053398767e28ec3d6c1e334a7b8fdf9359276ab3248ebdda956d0ec610daf
|
|
99
|
+
source_module: template:minimal:_shared
|
|
100
|
+
source_version: 0.2.4
|
|
101
|
+
docs/runbooks/12-add-observability.md:
|
|
102
|
+
forked: false
|
|
103
|
+
hash: b9ce79b8f258b393fd9fc5d9aa4f453503399b3415ac893af3cfd158271302ec
|
|
104
|
+
source_module: template:minimal:_shared
|
|
105
|
+
source_version: 0.2.4
|
|
106
|
+
docs/runbooks/13-configure-multi-provider.md:
|
|
107
|
+
forked: false
|
|
108
|
+
hash: 3587a253001bab61486c59c6f40e29a60b26c0ee0deed2167fa62e6de9cb04f7
|
|
109
|
+
source_module: template:minimal:_shared
|
|
110
|
+
source_version: 0.2.4
|
|
111
|
+
docs/runbooks/14-deploy-your-agent.md:
|
|
112
|
+
forked: false
|
|
113
|
+
hash: e036df7d4cf3f2d144fb8dd05b747539483b507340fc3ea474c4d1e016424b29
|
|
114
|
+
source_module: template:minimal:_shared
|
|
115
|
+
source_version: 0.2.4
|
|
116
|
+
docs/runbooks/15-upgrade-your-agent.md:
|
|
117
|
+
forked: false
|
|
118
|
+
hash: 81034a5ee4c294ab12d356461a75f065cb6c2cb42dcc23cc71ce05d0b11098ee
|
|
119
|
+
source_module: template:minimal:_shared
|
|
120
|
+
source_version: 0.2.4
|
|
121
|
+
docs/runbooks/16-configuration-reference.md:
|
|
122
|
+
forked: false
|
|
123
|
+
hash: e2cf5067d2fb8ef6ba9e3c1f0f7a39f63082b9685ee687385a0bf2d115b014b6
|
|
124
|
+
source_module: template:minimal:_shared
|
|
125
|
+
source_version: 0.2.4
|
|
126
|
+
docs/runbooks/17-add-reranker.md:
|
|
127
|
+
forked: false
|
|
128
|
+
hash: 2718f76d448ecbe0831c09bcd8431e914b911d487ef50dbb09a4c06bc7bfc36b
|
|
129
|
+
source_module: template:minimal:_shared
|
|
130
|
+
source_version: 0.2.4
|
|
131
|
+
docs/runbooks/18-add-hybrid-search.md:
|
|
132
|
+
forked: false
|
|
133
|
+
hash: 4f5a8eabfd560ef02552ff24ce9f75288f87a096750cb04e6eb457989e954ba1
|
|
134
|
+
source_module: template:minimal:_shared
|
|
135
|
+
source_version: 0.2.4
|
|
136
|
+
docs/runbooks/19-add-graphrag.md:
|
|
137
|
+
forked: false
|
|
138
|
+
hash: 39504e95e5eee24c3e533ceaacbb1479406c36d83969d53aca2fe1d06fb69a8f
|
|
139
|
+
source_module: template:minimal:_shared
|
|
140
|
+
source_version: 0.2.4
|
|
141
|
+
docs/runbooks/20-apply-schema-migrations.md:
|
|
142
|
+
forked: false
|
|
143
|
+
hash: eef758aedb2670f7cbdbb1222b06f8f41e4a786852f344199bf1f5ec63ce2f24
|
|
144
|
+
source_module: template:minimal:_shared
|
|
145
|
+
source_version: 0.2.4
|
|
146
|
+
docs/runbooks/21-use-streaming-guardrails.md:
|
|
147
|
+
forked: false
|
|
148
|
+
hash: 66b694aabc6e09a4c599d4e347044f8b21ce0c24feaea3157349a667e428d518
|
|
149
|
+
source_module: template:minimal:_shared
|
|
150
|
+
source_version: 0.2.4
|
|
151
|
+
docs/runbooks/README.md:
|
|
152
|
+
forked: false
|
|
153
|
+
hash: baeef86ba55cd2185c5ae2fa3b070771dd90e6e19fa9826472ea5f7772b7b249
|
|
154
|
+
source_module: template:minimal:_shared
|
|
155
|
+
source_version: 0.2.4
|
|
156
|
+
pyproject.toml:
|
|
157
|
+
forked: false
|
|
158
|
+
hash: 6f314576dc1d2b62ea17fe94d39b0a69d98bda996c89685ee084539312387d95
|
|
159
|
+
source_module: template:minimal
|
|
160
|
+
source_version: 0.2.4
|
|
161
|
+
src/agentforge_graph/__init__.py:
|
|
162
|
+
forked: false
|
|
163
|
+
hash: b6f9eb202d197dad3ae57d0defe4396b9e14ff0b56a7949cf760492c452a5401
|
|
164
|
+
source_module: template:minimal
|
|
165
|
+
source_version: 0.2.4
|
|
166
|
+
src/agentforge_graph/main.py:
|
|
167
|
+
forked: false
|
|
168
|
+
hash: c05d490b5a1c7dd8ab3bda75558a7083cf22c8676f872476cb50c087edfbc020
|
|
169
|
+
source_module: template:minimal
|
|
170
|
+
source_version: 0.2.4
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# CLAUDE.md — agentforge-graph
|
|
2
|
+
|
|
3
|
+
> Entry point for AI assistants working on **agentforge-graph**, a
|
|
4
|
+
> Code Knowledge Graph (CKG) engine + agent toolset built on the
|
|
5
|
+
> AgentForge framework (agentforge-py 0.2.4). This is an **agent
|
|
6
|
+
> project** (it consumes the framework), not a framework project.
|
|
7
|
+
|
|
8
|
+
## Read first, in order
|
|
9
|
+
|
|
10
|
+
1. [`../../../AGENTS.md`](../../../AGENTS.md) — workspace meta rules.
|
|
11
|
+
2. [`../../../.claude/development-pipeline.md`](../../../.claude/development-pipeline.md)
|
|
12
|
+
— the abstract per-feature workflow every project follows
|
|
13
|
+
(pick → branch → analyse → design → implement → test → commit → PR
|
|
14
|
+
→ merge), and the `.claude/state/` format.
|
|
15
|
+
3. `.claude/state/current.md` — active feature, branch, what's done,
|
|
16
|
+
what's pending. **Local-only, git-ignored**; may be absent on a
|
|
17
|
+
fresh clone — create it when you start tracking work.
|
|
18
|
+
4. [`../docs/features/TRACKER.md`](../docs/features/TRACKER.md) —
|
|
19
|
+
status board + dependency DAG; tells you what's ready to pick.
|
|
20
|
+
5. [`../docs/features/README.md`](../docs/features/README.md) +
|
|
21
|
+
the active [`../docs/features/feat-NNN-*.md`](../docs/features/) spec.
|
|
22
|
+
6. [`../docs/design/`](../docs/design/) — **one design doc per feature**
|
|
23
|
+
(`design-NNN-slug.md` mirrors `feat-NNN`). The *how* (file layout,
|
|
24
|
+
exact types, resolved decisions, chunk plan); written and approved
|
|
25
|
+
in the design stage before any code.
|
|
26
|
+
7. [`../docs/adr/`](../docs/adr/) — the 9 architecture decisions.
|
|
27
|
+
7. [`../docs/open-source-ckg-research.md`](../docs/open-source-ckg-research.md)
|
|
28
|
+
— the research that motivates the design.
|
|
29
|
+
|
|
30
|
+
## Project-specific notes
|
|
31
|
+
|
|
32
|
+
- **Tooling is `uv`, not pip.** Install: `uv sync` (base) /
|
|
33
|
+
`uv sync --extra engine`. Run the framework CLI as
|
|
34
|
+
`uv run agentforge …`, the agent CLI as `uv run ckg …`.
|
|
35
|
+
`agentforge add module` does **not** work here (it shells out to
|
|
36
|
+
`pip`, absent in uv venvs) — declare modules in `pyproject.toml`
|
|
37
|
+
and `uv sync` instead.
|
|
38
|
+
- **Two config files, on purpose.** `agentforge.yaml` is framework
|
|
39
|
+
config (strict validator — no unknown keys). `ckg.yaml` is this
|
|
40
|
+
agent's own engine config (store/ingest/chunking/embed/retrieve/
|
|
41
|
+
serve), read by the `agentforge_graph` package.
|
|
42
|
+
- **Framework learnings go in `docs/framework/`** — local-only,
|
|
43
|
+
git-ignored. Log any framework bug/hack/workaround/missing-feature
|
|
44
|
+
there as you hit it (baseline: agentforge-py 0.2.4).
|
|
45
|
+
- **Reuse framework rails, don't reinvent.** `Tool` ABC + MCP
|
|
46
|
+
(feat-008), `Agent` + `budget_usd` (feat-010/012 enrichment),
|
|
47
|
+
reranker (feat-006). Keep the deterministic engine core
|
|
48
|
+
(`core`/`ingest`/`store`/`retrieve`) free of `agentforge` imports
|
|
49
|
+
(ADR-0001).
|
|
50
|
+
- **Feature numbering is fixed** by `docs/features/`. Branch
|
|
51
|
+
`feat/NNN-slug` must match an existing spec filename — never invent
|
|
52
|
+
numbers. One feature = one branch = one PR.
|
|
53
|
+
- Use `Read`/`Edit`/`Glob`/`Grep`, not Bash `cat`/`find`/`sed`.
|
|
54
|
+
Never `--no-verify` without explicit authorization.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Coding standards — agentforge-graph
|
|
2
|
+
|
|
3
|
+
- **Python 3.13**, `from __future__ import annotations` in every module.
|
|
4
|
+
- **Type everything.** `mypy --strict` is the gate (`uv run mypy`).
|
|
5
|
+
No untyped defs, no implicit `Any` in the engine core.
|
|
6
|
+
- **Value types are Pydantic models**, validated at construction —
|
|
7
|
+
that's where ADR-0004 (provenance) and ADR-0003 (symbol-id) rules are
|
|
8
|
+
enforced. Frozen where the value is an identity (`Provenance`,
|
|
9
|
+
`SourceFile`, `ParsedSymbol`).
|
|
10
|
+
- **Layering (ADR-0001):** the deterministic engine core
|
|
11
|
+
(`core`/`ingest`/`store`/`retrieve`) must not import `agentforge`.
|
|
12
|
+
Enforced by a unit test. Framework rails are used only at the
|
|
13
|
+
serving/enrichment edges.
|
|
14
|
+
- **Lint/format:** `ruff` (`uv run ruff check` + `ruff format`),
|
|
15
|
+
line length 100.
|
|
16
|
+
- **No `print`** in library code; surface results via return values /
|
|
17
|
+
logging.
|
|
18
|
+
- Public surface of a package is its `__init__.__all__`; internal module
|
|
19
|
+
moves must not break that surface.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Testing standards — agentforge-graph
|
|
2
|
+
|
|
3
|
+
- **Runner:** `pytest`, async via `pytest-asyncio` (`asyncio_mode =
|
|
4
|
+
auto` — no per-test marker needed). Run: `uv run pytest`.
|
|
5
|
+
- **Coverage floor: 90%** on `agentforge_graph.core` (and each
|
|
6
|
+
feature's package as it lands). Enforced by `--cov-fail-under=90`.
|
|
7
|
+
- **Conformance suites** (`core/conformance.py`) are the contract tests:
|
|
8
|
+
every `GraphStore` adapter (feat-003) and `Extractor` (feat-002/011)
|
|
9
|
+
subclasses the matching base class and provides its fixture. A new
|
|
10
|
+
backend is "done" when the shared suite passes against it.
|
|
11
|
+
- **Property/determinism tests** for anything identity-related: symbol
|
|
12
|
+
IDs round-trip and are order-independent; extraction is deterministic
|
|
13
|
+
(same content → same subgraph).
|
|
14
|
+
- **No network / no model calls in unit tests.** LLM-touching paths
|
|
15
|
+
(feat-010/012) use recorded/mocked responses; live tests are
|
|
16
|
+
env-gated and excluded from the default run.
|
|
17
|
+
- Test fixtures use builders (`make_sample_subgraph`), not copy-pasted
|
|
18
|
+
literals.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
See AGENTS.md for project conventions. AGENTS.md is the canonical
|
|
2
|
+
source. This file exists so Cursor's native .cursorrules discovery
|
|
3
|
+
keeps working.
|
|
4
|
+
|
|
5
|
+
Cursor-specific rules can be added below this marker:
|
|
6
|
+
|
|
7
|
+
<!-- agentforge:end-managed -->
|
|
8
|
+
|
|
9
|
+
<!-- agentforge:custom -->
|
|
10
|
+
<!-- Cursor-specific rules go here. This section survives
|
|
11
|
+
`agentforge upgrade`. -->
|
|
12
|
+
<!-- agentforge:end-custom -->
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- AGENTFORGE-MANAGED: template:minimal@0.2.4 hash:23c6e939d9d1 -->
|
|
2
|
+
See [AGENTS.md](../AGENTS.md) for project conventions. AGENTS.md
|
|
3
|
+
is the canonical source for AI-assistant instructions. This file
|
|
4
|
+
exists so GitHub Copilot's native
|
|
5
|
+
`.github/copilot-instructions.md` discovery keeps working.
|
|
6
|
+
|
|
7
|
+
Copilot-specific instructions can be added below this marker:
|
|
8
|
+
|
|
9
|
+
<!-- agentforge:end-managed -->
|
|
10
|
+
|
|
11
|
+
<!-- agentforge:custom -->
|
|
12
|
+
<!-- Copilot-specific instructions go here. This section survives
|
|
13
|
+
`agentforge upgrade`. -->
|
|
14
|
+
<!-- agentforge:end-custom -->
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
# Runs the exact local gate on every PR to main: ruff lint + format,
|
|
4
|
+
# mypy --strict, and pytest with a >=90% coverage floor. The coverage threshold
|
|
5
|
+
# is enforced by `--cov-fail-under=90` in pyproject's [tool.pytest.ini_options];
|
|
6
|
+
# CI just runs `pytest`, so local and CI agree. Only on PRs — the PR gate already
|
|
7
|
+
# validated the merge result, so re-running on push to main is redundant.
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main]
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ci-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
# Opt JS actions into Node 24 now (Node 20 is force-removed from runners
|
|
18
|
+
# 2026-06-16). Drop this once the actions ship Node-24-native majors.
|
|
19
|
+
env:
|
|
20
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
validate:
|
|
27
|
+
name: lint · type · test (>=90% cov)
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Install uv
|
|
33
|
+
uses: astral-sh/setup-uv@v6
|
|
34
|
+
with:
|
|
35
|
+
enable-cache: true
|
|
36
|
+
|
|
37
|
+
- name: Sync dependencies (base + dev + engine)
|
|
38
|
+
# feat-003 is the first feature needing native wheels (kuzu, lancedb)
|
|
39
|
+
# from the `engine` extra; tree-sitter (feat-002) rides the same extra.
|
|
40
|
+
run: uv sync --extra dev --extra engine
|
|
41
|
+
|
|
42
|
+
- name: Ruff lint
|
|
43
|
+
run: uv run ruff check
|
|
44
|
+
|
|
45
|
+
- name: Ruff format check
|
|
46
|
+
run: uv run ruff format --check
|
|
47
|
+
|
|
48
|
+
- name: Mypy (strict)
|
|
49
|
+
run: uv run mypy
|
|
50
|
+
|
|
51
|
+
- name: Tests + coverage (fails under 90%)
|
|
52
|
+
run: uv run pytest
|
|
53
|
+
|
|
54
|
+
# ENH-004: run the server-backend conformance against real DBs (public images,
|
|
55
|
+
# no secrets), so Neo4j/pgvector are verified in CI — not just locally. Separate
|
|
56
|
+
# job so a DB hiccup can't fail the core gate; both must pass to merge.
|
|
57
|
+
server-backends:
|
|
58
|
+
name: server backends (neo4j + pgvector conformance)
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
services:
|
|
61
|
+
neo4j:
|
|
62
|
+
image: neo4j:5
|
|
63
|
+
env:
|
|
64
|
+
NEO4J_AUTH: neo4j/ckgckgckg
|
|
65
|
+
ports: ["7687:7687"]
|
|
66
|
+
options: >-
|
|
67
|
+
--health-cmd "cypher-shell -u neo4j -p ckgckgckg 'RETURN 1' || exit 1"
|
|
68
|
+
--health-interval 10s --health-timeout 5s --health-retries 20
|
|
69
|
+
postgres:
|
|
70
|
+
image: pgvector/pgvector:pg16
|
|
71
|
+
env:
|
|
72
|
+
POSTGRES_PASSWORD: ckg
|
|
73
|
+
POSTGRES_DB: ckg
|
|
74
|
+
ports: ["5432:5432"]
|
|
75
|
+
options: >-
|
|
76
|
+
--health-cmd "pg_isready -U postgres" --health-interval 5s
|
|
77
|
+
--health-timeout 5s --health-retries 20
|
|
78
|
+
steps:
|
|
79
|
+
- uses: actions/checkout@v4
|
|
80
|
+
- name: Install uv
|
|
81
|
+
uses: astral-sh/setup-uv@v6
|
|
82
|
+
with:
|
|
83
|
+
enable-cache: true
|
|
84
|
+
- name: Sync dependencies (+ neo4j + pgvector extras)
|
|
85
|
+
run: uv sync --extra dev --extra engine --extra neo4j --extra pgvector
|
|
86
|
+
- name: Server-backend conformance
|
|
87
|
+
env:
|
|
88
|
+
CKG_NEO4J_URI: bolt://localhost:7687
|
|
89
|
+
CKG_NEO4J_PASSWORD: ckgckgckg
|
|
90
|
+
CKG_PGVECTOR_DSN: postgresql://postgres:ckg@localhost:5432/ckg
|
|
91
|
+
run: >-
|
|
92
|
+
uv run pytest --no-cov
|
|
93
|
+
tests/store/test_neo4j_conformance.py
|
|
94
|
+
tests/store/test_pgvector_conformance.py
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
.env
|
|
2
|
+
.venv/
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.pyc
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
.mypy_cache/
|
|
8
|
+
.coverage
|
|
9
|
+
htmlcov/
|
|
10
|
+
|
|
11
|
+
# CKG index artifacts (derivable; never committed — ADR-0006)
|
|
12
|
+
.ckg/
|
|
13
|
+
|
|
14
|
+
# Local-only framework learnings (issues, hacks, upgrade notes)
|
|
15
|
+
docs/framework/
|
|
16
|
+
|
|
17
|
+
# AI-assistant per-session working state (local-only, not published)
|
|
18
|
+
.claude/state/
|
|
19
|
+
|
|
20
|
+
# macOS
|
|
21
|
+
.DS_Store
|
|
22
|
+
|
|
23
|
+
# Keep .agentforge-state checked in — it tracks framework managed
|
|
24
|
+
# files for upgrade.
|
|
25
|
+
|
|
26
|
+
# build artifacts (uv build / hatchling)
|
|
27
|
+
/dist/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Pre-commit gate for agentforge-graph. Run manually / in CI:
|
|
2
|
+
# uv run pre-commit run --all-files
|
|
3
|
+
# (Local git-hook install is optional; chunked commits validate via the
|
|
4
|
+
# same tools run directly: uv run ruff check / mypy / pytest.)
|
|
5
|
+
repos:
|
|
6
|
+
- repo: local
|
|
7
|
+
hooks:
|
|
8
|
+
- id: ruff-format
|
|
9
|
+
name: ruff format
|
|
10
|
+
entry: uv run ruff format
|
|
11
|
+
language: system
|
|
12
|
+
types: [python]
|
|
13
|
+
- id: ruff-check
|
|
14
|
+
name: ruff check
|
|
15
|
+
entry: uv run ruff check --fix
|
|
16
|
+
language: system
|
|
17
|
+
types: [python]
|
|
18
|
+
- id: mypy
|
|
19
|
+
name: mypy --strict (src)
|
|
20
|
+
entry: uv run mypy
|
|
21
|
+
language: system
|
|
22
|
+
pass_filenames: false
|
|
23
|
+
types: [python]
|
|
24
|
+
- id: pytest
|
|
25
|
+
name: pytest + coverage
|
|
26
|
+
entry: uv run pytest
|
|
27
|
+
language: system
|
|
28
|
+
pass_filenames: false
|
|
29
|
+
types: [python]
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<!-- AGENTFORGE-MANAGED: template:minimal@0.2.4 hash:c2f4dad7b549 -->
|
|
2
|
+
# AgentForge agent — AI assistant instructions
|
|
3
|
+
|
|
4
|
+
This project is built on **AgentForge 0.2.4**. Use
|
|
5
|
+
these rules when suggesting changes. The file is read by Claude
|
|
6
|
+
Code, Cursor, Aider, and any tool following the
|
|
7
|
+
[AGENTS.md convention](https://agents.md).
|
|
8
|
+
|
|
9
|
+
## Project shape (you must respect this)
|
|
10
|
+
|
|
11
|
+
- Framework version: `0.2.4`
|
|
12
|
+
- Template: `minimal`
|
|
13
|
+
- Project slug: `agentforge-graph`
|
|
14
|
+
- LLM provider: `anthropic`
|
|
15
|
+
|
|
16
|
+
## File ownership rules
|
|
17
|
+
|
|
18
|
+
- Files starting with `AGENTFORGE-MANAGED:` are owned by the
|
|
19
|
+
framework. Do not edit. Suggest changes to YAML config or
|
|
20
|
+
developer-owned files instead.
|
|
21
|
+
- Files starting with `AGENTFORGE-FORKED:` were customised by the
|
|
22
|
+
developer. Edit normally; do not restore the marker.
|
|
23
|
+
- Files with no marker are developer-owned. Edit normally.
|
|
24
|
+
- Markdown documents may carry a `<!-- agentforge:end-managed -->`
|
|
25
|
+
marker. Everything above belongs to the framework; everything
|
|
26
|
+
below is the developer's custom section and survives upgrades.
|
|
27
|
+
|
|
28
|
+
## Architecture invariants
|
|
29
|
+
|
|
30
|
+
- **Tools** — use the `@tool` decorator on a typed function, OR
|
|
31
|
+
subclass `Tool`. Type hints drive the input schema; do not
|
|
32
|
+
hand-write JSON schemas.
|
|
33
|
+
- **Reasoning loop** — do not edit. Configure via
|
|
34
|
+
`agentforge.yaml > agent.strategy`.
|
|
35
|
+
- **LLM clients** — do not import vendor SDKs directly. Use
|
|
36
|
+
`agent.providers["..."]` or pass `model="<provider>:<model_id>"`.
|
|
37
|
+
- **Memory** — do not write SQL directly. Use `agent.memory.put`
|
|
38
|
+
/ `.get` / `.query`.
|
|
39
|
+
- **Costs** — do not bypass `BudgetPolicy`. Every LLM call is
|
|
40
|
+
checked. Bypassing it is a P3 (cost-safety) violation.
|
|
41
|
+
- **Run id** — do not invent your own correlation id. Use
|
|
42
|
+
`current_run().run_id` from `agentforge_core.production.run_context`.
|
|
43
|
+
- **Guardrails** — input / output / tool-gate validators live in
|
|
44
|
+
`agentforge.guardrails`. Custom validators implement the locked
|
|
45
|
+
ABCs in `agentforge_core.contracts.guardrails`.
|
|
46
|
+
|
|
47
|
+
## How to add common things
|
|
48
|
+
|
|
49
|
+
Open the runbook for the full step-by-step. Each runbook lives at
|
|
50
|
+
`docs/runbooks/NN-<topic>.md` and is upgrade-safe (the framework
|
|
51
|
+
maintains the managed section).
|
|
52
|
+
|
|
53
|
+
| Task | Runbook |
|
|
54
|
+
|---|---|
|
|
55
|
+
| Set up a fresh agent | `docs/runbooks/01-set-up-new-agent.md` |
|
|
56
|
+
| Add a tool | `docs/runbooks/02-add-a-tool.md` |
|
|
57
|
+
| Add a pipeline task | `docs/runbooks/03-add-a-pipeline-task.md` |
|
|
58
|
+
| Pick a reasoning strategy | `docs/runbooks/04-pick-reasoning-strategy.md` |
|
|
59
|
+
| Write prompts | `docs/runbooks/05-write-prompts.md` |
|
|
60
|
+
| Test your agent | `docs/runbooks/06-test-your-agent.md` |
|
|
61
|
+
| Debug a run | `docs/runbooks/07-debug-a-run.md` |
|
|
62
|
+
| Add memory / persistence | `docs/runbooks/08-add-memory.md` |
|
|
63
|
+
| Add MCP servers | `docs/runbooks/09-add-mcp.md` |
|
|
64
|
+
| Add evaluators | `docs/runbooks/10-add-evaluators.md` |
|
|
65
|
+
| Add safety guardrails | `docs/runbooks/11-add-safety-guardrails.md` |
|
|
66
|
+
| Add observability | `docs/runbooks/12-add-observability.md` |
|
|
67
|
+
| Configure multi-provider | `docs/runbooks/13-configure-multi-provider.md` |
|
|
68
|
+
| Deploy your agent | `docs/runbooks/14-deploy-your-agent.md` |
|
|
69
|
+
| Upgrade your agent | `docs/runbooks/15-upgrade-your-agent.md` |
|
|
70
|
+
| Configuration reference | `docs/runbooks/16-configuration-reference.md` |
|
|
71
|
+
| Add a reranker | `docs/runbooks/17-add-reranker.md` |
|
|
72
|
+
| Add hybrid search (BM25 + vector) | `docs/runbooks/18-add-hybrid-search.md` |
|
|
73
|
+
| Add GraphRAG (graph-augmented retrieval) | `docs/runbooks/19-add-graphrag.md` |
|
|
74
|
+
| Apply schema migrations | `docs/runbooks/20-apply-schema-migrations.md` |
|
|
75
|
+
| Use streaming guardrails (sentence-window) | `docs/runbooks/21-use-streaming-guardrails.md` |
|
|
76
|
+
|
|
77
|
+
## Anti-patterns (do not suggest these)
|
|
78
|
+
|
|
79
|
+
- **Other-framework idioms** (chain/runnable/pipe abstractions from a
|
|
80
|
+
different agent framework) — wrong framework. Use AgentForge's
|
|
81
|
+
`Agent` + `@tool` + strategy
|
|
82
|
+
composition instead.
|
|
83
|
+
- **Hand-rolling JSON schemas for tools** — use type hints on a
|
|
84
|
+
`@tool`-decorated function and the schema is derived.
|
|
85
|
+
- **Storing API keys in `agentforge.yaml` literals** — use
|
|
86
|
+
`${ENV_VAR}` interpolation; secrets live in `.env` (gitignored).
|
|
87
|
+
- **Catching exceptions inside tool code to "make the agent more
|
|
88
|
+
robust"** — let them surface; the framework records them as
|
|
89
|
+
observations and the LLM recovers naturally.
|
|
90
|
+
- **Adding a wrapper around `Agent.run()` to add logging** — the
|
|
91
|
+
framework already logs; install a custom hook (runbook 12).
|
|
92
|
+
- **Writing SQL directly against the memory backend** — use
|
|
93
|
+
`agent.memory.put / .get / .query`; SQL bypasses the contract
|
|
94
|
+
and breaks driver swaps.
|
|
95
|
+
- **Running expensive code outside `BudgetPolicy`** — every
|
|
96
|
+
external call (LLM, tool, retriever) should respect the run's
|
|
97
|
+
budget.
|
|
98
|
+
|
|
99
|
+
## Pre-commit checks (run these before suggesting a commit)
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
agentforge config validate
|
|
103
|
+
agentforge status # no managed file should be drifted
|
|
104
|
+
pytest -q
|
|
105
|
+
ruff check
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Where to find the framework's truth
|
|
109
|
+
|
|
110
|
+
- Locked ABCs: `agentforge_core/contracts/*.py`
|
|
111
|
+
- Default config schema: `agentforge_core/config/schema.py`
|
|
112
|
+
- Built-in evaluators / guardrails / tools: `agentforge/*/`
|
|
113
|
+
- Spec for any feature: `docs/features/feat-NNN-*.md` in the
|
|
114
|
+
framework repo
|
|
115
|
+
|
|
116
|
+
When in doubt, prefer the framework's locked types over inventing
|
|
117
|
+
new shapes. Suggesting an `Agent` subclass or a new ABC is almost
|
|
118
|
+
always wrong — the framework is composed from named modules.
|
|
119
|
+
|
|
120
|
+
<!-- agentforge:end-managed -->
|
|
121
|
+
|
|
122
|
+
<!-- agentforge:custom -->
|
|
123
|
+
|
|
124
|
+
## agentforge-graph — project-specific AI guidance
|
|
125
|
+
|
|
126
|
+
This project is a **Code Knowledge Graph engine** (not a typical agent). Before
|
|
127
|
+
changing a subsystem, read [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) (the
|
|
128
|
+
map), [`CONTRIBUTING.md`](CONTRIBUTING.md) (playbooks), and the relevant
|
|
129
|
+
[`docs/design/`](docs/design/) doc.
|
|
130
|
+
|
|
131
|
+
**Invariants you must respect:**
|
|
132
|
+
|
|
133
|
+
- **Layering (ADR-0001):** the deterministic engine — `core`, `config`,
|
|
134
|
+
`ingest`, `store`, `chunking`, `embed`, `retrieve`, `repomap`, `frameworks`,
|
|
135
|
+
`knowledge` — **must not import `agentforge`**. There's a layering test that
|
|
136
|
+
enforces it. Only `serve` and `enrich` may import the framework.
|
|
137
|
+
- **Provenance (ADR-0004):** every `Node`/`Edge` carries `Provenance`
|
|
138
|
+
(`parsed | resolved | llm | manual`, + extractor, commit, confidence). LLM
|
|
139
|
+
facts use `Provenance.llm(...)` with a confidence and are opt-out-able. Never
|
|
140
|
+
emit an unattributed fact.
|
|
141
|
+
- **Stable ids (ADR-0003):** node ids are `SymbolID` strings derived from
|
|
142
|
+
`(lang, repo, path, descriptor)` — deterministic, no counters. Use
|
|
143
|
+
`SymbolID.for_symbol` / `.parse`, never invent ids.
|
|
144
|
+
- **Locked kinds (ADR-0005):** `NodeKind`/`EdgeKind` are fixed in
|
|
145
|
+
`core/kinds.py`. Don't add kinds casually; producers for reserved kinds ship
|
|
146
|
+
in later features.
|
|
147
|
+
- **Conservative resolution:** create a cross-file edge only on an unambiguous
|
|
148
|
+
match; count the rest, never guess.
|
|
149
|
+
- **Injectable models:** never hard-call a model. Implement/inject `Embedder`,
|
|
150
|
+
`PatternJudge`, or `Summarizer`. CI uses the deterministic fakes — keep tests
|
|
151
|
+
model-free; live tests are env-gated (`CKG_LIVE_BEDROCK` / `CKG_LIVE_AGENT`).
|
|
152
|
+
- **Budget rails:** LLM enrichment runs under `BudgetPolicy`; account cost
|
|
153
|
+
per-batch and persist partial progress on a trip. Don't bypass it.
|
|
154
|
+
|
|
155
|
+
**Tooling & workflow:** use `uv` (`uv run ckg …`), not pip. Use `Read`/`Edit`/
|
|
156
|
+
`Grep`, not Bash `cat`/`find`/`sed`. One feature/bug/enh = one branch = one PR;
|
|
157
|
+
design-doc-first for features. Gate every change on
|
|
158
|
+
`pytest + mypy --strict + ruff`. Log AgentForge/Kuzu surprises in
|
|
159
|
+
`docs/framework/` (local-only).
|
|
160
|
+
|
|
161
|
+
**Dogfood:** `ckg index . && ckg serve-mcp --repo .` exposes this repo's own
|
|
162
|
+
graph (decisions, routes, impact, summaries) — useful grounded context for an
|
|
163
|
+
assistant working here.
|
|
164
|
+
|
|
165
|
+
<!-- agentforge:end-custom -->
|
|
166
|
+
|