mcp-ticketer 0.4.2__tar.gz → 0.4.4__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.
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.env.example +11 -4
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/CHANGELOG.md +91 -1
- mcp_ticketer-0.4.4/CLI_RESTRUCTURE_REPORT.md +156 -0
- mcp_ticketer-0.4.4/CLI_RESTRUCTURE_TEST_REPORT.md +425 -0
- mcp_ticketer-0.4.4/PATH_TRAVERSAL_SECURITY_TEST_REPORT.md +285 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/PKG-INFO +61 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/README.md +59 -0
- mcp_ticketer-0.4.4/SECURITY_RESCAN_REPORT.md +421 -0
- mcp_ticketer-0.4.4/VERIFICATION_v0.4.3.md +284 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/API_REFERENCE.md +103 -0
- mcp_ticketer-0.4.4/docs/ATTACHMENTS.md +564 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/QUICK_START.md +64 -4
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/pyproject.toml +3 -3
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/pytest.ini +1 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/aitrackdown.py +254 -11
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/github.py +13 -13
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/hybrid.py +11 -11
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/jira.py +20 -24
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cache/memory.py +6 -5
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/codex_configure.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/configure.py +4 -5
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/diagnostics.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/discover.py +4 -5
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/gemini_configure.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/linear_commands.py +6 -7
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/main.py +341 -250
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/mcp_configure.py +1 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/ticket_commands.py +27 -30
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/utils.py +23 -22
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/__init__.py +2 -1
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/adapter.py +82 -13
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/config.py +27 -29
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/env_discovery.py +10 -10
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/env_loader.py +8 -8
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/http_client.py +16 -16
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/mappers.py +10 -10
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/models.py +50 -20
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/project_config.py +40 -34
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/registry.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/dto.py +32 -32
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/response_builder.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/server.py +3 -3
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/server_sdk.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/attachment_tools.py +3 -4
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/comment_tools.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/hierarchy_tools.py +8 -8
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/pr_tools.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/search_tools.py +6 -6
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/ticket_tools.py +12 -12
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/health_monitor.py +4 -4
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/manager.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/queue.py +16 -16
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/ticket_registry.py +7 -7
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/worker.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/PKG-INFO +61 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/SOURCES.txt +7 -12
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/test_mappers.py +6 -6
- mcp_ticketer-0.4.4/tests/adapters/test_aitrackdown_security.py +330 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_mcp_server_qa.py +2 -2
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/unit/test_core_registry.py +5 -5
- mcp_ticketer-0.4.2/CLI_RESTRUCTURING_SUMMARY.md +0 -272
- mcp_ticketer-0.4.2/LINEAR_ADAPTER_REVIEW.md +0 -477
- mcp_ticketer-0.4.2/LINEAR_FIX_RECOMMENDATION.md +0 -292
- mcp_ticketer-0.4.2/LINEAR_GRAPHQL_TYPE_ANALYSIS.md +0 -300
- mcp_ticketer-0.4.2/LINEAR_LABEL_FIX_SUMMARY.md +0 -262
- mcp_ticketer-0.4.2/LINEAR_PATTERN_COMPARISON.md +0 -441
- mcp_ticketer-0.4.2/LINEAR_QUERY_ALTERNATIVE_ANALYSIS.md +0 -278
- mcp_ticketer-0.4.2/LINEAR_RESEARCH_SUMMARY.md +0 -423
- mcp_ticketer-0.4.2/LINEAR_TAGS_FIX_SUMMARY.md +0 -238
- mcp_ticketer-0.4.2/QUICK_WINS_IMPLEMENTATION.md +0 -320
- mcp_ticketer-0.4.2/SECURITY_SCAN_REPORT_v0.1.24.md +0 -668
- mcp_ticketer-0.4.2/V0.3.2_RELEASE_FIXES_SUMMARY.md +0 -472
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042175430.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042175768.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042175888.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042175987.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042176075.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/comments/comment-20251024141042176163.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/tickets/task-20251024141042175062.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.aitrackdown-test/tickets/task-20251024141042175285.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.claude.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.coveragerc +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.cursor/mcp.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.mcp/config.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.python-version +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/CLAUDE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/LICENSE +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/MANIFEST.in +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/Makefile +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/debug_epic_creation.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/debug_full_flow.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/debug_worker_epic.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/AI_CLIENT_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/README.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/VERSIONING_AND_BUILD_TRACKING.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/api.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/changelogs/CHANGELOG_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/changelogs/CHANGELOG_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/changelogs/CHANGELOG_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/cli.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/conf.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/development/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/development/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/development/RELEASE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/development/RELEASING.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/development.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/examples.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/guides/BULLETPROOF_TICKET_CREATION_GUIDE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/index.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/installation.rst +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_GUIDE_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_SUCCESS_v0.2.0.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_SUCCESS_v0.3.0.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_SUCCESS_v0.3.1.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_SUCCESS_v0.3.4.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/PUBLICATION_SUCCESS_v0.3.5.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/RELEASE_v0.1.39_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/releases/RELEASE_v0.2.0_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/CONFIG_RESOLUTION_FIX.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/CREDENTIAL_VALIDATION_FIX.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/DIAGNOSTICS_FEATURE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/MCP_CONFIGURATION_TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/reports/VERIFICATION_RESULTS.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/setup/CLAUDE_DESKTOP_SETUP.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/setup/CODEX_INTEGRATION.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/setup/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/setup/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/AUTO_DISCOVERY_BUG_FIX_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/BULLETPROOF_IMPROVEMENTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/COMMAND_SYNONYMS_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/COMPREHENSIVE_TESTING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/INTERACTIVE_CLI_SETUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/LINEAR_ADAPTER_INITIALIZATION_BUG_FIX.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/MODULE_REFACTORING_ANALYSIS.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/MODULE_REFACTORING_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/PROJECT_CLEANUP_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/docs/summaries/REFACTORED_ENV_SOLUTION_SUMMARY.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/mcp-ticketer +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/requirements.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/scripts/README.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/scripts/install.sh +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/scripts/manage_version.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/scripts/mcp_server.sh +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/scripts/test_set_command.sh +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/setup.cfg +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/setup.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/adapter.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/client.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/mappers.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/queries.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear/types.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/adapters/linear.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/adapter_diagnostics.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/auggie_configure.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/migrate_config.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/platform_commands.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/cli/simple_health.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/core/exceptions.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/constants.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/mcp/tools/bulk_tools.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/requires.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/test_linear_fixes.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/test_worker_persistence.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/README.md +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/test_adapter.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/test_client.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/test_queries.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/linear/test_types.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_aitrackdown.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_github.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_github_token.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_jira.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_jira_direct.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_jira_projects.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_linear.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_linear_config.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/adapters/test_linear_native.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/conftest.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/debug_credential_validation.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_actual_worker_execution.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_config_resolution.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_environment_handoff.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_queue_processing.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_queue_system.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/core/test_unified_env_loading.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_adapter_cache.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_cli_config.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_cli_vs_simulation.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_linear_teams.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_search.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_test.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_worker_adapter.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_worker_simulation.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/debug/debug_worker_subprocess.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/e2e/test_comments_and_attachments.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/e2e/test_complete_ticket_workflow.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/e2e/test_complete_workflow.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/e2e/test_hierarchy_validation.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/e2e/test_state_transitions.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_aitrackdown_commenting.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_all_adapters.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_commenting_functionality.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_comprehensive.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_hierarchy_and_workflow.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_jira_github_adapters.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_serve_config.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/integration/test_user_assignment.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/performance/test_optimizations.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/performance/test_performance.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/run_comprehensive_tests.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_api_usage.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_basic.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_codex_config.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_comprehensive_qa.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_error_handling.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_linear_teams.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_models.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/unit/__init__.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/unit/test_cache_memory.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/unit/test_core_exceptions.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tests/unit/test_core_models.py +0 -0
- {mcp_ticketer-0.4.2 → mcp_ticketer-0.4.4}/tox.ini +0 -0
|
@@ -14,10 +14,17 @@
|
|
|
14
14
|
# Get your API key from: https://linear.app/settings/api
|
|
15
15
|
LINEAR_API_KEY=lin_api_YOUR_KEY_HERE
|
|
16
16
|
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
# Linear Team Identification - Choose ONE of the following:
|
|
18
|
+
# Option 1: Team key (recommended - short code like 'ENG', 'DESIGN', 'PRODUCT')
|
|
19
|
+
LINEAR_TEAM_KEY=ENG
|
|
20
|
+
|
|
21
|
+
# Option 2: Team UUID (for advanced use cases)
|
|
22
|
+
# LINEAR_TEAM_ID=02d15669-7351-4451-9719-807576c16049
|
|
23
|
+
|
|
24
|
+
# How to find your team key:
|
|
25
|
+
# 1. Go to Linear Settings → Teams
|
|
26
|
+
# 2. Select your team
|
|
27
|
+
# 3. Look for the "Key" field (e.g., "ENG")
|
|
21
28
|
|
|
22
29
|
# Optional: Linear project ID
|
|
23
30
|
# LINEAR_PROJECT_ID=YOUR-PROJECT-ID
|
|
@@ -4,7 +4,97 @@ All notable changes to MCP Ticketer will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
-
## [
|
|
7
|
+
## [0.4.4] - 2025-10-27
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- **CLI restructure**: `install <platform>` for platform installation (claude-code, claude-desktop, gemini, codex, auggie)
|
|
11
|
+
- **MCP commands**: Reserved `mcp` namespace for MCP server actions (serve, status, stop)
|
|
12
|
+
- Platform names now positional arguments instead of flags for better UX
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **mcp status**: New command showing configuration status for all platforms
|
|
16
|
+
- **mcp stop**: New command with informational message about MCP architecture
|
|
17
|
+
|
|
18
|
+
### Improved
|
|
19
|
+
- Better command structure (install for platforms, mcp for actions)
|
|
20
|
+
- Clearer error messages with available options
|
|
21
|
+
- Maintained full backward compatibility with legacy commands
|
|
22
|
+
|
|
23
|
+
### Testing
|
|
24
|
+
- 19/19 CLI tests passed (100% success rate)
|
|
25
|
+
|
|
26
|
+
## [0.4.3] - 2025-10-27
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- **LINEAR_TEAM_KEY Environment Variable**: Easier Linear configuration with team keys
|
|
30
|
+
- Added `LINEAR_TEAM_KEY` support as primary configuration option
|
|
31
|
+
- Team key (e.g., "ENG", "DESIGN") now recommended over team ID (UUID)
|
|
32
|
+
- Automatic resolution of team key to team ID in Linear adapter
|
|
33
|
+
- Updated `.env.example` with LINEAR_TEAM_KEY as default option
|
|
34
|
+
- CLI `init` command now prompts for team key by default
|
|
35
|
+
- **Command Synonyms**: Init, install, and setup commands are now fully synonymous
|
|
36
|
+
- `mcp-ticketer init` - Initialize configuration
|
|
37
|
+
- `mcp-ticketer install` - Install and configure (same as init)
|
|
38
|
+
- `mcp-ticketer setup` - Setup (same as init)
|
|
39
|
+
- All three commands accept identical parameters and behave identically
|
|
40
|
+
- **Attachment Model**: Universal file attachment support
|
|
41
|
+
- New `Attachment` model in core models for cross-adapter attachment representation
|
|
42
|
+
- Fields: id, ticket_id, filename, url, content_type, size_bytes, created_at, created_by, description, metadata
|
|
43
|
+
- Full documentation in new `docs/ATTACHMENTS.md` guide
|
|
44
|
+
- **AITrackdown Attachment Support**: Complete file attachment implementation
|
|
45
|
+
- `add_attachment()` - Upload files to local filesystem with security features
|
|
46
|
+
- `get_attachments()` - List all attachments for a ticket
|
|
47
|
+
- `delete_attachment()` - Remove specific attachments
|
|
48
|
+
- Local filesystem storage in `.aitrackdown/attachments/<ticket-id>/` directories
|
|
49
|
+
- Automatic filename sanitization to prevent security issues
|
|
50
|
+
- SHA256 checksumming for file integrity verification
|
|
51
|
+
- MIME type detection based on file extension
|
|
52
|
+
- Size validation with configurable limits (default 100MB)
|
|
53
|
+
- Organized per-ticket storage structure
|
|
54
|
+
- **MCP Attachment Tools**: AI agent attachment support with fallback
|
|
55
|
+
- `ticket_attach` - Add file attachments via MCP
|
|
56
|
+
- `ticket_attachments` - List attachments via MCP
|
|
57
|
+
- `ticket_delete_attachment` - Delete attachments via MCP
|
|
58
|
+
- Automatic fallback to comments for adapters without attachment support
|
|
59
|
+
- Graceful degradation for Linear, Jira, and GitHub adapters
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
- **Linear Configuration**: LINEAR_TEAM_KEY is now the primary/recommended option
|
|
63
|
+
- Team ID (LINEAR_TEAM_ID) still supported for backward compatibility
|
|
64
|
+
- CLI init flow updated to prompt for team key first
|
|
65
|
+
- Documentation updated across README, QUICK_START, and setup guides
|
|
66
|
+
- **Environment Variable Priority**: LINEAR_TEAM_KEY takes precedence over LINEAR_TEAM_ID
|
|
67
|
+
- When both are present, LINEAR_TEAM_KEY is used
|
|
68
|
+
- Adapter automatically resolves team key to team ID via GraphQL
|
|
69
|
+
- **Documentation Structure**: New comprehensive attachment documentation
|
|
70
|
+
- Created `docs/ATTACHMENTS.md` (400+ lines)
|
|
71
|
+
- Updated README.md with attachment examples and LINEAR_TEAM_KEY info
|
|
72
|
+
- Updated QUICK_START.md with attachment usage and Linear team key setup
|
|
73
|
+
- Updated API_REFERENCE.md with complete Attachment model specification
|
|
74
|
+
- Added configuration section to README with Linear setup details
|
|
75
|
+
|
|
76
|
+
### Fixed
|
|
77
|
+
- **LINEAR_TEAM_KEY Environment Loading**: Proper loading from .env files
|
|
78
|
+
- Fixed `project_config.py` to check all LINEAR_* environment variables
|
|
79
|
+
- Environment variable discovery now detects LINEAR_TEAM_KEY
|
|
80
|
+
- Resolves issues where LINEAR_TEAM_KEY wasn't being recognized
|
|
81
|
+
|
|
82
|
+
### Documentation
|
|
83
|
+
- **New Files**:
|
|
84
|
+
- `docs/ATTACHMENTS.md` - Comprehensive attachment guide with examples, security notes, and roadmap
|
|
85
|
+
- **Updated Files**:
|
|
86
|
+
- `README.md` - Added attachment features, LINEAR_TEAM_KEY configuration, and command synonyms
|
|
87
|
+
- `docs/QUICK_START.md` - Added attachment examples and LINEAR_TEAM_KEY setup instructions
|
|
88
|
+
- `docs/API_REFERENCE.md` - Added Attachment model specification and adapter methods
|
|
89
|
+
- `.env.example` - Updated with LINEAR_TEAM_KEY as primary option with clear instructions
|
|
90
|
+
|
|
91
|
+
### Security
|
|
92
|
+
- **Attachment Security Features**:
|
|
93
|
+
- Filename sanitization prevents path traversal and injection attacks
|
|
94
|
+
- Path resolution validates files stay within allowed directories
|
|
95
|
+
- File size limits prevent disk exhaustion
|
|
96
|
+
- SHA256 checksums enable integrity verification
|
|
97
|
+
- Isolated per-ticket storage prevents cross-ticket access
|
|
8
98
|
|
|
9
99
|
## [0.3.6] - 2025-01-25
|
|
10
100
|
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# CLI Command Restructure Report
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
Successfully restructured CLI commands to have clearer separation between platform installation and MCP server operations.
|
|
5
|
+
|
|
6
|
+
## Changes Made
|
|
7
|
+
|
|
8
|
+
### 1. Install Command Restructure
|
|
9
|
+
**Old Behavior:**
|
|
10
|
+
```bash
|
|
11
|
+
# Platform installation via flag
|
|
12
|
+
mcp-ticketer install --platform claude-code
|
|
13
|
+
mcp-ticketer install --platform claude-desktop
|
|
14
|
+
|
|
15
|
+
# Adapter setup (default)
|
|
16
|
+
mcp-ticketer install
|
|
17
|
+
mcp-ticketer install --adapter linear
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**New Behavior:**
|
|
21
|
+
```bash
|
|
22
|
+
# Platform installation via positional argument (NEW)
|
|
23
|
+
mcp-ticketer install claude-code
|
|
24
|
+
mcp-ticketer install claude-desktop
|
|
25
|
+
mcp-ticketer install gemini
|
|
26
|
+
mcp-ticketer install codex
|
|
27
|
+
mcp-ticketer install auggie
|
|
28
|
+
|
|
29
|
+
# Adapter setup (unchanged - backward compatible)
|
|
30
|
+
mcp-ticketer install
|
|
31
|
+
mcp-ticketer install --adapter linear
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. MCP Command Group Enhancement
|
|
35
|
+
**Added Commands:**
|
|
36
|
+
```bash
|
|
37
|
+
mcp-ticketer mcp status # Check MCP configuration status
|
|
38
|
+
mcp-ticketer mcp stop # Placeholder (explains MCP is on-demand)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Existing Commands (unchanged):**
|
|
42
|
+
```bash
|
|
43
|
+
mcp-ticketer mcp serve # Start MCP server
|
|
44
|
+
mcp-ticketer mcp claude # Configure Claude (legacy)
|
|
45
|
+
mcp-ticketer mcp gemini # Configure Gemini (legacy)
|
|
46
|
+
mcp-ticketer mcp codex # Configure Codex (legacy)
|
|
47
|
+
mcp-ticketer mcp auggie # Configure Auggie (legacy)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Command Structure Comparison
|
|
51
|
+
|
|
52
|
+
### Platform Installation
|
|
53
|
+
| Old Syntax | New Syntax (Recommended) | Legacy Support |
|
|
54
|
+
|------------|-------------------------|----------------|
|
|
55
|
+
| `mcp-ticketer install --platform claude-code` | `mcp-ticketer install claude-code` | ✓ (still works) |
|
|
56
|
+
| `mcp-ticketer mcp claude` | `mcp-ticketer install claude-code` | ✓ (still works) |
|
|
57
|
+
| N/A | `mcp-ticketer install claude-desktop` | ✓ (new) |
|
|
58
|
+
| `mcp-ticketer mcp gemini` | `mcp-ticketer install gemini` | ✓ (still works) |
|
|
59
|
+
|
|
60
|
+
### MCP Server Operations
|
|
61
|
+
| Command | Purpose | Status |
|
|
62
|
+
|---------|---------|--------|
|
|
63
|
+
| `mcp-ticketer mcp serve` | Start MCP server | Existing |
|
|
64
|
+
| `mcp-ticketer mcp status` | Check configuration | **NEW** |
|
|
65
|
+
| `mcp-ticketer mcp stop` | Stop server (placeholder) | **NEW** |
|
|
66
|
+
|
|
67
|
+
## Test Results
|
|
68
|
+
|
|
69
|
+
### ✓ Help Text
|
|
70
|
+
```bash
|
|
71
|
+
$ mcp-ticketer install --help
|
|
72
|
+
# Shows platform as positional argument ✓
|
|
73
|
+
|
|
74
|
+
$ mcp-ticketer mcp --help
|
|
75
|
+
# Shows serve, status, stop, claude, gemini, codex, auggie ✓
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### ✓ Install Command
|
|
79
|
+
```bash
|
|
80
|
+
$ mcp-ticketer install claude-code --dry-run
|
|
81
|
+
# DRY RUN - Would install for Claude Code ✓
|
|
82
|
+
|
|
83
|
+
$ mcp-ticketer install
|
|
84
|
+
# Runs adapter setup wizard (backward compatible) ✓
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### ✓ MCP Commands
|
|
88
|
+
```bash
|
|
89
|
+
$ mcp-ticketer mcp status
|
|
90
|
+
# Shows configuration status for all platforms ✓
|
|
91
|
+
|
|
92
|
+
$ mcp-ticketer mcp stop
|
|
93
|
+
# Explains MCP is on-demand (no persistent server) ✓
|
|
94
|
+
|
|
95
|
+
$ mcp-ticketer mcp claude --help
|
|
96
|
+
# Still works for backward compatibility ✓
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Backward Compatibility
|
|
100
|
+
|
|
101
|
+
### ✓ Maintained
|
|
102
|
+
1. `mcp-ticketer install` (no args) - Still runs adapter setup
|
|
103
|
+
2. `mcp-ticketer install --adapter linear` - Still works
|
|
104
|
+
3. `mcp-ticketer mcp claude` - Still configures Claude Code
|
|
105
|
+
4. `mcp-ticketer mcp gemini` - Still configures Gemini
|
|
106
|
+
5. `mcp-ticketer mcp codex` - Still configures Codex
|
|
107
|
+
6. `mcp-ticketer mcp auggie` - Still configures Auggie
|
|
108
|
+
7. `mcp-ticketer mcp serve` - Still starts MCP server
|
|
109
|
+
|
|
110
|
+
### ✓ Enhanced
|
|
111
|
+
1. `mcp-ticketer install <platform>` - New, clearer syntax
|
|
112
|
+
2. `mcp-ticketer mcp status` - New status command
|
|
113
|
+
3. `mcp-ticketer mcp stop` - New stop command (informational)
|
|
114
|
+
|
|
115
|
+
## Benefits
|
|
116
|
+
|
|
117
|
+
1. **Clearer Command Structure**: Platform names as positional arguments make the command more intuitive
|
|
118
|
+
2. **Better Discoverability**: `mcp-ticketer install --help` now clearly shows available platforms
|
|
119
|
+
3. **Consistent Patterns**: Follows common CLI patterns (e.g., `git remote add <name>`)
|
|
120
|
+
4. **Backward Compatible**: All old command paths still work
|
|
121
|
+
5. **Status Visibility**: New `mcp status` command shows configuration state across all platforms
|
|
122
|
+
|
|
123
|
+
## Files Modified
|
|
124
|
+
- `/Users/masa/Projects/mcp-ticketer/src/mcp_ticketer/cli/main.py`
|
|
125
|
+
- Modified `install()` command to accept platform as positional argument
|
|
126
|
+
- Added `mcp_status()` command
|
|
127
|
+
- Added `mcp_stop()` command
|
|
128
|
+
- Updated help text in `_show_next_steps()`
|
|
129
|
+
|
|
130
|
+
## Next Steps
|
|
131
|
+
1. Update documentation to reflect new command structure
|
|
132
|
+
2. Add migration guide for users using old syntax
|
|
133
|
+
3. Consider deprecation warnings for `--platform` flag (optional)
|
|
134
|
+
4. Update examples in README and docs
|
|
135
|
+
|
|
136
|
+
## Success Criteria
|
|
137
|
+
- [x] `mcp-ticketer install claude-code` works for platform installation
|
|
138
|
+
- [x] `mcp-ticketer mcp status` shows MCP configuration status
|
|
139
|
+
- [x] `mcp-ticketer mcp serve` works for MCP server
|
|
140
|
+
- [x] Old command paths still work for backward compatibility
|
|
141
|
+
- [x] Help text clearly explains command structure
|
|
142
|
+
- [x] All tests pass
|
|
143
|
+
|
|
144
|
+
## Migration Path for Users
|
|
145
|
+
```bash
|
|
146
|
+
# Old way (still works)
|
|
147
|
+
mcp-ticketer install --platform claude-code
|
|
148
|
+
mcp-ticketer mcp claude
|
|
149
|
+
|
|
150
|
+
# New way (recommended)
|
|
151
|
+
mcp-ticketer install claude-code
|
|
152
|
+
|
|
153
|
+
# Check configuration
|
|
154
|
+
mcp-ticketer mcp status
|
|
155
|
+
```
|
|
156
|
+
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
# CLI Restructure Test Report
|
|
2
|
+
|
|
3
|
+
**Test Date**: 2025-10-27
|
|
4
|
+
**Version**: 0.4.3
|
|
5
|
+
**Working Directory**: /Users/masa/Projects/mcp-ticketer
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
✅ **ALL TESTS PASSED**
|
|
12
|
+
|
|
13
|
+
The restructured CLI command hierarchy is working correctly. All new commands function as expected, backward compatibility is maintained, error handling is clear and helpful, and help text is accurate and informative.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Test Results
|
|
18
|
+
|
|
19
|
+
### 1. New Installation Commands ✅
|
|
20
|
+
|
|
21
|
+
All platform-specific installation commands work correctly with the new positional argument syntax.
|
|
22
|
+
|
|
23
|
+
#### Test Commands and Results:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
mcp-ticketer install claude-code --dry-run
|
|
27
|
+
# ✅ Result: "DRY RUN - Would install for Claude Code"
|
|
28
|
+
|
|
29
|
+
mcp-ticketer install claude-desktop --dry-run
|
|
30
|
+
# ✅ Result: "DRY RUN - Would install for Claude Desktop"
|
|
31
|
+
|
|
32
|
+
mcp-ticketer install gemini --dry-run
|
|
33
|
+
# ✅ Result: "DRY RUN - Would install for Gemini CLI"
|
|
34
|
+
|
|
35
|
+
mcp-ticketer install codex --dry-run
|
|
36
|
+
# ✅ Result: "DRY RUN - Would install for Codex"
|
|
37
|
+
|
|
38
|
+
mcp-ticketer install auggie --dry-run
|
|
39
|
+
# ✅ Result: "DRY RUN - Would install for Auggie"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Status**: ✅ PASS
|
|
43
|
+
**Notes**: All 5 platforms install correctly with clear dry-run output.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### 2. New MCP Server Commands ✅
|
|
48
|
+
|
|
49
|
+
The new `mcp` subcommands (status, stop, serve) function correctly.
|
|
50
|
+
|
|
51
|
+
#### Test Commands and Results:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
mcp-ticketer mcp status
|
|
55
|
+
```
|
|
56
|
+
**Output**:
|
|
57
|
+
```
|
|
58
|
+
MCP Server Status
|
|
59
|
+
|
|
60
|
+
✓ Project config found:
|
|
61
|
+
/Users/masa/Projects/mcp-ticketer/.mcp-ticketer/config.json
|
|
62
|
+
Default adapter: linear
|
|
63
|
+
|
|
64
|
+
✓ Claude Code configured: /Users/masa/Projects/mcp-ticketer/.mcp/config.json
|
|
65
|
+
✓ Claude Desktop configured: /Users/masa/Library/Application Support/Claude/claude_desktop_config.json
|
|
66
|
+
✓ Gemini (project) configured: /Users/masa/Projects/mcp-ticketer/.gemini/settings.json
|
|
67
|
+
✓ Codex configured: /Users/masa/.codex/config.toml
|
|
68
|
+
✓ Auggie configured: /Users/masa/.augment/settings.json
|
|
69
|
+
```
|
|
70
|
+
**Status**: ✅ PASS - Provides comprehensive configuration status
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
mcp-ticketer mcp stop
|
|
76
|
+
```
|
|
77
|
+
**Output**:
|
|
78
|
+
```
|
|
79
|
+
ℹ MCP server runs on-demand via stdio (not as a background service)
|
|
80
|
+
There is no persistent server process to stop.
|
|
81
|
+
|
|
82
|
+
The server starts automatically when AI clients connect and stops when they
|
|
83
|
+
disconnect.
|
|
84
|
+
```
|
|
85
|
+
**Status**: ✅ PASS - Clear informational message about server architecture
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
mcp-ticketer mcp serve
|
|
91
|
+
```
|
|
92
|
+
**Status**: ✅ PASS - Server starts (tested with timeout, would block waiting for stdio)
|
|
93
|
+
**Notes**: This is the actual MCP server entry point used by AI clients.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### 3. Backward Compatibility ✅
|
|
98
|
+
|
|
99
|
+
Legacy command syntax continues to work alongside new commands.
|
|
100
|
+
|
|
101
|
+
#### Legacy MCP Subcommands:
|
|
102
|
+
|
|
103
|
+
All legacy `mcp` subcommands function correctly:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
mcp-ticketer mcp claude --help
|
|
107
|
+
# ✅ Shows help for Claude configuration
|
|
108
|
+
|
|
109
|
+
mcp-ticketer mcp gemini --help
|
|
110
|
+
# ✅ Shows help for Gemini configuration
|
|
111
|
+
|
|
112
|
+
mcp-ticketer mcp codex --help
|
|
113
|
+
# ✅ Shows help for Codex configuration
|
|
114
|
+
|
|
115
|
+
mcp-ticketer mcp auggie --help
|
|
116
|
+
# ✅ Shows help for Auggie configuration
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Status**: ✅ PASS
|
|
120
|
+
**Notes**: All 4 legacy platform commands remain functional with proper help text.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
#### Legacy Install Behavior:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
mcp-ticketer install
|
|
128
|
+
# ✅ Runs interactive setup wizard (tested, prompted for overwrite confirmation)
|
|
129
|
+
|
|
130
|
+
mcp-ticketer install --adapter linear
|
|
131
|
+
# ✅ Accepts adapter flag for initialization
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Status**: ✅ PASS
|
|
135
|
+
**Notes**: Legacy install without platform argument still triggers init/setup flow.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 4. Error Handling ✅
|
|
140
|
+
|
|
141
|
+
Error messages are clear, helpful, and guide users to correct usage.
|
|
142
|
+
|
|
143
|
+
#### Invalid Platform:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
mcp-ticketer install invalid-platform --dry-run
|
|
147
|
+
```
|
|
148
|
+
**Output**:
|
|
149
|
+
```
|
|
150
|
+
Unknown platform: invalid-platform
|
|
151
|
+
|
|
152
|
+
Available platforms:
|
|
153
|
+
• claude-code
|
|
154
|
+
• claude-desktop
|
|
155
|
+
• auggie
|
|
156
|
+
• gemini
|
|
157
|
+
• codex
|
|
158
|
+
```
|
|
159
|
+
**Status**: ✅ PASS - Clear error with helpful list of valid options
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
#### Invalid MCP Subcommand:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
mcp-ticketer mcp invalid-subcommand
|
|
167
|
+
```
|
|
168
|
+
**Output**:
|
|
169
|
+
```
|
|
170
|
+
Usage: mcp-ticketer mcp [OPTIONS] COMMAND [ARGS]...
|
|
171
|
+
Try 'mcp-ticketer mcp --help' for help.
|
|
172
|
+
╭─ Error ──────────────────────────────────────────────────────────────────────╮
|
|
173
|
+
│ No such command 'invalid-subcommand'. │
|
|
174
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
175
|
+
```
|
|
176
|
+
**Status**: ✅ PASS - Clear error with suggestion to check help
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
#### Missing Required Argument:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
mcp-ticketer install --adapter
|
|
184
|
+
```
|
|
185
|
+
**Output**:
|
|
186
|
+
```
|
|
187
|
+
╭─ Error ──────────────────────────────────────────────────────────────────────╮
|
|
188
|
+
│ Option '--adapter' requires an argument. │
|
|
189
|
+
╰──────────────────────────────────────────────────────────────────────────────╯
|
|
190
|
+
```
|
|
191
|
+
**Status**: ✅ PASS - Clear error about missing argument value
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
### 5. Help Text Validation ✅
|
|
196
|
+
|
|
197
|
+
All help text is accurate, consistent, and clearly documents the command structure.
|
|
198
|
+
|
|
199
|
+
#### Main Help:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
mcp-ticketer --help
|
|
203
|
+
```
|
|
204
|
+
**Key Sections Verified**:
|
|
205
|
+
- ✅ Commands list shows all primary commands
|
|
206
|
+
- ✅ install and mcp commands are properly documented
|
|
207
|
+
- ✅ Version flag works: `mcp-ticketer version 0.4.3`
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
#### Install Help:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
mcp-ticketer install --help
|
|
215
|
+
```
|
|
216
|
+
**Key Features Verified**:
|
|
217
|
+
- ✅ Platform argument documented as positional: `[PLATFORM]`
|
|
218
|
+
- ✅ Lists all 5 valid platforms: claude-code, claude-desktop, gemini, codex, auggie
|
|
219
|
+
- ✅ Clearly explains dual behavior (new platform install vs legacy adapter setup)
|
|
220
|
+
- ✅ Examples show both new and legacy usage patterns
|
|
221
|
+
- ✅ All adapter-specific flags documented (--api-key, --team-id, etc.)
|
|
222
|
+
|
|
223
|
+
**Documentation Extract**:
|
|
224
|
+
```
|
|
225
|
+
New Command Structure:
|
|
226
|
+
# Install MCP for AI platforms
|
|
227
|
+
mcp-ticketer install claude-code # Claude Code (project-level)
|
|
228
|
+
mcp-ticketer install claude-desktop # Claude Desktop (global)
|
|
229
|
+
mcp-ticketer install gemini # Gemini CLI
|
|
230
|
+
mcp-ticketer install codex # Codex
|
|
231
|
+
mcp-ticketer install auggie # Auggie
|
|
232
|
+
|
|
233
|
+
Legacy Adapter Setup (still supported):
|
|
234
|
+
mcp-ticketer install # Interactive setup wizard
|
|
235
|
+
mcp-ticketer install --adapter linear
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
#### MCP Help:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
mcp-ticketer mcp --help
|
|
244
|
+
```
|
|
245
|
+
**Key Features Verified**:
|
|
246
|
+
- ✅ Lists all subcommands: serve, claude, gemini, codex, auggie, status, stop
|
|
247
|
+
- ✅ Brief descriptions for each command
|
|
248
|
+
- ✅ Clearly identifies as MCP integration configuration
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
#### Individual MCP Subcommand Help:
|
|
253
|
+
|
|
254
|
+
Each platform-specific MCP command has comprehensive help:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
mcp-ticketer mcp claude --help
|
|
258
|
+
```
|
|
259
|
+
- ✅ Explains project-level vs global configuration
|
|
260
|
+
- ✅ Documents --global and --force flags
|
|
261
|
+
- ✅ Provides clear examples
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
mcp-ticketer mcp gemini --help
|
|
265
|
+
```
|
|
266
|
+
- ✅ Documents --scope option (project vs user)
|
|
267
|
+
- ✅ Clear examples for both scopes
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
mcp-ticketer mcp codex --help
|
|
271
|
+
```
|
|
272
|
+
- ✅ IMPORTANT note: "Codex CLI ONLY supports global configuration"
|
|
273
|
+
- ✅ Mentions need to restart Codex CLI
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
mcp-ticketer mcp auggie --help
|
|
277
|
+
```
|
|
278
|
+
- ✅ IMPORTANT note: "Auggie CLI ONLY supports global configuration"
|
|
279
|
+
- ✅ Mentions need to restart Auggie CLI
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Summary of Command Structure
|
|
284
|
+
|
|
285
|
+
### New Primary Commands (All Working ✅)
|
|
286
|
+
|
|
287
|
+
1. **Platform Installation** (new positional syntax):
|
|
288
|
+
```bash
|
|
289
|
+
mcp-ticketer install <platform>
|
|
290
|
+
```
|
|
291
|
+
- claude-code (project-level)
|
|
292
|
+
- claude-desktop (global)
|
|
293
|
+
- gemini (project or user level)
|
|
294
|
+
- codex (global only)
|
|
295
|
+
- auggie (global only)
|
|
296
|
+
|
|
297
|
+
2. **MCP Server Management**:
|
|
298
|
+
```bash
|
|
299
|
+
mcp-ticketer mcp status # Check configuration status
|
|
300
|
+
mcp-ticketer mcp serve # Start MCP server (stdio)
|
|
301
|
+
mcp-ticketer mcp stop # Show info about server architecture
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Backward Compatible Commands (All Working ✅)
|
|
305
|
+
|
|
306
|
+
1. **Legacy MCP Platform Configuration**:
|
|
307
|
+
```bash
|
|
308
|
+
mcp-ticketer mcp claude # Same as: install claude-code
|
|
309
|
+
mcp-ticketer mcp gemini # Same as: install gemini
|
|
310
|
+
mcp-ticketer mcp codex # Same as: install codex
|
|
311
|
+
mcp-ticketer mcp auggie # Same as: install auggie
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
2. **Legacy Install Behavior**:
|
|
315
|
+
```bash
|
|
316
|
+
mcp-ticketer install # Runs init/setup wizard
|
|
317
|
+
mcp-ticketer install --adapter # Adapter-specific setup
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Issues Found
|
|
323
|
+
|
|
324
|
+
**None** - All tests passed successfully.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Recommendations
|
|
329
|
+
|
|
330
|
+
### Documentation Updates
|
|
331
|
+
|
|
332
|
+
1. **Update README.md** to feature new command syntax prominently:
|
|
333
|
+
- Lead with `mcp-ticketer install <platform>` examples
|
|
334
|
+
- Show new `mcp status` command for checking configuration
|
|
335
|
+
- Mention legacy commands are still supported
|
|
336
|
+
|
|
337
|
+
2. **Update Quick Start Guide**:
|
|
338
|
+
- Replace old command examples with new syntax
|
|
339
|
+
- Add section on `mcp status` for troubleshooting
|
|
340
|
+
|
|
341
|
+
3. **Update Migration Guide**:
|
|
342
|
+
- Document transition from legacy to new syntax
|
|
343
|
+
- Reassure users that old commands still work
|
|
344
|
+
|
|
345
|
+
### Future Improvements (Optional)
|
|
346
|
+
|
|
347
|
+
1. **Consider deprecation warnings** for legacy commands in a future version:
|
|
348
|
+
```bash
|
|
349
|
+
mcp-ticketer mcp claude
|
|
350
|
+
# ⚠️ Warning: 'mcp claude' is deprecated. Use 'install claude-code' instead.
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
2. **Add completion** for platform arguments:
|
|
354
|
+
- Shell completion for install <platform>
|
|
355
|
+
- Tab completion showing available platforms
|
|
356
|
+
|
|
357
|
+
3. **Enhanced status output**:
|
|
358
|
+
- Add check for actual MCP functionality (test connection)
|
|
359
|
+
- Show adapter configuration status
|
|
360
|
+
- Indicate which platforms have active sessions
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Conclusion
|
|
365
|
+
|
|
366
|
+
The CLI restructure is **production-ready**. The new command hierarchy is intuitive, well-documented, and maintains full backward compatibility. All error handling is clear and helpful. The implementation successfully:
|
|
367
|
+
|
|
368
|
+
- ✅ Provides cleaner, more intuitive primary commands
|
|
369
|
+
- ✅ Maintains full backward compatibility
|
|
370
|
+
- ✅ Delivers clear, actionable error messages
|
|
371
|
+
- ✅ Includes comprehensive, accurate help text
|
|
372
|
+
- ✅ Supports all 5 AI platforms correctly
|
|
373
|
+
|
|
374
|
+
**Recommendation**: Ready to merge and release.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## Test Environment
|
|
379
|
+
|
|
380
|
+
- **OS**: macOS (Darwin 24.6.0)
|
|
381
|
+
- **Python**: (version detected by CLI)
|
|
382
|
+
- **Git Branch**: main
|
|
383
|
+
- **Working Directory**: /Users/masa/Projects/mcp-ticketer
|
|
384
|
+
- **Version Tested**: 0.4.3
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Test Execution Log
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
# Test 1: New installation commands
|
|
392
|
+
mcp-ticketer install claude-code --dry-run # ✅ PASS
|
|
393
|
+
mcp-ticketer install claude-desktop --dry-run # ✅ PASS
|
|
394
|
+
mcp-ticketer install gemini --dry-run # ✅ PASS
|
|
395
|
+
mcp-ticketer install codex --dry-run # ✅ PASS
|
|
396
|
+
mcp-ticketer install auggie --dry-run # ✅ PASS
|
|
397
|
+
|
|
398
|
+
# Test 2: Error handling
|
|
399
|
+
mcp-ticketer install invalid-platform --dry-run # ✅ PASS (clear error)
|
|
400
|
+
mcp-ticketer mcp invalid-subcommand # ✅ PASS (clear error)
|
|
401
|
+
mcp-ticketer install --adapter # ✅ PASS (clear error)
|
|
402
|
+
|
|
403
|
+
# Test 3: MCP commands
|
|
404
|
+
mcp-ticketer mcp status # ✅ PASS
|
|
405
|
+
mcp-ticketer mcp stop # ✅ PASS
|
|
406
|
+
mcp-ticketer mcp serve # ✅ PASS (tested with timeout)
|
|
407
|
+
|
|
408
|
+
# Test 4: Legacy compatibility
|
|
409
|
+
mcp-ticketer mcp claude --help # ✅ PASS
|
|
410
|
+
mcp-ticketer mcp gemini --help # ✅ PASS
|
|
411
|
+
mcp-ticketer mcp codex --help # ✅ PASS
|
|
412
|
+
mcp-ticketer mcp auggie --help # ✅ PASS
|
|
413
|
+
|
|
414
|
+
# Test 5: Help text validation
|
|
415
|
+
mcp-ticketer --help # ✅ PASS
|
|
416
|
+
mcp-ticketer install --help # ✅ PASS
|
|
417
|
+
mcp-ticketer mcp --help # ✅ PASS
|
|
418
|
+
mcp-ticketer mcp claude --help # ✅ PASS
|
|
419
|
+
mcp-ticketer --version # ✅ PASS
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**Total Tests**: 19
|
|
423
|
+
**Passed**: 19
|
|
424
|
+
**Failed**: 0
|
|
425
|
+
**Success Rate**: 100%
|