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.

Files changed (109) hide show
  1. mcp_ticketer/__init__.py +10 -10
  2. mcp_ticketer/__version__.py +3 -3
  3. mcp_ticketer/adapters/__init__.py +2 -0
  4. mcp_ticketer/adapters/aitrackdown.py +796 -46
  5. mcp_ticketer/adapters/asana/__init__.py +15 -0
  6. mcp_ticketer/adapters/asana/adapter.py +1416 -0
  7. mcp_ticketer/adapters/asana/client.py +292 -0
  8. mcp_ticketer/adapters/asana/mappers.py +348 -0
  9. mcp_ticketer/adapters/asana/types.py +146 -0
  10. mcp_ticketer/adapters/github.py +879 -129
  11. mcp_ticketer/adapters/hybrid.py +11 -11
  12. mcp_ticketer/adapters/jira.py +973 -73
  13. mcp_ticketer/adapters/linear/__init__.py +24 -0
  14. mcp_ticketer/adapters/linear/adapter.py +2732 -0
  15. mcp_ticketer/adapters/linear/client.py +344 -0
  16. mcp_ticketer/adapters/linear/mappers.py +420 -0
  17. mcp_ticketer/adapters/linear/queries.py +479 -0
  18. mcp_ticketer/adapters/linear/types.py +360 -0
  19. mcp_ticketer/adapters/linear.py +10 -2315
  20. mcp_ticketer/analysis/__init__.py +23 -0
  21. mcp_ticketer/analysis/orphaned.py +218 -0
  22. mcp_ticketer/analysis/similarity.py +224 -0
  23. mcp_ticketer/analysis/staleness.py +266 -0
  24. mcp_ticketer/cache/memory.py +9 -8
  25. mcp_ticketer/cli/adapter_diagnostics.py +421 -0
  26. mcp_ticketer/cli/auggie_configure.py +116 -15
  27. mcp_ticketer/cli/codex_configure.py +274 -82
  28. mcp_ticketer/cli/configure.py +888 -151
  29. mcp_ticketer/cli/diagnostics.py +400 -157
  30. mcp_ticketer/cli/discover.py +297 -26
  31. mcp_ticketer/cli/gemini_configure.py +119 -26
  32. mcp_ticketer/cli/init_command.py +880 -0
  33. mcp_ticketer/cli/instruction_commands.py +435 -0
  34. mcp_ticketer/cli/linear_commands.py +616 -0
  35. mcp_ticketer/cli/main.py +203 -1165
  36. mcp_ticketer/cli/mcp_configure.py +474 -90
  37. mcp_ticketer/cli/mcp_server_commands.py +415 -0
  38. mcp_ticketer/cli/migrate_config.py +12 -8
  39. mcp_ticketer/cli/platform_commands.py +123 -0
  40. mcp_ticketer/cli/platform_detection.py +418 -0
  41. mcp_ticketer/cli/platform_installer.py +513 -0
  42. mcp_ticketer/cli/python_detection.py +126 -0
  43. mcp_ticketer/cli/queue_commands.py +15 -15
  44. mcp_ticketer/cli/setup_command.py +639 -0
  45. mcp_ticketer/cli/simple_health.py +90 -65
  46. mcp_ticketer/cli/ticket_commands.py +1013 -0
  47. mcp_ticketer/cli/update_checker.py +313 -0
  48. mcp_ticketer/cli/utils.py +114 -66
  49. mcp_ticketer/core/__init__.py +24 -1
  50. mcp_ticketer/core/adapter.py +250 -16
  51. mcp_ticketer/core/config.py +145 -37
  52. mcp_ticketer/core/env_discovery.py +101 -22
  53. mcp_ticketer/core/env_loader.py +349 -0
  54. mcp_ticketer/core/exceptions.py +160 -0
  55. mcp_ticketer/core/http_client.py +26 -26
  56. mcp_ticketer/core/instructions.py +405 -0
  57. mcp_ticketer/core/label_manager.py +732 -0
  58. mcp_ticketer/core/mappers.py +42 -30
  59. mcp_ticketer/core/models.py +280 -28
  60. mcp_ticketer/core/onepassword_secrets.py +379 -0
  61. mcp_ticketer/core/project_config.py +183 -49
  62. mcp_ticketer/core/registry.py +3 -3
  63. mcp_ticketer/core/session_state.py +171 -0
  64. mcp_ticketer/core/state_matcher.py +592 -0
  65. mcp_ticketer/core/url_parser.py +425 -0
  66. mcp_ticketer/core/validators.py +69 -0
  67. mcp_ticketer/defaults/ticket_instructions.md +644 -0
  68. mcp_ticketer/mcp/__init__.py +29 -1
  69. mcp_ticketer/mcp/__main__.py +60 -0
  70. mcp_ticketer/mcp/server/__init__.py +25 -0
  71. mcp_ticketer/mcp/server/__main__.py +60 -0
  72. mcp_ticketer/mcp/server/constants.py +58 -0
  73. mcp_ticketer/mcp/server/diagnostic_helper.py +175 -0
  74. mcp_ticketer/mcp/server/dto.py +195 -0
  75. mcp_ticketer/mcp/server/main.py +1343 -0
  76. mcp_ticketer/mcp/server/response_builder.py +206 -0
  77. mcp_ticketer/mcp/server/routing.py +655 -0
  78. mcp_ticketer/mcp/server/server_sdk.py +151 -0
  79. mcp_ticketer/mcp/server/tools/__init__.py +56 -0
  80. mcp_ticketer/mcp/server/tools/analysis_tools.py +495 -0
  81. mcp_ticketer/mcp/server/tools/attachment_tools.py +226 -0
  82. mcp_ticketer/mcp/server/tools/bulk_tools.py +273 -0
  83. mcp_ticketer/mcp/server/tools/comment_tools.py +152 -0
  84. mcp_ticketer/mcp/server/tools/config_tools.py +1439 -0
  85. mcp_ticketer/mcp/server/tools/diagnostic_tools.py +211 -0
  86. mcp_ticketer/mcp/server/tools/hierarchy_tools.py +921 -0
  87. mcp_ticketer/mcp/server/tools/instruction_tools.py +300 -0
  88. mcp_ticketer/mcp/server/tools/label_tools.py +948 -0
  89. mcp_ticketer/mcp/server/tools/pr_tools.py +152 -0
  90. mcp_ticketer/mcp/server/tools/search_tools.py +215 -0
  91. mcp_ticketer/mcp/server/tools/session_tools.py +170 -0
  92. mcp_ticketer/mcp/server/tools/ticket_tools.py +1268 -0
  93. mcp_ticketer/mcp/server/tools/user_ticket_tools.py +547 -0
  94. mcp_ticketer/queue/__init__.py +1 -0
  95. mcp_ticketer/queue/health_monitor.py +168 -136
  96. mcp_ticketer/queue/manager.py +95 -25
  97. mcp_ticketer/queue/queue.py +40 -21
  98. mcp_ticketer/queue/run_worker.py +6 -1
  99. mcp_ticketer/queue/ticket_registry.py +213 -155
  100. mcp_ticketer/queue/worker.py +109 -49
  101. mcp_ticketer-1.2.11.dist-info/METADATA +792 -0
  102. mcp_ticketer-1.2.11.dist-info/RECORD +110 -0
  103. mcp_ticketer/mcp/server.py +0 -1895
  104. mcp_ticketer-0.1.30.dist-info/METADATA +0 -413
  105. mcp_ticketer-0.1.30.dist-info/RECORD +0 -49
  106. {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/WHEEL +0 -0
  107. {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/entry_points.txt +0 -0
  108. {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-1.2.11.dist-info}/licenses/LICENSE +0 -0
  109. {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