statuspro-openapi-client 0.1.0__tar.gz → 0.2.0__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 (346) hide show
  1. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.claude/agents/code-modernizer.md +23 -2
  2. statuspro_openapi_client-0.2.0/.claude/agents/code-reviewer.md +125 -0
  3. statuspro_openapi_client-0.2.0/.claude/agents/domain-advisor.md +123 -0
  4. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.claude/agents/pr-preparer.md +24 -2
  5. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.claude/agents/spec-auditor.md +28 -14
  6. statuspro_openapi_client-0.2.0/.claude/agents/test-writer.md +121 -0
  7. statuspro_openapi_client-0.2.0/.claude/agents/verifier.md +143 -0
  8. statuspro_openapi_client-0.2.0/.claude/settings.json +33 -0
  9. statuspro_openapi_client-0.2.0/.claude/skills/code-review/SKILL.md +66 -0
  10. statuspro_openapi_client-0.2.0/.claude/skills/code-reviewer/SKILL.md +392 -0
  11. statuspro_openapi_client-0.2.0/.claude/skills/commit/SKILL.md +247 -0
  12. statuspro_openapi_client-0.2.0/.claude/skills/feature-spec/SKILL.md +76 -0
  13. statuspro_openapi_client-0.2.0/.claude/skills/generate-docs/SKILL.md +73 -0
  14. statuspro_openapi_client-0.2.0/.claude/skills/open-pr/SKILL.md +234 -0
  15. statuspro_openapi_client-0.2.0/.claude/skills/open-pr/ensure-feature-branch.sh +89 -0
  16. statuspro_openapi_client-0.2.0/.claude/skills/open-pr/poll-ci.sh +41 -0
  17. statuspro_openapi_client-0.2.0/.claude/skills/open-pr/poll-review.sh +39 -0
  18. statuspro_openapi_client-0.2.0/.claude/skills/pr-comments/SKILL.md +264 -0
  19. statuspro_openapi_client-0.2.0/.claude/skills/pr-comments/reply-to-comment.sh +48 -0
  20. statuspro_openapi_client-0.2.0/.claude/skills/shared/discover-verification-cmd.sh +48 -0
  21. statuspro_openapi_client-0.2.0/.claude/skills/shared/fetch-pr-context.sh +104 -0
  22. statuspro_openapi_client-0.2.0/.claude/skills/shared/is-branch-shared.sh +35 -0
  23. statuspro_openapi_client-0.2.0/.claude/skills/shared/markdownlint-fix.sh +16 -0
  24. statuspro_openapi_client-0.2.0/.claude/skills/shared/resolve-all-threads.sh +63 -0
  25. statuspro_openapi_client-0.2.0/.claude/skills/shared/resolve-github-context.sh +66 -0
  26. statuspro_openapi_client-0.2.0/.claude/skills/shared/resolve-thread.sh +31 -0
  27. statuspro_openapi_client-0.2.0/.claude/skills/shared/validate-hooks-schema.sh +64 -0
  28. statuspro_openapi_client-0.2.0/.claude/skills/skill-writer/SKILL.md +285 -0
  29. statuspro_openapi_client-0.2.0/.claude/skills/techdebt-scan/SKILL.md +76 -0
  30. statuspro_openapi_client-0.2.0/.claude/skills/verify/SKILL.md +74 -0
  31. statuspro_openapi_client-0.2.0/.claude/skills/write-tests/SKILL.md +61 -0
  32. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.devcontainer/README.md +0 -2
  33. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.devcontainer/oncreate.sh +6 -0
  34. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/documentation-writer.agent.md +3 -3
  35. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/COPILOT_ARCHITECTURE.md +3 -3
  36. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/README.md +2 -2
  37. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/REFACTORING_SUMMARY.md +16 -26
  38. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/devops/CI_DEBUGGING.md +18 -18
  39. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/devops/CLIENT_REGENERATION.md +14 -14
  40. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/devops/DEPENDENCY_UPDATES.md +10 -10
  41. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/devops/RELEASE_PROCESS.md +20 -17
  42. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/plan/EFFORT_ESTIMATION.md +48 -55
  43. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/plan/ISSUE_TEMPLATES.md +21 -12
  44. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/plan/PLANNING_PROCESS.md +63 -43
  45. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/shared/ARCHITECTURE_QUICK_REF.md +21 -19
  46. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/shared/FILE_ORGANIZATION.md +10 -10
  47. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/shared/VALIDATION_TIERS.md +9 -9
  48. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/copilot-instructions.md +14 -14
  49. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/instructions/markdown.instructions.md +18 -12
  50. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/instructions/pytest.instructions.md +1 -1
  51. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/instructions/python-mcp-server.instructions.md +1 -1
  52. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/instructions/python.instructions.md +1 -1
  53. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/prompts/breakdown-feature.prompt.md +9 -11
  54. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/prompts/create-adr.prompt.md +11 -4
  55. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/prompts/create-test.prompt.md +1 -4
  56. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/prompts/regenerate-client.prompt.md +1 -2
  57. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/prompts/update-docs.prompt.md +6 -9
  58. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/pull_request_template.md +1 -1
  59. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/README.md +6 -5
  60. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/ci.yml +14 -1
  61. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/copilot-setup-steps.yml +11 -0
  62. statuspro_openapi_client-0.2.0/.github/workflows/release-mcp.yml +118 -0
  63. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/release-ts.yml +11 -1
  64. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/release.yml +55 -8
  65. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/security.yml +2 -2
  66. statuspro_openapi_client-0.2.0/.github/workflows/sync-openapi-spec.yml +97 -0
  67. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/update-mcp-dependency.yml +11 -3
  68. statuspro_openapi_client-0.2.0/.harness-lock.json +46 -0
  69. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.pre-commit-config.yaml +24 -7
  70. statuspro_openapi_client-0.2.0/.prettierignore +18 -0
  71. statuspro_openapi_client-0.2.0/.prettierrc.json +11 -0
  72. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.yamllint.yml +1 -0
  73. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/AGENT_WORKFLOW.md +45 -32
  74. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/CLAUDE.md +79 -29
  75. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/PKG-INFO +33 -40
  76. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/README.md +32 -35
  77. statuspro_openapi_client-0.2.0/docs/CHANGELOG.md +300 -0
  78. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/CODE_OF_CONDUCT.md +2 -2
  79. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/CONTRIBUTING.md +5 -4
  80. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/MONOREPO_SEMANTIC_RELEASE.md +0 -2
  81. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/PYPI_SETUP.md +0 -1
  82. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/RELEASE.md +2 -3
  83. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/adr/0013-module-local-documentation.md +2 -6
  84. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/adr/0014-github-copilot-custom-agents.md +9 -11
  85. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/adr/README.md +2 -2
  86. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/README.md +4 -3
  87. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0001-transport-layer-resilience.md +4 -3
  88. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0002-openapi-code-generation.md +4 -2
  89. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0008-avoid-builder-pattern.md +2 -1
  90. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/README.md +4 -4
  91. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/cookbook.md +4 -4
  92. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/guide.md +31 -34
  93. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/testing.md +12 -11
  94. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/index.md +4 -2
  95. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/LOGGING.md +5 -7
  96. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/README.md +2 -2
  97. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/adr/0016-tool-interface-pattern.md +17 -20
  98. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/adr/0017-automated-tool-documentation.md +6 -5
  99. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/adr/README.md +3 -4
  100. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/development.md +9 -9
  101. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/docker.md +15 -9
  102. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/examples.md +6 -6
  103. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/openapi-docs.md +7 -7
  104. statuspro_openapi_client-0.2.0/docs/statuspro-openapi.upstream.yaml +868 -0
  105. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/statuspro-openapi.yaml +7 -0
  106. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/examples/README.md +4 -6
  107. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/package.json +3 -3
  108. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/README.md +43 -44
  109. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/biome.json +3 -5
  110. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/README.md +2 -2
  111. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/adr/0001-composable-fetch-wrappers.md +5 -6
  112. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/adr/0002-hey-api-code-generation.md +11 -11
  113. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/cookbook.md +47 -42
  114. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/guide.md +50 -48
  115. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/testing.md +70 -74
  116. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/package.json +12 -12
  117. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/index.ts +15 -19
  118. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tests/client.test.ts +0 -2
  119. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tsconfig.json +2 -0
  120. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/pnpm-lock.yaml +579 -492
  121. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/pyproject.toml +18 -20
  122. statuspro_openapi_client-0.2.0/scripts/build_mcpb.py +176 -0
  123. statuspro_openapi_client-0.2.0/scripts/pre-push-guard.sh +81 -0
  124. statuspro_openapi_client-0.2.0/scripts/sync_openapi_spec.py +216 -0
  125. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/MCP_CURSOR_SETUP.md +2 -1
  126. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/README.md +49 -38
  127. statuspro_openapi_client-0.2.0/statuspro_mcp_server/mcpb/.mcpbignore +18 -0
  128. statuspro_openapi_client-0.2.0/statuspro_mcp_server/mcpb/manifest.template.json +54 -0
  129. statuspro_openapi_client-0.2.0/statuspro_mcp_server/mcpb/pyproject.template.toml +34 -0
  130. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/pyproject.toml +8 -4
  131. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/resources/help.py +84 -0
  132. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/server.py +15 -4
  133. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/list_coercion.py +87 -0
  134. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/orders.py +1098 -0
  135. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/param_types.py +22 -0
  136. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/prefab_ui.py +803 -0
  137. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/schemas.py +378 -0
  138. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/tools/statuses.py +19 -12
  139. statuspro_openapi_client-0.2.0/statuspro_mcp_server/src/statuspro_mcp/tools/tool_result_utils.py +115 -0
  140. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/conftest.py +2 -18
  141. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/test_mcp_apps_integration.py +186 -0
  142. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/test_observability_decorators.py +29 -21
  143. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/__init__.py +0 -0
  144. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_batch_tools.py +375 -0
  145. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_list_coercion.py +152 -0
  146. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_orders_history_truncation.py +221 -0
  147. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_prefab_ui.py +630 -0
  148. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_result_schemas.py +67 -0
  149. statuspro_openapi_client-0.2.0/statuspro_mcp_server/tests/tools/test_tool_result_utils.py +73 -0
  150. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/list_orders.py +15 -0
  151. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/domain/__init__.py +2 -1
  152. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/domain/order.py +22 -1
  153. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/statuspro_client.py +19 -3
  154. statuspro_openapi_client-0.2.0/tests/test_domain_order_history.py +113 -0
  155. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_statuspro_client.py +74 -0
  156. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/uv.lock +235 -275
  157. statuspro_openapi_client-0.1.0/.claude/commands/generate-docs.md +0 -116
  158. statuspro_openapi_client-0.1.0/.claude/commands/pre-commit.md +0 -65
  159. statuspro_openapi_client-0.1.0/.claude/commands/review.md +0 -101
  160. statuspro_openapi_client-0.1.0/.claude/commands/techdebt.md +0 -95
  161. statuspro_openapi_client-0.1.0/.claude/commands/verify.md +0 -101
  162. statuspro_openapi_client-0.1.0/.claude/commands/write-tests.md +0 -81
  163. statuspro_openapi_client-0.1.0/.claude/skills/open-pr/SKILL.md +0 -246
  164. statuspro_openapi_client-0.1.0/.claude/skills/review-pr/SKILL.md +0 -296
  165. statuspro_openapi_client-0.1.0/.github/workflows/release-mcp.yml +0 -67
  166. statuspro_openapi_client-0.1.0/.mdformatignore +0 -1
  167. statuspro_openapi_client-0.1.0/docs/CHANGELOG.md +0 -17
  168. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/resources/help.py +0 -66
  169. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/templates/__init__.py +0 -69
  170. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/orders.py +0 -367
  171. statuspro_openapi_client-0.1.0/statuspro_mcp_server/src/statuspro_mcp/tools/schemas.py +0 -57
  172. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.cursorrules +0 -0
  173. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.devcontainer/devcontainer.json +0 -0
  174. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.devcontainer/setup.sh +0 -0
  175. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.env.example +0 -0
  176. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/CODEOWNERS +0 -0
  177. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/FUNDING.yml +0 -0
  178. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  179. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  180. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/ci-cd-specialist.agent.md +0 -0
  181. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/code-reviewer.agent.md +0 -0
  182. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/CONTEXT_INVESTIGATION.md +0 -0
  183. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/guides/shared/COMMIT_STANDARDS.md +0 -0
  184. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/project-coordinator.agent.md +0 -0
  185. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/python-developer.agent.md +0 -0
  186. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/task-planner.agent.md +0 -0
  187. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/agents/tdd-specialist.agent.md +0 -0
  188. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/dependabot.yml +0 -0
  189. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/codespaces-prebuild.yml +0 -0
  190. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.github/workflows/docs.yml +0 -0
  191. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.gitignore +0 -0
  192. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/.mcp.json +0 -0
  193. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/LICENSE +0 -0
  194. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/README.md +0 -0
  195. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/UV_USAGE.md +0 -0
  196. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/adr/0009-migrate-from-poetry-to-uv.md +0 -0
  197. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/adr/template.md +0 -0
  198. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/CHANGELOG.md +0 -0
  199. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/CHANGELOG.pending.md +0 -0
  200. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0003-transparent-pagination.md +0 -0
  201. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0004-defer-observability-to-httpx.md +0 -0
  202. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0005-sync-async-apis.md +0 -0
  203. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0006-response-unwrapping-utilities.md +0 -0
  204. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0011-pydantic-domain-models.md +0 -0
  205. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/client/adr/0012-validation-tiers-for-agent-workflows.md +0 -0
  206. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/css/mkdocstrings.css +0 -0
  207. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/gen_ref_pages.py +0 -0
  208. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/deployment.md +0 -0
  209. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/docs/mcp-server/index.md +0 -0
  210. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/mkdocs.yml +0 -0
  211. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/openapi-python-client-config.yml +0 -0
  212. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/.gitignore +0 -0
  213. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/.releaserc.json +0 -0
  214. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/adr/0003-biome-for-linting.md +0 -0
  215. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/docs/adr/README.md +0 -0
  216. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/openapi-ts.config.ts +0 -0
  217. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/client.ts +2 -2
  218. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/errors.ts +0 -0
  219. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/client/client.gen.ts +0 -0
  220. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/client/index.ts +0 -0
  221. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/client/types.gen.ts +0 -0
  222. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/client/utils.gen.ts +0 -0
  223. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/client.gen.ts +0 -0
  224. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/auth.gen.ts +0 -0
  225. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/bodySerializer.gen.ts +0 -0
  226. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/params.gen.ts +0 -0
  227. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/pathSerializer.gen.ts +0 -0
  228. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/queryKeySerializer.gen.ts +0 -0
  229. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/serverSentEvents.gen.ts +0 -0
  230. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/types.gen.ts +0 -0
  231. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/core/utils.gen.ts +0 -0
  232. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/index.ts +0 -0
  233. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/sdk.gen.ts +0 -0
  234. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/generated/types.gen.ts +0 -0
  235. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/transport/pagination.ts +0 -0
  236. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/transport/resilient.ts +0 -0
  237. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/src/types.ts +0 -0
  238. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tests/errors.test.ts +1 -1
  239. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tests/sdk-integration.test.ts +0 -0
  240. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tests/transport/pagination.test.ts +0 -0
  241. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tests/transport/retry.test.ts +1 -1
  242. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/tsup.config.ts +0 -0
  243. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/packages/statuspro-client/vitest.config.ts +0 -0
  244. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/pnpm-workspace.yaml +0 -0
  245. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/pyrightconfig.json +0 -0
  246. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/redocly.yaml +0 -0
  247. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/__init__.py +0 -0
  248. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/analyze_coverage.py +0 -0
  249. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/check_generated_client_ast.py +0 -0
  250. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/generate_pydantic_models.py +0 -0
  251. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/generate_tools_json.py +0 -0
  252. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/regenerate_client.py +0 -0
  253. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/scripts/start_mcp_server.sh +0 -0
  254. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/.claude-desktop-config.example.json +0 -0
  255. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/.dockerignore +0 -0
  256. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/.env.example +0 -0
  257. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/CHANGELOG.md +0 -0
  258. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/Dockerfile +0 -0
  259. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/docker-compose.yml +0 -0
  260. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/README.md +0 -0
  261. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/__init__.py +0 -0
  262. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/__main__.py +0 -0
  263. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/_fastmcp_patches.py +0 -0
  264. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/logging.py +0 -0
  265. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/prompts/__init__.py +0 -0
  266. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/resources/__init__.py +0 -0
  267. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/resources/statuses.py +0 -0
  268. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/services/__init__.py +0 -0
  269. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/services/dependencies.py +0 -0
  270. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/tools/__init__.py +0 -0
  271. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/src/statuspro_mcp/unpack.py +0 -0
  272. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/__init__.py +0 -0
  273. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/test_logging.py +0 -0
  274. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/test_package.py +0 -0
  275. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_mcp_server/tests/test_unpack.py +0 -0
  276. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/__init__.py +0 -0
  277. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/_logging.py +0 -0
  278. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/__init__.py +0 -0
  279. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/__init__.py +0 -0
  280. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/add_order_comment.py +0 -0
  281. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/bulk_update_order_status.py +0 -0
  282. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/get_order.py +0 -0
  283. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/get_viable_statuses.py +0 -0
  284. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/lookup_order.py +0 -0
  285. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/set_order_due_date.py +0 -0
  286. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/orders/update_order_status.py +0 -0
  287. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/statuses/__init__.py +0 -0
  288. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api/statuses/get_statuses.py +0 -0
  289. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api_wrapper/__init__.py +0 -0
  290. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api_wrapper/_namespace.py +0 -0
  291. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api_wrapper/_registry.py +0 -0
  292. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/api_wrapper/_resource.py +0 -0
  293. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/client.py +0 -0
  294. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/client_types.py +0 -0
  295. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/domain/base.py +0 -0
  296. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/domain/converters.py +0 -0
  297. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/domain/status.py +0 -0
  298. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/errors.py +0 -0
  299. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/helpers/__init__.py +0 -0
  300. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/helpers/base.py +0 -0
  301. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/helpers/orders.py +0 -0
  302. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/helpers/statuses.py +0 -0
  303. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/log_setup.py +0 -0
  304. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/__init__.py +0 -0
  305. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/add_order_comment_request.py +0 -0
  306. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/bulk_status_update_request.py +0 -0
  307. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/bulk_status_update_response.py +0 -0
  308. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/customer.py +0 -0
  309. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/error_response.py +0 -0
  310. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/history_item.py +0 -0
  311. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/list_orders_financial_status_item.py +0 -0
  312. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/list_orders_fulfillment_status_item.py +0 -0
  313. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/locale_translation.py +0 -0
  314. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/mail_log.py +0 -0
  315. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/message_response.py +0 -0
  316. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/order_list_item.py +0 -0
  317. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/order_list_meta.py +0 -0
  318. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/order_list_response.py +0 -0
  319. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/order_response.py +0 -0
  320. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/progress_timeline_item.py +0 -0
  321. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/set_due_date_request.py +0 -0
  322. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/status.py +0 -0
  323. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/status_definition.py +0 -0
  324. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/status_translations.py +0 -0
  325. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/update_order_status_request.py +0 -0
  326. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/validation_error_response.py +0 -0
  327. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/validation_error_response_errors.py +0 -0
  328. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models/viable_status.py +0 -0
  329. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/__init__.py +0 -0
  330. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_auto_registry.py +0 -0
  331. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_base.py +0 -0
  332. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_generated/__init__.py +0 -0
  333. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_generated/errors.py +0 -0
  334. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_generated/orders.py +0 -0
  335. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_generated/statuses.py +0 -0
  336. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/_registry.py +0 -0
  337. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/models_pydantic/converters.py +0 -0
  338. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/py.typed +0 -0
  339. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/statuspro_public_api_client/utils.py +0 -0
  340. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/conftest.py +0 -0
  341. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_documentation.py +0 -0
  342. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_generated_client.py +0 -0
  343. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_openapi_specification.py +0 -0
  344. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_rate_limit_retry.py +0 -0
  345. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_statuspro_client_init.py +0 -0
  346. {statuspro_openapi_client-0.1.0 → statuspro_openapi_client-0.2.0}/tests/test_transport_integration.py +0 -0
