mcp-ticketer 0.1.34__tar.gz → 0.1.37__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.

Potentially problematic release.


This version of mcp-ticketer might be problematic. Click here for more details.

Files changed (233) hide show
  1. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/PKG-INFO +2 -1
  2. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/pyproject.toml +2 -1
  3. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/__version__.py +1 -1
  4. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/diagnostics.py +66 -129
  5. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/main.py +14 -2
  6. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/config.py +2 -18
  7. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/PKG-INFO +2 -1
  8. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/requires.txt +1 -0
  9. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/.dependency_cache +0 -0
  10. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/.mpm_deployment_state +0 -0
  11. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/agent-manager.md +0 -0
  12. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/agentic-coder-optimizer.md +0 -0
  13. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/api_qa.md +0 -0
  14. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/clerk-ops.md +0 -0
  15. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/code_analyzer.md +0 -0
  16. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/content-agent.md +0 -0
  17. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/dart_engineer.md +0 -0
  18. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/data_engineer.md +0 -0
  19. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/documentation.md +0 -0
  20. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/engineer.md +0 -0
  21. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/gcp_ops_agent.md +0 -0
  22. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/golang_engineer.md +0 -0
  23. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/imagemagick.md +0 -0
  24. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/java_engineer.md +0 -0
  25. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/local_ops_agent.md +0 -0
  26. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/memory_manager.md +0 -0
  27. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/nextjs_engineer.md +0 -0
  28. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/ops.md +0 -0
  29. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/php-engineer.md +0 -0
  30. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/product_owner.md +0 -0
  31. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/project_organizer.md +0 -0
  32. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/prompt-engineer.md +0 -0
  33. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/python_engineer.md +0 -0
  34. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/qa.md +0 -0
  35. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/react_engineer.md +0 -0
  36. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/refactoring_engineer.md +0 -0
  37. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/research.md +0 -0
  38. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/ruby-engineer.md +0 -0
  39. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/rust_engineer.md +0 -0
  40. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/security.md +0 -0
  41. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/ticketing.md +0 -0
  42. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/typescript_engineer.md +0 -0
  43. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/vercel_ops_agent.md +0 -0
  44. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/version_control.md +0 -0
  45. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/web_qa.md +0 -0
  46. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/agents/web_ui.md +0 -0
  47. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/mcp.json +0 -0
  48. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude/mcp.local.json +0 -0
  49. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/config/project.json +0 -0
  50. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/mcp_auto_config_preference.json +0 -0
  51. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/README.md +0 -0
  52. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/agentic_coder_optimizer_memories.md +0 -0
  53. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/documentation_memories.md +0 -0
  54. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/engineer_memories.md +0 -0
  55. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/ops_memories.md +0 -0
  56. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/project_knowledge_memories.md +0 -0
  57. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/qa_memories.md +0 -0
  58. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/research_memories.md +0 -0
  59. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/version-control_memories.md +0 -0
  60. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude-mpm/memories/workflows_memories.md +0 -0
  61. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.claude.json +0 -0
  62. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.coveragerc +0 -0
  63. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.env.example +0 -0
  64. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.github/workflows/docs.yml +0 -0
  65. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.github/workflows/publish.yml +0 -0
  66. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.github/workflows/test.yml +0 -0
  67. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.mcp/config.json +0 -0
  68. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.pre-commit-config.yaml +0 -0
  69. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.python-version +0 -0
  70. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/.readthedocs.yaml +0 -0
  71. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CHANGELOG.md +0 -0
  72. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CLAUDE.md +0 -0
  73. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CLAUDE_DESKTOP_SETUP.md +0 -0
  74. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CODEX_INTEGRATION.md +0 -0
  75. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CODE_STRUCTURE.md +0 -0
  76. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CONFIG_RESOLUTION_FIX.md +0 -0
  77. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CONTRIBUTING.md +0 -0
  78. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/CREDENTIAL_VALIDATION_FIX.md +0 -0
  79. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/DIAGNOSTICS_FEATURE.md +0 -0
  80. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/ENV_DISCOVERY_COMPLETE.md +0 -0
  81. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/FIX_SUMMARY.md +0 -0
  82. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
  83. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/IMPLEMENTATION_SUMMARY.md +0 -0
  84. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/JIRA_SETUP.md +0 -0
  85. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/LICENSE +0 -0
  86. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/LINEAR_SETUP.md +0 -0
  87. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/MANIFEST.in +0 -0
  88. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
  89. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/Makefile +0 -0
  90. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/OPTIMIZATION_SUMMARY.md +0 -0
  91. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
  92. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/QUEUE_SYSTEM.md +0 -0
  93. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/QUICK_START.md +0 -0
  94. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/README.md +0 -0
  95. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/RELEASE.md +0 -0
  96. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/RELEASING.md +0 -0
  97. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/SECURITY_SCAN_REPORT_v0.1.24.md +0 -0
  98. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/TEST_COVERAGE_REPORT.md +0 -0
  99. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/TEST_REPORT.md +0 -0
  100. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/TEST_RESULTS_SUMMARY.md +0 -0
  101. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/VERIFICATION_RESULTS.md +0 -0
  102. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/claude-desktop-config.json +0 -0
  103. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/debug_search.py +0 -0
  104. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/debug_test.py +0 -0
  105. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/ADAPTERS.md +0 -0
  106. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/AI_CLIENT_INTEGRATION.md +0 -0
  107. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/API_REFERENCE.md +0 -0
  108. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/CONFIGURATION.md +0 -0
  109. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
  110. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/DEVELOPER_GUIDE.md +0 -0
  111. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/ENV_DISCOVERY.md +0 -0
  112. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/MCP_INTEGRATION.md +0 -0
  113. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/MIGRATION_GUIDE.md +0 -0
  114. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/PROJECT_CONFIG.md +0 -0
  115. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/PR_INTEGRATION.md +0 -0
  116. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/QUICK_START_ENV.md +0 -0
  117. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/USER_GUIDE.md +0 -0
  118. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_archive/README.md +0 -0
  119. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
  120. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
  121. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
  122. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
  123. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
  124. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
  125. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
  126. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/adapters/github.md.txt +0 -0
  127. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/adapters.rst.txt +0 -0
  128. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/api.rst.txt +0 -0
  129. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/cli.rst.txt +0 -0
  130. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/development.rst.txt +0 -0
  131. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/examples.rst.txt +0 -0
  132. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/index.rst.txt +0 -0
  133. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/installation.rst.txt +0 -0
  134. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
  135. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/adapters/github.md +0 -0
  136. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/adapters.rst +0 -0
  137. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/api.rst +0 -0
  138. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/cli.rst +0 -0
  139. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/conf.py +0 -0
  140. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/development.rst +0 -0
  141. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/examples.rst +0 -0
  142. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/index.rst +0 -0
  143. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/installation.rst +0 -0
  144. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/prd/mcp-ticketer-prd.md +0 -0
  145. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/docs/requirements.txt +0 -0
  146. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/install.sh +0 -0
  147. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/mcp-ticketer +0 -0
  148. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/mcp-ticketer-server +0 -0
  149. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/mcp_server.sh +0 -0
  150. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/pytest.ini +0 -0
  151. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/requirements-dev.txt +0 -0
  152. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/requirements.txt +0 -0
  153. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/scripts/README.md +0 -0
  154. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/scripts/manage_version.py +0 -0
  155. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/setup.cfg +0 -0
  156. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/setup.py +0 -0
  157. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/__init__.py +0 -0
  158. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/__init__.py +0 -0
  159. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
  160. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/github.py +0 -0
  161. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/hybrid.py +0 -0
  162. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/jira.py +0 -0
  163. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/adapters/linear.py +0 -0
  164. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cache/__init__.py +0 -0
  165. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cache/memory.py +0 -0
  166. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/__init__.py +0 -0
  167. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/auggie_configure.py +0 -0
  168. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/codex_configure.py +0 -0
  169. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/configure.py +0 -0
  170. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/discover.py +0 -0
  171. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/gemini_configure.py +0 -0
  172. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/mcp_configure.py +0 -0
  173. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/migrate_config.py +0 -0
  174. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/queue_commands.py +0 -0
  175. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/simple_health.py +0 -0
  176. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/cli/utils.py +0 -0
  177. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/__init__.py +0 -0
  178. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/adapter.py +0 -0
  179. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/env_discovery.py +0 -0
  180. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/http_client.py +0 -0
  181. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/mappers.py +0 -0
  182. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/models.py +0 -0
  183. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/project_config.py +0 -0
  184. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/core/registry.py +0 -0
  185. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/mcp/__init__.py +0 -0
  186. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/mcp/server.py +0 -0
  187. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/py.typed +0 -0
  188. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/__init__.py +0 -0
  189. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/__main__.py +0 -0
  190. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/health_monitor.py +0 -0
  191. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/manager.py +0 -0
  192. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/queue.py +0 -0
  193. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/run_worker.py +0 -0
  194. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/ticket_registry.py +0 -0
  195. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer/queue/worker.py +0 -0
  196. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/SOURCES.txt +0 -0
  197. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
  198. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
  199. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
  200. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
  201. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test-tickets/tickets/task-20250924002724.json +0 -0
  202. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_all_adapters.py +0 -0
  203. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_api_usage.py +0 -0
  204. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_basic.py +0 -0
  205. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_codex_config.py +0 -0
  206. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_comprehensive.py +0 -0
  207. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_config_resolution.py +0 -0
  208. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_credential_validation.py +0 -0
  209. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_error_handling.py +0 -0
  210. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_github.py +0 -0
  211. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_github_token.py +0 -0
  212. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_jira.py +0 -0
  213. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_linear.py +0 -0
  214. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_linear_native.py +0 -0
  215. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_linear_teams.py +0 -0
  216. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_mcp_server_qa.py +0 -0
  217. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_optimizations.py +0 -0
  218. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_performance.py +0 -0
  219. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_pr_functionality.py +0 -0
  220. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_queue_system.py +0 -0
  221. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_serve_config.py +0 -0
  222. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/test_set_command.sh +0 -0
  223. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/adapters/__init__.py +0 -0
  224. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/adapters/test_aitrackdown.py +0 -0
  225. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/conftest.py +0 -0
  226. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/core/test_env_discovery.py +0 -0
  227. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/e2e/test_complete_workflow.py +0 -0
  228. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/e2e/test_hierarchy_validation.py +0 -0
  229. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/e2e/test_state_transitions.py +0 -0
  230. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/test_base_adapter.py +0 -0
  231. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/test_models.py +0 -0
  232. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tests/test_queue.py +0 -0
  233. {mcp_ticketer-0.1.34 → mcp_ticketer-0.1.37}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.34
