mcp-ticketer 0.3.6__py3-none-any.whl → 0.3.7__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 CHANGED
@@ -1,8 +1,17 @@
1
1
  """MCP Ticketer - Universal ticket management interface."""
2
2
 
3
- from .__version__ import (__author__, __author_email__, __copyright__,
4
- __description__, __license__, __title__, __version__,
5
- __version_info__, get_user_agent, get_version)
3
+ from .__version__ import (
4
+ __author__,
5
+ __author_email__,
6
+ __copyright__,
7
+ __description__,
8
+ __license__,
9
+ __title__,
10
+ __version__,
11
+ __version_info__,
12
+ get_user_agent,
13
+ get_version,
14
+ )
6
15
 
7
16
  __all__ = [
8
17
  "__version__",
@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.3.6"
3
+ __version__ = "0.3.7"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -7,8 +7,7 @@ from pathlib import Path
7
7
  from typing import Any, Optional, Union
8
8
 
9
9
  from ..core.adapter import BaseAdapter
10
- from ..core.models import (Comment, Epic, Priority, SearchQuery, Task,
11
- TicketState)
10
+ from ..core.models import Comment, Epic, Priority, SearchQuery, Task, TicketState
12
11
  from ..core.registry import AdapterRegistry
13
12
 
14
13
  # Import ai-trackdown-pytools when available
@@ -9,8 +9,7 @@ import httpx
9
9
 
10
10
  from ..core.adapter import BaseAdapter
11
11
  from ..core.env_loader import load_adapter_config, validate_adapter_config
12
- from ..core.models import (Comment, Epic, Priority, SearchQuery, Task,
13
- TicketState)
12
+ from ..core.models import Comment, Epic, Priority, SearchQuery, Task, TicketState
14
13
  from ..core.registry import AdapterRegistry
15
14
 
16
15
 
@@ -13,8 +13,7 @@ from httpx import AsyncClient, HTTPStatusError, TimeoutException
13
13
 
14
14
  from ..core.adapter import BaseAdapter
15
15
  from ..core.env_loader import load_adapter_config, validate_adapter_config
16
- from ..core.models import (Comment, Epic, Priority, SearchQuery, Task,
17
- TicketState)
16
+ from ..core.models import Comment, Epic, Priority, SearchQuery, Task, TicketState
18
17
  from ..core.registry import AdapterRegistry
19
18
 
20
19
  logger = logging.getLogger(__name__)
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import asyncio
6
+ import logging
5
7
  import os
6
8
  from typing import Any
7
9
 
@@ -18,15 +20,27 @@ from ...core.adapter import BaseAdapter
18
20
  from ...core.models import Comment, Epic, SearchQuery, Task, TicketState
19
21
  from ...core.registry import AdapterRegistry
20
22
  from .client import LinearGraphQLClient
21
- from .mappers import (build_linear_issue_input,
22
- build_linear_issue_update_input,
23
- map_linear_comment_to_comment, map_linear_issue_to_task,
24
- map_linear_project_to_epic)
25
- from .queries import (ALL_FRAGMENTS, CREATE_ISSUE_MUTATION, LIST_ISSUES_QUERY,
26
- SEARCH_ISSUES_QUERY, UPDATE_ISSUE_MUTATION,
27
- WORKFLOW_STATES_QUERY)
28
- from .types import (LinearStateMapping, build_issue_filter,
29
- get_linear_priority, get_linear_state_type)
23
+ from .mappers import (
24
+ build_linear_issue_input,
25
+ build_linear_issue_update_input,
26
+ map_linear_comment_to_comment,
27
+ map_linear_issue_to_task,
28
+ map_linear_project_to_epic,
29
+ )
30
+ from .queries import (
31
+ ALL_FRAGMENTS,
32
+ CREATE_ISSUE_MUTATION,
33
+ LIST_ISSUES_QUERY,
34
+ SEARCH_ISSUES_QUERY,
35
+ UPDATE_ISSUE_MUTATION,
36
+ WORKFLOW_STATES_QUERY,
37
+ )
38
+ from .types import (
39
+ LinearStateMapping,
40
+ build_issue_filter,
41
+ get_linear_priority,
42
+ get_linear_state_type,
43
+ )
30
44
 
31
45
 
32
46
  class LinearAdapter(BaseAdapter[Task]):
@@ -206,12 +220,14 @@ class LinearAdapter(BaseAdapter[Task]):
206
220
  raise ValueError(f"Failed to load workflow states: {e}")
207
221
 
208
222
  async def _load_team_labels(self, team_id: str) -> None:
209
- """Load and cache labels for the team.
223
+ """Load and cache labels for the team with retry logic.
210
224
 
211
225
  Args:
212
226
  team_id: Linear team ID
213
227
 
214
228
  """
229
+ logger = logging.getLogger(__name__)
230
+
215
231
  query = """
216
232
  query GetTeamLabels($teamId: String!) {
217
233
  team(id: $teamId) {
@@ -227,15 +243,32 @@ class LinearAdapter(BaseAdapter[Task]):
227
243
  }
228
244
  """
229
245
 
230
- try:
231
- result = await self.client.execute_query(query, {"teamId": team_id})
232
- self._labels_cache = result["team"]["labels"]["nodes"]
233
- except Exception:
234
- # Log error but don't fail - labels are optional
235
- self._labels_cache = []
246
+ max_retries = 3
247
+ for attempt in range(max_retries):
248
+ try:
249
+ result = await self.client.execute_query(query, {"teamId": team_id})
250
+ labels = result.get("team", {}).get("labels", {}).get("nodes", [])
251
+ self._labels_cache = labels
252
+ logger.info(f"Loaded {len(labels)} labels for team {team_id}")
253
+ return # Success
254
+
255
+ except Exception as e:
256
+ if attempt < max_retries - 1:
257
+ wait_time = 2**attempt
258
+ logger.warning(
259
+ f"Failed to load labels (attempt {attempt + 1}/{max_retries}): {e}. "
260
+ f"Retrying in {wait_time}s..."
261
+ )
262
+ await asyncio.sleep(wait_time)
263
+ else:
264
+ logger.error(
265
+ f"Failed to load team labels after {max_retries} attempts: {e}",
266
+ exc_info=True,
267
+ )
268
+ self._labels_cache = [] # Explicitly empty on failure
236
269
 
237
270
  async def _resolve_label_ids(self, label_names: list[str]) -> list[str]:
238
- """Resolve label names to Linear label IDs.
271
+ """Resolve label names to Linear label IDs with proper None vs empty list handling.
239
272
 
240
273
  Args:
241
274
  label_names: List of label names
@@ -244,16 +277,25 @@ class LinearAdapter(BaseAdapter[Task]):
244
277
  List of Linear label IDs that exist
245
278
 
246
279
  """
247
- import logging
248
-
249
280
  logger = logging.getLogger(__name__)
250
281
 
251
- if not self._labels_cache:
282
+ # None = not loaded yet, [] = loaded but empty or failed
283
+ if self._labels_cache is None:
252
284
  team_id = await self._ensure_team_id()
253
285
  await self._load_team_labels(team_id)
254
286
 
287
+ if self._labels_cache is None:
288
+ # Still None after load attempt - should not happen
289
+ logger.error(
290
+ "Label cache is None after load attempt. Tags will be skipped."
291
+ )
292
+ return []
293
+
255
294
  if not self._labels_cache:
256
- logger.warning("No labels found in team cache")
295
+ # Empty list - either no labels in team or load failed
296
+ logger.warning(
297
+ f"Team has no labels available. Cannot resolve tags: {label_names}"
298
+ )
257
299
  return []
258
300
 
259
301
  # Create name -> ID mapping (case-insensitive)
@@ -823,7 +865,7 @@ class LinearAdapter(BaseAdapter[Task]):
823
865
 
824
866
  comment_input = {
825
867
  "issueId": linear_id,
826
- "body": comment.body,
868
+ "body": comment.content,
827
869
  }
828
870
 
829
871
  result = await self.client.execute_mutation(
@@ -16,8 +16,7 @@ except ImportError:
16
16
  HTTPXAsyncTransport = None
17
17
  TransportError = Exception
18
18
 
19
- from ...core.exceptions import (AdapterError, AuthenticationError,
20
- RateLimitError)
19
+ from ...core.exceptions import AdapterError, AuthenticationError, RateLimitError
21
20
 
22
21
 
23
22
  class LinearGraphQLClient:
@@ -6,8 +6,7 @@ from datetime import datetime
6
6
  from typing import Any
7
7
 
8
8
  from ...core.models import Comment, Epic, Priority, Task, TicketState
9
- from .types import (extract_linear_metadata, get_universal_priority,
10
- get_universal_state)
9
+ from .types import extract_linear_metadata, get_universal_priority, get_universal_state
11
10
 
12
11
 
13
12
  def map_linear_issue_to_task(issue_data: dict[str, Any]) -> Task:
@@ -197,8 +197,7 @@ def _test_adapter_instantiation(console: Console) -> None:
197
197
  if primary:
198
198
  adapter_type = primary.adapter_type
199
199
  # Build config from discovery
200
- from ..mcp.server import \
201
- _build_adapter_config_from_env_vars
200
+ from ..mcp.server import _build_adapter_config_from_env_vars
202
201
 
203
202
  config = _build_adapter_config_from_env_vars(adapter_type, {})
204
203
  else:
@@ -385,8 +384,7 @@ def get_adapter_status() -> dict[str, Any]:
385
384
  adapter_type = primary.adapter_type
386
385
  status["configuration_source"] = primary.found_in
387
386
  # Build basic config
388
- from ..mcp.server import \
389
- _build_adapter_config_from_env_vars
387
+ from ..mcp.server import _build_adapter_config_from_env_vars
390
388
 
391
389
  config = _build_adapter_config_from_env_vars(adapter_type, {})
392
390
  else:
@@ -9,9 +9,15 @@ from rich.panel import Panel
9
9
  from rich.prompt import Confirm, Prompt
10
10
  from rich.table import Table
11
11
 
12
- from ..core.project_config import (AdapterConfig, AdapterType, ConfigResolver,
13
- ConfigValidator, HybridConfig, SyncStrategy,
14
- TicketerConfig)
12
+ from ..core.project_config import (
13
+ AdapterConfig,
14
+ AdapterType,
15
+ ConfigResolver,
16
+ ConfigValidator,
17
+ HybridConfig,
18
+ SyncStrategy,
19
+ TicketerConfig,
20
+ )
15
21
 
16
22
  console = Console()
17
23
 
@@ -7,8 +7,12 @@ import typer
7
7
  from rich.console import Console
8
8
 
9
9
  from ..core.env_discovery import DiscoveredAdapter, EnvDiscovery
10
- from ..core.project_config import (AdapterConfig, ConfigResolver,
11
- ConfigValidator, TicketerConfig)
10
+ from ..core.project_config import (
11
+ AdapterConfig,
12
+ ConfigResolver,
13
+ ConfigValidator,
14
+ TicketerConfig,
15
+ )
12
16
 
13
17
  console = Console()
14
18
  app = typer.Typer(help="Auto-discover configuration from .env files")
mcp_ticketer/cli/main.py CHANGED
@@ -21,8 +21,7 @@ from ..core.models import Comment, SearchQuery
21
21
  from ..queue import Queue, QueueStatus, WorkerManager
22
22
  from ..queue.health_monitor import HealthStatus, QueueHealthMonitor
23
23
  from ..queue.ticket_registry import TicketRegistry
24
- from .configure import (configure_wizard, set_adapter_config,
25
- show_current_config)
24
+ from .configure import configure_wizard, set_adapter_config, show_current_config
26
25
  from .diagnostics import run_diagnostics
27
26
  from .discover import app as discover_app
28
27
  from .linear_commands import app as linear_app
@@ -12,20 +12,40 @@ from dotenv import load_dotenv
12
12
  import mcp_ticketer.adapters # noqa: F401
13
13
 
14
14
  from ..core import AdapterRegistry
15
- from ..core.models import (Comment, Epic, Priority, SearchQuery, Task,
16
- TicketState)
17
- from .constants import (DEFAULT_BASE_PATH, DEFAULT_LIMIT, DEFAULT_MAX_DEPTH,
18
- DEFAULT_OFFSET, ERROR_INTERNAL, ERROR_METHOD_NOT_FOUND,
19
- ERROR_PARSE, JSONRPC_VERSION, MCP_PROTOCOL_VERSION,
20
- MSG_EPIC_NOT_FOUND, MSG_INTERNAL_ERROR,
21
- MSG_MISSING_TICKET_ID, MSG_MISSING_TITLE,
22
- MSG_NO_TICKETS_PROVIDED, MSG_NO_UPDATES_PROVIDED,
23
- MSG_TICKET_NOT_FOUND, MSG_TRANSITION_FAILED,
24
- MSG_UNKNOWN_METHOD, MSG_UNKNOWN_OPERATION,
25
- MSG_UPDATE_FAILED, SERVER_NAME, SERVER_VERSION,
26
- STATUS_COMPLETED, STATUS_ERROR)
27
- from .dto import (CreateEpicRequest, CreateIssueRequest, CreateTaskRequest,
28
- CreateTicketRequest, ReadTicketRequest)
15
+ from ..core.models import Comment, Epic, Priority, SearchQuery, Task, TicketState
16
+ from .constants import (
17
+ DEFAULT_BASE_PATH,
18
+ DEFAULT_LIMIT,
19
+ DEFAULT_MAX_DEPTH,
20
+ DEFAULT_OFFSET,
21
+ ERROR_INTERNAL,
22
+ ERROR_METHOD_NOT_FOUND,
23
+ ERROR_PARSE,
24
+ JSONRPC_VERSION,
25
+ MCP_PROTOCOL_VERSION,
26
+ MSG_EPIC_NOT_FOUND,
27
+ MSG_INTERNAL_ERROR,
28
+ MSG_MISSING_TICKET_ID,
29
+ MSG_MISSING_TITLE,
30
+ MSG_NO_TICKETS_PROVIDED,
31
+ MSG_NO_UPDATES_PROVIDED,
32
+ MSG_TICKET_NOT_FOUND,
33
+ MSG_TRANSITION_FAILED,
34
+ MSG_UNKNOWN_METHOD,
35
+ MSG_UNKNOWN_OPERATION,
36
+ MSG_UPDATE_FAILED,
37
+ SERVER_NAME,
38
+ SERVER_VERSION,
39
+ STATUS_COMPLETED,
40
+ STATUS_ERROR,
41
+ )
42
+ from .dto import (
43
+ CreateEpicRequest,
44
+ CreateIssueRequest,
45
+ CreateTaskRequest,
46
+ CreateTicketRequest,
47
+ ReadTicketRequest,
48
+ )
29
49
  from .response_builder import ResponseBuilder
30
50
 
31
51
  # Load environment variables early (prioritize .env.local)
@@ -841,6 +861,44 @@ class MCPTicketServer:
841
861
  "required": ["title"],
842
862
  },
843
863
  },
864
+ {
865
+ "name": "ticket_comment",
866
+ "description": "Add or list comments on a ticket",
867
+ "inputSchema": {
868
+ "type": "object",
869
+ "properties": {
870
+ "operation": {
871
+ "type": "string",
872
+ "enum": ["add", "list"],
873
+ "description": "Operation to perform: 'add' to create a comment, 'list' to retrieve comments",
874
+ "default": "add",
875
+ },
876
+ "ticket_id": {
877
+ "type": "string",
878
+ "description": "Ticket ID to comment on",
879
+ },
880
+ "content": {
881
+ "type": "string",
882
+ "description": "Comment content (required for 'add' operation)",
883
+ },
884
+ "author": {
885
+ "type": "string",
886
+ "description": "Comment author (optional for 'add' operation)",
887
+ },
888
+ "limit": {
889
+ "type": "integer",
890
+ "default": 10,
891
+ "description": "Maximum number of comments to return (for 'list' operation)",
892
+ },
893
+ "offset": {
894
+ "type": "integer",
895
+ "default": 0,
896
+ "description": "Number of comments to skip (for 'list' operation)",
897
+ },
898
+ },
899
+ "required": ["ticket_id"],
900
+ },
901
+ },
844
902
  ]