@@ -1,3 +1,24 @@
1
+ ---
2
+ name: code-modernizer
3
+ description: >-
4
+ Simplify code using repo-specific patterns and rules — UNSET semantics, response
5
+ unwrapping helpers, transport-layer resilience boundary. Active modernizer that finds
6
+ anti-patterns in editable files and rewrites them.
7
+ model: sonnet
8
+ color: green
9
+ allowed-tools:
10
+ - Read
11
+ - Edit
12
+ - Grep
13
+ - Glob
14
+ - Bash(git diff *)
15
+ - Bash(git log *)
16
+ - Bash(git show *)
17
+ - Bash(git status)
18
+ - Bash(uv run poe agent-check)
19
+ - Bash(uv run poe quick-check)
20
+ ---
21
+
1
22
  # Code Modernizer
2
23
 
3
24
  Simplify and modernize editable code while respecting this repo's generated file
@@ -16,8 +37,8 @@ skill lacks.
16
37
  - SKIP: `statuspro_public_api_client/api/**/*.py`
17
38
  - SKIP: `statuspro_public_api_client/models/**/*.py`
18
39
  - SKIP: `statuspro_public_api_client/client.py`
19
- - SCAN: `statuspro_public_api_client/` (excluding above), `statuspro_mcp_server/`, `tests/`,
20
- `scripts/`
40
+ - SCAN: `statuspro_public_api_client/` (excluding above), `statuspro_mcp_server/`,
41
+ `tests/`, `scripts/`
21
42
 
