mcp-ticketer 0.3.7__tar.gz → 0.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (280) hide show
  1. mcp_ticketer-0.4.0/CLAUDE.md +49 -0
  2. mcp_ticketer-0.4.0/CLI_RESTRUCTURING_SUMMARY.md +272 -0
  3. {mcp_ticketer-0.3.7/src/mcp_ticketer.egg-info → mcp_ticketer-0.4.0}/PKG-INFO +1 -1
  4. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/pyproject.toml +1 -1
  5. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/__version__.py +1 -1
  6. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/main.py +108 -33
  7. mcp_ticketer-0.4.0/src/mcp_ticketer/cli/platform_commands.py +133 -0
  8. mcp_ticketer-0.4.0/src/mcp_ticketer/cli/ticket_commands.py +765 -0
  9. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0/src/mcp_ticketer.egg-info}/PKG-INFO +1 -1
  10. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/SOURCES.txt +3 -0
  11. mcp_ticketer-0.3.7/CLAUDE.md +0 -1270
  12. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
  13. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
  14. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
  15. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
  16. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
  17. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
  18. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
  19. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
  20. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.claude.json +0 -0
  21. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.coveragerc +0 -0
  22. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.cursor/mcp.json +0 -0
  23. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.env.example +0 -0
  24. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.github/workflows/docs.yml +0 -0
  25. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.github/workflows/publish.yml +0 -0
  26. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.github/workflows/test.yml +0 -0
  27. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.mcp/config.json +0 -0
  28. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.pre-commit-config.yaml +0 -0
  29. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.python-version +0 -0
  30. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/.readthedocs.yaml +0 -0
  31. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/CHANGELOG.md +0 -0
  32. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LICENSE +0 -0
  33. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_ADAPTER_REVIEW.md +0 -0
  34. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_FIX_RECOMMENDATION.md +0 -0
  35. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_GRAPHQL_TYPE_ANALYSIS.md +0 -0
  36. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_LABEL_FIX_SUMMARY.md +0 -0
  37. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_PATTERN_COMPARISON.md +0 -0
  38. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_QUERY_ALTERNATIVE_ANALYSIS.md +0 -0
  39. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_RESEARCH_SUMMARY.md +0 -0
  40. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/LINEAR_TAGS_FIX_SUMMARY.md +0 -0
  41. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/MANIFEST.in +0 -0
  42. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/Makefile +0 -0
  43. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/QUICK_WINS_IMPLEMENTATION.md +0 -0
  44. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/README.md +0 -0
  45. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/SECURITY_SCAN_REPORT_v0.1.24.md +0 -0
  46. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/V0.3.2_RELEASE_FIXES_SUMMARY.md +0 -0
  47. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/debug_epic_creation.py +0 -0
  48. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/debug_full_flow.py +0 -0
  49. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/debug_worker_epic.py +0 -0
  50. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/ADAPTERS.md +0 -0
  51. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/AI_CLIENT_INTEGRATION.md +0 -0
  52. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/API_REFERENCE.md +0 -0
  53. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/CONFIGURATION.md +0 -0
  54. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
  55. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/DEVELOPER_GUIDE.md +0 -0
  56. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/ENV_DISCOVERY.md +0 -0
  57. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/MCP_INTEGRATION.md +0 -0
  58. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/MIGRATION_GUIDE.md +0 -0
  59. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/PROJECT_CONFIG.md +0 -0
  60. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/PR_INTEGRATION.md +0 -0
  61. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/QUEUE_SYSTEM.md +0 -0
  62. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/QUICK_START.md +0 -0
  63. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/QUICK_START_ENV.md +0 -0
  64. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/README.md +0 -0
  65. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/USER_GUIDE.md +0 -0
  66. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/VERSIONING_AND_BUILD_TRACKING.md +0 -0
  67. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_archive/README.md +0 -0
  68. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
  69. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
  70. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
  71. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
  72. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
  73. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
  74. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
  75. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/adapters/github.md.txt +0 -0
  76. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/adapters.rst.txt +0 -0
  77. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/api.rst.txt +0 -0
  78. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/cli.rst.txt +0 -0
  79. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/development.rst.txt +0 -0
  80. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/examples.rst.txt +0 -0
  81. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/index.rst.txt +0 -0
  82. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/installation.rst.txt +0 -0
  83. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
  84. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/adapters/github.md +0 -0
  85. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/adapters.rst +0 -0
  86. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/api.rst +0 -0
  87. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
  88. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
  89. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
  90. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/cli.rst +0 -0
  91. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/conf.py +0 -0
  92. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/development/CODE_STRUCTURE.md +0 -0
  93. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/development/CONTRIBUTING.md +0 -0
  94. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/development/RELEASE.md +0 -0
  95. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/development/RELEASING.md +0 -0
  96. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/development.rst +0 -0
  97. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/examples.rst +0 -0
  98. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
  99. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/index.rst +0 -0
  100. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/installation.rst +0 -0
  101. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/prd/mcp-ticketer-prd.md +0 -0
  102. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
  103. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
  104. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
  105. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
  106. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_SUCCESS_v0.3.4.md +0 -0
  107. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/PUBLICATION_SUCCESS_v0.3.5.md +0 -0
  108. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
  109. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
  110. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
  111. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
  112. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
  113. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
  114. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/FIX_SUMMARY.md +0 -0
  115. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
  116. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
  117. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
  118. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
  119. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
  120. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
  121. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/TEST_REPORT.md +0 -0
  122. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
  123. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/reports/VERIFICATION_RESULTS.md +0 -0
  124. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/requirements.txt +0 -0
  125. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
  126. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/setup/CODEX_INTEGRATION.md +0 -0
  127. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/setup/JIRA_SETUP.md +0 -0
  128. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/setup/LINEAR_SETUP.md +0 -0
  129. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
  130. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
  131. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
  132. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
  133. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
  134. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
  135. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
  136. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
  137. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
  138. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
  139. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/mcp-ticketer +0 -0
  140. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/mcp-ticketer-server +0 -0
  141. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/pytest.ini +0 -0
  142. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/requirements-dev.txt +0 -0
  143. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/requirements.txt +0 -0
  144. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/scripts/README.md +0 -0
  145. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/scripts/install.sh +0 -0
  146. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/scripts/manage_version.py +0 -0
  147. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/scripts/mcp_server.sh +0 -0
  148. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/scripts/test_set_command.sh +0 -0
  149. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/setup.cfg +0 -0
  150. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/setup.py +0 -0
  151. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/__init__.py +0 -0
  152. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/__init__.py +0 -0
  153. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
  154. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/github.py +0 -0
  155. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/hybrid.py +0 -0
  156. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/jira.py +0 -0
  157. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
  158. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/adapter.py +0 -0
  159. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/client.py +0 -0
  160. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/mappers.py +0 -0
  161. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
  162. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear/types.py +0 -0
  163. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/adapters/linear.py +0 -0
  164. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cache/__init__.py +0 -0
  165. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cache/memory.py +0 -0
  166. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/__init__.py +0 -0
  167. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/adapter_diagnostics.py +0 -0
  168. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/auggie_configure.py +0 -0
  169. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/codex_configure.py +0 -0
  170. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/configure.py +0 -0
  171. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/diagnostics.py +0 -0
  172. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/discover.py +0 -0
  173. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/gemini_configure.py +0 -0
  174. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/linear_commands.py +0 -0
  175. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/mcp_configure.py +0 -0
  176. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/migrate_config.py +0 -0
  177. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/queue_commands.py +0 -0
  178. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/simple_health.py +0 -0
  179. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/cli/utils.py +0 -0
  180. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/__init__.py +0 -0
  181. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/adapter.py +0 -0
  182. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/config.py +0 -0
  183. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/env_discovery.py +0 -0
  184. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/env_loader.py +0 -0
  185. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/exceptions.py +0 -0
  186. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/http_client.py +0 -0
  187. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/mappers.py +0 -0
  188. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/models.py +0 -0
  189. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/project_config.py +0 -0
  190. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/core/registry.py +0 -0
  191. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/mcp/__init__.py +0 -0
  192. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/mcp/constants.py +0 -0
  193. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/mcp/dto.py +0 -0
  194. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/mcp/response_builder.py +0 -0
  195. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/mcp/server.py +0 -0
  196. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/py.typed +0 -0
  197. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/__init__.py +0 -0
  198. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/__main__.py +0 -0
  199. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/health_monitor.py +0 -0
  200. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/manager.py +0 -0
  201. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/queue.py +0 -0
  202. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/run_worker.py +0 -0
  203. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/ticket_registry.py +0 -0
  204. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer/queue/worker.py +0 -0
  205. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
  206. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
  207. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
  208. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/requires.txt +0 -0
  209. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
  210. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/test-tickets/tickets/task-20250924002724.json +0 -0
  211. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/test_linear_fixes.py +0 -0
  212. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/test_worker_persistence.py +0 -0
  213. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/README.md +0 -0
  214. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/__init__.py +0 -0
  215. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/__init__.py +0 -0
  216. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/test_adapter.py +0 -0
  217. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/test_client.py +0 -0
  218. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/test_mappers.py +0 -0
  219. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/test_queries.py +0 -0
  220. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/linear/test_types.py +0 -0
  221. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_aitrackdown.py +0 -0
  222. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_github.py +0 -0
  223. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_github_token.py +0 -0
  224. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_jira.py +0 -0
  225. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_jira_direct.py +0 -0
  226. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_jira_projects.py +0 -0
  227. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_linear.py +0 -0
  228. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_linear_config.py +0 -0
  229. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/adapters/test_linear_native.py +0 -0
  230. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/conftest.py +0 -0
  231. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/debug_credential_validation.py +0 -0
  232. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_actual_worker_execution.py +0 -0
  233. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_config_resolution.py +0 -0
  234. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_env_discovery.py +0 -0
  235. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_environment_handoff.py +0 -0
  236. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_queue_processing.py +0 -0
  237. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_queue_system.py +0 -0
  238. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/core/test_unified_env_loading.py +0 -0
  239. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_adapter_cache.py +0 -0
  240. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_cli_config.py +0 -0
  241. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_cli_vs_simulation.py +0 -0
  242. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_linear_teams.py +0 -0
  243. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_search.py +0 -0
  244. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_test.py +0 -0
  245. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_worker_adapter.py +0 -0
  246. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_worker_simulation.py +0 -0
  247. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/debug/debug_worker_subprocess.py +0 -0
  248. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/e2e/test_comments_and_attachments.py +0 -0
  249. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/e2e/test_complete_ticket_workflow.py +0 -0
  250. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/e2e/test_complete_workflow.py +0 -0
  251. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/e2e/test_hierarchy_validation.py +0 -0
  252. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/e2e/test_state_transitions.py +0 -0
  253. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_aitrackdown_commenting.py +0 -0
  254. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_all_adapters.py +0 -0
  255. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_commenting_functionality.py +0 -0
  256. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_comprehensive.py +0 -0
  257. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_hierarchy_and_workflow.py +0 -0
  258. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_jira_github_adapters.py +0 -0
  259. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_mcp_server_qa.py +0 -0
  260. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_pr_functionality.py +0 -0
  261. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_serve_config.py +0 -0
  262. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/integration/test_user_assignment.py +0 -0
  263. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/performance/test_optimizations.py +0 -0
  264. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/performance/test_performance.py +0 -0
  265. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/run_comprehensive_tests.py +0 -0
  266. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_api_usage.py +0 -0
  267. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_base_adapter.py +0 -0
  268. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_basic.py +0 -0
  269. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_codex_config.py +0 -0
  270. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_comprehensive_qa.py +0 -0
  271. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_error_handling.py +0 -0
  272. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_linear_teams.py +0 -0
  273. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_models.py +0 -0
  274. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/test_queue.py +0 -0
  275. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/unit/__init__.py +0 -0
  276. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/unit/test_cache_memory.py +0 -0
  277. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/unit/test_core_exceptions.py +0 -0
  278. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/unit/test_core_models.py +0 -0
  279. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tests/unit/test_core_registry.py +0 -0
  280. {mcp_ticketer-0.3.7 → mcp_ticketer-0.4.0}/tox.ini +0 -0
