claude-team-mcp 0.8.0__py3-none-any.whl → 0.8.2__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.
@@ -7,7 +7,6 @@ Provides a TerminalBackend implementation backed by tmux CLI commands.
7
7
  from __future__ import annotations
8
8
 
9
9
  import asyncio
10
- import hashlib
11
10
  import re
12
11
  import subprocess
13
12
  import uuid
@@ -46,7 +45,6 @@ ISSUE_ID_PATTERN = re.compile(r"\b[A-Za-z][A-Za-z0-9]*-[A-Za-z0-9]*\d[A-Za-z0-9]
46
45
  SHELL_READY_MARKER = "CLAUDE_TEAM_READY_7f3a9c"
47
46
  CODEX_PRE_ENTER_DELAY = 0.5
48
47
  TMUX_SESSION_PREFIX = "claude-team"
49
- TMUX_SESSION_HASH_LEN = 8
50
48
  TMUX_SESSION_SLUG_MAX = 32
51
49
  TMUX_SESSION_FALLBACK = "project"
52
50
  TMUX_SESSION_PREFIXED = f"{TMUX_SESSION_PREFIX}-"
@@ -92,15 +90,15 @@ def project_name_from_path(project_path: str | None) -> str | None:
92
90
 
93
91
 
94
92
  def tmux_session_name_for_project(project_path: str | None) -> str:
95
- """Return the per-project tmux session name for a given project path."""
93
+ """Return the per-project tmux session name for a given project path.
94
+
95
+ Worktree paths produce the same session name as their main repository
96
+ since project_name_from_path extracts the project name from the path.
97
+ Session names follow the format: claude-team-{project-slug}
98
+ """
96
99
  project_name = project_name_from_path(project_path) or TMUX_SESSION_FALLBACK
97
100
  slug = _tmux_safe_slug(project_name)
98
- if project_path:
99
- digest_source = project_path
100
- else:
101
- digest_source = uuid.uuid4().hex
102
- digest = hashlib.sha1(digest_source.encode("utf-8")).hexdigest()[:TMUX_SESSION_HASH_LEN]
103
- return f"{TMUX_SESSION_PREFIXED}{slug}-{digest}"
101
+ return f"{TMUX_SESSION_PREFIXED}{slug}"
104
102
 
105
103
 
106
104
  # Determine whether a tmux session is managed by claude-team.
@@ -333,7 +333,7 @@ def create_local_worktree(
333
333
  if bead_id:
334
334
  # Bead-based naming: {bead_id}-{annotation}
335
335
  if annotation:
336
- dir_name = f"{bead_id}-{slugify(annotation)}"
336
+ dir_name = f"{bead_id}-{short_slug(annotation)}"
337
337
  else:
338
338
  dir_name = bead_id
339
339
  else:
@@ -341,7 +341,7 @@ def create_local_worktree(
341
341
  short_uuid = uuid.uuid4().hex[:8]
342
342
  name_slug = slugify(worker_name)
343
343
  if annotation:
344
- dir_name = f"{name_slug}-{short_uuid}-{slugify(annotation)}"
344
+ dir_name = f"{name_slug}-{short_uuid}-{short_slug(annotation)}"
345
345
  else:
346
346
  dir_name = f"{name_slug}-{short_uuid}"
347
347
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-team-mcp
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: MCP server for managing multiple Claude Code sessions via iTerm2
5
5
  Project-URL: Homepage, https://github.com/Martian-Engineering/claude-team
6
6
  Project-URL: Repository, https://github.com/Martian-Engineering/claude-team
@@ -17,7 +17,7 @@ claude_team_mcp/server.py,sha256=Yblf5W2VpYcNitWN-iacF_zHcF35_7DZ-z-bg0MJtbQ,163
17
17
  claude_team_mcp/session_state.py,sha256=DFNPWog7yyc5yF1_lMhDMcBMpCRGi22YRI6IdoIEf0o,46814
18
18
  claude_team_mcp/subprocess_cache.py,sha256=6Q1NIMn2X5_75S4s_a9iPBka-UCz6RW0EMxPSPEaLxo,3612
19
19
  claude_team_mcp/worker_prompt.py,sha256=NvzUrR6Zqjp8HuL-xOeAncdvACHbyN7O0nISWyySHq4,15771
20
- claude_team_mcp/worktree.py,sha256=DWC4wOb6JH278wCdDE1-UKnIt6zpuHNsbUx8HSyLl1w,19096
20
+ claude_team_mcp/worktree.py,sha256=q05yhIqlpsG9CW-QDRq5SyqC7T3iYYxjLDkUiGX2M-g,19102
21
21
  claude_team_mcp/cli_backends/__init__.py,sha256=uPIiZ0nxzhtunMfdwfWoNmLIUb7YMaWzoaFaECChKFU,1128
22
22
  claude_team_mcp/cli_backends/base.py,sha256=dArm2Yqjzs3smN0JpSGR79e9I_kQYJFgQ8gYpNrmS-o,3923
23
23
  claude_team_mcp/cli_backends/claude.py,sha256=r9CW-JHZ3nVEadjf6W0AQ2Ypt4wGCvqSKczl3cRu0MY,4312
@@ -28,7 +28,7 @@ claude_team_mcp/schemas/codex.py,sha256=KwUkTmD70kQLZvzl366tHAsuwKbtsk86ySTOW6b9
28
28
  claude_team_mcp/terminal_backends/__init__.py,sha256=qH8JHQPiyisO1LPOLq6aHxGMJv_TU04uR_88k6CZw20,1351
29
29
  claude_team_mcp/terminal_backends/base.py,sha256=9GrFDm-Jah8y6DALQrq8dei9UgWeZkWXYbbcrfkFAHA,3202
30
30
  claude_team_mcp/terminal_backends/iterm.py,sha256=A5klhOpzDrZ-636aN1Hlnnfxk4OA-Rz_OuaQi1ABz0Y,9317
31
- claude_team_mcp/terminal_backends/tmux.py,sha256=2wZmKbJOYoAx2AwdA9iWoVrP17i9nDfrznSTGrsq0g4,24546
31
+ claude_team_mcp/terminal_backends/tmux.py,sha256=blMb669GlGjxedOLLu35NmuZpsN74Z4bq1EmMGqO7G0,24512
32
32
  claude_team_mcp/tools/__init__.py,sha256=YPKaGC81WDHouee6MQlVOhk2teI0adYvbo949LCCKd0,1593
33
33
  claude_team_mcp/tools/adopt_worker.py,sha256=P4HlUaKqS5piOh-0Or27h935WRtkfEXtznCZ_cQF1j4,6897
34
34
  claude_team_mcp/tools/annotate_worker.py,sha256=mBo4YMaaaNQxQBduYK1DPA-Ioift-ZQ9tYlBM6S15t8,1639
@@ -48,7 +48,7 @@ claude_team_mcp/utils/__init__.py,sha256=Jyc-N1RXZnMdXLjSgRBB2ih04v-h0woUzZcVYYf
48
48
  claude_team_mcp/utils/constants.py,sha256=FGDHeo0reZ89365fuXJGIl2Y5MFQAoKfWtmYr7UQzhQ,5815
49
49
  claude_team_mcp/utils/errors.py,sha256=kP0MPjLIpEOZkbGAzDxonMFERbsjwfID5VVY5qAR2II,2949
50
50
  claude_team_mcp/utils/worktree_detection.py,sha256=oMGcb7p1jvr7qWs06sxUMTAV8jRialcVqziCTCdW7XU,3251
51
- claude_team_mcp-0.8.0.dist-info/METADATA,sha256=q3pjXtrqgdBpasJSMSEvOimny_-D5rNd6xZu33R-VsY,16020
52
- claude_team_mcp-0.8.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
53
- claude_team_mcp-0.8.0.dist-info/entry_points.txt,sha256=cmk5dmK50RVquExT-k_J72akl3qKIerPpVqfit7kQtQ,53
54
- claude_team_mcp-0.8.0.dist-info/RECORD,,
51
+ claude_team_mcp-0.8.2.dist-info/METADATA,sha256=xihVjYbyF9NHtVtpxFUc_UdbNnLsMIfbQuLKcetgeNo,16020
52
+ claude_team_mcp-0.8.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
53
+ claude_team_mcp-0.8.2.dist-info/entry_points.txt,sha256=cmk5dmK50RVquExT-k_J72akl3qKIerPpVqfit7kQtQ,53
54
+ claude_team_mcp-0.8.2.dist-info/RECORD,,