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.
- {petfishframework-0.3.0 → petfishframework-0.3.1}/PKG-INFO +32 -4
- {petfishframework-0.3.0 → petfishframework-0.3.1}/README.md +31 -3
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/api.md +1 -1
- petfishframework-0.3.1/docs/feedbacks/petfishframework_v0_3_0_review.md +879 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/pyproject.toml +1 -1
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/__init__.py +1 -1
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/agent.py +2 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/environment.py +15 -3
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/session.py +3 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_credential_integration.py +1 -1
- {petfishframework-0.3.0 → petfishframework-0.3.1}/uv.lock +5 -5
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.env.example +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.github/workflows/ci.yml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.github/workflows/publish.yml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.gitignore +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.1.6-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.2.0-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/.sisyphus/plans/v0.3.0-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/AGENTS.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/AGENTS.md.new +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/CHANGELOG.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/CONTRIBUTING.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/LICENSE +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/SECURITY.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/conftest.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/architecture.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/benchmark-results.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/development-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/development.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/enterprise-expense-demo.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/release-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/README.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/market-brief.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/positioning-map.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/competitor-analysis/swot-analysis.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/literature-matrix.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/literature-review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/literature-review/search-strategy.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/research/reference-repos-absorption.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/skeleton-completeness-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/test-results-report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/usage-guide.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/docs/validation-roadmap.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/initialization-report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/README.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/connection-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/mcp/mcp-config.example.json +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/opencode.json +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/code-review-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/qa-review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/qc-gate-decision.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/qa/test-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/config.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/compiled.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/contracts.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/conversation.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/events.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/structured.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/core/types.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/broker.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/credentials/token.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/client.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/server.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/stdio_transport.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/mcp/wrapper.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/anthropic.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/fake.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/models/openai.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/observability/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/observability/sinks.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/permissions/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/permissions/model.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/conditions.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/engine.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/rule.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/policies/test_runner.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/lats.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reasoning/react.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/audit_report.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/cost.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/cost_report.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/pass_at_k.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/replay.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/retry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/reliability/timeout.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/adaptive.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/crag.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/retrieval/memory_store.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/agent_tool.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/base.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/calculator.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/path_planner.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/registry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/src/petfishframework/tools/word_sorter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tasks/backlog.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/test_anthropic_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/integration/test_openai_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/policies/enterprise-expense.tests.yaml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_agent_tool.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_anthropic_adapter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_agent_lifecycle.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_edge_cases.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_public_surface.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_api_type_safety.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_async.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_audit_report_v2.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_conversation.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_credential_broker.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_degrade.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_degrade_failclosed.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_enterprise_demo.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_m2_m3_m4.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_mcp.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_openai_adapter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_pass_at_k.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_permission_semantics.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_quickstart_smoke.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_replay.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_retrieval.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_retry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_skeleton.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_stdio_transport.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_streaming.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_structured.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_tool_registry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v016_semantics.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v018.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v019.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_interface_compatibility.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_lats.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_v2_llm_plus_p.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.1}/tests/test_yaml_policy.py +0 -0
- {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.
|
|
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
|
|
221
|
-
- **v0.
|
|
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
|
|
191
|
-
- **v0.
|
|
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.
|
|
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
|
|