petfishframework 0.4.0__tar.gz → 0.4.1__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 (175) hide show
  1. {petfishframework-0.4.0 → petfishframework-0.4.1}/AGENTS.md +4 -0
  2. {petfishframework-0.4.0 → petfishframework-0.4.1}/CHANGELOG.md +28 -0
  3. {petfishframework-0.4.0 → petfishframework-0.4.1}/PKG-INFO +20 -4
  4. {petfishframework-0.4.0 → petfishframework-0.4.1}/README.md +19 -3
  5. {petfishframework-0.4.0 → petfishframework-0.4.1}/SECURITY.md +5 -4
  6. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/api.md +1 -1
  7. petfishframework-0.4.1/docs/feedbacks/petfishframework_v0_4_0_review.md +830 -0
  8. {petfishframework-0.4.0 → petfishframework-0.4.1}/pyproject.toml +1 -1
  9. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/__init__.py +1 -1
  10. petfishframework-0.4.1/src/petfishframework/__main__.py +28 -0
  11. petfishframework-0.4.1/src/petfishframework/observability/__init__.py +15 -0
  12. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/siem_sink.py +56 -12
  13. petfishframework-0.4.1/tests/test_main_entry.py +30 -0
  14. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_siem_export.py +92 -0
  15. {petfishframework-0.4.0 → petfishframework-0.4.1}/uv.lock +1 -1
  16. petfishframework-0.4.0/src/petfishframework/observability/__init__.py +0 -10
  17. {petfishframework-0.4.0 → petfishframework-0.4.1}/.env.example +0 -0
  18. {petfishframework-0.4.0 → petfishframework-0.4.1}/.github/workflows/ci.yml +0 -0
  19. {petfishframework-0.4.0 → petfishframework-0.4.1}/.github/workflows/publish.yml +0 -0
  20. {petfishframework-0.4.0 → petfishframework-0.4.1}/.gitignore +0 -0
  21. {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.1.6-plan.md +0 -0
  22. {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.2.0-plan.md +0 -0
  23. {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.3.0-plan.md +0 -0
  24. {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.4.0-plan.md +0 -0
  25. {petfishframework-0.4.0 → petfishframework-0.4.1}/AGENTS.md.new +0 -0
  26. {petfishframework-0.4.0 → petfishframework-0.4.1}/CONTRIBUTING.md +0 -0
  27. {petfishframework-0.4.0 → petfishframework-0.4.1}/Dockerfile +0 -0
  28. {petfishframework-0.4.0 → petfishframework-0.4.1}/LICENSE +0 -0
  29. {petfishframework-0.4.0 → petfishframework-0.4.1}/conftest.py +0 -0
  30. {petfishframework-0.4.0 → petfishframework-0.4.1}/docker-compose.yml +0 -0
  31. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/architecture.md +0 -0
  32. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/benchmark-results.md +0 -0
  33. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/deployment.md +0 -0
  34. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/development-plan.md +0 -0
  35. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/development.md +0 -0
  36. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/enterprise-expense-demo.md +0 -0
  37. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
  38. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
  39. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
  40. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
  41. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
  42. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
  43. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
  44. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
  45. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
  46. {petfishframework-0.4.0/docs/feedbacks → petfishframework-0.4.1/docs/feedbacks/archives}/petfishframework_v0_3_0_review.md +0 -0
  47. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/release-checklist.md +0 -0
  48. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/release-protocol.md +0 -0
  49. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/README.md +0 -0
  50. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
  51. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/market-brief.md +0 -0
  52. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/positioning-map.md +0 -0
  53. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/swot-analysis.md +0 -0
  54. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
  55. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/literature-matrix.md +0 -0
  56. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/literature-review.md +0 -0
  57. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/search-strategy.md +0 -0
  58. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/reference-repos-absorption.md +0 -0
  59. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/skeleton-completeness-checklist.md +0 -0
  60. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/test-results-report.md +0 -0
  61. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/threat-model.md +0 -0
  62. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/usage-guide.md +0 -0
  63. {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/validation-roadmap.md +0 -0
  64. {petfishframework-0.4.0 → petfishframework-0.4.1}/initialization-report.md +0 -0
  65. {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/README.md +0 -0
  66. {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/connection-checklist.md +0 -0
  67. {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/mcp-config.example.json +0 -0
  68. {petfishframework-0.4.0 → petfishframework-0.4.1}/opencode.json +0 -0
  69. {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/code-review-checklist.md +0 -0
  70. {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/qa-review.md +0 -0
  71. {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/qc-gate-decision.md +0 -0
  72. {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/test-plan.md +0 -0
  73. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/config.py +0 -0
  74. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/__init__.py +0 -0
  75. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/agent.py +0 -0
  76. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/compiled.py +0 -0
  77. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/contracts.py +0 -0
  78. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/conversation.py +0 -0
  79. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/environment.py +0 -0
  80. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/events.py +0 -0
  81. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/session.py +0 -0
  82. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/structured.py +0 -0
  83. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/types.py +0 -0
  84. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/__init__.py +0 -0
  85. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/broker.py +0 -0
  86. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/token.py +0 -0
  87. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/vault_adapter.py +0 -0
  88. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/__init__.py +0 -0
  89. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/client.py +0 -0
  90. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/server.py +0 -0
  91. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/stdio_transport.py +0 -0
  92. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/wrapper.py +0 -0
  93. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/__init__.py +0 -0
  94. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/anthropic.py +0 -0
  95. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/fake.py +0 -0
  96. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/openai.py +0 -0
  97. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/otel_sink.py +0 -0
  98. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/sinks.py +0 -0
  99. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/permissions/__init__.py +0 -0
  100. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/permissions/model.py +0 -0
  101. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/__init__.py +0 -0
  102. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/conditions.py +0 -0
  103. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/engine.py +0 -0
  104. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/rule.py +0 -0
  105. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/test_runner.py +0 -0
  106. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/validator.py +0 -0
  107. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/__init__.py +0 -0
  108. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/lats.py +0 -0
  109. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
  110. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/react.py +0 -0
  111. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/__init__.py +0 -0
  112. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/audit_report.py +0 -0
  113. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/cost.py +0 -0
  114. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/cost_report.py +0 -0
  115. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/pass_at_k.py +0 -0
  116. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/replay.py +0 -0
  117. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/retry.py +0 -0
  118. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/timeout.py +0 -0
  119. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/__init__.py +0 -0
  120. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/adaptive.py +0 -0
  121. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/crag.py +0 -0
  122. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/memory_store.py +0 -0
  123. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/__init__.py +0 -0
  124. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/agent_tool.py +0 -0
  125. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/base.py +0 -0
  126. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/calculator.py +0 -0
  127. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/path_planner.py +0 -0
  128. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/registry.py +0 -0
  129. {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/word_sorter.py +0 -0
  130. {petfishframework-0.4.0 → petfishframework-0.4.1}/tasks/backlog.md +0 -0
  131. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/__init__.py +0 -0
  132. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/test_anthropic_integration.py +0 -0
  133. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/test_openai_integration.py +0 -0
  134. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/policies/enterprise-expense.tests.yaml +0 -0
  135. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_agent_tool.py +0 -0
  136. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_anthropic_adapter.py +0 -0
  137. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_agent_lifecycle.py +0 -0
  138. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_edge_cases.py +0 -0
  139. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_integration.py +0 -0
  140. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_public_surface.py +0 -0
  141. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_type_safety.py +0 -0
  142. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_async.py +0 -0
  143. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_audit_report_v2.py +0 -0
  144. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_conversation.py +0 -0
  145. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_credential_broker.py +0 -0
  146. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_credential_integration.py +0 -0
  147. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_degrade.py +0 -0
  148. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_degrade_failclosed.py +0 -0
  149. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_enterprise_demo.py +0 -0
  150. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_m2_m3_m4.py +0 -0
  151. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_mcp.py +0 -0
  152. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_openai_adapter.py +0 -0
  153. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_otel_sink.py +0 -0
  154. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_pass_at_k.py +0 -0
  155. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_permission_semantics.py +0 -0
  156. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_quickstart_smoke.py +0 -0
  157. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay.py +0 -0
  158. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay_rerun.py +0 -0
  159. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay_resume.py +0 -0
  160. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_retrieval.py +0 -0
  161. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_retry.py +0 -0
  162. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_skeleton.py +0 -0
  163. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_stdio_transport.py +0 -0
  164. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_streaming.py +0 -0
  165. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_structured.py +0 -0
  166. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_tool_registry.py +0 -0
  167. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v016_semantics.py +0 -0
  168. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v018.py +0 -0
  169. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v019.py +0 -0
  170. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_interface_compatibility.py +0 -0
  171. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_lats.py +0 -0
  172. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_llm_plus_p.py +0 -0
  173. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_vault_adapter.py +0 -0
  174. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_yaml_policy.py +0 -0
  175. {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_yaml_policy_suite.py +0 -0
@@ -63,6 +63,10 @@ tasks/ 任务与 backlog
63
63
  规则:每条必须是"违反会导致 bug,且代码本身无法自解释"的约束;上限 10 条。
64
64
  -->
65
65
 
66
+ 1. **Release 版本号 grep checklist** — 每次发布前必须 grep 旧版本号。`SECURITY.md` 的 Supported Versions 表是版本敏感文件,但 `pre_release.py` 不检查它。发布前手动执行 `grep -rn "0\.[0-9]\+\.x" SECURITY.md` 确认当前版本。遗漏会导致外部安全审计认为项目维护停滞。
67
+ 2. **新模块必须同步 `__init__.py` 导出** — 新增 `src/petfishframework/<module>/<sub>.py` 时,必须同时在 `<module>/__init__.py` 的 `__all__` 和 import 中添加导出。否则用户无法从包顶层导入,只能走子模块路径,违反 Python 包惯例。OTelSink/SIEMSink 在 v0.4.0 发布时遗漏了此步骤。
68
+ 3. **Docker ENTRYPOINT 必须有对应的 `__main__.py`** — Dockerfile 中 `ENTRYPOINT ["python", "-m", "petfishframework"]` 要求 `src/petfishframework/__main__.py` 存在且 `main()` 返回 int 退出码。没有 `__main__.py` 时容器启动直接 crash,且 CI 不构建 Docker 所以不会发现。
69
+
66
70
  ## Architecture Decisions
67
71
 
68
72
  <!-- 重大技术选型和设计决策的简要记录(一句话结论 + 指向 docs/ 下完整 ADR 的链接)。 -->
@@ -2,6 +2,34 @@
2
2
 
3
3
  All notable changes to petfishFramework will be documented in this file.
4
4
 
5
+ ## [0.4.1] — 2026-07-08
6
+
7
+ ### Review Fix Patch
8
+
9
+ #### Security & Version Hygiene
10
+ - `SECURITY.md` Supported Versions updated from `0.2.x` to `0.4.x` active + `0.3.x` security fixes only
11
+ - `AGENTS.md` Development Gotchas filled with 3 prevention rules (version grep, `__init__.py` export, Docker entrypoint)
12
+
13
+ #### Observability API
14
+ - `observability/__init__.py` now exports `OTelSink` and `SIEMSink` (previously required submodule import)
15
+ - Updated docstring to reflect actual available sinks
16
+
17
+ #### SIEMSink Enhanced Redaction
18
+ - New `redact_keys` parameter: `SIEMSink(redact_keys=("api_key", "password", ...))`
19
+ - Default redaction: `api_key`, `secret`, `password`, `token`, `authorization`, `cookie`
20
+ - Nested dict key matching (e.g. `connection.password` in `details.redacted_fields`)
21
+ - 3 new TDD tests: default keys, nested keys, custom keys
22
+
23
+ #### Docker Entrypoint Fix
24
+ - Created `src/petfishframework/__main__.py` — `python -m petfishframework` now works
25
+ - Docker container `ENTRYPOINT` no longer crashes on start
26
+ - 2 new TDD tests verifying exit code and output
27
+
28
+ #### README
29
+ - Core Concepts table: "RERUN + RESUME planned" → available
30
+ - Added Observability (OTel + SIEM) section with code example
31
+ - Test count badge updated to 305
32
+
5
33
  ## [0.4.0] — 2026-07-08
6
34
 
7
35
  ### v0.4.0 Production Foundation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: petfishframework
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: A lightweight runtime framework for reliable, auditable, budget-aware, and permission-aware AI agents.
5
5
  Project-URL: Homepage, https://github.com/kylecui/petfishFramework
6
6
  Project-URL: Documentation, https://github.com/kylecui/petfishFramework/tree/master/docs
@@ -39,7 +39,7 @@ Description-Content-Type: text/markdown
39
39
 
40
40
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
41
41
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/kylecui/petfishFramework/blob/master/LICENSE)
42
- [![Tests: 300](https://img.shields.io/badge/tests-300-brightgreen.svg)](https://github.com/kylecui/petfishFramework/tree/master/tests/)
42
+ [![Tests: 305](https://img.shields.io/badge/tests-305-brightgreen.svg)](https://github.com/kylecui/petfishFramework/tree/master/tests/)
43
43
 
44
44
  **Status: Alpha** — API may change. Core runtime works; see [Roadmap](#roadmap).
45
45
 
@@ -192,7 +192,7 @@ print(result.summary())
192
192
  | **Environment** | Single chokepoint (all calls audited, budget-metered, permission-gated) |
193
193
  | **Budget** | Hard execution limits (tokens, cost, steps, tool calls) |
194
194
  | **Permission** | SARC access control with 6 DecisionEffects |
195
- | **Replay** | AUDIT event log available; RERUN + RESUME planned |
195
+ | **Replay** | AUDIT event log via `session.replay()`; RERUN + RESUME via `reliability.replay` wrappers |
196
196
  | **Pass^k** | Reliability metric (k repetitions + perturbation suite) |
197
197
 
198
198
  ## Features
@@ -249,6 +249,22 @@ agent = Agent(model=model, reasoning=ReAct(), tools=tools, credential_broker=bro
249
249
  # Tools with requires_credentials=True receive a ScopedToken (repr-safe, auto-expiring)
250
250
  ```
251
251
 
252
+ ## Observability (OTel + SIEM)
253
+
254
+ ```python
255
+ from petfishframework.observability import OTelSink, SIEMSink
256
+
257
+ # OTel — creates spans for model/tool/session events (requires opentelemetry)
258
+ otel_sink = OTelSink() # no-op if opentelemetry not installed
259
+
260
+ # SIEM — structured JSON-Lines export for downstream SIEM ingestion
261
+ siem_sink = SIEMSink(output_path="audit.jsonl")
262
+ # Credentials auto-redacted; configure additional secret fields:
263
+ # siem_sink = SIEMSink(output_path="audit.jsonl", redact_keys=("api_key", "password"))
264
+
265
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, event_sinks=(otel_sink, siem_sink))
266
+ ```
267
+
252
268
  ## Roadmap
253
269
 
254
270
  - **v0.2.x**: Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
@@ -284,7 +300,7 @@ petfishFramework is **Alpha**. API may change before v1.0.
284
300
  git clone https://github.com/kylecui/petfishFramework.git
285
301
  cd petfishFramework
286
302
  uv sync --all-extras
287
- uv run pytest # 300 tests
303
+ uv run pytest # 305 tests
288
304
  uv run ruff check src/ tests/
289
305
  ```
290
306
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/kylecui/petfishFramework/blob/master/LICENSE)
7
- [![Tests: 300](https://img.shields.io/badge/tests-300-brightgreen.svg)](https://github.com/kylecui/petfishFramework/tree/master/tests/)
7
+ [![Tests: 305](https://img.shields.io/badge/tests-305-brightgreen.svg)](https://github.com/kylecui/petfishFramework/tree/master/tests/)
8
8
 
9
9
  **Status: Alpha** — API may change. Core runtime works; see [Roadmap](#roadmap).
10
10
 
@@ -157,7 +157,7 @@ print(result.summary())
157
157
  | **Environment** | Single chokepoint (all calls audited, budget-metered, permission-gated) |
158
158
  | **Budget** | Hard execution limits (tokens, cost, steps, tool calls) |
159
159
  | **Permission** | SARC access control with 6 DecisionEffects |
160
- | **Replay** | AUDIT event log available; RERUN + RESUME planned |
160
+ | **Replay** | AUDIT event log via `session.replay()`; RERUN + RESUME via `reliability.replay` wrappers |
161
161
  | **Pass^k** | Reliability metric (k repetitions + perturbation suite) |
162
162
 
163
163
  ## Features
@@ -214,6 +214,22 @@ agent = Agent(model=model, reasoning=ReAct(), tools=tools, credential_broker=bro
214
214
  # Tools with requires_credentials=True receive a ScopedToken (repr-safe, auto-expiring)
215
215
  ```
216
216
 
217
+ ## Observability (OTel + SIEM)
218
+
219
+ ```python
220
+ from petfishframework.observability import OTelSink, SIEMSink
221
+
222
+ # OTel — creates spans for model/tool/session events (requires opentelemetry)
223
+ otel_sink = OTelSink() # no-op if opentelemetry not installed
224
+
225
+ # SIEM — structured JSON-Lines export for downstream SIEM ingestion
226
+ siem_sink = SIEMSink(output_path="audit.jsonl")
227
+ # Credentials auto-redacted; configure additional secret fields:
228
+ # siem_sink = SIEMSink(output_path="audit.jsonl", redact_keys=("api_key", "password"))
229
+
230
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, event_sinks=(otel_sink, siem_sink))
231
+ ```
232
+
217
233
  ## Roadmap
218
234
 
219
235
  - **v0.2.x**: Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
@@ -249,7 +265,7 @@ petfishFramework is **Alpha**. API may change before v1.0.
249
265
  git clone https://github.com/kylecui/petfishFramework.git
250
266
  cd petfishFramework
251
267
  uv sync --all-extras
252
- uv run pytest # 300 tests
268
+ uv run pytest # 305 tests
253
269
  uv run ruff check src/ tests/
254
270
  ```
255
271
 
@@ -2,10 +2,11 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- | Version | Supported |
6
- |---------|--------------------|
7
- | 0.2.x | ✅ Active development |
8
- | < 0.2 | Not supported |
5
+ | Version | Supported |
6
+ |---------|------------------------|
7
+ | 0.4.x | ✅ Active development |
8
+ | 0.3.x | ⚠️ Security fixes only |
9
+ | < 0.3 | ❌ Not supported |
9
10
 
10
11
  ## Reporting a Vulnerability
11
12
 
@@ -1,6 +1,6 @@
1
1
  # petfishFramework API Reference
2
2
 
3
- This document is the authoritative reference for the public API of petfishFramework v0.4.0. Every signature, field, and example below is derived from the source code and from the tests that exercise it.
3
+ This document is the authoritative reference for the public API of petfishFramework v0.4.1. Every signature, field, and example below is derived from the source code and from the tests that exercise it.
4
4
 
5
5
  ## 1. Overview
6
6