agentforge-graph 0.3.2__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.claude/CLAUDE.md +11 -4
  2. agentforge_graph-0.4.0/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  3. agentforge_graph-0.4.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. agentforge_graph-0.4.0/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
  5. agentforge_graph-0.4.0/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  6. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.github/workflows/ci.yml +15 -3
  7. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/CHANGELOG.md +124 -6
  8. agentforge_graph-0.4.0/CITATION.cff +26 -0
  9. agentforge_graph-0.4.0/CODE_OF_CONDUCT.md +62 -0
  10. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/CONTRIBUTING.md +18 -6
  11. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/NOTICE +1 -1
  12. agentforge_graph-0.4.0/PKG-INFO +386 -0
  13. agentforge_graph-0.4.0/README.md +327 -0
  14. agentforge_graph-0.4.0/SECURITY.md +44 -0
  15. agentforge_graph-0.4.0/agentforge.yaml +150 -0
  16. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/ARCHITECTURE.md +13 -11
  17. agentforge_graph-0.4.0/docs/assets/demo.gif +0 -0
  18. agentforge_graph-0.4.0/docs/assets/demo.tape +34 -0
  19. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-003-pluggable-model-provider-registry.md +1 -1
  20. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-004-first-party-storage-backends.md +1 -1
  21. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-005-http-mcp-transport-auth.md +10 -8
  22. agentforge_graph-0.4.0/docs/enhancements/ENH-010-surrealdb-storage-backend.md +114 -0
  23. agentforge_graph-0.4.0/docs/enhancements/ENH-011-cross-file-framework-resolution.md +173 -0
  24. agentforge_graph-0.4.0/docs/enhancements/ENH-012-additional-framework-packs.md +64 -0
  25. agentforge_graph-0.4.0/docs/enhancements/ENH-013-rerank-measurement-campaign.md +73 -0
  26. agentforge_graph-0.4.0/docs/enhancements/ENH-017-surface-framework-upgrade-drift.md +66 -0
  27. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/README.md +2 -0
  28. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/TRACKER.md +9 -8
  29. agentforge_graph-0.4.0/docs/guides/01-getting-started.md +116 -0
  30. agentforge_graph-0.4.0/docs/guides/02-indexing-and-retrieval.md +81 -0
  31. agentforge_graph-0.4.0/docs/guides/03-framework-extraction.md +113 -0
  32. agentforge_graph-0.4.0/docs/guides/04-cross-file-framework-resolution.md +132 -0
  33. agentforge_graph-0.4.0/docs/guides/05-architecture-decisions.md +61 -0
  34. agentforge_graph-0.4.0/docs/guides/06-temporal-history.md +56 -0
  35. agentforge_graph-0.4.0/docs/guides/07-enrichment.md +59 -0
  36. agentforge_graph-0.3.2/docs/guides/model-providers.md → agentforge_graph-0.4.0/docs/guides/08-model-providers.md +5 -1
  37. agentforge_graph-0.3.2/docs/guides/storage-backends.md → agentforge_graph-0.4.0/docs/guides/09-storage-backends.md +42 -11
  38. agentforge_graph-0.3.2/docs/guides/using-over-mcp.md → agentforge_graph-0.4.0/docs/guides/10-using-over-mcp.md +9 -3
  39. agentforge_graph-0.4.0/docs/guides/README.md +27 -0
  40. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/README.md +1 -1
  41. agentforge_graph-0.4.0/docs/validation/rerank/agentforge-graph.yaml +56 -0
  42. agentforge_graph-0.4.0/docs/validation/rerank/benchmark.md +87 -0
  43. agentforge_graph-0.4.0/docs/validation/rerank/click.yaml +44 -0
  44. agentforge_graph-0.4.0/docs/validation/rerank/results.md +81 -0
  45. agentforge_graph-0.4.0/examples/README.md +52 -0
  46. agentforge_graph-0.4.0/examples/fastapi-shop/app.py +49 -0
  47. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/pyproject.toml +35 -10
  48. agentforge_graph-0.4.0/scripts/rerank_benchmark.py +225 -0
  49. agentforge_graph-0.4.0/scripts/rerank_eval.py +159 -0
  50. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/cli.py +8 -3
  51. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/config.py +62 -15
  52. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/kinds.py +9 -0
  53. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/cross_file.py +300 -0
  54. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/extractor.py +36 -9
  55. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/_csharp_ast.py +73 -0
  56. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/_go_ast.py +49 -0
  57. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/_php_ast.py +45 -0
  58. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/_python_ast.py +31 -0
  59. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/_ruby_ast.py +43 -0
  60. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/aspnet/__init__.py +209 -0
  61. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/aspnet/routes.scm +5 -0
  62. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/fastapi/__init__.py +82 -3
  63. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/fastapi/include.scm +7 -0
  64. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/gin/__init__.py +135 -0
  65. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/gin/routes.scm +10 -0
  66. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/laravel/__init__.py +155 -0
  67. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/laravel/routes.scm +7 -0
  68. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/rails/__init__.py +218 -0
  69. agentforge_graph-0.4.0/src/agentforge_graph/frameworks/packs/rails/routes.scm +7 -0
  70. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/registry.py +8 -0
  71. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/codegraph.py +12 -3
  72. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/indexer.py +7 -12
  73. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/pipeline.py +32 -10
  74. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/report.py +5 -1
  75. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/retrieve/rerank.py +71 -3
  76. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/serve/engine.py +16 -4
  77. agentforge_graph-0.4.0/src/agentforge_graph/serve/http_runner.py +64 -0
  78. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/serve/server.py +13 -6
  79. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/facade.py +7 -3
  80. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/registry.py +11 -2
  81. agentforge_graph-0.4.0/src/agentforge_graph/store/surreal_store.py +405 -0
  82. agentforge_graph-0.4.0/tests/frameworks/fixtures/aspnet/UsersController.cs +26 -0
  83. agentforge_graph-0.4.0/tests/frameworks/fixtures/fastapi_multifile/db.py +5 -0
  84. agentforge_graph-0.4.0/tests/frameworks/fixtures/fastapi_multifile/main.py +15 -0
  85. agentforge_graph-0.4.0/tests/frameworks/fixtures/fastapi_multifile/payments/routes.py +15 -0
  86. agentforge_graph-0.4.0/tests/frameworks/fixtures/fastapi_multifile/pyproject.toml +4 -0
  87. agentforge_graph-0.4.0/tests/frameworks/fixtures/gin/go.mod +5 -0
  88. agentforge_graph-0.4.0/tests/frameworks/fixtures/gin/main.go +22 -0
  89. agentforge_graph-0.4.0/tests/frameworks/fixtures/laravel/app/Http/Controllers/UserController.php +16 -0
  90. agentforge_graph-0.4.0/tests/frameworks/fixtures/laravel/routes/web.php +10 -0
  91. agentforge_graph-0.4.0/tests/frameworks/fixtures/rails/app/controllers/home_controller.rb +5 -0
  92. agentforge_graph-0.4.0/tests/frameworks/fixtures/rails/app/controllers/users_controller.rb +9 -0
  93. agentforge_graph-0.4.0/tests/frameworks/fixtures/rails/config/routes.rb +6 -0
  94. agentforge_graph-0.4.0/tests/frameworks/test_aspnet_integration.py +65 -0
  95. agentforge_graph-0.4.0/tests/frameworks/test_aspnet_pack.py +86 -0
  96. agentforge_graph-0.4.0/tests/frameworks/test_fastapi_crossfile_integration.py +117 -0
  97. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_fastapi_pack.py +54 -0
  98. agentforge_graph-0.4.0/tests/frameworks/test_gin_integration.py +86 -0
  99. agentforge_graph-0.4.0/tests/frameworks/test_gin_pack.py +109 -0
  100. agentforge_graph-0.4.0/tests/frameworks/test_laravel_integration.py +77 -0
  101. agentforge_graph-0.4.0/tests/frameworks/test_laravel_pack.py +78 -0
  102. agentforge_graph-0.4.0/tests/frameworks/test_rails_integration.py +65 -0
  103. agentforge_graph-0.4.0/tests/frameworks/test_rails_pack.py +84 -0
  104. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_rerank.py +58 -0
  105. agentforge_graph-0.4.0/tests/store/test_surreal_conformance.py +73 -0
  106. agentforge_graph-0.4.0/tests/temporal/__init__.py +0 -0
  107. agentforge_graph-0.4.0/tests/test_config.py +82 -0
  108. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/uv.lock +474 -247
  109. agentforge_graph-0.3.2/.claude/settings.local.json +0 -7
  110. agentforge_graph-0.3.2/PKG-INFO +0 -291
  111. agentforge_graph-0.3.2/README.md +0 -238
  112. agentforge_graph-0.3.2/agentforge.yaml +0 -24
  113. agentforge_graph-0.3.2/ckg.yaml +0 -116
  114. agentforge_graph-0.3.2/src/agentforge_graph/serve/http_runner.py +0 -133
  115. agentforge_graph-0.3.2/tests/test_config.py +0 -53
  116. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.agentforge-state/answers.yml +0 -0
  117. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.agentforge-state/managed-files.lock +0 -0
  118. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.claude/standards/coding.md +0 -0
  119. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.claude/standards/testing.md +0 -0
  120. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.cursorrules +0 -0
  121. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.env.example +0 -0
  122. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.github/copilot-instructions.md +0 -0
  123. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.gitignore +0 -0
  124. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.gitkeep +0 -0
  125. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/.pre-commit-config.yaml +0 -0
  126. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/AGENTS.md +0 -0
  127. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/CLAUDE.md +0 -0
  128. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/LICENSE +0 -0
  129. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0001-build-on-agentforge-framework.md +0 -0
  130. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0002-tree-sitter-over-compiler-grade-extraction.md +0 -0
  131. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0003-stable-symbol-ids-and-per-file-subgraphs.md +0 -0
  132. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0004-provenance-on-every-fact.md +0 -0
  133. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0005-reserve-higher-level-node-kinds-up-front.md +0 -0
  134. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0006-embedded-first-pluggable-storage.md +0 -0
  135. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0007-ast-aware-chunking-with-chunk-symbol-separation.md +0 -0
  136. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0008-hybrid-retrieval-vector-then-graph.md +0 -0
  137. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/0009-top-10-language-scope-with-support-tiers.md +0 -0
  138. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/adr/README.md +0 -0
  139. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-001-src-layout-import-resolution.md +0 -0
  140. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-002-retrieval-scores-render-zero.md +0 -0
  141. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-003-adr-readme-ingested-as-decision.md +0 -0
  142. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-004-relative-from-import-resolution.md +0 -0
  143. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-005-typescript-abstract-class-not-extracted.md +0 -0
  144. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-006-commonjs-require-not-resolved.md +0 -0
  145. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-007-overload-resolution-nondeterministic.md +0 -0
  146. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/BUG-008-rerank-yaml-boolean-breaks-query.md +0 -0
  147. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/bugs/README.md +0 -0
  148. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/README.md +0 -0
  149. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-001-core-contracts-module.md +0 -0
  150. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-002-tree-sitter-ingestion.md +0 -0
  151. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-003-graph-storage-adapters.md +0 -0
  152. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-004-incremental-indexing.md +0 -0
  153. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-005-ast-chunking-and-embeddings.md +0 -0
  154. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-006-hybrid-retrieval.md +0 -0
  155. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-007-repo-map.md +0 -0
  156. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-008-mcp-server-and-tool-api.md +0 -0
  157. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-009-temporal-evolution-layer.md +0 -0
  158. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-010-adr-and-docs-ingestion.md +0 -0
  159. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-011-framework-extractors.md +0 -0
  160. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-012-llm-enrichment.md +0 -0
  161. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/design/design-012b-summaries.md +0 -0
  162. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-001-pattern-recall-tuning.md +0 -0
  163. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-002-parallelize-enrichment-calls.md +0 -0
  164. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-006-cli-path-arg-consistency.md +0 -0
  165. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-007-repomap-public-api-orientation.md +0 -0
  166. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-008-typescript-symbol-completeness.md +0 -0
  167. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/enhancements/ENH-009-retrieval-precision-dense-codebases.md +0 -0
  168. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/README.md +0 -0
  169. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-001-graph-schema-and-core-contracts.md +0 -0
  170. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-002-tree-sitter-ingestion.md +0 -0
  171. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-003-graph-storage-adapters.md +0 -0
  172. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-004-incremental-indexing.md +0 -0
  173. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-005-ast-chunking-and-embeddings.md +0 -0
  174. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-006-hybrid-retrieval.md +0 -0
  175. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-007-repo-map-summarization.md +0 -0
  176. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-008-mcp-server-and-tool-api.md +0 -0
  177. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-009-temporal-evolution-layer.md +0 -0
  178. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-010-adr-and-docs-ingestion.md +0 -0
  179. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-011-framework-extractors.md +0 -0
  180. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/features/feat-012-llm-enrichment.md +0 -0
  181. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/known-limitations/KL-001-llm-summary-hallucination.md +0 -0
  182. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/known-limitations/README.md +0 -0
  183. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/open-source-ckg-research.md +0 -0
  184. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/01-set-up-new-agent.md +0 -0
  185. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/02-add-a-tool.md +0 -0
  186. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/03-add-a-pipeline-task.md +0 -0
  187. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/04-pick-reasoning-strategy.md +0 -0
  188. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/05-write-prompts.md +0 -0
  189. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/06-test-your-agent.md +0 -0
  190. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/07-debug-a-run.md +0 -0
  191. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/08-add-memory.md +0 -0
  192. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/09-add-mcp.md +0 -0
  193. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/10-add-evaluators.md +0 -0
  194. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/11-add-safety-guardrails.md +0 -0
  195. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/12-add-observability.md +0 -0
  196. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/13-configure-multi-provider.md +0 -0
  197. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/14-deploy-your-agent.md +0 -0
  198. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/15-upgrade-your-agent.md +0 -0
  199. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/16-configuration-reference.md +0 -0
  200. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/17-add-reranker.md +0 -0
  201. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/18-add-hybrid-search.md +0 -0
  202. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/19-add-graphrag.md +0 -0
  203. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/20-apply-schema-migrations.md +0 -0
  204. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/21-use-streaming-guardrails.md +0 -0
  205. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/runbooks/README.md +0 -0
  206. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/cpp-fmt.md +0 -0
  207. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/csharp-newtonsoft-json.md +0 -0
  208. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/go-cobra.md +0 -0
  209. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/java-gson.md +0 -0
  210. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/javascript-express-chalk.md +0 -0
  211. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/php-monolog.md +0 -0
  212. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/python-click.md +0 -0
  213. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/ruby-thor.md +0 -0
  214. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/rust-serde-json.md +0 -0
  215. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/typescript-zod.md +0 -0
  216. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/docs/validation/w4-agent-dogfood.md +0 -0
  217. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/__init__.py +0 -0
  218. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/chunking/__init__.py +0 -0
  219. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/chunking/cast.py +0 -0
  220. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/chunking/chunk.py +0 -0
  221. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/chunking/tokens.py +0 -0
  222. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/__init__.py +0 -0
  223. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/conformance.py +0 -0
  224. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/contracts.py +0 -0
  225. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/models.py +0 -0
  226. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/provenance.py +0 -0
  227. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/core/symbols.py +0 -0
  228. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/__init__.py +0 -0
  229. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/base.py +0 -0
  230. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/bedrock.py +0 -0
  231. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/fake.py +0 -0
  232. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/openai.py +0 -0
  233. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/pipeline.py +0 -0
  234. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/registry.py +0 -0
  235. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/embed/report.py +0 -0
  236. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/__init__.py +0 -0
  237. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/anthropic.py +0 -0
  238. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/anthropic_client.py +0 -0
  239. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/bedrock.py +0 -0
  240. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/bedrock_client.py +0 -0
  241. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/bedrock_summarizer.py +0 -0
  242. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/claude.py +0 -0
  243. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/enricher.py +0 -0
  244. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/governs.py +0 -0
  245. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/governs_enricher.py +0 -0
  246. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/heuristics.py +0 -0
  247. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/judge.py +0 -0
  248. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/registry.py +0 -0
  249. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/report.py +0 -0
  250. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/summarizer.py +0 -0
  251. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/summary_enricher.py +0 -0
  252. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/enrich/taxonomy.py +0 -0
  253. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/__init__.py +0 -0
  254. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/base.py +0 -0
  255. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/detect.py +0 -0
  256. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/orm.py +0 -0
  257. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/_js_ast.py +0 -0
  258. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/django/__init__.py +0 -0
  259. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/django/models.scm +0 -0
  260. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/express/__init__.py +0 -0
  261. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/express/routes.scm +0 -0
  262. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/fastapi/depends.scm +0 -0
  263. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/fastapi/routes.scm +0 -0
  264. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/flask/__init__.py +0 -0
  265. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/flask/routes.scm +0 -0
  266. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/nestjs/__init__.py +0 -0
  267. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/nestjs/routes.scm +0 -0
  268. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/spring/__init__.py +0 -0
  269. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/spring/routes.scm +0 -0
  270. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/sqlalchemy/__init__.py +0 -0
  271. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/frameworks/packs/sqlalchemy/models.scm +0 -0
  272. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/__init__.py +0 -0
  273. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/extractor.py +0 -0
  274. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/__init__.py +0 -0
  275. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/detect.py +0 -0
  276. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/dirty.py +0 -0
  277. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/meta.py +0 -0
  278. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/incremental/ports.py +0 -0
  279. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/pack.py +0 -0
  280. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/__init__.py +0 -0
  281. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/cpp/__init__.py +0 -0
  282. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/cpp/references.scm +0 -0
  283. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/cpp/structure.scm +0 -0
  284. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/csharp/__init__.py +0 -0
  285. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/csharp/references.scm +0 -0
  286. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/csharp/structure.scm +0 -0
  287. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/go/__init__.py +0 -0
  288. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/go/references.scm +0 -0
  289. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/go/structure.scm +0 -0
  290. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/java/__init__.py +0 -0
  291. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/java/references.scm +0 -0
  292. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/java/structure.scm +0 -0
  293. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/javascript/__init__.py +0 -0
  294. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/javascript/references.scm +0 -0
  295. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/javascript/structure.scm +0 -0
  296. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/php/__init__.py +0 -0
  297. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/php/references.scm +0 -0
  298. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/php/structure.scm +0 -0
  299. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/python/__init__.py +0 -0
  300. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/python/references.scm +0 -0
  301. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/python/structure.scm +0 -0
  302. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/ruby/__init__.py +0 -0
  303. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/ruby/references.scm +0 -0
  304. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/ruby/structure.scm +0 -0
  305. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/rust/__init__.py +0 -0
  306. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/rust/references.scm +0 -0
  307. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/rust/structure.scm +0 -0
  308. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/typescript/__init__.py +0 -0
  309. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/typescript/references.scm +0 -0
  310. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/packs/typescript/structure.scm +0 -0
  311. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/resolver.py +0 -0
  312. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/ingest/source.py +0 -0
  313. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/__init__.py +0 -0
  314. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/adr.py +0 -0
  315. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/commits.py +0 -0
  316. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/ingest.py +0 -0
  317. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/mentions.py +0 -0
  318. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/knowledge/report.py +0 -0
  319. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/main.py +0 -0
  320. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/providers.py +0 -0
  321. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/repomap/__init__.py +0 -0
  322. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/repomap/rank.py +0 -0
  323. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/repomap/render.py +0 -0
  324. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/repomap/repomap.py +0 -0
  325. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/retrieve/__init__.py +0 -0
  326. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/retrieve/pack.py +0 -0
  327. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/retrieve/retriever.py +0 -0
  328. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/retrieve/scoring.py +0 -0
  329. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/serve/__init__.py +0 -0
  330. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/serve/tools.py +0 -0
  331. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/__init__.py +0 -0
  332. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/_rowmap.py +0 -0
  333. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/errors.py +0 -0
  334. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/kuzu_store.py +0 -0
  335. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/lance_store.py +0 -0
  336. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/neo4j_store.py +0 -0
  337. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/store/pgvector_store.py +0 -0
  338. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/__init__.py +0 -0
  339. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/backfill.py +0 -0
  340. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/events.py +0 -0
  341. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/index.py +0 -0
  342. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/mining.py +0 -0
  343. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/recorder.py +0 -0
  344. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/src/agentforge_graph/temporal/store.py +0 -0
  345. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/__init__.py +0 -0
  346. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/chunking/__init__.py +0 -0
  347. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/chunking/test_cast.py +0 -0
  348. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/chunking/test_layering.py +0 -0
  349. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/__init__.py +0 -0
  350. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_conformance.py +0 -0
  351. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_kinds.py +0 -0
  352. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_layering.py +0 -0
  353. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_models.py +0 -0
  354. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_provenance.py +0 -0
  355. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_symbols.py +0 -0
  356. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/core/test_vector_contracts.py +0 -0
  357. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/__init__.py +0 -0
  358. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_bedrock.py +0 -0
  359. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_cli.py +0 -0
  360. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_fake.py +0 -0
  361. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_openai.py +0 -0
  362. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_openai_live.py +0 -0
  363. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_pipeline.py +0 -0
  364. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/embed/test_registry.py +0 -0
  365. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/__init__.py +0 -0
  366. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/conftest.py +0 -0
  367. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_anthropic.py +0 -0
  368. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_anthropic_live.py +0 -0
  369. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_bedrock.py +0 -0
  370. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_bedrock_client.py +0 -0
  371. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_claude.py +0 -0
  372. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_enricher.py +0 -0
  373. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_heuristics.py +0 -0
  374. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_integration.py +0 -0
  375. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_live.py +0 -0
  376. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_registry.py +0 -0
  377. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_summaries.py +0 -0
  378. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_summaries_integration.py +0 -0
  379. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/enrich/test_summaries_live.py +0 -0
  380. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/__init__.py +0 -0
  381. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/django/models.py +0 -0
  382. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/express/app.js +0 -0
  383. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/fastapi/app.py +0 -0
  384. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/fastapi/pyproject.toml +0 -0
  385. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/fastapi/service.py +0 -0
  386. {agentforge_graph-0.3.2/tests/ingest → agentforge_graph-0.4.0/tests/frameworks/fixtures/fastapi_multifile/payments}/__init__.py +0 -0
  387. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/flask/app.py +0 -0
  388. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/nestjs/users.controller.ts +0 -0
  389. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/spring/Helper.java +0 -0
  390. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/spring/UserController.java +0 -0
  391. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/fixtures/sqlalchemy/models.py +0 -0
  392. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_contract.py +0 -0
  393. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_detect.py +0 -0
  394. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_django_integration.py +0 -0
  395. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_django_pack.py +0 -0
  396. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_express_integration.py +0 -0
  397. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_express_pack.py +0 -0
  398. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_flask_integration.py +0 -0
  399. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_flask_pack.py +0 -0
  400. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_integration.py +0 -0
  401. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_layering.py +0 -0
  402. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_nestjs_integration.py +0 -0
  403. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_nestjs_pack.py +0 -0
  404. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_spring_integration.py +0 -0
  405. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_spring_pack.py +0 -0
  406. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_sqlalchemy_integration.py +0 -0
  407. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/frameworks/test_sqlalchemy_pack.py +0 -0
  408. {agentforge_graph-0.3.2/tests/ingest/incremental → agentforge_graph-0.4.0/tests/ingest}/__init__.py +0 -0
  409. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/conftest.py +0 -0
  410. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/javascript/mathutils.js +0 -0
  411. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/javascript/shapes.js +0 -0
  412. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/python/mathutils.py +0 -0
  413. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/python/shapes.py +0 -0
  414. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/typescript/mathutils.ts +0 -0
  415. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/fixtures/typescript/shapes.ts +0 -0
  416. {agentforge_graph-0.3.2/tests/knowledge → agentforge_graph-0.4.0/tests/ingest/incremental}/__init__.py +0 -0
  417. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/incremental/test_equivalence.py +0 -0
  418. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/incremental/test_incremental.py +0 -0
  419. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_aliased_imports.py +0 -0
  420. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_cli.py +0 -0
  421. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_codegraph.py +0 -0
  422. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_cpp_pack.py +0 -0
  423. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_csharp_pack.py +0 -0
  424. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_docstrings.py +0 -0
  425. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_export_member.py +0 -0
  426. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_go_pack.py +0 -0
  427. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_go_receiver_calls.py +0 -0
  428. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_inherited_method_calls.py +0 -0
  429. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_inherits.py +0 -0
  430. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_inherits_packs.py +0 -0
  431. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_java_pack.py +0 -0
  432. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_javascript_pack.py +0 -0
  433. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_jsdoc.py +0 -0
  434. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_layering.py +0 -0
  435. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_member_calls.py +0 -0
  436. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_member_calls_packs.py +0 -0
  437. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_module_member_calls.py +0 -0
  438. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_pack.py +0 -0
  439. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_php_pack.py +0 -0
  440. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_pipeline.py +0 -0
  441. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_python_extractor.py +0 -0
  442. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_qualified_bases.py +0 -0
  443. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_resolver.py +0 -0
  444. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_ruby_pack.py +0 -0
  445. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_rust_pack.py +0 -0
  446. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_source.py +0 -0
  447. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_src_layout.py +0 -0
  448. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/ingest/test_typescript_pack.py +0 -0
  449. {agentforge_graph-0.3.2/tests/repomap → agentforge_graph-0.4.0/tests/knowledge}/__init__.py +0 -0
  450. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/fixtures/repo/docs/adr/0007-old-payments.md +0 -0
  451. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/fixtures/repo/docs/adr/0012-idempotency.md +0 -0
  452. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/fixtures/repo/src/app/payments.py +0 -0
  453. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_adr_parser.py +0 -0
  454. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_commit_messages.py +0 -0
  455. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_discover.py +0 -0
  456. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_doc_embedding.py +0 -0
  457. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_doc_globs.py +0 -0
  458. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_infer_governs.py +0 -0
  459. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_integration.py +0 -0
  460. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_layering.py +0 -0
  461. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/knowledge/test_mentions.py +0 -0
  462. {agentforge_graph-0.3.2/tests/retrieve → agentforge_graph-0.4.0/tests/repomap}/__init__.py +0 -0
  463. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/repomap/test_cli.py +0 -0
  464. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/repomap/test_edge_cases.py +0 -0
  465. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/repomap/test_layering.py +0 -0
  466. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/repomap/test_rank.py +0 -0
  467. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/repomap/test_render.py +0 -0
  468. {agentforge_graph-0.3.2/tests/serve → agentforge_graph-0.4.0/tests/retrieve}/__init__.py +0 -0
  469. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_cli.py +0 -0
  470. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_doc_weight.py +0 -0
  471. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_filters.py +0 -0
  472. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_layering.py +0 -0
  473. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_live_relevance.py +0 -0
  474. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_pack_scoring.py +0 -0
  475. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_retriever.py +0 -0
  476. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/retrieve/test_temporal_item.py +0 -0
  477. {agentforge_graph-0.3.2/tests/store → agentforge_graph-0.4.0/tests/serve}/__init__.py +0 -0
  478. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_binding.py +0 -0
  479. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_cli.py +0 -0
  480. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_engine.py +0 -0
  481. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_guardrails.py +0 -0
  482. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_http_auth.py +0 -0
  483. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_live_agent.py +0 -0
  484. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_schemas.py +0 -0
  485. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/serve/test_tools.py +0 -0
  486. {agentforge_graph-0.3.2/tests/temporal → agentforge_graph-0.4.0/tests/store}/__init__.py +0 -0
  487. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_facade.py +0 -0
  488. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_kuzu_conformance.py +0 -0
  489. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_kuzu_internals.py +0 -0
  490. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_lance_conformance.py +0 -0
  491. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_layering.py +0 -0
  492. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_neo4j_conformance.py +0 -0
  493. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_pgvector_conformance.py +0 -0
  494. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/store/test_server_drivers.py +0 -0
  495. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_asof.py +0 -0
  496. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_backfill.py +0 -0
  497. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_denormalize.py +0 -0
  498. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_index.py +0 -0
  499. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_lifecycle.py +0 -0
  500. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_mining.py +0 -0
  501. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_read_e2e.py +0 -0
  502. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/temporal/test_store.py +0 -0
  503. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/test_cli_path_args.py +0 -0
  504. {agentforge_graph-0.3.2 → agentforge_graph-0.4.0}/tests/test_providers.py +0 -0
