petfishframework 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.
- {petfishframework-0.3.0 → petfishframework-0.3.2}/PKG-INFO +34 -6
- {petfishframework-0.3.0 → petfishframework-0.3.2}/README.md +33 -5
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/api.md +1 -1
- petfishframework-0.3.2/docs/feedbacks/petfishframework_v0_3_0_review.md +879 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/pyproject.toml +1 -1
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/__init__.py +1 -1
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/agent.py +2 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/environment.py +18 -3
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/session.py +19 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/credentials/broker.py +34 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/credentials/token.py +28 -3
- petfishframework-0.3.2/src/petfishframework/policies/conditions.py +436 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/policies/engine.py +4 -1
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/policies/rule.py +4 -1
- petfishframework-0.3.2/src/petfishframework/policies/validator.py +100 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/base.py +1 -1
- petfishframework-0.3.2/tests/test_credential_broker.py +231 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_credential_integration.py +1 -1
- petfishframework-0.3.2/tests/test_yaml_policy.py +650 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/uv.lock +1 -1
- petfishframework-0.3.0/src/petfishframework/policies/conditions.py +0 -176
- petfishframework-0.3.0/tests/test_credential_broker.py +0 -81
- petfishframework-0.3.0/tests/test_yaml_policy.py +0 -325
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.env.example +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.github/workflows/ci.yml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.github/workflows/publish.yml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.gitignore +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.sisyphus/plans/v0.1.6-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.sisyphus/plans/v0.2.0-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/.sisyphus/plans/v0.3.0-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/AGENTS.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/AGENTS.md.new +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/CHANGELOG.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/CONTRIBUTING.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/LICENSE +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/SECURITY.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/conftest.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/architecture.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/benchmark-results.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/development-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/development.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/enterprise-expense-demo.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/release-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/competitor-analysis/README.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/competitor-analysis/market-brief.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/competitor-analysis/positioning-map.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/competitor-analysis/swot-analysis.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/literature-review/literature-matrix.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/literature-review/literature-review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/literature-review/search-strategy.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/research/reference-repos-absorption.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/skeleton-completeness-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/test-results-report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/usage-guide.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/docs/validation-roadmap.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/initialization-report.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/mcp/README.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/mcp/connection-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/mcp/mcp-config.example.json +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/opencode.json +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/qa/code-review-checklist.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/qa/qa-review.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/qa/qc-gate-decision.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/qa/test-plan.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/config.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/compiled.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/contracts.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/conversation.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/events.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/structured.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/core/types.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/credentials/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/mcp/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/mcp/client.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/mcp/server.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/mcp/stdio_transport.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/mcp/wrapper.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/models/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/models/anthropic.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/models/fake.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/models/openai.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/observability/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/observability/sinks.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/permissions/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/permissions/model.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/policies/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/policies/test_runner.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reasoning/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reasoning/lats.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reasoning/react.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/audit_report.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/cost.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/cost_report.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/pass_at_k.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/replay.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/retry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/reliability/timeout.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/retrieval/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/retrieval/adaptive.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/retrieval/crag.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/retrieval/memory_store.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/agent_tool.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/calculator.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/path_planner.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/registry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/src/petfishframework/tools/word_sorter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tasks/backlog.md +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/integration/__init__.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/integration/test_anthropic_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/integration/test_openai_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/policies/enterprise-expense.tests.yaml +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_agent_tool.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_anthropic_adapter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_api_agent_lifecycle.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_api_edge_cases.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_api_integration.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_api_public_surface.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_api_type_safety.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_async.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_audit_report_v2.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_conversation.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_degrade.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_degrade_failclosed.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_enterprise_demo.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_m2_m3_m4.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_mcp.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_openai_adapter.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_pass_at_k.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_permission_semantics.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_quickstart_smoke.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_replay.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_retrieval.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_retry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_skeleton.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_stdio_transport.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_streaming.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_structured.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_tool_registry.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v016_semantics.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v018.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v019.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v2_interface_compatibility.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v2_lats.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/tests/test_v2_llm_plus_p.py +0 -0
- {petfishframework-0.3.0 → petfishframework-0.3.2}/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.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
|
|
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
|
|
35
35
|
[](https://www.python.org/downloads/)
|
|
36
36
|
[](https://github.com/kylecui/petfishFramework/blob/master/LICENSE)
|
|
37
|
-
[](https://github.com/kylecui/petfishFramework/tree/master/tests/)
|
|
38
38
|
|
|
39
39
|
**Status: Alpha** — API may change. Core runtime works; see [Roadmap](#roadmap).
|
|
40
40
|
|
|
@@ -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
|
|
@@ -251,7 +279,7 @@ petfishFramework is **Alpha**. API may change before v1.0.
|
|
|
251
279
|
git clone https://github.com/kylecui/petfishFramework.git
|
|
252
280
|
cd petfishFramework
|
|
253
281
|
uv sync --all-extras
|
|
254
|
-
uv run pytest #
|
|
282
|
+
uv run pytest # 284 tests
|
|
255
283
|
uv run ruff check src/ tests/
|
|
256
284
|
```
|
|
257
285
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.python.org/downloads/)
|
|
6
6
|
[](https://github.com/kylecui/petfishFramework/blob/master/LICENSE)
|
|
7
|
-
[](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
|
|
|
@@ -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
|
|
@@ -221,7 +249,7 @@ petfishFramework is **Alpha**. API may change before v1.0.
|
|
|
221
249
|
git clone https://github.com/kylecui/petfishFramework.git
|
|
222
250
|
cd petfishFramework
|
|
223
251
|
uv sync --all-extras
|
|
224
|
-
uv run pytest #
|
|
252
|
+
uv run pytest # 284 tests
|
|
225
253
|
uv run ruff check src/ tests/
|
|
226
254
|
```
|
|
227
255
|
|
|
@@ -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.
|
|
3
|
+
This document is the authoritative reference for the public API of `petfishFramework` v0.3.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
|
|