fathom-rules 0.3.0__tar.gz → 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.
Files changed (446) hide show
  1. fathom_rules-0.3.2/.codespellignore +19 -0
  2. fathom_rules-0.3.2/.github/FUNDING.yml +1 -0
  3. fathom_rules-0.3.2/.github/ISSUE_TEMPLATE/bug_report.yml +81 -0
  4. fathom_rules-0.3.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. fathom_rules-0.3.2/.github/ISSUE_TEMPLATE/feature_request.yml +44 -0
  6. fathom_rules-0.3.2/.github/PULL_REQUEST_TEMPLATE.md +23 -0
  7. fathom_rules-0.3.2/.github/dependabot.yml +17 -0
  8. fathom_rules-0.3.2/.github/workflows/ci.yml +72 -0
  9. fathom_rules-0.3.2/.github/workflows/docs-deploy.yml +96 -0
  10. fathom_rules-0.3.2/.github/workflows/docs.yml +114 -0
  11. fathom_rules-0.3.2/.github/workflows/go-ci.yml +90 -0
  12. fathom_rules-0.3.2/.github/workflows/pypi-publish.yml +53 -0
  13. fathom_rules-0.3.2/.gitignore +82 -0
  14. fathom_rules-0.3.2/.lycheeignore +10 -0
  15. fathom_rules-0.3.2/.markdownlint.jsonc +9 -0
  16. fathom_rules-0.3.2/.pre-commit-config.yaml +23 -0
  17. fathom_rules-0.3.2/.python-version +1 -0
  18. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/CHANGELOG.md +36 -36
  19. fathom_rules-0.3.2/CONTRIBUTING.md +76 -0
  20. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/LICENSE +21 -21
  21. fathom_rules-0.3.2/Makefile +44 -0
  22. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/PKG-INFO +120 -27
  23. fathom_rules-0.3.2/README.md +209 -0
  24. fathom_rules-0.3.2/SECURITY.md +15 -0
  25. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/_prompts/audit.md +75 -75
  26. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/_prompts/lint.md +50 -50
  27. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/_prompts/update.md +57 -57
  28. fathom_rules-0.3.2/docs/architecture/decisions/adr-0001-fleet-env-audit.md +73 -0
  29. fathom_rules-0.3.2/docs/architecture/decisions/adr-0002-subscribechanges-reload.md +29 -0
  30. fathom_rules-0.3.2/docs/changelog.json +31 -0
  31. fathom_rules-0.3.2/docs/concepts/audit-attestation.md +308 -0
  32. fathom_rules-0.3.2/docs/concepts/five-primitives.md +242 -0
  33. fathom_rules-0.3.2/docs/concepts/index.md +16 -0
  34. fathom_rules-0.3.2/docs/concepts/not-in-v1.md +211 -0
  35. fathom_rules-0.3.2/docs/concepts/runtime-and-working-memory.md +245 -0
  36. fathom_rules-0.3.2/docs/concepts/yaml-compilation.md +287 -0
  37. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/getting-started.md +15 -12
  38. fathom_rules-0.3.2/docs/how-to/cli.md +170 -0
  39. fathom_rules-0.3.2/docs/how-to/embed-sdk.md +317 -0
  40. fathom_rules-0.3.2/docs/how-to/fastapi.md +153 -0
  41. fathom_rules-0.3.2/docs/how-to/hot-reload.md +304 -0
  42. fathom_rules-0.3.2/docs/how-to/index.md +17 -0
  43. fathom_rules-0.3.2/docs/how-to/load-rule-pack.md +150 -0
  44. fathom_rules-0.3.2/docs/how-to/register-function.md +107 -0
  45. fathom_rules-0.3.2/docs/how-to/release-signing.md +178 -0
  46. fathom_rules-0.3.2/docs/how-to/writing-rules.md +225 -0
  47. fathom_rules-0.3.2/docs/index.md +76 -0
  48. fathom_rules-0.3.2/docs/llms-full.txt +4552 -0
  49. fathom_rules-0.3.2/docs/llms.txt +46 -0
  50. fathom_rules-0.3.2/docs/reference/cli/bench.md +27 -0
  51. fathom_rules-0.3.2/docs/reference/cli/compile.md +26 -0
  52. fathom_rules-0.3.2/docs/reference/cli/index.md +21 -0
  53. fathom_rules-0.3.2/docs/reference/cli/info.md +24 -0
  54. fathom_rules-0.3.2/docs/reference/cli/repl.md +22 -0
  55. fathom_rules-0.3.2/docs/reference/cli/status.md +24 -0
  56. fathom_rules-0.3.2/docs/reference/cli/test.md +25 -0
  57. fathom_rules-0.3.2/docs/reference/cli/validate.md +24 -0
  58. fathom_rules-0.3.2/docs/reference/cli/verify-artifact.md +26 -0
  59. fathom_rules-0.3.2/docs/reference/go-sdk/fathom-go.md +1780 -0
  60. fathom_rules-0.3.2/docs/reference/go-sdk/index.md +16 -0
  61. fathom_rules-0.3.2/docs/reference/grpc/fathom.md +306 -0
  62. {fathom_rules-0.3.0/protos → fathom_rules-0.3.2/docs/reference/grpc}/fathom.proto +145 -124
  63. fathom_rules-0.3.2/docs/reference/grpc/index.md +19 -0
  64. fathom_rules-0.3.2/docs/reference/index.md +41 -0
  65. fathom_rules-0.3.2/docs/reference/mcp/assert_fact.md +38 -0
  66. fathom_rules-0.3.2/docs/reference/mcp/evaluate.md +24 -0
  67. fathom_rules-0.3.2/docs/reference/mcp/index.md +19 -0
  68. fathom_rules-0.3.2/docs/reference/mcp/manifest.json +97 -0
  69. fathom_rules-0.3.2/docs/reference/mcp/query.md +45 -0
  70. fathom_rules-0.3.2/docs/reference/mcp/retract.md +45 -0
  71. fathom_rules-0.3.2/docs/reference/planned-integrations.md +177 -0
  72. fathom_rules-0.3.2/docs/reference/python-sdk/assertedfact.md +3 -0
  73. fathom_rules-0.3.2/docs/reference/python-sdk/assertspec.md +3 -0
  74. fathom_rules-0.3.2/docs/reference/python-sdk/compilationerror.md +3 -0
  75. fathom_rules-0.3.2/docs/reference/python-sdk/engine.md +3 -0
  76. fathom_rules-0.3.2/docs/reference/python-sdk/evaluationerror.md +3 -0
  77. fathom_rules-0.3.2/docs/reference/python-sdk/evaluationresult.md +3 -0
  78. fathom_rules-0.3.2/docs/reference/python-sdk/index.md +13 -0
  79. fathom_rules-0.3.2/docs/reference/python-sdk/validationerror.md +3 -0
  80. fathom_rules-0.3.2/docs/reference/release-signing-pubkey.minisig +2 -0
  81. fathom_rules-0.3.2/docs/reference/rest/fathom.postman_collection.json +1498 -0
  82. fathom_rules-0.3.2/docs/reference/rest/index.md +25 -0
  83. fathom_rules-0.3.2/docs/reference/rest/openapi.json +978 -0
  84. fathom_rules-0.3.2/docs/reference/rest/try.md +12 -0
  85. fathom_rules-0.3.2/docs/reference/rule-packs/.gitkeep +0 -0
  86. fathom_rules-0.3.2/docs/reference/rule-packs/cmmc.md +28 -0
  87. fathom_rules-0.3.2/docs/reference/rule-packs/hipaa.md +25 -0
  88. fathom_rules-0.3.2/docs/reference/rule-packs/index.md +16 -0
  89. fathom_rules-0.3.2/docs/reference/rule-packs/nist-800-53.md +32 -0
  90. fathom_rules-0.3.2/docs/reference/rule-packs/owasp-agentic.md +26 -0
  91. fathom_rules-0.3.2/docs/reference/rule-packs/rule-packs.json +276 -0
  92. fathom_rules-0.3.2/docs/reference/rule-packs/ssvc.md +39 -0
  93. fathom_rules-0.3.2/docs/reference/tooling/vscode/.gitkeep +0 -0
  94. fathom_rules-0.3.2/docs/reference/tooling/vscode/fathom.code-snippets +64 -0
  95. fathom_rules-0.3.2/docs/reference/tooling/vscode/index.md +42 -0
  96. fathom_rules-0.3.2/docs/reference/typescript-sdk/.gitkeep +0 -0
  97. fathom_rules-0.3.2/docs/reference/typescript-sdk/classes/ConnectionError.md +230 -0
  98. fathom_rules-0.3.2/docs/reference/typescript-sdk/classes/FathomClient.md +122 -0
  99. fathom_rules-0.3.2/docs/reference/typescript-sdk/classes/FathomError.md +228 -0
  100. fathom_rules-0.3.2/docs/reference/typescript-sdk/classes/PolicyViolation.md +228 -0
  101. fathom_rules-0.3.2/docs/reference/typescript-sdk/classes/ValidationError.md +228 -0
  102. fathom_rules-0.3.2/docs/reference/typescript-sdk/index.md +15 -0
  103. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/AssertFactRequest.md +39 -0
  104. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/AssertFactResponse.md +19 -0
  105. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/EvaluateRequest.md +39 -0
  106. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/EvaluateResponse.md +69 -0
  107. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/FactInput.md +29 -0
  108. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/FathomClientOptions.md +47 -0
  109. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/QueryRequest.md +39 -0
  110. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/QueryResponse.md +19 -0
  111. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/RetractRequest.md +39 -0
  112. fathom_rules-0.3.2/docs/reference/typescript-sdk/interfaces/RetractResponse.md +19 -0
  113. fathom_rules-0.3.2/docs/reference/yaml/fact.md +247 -0
  114. fathom_rules-0.3.2/docs/reference/yaml/function.md +227 -0
  115. fathom_rules-0.3.2/docs/reference/yaml/index.md +34 -0
  116. fathom_rules-0.3.2/docs/reference/yaml/module.md +158 -0
  117. fathom_rules-0.3.2/docs/reference/yaml/rule.md +271 -0
  118. fathom_rules-0.3.2/docs/reference/yaml/schemas/.gitkeep +0 -0
  119. fathom_rules-0.3.2/docs/reference/yaml/schemas/function.schema.json +62 -0
  120. fathom_rules-0.3.2/docs/reference/yaml/schemas/hierarchy.schema.json +38 -0
  121. fathom_rules-0.3.2/docs/reference/yaml/schemas/module.schema.json +25 -0
  122. fathom_rules-0.3.2/docs/reference/yaml/schemas/rule.schema.json +257 -0
  123. fathom_rules-0.3.2/docs/reference/yaml/schemas/template.schema.json +118 -0
  124. fathom_rules-0.3.2/docs/reference/yaml/template.md +158 -0
  125. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-0-infra-completion.md +50 -0
  126. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-0-infra.md +1907 -0
  127. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-1-reference-completion.md +43 -0
  128. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-1-reference.md +2356 -0
  129. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-2-content-rewrite-completion.md +99 -0
  130. fathom_rules-0.3.2/docs/superpowers/plans/2026-04-15-dev-docs-wave-2-content-rewrite.md +1461 -0
  131. fathom_rules-0.3.2/docs/superpowers/specs/2026-04-15-dev-docs-wave-2-content-rewrite-design.md +219 -0
  132. fathom_rules-0.3.2/docs/superpowers/specs/2026-04-15-developer-docs-design.md +499 -0
  133. fathom_rules-0.3.2/docs/tutorials/hello-world.md +86 -0
  134. fathom_rules-0.3.2/docs/tutorials/index.md +16 -0
  135. fathom_rules-0.3.2/docs/tutorials/modules-and-salience.md +216 -0
  136. fathom_rules-0.3.2/docs/tutorials/working-memory.md +210 -0
  137. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/01-hello-allow-deny/README.md +45 -44
  138. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/01-hello-allow-deny/main.py +67 -67
  139. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/01-hello-allow-deny/modules/governance.yaml +6 -6
  140. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/01-hello-allow-deny/rules/access.yaml +77 -76
  141. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/01-hello-allow-deny/templates/access.yaml +23 -23
  142. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/README.md +46 -45
  143. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/main.py +81 -81
  144. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/modules/rbac.yaml +11 -11
  145. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/rules/denies.yaml +71 -71
  146. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/rules/permits.yaml +45 -45
  147. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/02-rbac-modules/templates/rbac.yaml +30 -30
  148. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/README.md +64 -64
  149. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/functions/clearance.yaml +5 -5
  150. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/hierarchies/clearance.yaml +7 -7
  151. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/main.py +122 -122
  152. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/modules/blp.yaml +6 -6
  153. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/rules/blp.yaml +139 -139
  154. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/03-classification-blp/templates/blp.yaml +39 -39
  155. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/04-temporal-anomaly/README.md +56 -56
  156. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/04-temporal-anomaly/main.py +112 -112
  157. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/04-temporal-anomaly/modules/anomaly.yaml +6 -6
  158. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/04-temporal-anomaly/rules/anomaly.yaml +69 -69
  159. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/04-temporal-anomaly/templates/auth.yaml +30 -30
  160. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/README.md +123 -123
  161. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/agent_demo.py +216 -216
  162. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/main.py +117 -117
  163. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/modules/guardrails.yaml +6 -6
  164. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/rules/guardrails.yaml +133 -133
  165. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/templates/tools.yaml +22 -22
  166. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/05-langchain-guardrails/verify.py +118 -118
  167. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/examples/README.md +64 -64
  168. fathom_rules-0.3.2/mkdocs.yml +152 -0
  169. fathom_rules-0.3.2/openapi.json +853 -0
  170. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/package.json +23 -23
  171. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/pnpm-lock.yaml +1135 -1135
  172. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/vite.config.ts +31 -31
  173. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-go/Makefile +20 -5
  174. fathom_rules-0.3.2/packages/fathom-go/client.go +180 -0
  175. fathom_rules-0.3.2/packages/fathom-go/client_test.go +818 -0
  176. fathom_rules-0.3.2/packages/fathom-go/go.mod +18 -0
  177. fathom_rules-0.3.2/packages/fathom-go/go.sum +36 -0
  178. fathom_rules-0.3.2/packages/fathom-go/grpc_test.go +230 -0
  179. fathom_rules-0.3.2/packages/fathom-go/proto/fathom.pb.go +997 -0
  180. fathom_rules-0.3.2/packages/fathom-go/proto/fathom_grpc.pb.go +333 -0
  181. fathom_rules-0.3.2/packages/fathom-go/tools.go +9 -0
  182. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/package-lock.json +2160 -2160
  183. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/package.json +36 -33
  184. fathom_rules-0.3.2/packages/fathom-ts/pnpm-lock.yaml +1770 -0
  185. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/src/client.ts +215 -196
  186. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/src/errors.ts +77 -77
  187. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/ApiError.ts +21 -0
  188. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/ApiRequestOptions.ts +13 -0
  189. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/ApiResult.ts +7 -0
  190. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/CancelablePromise.ts +126 -0
  191. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/OpenAPI.ts +56 -0
  192. fathom_rules-0.3.2/packages/fathom-ts/src/generated/core/request.ts +341 -0
  193. fathom_rules-0.3.2/packages/fathom-ts/src/generated/index.ts +7 -0
  194. fathom_rules-0.3.2/packages/fathom-ts/src/generated/schemas.gen.ts +318 -0
  195. fathom_rules-0.3.2/packages/fathom-ts/src/generated/services.gen.ts +222 -0
  196. fathom_rules-0.3.2/packages/fathom-ts/src/generated/types.gen.ts +322 -0
  197. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/src/index.ts +26 -24
  198. fathom_rules-0.3.2/packages/fathom-ts/test/client.test.ts +326 -0
  199. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/test/errors.test.ts +130 -130
  200. fathom_rules-0.3.2/protos/fathom.proto +145 -0
  201. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/pyproject.toml +198 -134
  202. fathom_rules-0.3.2/scripts/changelog_to_json.py +71 -0
  203. fathom_rules-0.3.2/scripts/check_doc_sources.py +90 -0
  204. fathom_rules-0.3.2/scripts/check_docstrings.py +29 -0
  205. fathom_rules-0.3.2/scripts/check_frontmatter.py +81 -0
  206. fathom_rules-0.3.2/scripts/check_sdk_coverage.py +46 -0
  207. fathom_rules-0.3.2/scripts/check_version_sync.py +38 -0
  208. fathom_rules-0.3.2/scripts/export_json_schemas.py +48 -0
  209. fathom_rules-0.3.2/scripts/export_openapi.py +21 -0
  210. fathom_rules-0.3.2/scripts/generate_cli_docs.py +120 -0
  211. fathom_rules-0.3.2/scripts/generate_go_sdk_docs.py +115 -0
  212. fathom_rules-0.3.2/scripts/generate_grpc_docs.py +52 -0
  213. fathom_rules-0.3.2/scripts/generate_llms_txt.py +72 -0
  214. fathom_rules-0.3.2/scripts/generate_mcp_manifest.py +121 -0
  215. fathom_rules-0.3.2/scripts/generate_postman_collection.py +155 -0
  216. fathom_rules-0.3.2/scripts/generate_python_sdk_docs.py +64 -0
  217. fathom_rules-0.3.2/scripts/generate_rule_pack_docs.py +163 -0
  218. fathom_rules-0.3.2/scripts/generate_ts_sdk_docs.py +176 -0
  219. fathom_rules-0.3.2/scripts/live-test.sh +420 -0
  220. fathom_rules-0.3.2/scripts/sign_release.sh +67 -0
  221. fathom_rules-0.3.2/scripts/verify_tutorial_snippets.py +114 -0
  222. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/__init__.py +18 -18
  223. fathom_rules-0.3.2/src/fathom/_data/release_pubkey.minisign +2 -0
  224. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/attestation.py +18 -0
  225. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/audit.py +76 -76
  226. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/cli.py +754 -644
  227. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/compiler.py +1182 -1186
  228. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/engine.py +1144 -901
  229. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/errors.py +108 -108
  230. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/evaluator.py +159 -148
  231. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/facts.py +346 -343
  232. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/fleet.py +227 -226
  233. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/fleet_pg.py +381 -381
  234. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/fleet_redis.py +335 -335
  235. fathom_rules-0.3.2/src/fathom/integrations/__init__.py +0 -0
  236. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/integrations/auth.py +41 -43
  237. fathom_rules-0.3.2/src/fathom/integrations/crewai.py +145 -0
  238. fathom_rules-0.3.2/src/fathom/integrations/google_adk.py +155 -0
  239. fathom_rules-0.3.2/src/fathom/integrations/grpc_server.py +446 -0
  240. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/integrations/langchain.py +263 -263
  241. fathom_rules-0.3.2/src/fathom/integrations/openai_agents.py +152 -0
  242. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/integrations/paths.py +40 -44
  243. fathom_rules-0.3.2/src/fathom/integrations/rest.py +653 -0
  244. fathom_rules-0.3.2/src/fathom/integrations/ruleset_sig.py +33 -0
  245. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/metrics.py +187 -187
  246. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/models.py +469 -327
  247. fathom_rules-0.3.2/src/fathom/proto/__init__.py +15 -0
  248. fathom_rules-0.3.2/src/fathom/proto/fathom_pb2.py +65 -0
  249. fathom_rules-0.3.2/src/fathom/proto/fathom_pb2.pyi +132 -0
  250. fathom_rules-0.3.2/src/fathom/proto/fathom_pb2_grpc.py +330 -0
  251. fathom_rules-0.3.2/src/fathom/py.typed +0 -0
  252. fathom_rules-0.3.2/src/fathom/release_sig.py +86 -0
  253. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/README.md +76 -0
  254. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/__init__.py +81 -0
  255. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/modules/ssvc_modules.yaml +5 -0
  256. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/references/SHA256SUMS +1 -0
  257. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/references/branches.yaml +126 -0
  258. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/references/cisa-ssvc-v2.0.3.pdf +0 -0
  259. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/rules/ssvc_rules.yaml +426 -0
  260. fathom_rules-0.3.2/src/fathom/rule_packs/ssvc/templates/ssvc_templates.yaml +20 -0
  261. fathom_rules-0.3.2/tests/__init__.py +0 -0
  262. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/conftest.py +200 -200
  263. fathom_rules-0.3.2/tests/integrations/__init__.py +0 -0
  264. fathom_rules-0.3.2/tests/integrations/test_grpc_reload.py +200 -0
  265. fathom_rules-0.3.2/tests/integrations/test_rest_reload.py +410 -0
  266. fathom_rules-0.3.2/tests/integrations/test_rest_status.py +157 -0
  267. fathom_rules-0.3.2/tests/phase_2/__init__.py +0 -0
  268. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/phase_2/test_compile_endpoint.py +132 -132
  269. fathom_rules-0.3.2/tests/rule_packs/__init__.py +0 -0
  270. fathom_rules-0.3.2/tests/rule_packs/test_ssvc_cisa.py +155 -0
  271. fathom_rules-0.3.2/tests/test_attestation_sign_event.py +52 -0
  272. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_audit.py +592 -592
  273. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_auth.py +55 -55
  274. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_cli.py +520 -520
  275. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_cli_repl.py +54 -52
  276. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_compiler_functions.py +5 -7
  277. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_compiler_modules.py +7 -11
  278. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_compiler_rules.py +1154 -1160
  279. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_compiler_templates.py +11 -13
  280. fathom_rules-0.3.2/tests/test_crewai.py +209 -0
  281. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_engine.py +60 -60
  282. fathom_rules-0.3.2/tests/test_engine_reload.py +301 -0
  283. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_evaluator.py +857 -857
  284. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_facts.py +1028 -1028
  285. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_fleet.py +405 -405
  286. fathom_rules-0.3.2/tests/test_google_adk.py +246 -0
  287. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_grpc_auth.py +101 -109
  288. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_integration.py +1150 -1067
  289. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_metadata_roundtrip.py +100 -102
  290. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_metrics.py +465 -464
  291. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_models.py +156 -149
  292. fathom_rules-0.3.2/tests/test_openai_agents.py +231 -0
  293. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_paths.py +86 -86
  294. fathom_rules-0.3.2/tests/test_release_sig.py +159 -0
  295. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_rest.py +915 -662
  296. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_rest_auth.py +75 -75
  297. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_rest_editor.py +126 -118
  298. fathom_rules-0.3.2/tests/test_scripts/__init__.py +0 -0
  299. fathom_rules-0.3.2/tests/test_scripts/test_changelog_to_json.py +75 -0
  300. fathom_rules-0.3.2/tests/test_scripts/test_check_doc_sources.py +88 -0
  301. fathom_rules-0.3.2/tests/test_scripts/test_check_docstrings.py +56 -0
  302. fathom_rules-0.3.2/tests/test_scripts/test_check_frontmatter.py +115 -0
  303. fathom_rules-0.3.2/tests/test_scripts/test_check_version_sync.py +38 -0
  304. fathom_rules-0.3.2/tests/test_scripts/test_cli_docs_real.py +24 -0
  305. fathom_rules-0.3.2/tests/test_scripts/test_export_json_schemas.py +21 -0
  306. fathom_rules-0.3.2/tests/test_scripts/test_export_openapi.py +19 -0
  307. fathom_rules-0.3.2/tests/test_scripts/test_generate_llms_txt.py +46 -0
  308. fathom_rules-0.3.2/tests/test_scripts/test_go_sdk_docs.py +50 -0
  309. fathom_rules-0.3.2/tests/test_scripts/test_grpc_docs.py +44 -0
  310. fathom_rules-0.3.2/tests/test_scripts/test_mcp_manifest_real.py +34 -0
  311. fathom_rules-0.3.2/tests/test_scripts/test_postman.py +48 -0
  312. fathom_rules-0.3.2/tests/test_scripts/test_python_sdk_docs.py +23 -0
  313. fathom_rules-0.3.2/tests/test_scripts/test_rule_pack_docs_real.py +28 -0
  314. fathom_rules-0.3.2/tests/test_scripts/test_sdk_coverage.py +35 -0
  315. fathom_rules-0.3.2/tests/test_scripts/test_ts_sdk_docs.py +84 -0
  316. fathom_rules-0.3.2/tests/test_scripts/test_verify_tutorial_snippets.py +119 -0
  317. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_sdk.py +524 -527
  318. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_sequence_detected.py +61 -62
  319. fathom_rules-0.3.0/.gitignore +0 -235
  320. fathom_rules-0.3.0/.python-version +0 -1
  321. fathom_rules-0.3.0/README.md +0 -138
  322. fathom_rules-0.3.0/design.md +0 -574
  323. fathom_rules-0.3.0/docs/_index.md +0 -60
  324. fathom_rules-0.3.0/docs/core/attestation.md +0 -111
  325. fathom_rules-0.3.0/docs/core/audit-log.md +0 -111
  326. fathom_rules-0.3.0/docs/core/backward-chaining.md +0 -65
  327. fathom_rules-0.3.0/docs/core/cool.md +0 -72
  328. fathom_rules-0.3.0/docs/core/fact-asserter.md +0 -117
  329. fathom_rules-0.3.0/docs/core/forward-chaining.md +0 -126
  330. fathom_rules-0.3.0/docs/core/message-handlers.md +0 -80
  331. fathom_rules-0.3.0/docs/core/primitives.md +0 -204
  332. fathom_rules-0.3.0/docs/core/runtime.md +0 -125
  333. fathom_rules-0.3.0/docs/core/working-memory.md +0 -195
  334. fathom_rules-0.3.0/docs/core/yaml-compiler.md +0 -137
  335. fathom_rules-0.3.0/docs/integration.md +0 -140
  336. fathom_rules-0.3.0/docs/integrations/crew-ai.md +0 -101
  337. fathom_rules-0.3.0/docs/integrations/go-sdk.md +0 -119
  338. fathom_rules-0.3.0/docs/integrations/google-adk.md +0 -100
  339. fathom_rules-0.3.0/docs/integrations/langchain.md +0 -92
  340. fathom_rules-0.3.0/docs/integrations/mcp.md +0 -98
  341. fathom_rules-0.3.0/docs/integrations/open-ai-agent-sdk.md +0 -99
  342. fathom_rules-0.3.0/docs/integrations/sidecar.md +0 -113
  343. fathom_rules-0.3.0/docs/integrations/typescript-sdk.md +0 -124
  344. fathom_rules-0.3.0/docs/rule-packs/cmmc.md +0 -197
  345. fathom_rules-0.3.0/docs/rule-packs/hipaa.md +0 -169
  346. fathom_rules-0.3.0/docs/rule-packs/nist-ai-rmf.md +0 -184
  347. fathom_rules-0.3.0/docs/rule-packs/owasp-agentic.md +0 -151
  348. fathom_rules-0.3.0/docs/writing-rules.md +0 -217
  349. fathom_rules-0.3.0/docs/yaml/yaml-facts.md +0 -153
  350. fathom_rules-0.3.0/docs/yaml/yaml-functions.md +0 -213
  351. fathom_rules-0.3.0/docs/yaml/yaml-modules.md +0 -226
  352. fathom_rules-0.3.0/docs/yaml/yaml-rule-language.md +0 -197
  353. fathom_rules-0.3.0/docs/yaml/yaml-templates.md +0 -193
  354. fathom_rules-0.3.0/mkdocs.yml +0 -93
  355. fathom_rules-0.3.0/packages/fathom-go/client.go +0 -189
  356. fathom_rules-0.3.0/packages/fathom-go/go.mod +0 -3
  357. fathom_rules-0.3.0/specs/.index/index-state.json +0 -35
  358. fathom_rules-0.3.0/specs/.index/index.md +0 -27
  359. fathom_rules-0.3.0/specs/phase-1/design.md +0 -1258
  360. fathom_rules-0.3.0/specs/phase-1/requirements.md +0 -499
  361. fathom_rules-0.3.0/specs/phase-1/research.md +0 -404
  362. fathom_rules-0.3.0/specs/phase-1/tasks.md +0 -1662
  363. fathom_rules-0.3.0/specs/phase-2/design.md +0 -1262
  364. fathom_rules-0.3.0/specs/phase-2/requirements.md +0 -623
  365. fathom_rules-0.3.0/specs/phase-2/research.md +0 -547
  366. fathom_rules-0.3.0/specs/phase-2/tasks.md +0 -1184
  367. fathom_rules-0.3.0/specs/rule-assertions/design.md +0 -765
  368. fathom_rules-0.3.0/specs/rule-assertions/requirements.md +0 -184
  369. fathom_rules-0.3.0/specs/rule-assertions/research.md +0 -349
  370. fathom_rules-0.3.0/specs/rule-assertions/tasks.md +0 -616
  371. fathom_rules-0.3.0/src/fathom/integrations/grpc_server.py +0 -229
  372. fathom_rules-0.3.0/src/fathom/integrations/rest.py +0 -285
  373. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/Dockerfile +0 -0
  374. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/REVIEW.md +0 -0
  375. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/attestation.md +0 -0
  376. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/audit.md +0 -0
  377. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/compiler.md +0 -0
  378. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/engine.md +0 -0
  379. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/evaluator.md +0 -0
  380. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/docs/api/facts.md +0 -0
  381. /fathom_rules-0.3.0/docs/core/visual-editor.md → /fathom_rules-0.3.2/docs/reference/.gitkeep +0 -0
  382. /fathom_rules-0.3.0/docs/integrations/cli.md → /fathom_rules-0.3.2/docs/reference/cli/.gitkeep +0 -0
  383. /fathom_rules-0.3.0/docs/integrations/prometheus.md → /fathom_rules-0.3.2/docs/reference/go-sdk/.gitkeep +0 -0
  384. /fathom_rules-0.3.0/src/fathom/integrations/__init__.py → /fathom_rules-0.3.2/docs/reference/grpc/.gitkeep +0 -0
  385. /fathom_rules-0.3.0/src/fathom/py.typed → /fathom_rules-0.3.2/docs/reference/mcp/.gitkeep +0 -0
  386. /fathom_rules-0.3.0/tests/__init__.py → /fathom_rules-0.3.2/docs/reference/python-sdk/.gitkeep +0 -0
  387. /fathom_rules-0.3.0/tests/phase_2/__init__.py → /fathom_rules-0.3.2/docs/reference/rest/.gitkeep +0 -0
  388. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/index.html +0 -0
  389. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/App.tsx +0 -0
  390. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/api/fathom.ts +0 -0
  391. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/ClipsPreview.tsx +0 -0
  392. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/ConditionBuilder.tsx +0 -0
  393. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/RuleTree.tsx +0 -0
  394. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/TemplateBrowser.tsx +0 -0
  395. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/TestRunner.tsx +0 -0
  396. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/components/YamlEditor.tsx +0 -0
  397. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/src/main.tsx +0 -0
  398. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-editor/tsconfig.json +0 -0
  399. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/scripts/generate.sh +0 -0
  400. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/packages/fathom-ts/tsconfig.json +0 -0
  401. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/scripts/publish.sh +0 -0
  402. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/integrations/mcp_server.py +0 -0
  403. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/packs.py +0 -0
  404. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/__init__.py +0 -0
  405. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/_helpers.py +0 -0
  406. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/cmmc/__init__.py +0 -0
  407. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/cmmc/modules/cmmc_modules.yaml +0 -0
  408. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/cmmc/rules/cmmc_rules.yaml +0 -0
  409. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/cmmc/templates/cmmc_templates.yaml +0 -0
  410. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/hipaa/__init__.py +0 -0
  411. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/hipaa/modules/hipaa_modules.yaml +0 -0
  412. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/hipaa/rules/hipaa_rules.yaml +0 -0
  413. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/hipaa/templates/hipaa_templates.yaml +0 -0
  414. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/__init__.py +0 -0
  415. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/modules/nist_modules.yaml +0 -0
  416. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/rules/ac_rules.yaml +0 -0
  417. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/rules/au_rules.yaml +0 -0
  418. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/rules/sc_rules.yaml +0 -0
  419. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/nist_800_53/templates/nist_templates.yaml +0 -0
  420. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/owasp_agentic/__init__.py +0 -0
  421. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/owasp_agentic/modules/owasp_modules.yaml +0 -0
  422. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/owasp_agentic/rules/owasp_rules.yaml +0 -0
  423. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/rule_packs/owasp_agentic/templates/owasp_templates.yaml +0 -0
  424. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/src/fathom/yaml_utils.py +0 -0
  425. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/functions/classification.yaml +0 -0
  426. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/functions/temporal.yaml +0 -0
  427. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/hierarchies/classification.yaml +0 -0
  428. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/modules/modules.yaml +0 -0
  429. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/rules/access-control.yaml +0 -0
  430. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/fixtures/templates/agent.yaml +0 -0
  431. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_attestation.py +0 -0
  432. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_backward_chaining.py +0 -0
  433. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_classification_integration.py +0 -0
  434. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_classification_ops.py +0 -0
  435. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_cmmc_pack.py +0 -0
  436. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_hipaa_pack.py +0 -0
  437. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_langchain.py +0 -0
  438. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_mcp.py +0 -0
  439. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_nist_pack.py +0 -0
  440. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_owasp_pack.py +0 -0
  441. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_property_based.py +0 -0
  442. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_rest_metrics.py +0 -0
  443. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_temporal_integration.py +0 -0
  444. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_temporal_ops.py +0 -0
  445. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_temporal_property.py +0 -0
  446. {fathom_rules-0.3.0 → fathom_rules-0.3.2}/tests/test_working_memory.py +0 -0
