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