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.

@@ -1,6 +1,6 @@
1
1
  """Version information for mcp-ticketer package."""
2
2
 
3
- __version__ = "0.1.30"
3
+ __version__ = "0.1.31"
4
4
  __version_info__ = tuple(int(part) for part in __version__.split("."))
5
5
 
6
6
  # Package metadata
@@ -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.30
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=y7yURZVuwtSStGlJ4RI4JrAK3qRSBtOqe64wfkDPASY,1118
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=aC1MAV0nghmkB6BnAEP3aa4DwLob9q6U04eP5xmQx0Y,15181
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.30.dist-info/licenses/LICENSE,sha256=KOVrunjtILSzY-2N8Lqa3-Q8dMaZIG4LrlLTr9UqL08,1073
45
- mcp_ticketer-0.1.30.dist-info/METADATA,sha256=11bfR6cQYqZexr0tCmf4Tvw-vE0A5A1oQmsrK4kqFMM,13191
46
- mcp_ticketer-0.1.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
47
- mcp_ticketer-0.1.30.dist-info/entry_points.txt,sha256=o1IxVhnHnBNG7FZzbFq-Whcs1Djbofs0qMjiUYBLx2s,60
48
- mcp_ticketer-0.1.30.dist-info/top_level.txt,sha256=WnAG4SOT1Vm9tIwl70AbGG_nA217YyV3aWFhxLH2rxw,13
49
- mcp_ticketer-0.1.30.dist-info/RECORD,,
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,,