@@ -0,0 +1,49 @@
1
+ # Project Memory Configuration
2
+
3
+ This project uses KuzuMemory for intelligent context management.
4
+
5
+ ## Project Information
6
+ - **Path**: /Users/masa/Projects/mcp-ticketer
7
+ - **Language**: Python
8
+ - **Framework**: Unknown
9
+
10
+ ## Memory Integration
11
+
12
+ KuzuMemory is configured to enhance all AI interactions with project-specific context.
13
+
14
+ ### Available Commands:
15
+ - `kuzu-memory enhance <prompt>` - Enhance prompts with project context
16
+ - `kuzu-memory learn <content>` - Store learning from conversations (async)
17
+ - `kuzu-memory recall <query>` - Query project memories
18
+ - `kuzu-memory stats` - View memory statistics
19
+
20
+ ### MCP Tools Available:
21
+ When interacting with Claude Desktop, the following MCP tools are available:
22
+ - **kuzu_enhance**: Enhance prompts with project memories
23
+ - **kuzu_learn**: Store new learnings asynchronously
24
+ - **kuzu_recall**: Query specific memories
25
+ - **kuzu_stats**: Get memory system statistics
26
+
27
+ ## Project Context
28
+
29
+ Universal ticket management interface for AI agents with MCP support
30
+
31
+ ## Key Technologies
32
+ - Python
33
+
34
+ ## Development Guidelines
35
+ - Use kuzu-memory enhance for all AI interactions
36
+ - Store important decisions with kuzu-memory learn
37
+ - Query context with kuzu-memory recall when needed
38
+ - Keep memories project-specific and relevant
39
+
40
+ ## Memory Guidelines
41
+
42
+ - Store project decisions and conventions
43
+ - Record technical specifications and API details
44
+ - Capture user preferences and patterns
45
+ - Document error solutions and workarounds
46
+
47
+ ---
48
+
49
+ *Generated by KuzuMemory Claude Hooks Installer*
@@ -0,0 +1,272 @@
1
+ # CLI Restructuring Summary
2
+
3
+ ## Overview
4
+
5
+ The MCP Ticketer CLI has been restructured to follow the kuzu-memory pattern, with a clear hierarchy of commands organized into logical groups. This restructuring improves discoverability, reduces clutter at the top level, and provides a more intuitive user experience.
6
+
7
+ ## New Command Structure
8
+
9
+ ```
10
+ mcp-ticketer
11
+
12
+ ├── Top-Level Commands (System Management)
13
+ │ ├── init # Initialize/setup project
14
+ │ ├── setup # Alias for init
15
+ │ ├── install # Alias for init
16
+ │ ├── status (alias: health) # Quick health check
17
+ │ ├── health (alias: status) # Quick health check
18
+ │ ├── doctor (alias: diagnose) # Comprehensive diagnostics
19
+ │ ├── diagnose (alias: doctor) # Comprehensive diagnostics
20
+ │ ├── configure # Configuration wizard
21
+ │ ├── set # Set adapter configuration
22
+ │ ├── migrate-config # Migrate config format
23
+ │ └── serve # Start MCP server
24
+
25
+ ├── ticket # Ticket operations (NEW GROUP)
26
+ │ ├── create # Create ticket
27
+ │ ├── list # List tickets
28
+ │ ├── show # Show ticket details
29
+ │ ├── update # Update ticket
30
+ │ ├── transition # Change ticket state
31
+ │ ├── search # Search tickets
32
+ │ ├── comment # Add comment
33
+ │ └── check # Check queued operation
34
+
35
+ ├── mcp # MCP client configuration
36
+ │ ├── claude # Configure Claude Code/Desktop
37
+ │ ├── gemini # Configure Gemini CLI
38
+ │ ├── codex # Configure Codex CLI
39
+ │ └── auggie # Configure Auggie CLI
40
+
41
+ ├── platform # Platform-specific commands (NEW GROUP)
42
+ │ ├── linear
43
+ │ │ ├── workspaces # List workspaces
44
+ │ │ ├── teams # List teams
45
+ │ │ ├── configure # Configure Linear adapter
46
+ │ │ └── info # Show team info
47
+ │ ├── jira # Placeholder for future
48
+ │ │ ├── projects # (Placeholder)
49
+ │ │ └── configure # (Placeholder)
50
+ │ ├── github # Placeholder for future
51
+ │ │ ├── repos # (Placeholder)
52
+ │ │ └── configure # (Placeholder)
53
+ │ └── aitrackdown # Placeholder for future
54
+ │ ├── info # (Placeholder)
55
+ │ └── configure # (Placeholder)
56
+
57
+ ├── queue # Queue management
58
+ │ └── worker
59
+ │ ├── start
60
+ │ ├── stop
61
+ │ ├── status
62
+ │ └── restart
63
+
64
+ └── discover # Environment discovery
65
+ └── ...
66
+ ```
67
+
68
+ ## Key Changes
69
+
70
+ ### 1. New Command Groups
71
+
72
+ #### `ticket` Group
73
+ All ticket-related operations have been consolidated under the `ticket` command group:
74
+
75
+ **Before:**
76
+ ```bash
77
+ mcp-ticketer create "My ticket"
78
+ mcp-ticketer list
79
+ mcp-ticketer show TICKET-123
80
+ ```
81
+
82
+ **After:**
83
+ ```bash
84
+ mcp-ticketer ticket create "My ticket"
85
+ mcp-ticketer ticket list
86
+ mcp-ticketer ticket show TICKET-123
87
+ ```
88
+
89
+ #### `platform` Group
90
+ Platform-specific commands are now organized under the `platform` group:
91
+
92
+ **Before:**
93
+ ```bash
94
+ mcp-ticketer linear teams
95
+ mcp-ticketer linear configure --team-id ABC123
96
+ ```
97
+
98
+ **After:**
99
+ ```bash
100
+ mcp-ticketer platform linear teams
101
+ mcp-ticketer platform linear configure --team-id ABC123
102
+ ```
103
+
104
+ ### 2. Command Aliases
105
+
106
+ The following command aliases have been added for convenience:
107
+
108
+ - `status` ↔ `health` - System health check
109
+ - `diagnose` ↔ `doctor` - Comprehensive diagnostics
110
+
111
+ **Examples:**
112
+ ```bash
113
+ mcp-ticketer status # Same as: mcp-ticketer health
114
+ mcp-ticketer doctor # Same as: mcp-ticketer diagnose
115
+ ```
116
+
117
+ ### 3. Backward Compatibility
118
+
119
+ All old top-level ticket commands are still available but are marked as **deprecated** and **hidden**. When used, they will display a deprecation warning and redirect users to the new command structure:
120
+
121
+ ```bash
122
+ $ mcp-ticketer create "My ticket"
123
+ ⚠️ This command is deprecated. Use 'mcp-ticketer ticket create' instead.
124
+ ```
125
+
126
+ The deprecated commands include:
127
+ - `create` → `ticket create`
128
+ - `list` → `ticket list`
129
+ - `show` → `ticket show`
130
+ - `update` → `ticket update`
131
+ - `transition` → `ticket transition`
132
+ - `search` → `ticket search`
133
+ - `comment` → `ticket comment`
134
+ - `check` → `ticket check`
135
+
136
+ ### 4. Platform Placeholders
137
+
138
+ Placeholder command groups have been added for future platform integrations:
139
+ - **JIRA** - `mcp-ticketer platform jira`
140
+ - **GitHub** - `mcp-ticketer platform github`
141
+ - **AITrackdown** - `mcp-ticketer platform aitrackdown`
142
+
143
+ These placeholders provide helpful messages directing users to use the generic ticket commands until platform-specific features are implemented.
144
+
145
+ ## File Changes
146
+
147
+ ### New Files Created
148
+
149
+ 1. **`src/mcp_ticketer/cli/ticket_commands.py`**
150
+ - Contains all ticket management commands
151
+ - Includes configuration functions (load_config, save_config, get_adapter)
152
+ - Self-contained to avoid circular imports
153
+
154
+ 2. **`src/mcp_ticketer/cli/platform_commands.py`**
155
+ - Platform command group orchestration
156
+ - Imports and registers Linear commands
157
+ - Placeholder apps for JIRA, GitHub, and AITrackdown
158
+
159
+ ### Modified Files
160
+
161
+ 1. **`src/mcp_ticketer/cli/main.py`**
162
+ - Added imports for new command groups
163
+ - Registered `ticket` and `platform` command groups
164
+ - Deprecated old top-level ticket commands
165
+ - Added command aliases (status/health, diagnose/doctor)
166
+ - Removed direct `linear_app` registration (now under platform)
167
+
168
+ 2. **`src/mcp_ticketer/cli/linear_commands.py`**
169
+ - No changes required (works as-is under platform group)
170
+
171
+ ## Migration Guide
172
+
173
+ ### For End Users
174
+
175
+ #### Updating Scripts
176
+ If you have scripts using the old commands, they will continue to work but will show deprecation warnings. Update them to use the new structure:
177
+
178
+ **Old scripts:**
179
+ ```bash
180
+ #!/bin/bash
181
+ mcp-ticketer create "Bug in login"
182
+ mcp-ticketer list --state todo
183
+ mcp-ticketer linear teams
184
+ ```
185
+
186
+ **Updated scripts:**
187
+ ```bash
188
+ #!/bin/bash
189
+ mcp-ticketer ticket create "Bug in login"
190
+ mcp-ticketer ticket list --state todo
191
+ mcp-ticketer platform linear teams
192
+ ```
193
+
194
+ #### Using Aliases
195
+ Take advantage of the new aliases for brevity:
196
+
197
+ ```bash
198
+ # Instead of: mcp-ticketer diagnose
199
+ mcp-ticketer doctor
200
+
201
+ # Instead of: mcp-ticketer health
202
+ mcp-ticketer status
203
+ ```
204
+
205
+ ### For Developers
206
+
207
+ #### Adding New Platform Commands
208
+
209
+ To add commands for a new platform (e.g., JIRA), follow this pattern:
210
+
211
+ 1. Create the command module (e.g., `jira_commands.py`)
212
+ 2. Import it in `platform_commands.py`
213
+ 3. Replace the placeholder app with your real implementation
214
+
215
+ **Example:**
216
+ ```python
217
+ # In src/mcp_ticketer/cli/jira_commands.py
218
+ import typer
219
+
220
+ app = typer.Typer(name="jira", help="JIRA workspace and project management")
221
+
222
+ @app.command("projects")
223
+ def list_projects():
224
+ """List JIRA projects."""
225
+ # Implementation here
226
+ pass
227
+
228
+ # In src/mcp_ticketer/cli/platform_commands.py
229
+ from .jira_commands import app as jira_app
230
+
231
+ # Replace the placeholder:
232
+ # jira_app = typer.Typer(...) # OLD
233
+ # with:
234
+ # from .jira_commands import app as jira_app # NEW
235
+ ```
236
+
237
+ ## Testing
238
+
239
+ All new command structures have been tested and verified:
240
+
241
+ ✅ `mcp-ticketer --help` - Shows new command groups
242
+ ✅ `mcp-ticketer ticket --help` - Shows ticket subcommands
243
+ ✅ `mcp-ticketer platform --help` - Shows platform groups
244
+ ✅ `mcp-ticketer platform linear --help` - Shows Linear commands
245
+ ✅ `mcp-ticketer status` / `mcp-ticketer health` - Aliases work
246
+ ✅ `mcp-ticketer doctor` / `mcp-ticketer diagnose` - Aliases work
247
+ ✅ Old commands show deprecation warnings
248
+
249
+ ## Benefits
250
+
251
+ 1. **Better Organization** - Commands are logically grouped by function
252
+ 2. **Cleaner Top Level** - Reduced clutter at the main help level
253
+ 3. **Improved Discoverability** - Users can explore commands by category
254
+ 4. **Future-Proof** - Easy to add new platforms without polluting the top level
255
+ 5. **Backward Compatible** - Existing scripts continue to work (with warnings)
256
+ 6. **Consistent Pattern** - Follows established CLI patterns (kuzu-memory style)
257
+ 7. **Alias Convenience** - Common operations have intuitive aliases
258
+
259
+ ## Next Steps
260
+
261
+ 1. ✅ Implement restructuring
262
+ 2. ✅ Add deprecation warnings
263
+ 3. ✅ Test all command paths
264
+ 4. 📝 Update documentation (in progress)
265
+ 5. 🔄 Deprecation cycle (6-12 months before removing old commands)
266
+ 6. 🚀 Implement platform-specific commands for JIRA and GitHub
267
+
268
+ ---
269
+
270
+ **Version:** 1.0.0
271
+ **Date:** October 26, 2025
272
+ **Author:** Generated via Claude Code MPM
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.3.7
3
+ Version: 0.4.0
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>
@@ -151,7 +151,7 @@ extend-exclude = '''
151
151
  '''