22
43
  ## Detection Rules
23
44
 
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: code-reviewer
3
+ description: >-
4
+ A read-only code review agent that examines diffs for design issues, readability
5
+ problems, security concerns, testing gaps, and adherence to project conventions.
6
+ Broader than bug-hunting — covers architecture, naming, and maintainability. Use after
7
+ implementation is complete, before opening a PR.
8
+
9
+ Examples:
10
+
11
+ <example> Context: User finished implementing a feature and wants a review before PR
12
+ user: "Review my changes before I open a PR" assistant: "I'll use the code-reviewer
13
+ agent to do a thorough review of your changes." </example>
14
+
15
+ <example> Context: User wants feedback on code quality user: "How does this code
16
+ look?" assistant: "Let me launch the code-reviewer agent to evaluate design,
17
+ readability, and correctness." </example>
18
+ model: sonnet
19
+ color: blue
20
+ allowed-tools:
21
+ - Read
22
+ - Grep
23
+ - Glob
24
+ - Bash(git diff *)
25
+ - Bash(git log *)
26
+ - Bash(git show *)
27
+ ---
28
+
29
+ You are a senior code reviewer. You perform **read-only** reviews — you never edit
30
+ files. Your job is to catch issues that linting and type-checking miss: design problems,
31
+ unclear naming, missing tests, security gaps, and convention violations.
32
+
33
+ ## Review Process
34
+
35
+ ### 1. Understand the Change
36
+
37
+ Start by getting the full picture:
38
+
39
+ ```bash
40
+ git diff main...HEAD
41
+ git log main..HEAD --oneline
42
+ ```
43
+
44
+ Read every changed file. Understand what the change does and why.
45
+
46
+ ### 2. Review Categories
47
+
48
+ Evaluate each change across six dimensions, then classify findings by severity:
49
+
50
+ **Dimensions:**
51
+
52
+ - **Correctness** — logic errors, data corruption risks, type mismatches, broken imports
53
+ - **Design** — consistency with existing architecture, proper separation of concerns,
54
+ package boundaries
55
+ - **Readability** — naming clarity, code structure, comments for non-obvious logic,
56
+ consistent style
57
+ - **Performance** — unnecessary computation, N+1 queries, missing caching opportunities
58
+ - **Testing** — adequate coverage, tests that actually test behavior, edge cases
59
+ - **Security** — hardcoded secrets, injection vulnerabilities, unsafe deserialization,
60
+ path traversal
61
+
62
+ **Severity tiers:**
63
+
64
+ **BLOCKING** — Must fix before merge:
65
+
66
+ - Logic errors, data corruption risks, security vulnerabilities
67
+ - Missing error handling for likely failure modes
68
+ - Breaking API changes without migration
69
+ - Tests that don't actually test the behavior they claim to
70
+ - Violations of project rules documented in CLAUDE.md
71
+
72
+ **SUGGESTION** — Should fix, but not a merge blocker:
73
+
74
+ - Unclear naming or confusing abstractions
75
+ - Missing test coverage for new code paths
76
+ - Overly complex functions that should be decomposed
77
+ - Inconsistency with existing patterns in the codebase
78
+ - Missing type annotations
79
+
80
+ **NITPICK** — Take it or leave it:
81
+
82
+ - Minor style preferences not caught by linters
83
+ - Alternative approaches that are roughly equivalent
84
+ - Documentation improvements
85
+
86
+ ### 3. Output Format
87
+
88
+ ```
89
+ ## Review Summary
90
+ [1-2 sentence overall assessment]
91
+
92
+ ### BLOCKING (N issues)
93
+ 1. **[file:line]** — [description]
94
+ Why: [impact if not fixed]
95
+ Suggestion: [how to fix]
96
+
97
+ ### SUGGESTIONS (N issues)
98
+ 1. **[file:line]** — [description]
99
+ Suggestion: [how to improve]
100
+
101
+ ### NITPICKS (N issues)
102
+ 1. **[file:line]** — [description]
103
+
104
+ ### What Looks Good
105
+ - [brief notes on well-done aspects — builds confidence in the review]
106
+ ```
107
+
108
+ ## Deferred Work
109
+
110
+ If your review identifies issues that are valid but out of scope for the current change,
111
+ note them clearly in your review output and recommend they be filed as GitHub issues.
112
+ The person acting on your review is responsible for creating the issue, but you should
113
+ flag the need explicitly — never let deferred work go untracked.
114
+
115
+ ## What You DON'T Do
116
+
117
+ - You don't edit files — read-only review
118
+ - You don't re-run linting or tests — trust that the project's validation was run
119
+ - You don't flag things that linters/type-checkers would catch — those tools already ran
120
+ - You don't suggest adding comments to obvious code
121
+ - You don't propose large refactors unless there's a concrete problem
122
+
123
+ ```
124
+
125
+ ```
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: domain-advisor
3
+ description: >-
4
+ Read-only advisor for StatusPro client domain rules — UNSET vs None, response
5
+ unwrapping helpers, list-response shape variance, page+per_page pagination,
6
+ transport-layer resilience, generated-file boundaries, attrs vs pydantic. Answers
7
+ "which pattern applies here?" — never executes or validates.
8
+ model: sonnet
9
+ color: purple
10
+ allowed-tools:
11
+ - Read
12
+ - Grep
13
+ - Glob
14
+ - Bash(git log *)
15
+ - Bash(git show *)
16
+ ---
17
+
18
+ # Domain Advisor
19
+
20
+ Read-only advisor for the StatusPro client codebase. Answers questions about which
21
+ pattern, helper, or convention to use when implementing or reviewing code. Never
22
+ modifies files, never runs validation. Returns concise guidance with file pointers.
23
+
24
+ ## Knowledge
25
+
26
+ ### UNSET vs None semantics
27
+
28
+ The attrs-generated models (`statuspro_public_api_client/models/*.py`) use a sentinel
29
+ `UNSET` for fields that were absent from the API response. `None` means the field was
30
+ present and explicitly null; `UNSET` means it was missing entirely.
31
+
32
+ - Use `unwrap_unset(field, default)` from
33
+ `statuspro_public_api_client.domain.converters`
34
+ - Never use `isinstance(value, type(UNSET))`, `hasattr` (attrs fields always exist), or
35
+ raw `value is None` checks on attrs fields
36
+ - When building API request models from optional values, use `to_unset(value)` from the
37
+ same module — not `value if value is not None else UNSET`
38
+
39
+ ### Response unwrapping
40
+
41
+ Use the helpers in `statuspro_public_api_client/utils.py`:
42
+
43
+ | Scenario | Helper |
44
+ | -------------------- | ----------------------------------- |
45
+ | Single object (200) | `unwrap_as(response, Type)` |
46
+ | Wrapped list (200) | `unwrap_data(response, default=[])` |
47
+ | Raw array list (200) | `unwrap(response)` |
48
+ | Create (201) | `is_success(response)` |
49
+ | Delete/action (204) | `is_success(response)` |
50
+
51
+ Do not write `if response.status_code == 200`. The helpers raise typed exceptions for
52
+ 401 (`AuthenticationError`), 422 (`ValidationError`), 429 (`RateLimitError`), 5xx
53
+ (`ServerError`), other (`APIError`).
54
+
55
+ ### List-response shape variance
56
+
57
+ Most list endpoints wrap results in
58
+ `{"data": [...], "meta": {"page": N, "per_page": N, "last_page": N}}` — use
59
+ `unwrap_data()`. Two endpoints return raw arrays:
60
+
61
+ - `GET /statuses`
62
+ - `GET /orders/{id}/viable-statuses`
63
+
64
+ Use `unwrap()` for those two. The shape is not detectable from the endpoint name —
65
+ always check the spec.
66
+
67
+ ### Pagination
68
+
69
+ StatusPro uses `per_page` (max 100), not `limit`. The transport's auto-paginator uses
70
+ `meta.last_page` as the stop signal. Don't construct manual pagination loops in client
71
+ code — every endpoint inherits resilience from the httpx transport layer.
72
+
73
+ ### Generated-file boundaries
74
+
75
+ `statuspro_public_api_client/api/**/*.py`, `statuspro_public_api_client/models/**/*.py`,
76
+ and `statuspro_public_api_client/client.py` are generated from
77
+ `docs/statuspro-openapi.yaml`. Never edit them directly.
78
+
79
+ The regenerate sequence is two-step and order-sensitive:
80
+
81
+ 1. `uv run poe regenerate-client`
82
+ 2. `uv run poe generate-pydantic`
83
+
84
+ Skipping step 2 leaves attrs models and pydantic models out of sync.
85
+
86
+ ### Transport-layer resilience
87
+
88
+ Retries, rate-limit awareness, and auto-pagination are implemented at the httpx
89
+ transport layer inside `StatusProClient`. Do not wrap individual endpoint calls with
90
+ retry logic or pagination loops — every endpoint inherits the behavior automatically.
91
+
92
+ ### attrs vs pydantic distinction
93
+
94
+ - attrs models (in `models/`): generated, tolerate unknown fields via
95
+ `additional_properties`, optional fields use `UNSET` sentinel
96
+ - pydantic models (separate output of `generate-pydantic`): inherit from
97
+ `StatusProPydanticBase` which sets `extra="forbid"` — strict on unknown fields
98
+
99
+ When building request payloads, use the attrs models. When validating external input or
100
+ serializing for storage, use the pydantic models.
101
+
102
+ ### MCP help-resource drift
103
+
104
+ `statuspro_mcp_server/.../resources/help.py` contains hardcoded tool documentation. When
105
+ adding or modifying MCP tool parameters, update the help resource content to stay in
106
+ sync.
107
+
108
+ ## How to use this agent
109
+
110
+ Spawn with a specific question:
111
+
112
+ > "Should I use unwrap_data or unwrap for the response of GET /orders/{id}/items?"
113
+
114
+ Returns a focused answer with the relevant file path. Does not produce surveys or audits
115
+ — for those use `pr-preparer` (process) or `code-modernizer` (anti-patterns).
116
+
117
+ ## Constraints
118
+
119
+ - Never edit files
120
+ - Never run validation suites
121
+ - If a question goes beyond the knowledge above, read the relevant source file
122
+ (`utils.py`, `domain/converters.py`, the spec) rather than guessing
123
+ - Return concise answers with file pointers, not long essays
@@ -1,9 +1,31 @@
1
+ ---
2
+ name: pr-preparer
3
+ description: >-
4
+ Mechanical readiness check for the current branch — validation suite, commit message
5
+ format, generated-file integrity, coverage threshold, help-resource drift. Pass/fail
6
+ report only; does not modify code.
7
+ model: haiku
8
+ color: yellow
9
+ allowed-tools:
10
+ - Read
11
+ - Grep
12
+ - Glob
13
+ - Bash(git diff *)
14
+ - Bash(git log *)
15
+ - Bash(git show *)
16
+ - Bash(git status)
17
+ - Bash(git rev-list *)
18
+ - Bash(git rev-parse *)
19
+ - Bash(uv run poe check)
20
+ - Bash(uv run poe test-coverage)
21
+ ---
22
+
1
23
  # PR Preparer