3
+ Version: 0.1.37
4
4
  Summary: Universal ticket management interface for AI agents with MCP support
5
5
  Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
6
6
  Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
@@ -38,6 +38,7 @@ Requires-Dist: httpx>=0.25.0
38
38
  Requires-Dist: psutil>=5.9.0
39
39
  Requires-Dist: pydantic>=2.0
40
40
  Requires-Dist: python-dotenv>=1.0.0
41
+ Requires-Dist: pyyaml>=6.0.0
41
42
  Requires-Dist: rich>=13.0.0
42
43
  Requires-Dist: tomli>=2.0.0; python_version < "3.11"
43
44
  Requires-Dist: tomli-w>=1.0.0
@@ -56,6 +56,7 @@ dependencies = [
56
56
  "psutil>=5.9.0",
57
57
  "pydantic>=2.0",
58
58
  "python-dotenv>=1.0.0",
59
+ "pyyaml>=6.0.0",
59
60
  "rich>=13.0.0",
60
61
  "tomli>=2.0.0; python_version<'3.11'",
61
62
  "tomli-w>=1.0.0",
@@ -150,7 +151,7 @@ extend-exclude = '''
150
151
  '''
151
152
 
152
153
  [tool.ruff]
153
- target-version = "py39"
154
+ target-version = "0.1.37"
154
155
  line-length = 88
155
156
 
156
157
  [tool.ruff.lint]
@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.1.34"
3
+ __version__ = "0.1.37"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -15,53 +15,11 @@ from rich.panel import Panel
15
15
  from rich.table import Table
16
16
  from rich.text import Text
17
17
 
18
- def safe_import_config():
19
- """Safely import configuration with fallback."""
20
- try:
21
- from ..core.config import get_config as real_get_config
22
-
23
- # Test if the real config system works
24
- try:
25
- config = real_get_config()
26
- # If we get here, the real config system is working
27
- return real_get_config
28
- except Exception:
29
- # Real config system failed, use fallback
30
- pass
31
-
32
- except ImportError:
33
- pass
34
-
35
- # Create a minimal config fallback
36
- class MockConfig:
37
- def get_enabled_adapters(self):
38
- # Try to detect adapters from environment even in fallback
39
- import os
40
- adapters = {}
41
-
42
- # Check for environment variables
43
- if os.getenv("LINEAR_API_KEY"):
44
- adapters["linear"] = {"type": "linear", "enabled": True}
45
- if os.getenv("GITHUB_TOKEN"):
46
- adapters["github"] = {"type": "github", "enabled": True}
47
- if os.getenv("JIRA_SERVER"):
48
- adapters["jira"] = {"type": "jira", "enabled": True}
49
-
50
- # Always include aitrackdown as fallback
51
- if not adapters:
52
- adapters["aitrackdown"] = {"type": "aitrackdown", "enabled": True}
53
-
54
- return adapters
55
-
56
- @property
57
- def default_adapter(self):
58
- adapters = self.get_enabled_adapters()
59
- return list(adapters.keys())[0] if adapters else "aitrackdown"
60
-
61
- def get_config():
62
- return MockConfig()
63
-
64
- return get_config
18
+ def get_config():
19
+ """Get configuration using the real configuration system."""
20
+ from ..core.config import ConfigurationManager
21
+ config_manager = ConfigurationManager()
22
+ return config_manager.load_config()
65
23
 
66
24
  def safe_import_registry():
67
25
  """Safely import adapter registry with fallback."""
@@ -77,24 +35,27 @@ def safe_import_registry():
77
35
  return MockRegistry
78
36
 
79
37
  def safe_import_queue_manager():
80
- """Safely import queue manager with fallback."""
38
+ """Safely import worker manager with fallback."""
81
39
  try:
82
- from ..queue.manager import QueueManager as RealQueueManager
40
+ from ..queue.manager import WorkerManager as RealWorkerManager
83
41
 
84
- # Test if the real queue manager works
42
+ # Test if the real worker manager works
85
43
  try:
86
- qm = RealQueueManager()
44
+ wm = RealWorkerManager()
87
45
  # Test a basic operation
88
- qm.get_worker_status()
89
- return RealQueueManager
46
+ wm.get_status()
47
+ return RealWorkerManager
90
48
  except Exception:
91
- # Real queue manager failed, use fallback
49
+ # Real worker manager failed, use fallback
92
50
  pass
93
51
 
94
52
  except ImportError:
95
53
  pass
96
54
 
97
- class MockQueueManager:
55
+ class MockWorkerManager:
56
+ def get_status(self):
57
+ return {"running": False, "pid": None, "status": "fallback_mode"}
58
+
98
59
  def get_worker_status(self):
99
60
  return {"running": False, "pid": None, "status": "fallback_mode"}
100
61
 
@@ -104,12 +65,11 @@ def safe_import_queue_manager():
104
65
  def health_check(self):
105
66
  return {"status": "degraded", "score": 50, "details": "Running in fallback mode"}
106
67
 
107
- return MockQueueManager
68
+ return MockWorkerManager
108
69
 
109
70
  # Initialize with safe imports
110
- get_config = safe_import_config()
111
71
  AdapterRegistry = safe_import_registry()
112
- QueueManager = safe_import_queue_manager()
72
+ WorkerManager = safe_import_queue_manager()
113
73
 
114
74
  console = Console()
115
75
  logger = logging.getLogger(__name__)
@@ -126,29 +86,20 @@ class SystemDiagnostics:
126
86
 
127
87
  try:
128
88
  self.config = get_config()
129
- # Check if this is a mock config
130
- if hasattr(self.config, '__class__') and 'Mock' in self.config.__class__.__name__:
131
- self.config_available = False
132
- self.warnings.append("Configuration system using fallback mode")
133
- else:
134
- self.config_available = True
89
+ self.config_available = True
135
90
  except Exception as e:
136
91
  self.config = None
137
92
  self.config_available = False
138
- console.print(f"⚠️ Could not load configuration: {e}")
93
+ console.print(f"Could not load configuration: {e}")
94
+ raise e
139
95
 
140
96
  try:
141
- self.queue_manager = QueueManager()
142
- # Check if this is a mock queue manager
143
- if hasattr(self.queue_manager, '__class__') and 'Mock' in self.queue_manager.__class__.__name__:
144
- self.queue_available = False
145
- self.warnings.append("Queue system using fallback mode")
146
- else:
147
- self.queue_available = True
97
+ self.worker_manager = WorkerManager()
98
+ self.queue_available = True
148
99
  except Exception as e:
149
- self.queue_manager = None
100
+ self.worker_manager = None
150
101
  self.queue_available = False
151
- console.print(f"⚠️ Could not initialize queue manager: {e}")
102
+ console.print(f"⚠️ Could not initialize worker manager: {e}")
152
103
 
153
104
  async def run_full_diagnosis(self) -> Dict[str, Any]:
154
105
  """Run complete system diagnosis and return detailed report."""
@@ -234,27 +185,27 @@ class SystemDiagnostics:
234
185
  return config_status
235
186
 
236
187
  try:
237
- # Check adapter configurations
238
- adapters = self.config.get_enabled_adapters()
239
- config_status["adapters_configured"] = len(adapters)
240
- config_status["default_adapter"] = self.config.default_adapter
241
-
242
- if not adapters:
188
+ # Check adapter configurations using the same approach as working commands
189
+ from .utils import CommonPatterns
190
+ raw_config = CommonPatterns.load_config()
191
+ adapters_config = raw_config.get("adapters", {})
192
+ config_status["adapters_configured"] = len(adapters_config)
193
+ config_status["default_adapter"] = raw_config.get("default_adapter")
194
+
195
+ if not adapters_config:
243
196
  issue = "No adapters configured"
244
197
  config_status["issues"].append(issue)
245
198
  config_status["status"] = "critical"
246
199
  self.issues.append(issue)
247
200
  console.print(f"❌ {issue}")
248
201
  else:
249
- console.print(f"✅ {len(adapters)} adapter(s) configured")
202
+ console.print(f"✅ {len(adapters_config)} adapter(s) configured")
250
203
 
251
204
  # Check each adapter configuration
252
- for name, adapter_config in adapters.items():
205
+ for name, adapter_config in adapters_config.items():
253
206
  try:
254
- adapter_class = AdapterRegistry.get_adapter(adapter_config.type.value)
255
- # Convert Pydantic model to dict, excluding None values
256
- config_dict = adapter_config.model_dump(exclude_none=False)
257
- adapter = adapter_class(config_dict)
207
+ # Use the same adapter creation approach as working commands
208
+ adapter = CommonPatterns.get_adapter(override_adapter=name)
258
209
 
259
210
  # Test adapter validation if available
260
211
  if hasattr(adapter, 'validate_credentials'):
@@ -297,23 +248,15 @@ class SystemDiagnostics:
297
248
  }
