petfishframework 0.4.1__tar.gz → 0.4.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 (176) hide show
  1. petfishframework-0.4.2/.gitattributes +11 -0
  2. {petfishframework-0.4.1 → petfishframework-0.4.2}/.github/workflows/ci.yml +12 -0
  3. {petfishframework-0.4.1 → petfishframework-0.4.2}/CHANGELOG.md +25 -0
  4. {petfishframework-0.4.1 → petfishframework-0.4.2}/PKG-INFO +8 -2
  5. {petfishframework-0.4.1 → petfishframework-0.4.2}/README.md +7 -1
  6. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/api.md +1 -1
  7. petfishframework-0.4.2/docs/feedbacks/petfishframework_v0_4_1_review.md +704 -0
  8. {petfishframework-0.4.1 → petfishframework-0.4.2}/pyproject.toml +1 -1
  9. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/__init__.py +1 -1
  10. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/observability/siem_sink.py +12 -0
  11. {petfishframework-0.4.1 → petfishframework-0.4.2}/uv.lock +1 -1
  12. {petfishframework-0.4.1 → petfishframework-0.4.2}/.env.example +0 -0
  13. {petfishframework-0.4.1 → petfishframework-0.4.2}/.github/workflows/publish.yml +0 -0
  14. {petfishframework-0.4.1 → petfishframework-0.4.2}/.gitignore +0 -0
  15. {petfishframework-0.4.1 → petfishframework-0.4.2}/.sisyphus/plans/v0.1.6-plan.md +0 -0
  16. {petfishframework-0.4.1 → petfishframework-0.4.2}/.sisyphus/plans/v0.2.0-plan.md +0 -0
  17. {petfishframework-0.4.1 → petfishframework-0.4.2}/.sisyphus/plans/v0.3.0-plan.md +0 -0
  18. {petfishframework-0.4.1 → petfishframework-0.4.2}/.sisyphus/plans/v0.4.0-plan.md +0 -0
  19. {petfishframework-0.4.1 → petfishframework-0.4.2}/AGENTS.md +0 -0
  20. {petfishframework-0.4.1 → petfishframework-0.4.2}/AGENTS.md.new +0 -0
  21. {petfishframework-0.4.1 → petfishframework-0.4.2}/CONTRIBUTING.md +0 -0
  22. {petfishframework-0.4.1 → petfishframework-0.4.2}/Dockerfile +0 -0
  23. {petfishframework-0.4.1 → petfishframework-0.4.2}/LICENSE +0 -0
  24. {petfishframework-0.4.1 → petfishframework-0.4.2}/SECURITY.md +0 -0
  25. {petfishframework-0.4.1 → petfishframework-0.4.2}/conftest.py +0 -0
  26. {petfishframework-0.4.1 → petfishframework-0.4.2}/docker-compose.yml +0 -0
  27. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/architecture.md +0 -0
  28. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/benchmark-results.md +0 -0
  29. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/deployment.md +0 -0
  30. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/development-plan.md +0 -0
  31. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/development.md +0 -0
  32. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/enterprise-expense-demo.md +0 -0
  33. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
  34. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
  35. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
  36. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
  37. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
  38. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
  39. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
  40. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
  41. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
  42. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/feedbacks/archives/petfishframework_v0_3_0_review.md +0 -0
  43. {petfishframework-0.4.1/docs/feedbacks → petfishframework-0.4.2/docs/feedbacks/archives}/petfishframework_v0_4_0_review.md +0 -0
  44. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/release-checklist.md +0 -0
  45. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/release-protocol.md +0 -0
  46. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/competitor-analysis/README.md +0 -0
  47. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
  48. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/competitor-analysis/market-brief.md +0 -0
  49. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/competitor-analysis/positioning-map.md +0 -0
  50. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/competitor-analysis/swot-analysis.md +0 -0
  51. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
  52. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/literature-review/literature-matrix.md +0 -0
  53. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/literature-review/literature-review.md +0 -0
  54. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/literature-review/search-strategy.md +0 -0
  55. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/research/reference-repos-absorption.md +0 -0
  56. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/skeleton-completeness-checklist.md +0 -0
  57. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/test-results-report.md +0 -0
  58. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/threat-model.md +0 -0
  59. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/usage-guide.md +0 -0
  60. {petfishframework-0.4.1 → petfishframework-0.4.2}/docs/validation-roadmap.md +0 -0
  61. {petfishframework-0.4.1 → petfishframework-0.4.2}/initialization-report.md +0 -0
  62. {petfishframework-0.4.1 → petfishframework-0.4.2}/mcp/README.md +0 -0
  63. {petfishframework-0.4.1 → petfishframework-0.4.2}/mcp/connection-checklist.md +0 -0
  64. {petfishframework-0.4.1 → petfishframework-0.4.2}/mcp/mcp-config.example.json +0 -0
  65. {petfishframework-0.4.1 → petfishframework-0.4.2}/opencode.json +0 -0
  66. {petfishframework-0.4.1 → petfishframework-0.4.2}/qa/code-review-checklist.md +0 -0
  67. {petfishframework-0.4.1 → petfishframework-0.4.2}/qa/qa-review.md +0 -0
  68. {petfishframework-0.4.1 → petfishframework-0.4.2}/qa/qc-gate-decision.md +0 -0
  69. {petfishframework-0.4.1 → petfishframework-0.4.2}/qa/test-plan.md +0 -0
  70. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/__main__.py +0 -0
  71. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/config.py +0 -0
  72. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/__init__.py +0 -0
  73. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/agent.py +0 -0
  74. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/compiled.py +0 -0
  75. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/contracts.py +0 -0
  76. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/conversation.py +0 -0
  77. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/environment.py +0 -0
  78. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/events.py +0 -0
  79. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/session.py +0 -0
  80. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/structured.py +0 -0
  81. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/core/types.py +0 -0
  82. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/credentials/__init__.py +0 -0
  83. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/credentials/broker.py +0 -0
  84. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/credentials/token.py +0 -0
  85. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/credentials/vault_adapter.py +0 -0
  86. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/mcp/__init__.py +0 -0
  87. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/mcp/client.py +0 -0
  88. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/mcp/server.py +0 -0
  89. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/mcp/stdio_transport.py +0 -0
  90. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/mcp/wrapper.py +0 -0
  91. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/models/__init__.py +0 -0
  92. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/models/anthropic.py +0 -0
  93. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/models/fake.py +0 -0
  94. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/models/openai.py +0 -0
  95. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/observability/__init__.py +0 -0
  96. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/observability/otel_sink.py +0 -0
  97. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/observability/sinks.py +0 -0
  98. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/permissions/__init__.py +0 -0
  99. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/permissions/model.py +0 -0
  100. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/__init__.py +0 -0
  101. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/conditions.py +0 -0
  102. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/engine.py +0 -0
  103. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/rule.py +0 -0
  104. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/test_runner.py +0 -0
  105. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/policies/validator.py +0 -0
  106. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reasoning/__init__.py +0 -0
  107. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reasoning/lats.py +0 -0
  108. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
  109. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reasoning/react.py +0 -0
  110. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/__init__.py +0 -0
  111. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/audit_report.py +0 -0
  112. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/cost.py +0 -0
  113. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/cost_report.py +0 -0
  114. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/pass_at_k.py +0 -0
  115. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/replay.py +0 -0
  116. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/retry.py +0 -0
  117. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/reliability/timeout.py +0 -0
  118. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/retrieval/__init__.py +0 -0
  119. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/retrieval/adaptive.py +0 -0
  120. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/retrieval/crag.py +0 -0
  121. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/retrieval/memory_store.py +0 -0
  122. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/__init__.py +0 -0
  123. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/agent_tool.py +0 -0
  124. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/base.py +0 -0
  125. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/calculator.py +0 -0
  126. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/path_planner.py +0 -0
  127. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/registry.py +0 -0
  128. {petfishframework-0.4.1 → petfishframework-0.4.2}/src/petfishframework/tools/word_sorter.py +0 -0
  129. {petfishframework-0.4.1 → petfishframework-0.4.2}/tasks/backlog.md +0 -0
  130. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/integration/__init__.py +0 -0
  131. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/integration/test_anthropic_integration.py +0 -0
  132. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/integration/test_openai_integration.py +0 -0
  133. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/policies/enterprise-expense.tests.yaml +0 -0
  134. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_agent_tool.py +0 -0
  135. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_anthropic_adapter.py +0 -0
  136. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_api_agent_lifecycle.py +0 -0
  137. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_api_edge_cases.py +0 -0
  138. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_api_integration.py +0 -0
  139. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_api_public_surface.py +0 -0
  140. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_api_type_safety.py +0 -0
  141. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_async.py +0 -0
  142. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_audit_report_v2.py +0 -0
  143. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_conversation.py +0 -0
  144. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_credential_broker.py +0 -0
  145. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_credential_integration.py +0 -0
  146. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_degrade.py +0 -0
  147. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_degrade_failclosed.py +0 -0
  148. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_enterprise_demo.py +0 -0
  149. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_m2_m3_m4.py +0 -0
  150. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_main_entry.py +0 -0
  151. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_mcp.py +0 -0
  152. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_openai_adapter.py +0 -0
  153. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_otel_sink.py +0 -0
  154. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_pass_at_k.py +0 -0
  155. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_permission_semantics.py +0 -0
  156. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_quickstart_smoke.py +0 -0
  157. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_replay.py +0 -0
  158. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_replay_rerun.py +0 -0
  159. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_replay_resume.py +0 -0
  160. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_retrieval.py +0 -0
  161. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_retry.py +0 -0
  162. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_siem_export.py +0 -0
  163. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_skeleton.py +0 -0
  164. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_stdio_transport.py +0 -0
  165. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_streaming.py +0 -0
  166. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_structured.py +0 -0
  167. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_tool_registry.py +0 -0
  168. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v016_semantics.py +0 -0
  169. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v018.py +0 -0
  170. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v019.py +0 -0
  171. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v2_interface_compatibility.py +0 -0
  172. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v2_lats.py +0 -0
  173. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_v2_llm_plus_p.py +0 -0
  174. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_vault_adapter.py +0 -0
  175. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_yaml_policy.py +0 -0
  176. {petfishframework-0.4.1 → petfishframework-0.4.2}/tests/test_yaml_policy_suite.py +0 -0
