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.
- {ctxttools-0.2.0/ctxttools.egg-info → ctxttools-0.2.1}/PKG-INFO +40 -6
- {ctxttools-0.2.0 → ctxttools-0.2.1}/README.md +39 -5
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/agents.py +367 -22
- ctxttools-0.2.1/ctools/ccat.py +233 -0
- ctxttools-0.2.1/ctools/ccopy.py +478 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cdir.py +120 -39
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cdu.py +15 -5
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cli.py +3 -3
- {ctxttools-0.2.0 → ctxttools-0.2.1/ctxttools.egg-info}/PKG-INFO +40 -6
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/SOURCES.txt +1 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/entry_points.txt +1 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/pyproject.toml +2 -1
- ctxttools-0.2.0/ctools/ccopy.py +0 -317
- {ctxttools-0.2.0 → ctxttools-0.2.1}/LICENSE.MIT +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/__init__.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cconnect.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cextract.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/cgrep.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/crm.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/ctools_mcp.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/filterlib.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/lib.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/log.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctools/strategy.py +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/dependency_links.txt +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/requires.txt +0 -0
- {ctxttools-0.2.0 → ctxttools-0.2.1}/ctxttools.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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`
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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`
|
|
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
|
|