845
903
  }
846
904
 
@@ -893,6 +951,8 @@ class MCPTicketServer:
893
951
  result = await self._handle_transition(arguments)
894
952
  elif tool_name == "ticket_search":
895
953
  result = await self._handle_search(arguments)
954
+ elif tool_name == "ticket_comment":
955
+ result = await self._handle_comment(arguments)
896
956
  # PR integration
897
957
  elif tool_name == "ticket_create_pr":
898
958
  result = await self._handle_create_pr(arguments)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-ticketer
3
- Version: 0.3.6
3
+ Version: 0.3.7
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>
@@ -1,30 +1,30 @@
1
- mcp_ticketer/__init__.py,sha256=-8ko5W0ZFF5rWaiSCyTAiK6XLomlwnAWGfG9ntQHV5o,506
2
- mcp_ticketer/__version__.py,sha256=wR5EgVZ9tXLjR-YAXClWYw8Ir35-gGyiaTzhafMDnyw,1117
1
+ mcp_ticketer/__init__.py,sha256=Xx4WaprO5PXhVPbYi1L6tBmwmJMkYS-lMyG4ieN6QP0,717
2
+ mcp_ticketer/__version__.py,sha256=s7BXKaEC9wzrKYxOdqIb1UHlYxMSgLWk-8vzfr8WEIc,1117
3
3
  mcp_ticketer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  mcp_ticketer/adapters/__init__.py,sha256=B5DFllWn23hkhmrLykNO5uMMSdcFuuPHXyLw_jyFzuE,358
