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.
- {petfishframework-0.4.0 → petfishframework-0.4.1}/AGENTS.md +4 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/CHANGELOG.md +28 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/PKG-INFO +20 -4
- {petfishframework-0.4.0 → petfishframework-0.4.1}/README.md +19 -3
- {petfishframework-0.4.0 → petfishframework-0.4.1}/SECURITY.md +5 -4
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/api.md +1 -1
- petfishframework-0.4.1/docs/feedbacks/petfishframework_v0_4_0_review.md +830 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/pyproject.toml +1 -1
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/__init__.py +1 -1
- petfishframework-0.4.1/src/petfishframework/__main__.py +28 -0
- petfishframework-0.4.1/src/petfishframework/observability/__init__.py +15 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/siem_sink.py +56 -12
- petfishframework-0.4.1/tests/test_main_entry.py +30 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_siem_export.py +92 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/uv.lock +1 -1
- petfishframework-0.4.0/src/petfishframework/observability/__init__.py +0 -10
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.env.example +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.github/workflows/ci.yml +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.github/workflows/publish.yml +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.gitignore +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.1.6-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.2.0-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.3.0-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/.sisyphus/plans/v0.4.0-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/AGENTS.md.new +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/CONTRIBUTING.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/Dockerfile +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/LICENSE +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/conftest.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docker-compose.yml +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/architecture.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/benchmark-results.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/deployment.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/development-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/development.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/enterprise-expense-demo.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_2_1_review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/feedbacks/archives/petfishframework_v0_2_2_review.md +0 -0
- {petfishframework-0.4.0/docs/feedbacks → petfishframework-0.4.1/docs/feedbacks/archives}/petfishframework_v0_3_0_review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/release-checklist.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/release-protocol.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/README.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/market-brief.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/positioning-map.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/competitor-analysis/swot-analysis.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/literature-matrix.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/literature-review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/literature-review/search-strategy.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/research/reference-repos-absorption.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/skeleton-completeness-checklist.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/test-results-report.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/threat-model.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/usage-guide.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/docs/validation-roadmap.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/initialization-report.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/README.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/connection-checklist.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/mcp/mcp-config.example.json +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/opencode.json +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/code-review-checklist.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/qa-review.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/qc-gate-decision.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/qa/test-plan.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/config.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/agent.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/compiled.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/contracts.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/conversation.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/environment.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/events.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/session.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/structured.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/core/types.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/broker.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/token.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/credentials/vault_adapter.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/client.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/server.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/stdio_transport.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/mcp/wrapper.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/anthropic.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/fake.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/models/openai.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/otel_sink.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/observability/sinks.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/permissions/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/permissions/model.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/conditions.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/engine.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/rule.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/test_runner.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/policies/validator.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/lats.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reasoning/react.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/audit_report.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/cost.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/cost_report.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/pass_at_k.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/replay.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/retry.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/reliability/timeout.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/adaptive.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/crag.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/retrieval/memory_store.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/agent_tool.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/base.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/calculator.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/path_planner.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/registry.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/src/petfishframework/tools/word_sorter.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tasks/backlog.md +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/__init__.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/test_anthropic_integration.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/integration/test_openai_integration.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/policies/enterprise-expense.tests.yaml +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_agent_tool.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_anthropic_adapter.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_agent_lifecycle.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_edge_cases.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_integration.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_public_surface.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_api_type_safety.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_async.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_audit_report_v2.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_conversation.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_credential_broker.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_credential_integration.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_degrade.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_degrade_failclosed.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_enterprise_demo.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_m2_m3_m4.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_mcp.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_openai_adapter.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_otel_sink.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_pass_at_k.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_permission_semantics.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_quickstart_smoke.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay_rerun.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_replay_resume.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_retrieval.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_retry.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_skeleton.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_stdio_transport.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_streaming.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_structured.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_tool_registry.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v016_semantics.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v018.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v019.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_interface_compatibility.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_lats.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_v2_llm_plus_p.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_vault_adapter.py +0 -0
- {petfishframework-0.4.0 → petfishframework-0.4.1}/tests/test_yaml_policy.py +0 -0
- {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.
|
|
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
|
[](https://www.python.org/downloads/)
|
|
41
41
|
[](https://github.com/kylecui/petfishFramework/blob/master/LICENSE)
|
|
42
|
-
[](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
|
|
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 #
|
|
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
|
[](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
|
|
|
@@ -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
|
|
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 #
|
|
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.
|
|
8
|
-
|
|
|
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.
|
|
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
|
|