claude-code-tools 1.25.3__tar.gz → 1.25.5__tar.gz
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.
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/PKG-INFO +1 -1
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/__init__.py +1 -1
- claude_code_tools-1.25.5/claude_code_tools/helper_sessions.py +121 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/resolve_session.py +3 -1
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/pyproject.toml +2 -2
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/.gitignore +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/LICENSE +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/README.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/action_rpc.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/__init__.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/backends.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/config.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/convert.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/discord_bot.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/locking.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/paths.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/registry.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/store.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/tmux.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/trust.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/aichat.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/__init__.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/__main__.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/cache.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/detect.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/model.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/render.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/amux/scan.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/claude_continue.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/cli_passthrough.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_app_server_rpc.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_continue.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_callback.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_fingerprint.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_generation.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_legacy.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_models.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_process.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_reservation.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_resume.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_retry.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_reuse.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_state.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_supervisor.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_worker.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/config.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/csv2gsheet.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/delete_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/dotenv_vault.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/env_safe.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_all.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_claude_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_codex_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_claude_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_codex_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_original_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_trimmed_sessions.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/fix_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/gdoc2docx.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/gdoc2md.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/github_wake.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/github_watch_daemon.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/github_watch_store.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/gsheet2csv.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/issue_reply_delivery.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/legacy_session_wrappers.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/md2gdoc.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/move_account.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/__init__.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/hooks.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/migrations.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/models.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/prompt_detect.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/store.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/watcher.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/node_menu_ui.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_claude_noise.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_claude_to_codex.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_codex_flatten.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_codex_to_claude.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_render.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_service.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/resolve_session_names.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/resolve_session_render.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/search_index.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_cli_resolution.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_lineage.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_menu.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_menu_cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_resolution.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_selection.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_utils.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/smart_trim.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/smart_trim_core.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_cli_controller.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_execution_helpers.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_remote_controller.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_in_place.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_session.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_session_claude.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_session_codex.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_contract.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_formatting.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_identity_policy.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_manifest.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_projection.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_rendering.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_snapshots.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_store_backends.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_processes.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_runs.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_store_io.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_validation.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/agent-tunnel-spec.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/claude-code-tmux-tutorials.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/dot-zshrc.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/find-claude-session.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/intercom-spec.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/lmsh.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/local-llm-setup.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/tmux-cli-instructions.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/docs/vault-documentation.md +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/hatch_build.py +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/node_ui/action_config.js +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/node_ui/menu.js +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/node_ui/package-lock.json +0 -0
- {claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/node_ui/package.json +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"""Discovery and classification of programmatic helper sessions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from collections.abc import Callable
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import TypeVar
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
ResultT = TypeVar("ResultT")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass(frozen=True)
|
|
16
|
+
class SessionFileSnapshot:
|
|
17
|
+
"""Transcript paths present before a helper fork starts."""
|
|
18
|
+
|
|
19
|
+
directory: Path
|
|
20
|
+
paths: frozenset[Path]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _session_files(directory: Path) -> frozenset[Path]:
|
|
24
|
+
"""Return regular JSONL transcripts directly beneath a directory.
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
directory: Claude project transcript directory.
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
Absolute paths to regular, non-symlink JSONL files.
|
|
31
|
+
"""
|
|
32
|
+
try:
|
|
33
|
+
return frozenset(
|
|
34
|
+
path.absolute()
|
|
35
|
+
for path in directory.glob("*.jsonl")
|
|
36
|
+
if path.is_file() and not path.is_symlink()
|
|
37
|
+
)
|
|
38
|
+
except OSError:
|
|
39
|
+
return frozenset()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def snapshot_session_files(source_session_file: Path) -> SessionFileSnapshot:
|
|
43
|
+
"""Capture sibling transcripts before launching a headless fork.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
source_session_file: Transcript being forked.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
The source directory and its current regular JSONL files.
|
|
50
|
+
"""
|
|
51
|
+
directory = source_session_file.expanduser().absolute().parent
|
|
52
|
+
return SessionFileSnapshot(directory, _session_files(directory))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def is_helper_session(session_file: Path) -> bool:
|
|
56
|
+
"""Return whether a transcript carries explicit helper metadata.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
session_file: Claude transcript to inspect.
|
|
60
|
+
|
|
61
|
+
Returns:
|
|
62
|
+
True only when the first JSON record has ``sessionType=helper``.
|
|
63
|
+
"""
|
|
64
|
+
try:
|
|
65
|
+
with session_file.open(encoding="utf-8") as handle:
|
|
66
|
+
record = json.loads(handle.readline())
|
|
67
|
+
except (OSError, UnicodeError, ValueError, RecursionError):
|
|
68
|
+
return False
|
|
69
|
+
return isinstance(record, dict) and record.get("sessionType") == "helper"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def mark_new_helper_session(
|
|
73
|
+
snapshot: SessionFileSnapshot,
|
|
74
|
+
session_id: str | None = None,
|
|
75
|
+
) -> Path | None:
|
|
76
|
+
"""Mark the exact newly created fork reported by the headless client.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
snapshot: Transcript paths captured before the fork started.
|
|
80
|
+
session_id: Session ID reported by the headless client.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
The marked transcript, or None when the reported target is unavailable.
|
|
84
|
+
"""
|
|
85
|
+
if not session_id or Path(session_id).name != session_id:
|
|
86
|
+
return None
|
|
87
|
+
new_paths = _session_files(snapshot.directory) - snapshot.paths
|
|
88
|
+
candidate = (snapshot.directory / f"{session_id}.jsonl").absolute()
|
|
89
|
+
if candidate not in new_paths:
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
from claude_code_tools.session_utils import mark_session_as_helper
|
|
93
|
+
|
|
94
|
+
return candidate if mark_session_as_helper(candidate) else None
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def run_and_mark_helper_fork(
|
|
98
|
+
source_session_file: Path,
|
|
99
|
+
operation: Callable[[], tuple[ResultT, str | None]],
|
|
100
|
+
) -> ResultT:
|
|
101
|
+
"""Run a headless fork operation and mark its transcript afterward.
|
|
102
|
+
|
|
103
|
+
Marking runs whenever the operation returns an exact session ID, including
|
|
104
|
+
nonzero client results. Raised exceptions and missing IDs safely leave every
|
|
105
|
+
transcript untouched.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
source_session_file: Transcript passed to the headless fork client.
|
|
109
|
+
operation: Blocking operation returning its result and fork session ID.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
The operation's original result.
|
|
113
|
+
"""
|
|
114
|
+
snapshot = snapshot_session_files(source_session_file)
|
|
115
|
+
outcome: tuple[ResultT, str | None] | None = None
|
|
116
|
+
try:
|
|
117
|
+
outcome = operation()
|
|
118
|
+
return outcome[0]
|
|
119
|
+
finally:
|
|
120
|
+
if outcome is not None:
|
|
121
|
+
mark_new_helper_session(snapshot, session_id=outcome[1])
|
|
@@ -11,6 +11,7 @@ from datetime import datetime
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Literal, TextIO
|
|
13
13
|
|
|
14
|
+
from claude_code_tools.helper_sessions import is_helper_session
|
|
14
15
|
from claude_code_tools.resolve_session_names import codex_thread_names
|
|
15
16
|
from claude_code_tools.session_utils import (
|
|
16
17
|
get_claude_home,
|
|
@@ -331,6 +332,7 @@ def enumerate_claude_sessions(home: Path) -> list[SessionRecord]:
|
|
|
331
332
|
eligible = (
|
|
332
333
|
eligible
|
|
333
334
|
and not claude_sessions.is_malformed_session(path)
|
|
335
|
+
and not is_helper_session(path)
|
|
334
336
|
)
|
|
335
337
|
except (OSError, UnicodeError, TypeError, ValueError):
|
|
336
338
|
eligible = False
|
|
@@ -362,6 +364,7 @@ def enumerate_claude_sessions(home: Path) -> list[SessionRecord]:
|
|
|
362
364
|
eligible = (
|
|
363
365
|
eligible
|
|
364
366
|
and not claude_sessions.is_malformed_session(session_file)
|
|
367
|
+
and not is_helper_session(session_file)
|
|
365
368
|
and directory is not None
|
|
366
369
|
)
|
|
367
370
|
except (OSError, UnicodeError, TypeError, ValueError):
|
|
@@ -992,4 +995,3 @@ def resolve(
|
|
|
992
995
|
records=tuple(tagged[:25]),
|
|
993
996
|
match_count=len(tagged),
|
|
994
997
|
)
|
|
995
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "claude-code-tools"
|
|
3
|
-
version = "1.25.
|
|
3
|
+
version = "1.25.5"
|
|
4
4
|
description = "Collection of tools for working with Claude Code"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -113,7 +113,7 @@ markers = [
|
|
|
113
113
|
|
|
114
114
|
[tool.commitizen]
|
|
115
115
|
name = "cz_conventional_commits"
|
|
116
|
-
version = "1.25.
|
|
116
|
+
version = "1.25.5"
|
|
117
117
|
tag_format = "v$version"
|
|
118
118
|
version_files = [
|
|
119
119
|
"pyproject.toml:version",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/__init__.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/backends.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/config.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/convert.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/discord_bot.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/locking.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/paths.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/registry.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/store.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/tmux.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/agent_tunnel/trust.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_app_server_rpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_callback.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_fingerprint.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_generation.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_legacy.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_models.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_process.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_reservation.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_resume.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_retry.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_reuse.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_state.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_supervisor.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/codex_server_worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_claude_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/export_codex_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_claude_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_codex_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_original_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/find_trimmed_sessions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/github_watch_daemon.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/github_watch_store.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/issue_reply_delivery.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/legacy_session_wrappers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/msg/prompt_detect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_claude_noise.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_claude_to_codex.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_codex_flatten.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/port_codex_to_claude.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/resolve_session_names.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/resolve_session_render.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_cli_resolution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_resolution.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/session_selection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_cli_controller.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_execution_helpers.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/tmux_remote_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_session_claude.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/trim_session_codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_contract.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_formatting.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_manifest.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_projection.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_rendering.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_cli_snapshots.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_processes.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_store_io.py
RENAMED
|
File without changes
|
{claude_code_tools-1.25.3 → claude_code_tools-1.25.5}/claude_code_tools/workflow_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|