petfishframework 0.2.3__tar.gz → 0.2.4__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 (140) hide show
  1. {petfishframework-0.2.3 → petfishframework-0.2.4}/PKG-INFO +1 -1
  2. petfishframework-0.2.4/docs/feedbacks/petfishframework_v0_2_2_review.md +305 -0
  3. {petfishframework-0.2.3 → petfishframework-0.2.4}/pyproject.toml +1 -1
  4. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/__init__.py +1 -1
  5. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/timeout.py +2 -1
  6. {petfishframework-0.2.3 → petfishframework-0.2.4}/uv.lock +1 -1
  7. {petfishframework-0.2.3 → petfishframework-0.2.4}/.env.example +0 -0
  8. {petfishframework-0.2.3 → petfishframework-0.2.4}/.github/workflows/ci.yml +0 -0
  9. {petfishframework-0.2.3 → petfishframework-0.2.4}/.github/workflows/publish.yml +0 -0
  10. {petfishframework-0.2.3 → petfishframework-0.2.4}/.gitignore +0 -0
  11. {petfishframework-0.2.3 → petfishframework-0.2.4}/.sisyphus/plans/v0.1.6-plan.md +0 -0
  12. {petfishframework-0.2.3 → petfishframework-0.2.4}/.sisyphus/plans/v0.2.0-plan.md +0 -0
  13. {petfishframework-0.2.3 → petfishframework-0.2.4}/AGENTS.md +0 -0
  14. {petfishframework-0.2.3 → petfishframework-0.2.4}/AGENTS.md.new +0 -0
  15. {petfishframework-0.2.3 → petfishframework-0.2.4}/CHANGELOG.md +0 -0
  16. {petfishframework-0.2.3 → petfishframework-0.2.4}/CONTRIBUTING.md +0 -0
  17. {petfishframework-0.2.3 → petfishframework-0.2.4}/LICENSE +0 -0
  18. {petfishframework-0.2.3 → petfishframework-0.2.4}/README.md +0 -0
  19. {petfishframework-0.2.3 → petfishframework-0.2.4}/SECURITY.md +0 -0
  20. {petfishframework-0.2.3 → petfishframework-0.2.4}/conftest.py +0 -0
  21. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/api.md +0 -0
  22. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/architecture.md +0 -0
  23. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/benchmark-results.md +0 -0
  24. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/development-plan.md +0 -0
  25. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/development.md +0 -0
  26. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/enterprise-expense-demo.md +0 -0
  27. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_0_1_4_playground_recommendations.md +0 -0
  28. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_playground_report.md +0 -0
  29. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_production_readiness_roadmap.md +0 -0
  30. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_recommendations.md +0 -0
  31. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_v0_1_6_playground_review.md +0 -0
  32. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_v0_1_7_review.md +0 -0
  33. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/feedbacks/archives/petfishframework_v0_1_8_review.md +0 -0
  34. {petfishframework-0.2.3/docs/feedbacks → petfishframework-0.2.4/docs/feedbacks/archives}/petfishframework_v0_2_1_review.md +0 -0
  35. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/competitor-analysis/README.md +0 -0
  36. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/competitor-analysis/competitor-matrix.md +0 -0
  37. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/competitor-analysis/market-brief.md +0 -0
  38. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/competitor-analysis/positioning-map.md +0 -0
  39. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/competitor-analysis/swot-analysis.md +0 -0
  40. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/literature-review/inclusion-exclusion-criteria.md +0 -0
  41. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/literature-review/literature-matrix.md +0 -0
  42. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/literature-review/literature-review.md +0 -0
  43. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/literature-review/search-strategy.md +0 -0
  44. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/research/reference-repos-absorption.md +0 -0
  45. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/skeleton-completeness-checklist.md +0 -0
  46. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/test-results-report.md +0 -0
  47. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/usage-guide.md +0 -0
  48. {petfishframework-0.2.3 → petfishframework-0.2.4}/docs/validation-roadmap.md +0 -0
  49. {petfishframework-0.2.3 → petfishframework-0.2.4}/initialization-report.md +0 -0
  50. {petfishframework-0.2.3 → petfishframework-0.2.4}/mcp/README.md +0 -0
  51. {petfishframework-0.2.3 → petfishframework-0.2.4}/mcp/connection-checklist.md +0 -0
  52. {petfishframework-0.2.3 → petfishframework-0.2.4}/mcp/mcp-config.example.json +0 -0
  53. {petfishframework-0.2.3 → petfishframework-0.2.4}/opencode.json +0 -0
  54. {petfishframework-0.2.3 → petfishframework-0.2.4}/qa/code-review-checklist.md +0 -0
  55. {petfishframework-0.2.3 → petfishframework-0.2.4}/qa/qa-review.md +0 -0
  56. {petfishframework-0.2.3 → petfishframework-0.2.4}/qa/qc-gate-decision.md +0 -0
  57. {petfishframework-0.2.3 → petfishframework-0.2.4}/qa/test-plan.md +0 -0
  58. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/config.py +0 -0
  59. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/__init__.py +0 -0
  60. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/agent.py +0 -0
  61. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/compiled.py +0 -0
  62. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/contracts.py +0 -0
  63. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/conversation.py +0 -0
  64. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/environment.py +0 -0
  65. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/events.py +0 -0
  66. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/session.py +0 -0
  67. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/structured.py +0 -0
  68. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/core/types.py +0 -0
  69. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/mcp/__init__.py +0 -0
  70. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/mcp/client.py +0 -0
  71. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/mcp/server.py +0 -0
  72. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/mcp/stdio_transport.py +0 -0
  73. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/mcp/wrapper.py +0 -0
  74. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/models/__init__.py +0 -0
  75. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/models/anthropic.py +0 -0
  76. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/models/fake.py +0 -0
  77. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/models/openai.py +0 -0
  78. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/observability/__init__.py +0 -0
  79. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/observability/sinks.py +0 -0
  80. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/permissions/__init__.py +0 -0
  81. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/permissions/model.py +0 -0
  82. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reasoning/__init__.py +0 -0
  83. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reasoning/lats.py +0 -0
  84. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reasoning/llm_plus_p.py +0 -0
  85. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reasoning/react.py +0 -0
  86. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/__init__.py +0 -0
  87. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/audit_report.py +0 -0
  88. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/cost.py +0 -0
  89. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/cost_report.py +0 -0
  90. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/pass_at_k.py +0 -0
  91. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/replay.py +0 -0
  92. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/reliability/retry.py +0 -0
  93. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/retrieval/__init__.py +0 -0
  94. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/retrieval/adaptive.py +0 -0
  95. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/retrieval/crag.py +0 -0
  96. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/retrieval/memory_store.py +0 -0
  97. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/__init__.py +0 -0
  98. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/agent_tool.py +0 -0
  99. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/base.py +0 -0
  100. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/calculator.py +0 -0
  101. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/path_planner.py +0 -0
  102. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/registry.py +0 -0
  103. {petfishframework-0.2.3 → petfishframework-0.2.4}/src/petfishframework/tools/word_sorter.py +0 -0
  104. {petfishframework-0.2.3 → petfishframework-0.2.4}/tasks/backlog.md +0 -0
  105. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/integration/__init__.py +0 -0
  106. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/integration/test_anthropic_integration.py +0 -0
  107. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/integration/test_openai_integration.py +0 -0
  108. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_agent_tool.py +0 -0
  109. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_anthropic_adapter.py +0 -0
  110. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_api_agent_lifecycle.py +0 -0
  111. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_api_edge_cases.py +0 -0
  112. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_api_integration.py +0 -0
  113. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_api_public_surface.py +0 -0
  114. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_api_type_safety.py +0 -0
  115. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_async.py +0 -0
  116. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_audit_report_v2.py +0 -0
  117. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_conversation.py +0 -0
  118. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_degrade.py +0 -0
  119. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_degrade_failclosed.py +0 -0
  120. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_enterprise_demo.py +0 -0
  121. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_m2_m3_m4.py +0 -0
  122. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_mcp.py +0 -0
  123. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_openai_adapter.py +0 -0
  124. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_pass_at_k.py +0 -0
  125. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_permission_semantics.py +0 -0
  126. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_quickstart_smoke.py +0 -0
  127. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_replay.py +0 -0
  128. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_retrieval.py +0 -0
  129. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_retry.py +0 -0
  130. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_skeleton.py +0 -0
  131. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_stdio_transport.py +0 -0
  132. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_streaming.py +0 -0
  133. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_structured.py +0 -0
  134. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_tool_registry.py +0 -0
  135. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v016_semantics.py +0 -0
  136. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v018.py +0 -0
  137. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v019.py +0 -0
  138. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v2_interface_compatibility.py +0 -0
  139. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v2_lats.py +0 -0
  140. {petfishframework-0.2.3 → petfishframework-0.2.4}/tests/test_v2_llm_plus_p.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: petfishframework
