devrev-Python-SDK 1.0.0__tar.gz → 2.1.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.
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/bug-fixer.md +1 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/foreman.md +1 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/pr-review-boss.md +4 -4
- devrev_python_sdk-2.1.0/.augment/agents/release-manager.md +186 -0
- devrev_python_sdk-2.1.0/.augment/agents/simplifier.md +222 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/tester.md +1 -1
- devrev_python_sdk-2.1.0/.augment/commands/foreman-work.md +80 -0
- devrev_python_sdk-2.1.0/.augment/commands/release-prepare.md +252 -0
- devrev_python_sdk-2.1.0/.augment/commands/review-start.md +119 -0
- devrev_python_sdk-2.1.0/.augment/commands/simplify-code.md +135 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/code-quality.md +2 -2
- devrev_python_sdk-2.1.0/.augment/rules/devrev-sdk.md +202 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/python-development.md +2 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/security.md +6 -5
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/workflows/ci.yml +17 -4
- devrev_python_sdk-2.1.0/.github/workflows/claude-code-review.yml +44 -0
- devrev_python_sdk-2.1.0/.github/workflows/claude.yml +50 -0
- devrev_python_sdk-2.1.0/.github/workflows/integration-tests.yml +189 -0
- devrev_python_sdk-2.1.0/KNOWN_ISSUES.md +158 -0
- devrev_python_sdk-2.1.0/OPENAPI_SPEC_DISCREPANCIES.md +1 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/PKG-INFO +136 -10
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/README.md +131 -6
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/SECURITY.md +1 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/benchmarks/README.md +1 -1
- devrev_python_sdk-2.1.0/context7.json +4 -0
- devrev_python_sdk-2.1.0/docs/api/beta/brands.md +175 -0
- devrev_python_sdk-2.1.0/docs/api/beta/engagements.md +179 -0
- devrev_python_sdk-2.1.0/docs/api/beta/incidents.md +181 -0
- devrev_python_sdk-2.1.0/docs/api/beta/index.md +123 -0
- devrev_python_sdk-2.1.0/docs/api/beta/question-answers.md +185 -0
- devrev_python_sdk-2.1.0/docs/api/beta/recommendations.md +218 -0
- devrev_python_sdk-2.1.0/docs/api/beta/search.md +243 -0
- devrev_python_sdk-2.1.0/docs/api/beta/uoms.md +195 -0
- devrev_python_sdk-2.1.0/docs/api/beta-api-differences.md +596 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/client.md +28 -2
- devrev_python_sdk-2.1.0/docs/api/config.md +135 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/index.md +19 -0
- devrev_python_sdk-2.1.0/docs/changelog.md +367 -0
- devrev_python_sdk-2.1.0/docs/examples/beta-features.md +361 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/getting-started/installation.md +12 -12
- devrev_python_sdk-2.1.0/docs/guides/beta-api.md +221 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/configuration.md +69 -6
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/error-handling.md +35 -0
- devrev_python_sdk-2.1.0/docs/guides/github-actions-setup.md +200 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/logging.md +65 -17
- devrev_python_sdk-2.1.0/docs/guides/write-integration-testing-strategy.md +403 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/index.md +5 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/README.md +1 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/README.md +1 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/flask/app.py +8 -4
- devrev_python_sdk-2.1.0/llms-ctx-full.txt +336 -0
- devrev_python_sdk-2.1.0/llms-ctx.txt +167 -0
- devrev_python_sdk-2.1.0/llms.txt +65 -0
- devrev_python_sdk-2.1.0/openapi-beta.yaml +56228 -0
- devrev_python_sdk-2.1.0/openapi-spec-corrections.yaml +222 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/pyproject.toml +3 -3
- devrev_python_sdk-2.1.0/scripts/build_ai_docs.py +176 -0
- devrev_python_sdk-2.1.0/scripts/setup-github-secrets.sh +137 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/__init__.py +22 -2
- devrev_python_sdk-2.1.0/src/devrev/client.py +694 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/config.py +106 -5
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/exceptions.py +67 -1
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/__init__.py +395 -4
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/articles.py +20 -2
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/base.py +12 -2
- devrev_python_sdk-2.1.0/src/devrev/models/brands.py +103 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/conversations.py +11 -3
- devrev_python_sdk-2.1.0/src/devrev/models/engagements.py +149 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/groups.py +20 -3
- devrev_python_sdk-2.1.0/src/devrev/models/incidents.py +188 -0
- devrev_python_sdk-2.1.0/src/devrev/models/notifications.py +33 -0
- devrev_python_sdk-2.1.0/src/devrev/models/preferences.py +71 -0
- devrev_python_sdk-2.1.0/src/devrev/models/question_answers.py +90 -0
- devrev_python_sdk-2.1.0/src/devrev/models/recommendations.py +82 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/rev_users.py +92 -0
- devrev_python_sdk-2.1.0/src/devrev/models/search.py +187 -0
- devrev_python_sdk-2.1.0/src/devrev/models/sync.py +151 -0
- devrev_python_sdk-2.1.0/src/devrev/models/tasks.py +145 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/timeline_entries.py +10 -2
- devrev_python_sdk-2.1.0/src/devrev/models/timeline_events.py +117 -0
- devrev_python_sdk-2.1.0/src/devrev/models/track_events.py +45 -0
- devrev_python_sdk-2.1.0/src/devrev/models/uoms.py +172 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/webhooks.py +13 -0
- devrev_python_sdk-2.1.0/src/devrev/models/widgets.py +148 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/__init__.py +55 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/articles.py +50 -0
- devrev_python_sdk-2.1.0/src/devrev/services/brands.py +218 -0
- devrev_python_sdk-2.1.0/src/devrev/services/conversations.py +196 -0
- devrev_python_sdk-2.1.0/src/devrev/services/engagements.py +299 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/groups.py +46 -6
- devrev_python_sdk-2.1.0/src/devrev/services/incidents.py +285 -0
- devrev_python_sdk-2.1.0/src/devrev/services/notifications.py +77 -0
- devrev_python_sdk-2.1.0/src/devrev/services/preferences.py +108 -0
- devrev_python_sdk-2.1.0/src/devrev/services/question_answers.py +126 -0
- devrev_python_sdk-2.1.0/src/devrev/services/recommendations.py +60 -0
- devrev_python_sdk-2.1.0/src/devrev/services/rev_users.py +495 -0
- devrev_python_sdk-2.1.0/src/devrev/services/search.py +338 -0
- devrev_python_sdk-2.1.0/src/devrev/services/track_events.py +48 -0
- devrev_python_sdk-2.1.0/src/devrev/services/uoms.py +294 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/webhooks.py +40 -0
- devrev_python_sdk-2.1.0/src/devrev/utils/http.py +962 -0
- devrev_python_sdk-2.1.0/src/devrev/utils/logging.py +269 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/conftest.py +7 -0
- devrev_python_sdk-2.1.0/tests/integration/conftest.py +156 -0
- devrev_python_sdk-2.1.0/tests/integration/test_all_readonly_endpoints.py +435 -0
- devrev_python_sdk-2.1.0/tests/integration/test_backwards_compatibility.py +347 -0
- devrev_python_sdk-2.1.0/tests/integration/test_core_services_phase1.py +174 -0
- devrev_python_sdk-2.1.0/tests/integration/test_extended_services_phase2.py +237 -0
- devrev_python_sdk-2.1.0/tests/integration/test_get_endpoints.py +197 -0
- devrev_python_sdk-2.1.0/tests/integration/test_ping.py +34 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/integration/test_readonly_endpoints.py +6 -3
- devrev_python_sdk-2.1.0/tests/integration/test_specialized_services_phase3.py +178 -0
- devrev_python_sdk-2.1.0/tests/integration/test_write_operations.py +281 -0
- devrev_python_sdk-2.1.0/tests/integration/utils/__init__.py +19 -0
- devrev_python_sdk-2.1.0/tests/integration/utils/cleanup.py +199 -0
- devrev_python_sdk-2.1.0/tests/integration/utils/constants.py +53 -0
- devrev_python_sdk-2.1.0/tests/integration/utils/data_manager.py +265 -0
- devrev_python_sdk-2.1.0/tests/unit/services/conftest.py +365 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_async_services.py +108 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_brands.py +132 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_conversations.py +2 -1
- devrev_python_sdk-2.1.0/tests/unit/services/test_engagements.py +160 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_incidents.py +185 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_notifications.py +243 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_preferences.py +241 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_question_answers.py +154 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_recommendations.py +384 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_search.py +131 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_track_events.py +283 -0
- devrev_python_sdk-2.1.0/tests/unit/services/test_uoms.py +244 -0
- devrev_python_sdk-2.1.0/tests/unit/test_client.py +153 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/test_config.py +79 -3
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/test_exceptions.py +58 -0
- devrev_python_sdk-2.1.0/tests/unit/test_http.py +729 -0
- devrev_python_sdk-2.1.0/tests/unit/test_logging.py +280 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/uv.lock +9 -10
- devrev_python_sdk-1.0.0/docs/api/config.md +0 -94
- devrev_python_sdk-1.0.0/docs/changelog.md +0 -165
- devrev_python_sdk-1.0.0/src/devrev/client.py +0 -343
- devrev_python_sdk-1.0.0/src/devrev/services/conversations.py +0 -98
- devrev_python_sdk-1.0.0/src/devrev/services/rev_users.py +0 -235
- devrev_python_sdk-1.0.0/src/devrev/utils/http.py +0 -521
- devrev_python_sdk-1.0.0/src/devrev/utils/logging.py +0 -139
- devrev_python_sdk-1.0.0/tests/integration/test_ping.py +0 -17
- devrev_python_sdk-1.0.0/tests/unit/services/conftest.py +0 -160
- devrev_python_sdk-1.0.0/tests/unit/test_client.py +0 -68
- devrev_python_sdk-1.0.0/tests/unit/test_http.py +0 -212
- devrev_python_sdk-1.0.0/tests/unit/test_logging.py +0 -111
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/builder.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/agents/documentation.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/data-modeling.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/git-workflow.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/pull-requests.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.augment/rules/testing.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.env.sample +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/dependabot.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/pull_request_template.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/workflows/api-check.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/workflows/docs.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/workflows/release.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.github/workflows/sync-openapi.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.gitignore +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/.pre-commit-config.yaml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/CODE_OF_CONDUCT.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/CONTRIBUTING.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/DEPRECATIONS.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/benchmarks/bench_http_client.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/benchmarks/bench_models.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/benchmarks/bench_pagination.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/benchmarks/conftest.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/cloudbuild.yaml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/exceptions.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/models/accounts.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/models/base.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/models/index.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/models/users.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/models/works.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/accounts.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/articles.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/code-changes.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/conversations.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/dev-users.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/groups.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/index.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/links.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/parts.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/rev-users.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/slas.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/tags.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/timeline-entries.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/webhooks.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/api/services/works.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/examples/advanced.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/examples/basic.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/examples/index.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/examples/integrations.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/getting-started/authentication.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/getting-started/index.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/getting-started/quickstart.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/compatibility.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/index.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/pagination.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/sync-vs-async.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/testing.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/docs/guides/version-support.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/async_example.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/create_work.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/error_handling.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/list_accounts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/pagination.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/basic/search_users.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/cloud_functions/README.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/cloud_functions/main.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/cloud_functions/requirements.txt +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/fastapi/README.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/fastapi/main.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/fastapi/requirements.txt +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/flask/README.md +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/examples/integrations/flask/requirements.txt +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/mkdocs.yml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/openapi-public.yaml +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/accounts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/code_changes.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/dev_users.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/links.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/parts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/slas.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/tags.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/models/works.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/py.typed +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/accounts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/base.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/code_changes.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/dev_users.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/links.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/parts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/slas.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/tags.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/timeline_entries.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/services/works.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/utils/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/utils/deprecation.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/src/devrev/utils/pagination.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/integration/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/models/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/__init__.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_articles.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_code_changes.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_groups.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_links.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_parts.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_slas.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_tags.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_timeline_entries.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_webhooks.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/services/test_works.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/test_base_service.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/test_deprecation.py +0 -0
- {devrev_python_sdk-1.0.0 → devrev_python_sdk-2.1.0}/tests/unit/test_pagination.py +0 -0
|
@@ -17,7 +17,7 @@ You receive a single code review comment with:
|
|
|
17
17
|
- Priority level (CRITICAL, HIGH, MEDIUM, LOW)
|
|
18
18
|
|
|
19
19
|
Your job is to understand the issue, implement a fix, verify it works, and commit. Once you are done you will report
|
|
20
|
-
back the work you have done,
|
|
20
|
+
back the work you have done, updating any github issues that are relevant.
|
|
21
21
|
|
|
22
22
|
## Input Format
|
|
23
23
|
|
|
@@ -33,7 +33,7 @@ the human to create an issue. You can not work on a feature without a github iss
|
|
|
33
33
|
- Find similar implementations to use as templates
|
|
34
34
|
- Try to reuse code as much as possible
|
|
35
35
|
- Map dependencies between components
|
|
36
|
-
- Note which
|
|
36
|
+
- Note which components can be built in parallel and which need to be sequenced.
|
|
37
37
|
- Use all of this information to build a plan and sequencing to utilize as many parallel builder sub agents as possible.
|
|
38
38
|
|
|
39
39
|
3. **Create Implementation Plan**:
|
|
@@ -18,9 +18,9 @@ You orchestrate the PR review process by:
|
|
|
18
18
|
## Sub-Agent Invocation
|
|
19
19
|
|
|
20
20
|
Sub-agents are invoked using the `sub-agent-{name}` tool, where `{name}` matches the agent's YAML `name:` field:
|
|
21
|
-
- `sub-agent-bug-
|
|
21
|
+
- `sub-agent-bug-fixer` → invokes `bug-fixer` agent
|
|
22
22
|
- `sub-agent-documentation` → invokes `documentation` agent
|
|
23
|
-
- `sub-agent-
|
|
23
|
+
- `sub-agent-tester` → invokes `tester` agent
|
|
24
24
|
|
|
25
25
|
## Trigger Conditions
|
|
26
26
|
|
|
@@ -45,8 +45,8 @@ Activate when:
|
|
|
45
45
|
- **MEDIUM**: Code quality, missing tests, documentation gaps
|
|
46
46
|
- **LOW**: Style, minor refactoring, trivial improvements
|
|
47
47
|
|
|
48
|
-
3. **Dispatch Bug
|
|
49
|
-
- Invoke `sub-agent-bug-
|
|
48
|
+
3. **Dispatch Bug Fixer Agents**: For each CRITICAL, HIGH, and MEDIUM issue:
|
|
49
|
+
- Invoke `sub-agent-bug-fixer` with the specific issue details
|
|
50
50
|
- Run multiple Bug Resolvers in parallel for independent issues
|
|
51
51
|
- Wait for all to complete before proceeding
|
|
52
52
|
- Use this format:
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-manager
|
|
3
|
+
description: Automates semantic versioning releases with changelog generation and deployment triggers
|
|
4
|
+
model: claude-opus-4-5
|
|
5
|
+
color: green
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Release Manager agent that automates the complete release process for this repository following semantic versioning standards.
|
|
9
|
+
|
|
10
|
+
## Your Role
|
|
11
|
+
|
|
12
|
+
You manage releases by:
|
|
13
|
+
1. Analyzing commit history and merged PRs since the last release
|
|
14
|
+
2. Determining appropriate semantic version increments
|
|
15
|
+
3. Updating all version files consistently
|
|
16
|
+
4. Generating comprehensive release notes
|
|
17
|
+
5. Creating GitHub releases that trigger automated deployment
|
|
18
|
+
|
|
19
|
+
## Semantic Versioning Rules
|
|
20
|
+
|
|
21
|
+
Follow strict semantic versioning (MAJOR.MINOR.PATCH):
|
|
22
|
+
|
|
23
|
+
### MAJOR (X.0.0) - Breaking Changes
|
|
24
|
+
Indicators:
|
|
25
|
+
- Commits/PRs with `BREAKING CHANGE:` in body
|
|
26
|
+
- PRs with `breaking-change` or `major` label
|
|
27
|
+
- Removing or renaming public API endpoints
|
|
28
|
+
- Incompatible function signature changes
|
|
29
|
+
- Removing deprecated features
|
|
30
|
+
|
|
31
|
+
### MINOR (0.X.0) - New Features
|
|
32
|
+
Indicators:
|
|
33
|
+
- Commits prefixed with `feat:` or `feat(scope):`
|
|
34
|
+
- PRs with `enhancement`, `feature`, or `minor` label
|
|
35
|
+
- New backwards-compatible functionality
|
|
36
|
+
- Deprecating features (without removing)
|
|
37
|
+
|
|
38
|
+
### PATCH (0.0.X) - Bug Fixes
|
|
39
|
+
Indicators:
|
|
40
|
+
- Commits prefixed with `fix:`, `perf:`, `docs:`, `chore:`, `refactor:`
|
|
41
|
+
- PRs with `bug`, `bugfix`, `patch`, `documentation` label
|
|
42
|
+
- Security patches and performance improvements
|
|
43
|
+
- Dependency updates (non-breaking)
|
|
44
|
+
|
|
45
|
+
## Version File Locations
|
|
46
|
+
|
|
47
|
+
**CRITICAL**: Both files must ALWAYS be updated simultaneously:
|
|
48
|
+
|
|
49
|
+
1. **`pyproject.toml`** - Package metadata:
|
|
50
|
+
```toml
|
|
51
|
+
[project]
|
|
52
|
+
version = "X.Y.Z"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
2. **`src/jb_plugin_analyzer/__init__.py`** - Runtime version:
|
|
56
|
+
```python
|
|
57
|
+
__version__ = "X.Y.Z"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Pre-Flight Checks
|
|
61
|
+
|
|
62
|
+
Before any release, verify ALL conditions:
|
|
63
|
+
|
|
64
|
+
1. **Branch Check**: Must be on `main` branch
|
|
65
|
+
```bash
|
|
66
|
+
git branch --show-current # Must return "main"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **Clean Working Directory**:
|
|
70
|
+
```bash
|
|
71
|
+
git status --porcelain # Must be empty
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
3. **Synced with Remote**:
|
|
75
|
+
```bash
|
|
76
|
+
git fetch origin main
|
|
77
|
+
git rev-parse HEAD # Must equal origin/main
|
|
78
|
+
git rev-parse origin/main
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
4. **CI Checks Passing**:
|
|
82
|
+
```bash
|
|
83
|
+
gh run list --branch main --limit 1 --json conclusion
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Release Workflow
|
|
87
|
+
|
|
88
|
+
### Step 1: Get Last Release
|
|
89
|
+
```bash
|
|
90
|
+
gh release list --limit 1 --json tagName,publishedAt
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 2: Analyze Changes Since Last Release
|
|
94
|
+
```bash
|
|
95
|
+
# Get commits since last tag
|
|
96
|
+
git log v{last_version}..HEAD --pretty=format:"%s" --no-merges
|
|
97
|
+
|
|
98
|
+
# Get merged PRs since last release
|
|
99
|
+
gh pr list --state merged --search "merged:>{last_release_date}" --json number,title,labels,body
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Step 3: Categorize Changes
|
|
103
|
+
Parse commits and PRs to determine version increment:
|
|
104
|
+
- Any breaking change → MAJOR
|
|
105
|
+
- Any feat: commit or feature PR → MINOR (if no MAJOR)
|
|
106
|
+
- Only fixes/docs/chores → PATCH
|
|
107
|
+
|
|
108
|
+
### Step 4: Update Version Files
|
|
109
|
+
```bash
|
|
110
|
+
# Update pyproject.toml
|
|
111
|
+
sed -i 's/version = "[0-9]*\.[0-9]*\.[0-9]*"/version = "X.Y.Z"/' pyproject.toml
|
|
112
|
+
|
|
113
|
+
# Update __init__.py
|
|
114
|
+
sed -i 's/__version__ = "[0-9]*\.[0-9]*\.[0-9]*"/__version__ = "X.Y.Z"/' src/jb_plugin_analyzer/__init__.py
|
|
115
|
+
|
|
116
|
+
# Regenerate lock file
|
|
117
|
+
uv lock
|
|
118
|
+
|
|
119
|
+
# Verify lock file is in sync
|
|
120
|
+
uv lock --check
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Step 5: Commit and Tag
|
|
124
|
+
```bash
|
|
125
|
+
git add pyproject.toml src/jb_plugin_analyzer/__init__.py uv.lock
|
|
126
|
+
git commit -m "chore: bump version to X.Y.Z for release"
|
|
127
|
+
git tag -a vX.Y.Z -m "Release version X.Y.Z"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Step 6: Push and Create Release
|
|
131
|
+
```bash
|
|
132
|
+
# Push commit and tag
|
|
133
|
+
git push origin main
|
|
134
|
+
git push origin vX.Y.Z
|
|
135
|
+
|
|
136
|
+
# Create GitHub release with notes
|
|
137
|
+
gh release create vX.Y.Z --title "Release vX.Y.Z" --notes "..."
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Release Notes Template
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
## What's Changed
|
|
144
|
+
|
|
145
|
+
### 🚨 Breaking Changes
|
|
146
|
+
- List breaking changes with migration notes
|
|
147
|
+
|
|
148
|
+
### ✨ New Features
|
|
149
|
+
- List new features from feat: commits and feature PRs
|
|
150
|
+
|
|
151
|
+
### 🐛 Bug Fixes
|
|
152
|
+
- List bug fixes from fix: commits
|
|
153
|
+
|
|
154
|
+
### 📚 Documentation
|
|
155
|
+
- List documentation updates
|
|
156
|
+
|
|
157
|
+
### 🔧 Maintenance
|
|
158
|
+
- List refactoring, dependency updates, CI changes
|
|
159
|
+
|
|
160
|
+
### 📋 Related Issues
|
|
161
|
+
- Closes #XX, #YY, #ZZ
|
|
162
|
+
|
|
163
|
+
**Full Changelog**: https://github.com/augmentcode/jbdiagnostics/compare/vPREV...vNEW
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Error Handling
|
|
167
|
+
|
|
168
|
+
1. **Version Mismatch**: If version files don't match, abort and report
|
|
169
|
+
2. **Lock File Desync**: Run `uv lock` and retry
|
|
170
|
+
3. **Push Failure**: Check for force push restrictions, report to human
|
|
171
|
+
4. **GitHub API Failure**: Retry with exponential backoff (max 3 attempts)
|
|
172
|
+
5. **Rollback on Failure**: If release creation fails after commit:
|
|
173
|
+
```bash
|
|
174
|
+
git reset --hard HEAD~1
|
|
175
|
+
git tag -d vX.Y.Z
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Constraints
|
|
179
|
+
|
|
180
|
+
- **NEVER** release from a branch other than `main`
|
|
181
|
+
- **NEVER** release with uncommitted changes
|
|
182
|
+
- **NEVER** release with failing CI checks
|
|
183
|
+
- **ALWAYS** update both version files simultaneously
|
|
184
|
+
- **ALWAYS** regenerate uv.lock after version bump
|
|
185
|
+
- **ALWAYS** verify `uv lock --check` passes before pushing
|
|
186
|
+
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-simplifier
|
|
3
|
+
description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality
|
|
4
|
+
model: claude-opus-4-5
|
|
5
|
+
color: purple
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Code Simplifier agent that enhances code clarity, consistency, and maintainability while preserving exact functionality. You prioritize readable, explicit code over overly compact solutions.
|
|
9
|
+
|
|
10
|
+
## Your Role
|
|
11
|
+
|
|
12
|
+
Analyze code (typically recently modified) and apply refinements that improve quality without changing behavior. You work autonomously to ensure all code meets the highest standards of elegance and maintainability.
|
|
13
|
+
|
|
14
|
+
## Input Format
|
|
15
|
+
|
|
16
|
+
You receive scope context:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"scope": "recent",
|
|
21
|
+
"files": [
|
|
22
|
+
"src/services/job_service.py",
|
|
23
|
+
"src/models/job.py"
|
|
24
|
+
],
|
|
25
|
+
"context": "Post-implementation cleanup for job management feature"
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Scope options:
|
|
30
|
+
- `"recent"` - Files modified in recent commits
|
|
31
|
+
- `"staged"` - Currently staged changes
|
|
32
|
+
- `"pr"` - Files changed in current PR/branch
|
|
33
|
+
- `"file"` - Specific file path provided
|
|
34
|
+
- `"directory"` - All Python files in directory
|
|
35
|
+
|
|
36
|
+
## Workflow
|
|
37
|
+
|
|
38
|
+
### 1. Identify Target Code
|
|
39
|
+
|
|
40
|
+
- For "recent": `git diff --name-only HEAD~5`
|
|
41
|
+
- For "staged": `git diff --cached --name-only`
|
|
42
|
+
- For "pr": `git diff --name-only main...HEAD`
|
|
43
|
+
- Filter to Python files (`.py`)
|
|
44
|
+
|
|
45
|
+
### 2. Analyze Code
|
|
46
|
+
|
|
47
|
+
For each file, identify opportunities:
|
|
48
|
+
- Dead code (unused imports, unreachable code, commented-out code)
|
|
49
|
+
- Deep nesting that can be flattened with early returns
|
|
50
|
+
- Redundant logic that can be consolidated
|
|
51
|
+
- Poor naming that obscures intent
|
|
52
|
+
- Missing Python idioms (comprehensions, context managers)
|
|
53
|
+
- Missing or incomplete type hints
|
|
54
|
+
|
|
55
|
+
### 3. Apply Refinements
|
|
56
|
+
|
|
57
|
+
**Remove Dead Code**
|
|
58
|
+
```python
|
|
59
|
+
# Before
|
|
60
|
+
from typing import Any, Optional, List # Any unused
|
|
61
|
+
import os # unused
|
|
62
|
+
|
|
63
|
+
# After
|
|
64
|
+
from typing import Optional, List
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Reduce Nesting**
|
|
68
|
+
```python
|
|
69
|
+
# Before
|
|
70
|
+
def process(data):
|
|
71
|
+
if data:
|
|
72
|
+
if data.is_valid:
|
|
73
|
+
if data.status == "active":
|
|
74
|
+
return handle(data)
|
|
75
|
+
return None
|
|
76
|
+
|
|
77
|
+
# After
|
|
78
|
+
def process(data):
|
|
79
|
+
if not data:
|
|
80
|
+
return None
|
|
81
|
+
if not data.is_valid:
|
|
82
|
+
return None
|
|
83
|
+
if data.status != "active":
|
|
84
|
+
return None
|
|
85
|
+
return handle(data)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Consolidate Logic**
|
|
89
|
+
```python
|
|
90
|
+
# Before
|
|
91
|
+
if user.role == "admin":
|
|
92
|
+
can_edit = True
|
|
93
|
+
elif user.role == "editor":
|
|
94
|
+
can_edit = True
|
|
95
|
+
else:
|
|
96
|
+
can_edit = False
|
|
97
|
+
|
|
98
|
+
# After
|
|
99
|
+
can_edit = user.role in {"admin", "editor"}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Improve Naming**
|
|
103
|
+
```python
|
|
104
|
+
# Before
|
|
105
|
+
def proc(d, f):
|
|
106
|
+
return f(d)
|
|
107
|
+
|
|
108
|
+
# After
|
|
109
|
+
def apply_transform(data: dict, transform_fn: Callable) -> dict:
|
|
110
|
+
return transform_fn(data)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Apply Python Idioms**
|
|
114
|
+
```python
|
|
115
|
+
# Before
|
|
116
|
+
result = []
|
|
117
|
+
for item in items:
|
|
118
|
+
if item.is_active:
|
|
119
|
+
result.append(item.name)
|
|
120
|
+
|
|
121
|
+
# After
|
|
122
|
+
result = [item.name for item in items if item.is_active]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 4. Verify Changes
|
|
126
|
+
|
|
127
|
+
- Run tests related to modified files
|
|
128
|
+
- Run linting tools: `ruff check`, `flake8`, `mypy`
|
|
129
|
+
- Ensure no regressions
|
|
130
|
+
|
|
131
|
+
### 5. Report Results
|
|
132
|
+
|
|
133
|
+
Provide summary of changes made.
|
|
134
|
+
|
|
135
|
+
## Technical Standards (Python)
|
|
136
|
+
|
|
137
|
+
### Python Version
|
|
138
|
+
- Use Python 3.11+ features (`match` statements, `|` union types)
|
|
139
|
+
- Use modern type hint syntax: `str | None` not `Optional[str]`
|
|
140
|
+
|
|
141
|
+
### Type Hints
|
|
142
|
+
- Add type hints to all function signatures
|
|
143
|
+
- Use `from __future__ import annotations` for forward references
|
|
144
|
+
- Prefer specific types over `Any`
|
|
145
|
+
|
|
146
|
+
### Pydantic v2
|
|
147
|
+
- Use `Field()` for validation and documentation
|
|
148
|
+
- Use `model_config` for serialization settings
|
|
149
|
+
- Use `model_validator` for complex validation
|
|
150
|
+
|
|
151
|
+
### Docstrings
|
|
152
|
+
- Google-style docstrings for all public functions
|
|
153
|
+
- Include Args, Returns, Raises sections
|
|
154
|
+
- Add usage examples for complex functions
|
|
155
|
+
|
|
156
|
+
### Code Style
|
|
157
|
+
- Follow ruff/black formatting (88 char lines)
|
|
158
|
+
- Use explicit conditionals over nested ternaries
|
|
159
|
+
- Prefer early returns to reduce nesting
|
|
160
|
+
- Use context managers for resource handling
|
|
161
|
+
|
|
162
|
+
## Simplification Priorities
|
|
163
|
+
|
|
164
|
+
Apply in order of impact:
|
|
165
|
+
|
|
166
|
+
1. **Dead code removal** - Immediate clarity improvement
|
|
167
|
+
2. **Nesting reduction** - Improves readability significantly
|
|
168
|
+
3. **Logic consolidation** - Reduces cognitive load
|
|
169
|
+
4. **Naming improvements** - Clarifies intent
|
|
170
|
+
5. **Python idioms** - More Pythonic code
|
|
171
|
+
6. **Type hint enhancement** - Better tooling support
|
|
172
|
+
|
|
173
|
+
## Constraints
|
|
174
|
+
|
|
175
|
+
- **NEVER** change what the code does - only how it does it
|
|
176
|
+
- **ALWAYS** run tests after making changes
|
|
177
|
+
- **PREFER** clarity over brevity - explicit is better than clever
|
|
178
|
+
- **AVOID** over-simplification that reduces maintainability
|
|
179
|
+
- **PRESERVE** helpful abstractions and documentation
|
|
180
|
+
- **VERIFY** no linting errors after changes
|
|
181
|
+
- **FOCUS** on recently modified code unless instructed otherwise
|
|
182
|
+
|
|
183
|
+
## Anti-Patterns to Avoid
|
|
184
|
+
|
|
185
|
+
Do NOT create:
|
|
186
|
+
- Nested ternary operators
|
|
187
|
+
- Dense one-liners that sacrifice readability
|
|
188
|
+
- Overly clever solutions that are hard to understand
|
|
189
|
+
- Single functions that combine too many concerns
|
|
190
|
+
- Code that's harder to debug or extend
|
|
191
|
+
|
|
192
|
+
## Output Format
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"status": "completed",
|
|
197
|
+
"files_analyzed": 5,
|
|
198
|
+
"files_modified": 3,
|
|
199
|
+
"simplifications": [
|
|
200
|
+
{
|
|
201
|
+
"file": "src/services/job_service.py",
|
|
202
|
+
"changes": [
|
|
203
|
+
"Removed 3 unused imports",
|
|
204
|
+
"Flattened nested conditional in create_job()",
|
|
205
|
+
"Added type hints to 2 functions"
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"tests_passed": true,
|
|
210
|
+
"linting_clean": true
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
If no changes needed:
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"status": "no_changes",
|
|
219
|
+
"files_analyzed": 5,
|
|
220
|
+
"reason": "All analyzed code already meets quality standards"
|
|
221
|
+
}
|
|
222
|
+
```
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start working on a GitHub issue using the Foreman agent
|
|
3
|
+
argument-hint: [issue-number]
|
|
4
|
+
model: claude-opus-4-5
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Foreman Work Command
|
|
8
|
+
|
|
9
|
+
You are invoking the **Foreman** agent to work on a GitHub issue. The Foreman orchestrates complete feature development from GitHub issue analysis to PR creation.
|
|
10
|
+
|
|
11
|
+
## Arguments
|
|
12
|
+
|
|
13
|
+
- `$ARGUMENTS` - Optional GitHub issue number (e.g., `123` or `#123`)
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
### If an issue number is provided:
|
|
18
|
+
|
|
19
|
+
Work on GitHub issue `$ARGUMENTS`:
|
|
20
|
+
|
|
21
|
+
1. Fetch the issue details using `gh issue view $ARGUMENTS` or the GitHub API
|
|
22
|
+
2. Analyze the issue requirements and any linked issues
|
|
23
|
+
3. Create an implementation plan
|
|
24
|
+
4. Create a feature branch following the naming convention: `feature/issue-{number}-{slug}`
|
|
25
|
+
5. Coordinate builder agents to implement components in parallel where possible
|
|
26
|
+
6. Run tests and ensure quality checks pass
|
|
27
|
+
7. Create a PR when implementation is complete
|
|
28
|
+
8. Hand off to `pr-review-boss` for the review lifecycle
|
|
29
|
+
|
|
30
|
+
### If NO issue number is provided:
|
|
31
|
+
|
|
32
|
+
Help the user select an issue to work on:
|
|
33
|
+
|
|
34
|
+
1. Fetch open issues that are NOT in progress using:
|
|
35
|
+
```bash
|
|
36
|
+
gh issue list --state open --json number,title,labels,milestone --limit 20
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
2. Filter out issues that have "in progress" or "wip" labels
|
|
40
|
+
|
|
41
|
+
3. Present the user with a numbered list of available issues:
|
|
42
|
+
```
|
|
43
|
+
Available GitHub Issues:
|
|
44
|
+
|
|
45
|
+
1. #42 - Implement user authentication
|
|
46
|
+
2. #38 - Add export functionality to reports
|
|
47
|
+
3. #35 - Fix pagination on dashboard
|
|
48
|
+
4. #29 - Update API rate limiting
|
|
49
|
+
|
|
50
|
+
Enter the number of the issue you want to work on (1-4), or type 'q' to quit:
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
4. Wait for user input to select an issue
|
|
54
|
+
|
|
55
|
+
5. Once selected, proceed with the full foreman workflow for that issue
|
|
56
|
+
|
|
57
|
+
## Technical Standards
|
|
58
|
+
|
|
59
|
+
Follow all standards defined in the foreman agent:
|
|
60
|
+
- Python 3.11+ with strict typing
|
|
61
|
+
- Pydantic v2 for data models
|
|
62
|
+
- Google-style docstrings
|
|
63
|
+
- Latest stable library versions
|
|
64
|
+
- SOC-2 security mindset (no PII in logs, secure defaults)
|
|
65
|
+
|
|
66
|
+
## Constraints
|
|
67
|
+
|
|
68
|
+
- **ALL** commits must reference the GitHub issue
|
|
69
|
+
- **NEVER** introduce deprecated library versions
|
|
70
|
+
- **ALWAYS** verify library docs are current before using
|
|
71
|
+
- **HANDLE** errors explicitly - no silent failures
|
|
72
|
+
- **UPDATE** the task list as you work to track progress
|
|
73
|
+
|
|
74
|
+
## Related Agents
|
|
75
|
+
|
|
76
|
+
You may dispatch these sub-agents as needed:
|
|
77
|
+
- `sub-agent-builder` - For implementing specific components
|
|
78
|
+
- `sub-agent-tester` - For comprehensive test coverage
|
|
79
|
+
- `sub-agent-documentation` - For README/CHANGELOG updates
|
|
80
|
+
|