mcp-ticketer 0.3.1__py3-none-any.whl → 0.3.3__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/__version__.py +1 -1
- mcp_ticketer/adapters/aitrackdown.py +164 -36
- mcp_ticketer/adapters/github.py +11 -8
- mcp_ticketer/adapters/jira.py +29 -28
- mcp_ticketer/adapters/linear/__init__.py +1 -1
- mcp_ticketer/adapters/linear/adapter.py +105 -104
- mcp_ticketer/adapters/linear/client.py +78 -59
- mcp_ticketer/adapters/linear/mappers.py +93 -73
- mcp_ticketer/adapters/linear/queries.py +28 -7
- mcp_ticketer/adapters/linear/types.py +67 -60
- mcp_ticketer/adapters/linear.py +2 -2
- mcp_ticketer/cli/adapter_diagnostics.py +87 -52
- mcp_ticketer/cli/codex_configure.py +6 -6
- mcp_ticketer/cli/diagnostics.py +180 -88
- mcp_ticketer/cli/linear_commands.py +156 -113
- mcp_ticketer/cli/main.py +153 -82
- mcp_ticketer/cli/simple_health.py +74 -51
- mcp_ticketer/cli/utils.py +15 -10
- mcp_ticketer/core/config.py +23 -19
- mcp_ticketer/core/env_discovery.py +5 -4
- mcp_ticketer/core/env_loader.py +114 -91
- mcp_ticketer/core/exceptions.py +22 -20
- mcp_ticketer/core/models.py +9 -0
- mcp_ticketer/core/project_config.py +1 -1
- mcp_ticketer/mcp/constants.py +58 -0
- mcp_ticketer/mcp/dto.py +195 -0
- mcp_ticketer/mcp/response_builder.py +206 -0
- mcp_ticketer/mcp/server.py +361 -1182
- mcp_ticketer/queue/health_monitor.py +166 -135
- mcp_ticketer/queue/manager.py +70 -19
- mcp_ticketer/queue/queue.py +24 -5
- mcp_ticketer/queue/run_worker.py +1 -1
- mcp_ticketer/queue/ticket_registry.py +203 -145
- mcp_ticketer/queue/worker.py +79 -43
- {mcp_ticketer-0.3.1.dist-info → mcp_ticketer-0.3.3.dist-info}/METADATA +1 -1
- mcp_ticketer-0.3.3.dist-info/RECORD +62 -0
- mcp_ticketer-0.3.1.dist-info/RECORD +0 -59
- {mcp_ticketer-0.3.1.dist-info → mcp_ticketer-0.3.3.dist-info}/WHEEL +0 -0
- {mcp_ticketer-0.3.1.dist-info → mcp_ticketer-0.3.3.dist-info}/entry_points.txt +0 -0
- {mcp_ticketer-0.3.1.dist-info → mcp_ticketer-0.3.3.dist-info}/licenses/LICENSE +0 -0
- {mcp_ticketer-0.3.1.dist-info → mcp_ticketer-0.3.3.dist-info}/top_level.txt +0 -0
mcp_ticketer/queue/worker.py
CHANGED
|
@@ -11,13 +11,13 @@ from typing import Any, Optional
|
|
|
11
11
|
|
|
12
12
|
from dotenv import load_dotenv
|
|
13
13
|
|
|
14
|
+
# Import adapters module to trigger registration
|
|
15
|
+
import mcp_ticketer.adapters # noqa: F401
|
|
16
|
+
|
|
14
17
|
from ..core import AdapterRegistry, Task
|
|
15
18
|
from .queue import Queue, QueueItem, QueueStatus
|
|
16
19
|
from .ticket_registry import TicketRegistry
|
|
17
20
|
|
|
18
|
-
# Import adapters module to trigger registration
|
|
19
|
-
import mcp_ticketer.adapters # noqa: F401
|
|
20
|
-
|
|
21
21
|
# Load environment variables from .env.local
|
|
22
22
|
env_path = Path.cwd() / ".env.local"
|
|
23
23
|
if env_path.exists():
|
|
@@ -263,15 +263,19 @@ class Worker:
|
|
|
263
263
|
|
|
264
264
|
# Mark as completed in both queue and registry (atomic)
|
|
265
265
|
success = self.queue.update_status(
|
|
266
|
-
item.id,
|
|
267
|
-
|
|
266
|
+
item.id,
|
|
267
|
+
QueueStatus.COMPLETED,
|
|
268
|
+
result=result,
|
|
269
|
+
expected_status=QueueStatus.PROCESSING,
|
|
268
270
|
)
|
|
269
271
|
if success:
|
|
270
272
|
self.ticket_registry.update_ticket_status(
|
|
271
273
|
item.id, "completed", ticket_id=ticket_id, result_data=result
|
|
272
274
|
)
|
|
273
275
|
else:
|
|
274
|
-
logger.warning(
|
|
276
|
+
logger.warning(
|
|
277
|
+
f"Failed to update status for {item.id} - item may have been processed by another worker"
|
|
278
|
+
)
|
|
275
279
|
|
|
276
280
|
self.stats["items_processed"] += 1
|
|
277
281
|
logger.info(f"Successfully processed {item.id}, ticket ID: {ticket_id}")
|
|
@@ -301,22 +305,31 @@ class Worker:
|
|
|
301
305
|
item.id, "queued", retry_count=new_retry_count
|
|
302
306
|
)
|
|
303
307
|
else:
|
|
304
|
-
logger.warning(
|
|
308
|
+
logger.warning(
|
|
309
|
+
f"Failed to increment retry for {item.id} - item may have been processed by another worker"
|
|
310
|
+
)
|
|
305
311
|
|
|
306
312
|
# Wait before retry
|
|
307
313
|
await asyncio.sleep(retry_delay)
|
|
308
314
|
else:
|
|
309
315
|
# Max retries exceeded, mark as failed (atomic)
|
|
310
316
|
success = self.queue.update_status(
|
|
311
|
-
item.id,
|
|
312
|
-
|
|
317
|
+
item.id,
|
|
318
|
+
QueueStatus.FAILED,
|
|
319
|
+
error_message=str(e),
|
|
320
|
+
expected_status=QueueStatus.PROCESSING,
|
|
313
321
|
)
|
|
314
322
|
if success:
|
|
315
323
|
self.ticket_registry.update_ticket_status(
|
|
316
|
-
item.id,
|
|
324
|
+
item.id,
|
|
325
|
+
"failed",
|
|
326
|
+
error_message=str(e),
|
|
327
|
+
retry_count=item.retry_count,
|
|
317
328
|
)
|
|
318
329
|
else:
|
|
319
|
-
logger.warning(
|
|
330
|
+
logger.warning(
|
|
331
|
+
f"Failed to mark {item.id} as failed - item may have been processed by another worker"
|
|
332
|
+
)
|
|
320
333
|
self.stats["items_failed"] += 1
|
|
321
334
|
logger.error(f"Max retries exceeded for {item.id}, marking as failed")
|
|
322
335
|
|
|
@@ -360,24 +373,31 @@ class Worker:
|
|
|
360
373
|
|
|
361
374
|
from ..cli.main import load_config
|
|
362
375
|
|
|
363
|
-
# Use item
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
376
|
+
# PRIORITY 1: Use adapter_config from queue item if available (explicit config)
|
|
377
|
+
if item.adapter_config:
|
|
378
|
+
logger.info("Worker using explicit adapter_config from queue item")
|
|
379
|
+
adapter_config = item.adapter_config
|
|
380
|
+
logger.info(f"Worker adapter config for {item.adapter}: {adapter_config}")
|
|
381
|
+
else:
|
|
382
|
+
# PRIORITY 2: Load from project config file
|
|
383
|
+
# Use item's project_dir if available, otherwise use current directory
|
|
384
|
+
project_path = Path(item.project_dir) if item.project_dir else None
|
|
385
|
+
|
|
386
|
+
# Load environment variables from project directory's .env.local if it exists
|
|
387
|
+
if project_path:
|
|
388
|
+
env_file = project_path / ".env.local"
|
|
389
|
+
if env_file.exists():
|
|
390
|
+
logger.info(f"Worker loading environment from {env_file}")
|
|
391
|
+
load_dotenv(env_file)
|
|
392
|
+
|
|
393
|
+
logger.info(f"Worker project_path: {project_path}")
|
|
394
|
+
logger.info(f"Worker current working directory: {os.getcwd()}")
|
|
395
|
+
|
|
396
|
+
config = load_config(project_dir=project_path)
|
|
397
|
+
logger.info(f"Worker loaded config: {config}")
|
|
398
|
+
adapters_config = config.get("adapters", {})
|
|
399
|
+
adapter_config = adapters_config.get(item.adapter, {})
|
|
400
|
+
logger.info(f"Worker adapter config for {item.adapter}: {adapter_config}")
|
|
381
401
|
|
|
382
402
|
# Add environment variables for authentication
|
|
383
403
|
if item.adapter == "linear":
|
|
@@ -397,17 +417,28 @@ class Worker:
|
|
|
397
417
|
# Add debugging for Linear adapter specifically
|
|
398
418
|
if item.adapter == "linear":
|
|
399
419
|
import os
|
|
420
|
+
|
|
400
421
|
linear_api_key = os.getenv("LINEAR_API_KEY", "Not set")
|
|
401
|
-
logger.info(
|
|
402
|
-
|
|
422
|
+
logger.info(
|
|
423
|
+
f"Worker LINEAR_API_KEY: {linear_api_key[:20] if linear_api_key != 'Not set' else 'Not set'}..."
|
|
424
|
+
)
|
|
425
|
+
logger.info(
|
|
426
|
+
f"Worker adapter_config api_key: {adapter_config.get('api_key', 'Not set')[:20] if adapter_config.get('api_key') else 'Not set'}..."
|
|
427
|
+
)
|
|
403
428
|
|
|
404
429
|
adapter = AdapterRegistry.get_adapter(item.adapter, adapter_config)
|
|
405
|
-
logger.info(
|
|
430
|
+
logger.info(
|
|
431
|
+
f"Worker created adapter: {type(adapter)} with team_id: {getattr(adapter, 'team_id_config', 'Not set')}"
|
|
432
|
+
)
|
|
406
433
|
|
|
407
434
|
# Add more debugging for Linear adapter
|
|
408
435
|
if item.adapter == "linear":
|
|
409
|
-
logger.info(
|
|
410
|
-
|
|
436
|
+
logger.info(
|
|
437
|
+
f"Worker Linear adapter api_key: {getattr(adapter, 'api_key', 'Not set')[:20] if getattr(adapter, 'api_key', None) else 'Not set'}..."
|
|
438
|
+
)
|
|
439
|
+
logger.info(
|
|
440
|
+
f"Worker Linear adapter team_key: {getattr(adapter, 'team_key', 'Not set')}"
|
|
441
|
+
)
|
|
411
442
|
|
|
412
443
|
return adapter
|
|
413
444
|
|
|
@@ -461,14 +492,13 @@ class Worker:
|
|
|
461
492
|
result = await adapter.create_epic(
|
|
462
493
|
title=data["title"],
|
|
463
494
|
description=data.get("description"),
|
|
464
|
-
**{k: v for k, v in data.items()
|
|
465
|
-
if k not in ["title", "description"]}
|
|
495
|
+
**{k: v for k, v in data.items() if k not in ["title", "description"]},
|
|
466
496
|
)
|
|
467
497
|
return {
|
|
468
498
|
"id": result.id if result else None,
|
|
469
499
|
"title": result.title if result else None,
|
|
470
500
|
"type": "epic",
|
|
471
|
-
"success": bool(result)
|
|
501
|
+
"success": bool(result),
|
|
472
502
|
}
|
|
473
503
|
|
|
474
504
|
elif operation == "create_issue":
|
|
@@ -476,15 +506,18 @@ class Worker:
|
|
|
476
506
|
title=data["title"],
|
|
477
507
|
description=data.get("description"),
|
|
478
508
|
epic_id=data.get("epic_id"),
|
|
479
|
-
**{
|
|
480
|
-
|
|
509
|
+
**{
|
|
510
|
+
k: v
|
|
511
|
+
for k, v in data.items()
|
|
512
|
+
if k not in ["title", "description", "epic_id"]
|
|
513
|
+
},
|
|
481
514
|
)
|
|
482
515
|
return {
|
|
483
516
|
"id": result.id if result else None,
|
|
484
517
|
"title": result.title if result else None,
|
|
485
518
|
"type": "issue",
|
|
486
519
|
"epic_id": data.get("epic_id"),
|
|
487
|
-
"success": bool(result)
|
|
520
|
+
"success": bool(result),
|
|
488
521
|
}
|
|
489
522
|
|
|
490
523
|
elif operation == "create_task":
|
|
@@ -492,15 +525,18 @@ class Worker:
|
|
|
492
525
|
title=data["title"],
|
|
493
526
|
parent_id=data["parent_id"],
|
|
494
527
|
description=data.get("description"),
|
|
495
|
-
**{
|
|
496
|
-
|
|
528
|
+
**{
|
|
529
|
+
k: v
|
|
530
|
+
for k, v in data.items()
|
|
531
|
+
if k not in ["title", "parent_id", "description"]
|
|
532
|
+
},
|
|
497
533
|
)
|
|
498
534
|
return {
|
|
499
535
|
"id": result.id if result else None,
|
|
500
536
|
"title": result.title if result else None,
|
|
501
537
|
"type": "task",
|
|
502
538
|
"parent_id": data["parent_id"],
|
|
503
|
-
"success": bool(result)
|
|
539
|
+
"success": bool(result),
|
|
504
540
|
}
|
|
505
541
|
|
|
506
542
|
else:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
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>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
mcp_ticketer/__init__.py,sha256=Xx4WaprO5PXhVPbYi1L6tBmwmJMkYS-lMyG4ieN6QP0,717
|
|
2
|
+
mcp_ticketer/__version__.py,sha256=j309F4mrlZqf8FcC91dNHQzvReN2SW3ubVrcqvAI7YY,1117
|
|
3
|
+
mcp_ticketer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
mcp_ticketer/adapters/__init__.py,sha256=B5DFllWn23hkhmrLykNO5uMMSdcFuuPHXyLw_jyFzuE,358
|
|
5
|
+
mcp_ticketer/adapters/aitrackdown.py,sha256=Ecw2SQAGVQs5yMH6m2pj61LxCJsuy-g2bvF8uwTpLUE,22588
|
|
6
|
+
mcp_ticketer/adapters/github.py,sha256=YbZ8hj4nOy4pGIbZ_0zwciNbNnwK69zqfljb-wc2tSY,47384
|
|
7
|
+
mcp_ticketer/adapters/hybrid.py,sha256=UADYZLc_UNw0xHPSbgguBNzvUCnuYn12Qi9ea-zdlMk,19086
|
|
8
|
+
mcp_ticketer/adapters/jira.py,sha256=labZFqOy_mmMmizC-RD1EQbu9m4LLtJywwZ956-_x5E,35347
|
|
9
|
+
mcp_ticketer/adapters/linear.py,sha256=trm6ZhmlUl80sj51WAPAox_R2HQZXZ-h1QXJsrFYDCQ,587
|
|
10
|
+
mcp_ticketer/adapters/linear/__init__.py,sha256=6l0ZoR6ZHSRcytLfps2AZuk5R189Pq1GfR5-YDQt8-Q,731
|
|
11
|
+
mcp_ticketer/adapters/linear/adapter.py,sha256=wXZyhK1nK1QxPoGz2VsNdgtrktvICz4g4pk6naRcfYE,26144
|
|
12
|
+
mcp_ticketer/adapters/linear/client.py,sha256=0UmWlSEcRiwnSMFYKL89KMrPPL8S8uZ5V6rIY_KFOQU,8803
|
|
13
|
+
mcp_ticketer/adapters/linear/mappers.py,sha256=DbUrCI2gEYkK_PddjR62wva4q8PWcaBh5j1hWOczkPY,9596
|
|
14
|
+
mcp_ticketer/adapters/linear/queries.py,sha256=LScSwVb9QA6gPiJJ1vHHoTwA6NA3TEPPD7dUzd1zA4g,7196
|
|
15
|
+
mcp_ticketer/adapters/linear/types.py,sha256=ugXtRGLljDw6yoCnEVgdFs0xLR9ErLdnv4ffh9EAUhk,7874
|
|
16
|
+
mcp_ticketer/cache/__init__.py,sha256=Xcd-cKnt-Cx7jBzvfzUUUPaGkmyXFi5XUFWw3Z4b7d4,138
|
|
17
|
+
mcp_ticketer/cache/memory.py,sha256=2yBqGi9i0SanlUhJoOC7nijWjoMa3_ntPe-V-AV-LfU,5042
|
|
18
|
+
mcp_ticketer/cli/__init__.py,sha256=l9Q8iKmfGkTu0cssHBVqNZTsL4eAtFzOB25AED_0G6g,89
|
|
19
|
+
mcp_ticketer/cli/adapter_diagnostics.py,sha256=pQDdtDgBwSW04wdFEPVzwbul3KgfB9g6ZMS85qpYulY,14988
|
|
20
|
+
mcp_ticketer/cli/auggie_configure.py,sha256=MXKzLtqe3K_UTQ2GacHAWbvf_B0779KL325smiAKE0Q,8212
|
|
21
|
+
mcp_ticketer/cli/codex_configure.py,sha256=k7-q5d7NICjm7Vxa-z0mejJNAG-bicAHKcwqrzdRDyU,9080
|
|
22
|
+
mcp_ticketer/cli/configure.py,sha256=BsA_pSHQMQS0t1bJO_wMM8LWsd5sWJDASjEPRHvwC18,16198
|
|
23
|
+
mcp_ticketer/cli/diagnostics.py,sha256=jHF68ydW3RNVGumBnHUjUmq6YOjQD2UDkx0O7M__xv0,29965
|
|
24
|
+
mcp_ticketer/cli/discover.py,sha256=AF_qlQc1Oo0UkWayoF5pmRChS5J3fJjH6f2YZzd_k8w,13188
|
|
25
|
+
mcp_ticketer/cli/gemini_configure.py,sha256=ZNSA1lBW-itVToza-JxW95Po7daVXKiZAh7lp6pmXMU,9343
|
|
26
|
+
mcp_ticketer/cli/linear_commands.py,sha256=_8f8ze_1MbiUweU6RFHpldgfHLirysIdPjHr2_S0YhI,17319
|
|
27
|
+
mcp_ticketer/cli/main.py,sha256=C06b393NtgRwLEp4CjOFCQQCNEQ9V-UoMMrJy33r_P0,73982
|
|
28
|
+
mcp_ticketer/cli/mcp_configure.py,sha256=RzV50UjXgOmvMp-9S0zS39psuvjffVByaMrqrUaAGAM,9594
|
|
29
|
+
mcp_ticketer/cli/migrate_config.py,sha256=MYsr_C5ZxsGg0P13etWTWNrJ_lc6ElRCkzfQADYr3DM,5956
|
|
30
|
+
mcp_ticketer/cli/queue_commands.py,sha256=mm-3H6jmkUGJDyU_E46o9iRpek8tvFCm77F19OtHiZI,7884
|
|
31
|
+
mcp_ticketer/cli/simple_health.py,sha256=GlOLRRFoifCna995NoHuKpb3xmFkLi2b3Ke1hyeDvq4,7950
|
|
32
|
+
mcp_ticketer/cli/utils.py,sha256=IOycMmhwtCDpL3RN_wVEZkYMg9FHyDr4mg5M9Bxzfbo,23041
|
|
33
|
+
mcp_ticketer/core/__init__.py,sha256=eXovsaJymQRP2AwOBuOy6mFtI3I68D7gGenZ5V-IMqo,349
|
|
34
|
+
mcp_ticketer/core/adapter.py,sha256=q64LxOInIno7EIbmuxItf8KEsd-g9grCs__Z4uwZHto,10273
|
|
35
|
+
mcp_ticketer/core/config.py,sha256=ZaooOtim4ZgaQrDPjL5TWJ-K03N9hb0s63YehCsNqR0,19372
|
|
36
|
+
mcp_ticketer/core/env_discovery.py,sha256=bHOfj7YVExhqFVxto3G-zZ8p6T12BOhF0J4IXCjdll8,19971
|
|
37
|
+
mcp_ticketer/core/env_loader.py,sha256=VLCQhK50quM5e3LkrAGHD5on5vTBj18Z2IgNMNES14M,11866
|
|
38
|
+
mcp_ticketer/core/exceptions.py,sha256=H1gUmNiOjVXn4CT-JLQcGXmjWxHaxxdFvwcpJLTrs-U,3621
|
|
39
|
+
mcp_ticketer/core/http_client.py,sha256=s5ikMiwEJ8TJjNn73wu3gv3OdAtyBEpAqPnSroRMW2k,13971
|
|
40
|
+
mcp_ticketer/core/mappers.py,sha256=1aG1jFsHTCwmGRVgOlXW-VOSTGzc86gv7qjDfiR1ups,17462
|
|
41
|
+
mcp_ticketer/core/models.py,sha256=O3t7x1Q5l6OYS93HNSg7Kp-d6JapVjdTc6gAAfUBxUo,12495
|
|
42
|
+
mcp_ticketer/core/project_config.py,sha256=5W9YvDBBASEo5fBcSF-rlA1W3LwzkTv6_CEJXxnsOjc,23346
|
|
43
|
+
mcp_ticketer/core/registry.py,sha256=ShYLDPE62KFJpB0kj_zFyQzRxSH3LkQEEuo1jaakb1k,3483
|
|
44
|
+
mcp_ticketer/mcp/__init__.py,sha256=Y05eTzsPk0wH8yKNIM-ekpGjgSDO0bQr0EME-vOP4GE,123
|
|
45
|
+
mcp_ticketer/mcp/constants.py,sha256=EBGsJtBPaTCvAm5rOMknckrXActrNIls7lRklnh1L4s,2072
|
|
46
|
+
mcp_ticketer/mcp/dto.py,sha256=fUNAdCnPNp80s6RYLFqSmgqQZX04BHYry4GArmFkdG0,7336
|
|
47
|
+
mcp_ticketer/mcp/response_builder.py,sha256=sEYiwQddlfQmIOcbQ-yBsDvH1EJfbTDwCEUJNf7q5Vk,4946
|
|
48
|
+
mcp_ticketer/mcp/server.py,sha256=l9DQ4e9pzdIyIS3Y-gKQwzOzBiVxDi0YJO0U6EeCz5M,46825
|
|
49
|
+
mcp_ticketer/queue/__init__.py,sha256=1YIaCpZpFqPcqvDEQXiEvDLiw94DXRdCJkBaVIFQrms,231
|
|
50
|
+
mcp_ticketer/queue/__main__.py,sha256=gc_tE9NUdK07OJfTZuD4t6KeBD_vxFQIhknGTQUG_jk,109
|
|
51
|
+
mcp_ticketer/queue/health_monitor.py,sha256=KFOzksomUFnS94XKBiuHFPmGK6b4QXWzsrjwhHkR9vI,12245
|
|
52
|
+
mcp_ticketer/queue/manager.py,sha256=qo7splhIIqzPxINpD8Yflr335sRpuqXtWr2JlsjB8Us,12246
|
|
53
|
+
mcp_ticketer/queue/queue.py,sha256=PIB_8gOE4rCb5_tBNKw9qD6YhSgH3Ei3IzVrUSY3F_o,17978
|
|
54
|
+
mcp_ticketer/queue/run_worker.py,sha256=WhoeamL8LKZ66TM8W1PkMPwjF2w_EDFMP-mevs6C1TM,1019
|
|
55
|
+
mcp_ticketer/queue/ticket_registry.py,sha256=FE6W_D8NA-66cJQ6VqghChF3JasYW845JVfEZdiqLbA,15449
|
|
56
|
+
mcp_ticketer/queue/worker.py,sha256=AF6W1bdxWnHiJd6-iBWqTHkZ4lFflsS65CAtgFPR0FA,20983
|
|
57
|
+
mcp_ticketer-0.3.3.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
|
|
58
|
+
mcp_ticketer-0.3.3.dist-info/METADATA,sha256=jUhjNp9zoOr4y9AXssKHVoe6p7YEyS--WQhKDnEzmrA,13219
|
|
59
|
+
mcp_ticketer-0.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
60
|
+
mcp_ticketer-0.3.3.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
|
|
61
|
+
mcp_ticketer-0.3.3.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
|
|
62
|
+
mcp_ticketer-0.3.3.dist-info/RECORD,,
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
mcp_ticketer/__init__.py,sha256=Xx4WaprO5PXhVPbYi1L6tBmwmJMkYS-lMyG4ieN6QP0,717
|
|
2
|
-
mcp_ticketer/__version__.py,sha256=hTsAyUEYaGHMTOcqUuCMjSc3y7Sywx_V8sgWryJLRsY,1117
|
|
3
|
-
mcp_ticketer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
mcp_ticketer/adapters/__init__.py,sha256=B5DFllWn23hkhmrLykNO5uMMSdcFuuPHXyLw_jyFzuE,358
|
|
5
|
-
mcp_ticketer/adapters/aitrackdown.py,sha256=stlbge8K6w-EyQkw_vEQNSXQgCOWN5tOlQUgGWZQNMQ,17936
|
|
6
|
-
mcp_ticketer/adapters/github.py,sha256=rhf8yaK9vOGMstvFwddguWnokVIfpasoYMBlyjNg_vY,47335
|
|
7
|
-
mcp_ticketer/adapters/hybrid.py,sha256=UADYZLc_UNw0xHPSbgguBNzvUCnuYn12Qi9ea-zdlMk,19086
|
|
8
|
-
mcp_ticketer/adapters/jira.py,sha256=IoyMaznYE7NliaNGv-I_q2UodUS6JhOllLP1gUEXThs,35375
|
|
9
|
-
mcp_ticketer/adapters/linear.py,sha256=fcQ9s_V7IgP4z2K12lbWXYHUVs1avu1uzUzDCK2eEg4,552
|
|
10
|
-
mcp_ticketer/adapters/linear/__init__.py,sha256=dOPx6caymloIsdyjxS33E09gfPQS6kprisDWwOT2-bE,735
|
|
11
|
-
mcp_ticketer/adapters/linear/adapter.py,sha256=emvjHU-NSFVdxS7lxRjcTv6QNxn26-8RbZNg-x-z5xE,26641
|
|
12
|
-
mcp_ticketer/adapters/linear/client.py,sha256=6IKgYRNy0GF6MhXwxaEBeBE2FM-d1WfhOQ43Mhj0-3s,8871
|
|
13
|
-
mcp_ticketer/adapters/linear/mappers.py,sha256=96euA9TuOTEWEPDKvixjYHb82Ha1zD6gxuo9VsLT2wA,9636
|
|
14
|
-
mcp_ticketer/adapters/linear/queries.py,sha256=chcHCHqvyQbKHPp9wWHGo3HdUGV_6RHNdRadP2pZkVQ,7112
|
|
15
|
-
mcp_ticketer/adapters/linear/types.py,sha256=VuGPu1Z5jGHtbI2zkCyL5YFnwQNukGW-UV72k6zF0p4,8097
|
|
16
|
-
mcp_ticketer/cache/__init__.py,sha256=Xcd-cKnt-Cx7jBzvfzUUUPaGkmyXFi5XUFWw3Z4b7d4,138
|
|
17
|
-
mcp_ticketer/cache/memory.py,sha256=2yBqGi9i0SanlUhJoOC7nijWjoMa3_ntPe-V-AV-LfU,5042
|
|
18
|
-
mcp_ticketer/cli/__init__.py,sha256=l9Q8iKmfGkTu0cssHBVqNZTsL4eAtFzOB25AED_0G6g,89
|
|
19
|
-
mcp_ticketer/cli/adapter_diagnostics.py,sha256=t7RyesBRSyJBoVvft2scdNRcugJDIWvqYS9NszPV5ok,14820
|
|
20
|
-
mcp_ticketer/cli/auggie_configure.py,sha256=MXKzLtqe3K_UTQ2GacHAWbvf_B0779KL325smiAKE0Q,8212
|
|
21
|
-
mcp_ticketer/cli/codex_configure.py,sha256=xDppHouT6_-cYXswyAggoPX5bSlRXMvCoM_x9PQ-42A,9086
|
|
22
|
-
mcp_ticketer/cli/configure.py,sha256=BsA_pSHQMQS0t1bJO_wMM8LWsd5sWJDASjEPRHvwC18,16198
|
|
23
|
-
mcp_ticketer/cli/diagnostics.py,sha256=AC7cMQHVWdHfrYH2Y1tkhmRezM2-mID5E_Dhfil7F3U,28923
|
|
24
|
-
mcp_ticketer/cli/discover.py,sha256=AF_qlQc1Oo0UkWayoF5pmRChS5J3fJjH6f2YZzd_k8w,13188
|
|
25
|
-
mcp_ticketer/cli/gemini_configure.py,sha256=ZNSA1lBW-itVToza-JxW95Po7daVXKiZAh7lp6pmXMU,9343
|
|
26
|
-
mcp_ticketer/cli/linear_commands.py,sha256=b5v4c9uBNPwj_vdy314JkLZbyC1fXU6IcY2VoG0z7gI,17193
|
|
27
|
-
mcp_ticketer/cli/main.py,sha256=blViBOtv9HbRUkuAPlb7CstyH3nt90vxgEHIZcdGls8,73130
|
|
28
|
-
mcp_ticketer/cli/mcp_configure.py,sha256=RzV50UjXgOmvMp-9S0zS39psuvjffVByaMrqrUaAGAM,9594
|
|
29
|
-
mcp_ticketer/cli/migrate_config.py,sha256=MYsr_C5ZxsGg0P13etWTWNrJ_lc6ElRCkzfQADYr3DM,5956
|
|
30
|
-
mcp_ticketer/cli/queue_commands.py,sha256=mm-3H6jmkUGJDyU_E46o9iRpek8tvFCm77F19OtHiZI,7884
|
|
31
|
-
mcp_ticketer/cli/simple_health.py,sha256=oLAaSiVrBtdPCZyoHa1YHEoLG58QaupfuC-kPWRubdM,8013
|
|
32
|
-
mcp_ticketer/cli/utils.py,sha256=bGoLcqsNsv7YMjVeWc9tlqKQC5zeOmWZp7wEfe0JfzM,22964
|
|
33
|
-
mcp_ticketer/core/__init__.py,sha256=eXovsaJymQRP2AwOBuOy6mFtI3I68D7gGenZ5V-IMqo,349
|
|
34
|
-
mcp_ticketer/core/adapter.py,sha256=q64LxOInIno7EIbmuxItf8KEsd-g9grCs__Z4uwZHto,10273
|
|
35
|
-
mcp_ticketer/core/config.py,sha256=hvn8RoN2BSmYzESKqCvcpKleX0PrGiHVQ5v35nX12Mc,19241
|
|
36
|
-
mcp_ticketer/core/env_discovery.py,sha256=m2x3K8hrd0_nzmSGZn5EYUnED7MI2qxcWHTp6ns880o,19970
|
|
37
|
-
mcp_ticketer/core/env_loader.py,sha256=fX8EpHcAJxxhPJ-XY5BD8HlLs-Y9jdlQ24Qtt5ylBNo,12032
|
|
38
|
-
mcp_ticketer/core/exceptions.py,sha256=78tzV3Muc7E_UhEIByF0NtsPe1I0lFVrbpdDNX56kQg,3737
|
|
39
|
-
mcp_ticketer/core/http_client.py,sha256=s5ikMiwEJ8TJjNn73wu3gv3OdAtyBEpAqPnSroRMW2k,13971
|
|
40
|
-
mcp_ticketer/core/mappers.py,sha256=1aG1jFsHTCwmGRVgOlXW-VOSTGzc86gv7qjDfiR1ups,17462
|
|
41
|
-
mcp_ticketer/core/models.py,sha256=a_2AbL3NlN0pfdZad-hXus_zb4bSi9zISHcsNYl0sng,12486
|
|
42
|
-
mcp_ticketer/core/project_config.py,sha256=yYxlgxjcEPeOwx-b-SXFpe0k9pW9xzBRAK72PsItG-o,23346
|
|
43
|
-
mcp_ticketer/core/registry.py,sha256=ShYLDPE62KFJpB0kj_zFyQzRxSH3LkQEEuo1jaakb1k,3483
|
|
44
|
-
mcp_ticketer/mcp/__init__.py,sha256=Y05eTzsPk0wH8yKNIM-ekpGjgSDO0bQr0EME-vOP4GE,123
|
|
45
|
-
mcp_ticketer/mcp/server.py,sha256=PCNerYqLMq5et3ZYAIdd_q_-4LGLBhDuvPAYTuWxDiQ,81351
|
|
46
|
-
mcp_ticketer/queue/__init__.py,sha256=1YIaCpZpFqPcqvDEQXiEvDLiw94DXRdCJkBaVIFQrms,231
|
|
47
|
-
mcp_ticketer/queue/__main__.py,sha256=gc_tE9NUdK07OJfTZuD4t6KeBD_vxFQIhknGTQUG_jk,109
|
|
48
|
-
mcp_ticketer/queue/health_monitor.py,sha256=aQrlBzfbLWu8-fV2b5CuHs4oqyTqGGcntKIHM3r-dDI,11844
|
|
49
|
-
mcp_ticketer/queue/manager.py,sha256=BupBsftxKxeThDWFU96vBsEp4iUXhht7FFbeV0ikltI,10182
|
|
50
|
-
mcp_ticketer/queue/queue.py,sha256=jSAkYNEIbNH1cbYuF8s6eFuZmXqn8WHXx3mbfMU2Ud8,17131
|
|
51
|
-
mcp_ticketer/queue/run_worker.py,sha256=F7anuhdkgZF9lXZntHuJ7rEzuEkAfAZO1qvGh3R57bw,1033
|
|
52
|
-
mcp_ticketer/queue/ticket_registry.py,sha256=k8FYg2cFYsI4POb94-o-fTrIVr-ttfi60r0O5YhJYck,15321
|
|
53
|
-
mcp_ticketer/queue/worker.py,sha256=zXJpyhRJ99be0VLaez3YPtC9OU17vVNu5qhr1dCGaLg,19992
|
|
54
|
-
mcp_ticketer-0.3.1.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
|
|
55
|
-
mcp_ticketer-0.3.1.dist-info/METADATA,sha256=7MkHCRw1QYtKKRfHVQ2oUMW3syEXGilHV5y-Ooud4xQ,13219
|
|
56
|
-
mcp_ticketer-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
57
|
-
mcp_ticketer-0.3.1.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
|
|
58
|
-
mcp_ticketer-0.3.1.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
|
|
59
|
-
mcp_ticketer-0.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|