mcp-ticketer 0.1.30__py3-none-any.whl → 1.2.11__py3-none-any.whl
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/__init__.py +10 -10
- mcp_ticketer/__version__.py +3 -3
- mcp_ticketer/adapters/__init__.py +2 -0
- mcp_ticketer/adapters/aitrackdown.py +796 -46
- mcp_ticketer/adapters/asana/__init__.py +15 -0
- mcp_ticketer/adapters/asana/adapter.py +1416 -0
- mcp_ticketer/adapters/asana/client.py +292 -0
- mcp_ticketer/adapters/asana/mappers.py +348 -0
- mcp_ticketer/adapters/asana/types.py +146 -0
- mcp_ticketer/adapters/github.py +879 -129
- mcp_ticketer/adapters/hybrid.py +11 -11
- mcp_ticketer/adapters/jira.py +973 -73
- mcp_ticketer/adapters/linear/__init__.py +24 -0
- mcp_ticketer/adapters/linear/adapter.py +2732 -0
- mcp_ticketer/adapters/linear/client.py +344 -0
- mcp_ticketer/adapters/linear/mappers.py +420 -0
- mcp_ticketer/adapters/linear/queries.py +479 -0
- mcp_ticketer/adapters/linear/types.py +360 -0
- mcp_ticketer/adapters/linear.py +10 -2315
- mcp_ticketer/analysis/__init__.py +23 -0
- mcp_ticketer/analysis/orphaned.py +218 -0
- mcp_ticketer/analysis/similarity.py +224 -0
- mcp_ticketer/analysis/staleness.py +266 -0
- mcp_ticketer/cache/memory.py +9 -8
- mcp_ticketer/cli/adapter_diagnostics.py +421 -0
- mcp_ticketer/cli/auggie_configure.py +116 -15
- mcp_ticketer/cli/codex_configure.py +274 -82
- mcp_ticketer/cli/configure.py +888 -151
- mcp_ticketer/cli/diagnostics.py +400 -157
- mcp_ticketer/cli/discover.py +297 -26
- mcp_ticketer/cli/gemini_configure.py +119 -26
- mcp_ticketer/cli/init_command.py +880 -0
- mcp_ticketer/cli/instruction_commands.py +435 -0
- mcp_ticketer/cli/linear_commands.py +616 -0
- mcp_ticketer/cli/main.py +203 -1165
- mcp_ticketer/cli/mcp_configure.py +474 -90
- mcp_ticketer/cli/mcp_server_commands.py +415 -0
- mcp_ticketer/cli/migrate_config.py +12 -8
- mcp_ticketer/cli/platform_commands.py +123 -0
- mcp_ticketer/cli/platform_detection.py +418 -0
- mcp_ticketer/cli/platform_installer.py +513 -0
- mcp_ticketer/cli/python_detection.py +126 -0
- mcp_ticketer/cli/queue_commands.py +15 -15
- mcp_ticketer/cli/setup_command.py +639 -0
- mcp_ticketer/cli/simple_health.py +90 -65
- mcp_ticketer/cli/ticket_commands.py +1013 -0
- mcp_ticketer/cli/update_checker.py +313 -0
- mcp_ticketer/cli/utils.py +114 -66
- mcp_ticketer/core/__init__.py +24 -1
- mcp_ticketer/core/adapter.py +250 -16
- mcp_ticketer/core/config.py +145 -37
- mcp_ticketer/core/env_discovery.py +101 -22
- mcp_ticketer/core/env_loader.py +349 -0
- mcp_ticketer/core/exceptions.py +160 -0
- mcp_ticketer/core/http_client.py +26 -26
- mcp_ticketer/core/instructions.py +405 -0
- mcp_ticketer/core/label_manager.py +732 -0
- mcp_ticketer/core/mappers.py +42 -30
- mcp_ticketer/core/models.py +280 -28
- mcp_ticketer/core/onepassword_secrets.py +379 -0
- mcp_ticketer/core/project_config.py +183 -49
- mcp_ticketer/core/registry.py +3 -3
- mcp_ticketer/core/session_state.py +171 -0
- mcp_ticketer/core/state_matcher.py +592 -0
- mcp_ticketer/core/url_parser.py +425 -0
- mcp_ticketer/core/validators.py +69 -0
- mcp_ticketer/defaults/ticket_instructions.md +644 -0
- mcp_ticketer/mcp/__init__.py +29 -1
- mcp_ticketer/mcp/__main__.py +60 -0
- mcp_ticketer/mcp/server/__init__.py +25 -0
- mcp_ticketer/mcp/server/__main__.py +60 -0
- mcp_ticketer/mcp/server/constants.py +58 -0
- mcp_ticketer/mcp/server/diagnostic_helper.py +175 -0
- mcp_ticketer/mcp/server/dto.py +195 -0
- mcp_ticketer/mcp/server/main.py +1343 -0
- mcp_ticketer/mcp/server/response_builder.py +206 -0
- mcp_ticketer/mcp/server/routing.py +655 -0
- mcp_ticketer/mcp/server/server_sdk.py +151 -0
- mcp_ticketer/mcp/server/tools/__init__.py +56 -0
- mcp_ticketer/mcp/server/tools/analysis_tools.py +495 -0
- mcp_ticketer/mcp/server/tools/attachment_tools.py +226 -0
- mcp_ticketer/mcp/server/tools/bulk_tools.py +273 -0
- mcp_ticketer/mcp/server/tools/comment_tools.py +152 -0
- mcp_ticketer/mcp/server/tools/config_tools.py +1439 -0
- mcp_ticketer/mcp/server/tools/diagnostic_tools.py +211 -0
- mcp_ticketer/mcp/server/tools/hierarchy_tools.py +921 -0
- mcp_ticketer/mcp/server/tools/instruction_tools.py +300 -0
- mcp_ticketer/mcp/server/tools/label_tools.py +948 -0
- mcp_ticketer/mcp/server/tools/pr_tools.py +152 -0
- mcp_ticketer/mcp/server/tools/search_tools.py +215 -0
- mcp_ticketer/mcp/server/tools/session_tools.py +170 -0
- mcp_ticketer/mcp/server/tools/ticket_tools.py +1268 -0
- mcp_ticketer/mcp/server/tools/user_ticket_tools.py +547 -0
- mcp_ticketer/queue/__init__.py +1 -0
- mcp_ticketer/queue/health_monitor.py +168 -136
- mcp_ticketer/queue/manager.py +95 -25
- mcp_ticketer/queue/queue.py +40 -21
- mcp_ticketer/queue/run_worker.py +6 -1
- mcp_ticketer/queue/ticket_registry.py +213 -155
- mcp_ticketer/queue/worker.py +109 -49
- mcp_ticketer-1.2.11.dist-info/METADATA +792 -0
- mcp_ticketer-1.2.11.dist-info/RECORD +110 -0
- mcp_ticketer/mcp/server.py +0 -1895
- mcp_ticketer-0.1.30.dist-info/METADATA +0 -413
- mcp_ticketer-0.1.30.dist-info/RECORD +0 -49
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/WHEEL +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/entry_points.txt +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/licenses/LICENSE +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/top_level.txt +0 -0
|
@@ -16,7 +16,7 @@ console = Console()
|
|
|
16
16
|
def list_queue(
|
|
17
17
|
status: QueueStatus = typer.Option(None, "--status", "-s", help="Filter by status"),
|
|
18
18
|
limit: int = typer.Option(25, "--limit", "-l", help="Maximum items to show"),
|
|
19
|
-
):
|
|
19
|
+
) -> None:
|
|
20
20
|
"""List queue items."""
|
|
21
21
|
queue = Queue()
|
|
22
22
|
items = queue.list_items(status=status, limit=limit)
|
|
@@ -69,20 +69,20 @@ def list_queue(
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
@app.command("retry")
|
|
72
|
-
def retry_item(queue_id: str = typer.Argument(..., help="Queue ID to retry")):
|
|
72
|
+
def retry_item(queue_id: str = typer.Argument(..., help="Queue ID to retry")) -> None:
|
|
73
73
|
"""Retry a failed queue item."""
|
|
74
74
|
queue = Queue()
|
|
75
75
|
item = queue.get_item(queue_id)
|
|
76
76
|
|
|
77
77
|
if not item:
|
|
78
78
|
console.print(f"[red]Queue item not found: {queue_id}[/red]")
|
|
79
|
-
raise typer.Exit(1)
|
|
79
|
+
raise typer.Exit(1) from None
|
|
80
80
|
|
|
81
81
|
if item.status != QueueStatus.FAILED:
|
|
82
82
|
console.print(
|
|
83
83
|
f"[yellow]Item {queue_id} is not failed (status: {item.status})[/yellow]"
|
|
84
84
|
)
|
|
85
|
-
raise typer.Exit(1)
|
|
85
|
+
raise typer.Exit(1) from None
|
|
86
86
|
|
|
87
87
|
# Reset to pending
|
|
88
88
|
queue.update_status(queue_id, QueueStatus.PENDING, error_message=None)
|
|
@@ -103,7 +103,7 @@ def clear_queue(
|
|
|
103
103
|
7, "--days", "-d", help="Clear items older than this many days"
|
|
104
104
|
),
|
|
105
105
|
confirm: bool = typer.Option(False, "--yes", "-y", help="Skip confirmation"),
|
|
106
|
-
):
|
|
106
|
+
) -> None:
|
|
107
107
|
"""Clear old queue items."""
|
|
108
108
|
queue = Queue()
|
|
109
109
|
|
|
@@ -115,7 +115,7 @@ def clear_queue(
|
|
|
115
115
|
|
|
116
116
|
if not typer.confirm(msg):
|
|
117
117
|
console.print("[yellow]Cancelled[/yellow]")
|
|
118
|
-
raise typer.Exit(0)
|
|
118
|
+
raise typer.Exit(0) from None
|
|
119
119
|
|
|
120
120
|
queue.cleanup_old(days=days)
|
|
121
121
|
console.print("[green]✓[/green] Cleared old queue items")
|
|
@@ -126,7 +126,7 @@ worker_app = typer.Typer(name="worker", help="Worker management commands")
|
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
@worker_app.command("start")
|
|
129
|
-
def start_worker():
|
|
129
|
+
def start_worker() -> None:
|
|
130
130
|
"""Start the background worker."""
|
|
131
131
|
manager = WorkerManager()
|
|
132
132
|
|
|
@@ -142,11 +142,11 @@ def start_worker():
|
|
|
142
142
|
console.print(f"PID: {status.get('pid')}")
|
|
143
143
|
else:
|
|
144
144
|
console.print("[red]✗[/red] Failed to start worker")
|
|
145
|
-
raise typer.Exit(1)
|
|
145
|
+
raise typer.Exit(1) from None
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
@worker_app.command("stop")
|
|
149
|
-
def stop_worker():
|
|
149
|
+
def stop_worker() -> None:
|
|
150
150
|
"""Stop the background worker."""
|
|
151
151
|
manager = WorkerManager()
|
|
152
152
|
|
|
@@ -158,11 +158,11 @@ def stop_worker():
|
|
|
158
158
|
console.print("[green]✓[/green] Worker stopped successfully")
|
|
159
159
|
else:
|
|
160
160
|
console.print("[red]✗[/red] Failed to stop worker")
|
|
161
|
-
raise typer.Exit(1)
|
|
161
|
+
raise typer.Exit(1) from None
|
|
162
162
|
|
|
163
163
|
|
|
164
164
|
@worker_app.command("restart")
|
|
165
|
-
def restart_worker():
|
|
165
|
+
def restart_worker() -> None:
|
|
166
166
|
"""Restart the background worker."""
|
|
167
167
|
manager = WorkerManager()
|
|
168
168
|
|
|
@@ -172,11 +172,11 @@ def restart_worker():
|
|
|
172
172
|
console.print(f"PID: {status.get('pid')}")
|
|
173
173
|
else:
|
|
174
174
|
console.print("[red]✗[/red] Failed to restart worker")
|
|
175
|
-
raise typer.Exit(1)
|
|
175
|
+
raise typer.Exit(1) from None
|
|
176
176
|
|
|
177
177
|
|
|
178
178
|
@worker_app.command("status")
|
|
179
|
-
def worker_status():
|
|
179
|
+
def worker_status() -> None:
|
|
180
180
|
"""Check worker status."""
|
|
181
181
|
manager = WorkerManager()
|
|
182
182
|
status = manager.get_status()
|
|
@@ -212,7 +212,7 @@ def worker_status():
|
|
|
212
212
|
def worker_logs(
|
|
213
213
|
lines: int = typer.Option(50, "--lines", "-n", help="Number of lines to show"),
|
|
214
214
|
follow: bool = typer.Option(False, "--follow", "-f", help="Follow log output"),
|
|
215
|
-
):
|
|
215
|
+
) -> None:
|
|
216
216
|
"""View worker logs."""
|
|
217
217
|
import time
|
|
218
218
|
from pathlib import Path
|
|
@@ -221,7 +221,7 @@ def worker_logs(
|
|
|
221
221
|
|
|
222
222
|
if not log_file.exists():
|
|
223
223
|
console.print("[yellow]No log file found[/yellow]")
|
|
224
|
-
raise typer.Exit(1)
|
|
224
|
+
raise typer.Exit(1) from None
|
|
225
225
|
|
|
226
226
|
if follow:
|
|
227
227
|
# Follow mode - like tail -f
|