petfishframework 0.3.0__tar.gz → 0.3.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 (156) hide show
  1. {petfishframework-0.3.0 → petfishframework-0.3.1}/PKG-INFO +32 -4
  2. {petfishframework-0.3.0 → petfishframework-0.3.1}/README.md +31 -3
  3. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/api.md +1 -1
  4. petfishframework-0.3.1/docs/feedbacks/petfishframework_v0_3_0_review.md +879 -0
  5. {petfishframework-0.3.0 → petfishframework-0.3.1}/pyproject.toml +1 -1
  6. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/__init__.py +1 -1
  7. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/agent.py +2 -0
  8. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/environment.py +15 -3
  9. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/session.py +3 -0
  10. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_credential_integration.py +1 -1
  11. {petfishframework-0.3.0 → petfishframework-0.3.1}/uv.lock +5 -5
  12. {petfishframework-0.3.0 → petfishframework-0.3.1}/.env.example +0 -0
  13. {petfishframework-0.3.0 → petfishframework-0.3.1}/.github/workflows/ci.yml +0 -0
  14. {petfishframework-0.3.0 → petfishframework-0.3.1}/.github/workflows/publish.yml +0 -0
  15. {petfishframework-0.3.0 → petfishframework-0.3.1}/.gitignore +0 -0
  16. {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.1.6-plan.md +0 -0
  17. {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.2.0-plan.md +0 -0
  18. {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.3.0-plan.md +0 -0
  19. {petfishframework-0.3.0 → petfishframework-0.3.1}/AGENTS.md +0 -0
  20. {petfishframework-0.3.0 → petfishframework-0.3.1}/AGENTS.md.new +0 -0
  21. {petfishframework-0.3.0 → petfishframework-0.3.1}/CHANGELOG.md +0 -0
  22. {petfishframework-0.3.0 → petfishframework-0.3.1}/CONTRIBUTING.md +0 -0
  23. {petfishframework-0.3.0 → petfishframework-0.3.1}/LICENSE +0 -0
  24. {petfishframework-0.3.0 → petfishframework-0.3.1}/SECURITY.md +0 -0
  25. {petfishframework-0.3.0 → petfishframework-0.3.1}/conftest.py +0 -0
  26. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/architecture.md +0 -0
  27. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/benchmark-results.md +0 -0
  28. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/development-plan.md +0 -0
  29. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/development.md +0 -0
  30. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/enterprise-expense-demo.md +0 -0
  31. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
  32. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
  33. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
  34. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
  35. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
  36. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
  37. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
  38. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
  39. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
  40. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/release-checklist.md +0 -0
  41. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/README.md +0 -0
  42. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
  43. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/market-brief.md +0 -0
  44. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/positioning-map.md +0 -0
  45. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/swot-analysis.md +0 -0
  46. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
  47. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/literature-matrix.md +0 -0
  48. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/literature-review.md +0 -0
  49. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/search-strategy.md +0 -0
  50. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/reference-repos-absorption.md +0 -0
  51. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/skeleton-completeness-checklist.md +0 -0
  52. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/test-results-report.md +0 -0
  53. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/usage-guide.md +0 -0
  54. {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/validation-roadmap.md +0 -0
  55. {petfishframework-0.3.0 → petfishframework-0.3.1}/initialization-report.md +0 -0
  56. {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/README.md +0 -0
  57. {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/connection-checklist.md +0 -0
  58. {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/mcp-config.example.json +0 -0
  59. {petfishframework-0.3.0 → petfishframework-0.3.1}/opencode.json +0 -0
  60. {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/code-review-checklist.md +0 -0
  61. {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/qa-review.md +0 -0
  62. {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/qc-gate-decision.md +0 -0
  63. {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/test-plan.md +0 -0
  64. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/config.py +0 -0
  65. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/__init__.py +0 -0
  66. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/compiled.py +0 -0
  67. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/contracts.py +0 -0
  68. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/conversation.py +0 -0
  69. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/events.py +0 -0
  70. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/structured.py +0 -0
  71. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/types.py +0 -0
  72. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/__init__.py +0 -0
  73. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/broker.py +0 -0
  74. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/token.py +0 -0
  75. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/__init__.py +0 -0
  76. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/client.py +0 -0
  77. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/server.py +0 -0
  78. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/stdio_transport.py +0 -0
  79. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/wrapper.py +0 -0
  80. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/__init__.py +0 -0
  81. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/anthropic.py +0 -0
  82. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/fake.py +0 -0
  83. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/openai.py +0 -0
  84. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/observability/__init__.py +0 -0
  85. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/observability/sinks.py +0 -0
  86. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/permissions/__init__.py +0 -0
  87. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/permissions/model.py +0 -0
  88. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/__init__.py +0 -0
  89. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/conditions.py +0 -0
  90. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/engine.py +0 -0
  91. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/rule.py +0 -0
  92. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/test_runner.py +0 -0
  93. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/__init__.py +0 -0
  94. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/lats.py +0 -0
  95. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
  96. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/react.py +0 -0
  97. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/__init__.py +0 -0
  98. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/audit_report.py +0 -0
  99. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/cost.py +0 -0
  100. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/cost_report.py +0 -0
  101. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/pass_at_k.py +0 -0
  102. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/replay.py +0 -0
  103. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/retry.py +0 -0
  104. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/timeout.py +0 -0
  105. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/__init__.py +0 -0
  106. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/adaptive.py +0 -0
  107. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/crag.py +0 -0
  108. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/memory_store.py +0 -0
  109. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/__init__.py +0 -0
  110. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/agent_tool.py +0 -0
  111. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/base.py +0 -0
  112. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/calculator.py +0 -0
  113. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/path_planner.py +0 -0
  114. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/registry.py +0 -0
  115. {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/word_sorter.py +0 -0
  116. {petfishframework-0.3.0 → petfishframework-0.3.1}/tasks/backlog.md +0 -0
  117. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/__init__.py +0 -0
  118. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/test_anthropic_integration.py +0 -0
  119. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/test_openai_integration.py +0 -0
  120. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/policies/enterprise-expense.tests.yaml +0 -0
  121. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_agent_tool.py +0 -0
  122. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_anthropic_adapter.py +0 -0
  123. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_agent_lifecycle.py +0 -0
  124. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_edge_cases.py +0 -0
  125. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_integration.py +0 -0
  126. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_public_surface.py +0 -0
  127. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_type_safety.py +0 -0
  128. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_async.py +0 -0
  129. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_audit_report_v2.py +0 -0
  130. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_conversation.py +0 -0
  131. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_credential_broker.py +0 -0
  132. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_degrade.py +0 -0
  133. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_degrade_failclosed.py +0 -0
  134. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_enterprise_demo.py +0 -0
  135. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_m2_m3_m4.py +0 -0
  136. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_mcp.py +0 -0
  137. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_openai_adapter.py +0 -0
  138. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_pass_at_k.py +0 -0
  139. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_permission_semantics.py +0 -0
  140. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_quickstart_smoke.py +0 -0
  141. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_replay.py +0 -0
  142. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_retrieval.py +0 -0
  143. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_retry.py +0 -0
  144. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_skeleton.py +0 -0
  145. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_stdio_transport.py +0 -0
  146. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_streaming.py +0 -0
  147. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_structured.py +0 -0
  148. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_tool_registry.py +0 -0
  149. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v016_semantics.py +0 -0
  150. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v018.py +0 -0
  151. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v019.py +0 -0
  152. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_interface_compatibility.py +0 -0
  153. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_lats.py +0 -0
  154. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_llm_plus_p.py +0 -0
  155. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_yaml_policy.py +0 -0
  156. {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_yaml_policy_suite.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: petfishframework
3
- Version: 0.3.0
3
+ Version: 0.3.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
@@ -215,11 +215,39 @@ See `examples/05_enterprise_expense.py` and `tests/test_enterprise_demo.py` for
215
215
 
216
216
  Run: `python examples/05_enterprise_expense.py`
217
217
 
218
+ ## YAML Policy Engine
219
+
220
+ Configure permissions via YAML instead of Python:
221
+
222
+ ```python
223
+ from petfishframework.policies import YamlPolicy
224
+
225
+ policy = YamlPolicy.from_file("examples/policies/enterprise-expense.yaml")
226
+ policy.register_tools(tools)
227
+
228
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, permission_policy=policy)
229
+ ```
230
+
231
+ Supported conditions: `action.tool_name`, `subject.role_in`, `subject.role_not_in`, `action.args.amount_gt/lt`, `tool.side_effect`, `tool.external_egress`.
232
+
233
+ ## CredentialBroker
234
+
235
+ Tools never hold raw API keys — they receive scoped, time-limited tokens:
236
+
237
+ ```python
238
+ from petfishframework.credentials import CredentialBroker
239
+
240
+ broker = CredentialBroker()
241
+ broker.register_credential("github_tool", os.environ["GITHUB_TOKEN"])
242
+
243
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, credential_broker=broker)
244
+ # Tools with requires_credentials=True receive a ScopedToken (repr-safe, auto-expiring)
245
+ ```
246
+
218
247
  ## Roadmap
219
248
 
220
- - **v0.2.x** (current): Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
221
- - **v0.2.x**: Enterprise agent examples, structured audit reports
222
- - **v0.3.x**: Policy engine (YAML), credential broker ✅
249
+ - **v0.2.x**: Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
250
+ - **v0.3.x** (current): YAML Policy Engine, CredentialBroker
223
251
  - **v0.4.x**: Production hardening, deployment guides
224
252
 
225
253
  ## Current Limitations
@@ -185,11 +185,39 @@ See `examples/05_enterprise_expense.py` and `tests/test_enterprise_demo.py` for
185
185
 
186
186
  Run: `python examples/05_enterprise_expense.py`
187
187
 
188
+ ## YAML Policy Engine
189
+
190
+ Configure permissions via YAML instead of Python:
191
+
192
+ ```python
193
+ from petfishframework.policies import YamlPolicy
194
+
195
+ policy = YamlPolicy.from_file("examples/policies/enterprise-expense.yaml")
196
+ policy.register_tools(tools)
197
+
198
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, permission_policy=policy)
199
+ ```
200
+
201
+ Supported conditions: `action.tool_name`, `subject.role_in`, `subject.role_not_in`, `action.args.amount_gt/lt`, `tool.side_effect`, `tool.external_egress`.
202
+
203
+ ## CredentialBroker
204
+
205
+ Tools never hold raw API keys — they receive scoped, time-limited tokens:
206
+
207
+ ```python
208
+ from petfishframework.credentials import CredentialBroker
209
+
210
+ broker = CredentialBroker()
211
+ broker.register_credential("github_tool", os.environ["GITHUB_TOKEN"])
212
+
213
+ agent = Agent(model=model, reasoning=ReAct(), tools=tools, credential_broker=broker)
214
+ # Tools with requires_credentials=True receive a ScopedToken (repr-safe, auto-expiring)
215
+ ```
216
+
188
217
  ## Roadmap
189
218
 
190
- - **v0.2.x** (current): Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
191
- - **v0.2.x**: Enterprise agent examples, structured audit reports
192
- - **v0.3.x**: Policy engine (YAML), credential broker ✅
219
+ - **v0.2.x**: Core runtime, permission semantics, enterprise PoC, Trusted Publishing ✅
220
+ - **v0.3.x** (current): YAML Policy Engine, CredentialBroker
193
221
  - **v0.4.x**: Production hardening, deployment guides
194
222
 
195
223
  ## Current Limitations
@@ -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.2.5. 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.3.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