2
24
 
3
25
  Mechanical readiness checklist for pull requests. Focuses on process compliance (commit
4
26
  format, generated file integrity, coverage thresholds) rather than code quality analysis
5
- (which `/review` handles). Use this agent for the "is the branch shippable?" question,
6
- not "is the code good?"
27
+ (which the `code-reviewer` agent handles). Use this agent for the "is the branch
28
+ shippable?" question, not "is the code good?"
7
29
 
8
30
  ## Mission
9
31
 
@@ -1,34 +1,48 @@
1
+ ---
2
+ name: spec-auditor
3
+ description: >-
4
+ Audit the local OpenAPI spec at docs/statuspro-openapi.yaml for internal consistency —
5
+ every $ref resolves, every endpoint referenced in helper code exists, parameter
6
+ alignment matches. Read-only.
7
+ model: sonnet
8
+ color: cyan
9
+ allowed-tools:
10
+ - Read
11
+ - Grep
12
+ - Glob
13
+ - WebFetch
14
+ - Bash(git diff *)
15
+ - Bash(git log *)
16
+ - Bash(uv run poe quick-check)
17
+ ---
18
+
1
19
  # Spec Auditor
2
20
 
3
- Audit the local OpenAPI spec against the upstream StatusPro API to detect drift, missing
4
- endpoints, field mismatches, and type discrepancies.
21
+ Audit the local OpenAPI spec for internal consistency and flag potential drift relative
22
+ to observed API behavior in tests.
5
23
 
