ctxttools 0.2.0__tar.gz → 0.2.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.
Files changed (28) hide show
  1. {ctxttools-0.2.0/ctxttools.egg-info → ctxttools-0.2.1}/PKG-INFO +40 -6
  2. {ctxttools-0.2.0 → ctxttools-0.2.1}/README.md +39 -5
  3. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/agents.py +367 -22
  4. ctxttools-0.2.1/ctools/ccat.py +233 -0
  5. ctxttools-0.2.1/ctools/ccopy.py +478 -0
  6. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cdir.py +120 -39
  7. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cdu.py +15 -5
  8. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cli.py +3 -3
  9. {ctxttools-0.2.0 → ctxttools-0.2.1/ctxttools.egg-info}/PKG-INFO +40 -6
  10. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/SOURCES.txt +1 -0
  11. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/entry_points.txt +1 -0
  12. {ctxttools-0.2.0 → ctxttools-0.2.1}/pyproject.toml +2 -1
  13. ctxttools-0.2.0/ctools/ccopy.py +0 -317
  14. {ctxttools-0.2.0 → ctxttools-0.2.1}/LICENSE.MIT +0 -0
  15. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/__init__.py +0 -0
  16. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cconnect.py +0 -0
  17. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cextract.py +0 -0
  18. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cgrep.py +0 -0
  19. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/crm.py +0 -0
  20. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/ctools_mcp.py +0 -0
  21. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/filterlib.py +0 -0
  22. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/lib.py +0 -0
  23. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/log.py +0 -0
  24. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/strategy.py +0 -0
  25. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/dependency_links.txt +0 -0
  26. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/requires.txt +0 -0
  27. {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/top_level.txt +0 -0
  28. {ctxttools-0.2.0 → ctxttools-0.2.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ctxttools
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: CLI tools for LLM conversations
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -18,14 +18,47 @@ Dynamic: license-file
18
18
  <p align="center">
19
19
  <img width="500" alt="ctools" src="https://github.com/user-attachments/assets/ee781bbe-6364-44ed-be2d-72114f1e6d8a" /><br/>
20
20
  <a href=https://pypi.org/project/ctxttools><img src=https://badge.fury.io/py/ctxttools.svg/></a>
21
+ <br/><br/><b>Try it now</b><br/>
22
+ <code>uvx --from ctxttools cdir</code>
23
+ <br/><br/><b>Then install it</b><br/>
24
+ <code>uv tool install ctxttools</code>
21
25
  </p>
22
26
 
23
27
  ------
28
+ **ctools** is a suite of simple tools for navigating through the sessions in various agents. It allows you to search your history, transfer conversations, filter them, and even share them among hosts and users through ssh.
24
29
 
25
- Grep through your conversation history in Claude Desktop, Claude Code, Codex, Pi, Hermes, Goose, Kilo, Hermes, FreeBuff, Cline, and omp.
30
+ It supports [Claude Desktop](https://claude.com/download), [Claude Code](https://github.com/anthropics/claude-code), [Codex](https://github.com/openai/codex), [Pi](https://github.com/earendil-works/pi), [Hermes](https://github.com/NousResearch/hermes-agent), [Goose](https://github.com/aaif-goose/goose), [Kilo](https://github.com/Kilo-Org/kilocode), [Hermes](https://github.com/NousResearch/hermes-agent), [FreeBuff](https://github.com/CodebuffAI/freebuff), [Cline](https://github.com/cline/cline), and [omp](https://github.com/can1357/oh-my-pi).
26
31
 
27
- Copy your conversation from one to another. Start in one program, continue in another. using the normal resume syntax.
32
+ Here's an example:
28
33
 
34
+ > I look for mentions of snake game in opencode using cgrep
35
+ <pre>
36
+ $ <b>cgrep</b> "snake game" opencode
37
+ opencode/ses_a1d1a5a4df984ee698cab4a7:1:user: make a simple snake game in python
38
+ opencode/ses_a1d1a5a4df984ee698cab4a7:2:assistant: I'll make a terminal-based snake game using `curses` (standard library, no dependencies).
39
+ opencode/ses_a1d1a5a4df984ee698cab4a7:3:assistant: Done — `snake.py` is a terminal snake game using Python's built-in `curses` module (no dependencies).
40
+ </pre>
41
+
42
+ > cool let's look at the status of that session using cdir
43
+ <pre>
44
+ $ <b>cdir</b> -l opencode/ses_a1d1a5a4df984ee698cab4a7
45
+ ID NAME MODIFIED SIZE MSGS PATH
46
+ ses_a1d1a5a4df984ee698cab4a7 make a simple snake game in python 2026-10-07 16:56 2.7 KB 3 /home/chris/.local/share/opencode
47
+
48
+ 1 session(s)
49
+ </pre>
50
+
51
+ > Alright let's copy that session from opencode into pi!
52
+ <pre>
53
+ $ <b>ccopy</b> opencode/ses_a1d1a5a4df984ee698cab4a7 pi
54
+ Copied 3 message(s) from opencode/ses_a1d1a5a4df984ee698cab4a7 to a new pi session: e357f435-f813-463a-b313-f97f1051f3cb
55
+ Resume it with:
56
+ pi --session e357f435-f813-463a-b313-f97f1051f3cb
57
+ </pre>
58
+
59
+ As you can see, these are unix-friendly tools using simple paradigms that you are already familiar with.
60
+
61
+ ----
29
62
 
30
63
  ### 1. `cgrep` — find it in your past conversations
31
64
 
@@ -51,9 +84,9 @@ Resume it with:
51
84
  claude-code --resume 1a2b3c
52
85
  ```
53
86
 
54
- Your work travels with you. The source is never touched, so it's a true copy. And when the destination is on another machine, it's just `ccopy opencode/ses_abc123 ssh://chris@remote/codex` — it runs over your normal ssh.
87
+ Your work travels with you. The source is never touched, so it's a true copy. And when the destination is on another machine, it's just `ccopy opencode/ses_abc123 ssh://chris@remote/codex` — it pulls the agent's storage over your normal ssh (the remote only needs `sshd` and `tar`, not ctools).
55
88
 
56
- ctools is a set of GNU-style tools for the history your coding agents leave behind. These two are the headline; the rest (`cdir` to list sessions, `cextract` to move concepts, `cconnect` to pipe them live, `cdu` to count tokens, `crm` to prune) are in service of them.
89
+ ctools is a set of GNU-style tools for the history your coding agents leave behind. These two are the headline; the rest (`cdir` to list sessions, `ccat` to read them, `cextract` to move concepts, `cconnect` to pipe them live, `cdu` to count tokens, `crm` to prune) are in service of them.
57
90
 
58
91
  **Works with the agents you already use:** Claude Desktop, Claude Code, Opencode, Kilo, Codex, Pi, Goose, Hermes, Cline, omp (oh-my-pi), and Freebuff (Codebuff).
59
92
 
@@ -63,13 +96,14 @@ ctools is a set of GNU-style tools for the history your coding agents leave behi
63
96
  |------|--------------|------|
64
97
  | `cgrep` | Search conversation content (grep across every agent) | [docs/cgrep.md](docs/cgrep.md) |
65
98
  | `cdir` | List sessions (ls for your history) | [docs/cdir.md](docs/cdir.md) |
99
+ | `ccat` | Print one or more conversations (cat for your history) | [docs/ccat.md](docs/ccat.md) |
66
100
  | `ccopy` | Copy a whole conversation from one agent to a new session in another | [docs/ccopy.md](docs/ccopy.md) |
67
101
  | `cextract` | Extract concepts from a session into files, and inject them back | [docs/cextract.md](docs/cextract.md) |
68
102
  | `cconnect` | Live concept pipelines between sessions | [docs/cconnect.md](docs/cconnect.md) |
69
103
  | `cdu` | Token usage per session (du for context windows) | [docs/cdu.md](docs/cdu.md) |
70
104
  | `crm` | Remove concepts from a session (mdel) | [docs/crm.md](docs/crm.md) |
71
105
 
72
- Every tool takes `--version` and `--verbose` (structured logging). Each tool's full flag reference, output formats, and examples live in its `docs/` page — the table above is just the 30-second version.
106
+ Every tool takes `--version`. The session-mover tools (`ccopy`, `cextract`, `cconnect`, `crm`) also take `--verbose` for structured logging. Each tool's full flag reference, output formats, and examples live in its `docs/` page — the table above is just the 30-second version.
73
107
 
74
108
  ## How it works
75
109
 
@@ -1,14 +1,47 @@
1
1
  <p align="center">
2
2
  <img width="500" alt="ctools" src="https://github.com/user-attachments/assets/ee781bbe-6364-44ed-be2d-72114f1e6d8a" /><br/>
3
3
  <a href=https://pypi.org/project/ctxttools><img src=https://badge.fury.io/py/ctxttools.svg/></a>
4
+ <br/><br/><b>Try it now</b><br/>
5
+ <code>uvx --from ctxttools cdir</code>
6
+ <br/><br/><b>Then install it</b><br/>
7
+ <code>uv tool install ctxttools</code>
4
8
  </p>
5
9
 
6
10
  ------
11
+ **ctools** is a suite of simple tools for navigating through the sessions in various agents. It allows you to search your history, transfer conversations, filter them, and even share them among hosts and users through ssh.
7
12
 
8
- Grep through your conversation history in Claude Desktop, Claude Code, Codex, Pi, Hermes, Goose, Kilo, Hermes, FreeBuff, Cline, and omp.
13
+ It supports [Claude Desktop](https://claude.com/download), [Claude Code](https://github.com/anthropics/claude-code), [Codex](https://github.com/openai/codex), [Pi](https://github.com/earendil-works/pi), [Hermes](https://github.com/NousResearch/hermes-agent), [Goose](https://github.com/aaif-goose/goose), [Kilo](https://github.com/Kilo-Org/kilocode), [Hermes](https://github.com/NousResearch/hermes-agent), [FreeBuff](https://github.com/CodebuffAI/freebuff), [Cline](https://github.com/cline/cline), and [omp](https://github.com/can1357/oh-my-pi).
9
14
 
10
- Copy your conversation from one to another. Start in one program, continue in another. using the normal resume syntax.
15
+ Here's an example:
11
16
 
17
+ > I look for mentions of snake game in opencode using cgrep
18
+ <pre>
19
+ $ <b>cgrep</b> "snake game" opencode
20
+ opencode/ses_a1d1a5a4df984ee698cab4a7:1:user: make a simple snake game in python
21
+ opencode/ses_a1d1a5a4df984ee698cab4a7:2:assistant: I'll make a terminal-based snake game using `curses` (standard library, no dependencies).
22
+ opencode/ses_a1d1a5a4df984ee698cab4a7:3:assistant: Done — `snake.py` is a terminal snake game using Python's built-in `curses` module (no dependencies).
23
+ </pre>
24
+
25
+ > cool let's look at the status of that session using cdir
26
+ <pre>
27
+ $ <b>cdir</b> -l opencode/ses_a1d1a5a4df984ee698cab4a7
28
+ ID NAME MODIFIED SIZE MSGS PATH
29
+ ses_a1d1a5a4df984ee698cab4a7 make a simple snake game in python 2026-10-07 16:56 2.7 KB 3 /home/chris/.local/share/opencode
30
+
31
+ 1 session(s)
32
+ </pre>
33
+
34
+ > Alright let's copy that session from opencode into pi!
35
+ <pre>
36
+ $ <b>ccopy</b> opencode/ses_a1d1a5a4df984ee698cab4a7 pi
37
+ Copied 3 message(s) from opencode/ses_a1d1a5a4df984ee698cab4a7 to a new pi session: e357f435-f813-463a-b313-f97f1051f3cb
38
+ Resume it with:
39
+ pi --session e357f435-f813-463a-b313-f97f1051f3cb
40
+ </pre>
41
+
42
+ As you can see, these are unix-friendly tools using simple paradigms that you are already familiar with.
43
+
44
+ ----
12
45
 
13
46
  ### 1. `cgrep` — find it in your past conversations
14
47
 
@@ -34,9 +67,9 @@ Resume it with:
34
67
  claude-code --resume 1a2b3c
35
68
  ```
36
69
 
37
- Your work travels with you. The source is never touched, so it's a true copy. And when the destination is on another machine, it's just `ccopy opencode/ses_abc123 ssh://chris@remote/codex` — it runs over your normal ssh.
70
+ Your work travels with you. The source is never touched, so it's a true copy. And when the destination is on another machine, it's just `ccopy opencode/ses_abc123 ssh://chris@remote/codex` — it pulls the agent's storage over your normal ssh (the remote only needs `sshd` and `tar`, not ctools).
38
71
 
39
- ctools is a set of GNU-style tools for the history your coding agents leave behind. These two are the headline; the rest (`cdir` to list sessions, `cextract` to move concepts, `cconnect` to pipe them live, `cdu` to count tokens, `crm` to prune) are in service of them.
72
+ ctools is a set of GNU-style tools for the history your coding agents leave behind. These two are the headline; the rest (`cdir` to list sessions, `ccat` to read them, `cextract` to move concepts, `cconnect` to pipe them live, `cdu` to count tokens, `crm` to prune) are in service of them.
40
73
 
41
74
  **Works with the agents you already use:** Claude Desktop, Claude Code, Opencode, Kilo, Codex, Pi, Goose, Hermes, Cline, omp (oh-my-pi), and Freebuff (Codebuff).
42
75
 
@@ -46,13 +79,14 @@ ctools is a set of GNU-style tools for the history your coding agents leave behi
46
79
  |------|--------------|------|
47
80
  | `cgrep` | Search conversation content (grep across every agent) | [docs/cgrep.md](docs/cgrep.md) |
48
81
  | `cdir` | List sessions (ls for your history) | [docs/cdir.md](docs/cdir.md) |
82
+ | `ccat` | Print one or more conversations (cat for your history) | [docs/ccat.md](docs/ccat.md) |
49
83
  | `ccopy` | Copy a whole conversation from one agent to a new session in another | [docs/ccopy.md](docs/ccopy.md) |
50
84
  | `cextract` | Extract concepts from a session into files, and inject them back | [docs/cextract.md](docs/cextract.md) |
51
85
  | `cconnect` | Live concept pipelines between sessions | [docs/cconnect.md](docs/cconnect.md) |
52
86
  | `cdu` | Token usage per session (du for context windows) | [docs/cdu.md](docs/cdu.md) |
53
87
  | `crm` | Remove concepts from a session (mdel) | [docs/crm.md](docs/crm.md) |
54
88
 
55
- Every tool takes `--version` and `--verbose` (structured logging). Each tool's full flag reference, output formats, and examples live in its `docs/` page — the table above is just the 30-second version.
89
+ Every tool takes `--version`. The session-mover tools (`ccopy`, `cextract`, `cconnect`, `crm`) also take `--verbose` for structured logging. Each tool's full flag reference, output formats, and examples live in its `docs/` page — the table above is just the 30-second version.
56
90
 
57
91
  ## How it works
58
92