5
- mcp_ticketer/adapters/aitrackdown.py,sha256=oDb9Y9tiHC0n66RLL7R92ZMWFepTLZT7we45pss08go,22617
6
- mcp_ticketer/adapters/github.py,sha256=rxTy50g1NditvoDM9x19zxIZef7sF1VCCKXmY5kf4rg,47413
5
+ mcp_ticketer/adapters/aitrackdown.py,sha256=Ecw2SQAGVQs5yMH6m2pj61LxCJsuy-g2bvF8uwTpLUE,22588
6
+ mcp_ticketer/adapters/github.py,sha256=YbZ8hj4nOy4pGIbZ_0zwciNbNnwK69zqfljb-wc2tSY,47384
7
7
  mcp_ticketer/adapters/hybrid.py,sha256=UADYZLc_UNw0xHPSbgguBNzvUCnuYn12Qi9ea-zdlMk,19086
8
- mcp_ticketer/adapters/jira.py,sha256=SbcHqw0FjmCXCDasXFbIulbFEFCtsZ7rY2FP6TzWadk,35376
8
+ mcp_ticketer/adapters/jira.py,sha256=labZFqOy_mmMmizC-RD1EQbu9m4LLtJywwZ956-_x5E,35347
9
9
  mcp_ticketer/adapters/linear.py,sha256=trm6ZhmlUl80sj51WAPAox_R2HQZXZ-h1QXJsrFYDCQ,587