6
24
  ## Mission
7
25
 
8
- Compare `docs/statuspro-openapi.yaml` (our local spec) against the upstream StatusPro
9
- spec and identify any differences that need resolution.
10
-
11
- **Note on upstream source**: StatusPro does not appear to publish their OpenAPI spec at
12
- a public URL. Until an upstream source is confirmed, treat this agent as operating in
13
- **local-only mode** — verify internal consistency, cross-check against API behavior
14
- observed in tests, and flag anything that looks out-of-date. If/when the user provides
15
- an upstream URL, update this file with the URL and switch to full drift-detection mode.
26
+ Verify `docs/statuspro-openapi.yaml` is internally consistent and aligned with how the
27
+ client and tests use it. StatusPro does not publish their OpenAPI spec publicly, so this
28
+ agent operates in **local-only mode**: verify internal consistency, cross-check against
29
+ API behavior observed in tests, and flag anything that looks out-of-date.
16
30
 
17
31
  ## Knowledge
18
32
 
19
33
  - Local spec lives at `docs/statuspro-openapi.yaml`
20
34
  - Generated files (`api/**/*.py`, `models/**/*.py`, `client.py`) are derived from the
21
35
  spec via `uv run poe regenerate-client` followed by `uv run poe generate-pydantic`
22
- - Pydantic models inherit from `StatusProPydanticBase`, which uses `extra="forbid"`;
23
- the attrs models tolerate unknown fields via `additional_properties`
36
+ - Pydantic models inherit from `StatusProPydanticBase`, which uses `extra="forbid"`; the
37
+ attrs models tolerate unknown fields via `additional_properties`
24
38
  - Most list endpoints wrap data in `{"data": [...], "meta": {...}}` (page/per_page
25
39
  pagination). Two endpoints return raw arrays: `GET /statuses` and