@@ -0,0 +1,19 @@
1
+ clips
2
+ clipspy
3
+ deftemplate
4
+ defrule
5
+ defmodule
6
+ deffunction
7
+ rete
8
+ salience
9
+ cuid
10
+ pii
11
+ phi
12
+ nist
13
+ hipaa
14
+ cmmc
15
+ owasp
16
+ mkdocs
17
+ pdoc
18
+ gomarkdoc
19
+ typedoc
@@ -0,0 +1 @@
1
+ github: KrakenNet
@@ -0,0 +1,81 @@
1
+ name: Bug Report
2
+ description: Report a bug in fathom-rules
3
+ labels: ["bug"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for reporting a bug! Please fill out the sections below.
9
+ - type: textarea
10
+ id: description
11
+ attributes:
12
+ label: Description
13
+ description: A clear description of the bug.
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ id: reproduction
18
+ attributes:
19
+ label: Steps to Reproduce
20
+ description: Minimal code or steps to reproduce the issue.
21
+ render: python
22
+ validations:
23
+ required: true
24
+ - type: textarea
25
+ id: expected
26
+ attributes:
27
+ label: Expected Behavior
28
+ description: What you expected to happen.
29
+ validations:
30
+ required: true
31
+ - type: textarea
32
+ id: actual
33
+ attributes:
34
+ label: Actual Behavior
35
+ description: What actually happened. Include tracebacks if applicable.
36
+ validations:
37
+ required: true
38
+ - type: input
39
+ id: version
40
+ attributes:
41
+ label: Fathom Version
42
+ description: "Output of: python -c 'import fathom; print(fathom.__version__)'"
43
+ placeholder: "0.3.1"
44
+ validations:
45
+ required: true
46
+ - type: input
47
+ id: python-version
48
+ attributes:
49
+ label: Python Version
50
+ description: "Output of: python --version"
51
+ placeholder: "3.13.0"
52
+ validations:
53
+ required: true
54
+ - type: input
55
+ id: os
56
+ attributes:
57
+ label: Operating System
58
+ placeholder: "Ubuntu 24.04 / macOS 15 / Windows 11"
59
+ validations:
60
+ required: true
61
+ - type: dropdown
62
+ id: component
63
+ attributes:
64
+ label: Component
65
+ options:
66
+ - Core Engine
67
+ - YAML Compiler
68
+ - REST Server (FastAPI)
69
+ - gRPC Server
70
+ - MCP Server
71
+ - CLI
72
+ - Rule Pack (OWASP/NIST/HIPAA/CMMC)
73
+ - LangChain Integration
74
+ - CrewAI Integration
75
+ - OpenAI Agents Integration
76
+ - Google ADK Integration
77
+ - Attestation
78
+ - Fleet (Redis/Postgres)
79
+ - Other
80
+ validations:
81
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Documentation
4
+ url: https://fathom.krakn.ai
5
+ about: Check the docs before opening an issue
6
+ - name: Discussions
7
+ url: https://github.com/KrakenNet/fathom/discussions
8
+ about: Ask questions and discuss ideas
@@ -0,0 +1,44 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for suggesting an improvement! Please describe the use case.
9
+ - type: textarea
10
+ id: problem
11
+ attributes:
12
+ label: Problem or Use Case
13
+ description: What problem does this solve? What use case does it enable?
14
+ validations:
15
+ required: true
16
+ - type: textarea
17
+ id: solution
18
+ attributes:
19
+ label: Proposed Solution
20
+ description: How do you think this should work?
21
+ validations:
22
+ required: true
23
+ - type: textarea
24
+ id: alternatives
25
+ attributes:
26
+ label: Alternatives Considered
27
+ description: Any alternative approaches you've considered.
28
+ - type: dropdown
29
+ id: component
30
+ attributes:
31
+ label: Component
32
+ options:
33
+ - Core Engine
34
+ - YAML Compiler
35
+ - REST Server (FastAPI)
36
+ - gRPC Server
37
+ - MCP Server
38
+ - CLI
39
+ - Rule Packs
40
+ - SDK (Python/Go/TypeScript)
41
+ - Documentation
42
+ - Other
43
+ validations:
44
+ required: true
@@ -0,0 +1,23 @@
1
+ ## Summary
2
+
3
+ <!-- What does this PR do? Why? -->
4
+
5
+ ## Changes
6
+
7
+ <!-- Bullet list of key changes -->
8
+
9
+ -
10
+
11
+ ## Testing
12
+
13
+ <!-- How was this tested? -->
14
+
15
+ - [ ] `uv run pytest` passes
16
+ - [ ] `uv run ruff check src/ tests/` passes
17
+ - [ ] `uv run mypy src/` passes
18
+ - [ ] New tests added for new functionality
19
+ - [ ] Documentation updated (if applicable)
20
+
21
+ ## Related Issues
22
+
23
+ <!-- Link related issues: Fixes #123, Relates to #456 -->
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ labels:
8
+ - "dependencies"
9
+ open-pull-requests-limit: 10
10
+
11
+ - package-ecosystem: "github-actions"
12
+ directory: "/"
13
+ schedule:
14
+ interval: "weekly"
15
+ labels:
16
+ - "dependencies"
17
+ - "ci"
@@ -0,0 +1,72 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ concurrency:
9
+ group: ci-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ${{ matrix.os }}
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os: [ubuntu-latest]
19
+ python-version: ["3.12", "3.13"]
20
+ include:
21
+ - os: windows-latest
22
+ python-version: "3.13"
23
+ - os: macos-latest
24
+ python-version: "3.13"
25
+ timeout-minutes: 15
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v3
31
+ with:
32
+ python-version: ${{ matrix.python-version }}
33
+
34
+ - name: Install dependencies
35
+ run: uv sync --all-extras
36
+
37
+ - name: Run tests with coverage
38
+ run: uv run pytest --cov=fathom --cov-report=xml --cov-report=term-missing -q
39
+
40
+ - name: Upload coverage
41
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
42
+ uses: codecov/codecov-action@v4
43
+ with:
44
+ files: coverage.xml
45
+ token: ${{ secrets.CODECOV_TOKEN }}
46
+ fail_ci_if_error: false
47
+
48
+ lint:
49
+ runs-on: ubuntu-latest
50
+ timeout-minutes: 10
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+
54
+ - name: Install uv
55
+ uses: astral-sh/setup-uv@v3
56
+ with:
57
+ python-version: "3.13"
58
+
59
+ - name: Install dependencies
60
+ run: uv sync --all-extras
61
+
62
+ - name: Ruff check
63
+ run: uv run ruff check src/ tests/
64
+
65
+ - name: Ruff format check
66
+ run: uv run ruff format --check src/ tests/
67
+
68
+ - name: mypy
69
+ run: uv run mypy src/
70
+
71
+ - name: Version sync
72
+ run: uv run python scripts/check_version_sync.py
@@ -0,0 +1,96 @@
1
+ name: docs-deploy
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+ workflow_dispatch:
8
+ inputs:
9
+ version:
10
+ description: "mike version alias (e.g. 0.3 or latest)"
11
+ required: true
12
+ default: "latest"
13
+
14
+ permissions:
15
+ contents: write
16
+
17
+ jobs:
18
+ deploy:
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 20
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v3
28
+ with:
29
+ python-version: "3.13"
30
+
31
+ - name: Install protoc
32
+ uses: arduino/setup-protoc@v3
33
+ with:
34
+ version: "27.3"
35
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
36
+
37
+ - name: Set up Go
38
+ uses: actions/setup-go@v5
39
+ with:
40
+ go-version: "1.24"
41
+
42
+ - name: Install protoc-gen-doc
43
+ run: go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1
44
+
45
+ - name: Install Node
46
+ uses: actions/setup-node@v4
47
+ with:
48
+ node-version: "20"
49
+
50
+ - name: Install pnpm
51
+ uses: pnpm/action-setup@v4
52
+ with:
53
+ version: 9
54
+
55
+ - name: Set up Python
56
+ uses: actions/setup-python@v5
57
+ with:
58
+ python-version: "3.13"
59
+
60
+ - name: Install Python deps
61
+ run: uv sync --extra docs --extra server --extra mcp
62
+
63
+ - name: Generate everything
64
+ run: |
65
+ make docs-gen
66
+ make docs-gen-foreign
67
+
68
+ - name: Configure git for mike
69
+ run: |
70
+ git config user.name "docs-bot"
71
+ git config user.email "docs-bot@users.noreply.github.com"
72
+
73
+ - name: Resolve version label
74
+ id: label
75
+ run: |
76
+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
77
+ echo "version=${{ inputs.version }}" >> "$GITHUB_OUTPUT"
78
+ echo "alias=" >> "$GITHUB_OUTPUT"
79
+ else
80
+ TAG="${GITHUB_REF##refs/tags/}"
81
+ VER="${TAG#v}"
82
+ MM="$(echo "$VER" | awk -F. '{print $1"."$2}')"
83
+ echo "version=${MM}" >> "$GITHUB_OUTPUT"
84
+ echo "alias=latest" >> "$GITHUB_OUTPUT"
85
+ fi
86
+
87
+ - name: Deploy via mike
88
+ run: |
89
+ if [ -n "${{ steps.label.outputs.alias }}" ]; then
90
+ uv run mike deploy --push --update-aliases \
91
+ "${{ steps.label.outputs.version }}" "${{ steps.label.outputs.alias }}"
92
+ uv run mike set-default --push "${{ steps.label.outputs.alias }}"
93
+ else
94
+ uv run mike deploy --push "${{ steps.label.outputs.version }}"
95
+ uv run mike set-default --push "${{ steps.label.outputs.version }}"
96
+ fi
@@ -0,0 +1,114 @@
1
+ name: docs
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "src/**"
7
+ - "docs/**"
8
+ - "packages/**"
9
+ - "protos/**"
10
+ - "CHANGELOG.md"
11
+ - "mkdocs.yml"
12
+ - "Makefile"
13
+ - "scripts/**"
14
+ - ".github/workflows/docs.yml"
15
+ push:
16
+ branches: [main]
17
+
18
+ jobs:
19
+ docs:
20
+ runs-on: ubuntu-latest
21
+ timeout-minutes: 15
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@v3
27
+ with:
28
+ python-version: "3.13"
29
+
30
+ - name: Install Python deps
31
+ run: uv sync --extra docs --extra server --extra mcp
32
+
33
+ # arduino/setup-protoc@v3 has an unfixed bug ("unable to get latest
34
+ # version", arduino/setup-protoc#108) that intermittently breaks CI
35
+ # even with an explicit version pin. Install protoc directly from
36
+ # the upstream release archive instead.
37
+ - name: Install protoc
38
+ run: |
39
+ set -euo pipefail
40
+ PROTOC_VERSION=27.3
41
+ curl -fsSL -o /tmp/protoc.zip \
42
+ "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip"
43
+ sudo unzip -q -o /tmp/protoc.zip -d /usr/local
44
+ sudo chmod +x /usr/local/bin/protoc
45
+ protoc --version
46
+
47
+ - name: Set up Go
48
+ uses: actions/setup-go@v5
49
+ with:
50
+ go-version: "1.24"
51
+
52
+ - name: Install protoc-gen-doc
53
+ run: go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.5.1
54
+
55
+ - name: Install Node
56
+ uses: actions/setup-node@v4
57
+ with:
58
+ node-version: "20"
59
+
60
+ - name: Install pnpm
61
+ uses: pnpm/action-setup@v4
62
+ with:
63
+ version: 9
64
+
65
+ - name: Version sync
66
+ run: uv run python scripts/check_version_sync.py
67
+
68
+ - name: Generate docs artifacts
69
+ run: make docs-gen
70
+
71
+ - name: Generate foreign-toolchain docs
72
+ run: make docs-gen-foreign
73
+
74
+ - name: Drift gate
75
+ run: |
76
+ if ! git diff --exit-code docs/reference docs/llms.txt docs/llms-full.txt docs/changelog.json; then
77
+ echo "::error::Generated docs artifacts are stale. Run 'make docs-gen && make docs-gen-foreign' and commit."
78
+ exit 1
79
+ fi
80
+
81
+ - name: Build (strict)
82
+ run: uv run mkdocs build --strict
83
+
84
+ - name: Docstring coverage
85
+ run: uv run python scripts/check_docstrings.py
86
+
87
+ - name: SDK coverage
88
+ run: uv run python scripts/check_sdk_coverage.py
89
+
90
+ - name: Doc source drift gate
91
+ run: uv run python scripts/check_doc_sources.py
92
+
93
+ - name: Tutorial snippet verification
94
+ run: uv run python scripts/verify_tutorial_snippets.py docs/tutorials
95
+ if: hashFiles('docs/tutorials/*.md') != ''
96
+
97
+ - name: Markdown lint
98
+ uses: DavidAnson/markdownlint-cli2-action@v16
99
+ with:
100
+ globs: |
101
+ docs/**/*.md
102
+ !docs/reference/**
103
+ !docs/llms*.txt
104
+ !docs/superpowers/**
105
+ !docs/_prompts/**
106
+
107
+ - name: Spelling
108
+ run: uv run codespell docs/ --skip "docs/reference/*,docs/llms*.txt,docs/changelog.json,docs/superpowers/*"
109
+
110
+ - name: Link check
111
+ uses: lycheeverse/lychee-action@v1
112
+ with:
113
+ args: --no-progress --exclude-path docs/superpowers docs/
114
+ fail: true
@@ -0,0 +1,90 @@
1
+ name: go-ci
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "protos/**"
7
+ - "packages/fathom-go/**"
8
+ - ".github/workflows/go-ci.yml"
9
+ push:
10
+ branches: [main]
11
+ paths:
12
+ - "protos/**"
13
+ - "packages/fathom-go/**"
14
+ - ".github/workflows/go-ci.yml"
15
+ workflow_dispatch: {}
16
+
17
+ concurrency:
18
+ group: go-ci-${{ github.ref }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ test:
23
+ runs-on: ubuntu-latest
24
+ timeout-minutes: 15
25
+ defaults:
26
+ run:
27
+ working-directory: packages/fathom-go
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - name: Set up Go
32
+ uses: actions/setup-go@v5
33
+ with:
34
+ go-version: "1.24"
35
+
36
+ - name: Set up protoc
37
+ uses: arduino/setup-protoc@v3
38
+ with:
39
+ version: "25.3"
40
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
41
+
42
+ - name: Install protoc Go plugins
43
+ run: |
44
+ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
45
+ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.1
46
+ echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"
47
+
48
+ - name: verify-grpc (drift check)
49
+ run: make verify-grpc
50
+
51
+ - name: go vet
52
+ run: go vet ./...
53
+
54
+ - name: go build
55
+ run: go build ./...
56
+
57
+ - name: go test
58
+ run: go test ./...
59
+
60
+ integration:
61
+ runs-on: ubuntu-latest
62
+ timeout-minutes: 20
63
+ needs: test
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+
67
+ - name: Set up Go
68
+ uses: actions/setup-go@v5
69
+ with:
70
+ go-version: "1.24"
71
+
72
+ - name: Set up protoc
73
+ uses: arduino/setup-protoc@v3
74
+ with:
75
+ version: "25.3"
76
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
77
+
78
+ - name: Install uv
79
+ uses: astral-sh/setup-uv@v5
80
+ with:
81
+ python-version: "3.13"
82
+
83
+ - name: Install fathom (Python) for live gRPC server
84
+ run: |
85
+ uv sync --all-extras
86
+ uv pip install -e .
87
+
88
+ - name: go test (integration)
89
+ working-directory: packages/fathom-go
90
+ run: go test -tags integration ./...
@@ -0,0 +1,53 @@
1
+ name: pypi-publish
2
+ on:
3
+ push:
4
+ tags:
5
+ - "v*.*.*"
6
+ workflow_dispatch: {}
7
+ permissions:
8
+ id-token: write
9
+ contents: write
10
+ jobs:
11
+ publish:
12
+ runs-on: ubuntu-latest
13
+ environment: pypi
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v3
19
+ with:
20
+ python-version: "3.13"
21
+
22
+ - name: Clean old artifacts
23
+ run: rm -rf dist/
24
+
25
+ - name: Build
26
+ run: uv build
27
+
28
+ - name: Install minisign
29
+ run: sudo apt-get update && sudo apt-get install -y minisign
30
+
31
+ - name: Write signing key
32
+ env:
33
+ MINISIGN_KEY_PRIMARY: ${{ secrets.MINISIGN_KEY_PRIMARY }}
34
+ run: |
35
+ set -euo pipefail
36
+ if [[ -z "${MINISIGN_KEY_PRIMARY}" ]]; then
37
+ echo "error: MINISIGN_KEY_PRIMARY secret is not set" >&2
38
+ exit 1
39
+ fi
40
+ printf '%s\n' "${MINISIGN_KEY_PRIMARY}" > /tmp/mini.key
41
+ chmod 600 /tmp/mini.key
42
+
43
+ - name: Sign and verify artifacts
44
+ run: bash scripts/sign_release.sh /tmp/mini.key docs/reference/release-signing-pubkey.minisig
45
+
46
+ - name: Publish to PyPI
47
+ uses: pypa/gh-action-pypi-publish@release/v1
48
+
49
+ - name: Upload signatures to GitHub release
50
+ if: startsWith(github.ref, 'refs/tags/')
51
+ env:
52
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53
+ run: gh release upload "${GITHUB_REF_NAME}" dist/*.minisig
@@ -0,0 +1,82 @@
1
+ # AI / Editor tooling
2
+ .claude
3
+ .vscode
4
+ .cursor
5
+ .worktrees
6
+ CLAUDE.md
7
+
8
+ # Specs / orchestration state
9
+ ./specs/
10
+ specs/.current-spec
11
+ specs/.index/.work-indicators/
12
+ **/.tasks.lock
13
+ **/.progress.md
14
+ **/.ralph-state.json
15
+ **/.git-commit.lock
16
+
17
+ # Python bytecode
18
+ __pycache__/
19
+ *.py[codz]
20
+ *$py.class
21
+ *.so
22
+
23
+ # Distribution / packaging
24
+ build/
25
+ dist/
26
+ *.egg-info/
27
+ *.egg
28
+ .installed.cfg
29
+ MANIFEST
30
+
31
+ # Virtual environments
32
+ .venv
33
+ .env
34
+ .envrc
35
+
36
+ # uv
37
+ uv.lock
38
+
39
+ # Testing / coverage
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ coverage.xml
46
+ *.cover
47
+ *.py.cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+
51
+ # Type checkers / linters
52
+ .mypy_cache/
53
+ .dmypy.json
54
+ dmypy.json
55
+ .pytype/
56
+ .pyre/
57
+ .ruff_cache/
58
+
59
+ # mkdocs
60
+ /site
61
+
62
+ # Node / TypeScript
63
+ node_modules/
64
+ packages/*/node_modules
65
+
66
+ # Logs
67
+ *.log
68
+
69
+ # Docker
70
+ *.pid
71
+
72
+ # Secrets / tokens
73
+ .pypi-token
74
+ .pypirc
75
+
76
+ # OS files
77
+ .DS_Store
78
+ Thumbs.db
79
+
80
+ # Scratch / test artifacts
81
+ .live-test-*/
82
+ CLAUDE.md