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.
Files changed (334) hide show
  1. devrev_python_sdk-2.4.1/.dockerignore +99 -0
  2. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/api-check.yml +1 -1
  3. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/ci.yml +1 -1
  4. devrev_python_sdk-2.4.1/.github/workflows/deploy.yml +103 -0
  5. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/docs.yml +1 -1
  6. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/release.yml +1 -1
  7. devrev_python_sdk-2.4.1/Dockerfile +87 -0
  8. devrev_python_sdk-2.4.1/OPENAPI_SPEC_DISCREPANCIES.md +1 -0
  9. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/PKG-INFO +336 -23
  10. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/README.md +328 -22
  11. devrev_python_sdk-2.4.1/augment-mcp-config-remote.json +12 -0
  12. devrev_python_sdk-2.4.1/augment-mcp-config.json +14 -0
  13. devrev_python_sdk-2.4.1/augment-settings.json +21 -0
  14. devrev_python_sdk-2.4.1/deploy/README.md +482 -0
  15. devrev_python_sdk-2.4.1/deploy/cloudbuild.yaml +87 -0
  16. devrev_python_sdk-2.4.1/deploy/service.yaml +73 -0
  17. devrev_python_sdk-2.4.1/docker-compose.yml +32 -0
  18. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/question-answers.md +24 -7
  19. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/search.md +22 -22
  20. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/articles.md +4 -3
  21. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/changelog.md +104 -1
  22. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/beta-features.md +7 -6
  23. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/pyproject.toml +32 -5
  24. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/__init__.py +1 -1
  25. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/config.py +2 -2
  26. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/__init__.py +0 -14
  27. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/accounts.py +2 -2
  28. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/articles.py +11 -5
  29. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/dev_users.py +13 -5
  30. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/engagements.py +2 -2
  31. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/groups.py +2 -2
  32. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/incidents.py +3 -3
  33. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/links.py +2 -2
  34. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/parts.py +2 -2
  35. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/question_answers.py +11 -5
  36. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/recommendations.py +2 -2
  37. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/rev_users.py +2 -2
  38. devrev_python_sdk-2.4.1/src/devrev/models/search.py +132 -0
  39. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/slas.py +3 -3
  40. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/sync.py +3 -3
  41. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/tasks.py +3 -3
  42. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/timeline_entries.py +2 -2
  43. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/timeline_events.py +2 -2
  44. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/uoms.py +3 -3
  45. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/webhooks.py +2 -2
  46. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/widgets.py +4 -4
  47. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/works.py +5 -5
  48. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/search.py +52 -30
  49. devrev_python_sdk-2.4.1/src/devrev_mcp/__init__.py +5 -0
  50. devrev_python_sdk-2.4.1/src/devrev_mcp/__main__.py +52 -0
  51. devrev_python_sdk-2.4.1/src/devrev_mcp/config.py +117 -0
  52. devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/__init__.py +1 -0
  53. devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/auth.py +326 -0
  54. devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/health.py +57 -0
  55. devrev_python_sdk-2.4.1/src/devrev_mcp/middleware/rate_limit.py +162 -0
  56. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/__init__.py +1 -0
  57. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/escalation.py +44 -0
  58. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/investigate.py +157 -0
  59. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/response.py +60 -0
  60. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/summarize.py +85 -0
  61. devrev_python_sdk-2.4.1/src/devrev_mcp/prompts/triage.py +32 -0
  62. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/__init__.py +1 -0
  63. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/account.py +33 -0
  64. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/article.py +34 -0
  65. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/conversation.py +33 -0
  66. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/part.py +33 -0
  67. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/ticket.py +33 -0
  68. devrev_python_sdk-2.4.1/src/devrev_mcp/resources/user.py +56 -0
  69. devrev_python_sdk-2.4.1/src/devrev_mcp/server.py +260 -0
  70. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/__init__.py +1 -0
  71. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/accounts.py +178 -0
  72. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/articles.py +225 -0
  73. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/conversations.py +167 -0
  74. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/engagements.py +258 -0
  75. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/groups.py +261 -0
  76. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/incidents.py +217 -0
  77. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/links.py +128 -0
  78. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/parts.py +173 -0
  79. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/recommendations.py +90 -0
  80. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/search.py +240 -0
  81. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/slas.py +149 -0
  82. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/tags.py +153 -0
  83. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/timeline.py +147 -0
  84. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/users.py +150 -0
  85. devrev_python_sdk-2.4.1/src/devrev_mcp/tools/works.py +287 -0
  86. devrev_python_sdk-2.4.1/src/devrev_mcp/utils/__init__.py +1 -0
  87. devrev_python_sdk-2.4.1/src/devrev_mcp/utils/errors.py +60 -0
  88. devrev_python_sdk-2.4.1/src/devrev_mcp/utils/formatting.py +83 -0
  89. devrev_python_sdk-2.4.1/src/devrev_mcp/utils/pagination.py +54 -0
  90. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/conftest.py +45 -0
  91. devrev_python_sdk-2.4.1/tests/integration/test_accounts_e2e.py +339 -0
  92. devrev_python_sdk-2.4.1/tests/integration/test_contacts_e2e.py +350 -0
  93. devrev_python_sdk-2.4.1/tests/integration/test_issues_e2e.py +377 -0
  94. devrev_python_sdk-2.4.1/tests/integration/test_kb_articles_e2e.py +466 -0
  95. devrev_python_sdk-2.4.1/tests/integration/test_question_answers_e2e.py +458 -0
  96. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_specialized_services_phase3.py +4 -4
  97. devrev_python_sdk-2.4.1/tests/integration/test_tickets_e2e.py +382 -0
  98. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/constants.py +2 -0
  99. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/data_manager.py +7 -1
  100. devrev_python_sdk-2.4.1/tests/unit/mcp/__init__.py +0 -0
  101. devrev_python_sdk-2.4.1/tests/unit/mcp/conftest.py +235 -0
  102. devrev_python_sdk-2.4.1/tests/unit/mcp/test_config.py +102 -0
  103. devrev_python_sdk-2.4.1/tests/unit/mcp/test_phase4_transport.py +1142 -0
  104. devrev_python_sdk-2.4.1/tests/unit/mcp/test_prompts.py +198 -0
  105. devrev_python_sdk-2.4.1/tests/unit/mcp/test_resources.py +136 -0
  106. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_accounts.py +359 -0
  107. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_articles.py +242 -0
  108. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_conversations.py +282 -0
  109. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_engagements.py +362 -0
  110. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_groups.py +337 -0
  111. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_incidents.py +369 -0
  112. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_links.py +234 -0
  113. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_parts.py +203 -0
  114. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_recommendations.py +116 -0
  115. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_search.py +428 -0
  116. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_slas.py +254 -0
  117. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_tags.py +169 -0
  118. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_timeline.py +211 -0
  119. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_users.py +323 -0
  120. devrev_python_sdk-2.4.1/tests/unit/mcp/test_tools_works.py +250 -0
  121. devrev_python_sdk-2.4.1/tests/unit/mcp/test_utils.py +358 -0
  122. devrev_python_sdk-2.4.1/tests/unit/models/test_user_state_regression.py +182 -0
  123. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/conftest.py +11 -12
  124. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_articles.py +2 -1
  125. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_async_services.py +4 -1
  126. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_question_answers.py +3 -0
  127. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_search.py +10 -9
  128. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_config.py +1 -1
  129. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/uv.lock +300 -7
  130. devrev_python_sdk-2.1.2/cloudbuild.yaml +0 -51
  131. devrev_python_sdk-2.1.2/src/devrev/models/search.py +0 -187
  132. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/bug-fixer.md +0 -0
  133. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/builder.md +0 -0
  134. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/documentation.md +0 -0
  135. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/foreman.md +0 -0
  136. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/pr-review-boss.md +0 -0
  137. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/release-manager.md +0 -0
  138. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/simplifier.md +0 -0
  139. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/agents/tester.md +0 -0
  140. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/foreman-work.md +0 -0
  141. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/release-prepare.md +0 -0
  142. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/review-start.md +0 -0
  143. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/commands/simplify-code.md +0 -0
  144. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/code-quality.md +0 -0
  145. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/data-modeling.md +0 -0
  146. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/devrev-sdk.md +0 -0
  147. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/git-workflow.md +0 -0
  148. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/pull-requests.md +0 -0
  149. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/python-development.md +0 -0
  150. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/security.md +0 -0
  151. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.augment/rules/testing.md +0 -0
  152. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.env.sample +0 -0
  153. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  154. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  155. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  156. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  157. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/dependabot.yml +0 -0
  158. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/pull_request_template.md +0 -0
  159. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/claude-code-review.yml +0 -0
  160. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/claude.yml +0 -0
  161. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/integration-tests.yml +0 -0
  162. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.github/workflows/sync-openapi.yml +0 -0
  163. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.gitignore +0 -0
  164. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/.pre-commit-config.yaml +0 -0
  165. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/CODE_OF_CONDUCT.md +0 -0
  166. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/CONTRIBUTING.md +0 -0
  167. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/DEPRECATIONS.md +0 -0
  168. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/KNOWN_ISSUES.md +0 -0
  169. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/SECURITY.md +0 -0
  170. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/README.md +0 -0
  171. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_http_client.py +0 -0
  172. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_models.py +0 -0
  173. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/bench_pagination.py +0 -0
  174. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/benchmarks/conftest.py +0 -0
  175. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/context7.json +0 -0
  176. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/brands.md +0 -0
  177. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/engagements.md +0 -0
  178. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/incidents.md +0 -0
  179. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/index.md +0 -0
  180. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/recommendations.md +0 -0
  181. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta/uoms.md +0 -0
  182. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/beta-api-differences.md +0 -0
  183. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/client.md +0 -0
  184. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/config.md +0 -0
  185. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/exceptions.md +0 -0
  186. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/index.md +0 -0
  187. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/accounts.md +0 -0
  188. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/base.md +0 -0
  189. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/index.md +0 -0
  190. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/users.md +0 -0
  191. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/models/works.md +0 -0
  192. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/accounts.md +0 -0
  193. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/code-changes.md +0 -0
  194. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/conversations.md +0 -0
  195. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/dev-users.md +0 -0
  196. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/groups.md +0 -0
  197. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/index.md +0 -0
  198. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/links.md +0 -0
  199. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/parts.md +0 -0
  200. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/rev-users.md +0 -0
  201. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/slas.md +0 -0
  202. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/tags.md +0 -0
  203. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/timeline-entries.md +0 -0
  204. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/webhooks.md +0 -0
  205. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/api/services/works.md +0 -0
  206. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/advanced.md +0 -0
  207. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/basic.md +0 -0
  208. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/index.md +0 -0
  209. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/examples/integrations.md +0 -0
  210. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/authentication.md +0 -0
  211. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/index.md +0 -0
  212. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/installation.md +0 -0
  213. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/getting-started/quickstart.md +0 -0
  214. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/beta-api.md +0 -0
  215. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/compatibility.md +0 -0
  216. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/configuration.md +0 -0
  217. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/error-handling.md +0 -0
  218. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/github-actions-setup.md +0 -0
  219. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/index.md +0 -0
  220. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/logging.md +0 -0
  221. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/pagination.md +0 -0
  222. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/sync-vs-async.md +0 -0
  223. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/testing.md +0 -0
  224. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/version-support.md +0 -0
  225. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/guides/write-integration-testing-strategy.md +0 -0
  226. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/docs/index.md +0 -0
  227. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/README.md +0 -0
  228. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/README.md +0 -0
  229. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/async_example.py +0 -0
  230. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/create_work.py +0 -0
  231. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/error_handling.py +0 -0
  232. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/list_accounts.py +0 -0
  233. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/pagination.py +0 -0
  234. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/basic/search_users.py +0 -0
  235. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/README.md +0 -0
  236. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/main.py +0 -0
  237. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/cloud_functions/requirements.txt +0 -0
  238. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/README.md +0 -0
  239. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/main.py +0 -0
  240. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/fastapi/requirements.txt +0 -0
  241. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/README.md +0 -0
  242. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/app.py +0 -0
  243. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/examples/integrations/flask/requirements.txt +0 -0
  244. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms-ctx-full.txt +0 -0
  245. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms-ctx.txt +0 -0
  246. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/llms.txt +0 -0
  247. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/mkdocs.yml +0 -0
  248. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-beta.yaml +0 -0
  249. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-public.yaml +0 -0
  250. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/openapi-spec-corrections.yaml +0 -0
  251. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/scripts/build_ai_docs.py +0 -0
  252. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/scripts/setup-github-secrets.sh +0 -0
  253. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/client.py +0 -0
  254. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/exceptions.py +0 -0
  255. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/base.py +0 -0
  256. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/brands.py +0 -0
  257. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/code_changes.py +0 -0
  258. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/conversations.py +0 -0
  259. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/notifications.py +0 -0
  260. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/preferences.py +0 -0
  261. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/tags.py +0 -0
  262. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/models/track_events.py +0 -0
  263. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/py.typed +0 -0
  264. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/__init__.py +0 -0
  265. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/accounts.py +0 -0
  266. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/articles.py +0 -0
  267. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/base.py +0 -0
  268. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/brands.py +0 -0
  269. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/code_changes.py +0 -0
  270. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/conversations.py +0 -0
  271. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/dev_users.py +0 -0
  272. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/engagements.py +0 -0
  273. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/groups.py +0 -0
  274. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/incidents.py +0 -0
  275. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/links.py +0 -0
  276. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/notifications.py +0 -0
  277. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/parts.py +0 -0
  278. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/preferences.py +0 -0
  279. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/question_answers.py +0 -0
  280. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/recommendations.py +0 -0
  281. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/rev_users.py +0 -0
  282. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/slas.py +0 -0
  283. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/tags.py +0 -0
  284. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/timeline_entries.py +0 -0
  285. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/track_events.py +0 -0
  286. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/uoms.py +0 -0
  287. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/webhooks.py +0 -0
  288. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/services/works.py +0 -0
  289. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/__init__.py +0 -0
  290. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/deprecation.py +0 -0
  291. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/http.py +0 -0
  292. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/logging.py +0 -0
  293. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/src/devrev/utils/pagination.py +0 -0
  294. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/__init__.py +0 -0
  295. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/conftest.py +0 -0
  296. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/__init__.py +0 -0
  297. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_all_readonly_endpoints.py +0 -0
  298. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_backwards_compatibility.py +0 -0
  299. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_core_services_phase1.py +0 -0
  300. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_extended_services_phase2.py +0 -0
  301. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_get_endpoints.py +0 -0
  302. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_ping.py +0 -0
  303. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_readonly_endpoints.py +0 -0
  304. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/test_write_operations.py +0 -0
  305. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/__init__.py +0 -0
  306. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/integration/utils/cleanup.py +0 -0
  307. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/__init__.py +0 -0
  308. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/models/__init__.py +0 -0
  309. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/__init__.py +0 -0
  310. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_brands.py +0 -0
  311. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_code_changes.py +0 -0
  312. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_conversations.py +0 -0
  313. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_engagements.py +0 -0
  314. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_groups.py +0 -0
  315. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_incidents.py +0 -0
  316. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_links.py +0 -0
  317. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_notifications.py +0 -0
  318. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_parts.py +0 -0
  319. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_preferences.py +0 -0
  320. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_recommendations.py +0 -0
  321. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_slas.py +0 -0
  322. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_tags.py +0 -0
  323. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_timeline_entries.py +0 -0
  324. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_track_events.py +0 -0
  325. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_uoms.py +0 -0
  326. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_webhooks.py +0 -0
  327. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/services/test_works.py +0 -0
  328. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_base_service.py +0 -0
  329. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_client.py +0 -0
  330. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_deprecation.py +0 -0
  331. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_exceptions.py +0 -0
  332. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_http.py +0 -0
  333. {devrev_python_sdk-2.1.2 → devrev_python_sdk-2.4.1}/tests/unit/test_logging.py +0 -0
  334. {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
+
@@ -133,7 +133,7 @@ jobs:
133
133
 
134
134
  - name: Upload report
135
135
  if: steps.detect.outputs.has_changes == 'true'
136
- uses: actions/upload-artifact@v4
136
+ uses: actions/upload-artifact@v6
137
137
  with:
138
138
  name: api-change-report
139
139
  path: api_change_report.md
@@ -24,7 +24,7 @@ jobs:
24
24
  - name: Install dependencies
25
25
  run: |
26
26
  python -m pip install --upgrade pip
27
- pip install -e ".[dev]"
27
+ pip install -e ".[dev,mcp]"
28
28
 
29
29
  - name: Lint with Ruff
30
30
  run: ruff check .
@@ -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
+
@@ -46,7 +46,7 @@ jobs:
46
46
  uses: actions/configure-pages@v4
47
47
 
48
48
  - name: Upload artifact
49
- uses: actions/upload-pages-artifact@v3
49
+ uses: actions/upload-pages-artifact@v4
50
50
  with:
51
51
  path: 'site'
52
52
 
@@ -77,7 +77,7 @@ jobs:
77
77
  python -c "import devrev; print(f'Installed: devrev')"
78
78
 
79
79
  - name: Upload artifacts
80
- uses: actions/upload-artifact@v4
80
+ uses: actions/upload-artifact@v6
81
81
  with:
82
82
  name: dist
83
83
  path: dist/
@@ -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!