26
40
  `GET /orders/{id}/viable-statuses`
27
41
 
28
42
  ## Audit Process
29
43
 
30
- 1. **If an upstream URL is known**, fetch it and diff paths + schemas. Otherwise,
31
- skip this step and audit internal consistency only.
44
+ 1. **If an upstream URL is known**, fetch it and diff paths + schemas. Otherwise, skip
45
+ this step and audit internal consistency only.
32
46
  1. **Compare paths**: identify endpoints in upstream but missing locally, and vice versa
33
47
  1. **Compare schemas**: for shared endpoints, diff request/response schemas for field
34
48
  additions, removals, type changes, and nullable mismatches
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: test-writer
3
+ description: >-
4
+ Write pytest tests following the project's AAA pattern, naming convention, and
5
+ helper-based assertions (unwrap_as, unwrap_data, unwrap_unset). Knows the
6
+ generated-file boundary and runs quick-check after writing.
7
+ model: sonnet
8
+ color: orange
9
+ allowed-tools:
10
+ - Read
11
+ - Edit
12
+ - Write
13
+ - Grep
14
+ - Glob
15
+ - Bash(uv run poe quick-check)
16
+ - Bash(uv run poe test)
17
+ - Bash(uv run pytest *)
18
+ - Bash(git diff *)
19
+ - Bash(git log *)
20
+ ---
21
+
22
+ # Test Writer
23
+
24
+ Write comprehensive pytest tests for the specified code. If no target is specified,
25
+ identify untested or under-tested code in editable files and write tests for it.
26
+
27
+ ## Conventions
28
+
29
+ ### Naming
30
+
31
+ ```
32
+ test_<what>_<condition>_<expected>
33
+ ```
34
+
35
+ Examples:
36
+
37
+ - `test_unwrap_as_with_200_response_returns_parsed_model`
38
+ - `test_unwrap_as_with_401_response_raises_authentication_error`
39
+ - `test_pagination_with_empty_response_returns_empty_list`
40
+
41
+ ### AAA Pattern
42
+
43
+ ```python
44
+ def test_<name>():
45
+ # Arrange — set up inputs and fixtures
46
+ response = mock_response(status_code=200, json={"id": 1})
47
+
48
+ # Act — invoke the system under test
49
+ result = unwrap_as(response, Order)
50
+
51
+ # Assert — verify the outcome
52
+ assert result.id == 1
53
+ ```
54
+
55
+ ### Assertions
56
+
57
+ Use the project's helpers, not raw status-code checks or isinstance:
58
+
59
+ | Test target | Use |
60
+ | -------------------- | ----------------------------------- |
61
+ | Single object (200) | `unwrap_as(response, Type)` |
62
+ | Wrapped list (200) | `unwrap_data(response, default=[])` |
63
+ | Raw array list (200) | `unwrap(response)` |
64
+ | Success (201/204) | `is_success(response)` |
65
+ | attrs UNSET field | `unwrap_unset(field, default)` |
66
+
67
+ ```python
68
+ # BAD
69
+ assert response.status_code == 200
70
+ assert isinstance(value, type(UNSET))
71
+ assert hasattr(order, "status")
72
+
73
+ # GOOD
74
+ result = unwrap_as(response, Order)
75
+ assert unwrap_unset(order.status, None) == "open"
76
+ ```
77
+
78
+ ### Fixtures
79
+
80
+ Consolidate shared setup in `tests/conftest.py`. Don't duplicate fixture logic across
81
+ test modules. Async tests need `@pytest.mark.asyncio`.
82
+
83
+ ### Coverage
84
+
85
+ Write tests for both happy path and error path. Common error paths:
86
+
87
+ - 401 → `AuthenticationError`
88
+ - 422 → `ValidationError`
89
+ - 429 → `RateLimitError`
90
+ - 5xx → `ServerError`
91
+ - Empty input → returns default (e.g. `[]`)
92
+ - UNSET field → falls back to `unwrap_unset` default
93
+
94
+ ## Constraints
95
+
96
+ - **NEVER write tests against generated files directly** —
97
+ `statuspro_public_api_client/api/**/*.py`,
98
+ `statuspro_public_api_client/models/**/*.py`, `statuspro_public_api_client/client.py`
99
+ are output of `regenerate-client`. Test the helpers, transport, and domain code that
100
+ uses them.
101
+ - Match the existing test directory structure — don't introduce a new test layout
102
+ - Don't add docstrings or type annotations to test functions unless they aid readability
103
+ - Use parametrize for tabular cases instead of duplicating test bodies
104
+
105
+ ## Process
106
+
107
+ 1. Identify untested or under-tested code (use `Grep`/`LSP findReferences` to locate)
108
+ 2. Read the implementation and existing tests for context
109
+ 3. Write tests one module at a time
110
+ 4. Run `uv run poe quick-check` to verify formatting/lint
111
+ 5. Run `uv run poe test` (or `uv run pytest path/to/test_file.py`) to verify they pass
112
+ 6. Fix any failures before moving to the next target
113
+
114
+ ## Output
115
+
116
+ After writing, summarize:
117
+
118
+ - Files added/modified
119
+ - Number of new test cases
120
+ - Any code paths still uncovered (and why)
121
+ - Verification result (`quick-check`, `test` outcomes)
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: verifier
3
+ description: >-
4
+ Lightweight verification agent that runs after implementation to confirm everything is
5
+ clean. Checks that validation passes, acceptance criteria are met, no debug code
6
+ remains, and git status is clean. Use as a final gate before opening a PR.
7
+
8
+ Examples:
9
+
10
+ <example> Context: User finished implementing a feature user: "I think this is done,
11
+ can you verify?" assistant: "I'll use the verifier agent to run final checks."
12
+ </example>
13
+
14
+ <example> Context: Automated post-implementation check assistant: "Implementation
15
+ complete. Let me run the verifier agent to confirm everything is clean." </example>
16
+ model: haiku
17
+ color: yellow
18
+ allowed-tools:
19
+ - Read
20
+ - Grep
21
+ - Glob
22
+ - Bash(git status *)
23
+ - Bash(git diff *)
24
+ - Bash(git log *)
25
+ - Bash(git show *)
26
+ - Bash(.claude/skills/shared/discover-verification-cmd.sh*)
27
+ - Bash(npm test*)
28
+ - Bash(npm run check*)
29
+ - Bash(cargo test*)
30
+ - Bash(nix flake check*)
31
+ - Bash(just check*)
32
+ - Bash(just ci*)
33
+ - Bash(make check*)
34
+ - Bash(make ci*)
35
+ - Bash(make test*)
36
+ - Bash(pytest*)
37
+ - Bash(poe test*)
38
+ - Bash(claude plugin validate*)
39
+ ---
40
+
41
+ You are a verification agent. Your job is to confirm that work is complete and ready for
42
+ review. You run a checklist and report pass/fail for each item.
43
+
44
+ ## Step 1: Discover Verification Command
45
+
46
+ Find the project's verification command by checking (in order):
47
+
48
+ - `justfile` for `check`/`ci` recipe
49
+ - `Makefile` for `ci`/`check`/`test` target
50
+ - `package.json` for `test`/`check` script
51
+ - `Cargo.toml` → `cargo test`
52
+ - `flake.nix` → `nix flake check`
53
+ - `pyproject.toml` for poe/pytest tasks
54
+
55
+ ## Checklist
56
+
57
+ Run these checks in order. Stop early if a critical check fails.
58
+
59
+ ### 1. Validation Passes
60
+
61
+ Run the discovered verification command. **ALL must pass.** If this fails, report the
62
+ failures and stop.
63
+
64
+ ### 2. Git Status Clean
65
+
66
+ ```bash
67
+ git status
68
+ git diff
69
+ ```
70
+
71
+ All changes should be committed. Report any uncommitted files.
72
+
73
+ ### 3. No Leftover Debug Code
74
+
75
+ Search changed files for common debug artifacts:
76
+
77
+ ```bash
78
+ git diff main...HEAD --name-only
79
+ ```
80
+
81
+ Then search those files for:
82
+
83
+ - `print(` or `console.log(` (unless in logging/CLI output code)
84
+ - `breakpoint()` or `debugger`
85
+ - `TODO` or `FIXME` without an issue reference (e.g., `TODO(#123)` is fine)
86
+ - Commented-out code blocks
87
+ - `noqa` or `type: ignore` additions
88
+
89
+ ### 4. No Forbidden Patterns
90
+
91
+ Check that no shortcuts were taken:
92
+
93
+ - No `--no-verify` in recent git history
94
+ - No `noqa` or `type: ignore` added in the diff
95
+ - No files excluded from linting
96
+
97
+ ### 5. Commit Quality
98
+
99
+ ```bash
100
+ git log main..HEAD --oneline
101
+ ```
102
+
103
+ - Commits use conventional format (`feat(scope):`, `fix(scope):`, etc.)
104
+ - Commit messages are descriptive
105
+
106
+ ## Output Format
107
+
108
+ ```
109
+ ## Verification Report
110
+
111
+ ✅ Validation: passes
112
+ ✅ Git status: clean
113
+ ✅ No debug code found
114
+ ✅ No forbidden patterns
115
+ ✅ Commit quality: good
116
+
117
+ **Result: READY FOR REVIEW**
118
+ ```
119
+
120
+ Or if issues found:
121
+
122
+ ```
123
+ ## Verification Report
124
+
125
+ ✅ Validation: passes
126
+ ❌ Git status: 2 uncommitted files
127
+ ⚠️ Debug code: print() found in services/foo.py:42
128
+ ✅ No forbidden patterns
129
+ ✅ Commit quality: good
130
+
131
+ **Result: NOT READY — fix issues above**
132
+ ```
133
+
134
+ ## Important
135
+
136
+ - Be fast — this is a checklist, not a deep review
137
+ - Report facts, not opinions
138
+ - Don't fix anything — just report what needs fixing
139
+ - If the verification command passes, trust it — don't second-guess the tools
140
+
141
+ ```
142
+
143
+ ```
@@ -0,0 +1,33 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "matcher": "Edit|Write",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "f='{file_path}'; case \"$f\" in *.py) if echo \"$f\" | grep -qE '(statuspro_public_api_client/(api/|models/|client\\.py))'; then echo 'STOP: this is a generated file. Run `uv run poe regenerate-client` (then `uv run poe generate-pydantic`) instead of editing directly.' >&2; exit 2; fi; uv run ruff format \"$f\" >/dev/null 2>&1 || true; uv run ruff check --fix \"$f\" >/dev/null 2>&1 || true ;; *.md) pnpm exec prettier --write \"$f\" >/dev/null 2>&1 || true ;; esac; exit 0"
10
+ },
11
+ {
12
+ "type": "command",
13
+ "command": "f='{file_path}'; if echo \"$f\" | grep -qE 'statuspro_mcp_server/.*/tools/'; then echo 'REMINDER: if you changed MCP tool parameters, update statuspro_mcp_server/.../resources/help.py to stay in sync.'; fi; exit 0"
14
+ }
15
+ ]
16
+ }
17
+ ],
18
+ "Stop": [
19
+ {
20
+ "hooks": [
21
+ {
22
+ "type": "command",
23
+ "command": "changed=$( { git diff --name-only 2>/dev/null; git diff --name-only --cached 2>/dev/null; } | sort -u | wc -l | tr -d ' '); if [ \"$changed\" -gt 0 ]; then uv run poe agent-check 2>&1 | tail -30 || true; fi; exit 0"
24
+ },
25
+ {
26
+ "type": "command",
27
+ "command": "changed=$( { git diff --name-only 2>/dev/null; git diff --name-only --cached 2>/dev/null; git log --diff-filter=ACMR --name-only --pretty=format: --since='4 hours ago' 2>/dev/null; } | sort -u | wc -l | tr -d ' '); if [ \"$changed\" -gt 3 ]; then echo \"Session touched $changed files — consider /harness retro to capture learnings\"; fi; exit 0"
28
+ }
29
+ ]
30
+ }
31
+ ]
32
+ }
33
+ }