mcp-ticketer 0.1.14__tar.gz → 0.1.15__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.14 → mcp_ticketer-0.1.15}/PKG-INFO +1 -1
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/pyproject.toml +1 -1
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/__version__.py +1 -1
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/main.py +38 -2
- mcp_ticketer-0.1.15/src/mcp_ticketer/cli/mcp_configure.py +285 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/PKG-INFO +1 -1
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/SOURCES.txt +1 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/.dependency_cache +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/.mpm_deployment_state +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/agent-manager.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/agentic-coder-optimizer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/api_qa.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/clerk-ops.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/code_analyzer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/content-agent.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/dart_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/data_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/documentation.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/gcp_ops_agent.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/golang_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/imagemagick.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/java_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/local_ops_agent.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/memory_manager.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/nextjs_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/ops.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/php-engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/product_owner.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/project_organizer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/prompt-engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/python_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/qa.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/react_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/refactoring_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/research.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/ruby-engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/rust_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/security.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/ticketing.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/typescript_engineer.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/vercel_ops_agent.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/version_control.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/web_qa.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude/agents/web_ui.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/config/project.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/mcp_auto_config_preference.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/README.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/agentic_coder_optimizer_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/documentation_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/engineer_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/ops_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/project_knowledge.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/qa_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/research_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/version-control_memories.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/workflows.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.claude.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.coveragerc +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.env.example +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.github/workflows/docs.yml +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.github/workflows/publish.yml +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.github/workflows/test.yml +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.mcp/config.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.pre-commit-config.yaml +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.python-version +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/.readthedocs.yaml +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/CHANGELOG.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/CLAUDE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/CLAUDE_DESKTOP_SETUP.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/CODE_STRUCTURE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/CONTRIBUTING.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/ENV_DISCOVERY_COMPLETE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/HIERARCHY_IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/IMPLEMENTATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/JIRA_SETUP.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/LICENSE +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/LINEAR_SETUP.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/MANIFEST.in +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/Makefile +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/OPTIMIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/PROJECT_INITIALIZATION_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/QUEUE_SYSTEM.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/QUICK_START.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/README.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/RELEASE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/RELEASING.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/TEST_COVERAGE_REPORT.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/TEST_REPORT.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/TEST_RESULTS_SUMMARY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/claude-desktop-config.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/debug_search.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/debug_test.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/ADAPTERS.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/API_REFERENCE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/CONFIGURATION.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/CONFIG_RESOLUTION_FLOW.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/DEVELOPER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/ENV_DISCOVERY.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/MCP_INTEGRATION.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/MIGRATION_GUIDE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/PROJECT_CONFIG.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/PR_INTEGRATION.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/QUICK_START_ENV.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/USER_GUIDE.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_archive/README.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/ADAPTERS.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/API_REFERENCE.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/CONFIGURATION.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/DEVELOPER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/MCP_INTEGRATION.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/MIGRATION_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/USER_GUIDE.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/adapters/github.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/adapters.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/api.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/cli.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/development.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/examples.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/index.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/installation.rst.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/_build/_sources/prd/mcp-ticketer-prd.md.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/adapters/github.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/adapters.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/api.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/cli.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/conf.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/development.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/examples.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/index.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/installation.rst +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/prd/mcp-ticketer-prd.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/docs/requirements.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/install.sh +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/mcp-ticketer +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/mcp-ticketer-server +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/mcp_server.sh +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/pytest.ini +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/requirements-dev.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/requirements.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/scripts/README.md +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/scripts/manage_version.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/setup.cfg +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/setup.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/aitrackdown.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/github.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/hybrid.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/jira.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/adapters/linear.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cache/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cache/memory.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/configure.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/discover.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/migrate_config.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/queue_commands.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/cli/utils.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/adapter.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/config.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/env_discovery.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/http_client.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/mappers.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/models.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/project_config.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/core/registry.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/mcp/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/mcp/server.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/py.typed +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/__main__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/manager.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/queue.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/run_worker.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer/queue/worker.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/dependency_links.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/entry_points.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/not-zip-safe +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/requires.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/src/mcp_ticketer.egg-info/top_level.txt +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test-tickets/tickets/task-20250924002724.json +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_all_adapters.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_api_usage.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_basic.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_comprehensive.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_error_handling.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_github.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_github_token.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_jira.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_linear.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_linear_native.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_linear_teams.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_mcp_server_qa.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_optimizations.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_performance.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_pr_functionality.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_queue_system.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/test_set_command.sh +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/adapters/__init__.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/adapters/test_aitrackdown.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/conftest.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/core/test_env_discovery.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/test_base_adapter.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/test_models.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/tests/test_queue.py +0 -0
- {mcp_ticketer-0.1.14 → mcp_ticketer-0.1.15}/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.15
|
|
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>
|
|
@@ -1135,7 +1135,7 @@ def check(
|
|
|
1135
1135
|
|
|
1136
1136
|
|
|
1137
1137
|
@app.command()
|
|
1138
|
-
def
|
|
1138
|
+
def serve(
|
|
1139
1139
|
adapter: Optional[AdapterType] = typer.Option(
|
|
1140
1140
|
None,
|
|
1141
1141
|
"--adapter",
|
|
@@ -1148,7 +1148,11 @@ def mcp(
|
|
|
1148
1148
|
help="Base path for AITrackdown adapter"
|
|
1149
1149
|
),
|
|
1150
1150
|
):
|
|
1151
|
-
"""Start MCP server for JSON-RPC communication over stdio.
|
|
1151
|
+
"""Start MCP server for JSON-RPC communication over stdio.
|
|
1152
|
+
|
|
1153
|
+
This command is used by Claude Code/Desktop when connecting to the MCP server.
|
|
1154
|
+
You typically don't need to run this manually - use 'mcp-ticketer mcp' to configure.
|
|
1155
|
+
"""
|
|
1152
1156
|
from ..mcp.server import MCPTicketServer
|
|
1153
1157
|
|
|
1154
1158
|
# Load configuration
|
|
@@ -1194,6 +1198,38 @@ def mcp(
|
|
|
1194
1198
|
sys.exit(1)
|
|
1195
1199
|
|
|
1196
1200
|
|
|
1201
|
+
@app.command()
|
|
1202
|
+
def mcp(
|
|
1203
|
+
global_config: bool = typer.Option(
|
|
1204
|
+
False,
|
|
1205
|
+
"--global",
|
|
1206
|
+
"-g",
|
|
1207
|
+
help="Configure Claude Desktop instead of project-level"
|
|
1208
|
+
),
|
|
1209
|
+
force: bool = typer.Option(
|
|
1210
|
+
False,
|
|
1211
|
+
"--force",
|
|
1212
|
+
"-f",
|
|
1213
|
+
help="Overwrite existing configuration"
|
|
1214
|
+
),
|
|
1215
|
+
):
|
|
1216
|
+
"""Configure Claude Code to use mcp-ticketer MCP server.
|
|
1217
|
+
|
|
1218
|
+
Reads configuration from .mcp-ticketer/config.json and updates
|
|
1219
|
+
Claude Code's MCP settings accordingly.
|
|
1220
|
+
|
|
1221
|
+
By default, configures project-level (.mcp/config.json).
|
|
1222
|
+
Use --global to configure Claude Desktop instead.
|
|
1223
|
+
"""
|
|
1224
|
+
from ..cli.mcp_configure import configure_claude_mcp
|
|
1225
|
+
|
|
1226
|
+
try:
|
|
1227
|
+
configure_claude_mcp(global_config=global_config, force=force)
|
|
1228
|
+
except Exception as e:
|
|
1229
|
+
console.print(f"[red]✗ Configuration failed:[/red] {e}")
|
|
1230
|
+
raise typer.Exit(1)
|
|
1231
|
+
|
|
1232
|
+
|
|
1197
1233
|
def main():
|
|
1198
1234
|
"""Main entry point."""
|
|
1199
1235
|
app()
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"""MCP configuration for Claude Code integration."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
import shutil
|
|
6
|
+
import sys
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Optional
|
|
9
|
+
|
|
10
|
+
from rich.console import Console
|
|
11
|
+
|
|
12
|
+
console = Console()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def find_mcp_ticketer_binary() -> str:
|
|
16
|
+
"""Find the mcp-ticketer binary path.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
Path to mcp-ticketer binary
|
|
20
|
+
|
|
21
|
+
Raises:
|
|
22
|
+
FileNotFoundError: If binary not found
|
|
23
|
+
"""
|
|
24
|
+
# Check if running from development environment
|
|
25
|
+
import mcp_ticketer
|
|
26
|
+
package_path = Path(mcp_ticketer.__file__).parent.parent.parent
|
|
27
|
+
|
|
28
|
+
# Check for virtual environment bin
|
|
29
|
+
possible_paths = [
|
|
30
|
+
# Development paths
|
|
31
|
+
package_path / "venv" / "bin" / "mcp-ticketer",
|
|
32
|
+
package_path / ".venv" / "bin" / "mcp-ticketer",
|
|
33
|
+
package_path / "test_venv" / "bin" / "mcp-ticketer",
|
|
34
|
+
# System installation
|
|
35
|
+
Path.home() / ".local" / "bin" / "mcp-ticketer",
|
|
36
|
+
# pipx installation
|
|
37
|
+
Path.home() / ".local" / "pipx" / "venvs" / "mcp-ticketer" / "bin" / "mcp-ticketer",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
# Check PATH
|
|
41
|
+
which_result = shutil.which("mcp-ticketer")
|
|
42
|
+
if which_result:
|
|
43
|
+
return which_result
|
|
44
|
+
|
|
45
|
+
# Check possible paths
|
|
46
|
+
for path in possible_paths:
|
|
47
|
+
if path.exists():
|
|
48
|
+
return str(path.resolve())
|
|
49
|
+
|
|
50
|
+
raise FileNotFoundError(
|
|
51
|
+
"Could not find mcp-ticketer binary. Please ensure mcp-ticketer is installed.\n"
|
|
52
|
+
"Install with: pip install mcp-ticketer"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def load_project_config() -> dict:
|
|
57
|
+
"""Load mcp-ticketer project configuration.
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
Project configuration dict
|
|
61
|
+
|
|
62
|
+
Raises:
|
|
63
|
+
FileNotFoundError: If config not found
|
|
64
|
+
ValueError: If config is invalid
|
|
65
|
+
"""
|
|
66
|
+
# Check for project-specific config first
|
|
67
|
+
project_config_path = Path.cwd() / ".mcp-ticketer" / "config.json"
|
|
68
|
+
|
|
69
|
+
if not project_config_path.exists():
|
|
70
|
+
# Check global config
|
|
71
|
+
global_config_path = Path.home() / ".mcp-ticketer" / "config.json"
|
|
72
|
+
if global_config_path.exists():
|
|
73
|
+
project_config_path = global_config_path
|
|
74
|
+
else:
|
|
75
|
+
raise FileNotFoundError(
|
|
76
|
+
"No mcp-ticketer configuration found.\n"
|
|
77
|
+
"Run 'mcp-ticketer init' to create configuration."
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
with open(project_config_path, "r") as f:
|
|
81
|
+
config = json.load(f)
|
|
82
|
+
|
|
83
|
+
# Validate config
|
|
84
|
+
if "default_adapter" not in config:
|
|
85
|
+
raise ValueError("Invalid config: missing 'default_adapter'")
|
|
86
|
+
|
|
87
|
+
return config
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def find_claude_mcp_config(global_config: bool = False) -> Path:
|
|
91
|
+
"""Find or create Claude Code MCP configuration file.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
global_config: If True, use Claude Desktop config instead of project-level
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
Path to MCP configuration file
|
|
98
|
+
"""
|
|
99
|
+
if global_config:
|
|
100
|
+
# Claude Desktop configuration
|
|
101
|
+
if sys.platform == "darwin": # macOS
|
|
102
|
+
config_path = Path.home() / "Library" / "Application Support" / "Claude" / "claude_desktop_config.json"
|
|
103
|
+
elif sys.platform == "win32": # Windows
|
|
104
|
+
config_path = Path(os.environ.get("APPDATA", "")) / "Claude" / "claude_desktop_config.json"
|
|
105
|
+
else: # Linux
|
|
106
|
+
config_path = Path.home() / ".config" / "Claude" / "claude_desktop_config.json"
|
|
107
|
+
else:
|
|
108
|
+
# Project-level configuration
|
|
109
|
+
config_path = Path.cwd() / ".mcp" / "config.json"
|
|
110
|
+
|
|
111
|
+
return config_path
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def load_claude_mcp_config(config_path: Path) -> dict:
|
|
115
|
+
"""Load existing Claude MCP configuration or return empty structure.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
config_path: Path to MCP config file
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
MCP configuration dict
|
|
122
|
+
"""
|
|
123
|
+
if config_path.exists():
|
|
124
|
+
with open(config_path, "r") as f:
|
|
125
|
+
return json.load(f)
|
|
126
|
+
|
|
127
|
+
# Return empty structure
|
|
128
|
+
return {"mcpServers": {}}
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def save_claude_mcp_config(config_path: Path, config: dict) -> None:
|
|
132
|
+
"""Save Claude MCP configuration to file.
|
|
133
|
+
|
|
134
|
+
Args:
|
|
135
|
+
config_path: Path to MCP config file
|
|
136
|
+
config: Configuration to save
|
|
137
|
+
"""
|
|
138
|
+
# Ensure directory exists
|
|
139
|
+
config_path.parent.mkdir(parents=True, exist_ok=True)
|
|
140
|
+
|
|
141
|
+
# Write with formatting
|
|
142
|
+
with open(config_path, "w") as f:
|
|
143
|
+
json.dump(config, f, indent=2)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def create_mcp_server_config(
|
|
147
|
+
binary_path: str,
|
|
148
|
+
project_config: dict,
|
|
149
|
+
cwd: Optional[str] = None
|
|
150
|
+
) -> dict:
|
|
151
|
+
"""Create MCP server configuration for mcp-ticketer.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
binary_path: Path to mcp-ticketer binary
|
|
155
|
+
project_config: Project configuration from .mcp-ticketer/config.json
|
|
156
|
+
cwd: Working directory for server (optional)
|
|
157
|
+
|
|
158
|
+
Returns:
|
|
159
|
+
MCP server configuration dict
|
|
160
|
+
"""
|
|
161
|
+
config = {
|
|
162
|
+
"command": binary_path,
|
|
163
|
+
"args": ["serve"], # Use 'serve' command to start MCP server
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
# Add working directory if provided
|
|
167
|
+
if cwd:
|
|
168
|
+
config["cwd"] = cwd
|
|
169
|
+
|
|
170
|
+
# Add environment variables based on adapter
|
|
171
|
+
adapter = project_config.get("default_adapter", "aitrackdown")
|
|
172
|
+
adapters_config = project_config.get("adapters", {})
|
|
173
|
+
adapter_config = adapters_config.get(adapter, {})
|
|
174
|
+
|
|
175
|
+
env_vars = {}
|
|
176
|
+
|
|
177
|
+
# Add adapter-specific environment variables
|
|
178
|
+
if adapter == "linear" and "api_key" in adapter_config:
|
|
179
|
+
env_vars["LINEAR_API_KEY"] = adapter_config["api_key"]
|
|
180
|
+
elif adapter == "github" and "token" in adapter_config:
|
|
181
|
+
env_vars["GITHUB_TOKEN"] = adapter_config["token"]
|
|
182
|
+
elif adapter == "jira":
|
|
183
|
+
if "api_token" in adapter_config:
|
|
184
|
+
env_vars["JIRA_API_TOKEN"] = adapter_config["api_token"]
|
|
185
|
+
if "email" in adapter_config:
|
|
186
|
+
env_vars["JIRA_EMAIL"] = adapter_config["email"]
|
|
187
|
+
|
|
188
|
+
if env_vars:
|
|
189
|
+
config["env"] = env_vars
|
|
190
|
+
|
|
191
|
+
return config
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def configure_claude_mcp(global_config: bool = False, force: bool = False) -> None:
|
|
195
|
+
"""Configure Claude Code to use mcp-ticketer.
|
|
196
|
+
|
|
197
|
+
Args:
|
|
198
|
+
global_config: Configure Claude Desktop instead of project-level
|
|
199
|
+
force: Overwrite existing configuration
|
|
200
|
+
|
|
201
|
+
Raises:
|
|
202
|
+
FileNotFoundError: If binary or project config not found
|
|
203
|
+
ValueError: If configuration is invalid
|
|
204
|
+
"""
|
|
205
|
+
# Step 1: Find mcp-ticketer binary
|
|
206
|
+
console.print("[cyan]🔍 Finding mcp-ticketer binary...[/cyan]")
|
|
207
|
+
try:
|
|
208
|
+
binary_path = find_mcp_ticketer_binary()
|
|
209
|
+
console.print(f"[green]✓[/green] Found: {binary_path}")
|
|
210
|
+
except FileNotFoundError as e:
|
|
211
|
+
console.print(f"[red]✗[/red] {e}")
|
|
212
|
+
raise
|
|
213
|
+
|
|
214
|
+
# Step 2: Load project configuration
|
|
215
|
+
console.print("\n[cyan]📖 Reading project configuration...[/cyan]")
|
|
216
|
+
try:
|
|
217
|
+
project_config = load_project_config()
|
|
218
|
+
adapter = project_config.get("default_adapter", "aitrackdown")
|
|
219
|
+
console.print(f"[green]✓[/green] Adapter: {adapter}")
|
|
220
|
+
except (FileNotFoundError, ValueError) as e:
|
|
221
|
+
console.print(f"[red]✗[/red] {e}")
|
|
222
|
+
raise
|
|
223
|
+
|
|
224
|
+
# Step 3: Find Claude MCP config location
|
|
225
|
+
config_type = "Claude Desktop" if global_config else "project-level"
|
|
226
|
+
console.print(f"\n[cyan]🔧 Configuring {config_type} MCP...[/cyan]")
|
|
227
|
+
|
|
228
|
+
mcp_config_path = find_claude_mcp_config(global_config)
|
|
229
|
+
console.print(f"[dim]Config location: {mcp_config_path}[/dim]")
|
|
230
|
+
|
|
231
|
+
# Step 4: Load existing MCP configuration
|
|
232
|
+
mcp_config = load_claude_mcp_config(mcp_config_path)
|
|
233
|
+
|
|
234
|
+
# Step 5: Check if mcp-ticketer already configured
|
|
235
|
+
if "mcp-ticketer" in mcp_config.get("mcpServers", {}):
|
|
236
|
+
if not force:
|
|
237
|
+
console.print("[yellow]⚠ mcp-ticketer is already configured[/yellow]")
|
|
238
|
+
console.print("[dim]Use --force to overwrite existing configuration[/dim]")
|
|
239
|
+
return
|
|
240
|
+
else:
|
|
241
|
+
console.print("[yellow]⚠ Overwriting existing configuration[/yellow]")
|
|
242
|
+
|
|
243
|
+
# Step 6: Create mcp-ticketer server config
|
|
244
|
+
cwd = str(Path.cwd()) if not global_config else None
|
|
245
|
+
server_config = create_mcp_server_config(
|
|
246
|
+
binary_path=binary_path,
|
|
247
|
+
project_config=project_config,
|
|
248
|
+
cwd=cwd
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
# Step 7: Update MCP configuration
|
|
252
|
+
if "mcpServers" not in mcp_config:
|
|
253
|
+
mcp_config["mcpServers"] = {}
|
|
254
|
+
|
|
255
|
+
mcp_config["mcpServers"]["mcp-ticketer"] = server_config
|
|
256
|
+
|
|
257
|
+
# Step 8: Save configuration
|
|
258
|
+
try:
|
|
259
|
+
save_claude_mcp_config(mcp_config_path, mcp_config)
|
|
260
|
+
console.print(f"\n[green]✓ Successfully configured mcp-ticketer[/green]")
|
|
261
|
+
console.print(f"[dim]Configuration saved to: {mcp_config_path}[/dim]")
|
|
262
|
+
|
|
263
|
+
# Print configuration details
|
|
264
|
+
console.print("\n[bold]Configuration Details:[/bold]")
|
|
265
|
+
console.print(f" Server name: mcp-ticketer")
|
|
266
|
+
console.print(f" Adapter: {adapter}")
|
|
267
|
+
console.print(f" Binary: {binary_path}")
|
|
268
|
+
if cwd:
|
|
269
|
+
console.print(f" Working directory: {cwd}")
|
|
270
|
+
if "env" in server_config:
|
|
271
|
+
console.print(f" Environment variables: {list(server_config['env'].keys())}")
|
|
272
|
+
|
|
273
|
+
# Next steps
|
|
274
|
+
console.print("\n[bold cyan]Next Steps:[/bold cyan]")
|
|
275
|
+
if global_config:
|
|
276
|
+
console.print("1. Restart Claude Desktop")
|
|
277
|
+
console.print("2. Open a conversation")
|
|
278
|
+
else:
|
|
279
|
+
console.print("1. Restart Claude Code")
|
|
280
|
+
console.print("2. Open this project in Claude Code")
|
|
281
|
+
console.print("3. mcp-ticketer tools will be available in the MCP menu")
|
|
282
|
+
|
|
283
|
+
except Exception as e:
|
|
284
|
+
console.print(f"\n[red]✗ Failed to save configuration:[/red] {e}")
|
|
285
|
+
raise
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.15
|
|
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>
|
|
@@ -175,6 +175,7 @@ src/mcp_ticketer/cli/__init__.py
|
|
|
175
175
|
src/mcp_ticketer/cli/configure.py
|
|
176
176
|
src/mcp_ticketer/cli/discover.py
|
|
177
177
|
src/mcp_ticketer/cli/main.py
|
|
178
|
+
src/mcp_ticketer/cli/mcp_configure.py
|
|
178
179
|
src/mcp_ticketer/cli/migrate_config.py
|
|
179
180
|
src/mcp_ticketer/cli/queue_commands.py
|
|
180
181
|
src/mcp_ticketer/cli/utils.py
|
|
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.14 → mcp_ticketer-0.1.15}/.claude-mpm/memories/agentic_coder_optimizer_memories.md
RENAMED
|
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.14 → mcp_ticketer-0.1.15}/.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
|
|
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
|