@@ -35,10 +35,17 @@
35
35
  `agentforge add module` does **not** work here (it shells out to
36
36
  `pip`, absent in uv venvs) — declare modules in `pyproject.toml`
37
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.
38
+ - **One config file: `agentforge.yaml`.** Framework keys at the top
39
+ level; this agent's engine config (store/ingest/chunking/embed/
40
+ retrieve/serve/…) under the framework's `app:` passthrough
41
+ (agentforge-py ≥0.3). The engine reads `app:` with **plain pyyaml,
42
+ no `agentforge` import** (ADR-0001) — `config.resolve_config()`
43
+ discovers `agentforge.yaml` (with `app:`) or a standalone `ckg.yaml`,
44
+ and `_read_block` reads from `app.<key>` or top-level. A standalone
45
+ `ckg.yaml` is still supported (framework-free use). *(History: we
46
+ used a separate `ckg.yaml` because 0.2.4's strict validator rejected
47
+ app keys — fixed upstream in 0.3.x via `app:`; see
48
+ `docs/framework/upgrade-0.2.4-to-0.3.x.md`.)*
42
49
  - **Framework learnings go in `docs/framework/`** — local-only,
43
50
  git-ignored. Log any framework bug/hack/workaround/missing-feature
44
51
  there as you hit it (baseline: agentforge-py 0.2.4).
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Bug report
3
+ about: Something the engine, CLI, or MCP server got wrong
4
+ title: "[bug] "
5
+ labels: bug
6
+ ---
7
+
8
+ ## What happened
9
+
10
+ A clear description of the bug, and what you expected instead.
11
+
12
+ ## Reproduce
13
+
14
+ Steps / the smallest repo or snippet that triggers it:
15
+
16
+ ```bash
17
+ ckg index .
18
+ ckg ... # the command that misbehaves
19
+ ```
20
+
21
+ If it's an extraction/resolution issue, a **minimal source file** that reproduces
22
+ it helps a lot.
23
+
24
+ ## Environment
25
+
26
+ - agentforge-graph version: `ckg --version` (or `pip show agentforge-graph`)
27
+ - Python version:
28
+ - OS:
29
+ - Store backend (if not default): `kuzu`/`neo4j`/`pgvector`/`surrealdb`/…
30
+ - Language(s) involved (if extraction): Python / TS / Go / …
31
+ - Provider (if embed/enrich): `bedrock`/`openai`/`anthropic`/`fake`/…
32
+
33
+ ## Logs / output
34
+
35
+ ```
36
+ paste the relevant output, error, or stack trace
37
+ ```
38
+
39
+ ## Notes
40
+
41
+ Anything else — was it incremental vs full index, a specific framework pack, etc.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/Scaffoldic/agentforge-graph/security/advisories/new
5
+ about: Please report security issues privately — see SECURITY.md, not a public issue.
6
+ - name: Question / usage help
7
+ url: https://github.com/Scaffoldic/agentforge-graph/discussions
8
+ about: Ask how to use the engine, MCP tools, or a provider/backend.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: Feature request
3
+ about: Propose a capability, a language/framework pack, or a backend
4
+ title: "[feat] "
5
+ labels: enhancement
6
+ ---
7
+
8
+ ## The problem / use case
9
+
10
+ What are you trying to do that the engine doesn't support today? Who's it for —
11
+ a human, or a coding agent consuming the graph?
12
+
13
+ ## Proposed solution
14
+
15
+ What you'd like to see. If it's a new **language pack**, **framework pack**,
16
+ **storage backend**, or **model provider**, note the target (e.g. "Rails routes",
17
+ "SurrealDB", "Gemini embeddings") — these ride documented extension points (see
18
+ [`CONTRIBUTING.md`](../../CONTRIBUTING.md) §5).
19
+
20
+ ## Alternatives considered
21
+
22
+ Other approaches, or how you work around it now.
23
+
24
+ ## Scope
25
+
26
+ - [ ] I'd be willing to help implement this
27
+ - [ ] This needs a design discussion first
@@ -0,0 +1,22 @@
1
+ <!-- Thanks for contributing! Keep PRs to one feature/fix = one branch = one PR. -->
2
+
3
+ ## What & why
4
+
5
+ What this changes and the motivation. Link the issue / feature spec / ADR if any
6
+ (e.g. `Closes #123`, `feat-0NN`, `ENH-0NN`).
7
+
8
+ ## How
9
+
10
+ A short note on the approach — and, if it touches an extension point (a language
11
+ / framework pack, storage backend, model provider, MCP tool, enricher), how it
12
+ rides the existing rails.
13
+
14
+ ## Checklist
15
+
16
+ - [ ] `uv run ruff format --check . && uv run ruff check . && uv run mypy src` clean
17
+ - [ ] `uv run pytest` green (≥90% coverage)
18
+ - [ ] New behavior has tests (golden + end-to-end where it applies; new backends
19
+ pass the conformance suite)
20
+ - [ ] Docs updated (README / a `docs/guides/` page / CHANGELOG `[Unreleased]`)
21
+ - [ ] No new `agentforge` import inside the deterministic engine (ADR-0001)
22
+ - [ ] Conventional-commit title (`feat:` / `fix:` / `docs:` / `chore:` / …)
@@ -55,7 +55,7 @@ jobs:
55
55
  # no secrets), so Neo4j/pgvector are verified in CI — not just locally. Separate