298
249
 
299
250
  try:
300
- adapters = self.config.get_enabled_adapters()
301
- adapter_status["total_adapters"] = len(adapters)
302
-
303
- for name, adapter_config in adapters.items():
304
- # Handle both dict and object adapter configs
305
- if isinstance(adapter_config, dict):
306
- adapter_type = adapter_config.get("type", "unknown")
307
- config_dict = adapter_config
308
- else:
309
- adapter_type = adapter_config.type.value if hasattr(adapter_config, 'type') else "unknown"
310
- # Use model_dump for Pydantic v2 compatibility
311
- if hasattr(adapter_config, 'model_dump'):
312
- config_dict = adapter_config.model_dump(exclude_none=False)
313
- elif hasattr(adapter_config, 'dict'):
314
- config_dict = adapter_config.dict()
315
- else:
316
- config_dict = adapter_config
251
+ # Use the same configuration loading approach as working commands
252
+ from .utils import CommonPatterns
253
+ raw_config = CommonPatterns.load_config()
254
+ adapters_config = raw_config.get("adapters", {})
255
+ adapter_status["total_adapters"] = len(adapters_config)
256
+
257
+ for name, adapter_config in adapters_config.items():
258
+ adapter_type = adapter_config.get("type", name)
259
+ config_dict = adapter_config
317
260
 
