mcp-ticketer 0.1.30__py3-none-any.whl → 0.1.31__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/core/config.py +93 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/METADATA +1 -1
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/RECORD +8 -8
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/WHEEL +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/entry_points.txt +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/licenses/LICENSE +0 -0
- {mcp_ticketer-0.1.30.dist-info → mcp_ticketer-0.1.31.dist-info}/top_level.txt +0 -0
mcp_ticketer/__version__.py
CHANGED
mcp_ticketer/core/config.py
CHANGED
|
@@ -283,6 +283,10 @@ class ConfigurationManager:
|
|
|
283
283
|
# Load from first available config file
|
|
284
284
|
config_data = self._load_config_file(self._config_file_paths[0])
|
|
285
285
|
logger.info(f"Loaded configuration from: {self._config_file_paths[0]}")
|
|
286
|
+
else:
|
|
287
|
+
# No config file found - try environment discovery
|
|
288
|
+
logger.info("No configuration file found, attempting environment discovery")
|
|
289
|
+
config_data = self._discover_from_environment()
|
|
286
290
|
|
|
287
291
|
# Parse adapter configurations
|
|
288
292
|
if "adapters" in config_data:
|
|
@@ -328,6 +332,95 @@ class ConfigurationManager:
|
|
|
328
332
|
logger.error(f"Error loading config file {config_path}: {e}")
|
|
329
333
|
return {}
|
|
330
334
|
|
|
335
|
+
def _discover_from_environment(self) -> dict[str, Any]:
|
|
336
|
+
"""Discover configuration from environment variables."""
|
|
337
|
+
try:
|
|
338
|
+
from .env_discovery import EnvironmentDiscovery
|
|
339
|
+
|
|
340
|
+
discovery = EnvironmentDiscovery()
|
|
341
|
+
discovered = discovery.discover_all()
|
|
342
|
+
|
|
343
|
+
if not discovered.adapters:
|
|
344
|
+
logger.info("No adapters discovered from environment variables")
|
|
345
|
+
# Return minimal config with aitrackdown as fallback
|
|
346
|
+
return {
|
|
347
|
+
"adapters": {
|
|
348
|
+
"aitrackdown": {
|
|
349
|
+
"type": "aitrackdown",
|
|
350
|
+
"enabled": True,
|
|
351
|
+
"base_path": str(Path.home() / ".mcp-ticketer" / ".aitrackdown")
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"default_adapter": "aitrackdown"
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
# Convert discovered adapters to config format
|
|
358
|
+
config_data = {
|
|
359
|
+
"adapters": {},
|
|
360
|
+
"default_adapter": None
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
for adapter in discovered.adapters:
|
|
364
|
+
adapter_config = {
|
|
365
|
+
"type": adapter.type.value,
|
|
366
|
+
"enabled": True
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
# Add adapter-specific configuration
|
|
370
|
+
if adapter.type.value == "linear":
|
|
371
|
+
adapter_config.update({
|
|
372
|
+
"api_key": adapter.credentials.get("api_key"),
|
|
373
|
+
"team_id": adapter.credentials.get("team_id"),
|
|
374
|
+
"project_id": adapter.credentials.get("project_id")
|
|
375
|
+
})
|
|
376
|
+
elif adapter.type.value == "github":
|
|
377
|
+
adapter_config.update({
|
|
378
|
+
"token": adapter.credentials.get("token"),
|
|
379
|
+
"repo": adapter.credentials.get("repo"),
|
|
380
|
+
"owner": adapter.credentials.get("owner")
|
|
381
|
+
})
|
|
382
|
+
elif adapter.type.value == "jira":
|
|
383
|
+
adapter_config.update({
|
|
384
|
+
"server": adapter.credentials.get("server"),
|
|
385
|
+
"email": adapter.credentials.get("email"),
|
|
386
|
+
"api_token": adapter.credentials.get("api_token"),
|
|
387
|
+
"project_key": adapter.credentials.get("project_key")
|
|
388
|
+
})
|
|
389
|
+
|
|
390
|
+
config_data["adapters"][adapter.name] = adapter_config
|
|
391
|
+
|
|
392
|
+
# Set first discovered adapter as default
|
|
393
|
+
if config_data["default_adapter"] is None:
|
|
394
|
+
config_data["default_adapter"] = adapter.name
|
|
395
|
+
|
|
396
|
+
logger.info(f"Discovered {len(config_data['adapters'])} adapter(s) from environment")
|
|
397
|
+
return config_data
|
|
398
|
+
|
|
399
|
+
except ImportError:
|
|
400
|
+
logger.warning("Environment discovery not available, using aitrackdown fallback")
|
|
401
|
+
return {
|
|
402
|
+
"adapters": {
|
|
403
|
+
"aitrackdown": {
|
|
404
|
+
"type": "aitrackdown",
|
|
405
|
+
"enabled": True,
|
|
406
|
+
"base_path": str(Path.home() / ".mcp-ticketer" / ".aitrackdown")
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
"default_adapter": "aitrackdown"
|
|
410
|
+
}
|
|
411
|
+
except Exception as e:
|
|
412
|
+
logger.error(f"Environment discovery failed: {e}")
|
|
413
|
+
return {
|
|
414
|
+
"adapters": {
|
|
415
|
+
"aitrackdown": {
|
|
416
|
+
"type": "aitrackdown",
|
|
417
|
+
"enabled": True,
|
|
418
|
+
"base_path": str(Path.home() / ".mcp-ticketer" / ".aitrackdown")
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"default_adapter": "aitrackdown"
|
|
422
|
+
}
|
|
423
|
+
|
|
331
424
|
def get_config(self) -> AppConfig:
|
|
332
425
|
"""Get the current configuration."""
|
|
333
426
|
if self._config is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-ticketer
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.31
|
|
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,5 +1,5 @@
|
|
|
1
1
|
mcp_ticketer/__init__.py,sha256=Xx4WaprO5PXhVPbYi1L6tBmwmJMkYS-lMyG4ieN6QP0,717
|
|
2
|
-
mcp_ticketer/__version__.py,sha256=
|
|
2
|
+
mcp_ticketer/__version__.py,sha256=FF4HV-lsroMPtYJb5y6GRAhnAUrJmzbKonXKGSwOiL4,1118
|
|
3
3
|
mcp_ticketer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
mcp_ticketer/adapters/__init__.py,sha256=B5DFllWn23hkhmrLykNO5uMMSdcFuuPHXyLw_jyFzuE,358
|
|
5
5
|
mcp_ticketer/adapters/aitrackdown.py,sha256=stlbge8K6w-EyQkw_vEQNSXQgCOWN5tOlQUgGWZQNMQ,17936
|
|
@@ -24,7 +24,7 @@ mcp_ticketer/cli/simple_health.py,sha256=FIMHbrSNHpNJHXx7wtH8HzQXmPlcF9HQE9ngxTb
|
|
|
24
24
|
mcp_ticketer/cli/utils.py,sha256=2ptUrp2ELZsox0kSxAI5DFrHonOU999qh4MxbLv6VBQ,21155
|
|
25
25
|
mcp_ticketer/core/__init__.py,sha256=eXovsaJymQRP2AwOBuOy6mFtI3I68D7gGenZ5V-IMqo,349
|
|
26
26
|
mcp_ticketer/core/adapter.py,sha256=q64LxOInIno7EIbmuxItf8KEsd-g9grCs__Z4uwZHto,10273
|
|
27
|
-
mcp_ticketer/core/config.py,sha256=
|
|
27
|
+
mcp_ticketer/core/config.py,sha256=A3K2JXn65qwpI80_J05oA-6DRjcONi6ZqemU02O4L8U,19120
|
|
28
28
|
mcp_ticketer/core/env_discovery.py,sha256=wKp2Pi5vQMGOTrM1690IBv_eoABly-pD8ah7n1zSWDc,17710
|
|
29
29
|
mcp_ticketer/core/http_client.py,sha256=s5ikMiwEJ8TJjNn73wu3gv3OdAtyBEpAqPnSroRMW2k,13971
|
|
30
30
|
mcp_ticketer/core/mappers.py,sha256=1aG1jFsHTCwmGRVgOlXW-VOSTGzc86gv7qjDfiR1ups,17462
|
|
@@ -41,9 +41,9 @@ mcp_ticketer/queue/queue.py,sha256=jSAkYNEIbNH1cbYuF8s6eFuZmXqn8WHXx3mbfMU2Ud8,1
|
|
|
41
41
|
mcp_ticketer/queue/run_worker.py,sha256=_IBezjvhbJJ7gn0evTBIMbSPjvfFZwxEdT-1DLo_bRk,799
|
|
42
42
|
mcp_ticketer/queue/ticket_registry.py,sha256=k8FYg2cFYsI4POb94-o-fTrIVr-ttfi60r0O5YhJYck,15321
|
|
43
43
|
mcp_ticketer/queue/worker.py,sha256=TLXXXTAQT1k9Oiw2WjSd8bzT3rr8TQ8NLt9JBovGQEA,18679
|
|
44
|
-
mcp_ticketer-0.1.
|
|
45
|
-
mcp_ticketer-0.1.
|
|
46
|
-
mcp_ticketer-0.1.
|
|
47
|
-
mcp_ticketer-0.1.
|
|
48
|
-
mcp_ticketer-0.1.
|
|
49
|
-
mcp_ticketer-0.1.
|
|
44
|
+
mcp_ticketer-0.1.31.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
|
|
45
|
+
mcp_ticketer-0.1.31.dist-info/METADATA,sha256=JR2x-cFldb4sWX5lKGGD3sLTWFriAV2LXjboPR9tKUY,13191
|
|
46
|
+
mcp_ticketer-0.1.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
47
|
+
mcp_ticketer-0.1.31.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
|
|
48
|
+
mcp_ticketer-0.1.31.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
|
|
49
|
+
mcp_ticketer-0.1.31.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|