3
- Version: 0.2.3
3
+ Version: 0.2.4
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
@@ -0,0 +1,305 @@
1
+ # petfishFramework v0.2.2 Review:5 个 Todo 修复核验
2
+
3
+ > 版本:`petfishframework==0.2.2`
4
+ > 发布页:https://pypi.org/project/petfishframework/0.2.2/
5
+ > 本次核验目标:检查 v0.2.1 后遗留的 5 个主要问题是否已解决。
6
+ > 备注:本次主要基于 PyPI 页面与 GitHub 公开文件核验;我的本地 pip index 暂时未能解析到 `0.2.2`,因此没有完成完整本地 playground 安装实测。
7
+
8
+ ---
9
+
10
+ ## 1. 总体结论
11
+
12
+ v0.2.2 基本完成了 v0.2.1 后提出的 5 个 todo。
13
+
14
+ 可以认为:
15
+
16
+ > petfishFramework v0.2.2 已经完成“企业 PoC 可展示 Alpha runtime”的关键文档与示例收口。
17
+
18
+ 具体来说:
19
+
20
+ - PyPI 页面已显示 `0.2.2`,短描述是 runtime framework 定位;
21
+ - PyPI 页面显示 Tests 为 234,Development 段落也同步为 `uv run pytest # 234 tests`;
22
+ - PyPI 页面 Enterprise PoC 段落已经删除 “coming in v0.2.0”;
23
+ - GitHub README 页面显示 Tests: 234;
24
+ - GitHub examples 目录中已经存在 `05_enterprise_expense.py`;
25
+ - GitHub 中 `examples/05_enterprise_expense.py` 页面显示 278 lines / 233 loc;
26
+ - `docs/enterprise-expense-demo.md` 已存在,并描述 5 个场景、6 种 DecisionEffect 以及 AuditReport 输出;
27
+ - PyPI 当前限制仍明确标记为 Alpha,deterministic rerun / resume 与 MCP server mode 仍 planned,这个边界是合理的。
28
+
29
+ 但仍有一个需要复核的小尾巴:
30
+
31
+ > 我抓取到的 raw `docs/api.md` 第一行仍显示 `v0.1.9`。这可能是缓存、raw 视图、分支同步或发布顺序问题;但如果外部用户也看到这个版本号,会继续造成文档一致性问题。
32
+
33
+ 因此,我的最终判断是:
34
+
35
+ > 5 个 todo 中,4 个已经明确解决;`api.md` 标题修复在我的抓取结果中仍有不确定性,建议再确认 raw 文件头是否已经真正变成 v0.2.2。
36
+
37
+ ---
38
+
39
+ ## 2. 5 个 Todo 逐项核验
40
+
41
+ | Todo | 预期修复 | 核验结果 | 判断 |
42
+ |---|---|---:|---|
43
+ | `api.md` 标题 v0.1.9 | 改为 v0.2.2 | 我抓取到的 raw `docs/api.md` 第一行仍显示 v0.1.9 | ⚠️ 需复核 |
44
+ | README “coming in v0.2.0” | 删除,改为直接链接 | GitHub README 页面未找到 “coming in”,PyPI 页面也已直接给出运行命令 | ✅ 解决 |
45
+ | README badge URL tests-213 | 改为 tests-234 | GitHub README 页面显示 Tests: 234,PyPI 页面也显示 Tests: 234 | ✅ 解决 |
46
+ | `examples/05_enterprise_expense.py` 不存在 | 创建可运行示例 | examples 目录列出 `05_enterprise_expense.py`,文件页面显示 278 lines / 233 loc | ✅ 解决 |
47
+ | 缺 demo 文档 | 新增 `docs/enterprise-expense-demo.md` | 文档存在,包含场景、策略、输出说明 | ✅ 解决 |
48
+
49
+ ---
50
+
51
+ ## 3. PyPI v0.2.2 状态
52
+
53
+ PyPI v0.2.2 页面显示:
54
+
55
+ | 项目 | 状态 |
56
+ |---|---|
57
+ | 版本 | `0.2.2` |
58
+ | 发布时间 | 2026-07-07 |
59
+ | 短描述 | `A lightweight runtime framework for reliable, auditable, budget-aware, and permission-aware AI agents.` |
60
+ | Python 要求 | `>=3.10` |
61
+ | Development Status | Alpha |
62
+ | Tests | 234 |
63
+ | Enterprise PoC | 已直接链接 `examples/05_enterprise_expense.py` 和 `tests/test_enterprise_demo.py` |
64
+ | 当前限制 | deterministic rerun / resume planned;MCP server mode planned |
65
+ | Trusted Publishing | No,但此前已说明 deferred |
66
+
67
+ PyPI 页面中 Enterprise PoC 段落已经写为:
68
+
69
+ ```text
70
+ See examples/05_enterprise_expense.py and tests/test_enterprise_demo.py
71
+ for a complete enterprise expense approval scenario demonstrating all 6 DecisionEffects.
72
+
73
+ Run: python examples/05_enterprise_expense.py
74
+ ```
75
+
76
+ 这说明 PyPI 层面已经完成了你列出的 README / demo 文案收口。
77
+
78
+ ---
79
+
80
+ ## 4. GitHub README 状态
81
+
82
+ GitHub README 页面显示:
83
+
84
+ - Tests badge 文案为 `Tests: 234`;
85
+ - 没有找到 `coming in`;
86
+ - Enterprise PoC 段落已经直接写 `examples/05_enterprise_expense.py`;
87
+ - 运行命令已给出:
88
+
89
+ ```bash
90
+ python examples/05_enterprise_expense.py
91
+ ```
92
+
93
+ 这说明 README 页面层面已经解决了 v0.2.1 的主要文档尾巴。
94
+
95
+ 注意:我在一次 raw README 抓取中看到过旧的 `tests-213` 与 `coming in` 内容,但 GitHub 页面视图和 PyPI 页面均已更新。更可能是 raw 抓取缓存或工具视图不一致。建议后续 release checklist 仍加入 raw 文件 grep,避免这种不确定性。
96
+
97
+ ---
98
+
99
+ ## 5. Enterprise Example 状态
100
+
101
+ GitHub examples 目录已经列出:
102
+
103
+ ```text
104
+ 05_enterprise_expense.py
105
+ ```
106
+
107
+ 并且文件页面显示:
108
+
109
+ ```text
110
+ 278 lines / 233 loc / 9.86 KB
111
+ ```
112
+
113
+ 这说明 v0.2.1 时“企业 demo 仍偏 test、public example 未完全收口”的问题已经解决。
114
+
115
+ 当前状态可以说:
116
+
117
+ > Enterprise Expense Approval demo 已经从 test asset 变成 public runnable example。
118
+
119
+ ---
120
+
121
+ ## 6. Enterprise Demo 文档状态
122
+
123
+ `docs/enterprise-expense-demo.md` 已存在,并覆盖:
124
+
125
+ - Demo 目标:展示 petfishFramework 是 runtime control framework,不是 calculator framework;
126
+ - 运行方式:
127
+
128
+ ```bash
129
+ python examples/05_enterprise_expense.py
130
+ ```
131
+
132
+ - 5 个场景:
133
+ 1. ALLOW + PARTIAL_ALLOW;
134
+ 2. MASK;
135
+ 3. REQUIRE_APPROVAL;
136
+ 4. DENY;
137
+ 5. DEGRADE with fallback;
138
+ - AuditReport 输出;
139
+ - Policy Design 表格;
140
+ - 文件说明:`examples/05_enterprise_expense.py` 与 `tests/test_enterprise_demo.py`。
141
+
142
+ 这已经满足一个 PoC demo 文档的基本要求。
143
+
144
+ ---
145
+
146
+ ## 7. 仍需确认:api.md 标题
147
+
148
+ 你列出的第一个修复项是:
149
+
150
+ ```text
151
+ api.md 标题 v0.1.9 → v0.2.2
152
+ ```
153
+
154
+ 但我抓到的 raw `docs/api.md` 第一行仍然是:
155
+
156
+ ```text
157
+ public API of petfishFramework v0.1.9
158
+ ```
159
+
160
+ 由于 PyPI 和 GitHub 页面其它部分都已经同步到 v0.2.2 状态,这里可能有几种解释:
161
+
162
+ 1. raw 文件缓存;
163
+ 2. branch / release tag 与 master 不一致;
164
+ 3. api.md 标题没有真正更新;
165
+ 4. 文档生成过程生成到了 PyPI,但没有同步到 GitHub raw;
166
+ 5. 工具抓取到了旧内容。
167
+
168
+ 建议你直接在仓库里执行:
169
+
170
+ ```bash
171
+ grep -n "v0.1.9\|v0.2.2" docs/api.md
172
+ ```
173
+
174
+ 如果仍看到 v0.1.9,建议立即改掉。
175
+
176
+ 如果本地已经是 v0.2.2,则建议:
177
+
178
+ ```bash
179
+ git status
180
+ git log -1 -- docs/api.md
181
+ git push
182
+ ```
183
+
184
+ 并确认 GitHub raw 页面刷新。
185
+
186
+ ---
187
+
188
+ ## 8. 当前成熟度判断
189
+
190
+ v0.2.2 后,petfishFramework 可以更明确地定位为:
191
+
192
+ > 企业 PoC 可展示的 Alpha-stage Agent runtime control framework。
193
+
194
+ 当前已经具备:
195
+
196
+ - runtime framework 定位;
197
+ - Quickstart;
198
+ - 234 tests;
199
+ - 6 种 DecisionEffect 核心执行语义;
200
+ - Budget hard limit;
201
+ - Audit replay;
202
+ - structured AuditReport;
203
+ - input/output/event/nested mask;
204
+ - DEGRADE fallback + fail-closed;
205
+ - Tool metadata;
206
+ - CI / SECURITY.md 基础;
207
+ - Enterprise Expense Approval public example;
208
+ - Enterprise demo 文档。
209
+
210
+ 仍不应称为 production-ready,因为:
211
+
212
+ - YAML Policy Engine 尚未实现;
213
+ - CredentialBroker 尚未实现;
214
+ - deterministic rerun / resume 仍 planned;
215
+ - MCP server mode 仍 planned;
216
+ - Trusted Publishing / SBOM / release provenance deferred;
217
+ - OpenTelemetry / SIEM / deployment hardening 尚未闭环。
218
+
219
+ ---
220
+
221
+ ## 9. 下一步建议
222
+
223
+ ## 9.1 v0.2.3:最后的文档一致性补丁
224
+
225
+ 建议只做一件事:
226
+
227
+ - 确认 `docs/api.md` raw 文件头已经是 v0.2.2 / v0.2.3;
228
+ - release checklist 中加入:
229
+
230
+ ```bash
231
+ grep -R "v0.1" README.md docs/ pyproject.toml
232
+ grep -R "coming in" README.md docs/ examples/
233
+ grep -R "tests-213" README.md docs/
234
+ ```
235
+
236
+ 目标:
237
+
238
+ > 彻底消灭文档旧版本残留。
239
+
240
+ ---
241
+
242
+ ## 9.2 v0.3.0:Policy Engine + CredentialBroker
243
+
244
+ v0.2.x 的 runtime 与 demo 已经基本收口,v0.3.0 建议进入:
245
+
246
+ 1. YAML Policy Engine;
247
+ 2. policy versioning;
248
+ 3. policy test harness;
249
+ 4. CredentialBroker MVP;
250
+ 5. scoped temporary credentials;
251
+ 6. secret/event redaction;
252
+ 7. policy audit metadata;
253
+ 8. policy examples for enterprise demo。
254
+
255
+ ---
256
+
257
+ ## 9.3 v0.4.0:Production Hardening
258
+
259
+ 后续生产化建议继续推进:
260
+
261
+ - deterministic rerun;
262
+ - checkpoint resume;
263
+ - OpenTelemetry;
264
+ - SIEM export;
265
+ - MCP server mode;
266
+ - MCP governance;
267
+ - Trusted Publishing;
268
+ - SBOM;
269
+ - signed release;
270
+ - deployment guide;
271
+ - threat model。
272
+
273
+ ---
274
+
275
+ ## 10. 最终判断
276
+
277
+ v0.2.2 的回答是:
278
+
279
+ > 主要问题已经基本解决。
280
+
281
+ 更精确地说:
282
+
283
+ - README 过期文案:解决;
284
+ - tests badge:解决;
285
+ - enterprise example:解决;
286
+ - enterprise demo docs:解决;
287
+ - PyPI 文档:解决;
288
+ - API Reference 主体:大概率已解决,但 raw 文件标题仍需你再确认。
289
+
290
+ 现在 petfishFramework 的短期工作重点可以从“修文档尾巴”切换到:
291
+
292
+ > v0.3 的 Policy Engine 与 CredentialBroker 设计。
293
+
294
+ 我建议在进入 v0.3 前,只再做一个极小的 v0.2.3 文档一致性补丁,确保 `api.md` raw 版本号与所有 release 文案完全同步。
295
+
296
+ ---
297
+
298
+ ## 11. 参考链接
299
+
300
+ - PyPI v0.2.2: https://pypi.org/project/petfishframework/0.2.2/
301
+ - GitHub API Reference: https://github.com/kylecui/petfishFramework/blob/master/docs/api.md
302
+ - GitHub README: https://github.com/kylecui/petfishFramework/blob/master/README.md
303
+ - Examples directory: https://github.com/kylecui/petfishFramework/tree/master/examples
304
+ - Enterprise example: https://github.com/kylecui/petfishFramework/blob/master/examples/05_enterprise_expense.py
305
+ - Enterprise demo docs: https://github.com/kylecui/petfishFramework/blob/master/docs/enterprise-expense-demo.md
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "petfishframework"
7
- version = "0.2.3"
7
+ version = "0.2.4"
8
8
  description = "A lightweight runtime framework for reliable, auditable, budget-aware, and permission-aware AI agents."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -14,7 +14,7 @@ from .reasoning import LATS, LLMPlusP, ReAct