56
56
  # job so a DB hiccup can't fail the core gate; both must pass to merge.
57
57
  server-backends:
58
- name: server backends (neo4j + pgvector conformance)
58
+ name: server backends (neo4j + pgvector + surrealdb conformance)
59
59
  runs-on: ubuntu-latest
60
60
  services:
61
61
  neo4j:
@@ -81,14 +81,26 @@ jobs:
81
81
  uses: astral-sh/setup-uv@v6
82
82
  with:
83
83
  enable-cache: true
84
- - name: Sync dependencies (+ neo4j + pgvector extras)
85
- run: uv sync --extra dev --extra engine --extra neo4j --extra pgvector
84
+ - name: Sync dependencies (+ neo4j + pgvector + surrealdb extras)
85
+ run: uv sync --extra dev --extra engine --extra neo4j --extra pgvector --extra surrealdb
86
+ # SurrealDB needs its `start` command + args, which a `services:` container
87
+ # can't express — so run it directly and wait for the /health endpoint.
88
+ - name: Start SurrealDB
89
+ run: |
90
+ docker run -d --name surreal -p 8000:8000 \
91
+ surrealdb/surrealdb:latest start --user root --pass root memory
92
+ for i in $(seq 1 30); do
93
+ curl -sf http://localhost:8000/health && break
94
+ sleep 1
95
+ done
86
96
  - name: Server-backend conformance