10
10
  mcp_ticketer/adapters/linear/__init__.py,sha256=6l0ZoR6ZHSRcytLfps2AZuk5R189Pq1GfR5-YDQt8-Q,731
11
- mcp_ticketer/adapters/linear/adapter.py,sha256=MPa24OWhPINzHdf-w6PLJd4-cdCTay7YyasjNlA7j04,29671
12
- mcp_ticketer/adapters/linear/client.py,sha256=KcLDTVOgUnOaSJS4domu0dmkslBipNfG5pPoVJ3M0a0,8837
13
- mcp_ticketer/adapters/linear/mappers.py,sha256=76UbR2GvkVuAcT4T7EAQSFfagcGOQcLKElwVAXsFQ10,9653
11
+ mcp_ticketer/adapters/linear/adapter.py,sha256=ZCj6ZM5RiWbdiGrhA3NsMTgFImvrzaB0jBIr_3ZCcO8,30959
12
+ mcp_ticketer/adapters/linear/client.py,sha256=0UmWlSEcRiwnSMFYKL89KMrPPL8S8uZ5V6rIY_KFOQU,8803
13
+ mcp_ticketer/adapters/linear/mappers.py,sha256=GN1X7bOcU-5dhDW3dAtSEGivinhFBc8hoKYot8c5tCo,9631
14
14
  mcp_ticketer/adapters/linear/queries.py,sha256=K8y7xc3iH-q9LEUmg-0YDBhh546LAwLZDvVLkzx3yY4,7223