14
14
  from .reliability.replay import ReplayMode
15
15
  from .tools.base import BaseTool
16
16
 
17
- __version__ = "0.2.3"
17
+ __version__ = "0.2.4"
18
18
 
19
19
  __all__ = [
20
20
  "Agent",
@@ -8,6 +8,7 @@ modifying callers' interfaces.
8
8
  from __future__ import annotations
9
9
 
10
10
  from concurrent.futures import ThreadPoolExecutor
11
+ from concurrent.futures import TimeoutError as FuturesTimeoutError
11
12
  from dataclasses import dataclass
12
13
  from typing import Callable, ParamSpec, TypeVar
13
14
 
@@ -48,7 +49,7 @@ def with_timeout(fn: Callable[P, T], timeout_s: float) -> Callable[P, T]:
48
49
  future = executor.submit(fn, *args, **kwargs)
49
50
  try:
50
51
  return future.result(timeout=timeout_s)
51
- except TimeoutError as exc:
52
+ except FuturesTimeoutError as exc:
52
53
  operation = getattr(fn, "__name__", repr(fn))
53
54
  raise OperationTimedOut(operation=operation, timeout_s=timeout_s) from exc
54
55
 
@@ -995,7 +995,7 @@ wheels = [
995
995
 
996
996
  [[package]]
997
997
  name = "petfishframework"
998
- version = "0.2.3"
998
+ version = "0.2.4"
999
999
  source = { editable = "." }
1000
1000
 
1001
1001
  [package.optional-dependencies]