@@ -0,0 +1,11 @@
1
+ # Normalize line endings across platforms — all text files use LF in the repo
2
+ * text=auto eol=lf
3
+
4
+ # Binary files — never touch
5
+ *.png binary
6
+ *.jpg binary
7
+ *.jpeg binary
8
+ *.gif binary
9
+ *.ico binary
10
+ *.pdf binary
11
+ *.drawio binary
@@ -31,3 +31,15 @@ jobs:
31
31
  - name: Run tests
32
32
  run: uv run pytest tests/ -q --tb=short
33
33
  # Integration tests are skipped automatically (no API key in CI)
34
+
35
+ docker-smoke:
36
+ runs-on: ubuntu-latest
37
+ needs: test
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+
41
+ - name: Build Docker image
42
+ run: docker build -t petfishframework .
43
+
44
+ - name: Run container smoke test
45
+ run: docker run --rm petfishframework
@@ -2,6 +2,31 @@
2
2
 
3
3
  All notable changes to petfishFramework will be documented in this file.
4
4
 
5
+ ## [0.4.2] — 2026-07-08
6
+
7
+ ### CI & Deployment Hardening
8
+
9
+ #### Docker Smoke Test in CI
10
+ - New `docker-smoke` job in CI workflow: builds image and runs container
11
+ - Catches `__main__.py` / ENTRYPOINT regressions before release
12
+
13
+ #### Line Ending Normalization
14
+ - Added `.gitattributes` with `* text=auto eol=lf`
15
+ - All text files now use LF consistently across platforms
16
+
17
+ #### SIEMSink Documentation
18
+ - Docstring now explicitly states key-based redaction is not a DLP engine
19
+ - Clarifies that value-pattern secrets (sk-..., JWTs) are not detected
20
+ - Documents default redact_keys and nesting behavior
21
+
22
+ #### Observability Example
23
+ - New `examples/06_observability.py`: ListSink, ConsoleSink, SIEMSink, OTelSink demo
24
+ - Shows correct sink attachment via `session.events.subscribe()`
25
+ - Demonstrates custom `redact_keys` with nested field redaction
26
+
27
+ #### README Fix
28
+ - Observability example corrected: uses `session.events.subscribe()` instead of non-existent `event_sinks=` parameter
29
+
5
30
  ## [0.4.1] — 2026-07-08
