devrev-Python-SDK 2.1.2__tar.gz → 2.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- devrev_python_sdk-2.4.1/.dockerignore +99 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/api-check.yml +1 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/ci.yml +1 -1
- devrev_python_sdk-2.4.1/.github/workflows/deploy.yml +103 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/docs.yml +1 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/release.yml +1 -1
- devrev_python_sdk-2.4.1/Dockerfile +87 -0
- devrev_python_sdk-2.4.1/OPENAPI_SPEC_DISCREPANCIES.md +1 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/PKG-INFO +336 -23
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/README.md +328 -22
- devrev_python_sdk-2.4.1/augment-mcp-config-remote.json +12 -0
- devrev_python_sdk-2.4.1/augment-mcp-config.json +14 -0
- devrev_python_sdk-2.4.1/augment-settings.json +21 -0
- devrev_python_sdk-2.4.1/deploy/README.md +482 -0
- devrev_python_sdk-2.4.1/deploy/cloudbuild.yaml +87 -0
- devrev_python_sdk-2.4.1/deploy/service.yaml +73 -0
- devrev_python_sdk-2.4.1/docker-compose.yml +32 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/question-answers.md +24 -7
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/search.md +22 -22
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/articles.md +4 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/changelog.md +104 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/beta-features.md +7 -6
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/pyproject.toml +32 -5
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/__init__.py +1 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/config.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/__init__.py +0 -14
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/accounts.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/articles.py +11 -5
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/dev_users.py +13 -5
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/engagements.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/groups.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/incidents.py +3 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/links.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/parts.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/question_answers.py +11 -5
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/recommendations.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/rev_users.py +2 -2
- devrev_python_sdk-2.4.1/src/devrev/models/search.py +132 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/slas.py +3 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/sync.py +3 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/tasks.py +3 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/timeline_entries.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/timeline_events.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/uoms.py +3 -3
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/webhooks.py +2 -2
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/widgets.py +4 -4
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/works.py +5 -5
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/search.py +52 -30
- devrev_python_sdk-2.4.1/src/devrev_mcp/__init__.py +5 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/__main__.py +52 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/config.py +117 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/__init__.py +1 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/auth.py +326 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/health.py +57 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/rate_limit.py +162 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/__init__.py +1 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/escalation.py +44 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/investigate.py +157 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/response.py +60 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/summarize.py +85 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/triage.py +32 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/__init__.py +1 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/account.py +33 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/article.py +34 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/conversation.py +33 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/part.py +33 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/ticket.py +33 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/resources/user.py +56 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/server.py +260 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/__init__.py +1 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/accounts.py +178 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/articles.py +225 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/conversations.py +167 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/engagements.py +258 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/groups.py +261 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/incidents.py +217 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/links.py +128 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/parts.py +173 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/recommendations.py +90 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/search.py +240 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/slas.py +149 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/tags.py +153 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/timeline.py +147 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/users.py +150 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/tools/works.py +287 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/utils/__init__.py +1 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/utils/errors.py +60 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/utils/formatting.py +83 -0
- devrev_python_sdk-2.4.1/src/devrev_mcp/utils/pagination.py +54 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/conftest.py +45 -0
- devrev_python_sdk-2.4.1/tests/integration/test_accounts_e2e.py +339 -0
- devrev_python_sdk-2.4.1/tests/integration/test_contacts_e2e.py +350 -0
- devrev_python_sdk-2.4.1/tests/integration/test_issues_e2e.py +377 -0
- devrev_python_sdk-2.4.1/tests/integration/test_kb_articles_e2e.py +466 -0
- devrev_python_sdk-2.4.1/tests/integration/test_question_answers_e2e.py +458 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_specialized_services_phase3.py +4 -4
- devrev_python_sdk-2.4.1/tests/integration/test_tickets_e2e.py +382 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/constants.py +2 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/data_manager.py +7 -1
- devrev_python_sdk-2.4.1/tests/unit/mcp/__init__.py +0 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/conftest.py +235 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_config.py +102 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_phase4_transport.py +1142 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_prompts.py +198 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_resources.py +136 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_accounts.py +359 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_articles.py +242 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_conversations.py +282 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_engagements.py +362 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_groups.py +337 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_incidents.py +369 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_links.py +234 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_parts.py +203 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_recommendations.py +116 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_search.py +428 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_slas.py +254 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_tags.py +169 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_timeline.py +211 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_users.py +323 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_works.py +250 -0
- devrev_python_sdk-2.4.1/tests/unit/mcp/test_utils.py +358 -0
- devrev_python_sdk-2.4.1/tests/unit/models/test_user_state_regression.py +182 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/conftest.py +11 -12
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_articles.py +2 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_async_services.py +4 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_question_answers.py +3 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_search.py +10 -9
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_config.py +1 -1
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/uv.lock +300 -7
- devrev_python_sdk-2.1.2/cloudbuild.yaml +0 -51
- devrev_python_sdk-2.1.2/src/devrev/models/search.py +0 -187
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/bug-fixer.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/builder.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/documentation.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/foreman.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/pr-review-boss.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/release-manager.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/simplifier.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/tester.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/foreman-work.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/release-prepare.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/review-start.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/simplify-code.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/code-quality.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/data-modeling.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/devrev-sdk.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/git-workflow.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/pull-requests.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/python-development.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/security.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/testing.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.env.sample +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/dependabot.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/pull_request_template.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/claude-code-review.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/claude.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/integration-tests.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/sync-openapi.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.gitignore +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.pre-commit-config.yaml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/CODE_OF_CONDUCT.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/CONTRIBUTING.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/DEPRECATIONS.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/KNOWN_ISSUES.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/SECURITY.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_http_client.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_models.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_pagination.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/conftest.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/context7.json +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/brands.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/engagements.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/incidents.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/recommendations.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/uoms.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta-api-differences.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/client.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/config.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/exceptions.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/accounts.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/base.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/users.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/works.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/accounts.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/code-changes.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/conversations.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/dev-users.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/groups.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/links.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/parts.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/rev-users.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/slas.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/tags.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/timeline-entries.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/webhooks.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/works.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/advanced.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/basic.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/integrations.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/authentication.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/installation.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/quickstart.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/beta-api.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/compatibility.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/configuration.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/error-handling.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/github-actions-setup.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/logging.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/pagination.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/sync-vs-async.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/testing.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/version-support.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/write-integration-testing-strategy.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/index.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/async_example.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/create_work.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/error_handling.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/list_accounts.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/pagination.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/search_users.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/main.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/requirements.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/main.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/requirements.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/README.md +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/app.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/requirements.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms-ctx-full.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms-ctx.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms.txt +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/mkdocs.yml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-beta.yaml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-public.yaml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-spec-corrections.yaml +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/scripts/build_ai_docs.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/scripts/setup-github-secrets.sh +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/client.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/exceptions.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/base.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/brands.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/code_changes.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/conversations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/notifications.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/preferences.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/tags.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/track_events.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/py.typed +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/accounts.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/articles.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/base.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/brands.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/code_changes.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/conversations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/dev_users.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/engagements.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/groups.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/incidents.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/links.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/notifications.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/parts.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/preferences.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/question_answers.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/recommendations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/rev_users.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/slas.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/tags.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/timeline_entries.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/track_events.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/uoms.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/webhooks.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/works.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/deprecation.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/http.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/logging.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/pagination.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/conftest.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_all_readonly_endpoints.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_backwards_compatibility.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_core_services_phase1.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_extended_services_phase2.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_get_endpoints.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_ping.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_readonly_endpoints.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_write_operations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/cleanup.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/models/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/__init__.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_brands.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_code_changes.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_conversations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_engagements.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_groups.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_incidents.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_links.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_notifications.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_parts.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_preferences.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_recommendations.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_slas.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_tags.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_timeline_entries.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_track_events.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_uoms.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_webhooks.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_works.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_base_service.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_client.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_deprecation.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_exceptions.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_http.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_logging.py +0 -0
- {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_pagination.py +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Git
|
|
2
|
+
.git
|
|
3
|
+
.gitignore
|
|
4
|
+
.gitattributes
|
|
5
|
+
|
|
6
|
+
# Python
|
|
7
|
+
__pycache__/
|
|
8
|
+
*.py[cod]
|
|
9
|
+
*$py.class
|
|
10
|
+
*.so
|
|
11
|
+
.Python
|
|
12
|
+
*.egg-info/
|
|
13
|
+
dist/
|
|
14
|
+
build/
|
|
15
|
+
*.egg
|
|
16
|
+
.eggs/
|
|
17
|
+
pip-log.txt
|
|
18
|
+
pip-delete-this-directory.txt
|
|
19
|
+
|
|
20
|
+
# Virtual environments
|
|
21
|
+
.venv/
|
|
22
|
+
venv/
|
|
23
|
+
ENV/
|
|
24
|
+
env/
|
|
25
|
+
.virtualenv/
|
|
26
|
+
|
|
27
|
+
# Testing
|
|
28
|
+
.pytest_cache/
|
|
29
|
+
.coverage
|
|
30
|
+
.coverage.*
|
|
31
|
+
htmlcov/
|
|
32
|
+
.tox/
|
|
33
|
+
.nox/
|
|
34
|
+
coverage.xml
|
|
35
|
+
*.cover
|
|
36
|
+
.hypothesis/
|
|
37
|
+
|
|
38
|
+
# IDEs
|
|
39
|
+
.vscode/
|
|
40
|
+
.idea/
|
|
41
|
+
*.swp
|
|
42
|
+
*.swo
|
|
43
|
+
*~
|
|
44
|
+
.DS_Store
|
|
45
|
+
|
|
46
|
+
# Documentation
|
|
47
|
+
docs/
|
|
48
|
+
*.md
|
|
49
|
+
!README.md
|
|
50
|
+
mkdocs.yml
|
|
51
|
+
|
|
52
|
+
# Examples and tests
|
|
53
|
+
examples/
|
|
54
|
+
tests/
|
|
55
|
+
benchmarks/
|
|
56
|
+
|
|
57
|
+
# CI/CD
|
|
58
|
+
.github/
|
|
59
|
+
.gitlab-ci.yml
|
|
60
|
+
cloudbuild.yaml
|
|
61
|
+
|
|
62
|
+
# Environment files
|
|
63
|
+
.env
|
|
64
|
+
.env.*
|
|
65
|
+
*.env
|
|
66
|
+
|
|
67
|
+
# Logs
|
|
68
|
+
*.log
|
|
69
|
+
logs/
|
|
70
|
+
|
|
71
|
+
# Lock files (optional - uncomment if you want to exclude)
|
|
72
|
+
# uv.lock
|
|
73
|
+
|
|
74
|
+
# Context files
|
|
75
|
+
llms-ctx.txt
|
|
76
|
+
llms-ctx-full.txt
|
|
77
|
+
llms.txt
|
|
78
|
+
context7.json
|
|
79
|
+
|
|
80
|
+
# OpenAPI specs (if not needed at runtime)
|
|
81
|
+
openapi-*.yaml
|
|
82
|
+
|
|
83
|
+
# Scripts
|
|
84
|
+
scripts/
|
|
85
|
+
|
|
86
|
+
# Other
|
|
87
|
+
*.bak
|
|
88
|
+
*.tmp
|
|
89
|
+
*.temp
|
|
90
|
+
.cache/
|
|
91
|
+
.mypy_cache/
|
|
92
|
+
.ruff_cache/
|
|
93
|
+
.pre-commit-config.yaml
|
|
94
|
+
CONTRIBUTING.md
|
|
95
|
+
CODE_OF_CONDUCT.md
|
|
96
|
+
SECURITY.md
|
|
97
|
+
DEPRECATIONS.md
|
|
98
|
+
KNOWN_ISSUES.md
|
|
99
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Cloud Run Deployment Workflow
|
|
2
|
+
# Triggered by version tags (v*) to deploy MCP server to Cloud Run
|
|
3
|
+
# Uses Workload Identity Federation (WIF) for secure authentication
|
|
4
|
+
name: Deploy to Cloud Run
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
tags:
|
|
9
|
+
- 'v*'
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
inputs:
|
|
12
|
+
tag_name:
|
|
13
|
+
description: 'Tag name for deployment (e.g., v1.2.3)'
|
|
14
|
+
required: true
|
|
15
|
+
type: string
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
id-token: write # For OIDC token generation
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
deploy:
|
|
23
|
+
name: Deploy to Cloud Run
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
environment:
|
|
26
|
+
name: production
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout code
|
|
29
|
+
uses: actions/checkout@v6
|
|
30
|
+
|
|
31
|
+
- name: Extract version from tag
|
|
32
|
+
id: version
|
|
33
|
+
run: |
|
|
34
|
+
if [ -n "${{ github.event.inputs.tag_name }}" ]; then
|
|
35
|
+
TAG="${{ github.event.inputs.tag_name }}"
|
|
36
|
+
else
|
|
37
|
+
TAG="${GITHUB_REF#refs/tags/}"
|
|
38
|
+
fi
|
|
39
|
+
VERSION=${TAG#v}
|
|
40
|
+
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
|
41
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
42
|
+
echo "Deploying version: $VERSION"
|
|
43
|
+
|
|
44
|
+
- name: Authenticate to Google Cloud (WIF)
|
|
45
|
+
uses: google-github-actions/auth@v2
|
|
46
|
+
with:
|
|
47
|
+
workload_identity_provider: ${{ secrets.WIF_PROVIDER }}
|
|
48
|
+
service_account: ${{ secrets.WIF_SERVICE_ACCOUNT }}
|
|
49
|
+
|
|
50
|
+
- name: Set up Cloud SDK
|
|
51
|
+
uses: google-github-actions/setup-gcloud@v2
|
|
52
|
+
|
|
53
|
+
- name: Configure Docker for Artifact Registry
|
|
54
|
+
run: |
|
|
55
|
+
gcloud auth configure-docker ${{ secrets.GCP_REGION }}-docker.pkg.dev
|
|
56
|
+
|
|
57
|
+
- name: Submit Cloud Build
|
|
58
|
+
run: |
|
|
59
|
+
gcloud builds submit \
|
|
60
|
+
--config=deploy/cloudbuild.yaml \
|
|
61
|
+
--substitutions=_REGION=${{ secrets.GCP_REGION }},_TAG_NAME=${{ steps.version.outputs.tag }} \
|
|
62
|
+
--project=${{ secrets.GCP_PROJECT_ID }}
|
|
63
|
+
|
|
64
|
+
- name: Get Cloud Run service URL
|
|
65
|
+
id: service
|
|
66
|
+
run: |
|
|
67
|
+
SERVICE_URL=$(gcloud run services describe devrev-mcp-server \
|
|
68
|
+
--region=${{ secrets.GCP_REGION }} \
|
|
69
|
+
--format='value(status.url)' \
|
|
70
|
+
--project=${{ secrets.GCP_PROJECT_ID }})
|
|
71
|
+
echo "url=$SERVICE_URL" >> $GITHUB_OUTPUT
|
|
72
|
+
echo "Service URL: $SERVICE_URL"
|
|
73
|
+
|
|
74
|
+
- name: Health check
|
|
75
|
+
run: |
|
|
76
|
+
SERVICE_URL="${{ steps.service.outputs.url }}"
|
|
77
|
+
echo "Checking health endpoint: $SERVICE_URL/health"
|
|
78
|
+
curl -f "$SERVICE_URL/health" || exit 1
|
|
79
|
+
|
|
80
|
+
- name: Create deployment summary
|
|
81
|
+
run: |
|
|
82
|
+
cat << EOF >> $GITHUB_STEP_SUMMARY
|
|
83
|
+
## 🚀 Deployment Complete
|
|
84
|
+
|
|
85
|
+
**Version**: ${{ steps.version.outputs.version }}
|
|
86
|
+
**Service**: devrev-mcp-server
|
|
87
|
+
**Region**: ${{ secrets.GCP_REGION }}
|
|
88
|
+
**URL**: ${{ steps.service.outputs.url }}
|
|
89
|
+
|
|
90
|
+
### Testing
|
|
91
|
+
|
|
92
|
+
\`\`\`bash
|
|
93
|
+
# Health check
|
|
94
|
+
curl ${{ steps.service.outputs.url }}/health
|
|
95
|
+
|
|
96
|
+
# MCP call with auth token
|
|
97
|
+
curl -X POST ${{ steps.service.outputs.url }}/mcp/v1/initialize \
|
|
98
|
+
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
|
|
99
|
+
-H "Content-Type: application/json" \
|
|
100
|
+
-d '{"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}'
|
|
101
|
+
\`\`\`
|
|
102
|
+
EOF
|
|
103
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
|
|
3
|
+
# =============================================================================
|
|
4
|
+
# Builder Stage: Install dependencies and build the package
|
|
5
|
+
# =============================================================================
|
|
6
|
+
FROM python:3.11-slim AS builder
|
|
7
|
+
|
|
8
|
+
# Set environment variables for Python
|
|
9
|
+
ENV PYTHONUNBUFFERED=1 \
|
|
10
|
+
PYTHONDONTWRITEBYTECODE=1 \
|
|
11
|
+
PIP_NO_CACHE_DIR=1 \
|
|
12
|
+
PIP_DISABLE_PIP_VERSION_CHECK=1
|
|
13
|
+
|
|
14
|
+
# Install build dependencies
|
|
15
|
+
RUN apt-get update && \
|
|
16
|
+
apt-get install -y --no-install-recommends \
|
|
17
|
+
build-essential \
|
|
18
|
+
git \
|
|
19
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
20
|
+
|
|
21
|
+
# Set working directory
|
|
22
|
+
WORKDIR /build
|
|
23
|
+
|
|
24
|
+
# Copy only dependency files first for better layer caching
|
|
25
|
+
COPY pyproject.toml ./
|
|
26
|
+
COPY README.md ./
|
|
27
|
+
|
|
28
|
+
# Copy source code
|
|
29
|
+
COPY src/ ./src/
|
|
30
|
+
|
|
31
|
+
# Install the package with MCP extras
|
|
32
|
+
RUN pip install --no-cache-dir ".[mcp]"
|
|
33
|
+
|
|
34
|
+
# =============================================================================
|
|
35
|
+
# Runtime Stage: Slim production image
|
|
36
|
+
# =============================================================================
|
|
37
|
+
FROM python:3.11-slim AS runtime
|
|
38
|
+
|
|
39
|
+
# Metadata labels
|
|
40
|
+
LABEL maintainer="Matthew G. Monteleone <matthewm@augmentcode.com>" \
|
|
41
|
+
description="DevRev MCP Server - A Model Context Protocol server for the DevRev platform" \
|
|
42
|
+
version="2.3.0" \
|
|
43
|
+
org.opencontainers.image.source="https://github.com/mgmonteleone/py-dev-rev" \
|
|
44
|
+
org.opencontainers.image.title="DevRev MCP Server" \
|
|
45
|
+
org.opencontainers.image.description="Production-ready MCP server for DevRev API integration" \
|
|
46
|
+
org.opencontainers.image.version="2.3.0" \
|
|
47
|
+
org.opencontainers.image.licenses="MIT"
|
|
48
|
+
|
|
49
|
+
# Set environment variables for Python
|
|
50
|
+
ENV PYTHONUNBUFFERED=1 \
|
|
51
|
+
PYTHONDONTWRITEBYTECODE=1 \
|
|
52
|
+
PATH="/home/mcp/.local/bin:$PATH"
|
|
53
|
+
|
|
54
|
+
# Install runtime dependencies (curl for healthcheck)
|
|
55
|
+
RUN apt-get update && \
|
|
56
|
+
apt-get install -y --no-install-recommends \
|
|
57
|
+
curl \
|
|
58
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
59
|
+
|
|
60
|
+
# Create non-root user
|
|
61
|
+
RUN useradd -m -u 1000 -s /bin/bash mcp && \
|
|
62
|
+
mkdir -p /app && \
|
|
63
|
+
chown -R mcp:mcp /app
|
|
64
|
+
|
|
65
|
+
# Set working directory
|
|
66
|
+
WORKDIR /app
|
|
67
|
+
|
|
68
|
+
# Copy Python packages from builder
|
|
69
|
+
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
|
|
70
|
+
COPY --from=builder /usr/local/bin/devrev-mcp-server /usr/local/bin/devrev-mcp-server
|
|
71
|
+
|
|
72
|
+
# Switch to non-root user
|
|
73
|
+
USER mcp
|
|
74
|
+
|
|
75
|
+
# Expose the HTTP port
|
|
76
|
+
EXPOSE 8080
|
|
77
|
+
|
|
78
|
+
# Health check
|
|
79
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
80
|
+
CMD curl -f http://localhost:8080/health || exit 1
|
|
81
|
+
|
|
82
|
+
# Set the entry point
|
|
83
|
+
ENTRYPOINT ["devrev-mcp-server"]
|
|
84
|
+
|
|
85
|
+
# Default command arguments
|
|
86
|
+
CMD ["--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8080"]
|
|
87
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
No schema discrepancies found!
|