87
97
  env:
88
98
  CKG_NEO4J_URI: bolt://localhost:7687
89
99
  CKG_NEO4J_PASSWORD: ckgckgckg
90
100
  CKG_PGVECTOR_DSN: postgresql://postgres:ckg@localhost:5432/ckg
101
+ CKG_SURREALDB_URL: ws://localhost:8000/rpc
91
102
  run: >-
92
103
  uv run pytest --no-cov
93
104
  tests/store/test_neo4j_conformance.py
94
105
  tests/store/test_pgvector_conformance.py
106
+ tests/store/test_surreal_conformance.py
@@ -8,6 +8,122 @@ on a schema mismatch is **rebuild** (ADR-0006).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.4.0] — 2026-06-20
12
+
13
+ ### Changed
14
+
15
+ - **Consolidated engine config into `agentforge.yaml` (`app:` section).**
16
+ agentforge-py 0.3.x added a sanctioned `app:` passthrough to its strict config
17
+ file — the fix for the workaround that forced a separate `ckg.yaml`. The engine
18
+ now reads its config from `app:` (or a top-level standalone `ckg.yaml`, still
19
+ supported) using **plain pyyaml, no `agentforge` import** (ADR-0001), and
20
+ **auto-discovers** the file in the repo (previously only `--config` was read).
21
+ One config file. `config.resolve_config()` + `app:`-aware `_read_block`.
22
+ - **HTTP MCP auth now rides the framework's `from_http(middleware=)` seam**
23
+ (agentforge-mcp 0.3.x), replacing the `CkgHttpRunner` that reimplemented ~60
24
+ lines of HTTP-serve internals to add a bearer gate. `BearerAuthMiddleware`
25
+ unchanged; verified live (401 / pass-through). (ENH-005.)
26
+ - **Upgraded the AgentForge framework pin to `>=0.3,<0.4`** (from the validated
27
+ 0.2.x line). Re-validated: the full gate (666 tests / 95%, ruff + mypy) and an
28
+ MCP server-construction smoke pass on `agentforge-py` 0.3.1 — the `Tool` /
29
+ `BudgetPolicy` / `MCPServer` surfaces are unchanged.
30
+
31
+ ### Added
32
+
33
+ - **Bedrock-native reranker + measurement campaign (ENH-013).** A torch-free
34
+ `BedrockRerankScorer` (AWS Bedrock Rerank API — Cohere Rerank 3.5 / Amazon
35
+ Rerank) behind the existing `CrossScorer` seam, selected via
36
+ `rerank_model: bedrock:cohere.rerank-v3-5:0` — reuses the AWS creds the embedder
37
+ already uses, no `rerank`/torch extra. A two-corpus campaign (harness
38
+ `scripts/rerank_eval.py`, [results](docs/validation/rerank/results.md)) found
39
+ the cross-encoder is an **ordering** win (MRR +10–16% at blend weight 0.3) over
40
+ an already-recall-saturated base, costing ~540 ms/query — so rerank **stays
41
+ opt-in**, with the Bedrock config @ `w=0.3` documented as the recommended
42
+ precision setting. New `retrieve.rerank_region` config. A **rigorous follow-up
43
+ benchmark** (`scripts/rerank_benchmark.py`, objective docstring→code labels,
44
+ 388 queries / 4 OSS repos) confirms base retrieval MRR 0.95 / recall@1 0.92 and
45
+ a statistically-significant rerank lift (ΔMRR +0.019, p<0.001) — surfaced in the
46
+ README's "Retrieval quality (measured)" section.
47
+
48
+ - **Four new framework packs — Go / C# / PHP / Ruby routes (ENH-012).** Framework
49
+ awareness now spans **11 packs** across six languages. Each rides a small new
50
+ `_<lang>_ast` helper and is conservative (ADR-0004); detection uses import
51
+ markers since these languages' deps live outside the scanned manifests.
52
+ - **Gin** (Go) — `r.GET("/x", handler)` method calls → `Route` + `HANDLED_BY`
53
+ to the Go function (mirrors Express).
54
+ - **ASP.NET** (C#) — `[HttpGet("/x")]` attributes on controllers → `Route` +
55
+ `HANDLED_BY` to `Class#method`; `[Route]` base path + `[controller]` token
56
+ (mirrors Spring).
57
+ - **Laravel** (PHP) — `Route::get('/x', [C::class, 'm'])` / `'C@m'` / invokable.
58
+ - **Rails** (Ruby) — `routes.rb` explicit `get '/x' => 'c#a'` / `to:` / `root`.
59
+
60
+ Laravel and Rails name their handler in another file, so a new **generic
61
+ cross-file route-handler grounding** pass-2 step (`frameworks/cross_file.py`)
62
+ resolves the controller reference to the real `Class#method` symbol anywhere in
63
+ the repo (unique-match), emitting `HANDLED_BY` — globally idempotent, surfaced
64
+ as `IndexReport.route_handlers_grounded`. ORM models (EF Core / Eloquent /
65
+ ActiveRecord), the ASP.NET minimal API, and the Rails resourceful DSL are
66
+ follow-ups.
67
+
68
+ - **Cross-file framework resolution — route prefixes + DI grounding (ENH-011).**
69
+ A globally-idempotent pass-2 (`frameworks/cross_file.py`) stitches the
70
+ compose-points real apps split across files, reading only the persisted graph
71
+ (`IMPORTS` edges + node attrs), unique-match-only (ADR-0004):
72
+ - `app.include_router(payments.router, prefix="/api")` composes `/api` onto the
73
+ included router's routes. The base `path` is preserved; the composed URL is a
74
+ new `path_pattern` attr (`RouteInfo.path_pattern`, shown by `ckg routes` and
75
+ returned by the `ckg_routes` MCP tool). New `RouteMount` node kind.
76
+ - `Depends(get_db)` grounds the provider *name* to the `get_db` function symbol
77
+ in its module via a new `PROVIDED_BY` edge (+ `Service.provider_symbol`).
78
+
79
+ Ships for **FastAPI**; Flask / Express / Django reuse the same framework-
80
+ agnostic pass-2 (per-pack pass-1 capture pending). New `RouteMount` /
81
+ `PROVIDED_BY` kinds are additive and migration-free (the stores key edges/nodes
82
+ by a `kind` string column). `IndexReport.route_prefixes_composed` /
83
+ `di_providers_grounded`; `incremental == full` preserved. New runbook:
84
+ `docs/guides/04-cross-file-framework-resolution.md`.
85
+
86
+ - **`CITATION.cff`** — GitHub "Cite this repository" metadata.
87
+
88
+ - **Consumer feature guides + a runnable example.** New `docs/guides/` for the
89
+ headline features — framework extraction (routes/models/services), architecture
90
+ decisions, temporal/history, enrichment, and an index→query walkthrough — plus
91
+ `examples/fastapi-shop/`, a tiny FastAPI+SQLAlchemy app you can index in one
92
+ command to see routes/models/services (output verified against the CLI).
93
+
94
+ - **Project metadata + community health.** `[project.urls]` (Homepage,
95
+ Repository, Changelog, Issues, Documentation) so the PyPI page links out;
96
+ `SECURITY.md`, `CODE_OF_CONDUCT.md`, GitHub issue + PR templates; README doc
97
+ links made absolute so they resolve on the PyPI project page.
98
+
99
+ - **SurrealDB storage backend — graph + vectors in one (ENH-010).** A first-party
100
+ `surrealdb` driver for *both* `store.graph.driver` and `store.vectors.driver`,
101
+ so one multi-model server is a complete backend (`pip install
102
+ agentforge-graph[surrealdb]`). It passes the same `GraphStoreConformance` /
103
+ `VectorStoreConformance` suites as Kuzu/Neo4j/LanceDB/pgvector — verified
104
+ against a live SurrealDB in the `server-backends` CI job. Nodes/edges are
105
+ document tables on the shared open schema (hash-keyed records, the symbol id in
106
+ a `key` field); vector search is brute-force cosine in `[0, 1]`. This makes the
107
+ "day-one, plug in a different DB" promise provable end-to-end against an
108
+ independent third backend.
109
+
110
+ ## [0.3.3] - 2026-06-19
111
+
112
+ Leaner base install + the refreshed README on PyPI.
113
+
114
+ ### Changed
115
+
116
+ - **Dropped the unused `fastembed` dependency** from the base install (and the
117
+ heavy `onnxruntime` wheel it pulled). It was a leftover from the original
118
+ feat-005 plan to default to local embeddings; the shipped embedders are
119
+ `bedrock` / `openai` / `fake`, none of which import it. Removing it keeps the
120
+ promise true: the base install carries only what the engine actually uses, and
121
+ every model/DB provider is opt-in. (No local-embeddings driver existed, so
122
+ nothing is lost; a `fastembed` driver behind a `[local]` extra can be added as
123
+ a deliberate feature later.)
124
+ - README refreshed (out-of-the-box overview, quick start, demo) now renders on
125
+ the PyPI project page.
126
+
11
127
  ## [0.3.2] - 2026-06-19
12
128
 
13
129
  Packaging fix — base-install completeness (caught on a TestPyPI dry run).
@@ -412,9 +528,11 @@ questions over the tools, unattended.
412
528
  on a real repo (fixed BUG-008, a default-config `ckg query` break); and parse
413
529
  coverage holds at scale (`django`, 2922 files, ~100%, no crash).
414
530
 
415
- [Unreleased]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.2...HEAD
416
- [0.3.2]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.1...v0.3.2
417
- [0.3.1]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.3.0...v0.3.1
418
- [0.3.0]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.2.0...v0.3.0
419
- [0.2.0]: https://github.com/Scaffoldic/agentforge-grpah/compare/v0.1.0...v0.2.0
420
- [0.1.0]: https://github.com/Scaffoldic/agentforge-grpah/releases/tag/v0.1.0
531
+ [Unreleased]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.4.0...HEAD
532
+ [0.4.0]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.3.3...v0.4.0
533
+ [0.3.3]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.3.2...v0.3.3
534
+ [0.3.2]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.3.1...v0.3.2
535
+ [0.3.1]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.3.0...v0.3.1
536
+ [0.3.0]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.2.0...v0.3.0
537
+ [0.2.0]: https://github.com/Scaffoldic/agentforge-graph/compare/v0.1.0...v0.2.0
538
+ [0.1.0]: https://github.com/Scaffoldic/agentforge-graph/releases/tag/v0.1.0
@@ -0,0 +1,26 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ title: agentforge-graph
4
+ abstract: >-
5
+ A Code Knowledge Graph (CKG) engine and agent toolset: it turns a repository
6
+ into a typed, provenance-tracked graph — symbols, calls, imports, API routes,
7
+ ORM models, dependency injection, architecture decisions, git history, and LLM
8
+ summaries — and serves that knowledge to coding agents over MCP or as an
9
+ AgentForge toolset.
10
+ type: software
11
+ authors:
12
+ - family-names: Joshi
13
+ given-names: Khemchand
14
+ email: engg.kjoshi@gmail.com
15
+ repository-code: "https://github.com/Scaffoldic/agentforge-graph"
16
+ url: "https://pypi.org/project/agentforge-graph/"
17
+ license: Apache-2.0
18
+ keywords:
19
+ - code-knowledge-graph
20
+ - knowledge-graph
21
+ - code-search
22
+ - static-analysis
23
+ - tree-sitter
24
+ - mcp
25
+ - ai-agents
26
+ - retrieval-augmented-generation
@@ -0,0 +1,62 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ - Demonstrating empathy and kindness toward other people
20
+ - Being respectful of differing opinions, viewpoints, and experiences
21
+ - Giving and gracefully accepting constructive feedback
22
+ - Accepting responsibility and apologizing to those affected by our mistakes
23
+ - Focusing on what is best for the overall community
24
+
25
+ Examples of unacceptable behavior:
26
+
27
+ - The use of sexualized language or imagery, and sexual attention or advances
28
+ - Trolling, insulting or derogatory comments, and personal or political attacks
29
+ - Public or private harassment
30
+ - Publishing others' private information without explicit permission
31
+ - Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Enforcement Responsibilities
35
+
36
+ Community leaders are responsible for clarifying and enforcing our standards and
37
+ will take appropriate and fair corrective action in response to any behavior
38
+ they deem inappropriate, threatening, offensive, or harmful.
39
+
40
+ ## Scope
41
+
42
+ This Code of Conduct applies within all community spaces, and also applies when
43
+ an individual is officially representing the community in public spaces.
44
+
45
+ ## Enforcement
46
+
47
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
48
+ reported to the community leaders responsible for enforcement at
49
+ **engg.kjoshi@gmail.com**. All complaints will be reviewed and investigated
50
+ promptly and fairly. Community leaders are obligated to respect the privacy and
51
+ security of the reporter of any incident.
52
+
53
+ ## Attribution
54
+
55
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
56
+ version 2.1, available at
57
+ <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
58
+
59
+ [homepage]: https://www.contributor-covenant.org
60
+
61
+ For answers to common questions about this code of conduct, see the FAQ at
62
+ <https://www.contributor-covenant.org/faq>.
@@ -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 engine --extra bedrock # engine + native wheels + boto3
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
- `detect()` (dep manifest + import markers) and `extract()` emitting framework
81
- nodes/edges. Mirror `packs/fastapi/`.
82
- 2. Register in `frameworks/registry.py`. Facts are **merged into the
83
- `FileSubgraph`** so they ride incremental indexing automatically.
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`).
@@ -95,7 +107,7 @@ core change needed. **First-party built-ins already ship** for embeddings
95
107
  (`bedrock`, `openai`, `fake`) and enrichment (`bedrock`, `anthropic`, `scripted`);
96
108
  `embed.base_url` makes the `openai` driver work against any OpenAI-compatible
97
109
  local server. See the full guide:
98
- [`docs/guides/model-providers.md`](docs/guides/model-providers.md).
110
+ [`docs/guides/08-model-providers.md`](docs/guides/08-model-providers.md).
99
111
 
100
112
  To add a **new** one out-of-tree:
101
113
  1. Implement `Embedder` (`embed/base.py`) and/or `PatternJudge` / `Summarizer`
@@ -2,7 +2,7 @@ agentforge-graph
2
2
  Copyright 2026 The agentforge-graph Authors
3
3
 
4
4
  This product includes software developed at the agentforge-graph project
5
- (https://github.com/Scaffoldic/agentforge-grpah).
5
+ (https://github.com/Scaffoldic/agentforge-graph).
6
6
 
7
7
  Built on AgentForge (https://github.com/Scaffoldic/agentforge-py),
8
8
  Copyright 2026 The AgentForge Authors, licensed under Apache-2.0.