6
31
 
7
32
  ### Review Fix Patch
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: petfishframework
3
- Version: 0.4.1
3
+ Version: 0.4.2
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
@@ -262,7 +262,13 @@ siem_sink = SIEMSink(output_path="audit.jsonl")
262
262
  # Credentials auto-redacted; configure additional secret fields:
263
263
  # siem_sink = SIEMSink(output_path="audit.jsonl", redact_keys=("api_key", "password"))
264
264
 
265
- agent = Agent(model=model, reasoning=ReAct(), tools=tools, event_sinks=(otel_sink, siem_sink))
265
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools)
266
+
267
+ # Attach sinks to the session's EventEmitter
268
+ session = agent.session("your task")
269
+ session.events.subscribe(otel_sink)
270
+ session.events.subscribe(siem_sink)
271
+ result = session.run()
266
272
  ```
267
273
 
268
274
  ## Roadmap
@@ -227,7 +227,13 @@ siem_sink = SIEMSink(output_path="audit.jsonl")
227
227
  # Credentials auto-redacted; configure additional secret fields:
228
228
  # siem_sink = SIEMSink(output_path="audit.jsonl", redact_keys=("api_key", "password"))
229
229
 
230
- agent = Agent(model=model, reasoning=ReAct(), tools=tools, event_sinks=(otel_sink, siem_sink))
230
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools)
231
+
232
+ # Attach sinks to the session's EventEmitter
233
+ session = agent.session("your task")
234
+ session.events.subscribe(otel_sink)
235
+ session.events.subscribe(siem_sink)
236
+ result = session.run()
231
237
  ```
232
238
 
233
239
  ## Roadmap
@@ -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.1. 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.2. 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