318
261
  details = {
319
262
  "type": adapter_type,
@@ -323,18 +266,9 @@ class SystemDiagnostics:
323
266
  }
324
267
 
325
268
  try:
326
- # Import AdapterRegistry safely
327
- try:
328
- from ..core.registry import AdapterRegistry
329
- except ImportError:
330
- details["status"] = "failed"
331
- details["error"] = "AdapterRegistry not available"
332
- adapter_status["failed_adapters"] += 1
333
- adapter_status["adapter_details"][name] = details
334
- continue
335
-
336
- adapter_class = AdapterRegistry.get_adapter(adapter_type)
337
- adapter = adapter_class(config_dict)
269
+ # Use the same adapter creation approach as working commands
270
+ from .utils import CommonPatterns
271
+ adapter = CommonPatterns.get_adapter(override_adapter=adapter_type)
338
272
 
339
273
  # Test basic adapter functionality
340
274
  test_start = datetime.now()
@@ -400,7 +334,7 @@ class SystemDiagnostics:
400
334
 
401
335
  # Test 1: Check current worker status
402
336
  console.print("🔍 Checking current worker status...")
403
- worker_status = self.queue_manager.get_worker_status()
337
+ worker_status = self.worker_manager.get_status()
404
338
  queue_status["worker_running"] = worker_status.get("running", False)