152
152
 
153
153
  [tool.ruff]
154
- target-version = "py39"
154
+ target-version = "0.4.0"
155
155
  line-length = 88
156
156
 
157
157
  [tool.ruff.lint]
@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.3.7"
3
+ __version__ = "0.4.0"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -24,9 +24,10 @@ from ..queue.ticket_registry import TicketRegistry
24
24
  from .configure import configure_wizard, set_adapter_config, show_current_config
25
25
  from .diagnostics import run_diagnostics
26
26
  from .discover import app as discover_app
27
- from .linear_commands import app as linear_app
28
27
  from .migrate_config import migrate_config_command
28
+ from .platform_commands import app as platform_app
29
29
  from .queue_commands import app as queue_app
30
+ from .ticket_commands import app as ticket_app
30
31
 
31
32
  # Load environment variables from .env files
32
33
  # Priority: .env.local (highest) > .env (base)
@@ -1142,9 +1143,14 @@ def migrate_config(
1142
1143
  migrate_config_command(dry_run=dry_run)
1143
1144
 
1144
1145
 
1145
- @app.command("status")
1146
- def status_command():
1147
- """Show queue and worker status."""
1146
+ @app.command("queue-status", deprecated=True, hidden=True)
1147
+ def old_queue_status_command():
1148
+ """Show queue and worker status.
1149
+
1150
+ DEPRECATED: Use 'mcp-ticketer queue status' instead.
1151
+ """
1152
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer queue status' instead.[/yellow]\n")
1153
+
1148
1154
  queue = Queue()
1149
1155
  manager = WorkerManager()
1150
1156
 
@@ -1169,12 +1175,12 @@ def status_command():
1169
1175
  console.print("\n[red]○ Worker is not running[/red]")
1170
1176
  if pending > 0:
1171
1177
  console.print(
1172
- "[yellow]Note: There are pending items. Start worker with 'mcp-ticketer worker start'[/yellow]"
1178
+ "[yellow]Note: There are pending items. Start worker with 'mcp-ticketer queue worker start'[/yellow]"
1173
1179
  )
1174
1180
 
1175
1181
 
1176
- @app.command()
1177
- def health(
1182
+ @app.command("queue-health", deprecated=True, hidden=True)
1183
+ def old_queue_health_command(
1178
1184
  auto_repair: bool = typer.Option(
1179
1185
  False, "--auto-repair", help="Attempt automatic repair of issues"
1180
1186
  ),
@@ -1182,7 +1188,11 @@ def health(
1182
1188
  False, "--verbose", "-v", help="Show detailed health information"
1183
1189
  ),
1184
1190
  ) -> None:
1185
- """Check queue system health and detect issues immediately."""
1191
+ """Check queue system health and detect issues immediately.
1192
+
1193
+ DEPRECATED: Use 'mcp-ticketer queue health' instead.
1194
+ """
1195
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer queue health' instead.[/yellow]\n")
1186
1196
  health_monitor = QueueHealthMonitor()
1187
1197
  health = health_monitor.check_health()
1188
1198
 
@@ -1251,7 +1261,7 @@ def health(
1251
1261
  raise typer.Exit(2)
1252
1262
 
1253
1263
 
1254
- @app.command()
1264
+ @app.command(deprecated=True, hidden=True)
1255
1265
  def create(
1256
1266
  title: str = typer.Argument(..., help="Ticket title"),
1257
1267
  description: Optional[str] = typer.Option(
@@ -1280,7 +1290,12 @@ def create(
1280
1290
  None, "--adapter", help="Override default adapter"
1281
1291
  ),
1282
1292
  ) -> None:
1283
- """Create a new ticket with comprehensive health checks."""
1293
+ """Create a new ticket with comprehensive health checks.
1294
+
1295
+ DEPRECATED: Use 'mcp-ticketer ticket create' instead.
1296
+ """
1297
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket create' instead.[/yellow]\n")
1298
+
1284
1299
  # IMMEDIATE HEALTH CHECK - Critical for reliability
1285
1300
  health_monitor = QueueHealthMonitor()
1286
1301
  health = health_monitor.check_health()
@@ -1476,7 +1491,7 @@ def create(
1476
1491
  )
1477
1492
 
1478
1493
 
1479
- @app.command("list")
1494
+ @app.command("list", deprecated=True, hidden=True)
1480
1495
  def list_tickets(
1481
1496
  state: Optional[TicketState] = typer.Option(
1482
1497
  None, "--state", "-s", help="Filter by state"
@@ -1489,7 +1504,11 @@ def list_tickets(
1489
1504
  None, "--adapter", help="Override default adapter"
1490
1505
  ),
1491
1506
  ) -> None:
1492
- """List tickets with optional filters."""
1507
+ """List tickets with optional filters.
1508
+
1509
+ DEPRECATED: Use 'mcp-ticketer ticket list' instead.
1510
+ """
1511
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket list' instead.[/yellow]\n")
1493
1512
 
1494
1513
  async def _list():
1495
1514
  adapter_instance = get_adapter(
@@ -1531,7 +1550,7 @@ def list_tickets(
1531
1550
  console.print(table)
1532
1551
 
1533
1552
 
1534
- @app.command()
1553
+ @app.command(deprecated=True, hidden=True)
1535
1554
  def show(
1536
1555
  ticket_id: str = typer.Argument(..., help="Ticket ID"),
1537
1556
  comments: bool = typer.Option(False, "--comments", "-c", help="Show comments"),
@@ -1539,7 +1558,11 @@ def show(
1539
1558
  None, "--adapter", help="Override default adapter"
1540
1559
  ),
1541
1560
  ) -> None:
1542
- """Show detailed ticket information."""
1561
+ """Show detailed ticket information.
1562
+
1563
+ DEPRECATED: Use 'mcp-ticketer ticket show' instead.
1564
+ """
1565
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket show' instead.[/yellow]\n")
1543
1566
 
1544
1567
  async def _show():
1545
1568
  adapter_instance = get_adapter(
@@ -1581,7 +1604,7 @@ def show(
1581
1604
  console.print(comment.content)
1582
1605
 
1583
1606
 
1584
- @app.command()
1607
+ @app.command(deprecated=True, hidden=True)
1585
1608
  def comment(
1586
1609
  ticket_id: str = typer.Argument(..., help="Ticket ID"),
1587
1610
  content: str = typer.Argument(..., help="Comment content"),
@@ -1589,7 +1612,11 @@ def comment(
1589
1612
  None, "--adapter", help="Override default adapter"
1590
1613
  ),
1591
1614
  ) -> None:
1592
- """Add a comment to a ticket."""
1615
+ """Add a comment to a ticket.
1616
+
1617
+ DEPRECATED: Use 'mcp-ticketer ticket comment' instead.
1618
+ """
1619
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket comment' instead.[/yellow]\n")
1593
1620
 
1594
1621
  async def _comment():
1595
1622
  adapter_instance = get_adapter(
@@ -1617,7 +1644,7 @@ def comment(
1617
1644
  raise typer.Exit(1)
1618
1645
 
1619
1646
 
1620
- @app.command()
1647
+ @app.command(deprecated=True, hidden=True)
1621
1648
  def update(
1622
1649
  ticket_id: str = typer.Argument(..., help="Ticket ID"),
1623
1650
  title: Optional[str] = typer.Option(None, "--title", help="New title"),
@@ -1634,7 +1661,11 @@ def update(
1634
1661
  None, "--adapter", help="Override default adapter"
1635
1662
  ),
1636
1663
  ) -> None:
1637
- """Update ticket fields."""
1664
+ """Update ticket fields.
1665
+
1666
+ DEPRECATED: Use 'mcp-ticketer ticket update' instead.
1667
+ """
1668
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket update' instead.[/yellow]\n")
1638
1669
  updates = {}
1639
1670
  if title:
1640
1671
  updates["title"] = title
@@ -1681,7 +1712,7 @@ def update(
1681
1712
  console.print("[dim]Worker started to process request[/dim]")
1682
1713
 
1683
1714
 
1684
- @app.command()
1715
+ @app.command(deprecated=True, hidden=True)
1685
1716
  def transition(
1686
1717
  ticket_id: str = typer.Argument(..., help="Ticket ID"),
1687
1718
  state_positional: Optional[TicketState] = typer.Argument(
@@ -1696,15 +1727,19 @@ def transition(
1696
1727
  ) -> None:
1697
1728
  """Change ticket state with validation.
1698
1729
 
1730
+ DEPRECATED: Use 'mcp-ticketer ticket transition' instead.
1731
+
1699
1732
  Examples:
1700
1733
  # Recommended syntax with flag:
1701
- mcp-ticketer transition BTA-215 --state done
1702
- mcp-ticketer transition BTA-215 -s in_progress
1734
+ mcp-ticketer ticket transition BTA-215 --state done
1735
+ mcp-ticketer ticket transition BTA-215 -s in_progress
1703
1736
 
1704
1737
  # Legacy positional syntax (still supported):
1705
- mcp-ticketer transition BTA-215 done
1738
+ mcp-ticketer ticket transition BTA-215 done
1706
1739
 
1707
1740
  """
1741
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket transition' instead.[/yellow]\n")
1742
+
1708
1743
  # Determine which state to use (prefer flag over positional)
1709
1744
  target_state = state if state is not None else state_positional
1710
1745
 
@@ -1747,7 +1782,7 @@ def transition(
1747
1782
  console.print("[dim]Worker started to process request[/dim]")
1748
1783
 
1749
1784
 
1750
- @app.command()
1785
+ @app.command(deprecated=True, hidden=True)
1751
1786
  def search(
1752
1787
  query: Optional[str] = typer.Argument(None, help="Search query"),
1753
1788
  state: Optional[TicketState] = typer.Option(None, "--state", "-s"),
@@ -1758,7 +1793,11 @@ def search(
1758
1793
  None, "--adapter", help="Override default adapter"
1759
1794
  ),
1760
1795
  ) -> None:
1761
- """Search tickets with advanced query."""
1796
+ """Search tickets with advanced query.
1797
+
1798
+ DEPRECATED: Use 'mcp-ticketer ticket search' instead.
1799
+ """
1800
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket search' instead.[/yellow]\n")
1762
1801
 
1763
1802
  async def _search():
1764
1803
  adapter_instance = get_adapter(
@@ -1790,6 +1829,12 @@ def search(
1790
1829
  console.print()
1791
1830
 
1792
1831
 
1832
+ # Add ticket command group to main app
1833
+ app.add_typer(ticket_app, name="ticket")
1834
+
1835
+ # Add platform command group to main app
1836
+ app.add_typer(platform_app, name="platform")
1837
+
1793
1838
  # Add queue command to main app
1794
1839
  app.add_typer(queue_app, name="queue")
1795
1840
 
@@ -1798,8 +1843,8 @@ app.add_typer(discover_app, name="discover")
1798
1843
 
1799
1844
 
1800
1845
  # Add diagnostics command
1801
- @app.command()
1802
- def diagnose(
1846
+ @app.command("diagnose")
1847
+ def diagnose_command(
1803
1848
  output_file: Optional[str] = typer.Option(
1804
1849
  None, "--output", "-o", help="Save full report to file"
1805
1850
  ),
@@ -1810,7 +1855,7 @@ def diagnose(
1810
1855
  False, "--simple", help="Use simple diagnostics (no heavy dependencies)"
1811
1856
  ),
1812
1857
  ) -> None:
1813
- """Run comprehensive system diagnostics and health check."""
1858
+ """Run comprehensive system diagnostics and health check (alias: doctor)."""
1814
1859
  if simple:
1815
1860
  from .simple_health import simple_diagnose
1816
1861
 
@@ -1845,9 +1890,36 @@ def diagnose(
1845
1890
  raise typer.Exit(1)
1846
1891
 
1847
1892
 
1848
- @app.command()
1849
- def health() -> None:
1850
- """Quick health check - shows system status summary."""
1893
+ @app.command("doctor")
1894
+ def doctor_alias(
1895
+ output_file: Optional[str] = typer.Option(
1896
+ None, "--output", "-o", help="Save full report to file"
1897
+ ),
1898
+ json_output: bool = typer.Option(
1899
+ False, "--json", help="Output report in JSON format"
1900
+ ),
1901
+ simple: bool = typer.Option(
1902
+ False, "--simple", help="Use simple diagnostics (no heavy dependencies)"
1903
+ ),
1904
+ ) -> None:
1905
+ """Run comprehensive system diagnostics and health check (alias for diagnose)."""
1906
+ # Call the diagnose_command function with the same parameters
1907
+ diagnose_command(output_file=output_file, json_output=json_output, simple=simple)
1908
+
1909
+
1910
+ @app.command("status")
1911
+ def status_command() -> None:
1912
+ """Quick health check - shows system status summary (alias: health)."""
1913
+ from .simple_health import simple_health_check
1914
+
1915
+ result = simple_health_check()
1916
+ if result != 0:
1917
+ raise typer.Exit(result)
1918
+
1919
+
1920
+ @app.command("health")
1921
+ def health_alias() -> None:
1922
+ """Quick health check - shows system status summary (alias for status)."""
1851
1923
  from .simple_health import simple_health_check
1852
1924
 
1853
1925
  result = simple_health_check()
@@ -1863,9 +1935,13 @@ mcp_app = typer.Typer(
1863
1935
  )
1864
1936
 
1865
1937
 
1866
- @app.command()
1938
+ @app.command(deprecated=True, hidden=True)
1867
1939
  def check(queue_id: str = typer.Argument(..., help="Queue ID to check")):
1868
- """Check status of a queued operation."""
1940
+ """Check status of a queued operation.
1941
+
1942
+ DEPRECATED: Use 'mcp-ticketer ticket check' instead.
1943
+ """
1944
+ console.print("[yellow]⚠️ This command is deprecated. Use 'mcp-ticketer ticket check' instead.[/yellow]\n")
1869
1945
  queue = Queue()
1870
1946
  item = queue.get_item(queue_id)
1871
1947
 
@@ -2141,7 +2217,6 @@ def mcp_auggie(
2141
2217
 
2142
2218
 
2143
2219
  # Add command groups to main app (must be after all subcommands are defined)
2144
- app.add_typer(linear_app, name="linear")
2145
2220
  app.add_typer(mcp_app, name="mcp")
2146
2221
 
2147
2222