15
15
  mcp_ticketer/adapters/linear/types.py,sha256=ugXtRGLljDw6yoCnEVgdFs0xLR9ErLdnv4ffh9EAUhk,7874
16
16
  mcp_ticketer/cache/__init__.py,sha256=Xcd-cKnt-Cx7jBzvfzUUUPaGkmyXFi5XUFWw3Z4b7d4,138
17
17
  mcp_ticketer/cache/memory.py,sha256=2yBqGi9i0SanlUhJoOC7nijWjoMa3_ntPe-V-AV-LfU,5042
18
18
  mcp_ticketer/cli/__init__.py,sha256=l9Q8iKmfGkTu0cssHBVqNZTsL4eAtFzOB25AED_0G6g,89
19
- mcp_ticketer/cli/adapter_diagnostics.py,sha256=k7RBEbDx5_hiv8IqcJIDjvktmlDFO8mOqRW8JkZqUZ0,15040
19
+ mcp_ticketer/cli/adapter_diagnostics.py,sha256=pQDdtDgBwSW04wdFEPVzwbul3KgfB9g6ZMS85qpYulY,14988
20
20
  mcp_ticketer/cli/auggie_configure.py,sha256=MXKzLtqe3K_UTQ2GacHAWbvf_B0779KL325smiAKE0Q,8212