405
339
  queue_status["worker_pid"] = worker_status.get("pid")
406
340
 
@@ -424,7 +358,7 @@ class SystemDiagnostics:
424
358
 
425
359
  # Test 3: Get queue statistics
426
360
  console.print("🔍 Analyzing queue statistics...")
427
- stats = self.queue_manager.get_queue_stats()
361
+ stats = self.worker_manager.queue.get_stats()
428
362
  queue_status["queue_stats"] = stats
429
363
 
430
364
  total_items = stats.get("total", 0)
@@ -487,11 +421,11 @@ class SystemDiagnostics:
487
421
  }
488
422
 
489
423
  try:
490
- # Try to start worker using the queue manager
491
- if hasattr(self.queue_manager, 'start_worker'):
492
- result = await self.queue_manager.start_worker()
493
- test_result["success"] = True
494
- test_result["details"] = "Worker started successfully"
424
+ # Try to start worker using the worker manager
425
+ if hasattr(self.worker_manager, 'start'):
426
+ result = self.worker_manager.start()
427
+ test_result["success"] = result
428
+ test_result["details"] = "Worker started successfully" if result else "Worker failed to start"
495
429
  else:
496
430
  # Try alternative method - use CLI command
497
431
  import subprocess
@@ -526,6 +460,7 @@ class SystemDiagnostics:
526
460
  try:
