claude-code-tools 1.27.0__tar.gz → 1.27.1__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.27.0 → claude_code_tools-1.27.1}/PKG-INFO +1 -1
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/__init__.py +1 -1
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/cli.py +35 -1
- claude_code_tools-1.27.1/claude_code_tools/amux/filters.py +67 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/pyproject.toml +2 -2
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/.gitignore +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/LICENSE +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/README.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/action_rpc.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/__init__.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/backends.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/cli.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/config.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/convert.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/discord_bot.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/locking.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/paths.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/registry.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/store.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/tmux.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/trust.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/aichat.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/__init__.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/__main__.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/activity.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/cache.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/detect.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/model.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/render.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/amux/scan.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/claude_continue.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/cli_passthrough.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_app_server_rpc.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_continue.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_callback.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_cli.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_fingerprint.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_generation.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_legacy.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_models.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_process.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_reservation.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_resume.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_retry.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_reuse.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_state.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_supervisor.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_wait.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_worker.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/config.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/csv2gsheet.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/delete_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/dotenv_vault.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/env_safe.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_all.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_claude_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_codex_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_claude_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_codex_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_original_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_trimmed_sessions.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/fix_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/gdoc2docx.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/gdoc2md.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/github_wake.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/github_watch_daemon.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/github_watch_store.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/gsheet2csv.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/helper_sessions.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/issue_reply_delivery.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/legacy_session_wrappers.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/md2gdoc.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/move_account.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/__init__.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/cli.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/hooks.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/migrations.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/models.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/prompt_detect.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/store.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/watcher.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/node_menu_ui.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_claude_noise.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_claude_to_codex.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_codex_flatten.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_codex_to_claude.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_render.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_service.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/resolve_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/resolve_session_names.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/resolve_session_render.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/search_index.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_cli_resolution.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_lineage.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_menu.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_menu_cli.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_resolution.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_selection.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_utils.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/smart_trim.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/smart_trim_core.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_cli_controller.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_execution_helpers.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_remote_controller.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_in_place.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_session.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_session_claude.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_session_codex.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_contract.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_formatting.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_identity_policy.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_manifest.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_projection.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_rendering.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_snapshots.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_store_backends.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_processes.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_runs.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_store_io.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_validation.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/agent-tunnel-spec.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/claude-code-tmux-tutorials.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/dot-zshrc.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/find-claude-session.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/intercom-spec.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/lmsh.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/local-llm-setup.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/tmux-cli-instructions.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/docs/vault-documentation.md +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/hatch_build.py +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/node_ui/action_config.js +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/node_ui/menu.js +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/node_ui/package-lock.json +0 -0
- {claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/node_ui/package.json +0 -0
|
@@ -20,6 +20,7 @@ import subprocess
|
|
|
20
20
|
import sys
|
|
21
21
|
|
|
22
22
|
from . import cache, render, scan
|
|
23
|
+
from .filters import directory_argument, select_agents
|
|
23
24
|
from .model import Agent
|
|
24
25
|
|
|
25
26
|
_FZF_HEADER = (
|
|
@@ -46,6 +47,9 @@ def _agents_for_display(max_age: float) -> tuple[list[Agent], bool]:
|
|
|
46
47
|
|
|
47
48
|
def _display(agents: list[Agent], args: argparse.Namespace) -> list[Agent]:
|
|
48
49
|
"""Refresh ages even for cached rows, then apply the requested view."""
|
|
50
|
+
agents = select_agents(
|
|
51
|
+
agents, getattr(args, "repo", None), getattr(args, "directory", None),
|
|
52
|
+
)
|
|
49
53
|
for agent in agents:
|
|
50
54
|
agent.classify_inactivity(args.dormant_hours)
|
|
51
55
|
if args.dormant:
|
|
@@ -112,6 +116,14 @@ def cmd_pick(args: argparse.Namespace) -> int:
|
|
|
112
116
|
f" --dormant-hours {args.dormant_hours} --sort {args.sort}"
|
|
113
117
|
+ (" --dormant" if args.dormant else "")
|
|
114
118
|
)
|
|
119
|
+
# Keep user values out of fzf's action/placeholder parser as well as the shell.
|
|
120
|
+
reload_env = dict(os.environ)
|
|
121
|
+
if args.repo is not None:
|
|
122
|
+
reload_env["AMUX_RELOAD_REPO"] = args.repo
|
|
123
|
+
view_flags += ' --repo="$AMUX_RELOAD_REPO"'
|
|
124
|
+
if args.directory is not None:
|
|
125
|
+
reload_env["AMUX_RELOAD_DIR"] = args.directory
|
|
126
|
+
view_flags += ' --dir="$AMUX_RELOAD_DIR"'
|
|
115
127
|
binds = [
|
|
116
128
|
f"ctrl-r:reload({self_cmd} rows --refresh{view_flags})",
|
|
117
129
|
# Opening on cached rows is what makes this instant; refresh the
|
|
@@ -153,6 +165,7 @@ def cmd_pick(args: argparse.Namespace) -> int:
|
|
|
153
165
|
input=render.picker_lines(agents),
|
|
154
166
|
stdout=subprocess.PIPE,
|
|
155
167
|
text=True,
|
|
168
|
+
env=reload_env,
|
|
156
169
|
)
|
|
157
170
|
if proc.returncode != 0 or not proc.stdout.strip():
|
|
158
171
|
return 0
|
|
@@ -215,6 +228,14 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
215
228
|
help="seconds a cached scan stays usable (default: 30)",
|
|
216
229
|
)
|
|
217
230
|
for command in (pick, lst, rows):
|
|
231
|
+
command.add_argument(
|
|
232
|
+
"--repo", "--project", dest="repo", metavar="NAME",
|
|
233
|
+
help="exact repository name, including linked Git worktrees",
|
|
234
|
+
)
|
|
235
|
+
command.add_argument(
|
|
236
|
+
"--dir", dest="directory", type=directory_argument, metavar="PATH",
|
|
237
|
+
help="only agents in this directory or its subdirectories",
|
|
238
|
+
)
|
|
218
239
|
command.add_argument(
|
|
219
240
|
"--dormant", action="store_true",
|
|
220
241
|
help="show waiting agents with old known submitted input only",
|
|
@@ -238,7 +259,20 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
238
259
|
# only ["pick"] -- reparsing dropped global options, so `amux --max-age 0`
|
|
239
260
|
# silently used the 30s default.
|
|
240
261
|
known = {"pick", "list", "scan", "rows"}
|
|
241
|
-
|
|
262
|
+
value_options = {
|
|
263
|
+
"--repo", "--project", "--dir", "--max-age", "--dormant-hours", "--sort",
|
|
264
|
+
}
|
|
265
|
+
tokens = iter(raw)
|
|
266
|
+
explicit_command = False
|
|
267
|
+
for token in tokens:
|
|
268
|
+
if token in value_options:
|
|
269
|
+
next(tokens, None)
|
|
270
|
+
elif token in known | {"-h", "--help"}:
|
|
271
|
+
explicit_command = True
|
|
272
|
+
break
|
|
273
|
+
elif not token.startswith("-"):
|
|
274
|
+
break
|
|
275
|
+
if not explicit_command:
|
|
242
276
|
raw.insert(0, "pick")
|
|
243
277
|
args = parser.parse_args(raw)
|
|
244
278
|
if not scan.tmux_available():
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""Repository and directory selection for Amux display views."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from .model import Agent
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def directory_argument(value: str) -> str:
|
|
12
|
+
"""Resolve an existing directory supplied on the command line."""
|
|
13
|
+
try:
|
|
14
|
+
path = Path(value).expanduser().resolve()
|
|
15
|
+
if path.is_dir():
|
|
16
|
+
return str(path)
|
|
17
|
+
except (OSError, RuntimeError) as exc:
|
|
18
|
+
raise argparse.ArgumentTypeError(str(exc)) from exc
|
|
19
|
+
raise argparse.ArgumentTypeError(f"not a directory: {value!r}")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def repository_name(cwd: str) -> str:
|
|
23
|
+
"""Find the shared repository's directory name, including linked worktrees."""
|
|
24
|
+
if not cwd:
|
|
25
|
+
return ""
|
|
26
|
+
try:
|
|
27
|
+
path = Path(cwd).resolve()
|
|
28
|
+
for root in (path, *path.parents):
|
|
29
|
+
marker = root / ".git"
|
|
30
|
+
if marker.is_dir():
|
|
31
|
+
return root.name
|
|
32
|
+
if marker.is_file():
|
|
33
|
+
pointer = marker.read_text().strip()
|
|
34
|
+
if not pointer.startswith("gitdir: "):
|
|
35
|
+
return ""
|
|
36
|
+
git_dir = (root / pointer.removeprefix("gitdir: ")).resolve()
|
|
37
|
+
common_file = git_dir / "commondir"
|
|
38
|
+
if not common_file.is_file():
|
|
39
|
+
return root.name
|
|
40
|
+
common = (git_dir / common_file.read_text().strip()).resolve()
|
|
41
|
+
return common.parent.name if common.name == ".git" else common.name
|
|
42
|
+
except (OSError, RuntimeError, UnicodeError):
|
|
43
|
+
return ""
|
|
44
|
+
return ""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def select_agents(
|
|
48
|
+
agents: list[Agent], repo: str | None, directory: str | None,
|
|
49
|
+
) -> list[Agent]:
|
|
50
|
+
"""Apply exact repository-name and directory-subtree filters together."""
|
|
51
|
+
selected = []
|
|
52
|
+
names: dict[str, str] = {}
|
|
53
|
+
for agent in agents:
|
|
54
|
+
if repo is not None and agent.repo != repo:
|
|
55
|
+
if agent.cwd not in names:
|
|
56
|
+
names[agent.cwd] = repository_name(agent.cwd)
|
|
57
|
+
if names[agent.cwd] != repo:
|
|
58
|
+
continue
|
|
59
|
+
if directory:
|
|
60
|
+
if not agent.cwd:
|
|
61
|
+
continue
|
|
62
|
+
try:
|
|
63
|
+
Path(agent.cwd).resolve().relative_to(directory)
|
|
64
|
+
except (ValueError, OSError, RuntimeError):
|
|
65
|
+
continue
|
|
66
|
+
selected.append(agent)
|
|
67
|
+
return selected
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "claude-code-tools"
|
|
3
|
-
version = "1.27.
|
|
3
|
+
version = "1.27.1"
|
|
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.27.
|
|
116
|
+
version = "1.27.1"
|
|
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.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/__init__.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/backends.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/config.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/convert.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/discord_bot.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/locking.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/paths.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/registry.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/store.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/agent_tunnel/tmux.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/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.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_app_server_rpc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_callback.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_fingerprint.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_generation.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_legacy.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_models.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_process.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_reservation.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_resume.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_retry.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_reuse.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_state.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_supervisor.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/codex_server_wait.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/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.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_claude_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/export_codex_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_claude_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_codex_session.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/find_original_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/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.27.0 → claude_code_tools-1.27.1}/claude_code_tools/github_watch_daemon.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/github_watch_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/issue_reply_delivery.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/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.27.0 → claude_code_tools-1.27.1}/claude_code_tools/msg/prompt_detect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_claude_noise.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_claude_to_codex.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_codex_flatten.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/port_codex_to_claude.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/resolve_session_names.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/resolve_session_render.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_cli_resolution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_resolution.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/session_selection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_cli_controller.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_execution_helpers.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/tmux_remote_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_session_claude.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/trim_session_codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_contract.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_formatting.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_manifest.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_projection.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_rendering.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_cli_snapshots.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_processes.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/claude_code_tools/workflow_store_io.py
RENAMED
|
File without changes
|
{claude_code_tools-1.27.0 → claude_code_tools-1.27.1}/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
|