21
21
  mcp_ticketer/cli/codex_configure.py,sha256=k7-q5d7NICjm7Vxa-z0mejJNAG-bicAHKcwqrzdRDyU,9080
22
- mcp_ticketer/cli/configure.py,sha256=3AViztrHhn0wYatQdR73I1bfdWTavrT3bFIY2mQSKXE,16237
22
+ mcp_ticketer/cli/configure.py,sha256=BsA_pSHQMQS0t1bJO_wMM8LWsd5sWJDASjEPRHvwC18,16198
23
23
  mcp_ticketer/cli/diagnostics.py,sha256=jHF68ydW3RNVGumBnHUjUmq6YOjQD2UDkx0O7M__xv0,29965
24
- mcp_ticketer/cli/discover.py,sha256=Ox47QrjNRo3QueC7YUcEv18EWzIa5EXYUz4xqE6mZWU,13204
24
+ mcp_ticketer/cli/discover.py,sha256=AF_qlQc1Oo0UkWayoF5pmRChS5J3fJjH6f2YZzd_k8w,13188
25
25
  mcp_ticketer/cli/gemini_configure.py,sha256=ZNSA1lBW-itVToza-JxW95Po7daVXKiZAh7lp6pmXMU,9343
26
26
  mcp_ticketer/cli/linear_commands.py,sha256=_8f8ze_1MbiUweU6RFHpldgfHLirysIdPjHr2_S0YhI,17319