527
461
  # Test creating a simple queue item (diagnostic test)
528
462
  from ..core.models import Task, Priority
463
+ from ..queue.queue import Queue
529
464
 
530
465
  test_task = Task(
531
466
  title="[DIAGNOSTIC TEST] Queue functionality test",
@@ -533,13 +468,15 @@ class SystemDiagnostics:
533
468
  priority=Priority.LOW
534
469
  )
535
470
 
536
- # Try to queue the test task
537
- if hasattr(self.queue_manager, 'queue_task'):
538
- queue_id = await self.queue_manager.queue_task("create", test_task, "aitrackdown")
539
- test_result["success"] = True
540
- test_result["details"] = f"Test task queued successfully: {queue_id}"
541
- else:
542
- test_result["error"] = "Queue manager doesn't support task queuing"
471
+ # Try to queue the test task using the correct Queue.add() method
472
+ queue = Queue()
473
+ queue_id = queue.add(
474
+ ticket_data=test_task.model_dump(),
475
+ adapter="aitrackdown",
476
+ operation="create"
477
+ )
478
+ test_result["success"] = True
479
+ test_result["details"] = f"Test task queued successfully: {queue_id}"
543
480
 
544
481
  except Exception as e:
545
482
  test_result["error"] = str(e)
@@ -446,11 +446,19 @@ def init(
446
446
  if discovered and adapter_type != "aitrackdown":
447
447
  discovered_adapter = discovered.get_adapter_by_type(adapter_type)
448
448
  if discovered_adapter:
449
- config["adapters"][adapter_type] = discovered_adapter.config
449
+ adapter_config = discovered_adapter.config.copy()
450
+ # Ensure the config has the correct 'type' field
451
+ adapter_config["type"] = adapter_type
452
+ # Remove 'adapter' field if present (legacy)
453
+ adapter_config.pop("adapter", None)
454
+ config["adapters"][adapter_type] = adapter_config
450
455
 
451
456
  # 4. Handle manual configuration for specific adapters
452
457
  if adapter_type == "aitrackdown":
453
- config["adapters"]["aitrackdown"] = {"base_path": base_path or ".aitrackdown"}
458
+ config["adapters"]["aitrackdown"] = {
459
+ "type": "aitrackdown",
460
+ "base_path": base_path or ".aitrackdown"
461
+ }
454
462
 
455
463
  elif adapter_type == "linear":
456
464
  # If not auto-discovered, build from CLI params
@@ -472,6 +480,7 @@ def init(
472
480
  )
473
481
 
474
482
  if linear_config:
483
+ linear_config["type"] = "linear"
475
484
  config["adapters"]["linear"] = linear_config
476
485
 
477
486
  elif adapter_type == "jira":
@@ -1376,6 +1385,9 @@ def diagnose(
1376
1385
  else:
1377
1386
  try:
1378
1387
  asyncio.run(run_diagnostics(output_file=output_file, json_output=json_output))
1388
+ except typer.Exit:
1389
+ # typer.Exit is expected - don't fall back to simple diagnostics
1390
+ raise
1379
1391
  except Exception as e:
1380
1392
  console.print(f"⚠️ Full diagnostics failed: {e}")
1381
1393
  console.print("🔄 Falling back to simple diagnostics...")
@@ -295,24 +295,8 @@ class ConfigurationManager:
295
295
  # No config file found - use empty config
296
296
  config_data = {"adapters": {}, "default_adapter": None}
297
297
 
298
- # Always try environment discovery and merge with file-based config
299
- logger.info("Attempting environment discovery to supplement configuration")
300
- env_config_data = self._discover_from_environment()
301
-
302
- # Merge environment-discovered adapters with file-based config
303
- if env_config_data and "adapters" in env_config_data:
304
- if "adapters" not in config_data:
305
- config_data["adapters"] = {}
306
-
307
- # Add discovered adapters that aren't already configured
308
- for adapter_name, adapter_config in env_config_data["adapters"].items():
309
- if adapter_name not in config_data["adapters"]:
310
- config_data["adapters"][adapter_name] = adapter_config
311
- logger.info(f"Added environment-discovered adapter: {adapter_name}")
312
-
313
- # Set default adapter if not already set
314
- if not config_data.get("default_adapter") and env_config_data.get("default_adapter"):
315
- config_data["default_adapter"] = env_config_data["default_adapter"]
298
+ # Use saved configuration only - no automatic discovery
299
+ # Discovery should be done explicitly via 'mcp-ticketer init' or 'mcp-ticketer discover'
316
300
 
317
301
  # Parse adapter configurations
318
302
  if "adapters" in config_data:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.1.34
3
+ Version: 0.1.37
4
4
  Summary: Universal ticket management interface for AI agents with MCP support
5
5
  Author-email: MCP Ticketer Team <support@mcp-ticketer.io>
6
6
  Maintainer-email: MCP Ticketer Team <support@mcp-ticketer.io>
@@ -38,6 +38,7 @@ Requires-Dist: httpx>=0.25.0
38
38
  Requires-Dist: psutil>=5.9.0
39
39
  Requires-Dist: pydantic>=2.0
40
40
  Requires-Dist: python-dotenv>=1.0.0
41
+ Requires-Dist: pyyaml>=6.0.0
41
42
  Requires-Dist: rich>=13.0.0
42
43
  Requires-Dist: tomli>=2.0.0; python_version < "3.11"
43
44
  Requires-Dist: tomli-w>=1.0.0
@@ -3,6 +3,7 @@ httpx>=0.25.0
3
3
  psutil>=5.9.0
4
4
  pydantic>=2.0
5
5
  python-dotenv>=1.0.0
6
+ pyyaml>=6.0.0
6
7
  rich>=13.0.0
7
8
  tomli-w>=1.0.0
8
9
  typer>=0.9.0
File without changes
File without changes