27
- mcp_ticketer/cli/main.py,sha256=F4dL2tVqqqg1vf9Javc0-3Lz9dX3qXe6Y2MD99Jvao0,74496
27
+ mcp_ticketer/cli/main.py,sha256=BFo7QYU0tTOHWSfTmegzDqflSYFytCE8Jw6QGB7TwaY,74470
28
28
  mcp_ticketer/cli/mcp_configure.py,sha256=RzV50UjXgOmvMp-9S0zS39psuvjffVByaMrqrUaAGAM,9594
29
29
  mcp_ticketer/cli/migrate_config.py,sha256=MYsr_C5ZxsGg0P13etWTWNrJ_lc6ElRCkzfQADYr3DM,5956
30
30
  mcp_ticketer/cli/queue_commands.py,sha256=mm-3H6jmkUGJDyU_E46o9iRpek8tvFCm77F19OtHiZI,7884
@@ -45,7 +45,7 @@ mcp_ticketer/mcp/__init__.py,sha256=Y05eTzsPk0wH8yKNIM-ekpGjgSDO0bQr0EME-vOP4GE,
45
45
  mcp_ticketer/mcp/constants.py,sha256=EBGsJtBPaTCvAm5rOMknckrXActrNIls7lRklnh1L4s,2072
46
46
  mcp_ticketer/mcp/dto.py,sha256=fUNAdCnPNp80s6RYLFqSmgqQZX04BHYry4GArmFkdG0,7336
47
47
  mcp_ticketer/mcp/response_builder.py,sha256=sEYiwQddlfQmIOcbQ-yBsDvH1EJfbTDwCEUJNf7q5Vk,4946
48
- mcp_ticketer/mcp/server.py,sha256=TX9F7myGspWrP5Fb68YttwaRB1e2zy4sD8ZSbDtgysQ,46966
48
+ mcp_ticketer/mcp/server.py,sha256=SZ8lHdXJJAfV3jVRiZcR2uNYpHY-Lcbt2xXy_Tc728E,48848
49
49
  mcp_ticketer/queue/__init__.py,sha256=1YIaCpZpFqPcqvDEQXiEvDLiw94DXRdCJkBaVIFQrms,231
50
50
  mcp_ticketer/queue/__main__.py,sha256=gc_tE9NUdK07OJfTZuD4t6KeBD_vxFQIhknGTQUG_jk,109
51
51
  mcp_ticketer/queue/health_monitor.py,sha256=KFOzksomUFnS94XKBiuHFPmGK6b4QXWzsrjwhHkR9vI,12245
@@ -54,9 +54,9 @@ mcp_ticketer/queue/queue.py,sha256=PIB_8gOE4rCb5_tBNKw9qD6YhSgH3Ei3IzVrUSY3F_o,1
54
54
  mcp_ticketer/queue/run_worker.py,sha256=WhoeamL8LKZ66TM8W1PkMPwjF2w_EDFMP-mevs6C1TM,1019
55
55
  mcp_ticketer/queue/ticket_registry.py,sha256=FE6W_D8NA-66cJQ6VqghChF3JasYW845JVfEZdiqLbA,15449
56
56
  mcp_ticketer/queue/worker.py,sha256=AF6W1bdxWnHiJd6-iBWqTHkZ4lFflsS65CAtgFPR0FA,20983
57
- mcp_ticketer-0.3.6.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
58
- mcp_ticketer-0.3.6.dist-info/METADATA,sha256=b1DhGguW8BuS-PQIaUQw2pbZO7lUwQJd5WrCoZFhshM,13219
59
- mcp_ticketer-0.3.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
60
- mcp_ticketer-0.3.6.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
61
- mcp_ticketer-0.3.6.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
62
- mcp_ticketer-0.3.6.dist-info/RECORD,,
57
+ mcp_ticketer-0.3.7.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
58
+ mcp_ticketer-0.3.7.dist-info/METADATA,sha256=ivW854H301BPY_YzUtzYhhhQ15sQKF_u-owFjOq6e24,13219
59
+ mcp_ticketer-0.3.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
60
+ mcp_ticketer-0.3.7.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
61
+ mcp_ticketer-0.3.7.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
62
+ mcp_ticketer-0.3.7.dist-info/RECORD,,