rumo-cli 0.5.0__tar.gz → 0.6.0__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.
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/PKG-INFO +86 -23
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/README.md +84 -21
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/pyproject.toml +2 -2
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/app.py +768 -39
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/cli.py +103 -10
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/config.py +43 -0
- rumo_cli-0.6.0/src/rumo/explore.py +316 -0
- rumo_cli-0.6.0/src/rumo/git.py +89 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/hook.py +25 -6
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/items.py +337 -13
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/sessions.py +2 -2
- rumo_cli-0.6.0/src/rumo/spark.py +307 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/.gitignore +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/LICENSE +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/__init__.py +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.0}/src/rumo/prs.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rumo-cli
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Your
|
|
3
|
+
Version: 0.6.0
|
|
4
|
+
Summary: Your agent forgets, rumo doesn't: what each AI agent session did and what is left, in Markdown files and a terminal Timeline
|
|
5
5
|
Project-URL: Homepage, https://github.com/pedrobuzzi/rumo
|
|
6
6
|
Project-URL: Issues, https://github.com/pedrobuzzi/rumo/issues
|
|
7
7
|
Author: Pedro Buzzi
|
|
@@ -21,25 +21,31 @@ Description-Content-Type: text/markdown
|
|
|
21
21
|
|
|
22
22
|
# rumo
|
|
23
23
|
|
|
24
|
-
**Your
|
|
25
|
-
|
|
26
|
-
Timeline
|
|
24
|
+
**Your agent forgets. rumo doesn't.** rumo keeps what each AI agent session did and what is left, one
|
|
25
|
+
Markdown file per piece of work on your machine, through `/compact`, `/clear` and from one day to the
|
|
26
|
+
next. Run `rumo` to see it all as a Timeline and know what got done, what is left and who acts next,
|
|
27
|
+
without rereading a conversation.
|
|
27
28
|
|
|
28
29
|

|
|
29
30
|
|
|
30
31
|
- **Now**: what you are doing or waiting on, with the next step of each item.
|
|
31
|
-
- **Past**: what you finished in the last two weeks (answers "what did I do?" for a standup).
|
|
32
|
-
- **Later**: ideas and paused work, so nothing you meant to do gets lost.
|
|
32
|
+
- **Past**: what you finished, or decided not to do, in the last two weeks (answers "what did I do?" for a standup).
|
|
33
|
+
- **Later**: ideas and paused work, so nothing you meant to do gets lost. Each idea shows how many days
|
|
34
|
+
it has sat untouched, and fades after 60.
|
|
33
35
|
|
|
34
36
|
Items can belong to a **group** (a project or initiative), shown as a label with its name on its
|
|
35
|
-
color;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
color; on titles and labels, color only ever means the group. One item is one line, plus its next open
|
|
38
|
+
steps (2 by default, `step_lines` in the config), each saying who acts: `manual`, `agent` or `waiting`, and
|
|
39
|
+
what git has left of its work (`git`). rumo shows
|
|
40
|
+
one horizon at a time (`h` steps Now, Later, Past), named in a banner atop the list, in four views: the **Timeline**,
|
|
41
|
+
**Projects** (one block per group), **Repos** (one block per repository of the item's latest
|
|
42
|
+
agent session) and **Tree** (the families: an item and the ideas and items that came from it). The interface is in English; the content (titles, notes, steps) is in your own
|
|
39
43
|
language.
|
|
40
44
|
|
|
41
45
|
Nothing leaves your machine. There is no server, no database and no sync with Jira or ClickUp
|
|
42
|
-
(ask your agent to update those if you want).
|
|
46
|
+
(ask your agent to update those if you want). The exceptions are `?` and `*`, which you start yourself:
|
|
47
|
+
`?` sends the item's text, and `*` the text of your ideas (with only the titles of the rest), to Claude
|
|
48
|
+
through your own Claude Code (`claude -p`). Nothing else does.
|
|
43
49
|
|
|
44
50
|
## Install
|
|
45
51
|
|
|
@@ -84,20 +90,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
84
90
|
|
|
85
91
|
## Use
|
|
86
92
|
|
|
87
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
93
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
94
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
95
|
+
the ones you dropped.
|
|
88
96
|
|
|
89
97
|
| Key | Action |
|
|
90
98
|
|---|---|
|
|
91
99
|
| ↑ ↓ | move through the list |
|
|
92
|
-
| Tab | switch between the list, steps, PRs and sessions |
|
|
93
|
-
| `v` | next view: Timeline, Projects, Repos (`1` `2` `3` go straight to one; rumo remembers it) |
|
|
100
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
101
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
94
102
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
95
|
-
| `s` | change status (1-
|
|
103
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
96
104
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
97
105
|
| `t` | toggle tags |
|
|
98
106
|
| `n` | capture a new idea |
|
|
107
|
+
| `b` | branch: a new idea that comes from the selected item (same group and tags); Tab instead turns its next open step (the highlighted one, with the steps focused) into an item of its own, and that step checks itself when the new item is done |
|
|
108
|
+
| `?` | ask Claude about the item, in the background: a lens from the config, one of the next questions of its latest answer, or your own question. The answer lands under Explorations, and a notice says when |
|
|
109
|
+
| `*` | spark: Claude reads your ideas, paused and dropped items, oldest first, and brings 3 new ideas in a line each, with the direction it read in them. Throw any away with its number (or space), Enter adds the others to Later; Esc decides later. Sometimes it asks one or two short questions first |
|
|
110
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
99
111
|
| `e` | open the item in `$EDITOR` |
|
|
100
|
-
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab
|
|
112
|
+
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab goes through `[agent]`, `[manual]` and `[waiting]` |
|
|
101
113
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
102
114
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
103
115
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -111,14 +123,17 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
111
123
|
| Command | What it does |
|
|
112
124
|
|---|---|
|
|
113
125
|
| `/rumo new` | Track this session's work as an item. Looks for a similar idea first and offers to promote it. |
|
|
114
|
-
| `/rumo idea <text>` | Note something for later without leaving the topic. |
|
|
126
|
+
| `/rumo idea <text>` | Note something for later without leaving the topic. It comes from the linked item, and a similar idea you dropped is named with its reason. |
|
|
127
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
115
128
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
116
129
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
117
130
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
118
131
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
119
132
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
120
133
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
121
|
-
| `/rumo
|
|
134
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
135
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
136
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
122
137
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
123
138
|
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
124
139
|
|
|
@@ -143,7 +158,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
143
158
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
144
159
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
145
160
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
146
|
-
three.
|
|
161
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
162
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
163
|
+
old one up again.
|
|
164
|
+
|
|
165
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
166
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
167
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
168
|
+
Timeline or with `e`, is never news.
|
|
169
|
+
|
|
170
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
171
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
172
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
173
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
174
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
175
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
176
|
+
next to your items.
|
|
177
|
+
|
|
178
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
179
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
180
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
181
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
182
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
183
|
+
to your items.
|
|
147
184
|
|
|
148
185
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
149
186
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -158,6 +195,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
158
195
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
159
196
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
160
197
|
|
|
198
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
199
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
200
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
201
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
202
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
203
|
+
you ask.
|
|
204
|
+
|
|
161
205
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
162
206
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
163
207
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -185,6 +229,7 @@ Users land on a protected page after logging out.
|
|
|
185
229
|
## Steps
|
|
186
230
|
- [x] [agent] Fix the logout handler
|
|
187
231
|
- [ ] [manual] Ask for a PR review
|
|
232
|
+
- [ ] [waiting] Review from the team
|
|
188
233
|
- [ ] [agent] e2e test for logout
|
|
189
234
|
|
|
190
235
|
## PRs
|
|
@@ -194,8 +239,14 @@ Users land on a protected page after logging out.
|
|
|
194
239
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
195
240
|
```
|
|
196
241
|
|
|
197
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
198
|
-
|
|
242
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
243
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
244
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
245
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
246
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
247
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
248
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
249
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
199
250
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
200
251
|
unknown) and an optional title after the link.
|
|
201
252
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -212,6 +263,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
212
263
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
213
264
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
214
265
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
266
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
267
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
268
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
269
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
270
|
+
|
|
271
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
272
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
273
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
274
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
275
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
276
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
215
277
|
|
|
216
278
|
[groups.auth]
|
|
217
279
|
name = "Auth migration"
|
|
@@ -219,7 +281,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
219
281
|
```
|
|
220
282
|
|
|
221
283
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
222
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
284
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
285
|
+
them, keeps what `?` and `*` run printed.
|
|
223
286
|
|
|
224
287
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
225
288
|
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
# rumo
|
|
2
2
|
|
|
3
|
-
**Your
|
|
4
|
-
|
|
5
|
-
Timeline
|
|
3
|
+
**Your agent forgets. rumo doesn't.** rumo keeps what each AI agent session did and what is left, one
|
|
4
|
+
Markdown file per piece of work on your machine, through `/compact`, `/clear` and from one day to the
|
|
5
|
+
next. Run `rumo` to see it all as a Timeline and know what got done, what is left and who acts next,
|
|
6
|
+
without rereading a conversation.
|
|
6
7
|
|
|
7
8
|

|
|
8
9
|
|
|
9
10
|
- **Now**: what you are doing or waiting on, with the next step of each item.
|
|
10
|
-
- **Past**: what you finished in the last two weeks (answers "what did I do?" for a standup).
|
|
11
|
-
- **Later**: ideas and paused work, so nothing you meant to do gets lost.
|
|
11
|
+
- **Past**: what you finished, or decided not to do, in the last two weeks (answers "what did I do?" for a standup).
|
|
12
|
+
- **Later**: ideas and paused work, so nothing you meant to do gets lost. Each idea shows how many days
|
|
13
|
+
it has sat untouched, and fades after 60.
|
|
12
14
|
|
|
13
15
|
Items can belong to a **group** (a project or initiative), shown as a label with its name on its
|
|
14
|
-
color;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
color; on titles and labels, color only ever means the group. One item is one line, plus its next open
|
|
17
|
+
steps (2 by default, `step_lines` in the config), each saying who acts: `manual`, `agent` or `waiting`, and
|
|
18
|
+
what git has left of its work (`git`). rumo shows
|
|
19
|
+
one horizon at a time (`h` steps Now, Later, Past), named in a banner atop the list, in four views: the **Timeline**,
|
|
20
|
+
**Projects** (one block per group), **Repos** (one block per repository of the item's latest
|
|
21
|
+
agent session) and **Tree** (the families: an item and the ideas and items that came from it). The interface is in English; the content (titles, notes, steps) is in your own
|
|
18
22
|
language.
|
|
19
23
|
|
|
20
24
|
Nothing leaves your machine. There is no server, no database and no sync with Jira or ClickUp
|
|
21
|
-
(ask your agent to update those if you want).
|
|
25
|
+
(ask your agent to update those if you want). The exceptions are `?` and `*`, which you start yourself:
|
|
26
|
+
`?` sends the item's text, and `*` the text of your ideas (with only the titles of the rest), to Claude
|
|
27
|
+
through your own Claude Code (`claude -p`). Nothing else does.
|
|
22
28
|
|
|
23
29
|
## Install
|
|
24
30
|
|
|
@@ -63,20 +69,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
63
69
|
|
|
64
70
|
## Use
|
|
65
71
|
|
|
66
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
72
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
73
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
74
|
+
the ones you dropped.
|
|
67
75
|
|
|
68
76
|
| Key | Action |
|
|
69
77
|
|---|---|
|
|
70
78
|
| ↑ ↓ | move through the list |
|
|
71
|
-
| Tab | switch between the list, steps, PRs and sessions |
|
|
72
|
-
| `v` | next view: Timeline, Projects, Repos (`1` `2` `3` go straight to one; rumo remembers it) |
|
|
79
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
80
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
73
81
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
74
|
-
| `s` | change status (1-
|
|
82
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
75
83
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
76
84
|
| `t` | toggle tags |
|
|
77
85
|
| `n` | capture a new idea |
|
|
86
|
+
| `b` | branch: a new idea that comes from the selected item (same group and tags); Tab instead turns its next open step (the highlighted one, with the steps focused) into an item of its own, and that step checks itself when the new item is done |
|
|
87
|
+
| `?` | ask Claude about the item, in the background: a lens from the config, one of the next questions of its latest answer, or your own question. The answer lands under Explorations, and a notice says when |
|
|
88
|
+
| `*` | spark: Claude reads your ideas, paused and dropped items, oldest first, and brings 3 new ideas in a line each, with the direction it read in them. Throw any away with its number (or space), Enter adds the others to Later; Esc decides later. Sometimes it asks one or two short questions first |
|
|
89
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
78
90
|
| `e` | open the item in `$EDITOR` |
|
|
79
|
-
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab
|
|
91
|
+
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab goes through `[agent]`, `[manual]` and `[waiting]` |
|
|
80
92
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
81
93
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
82
94
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -90,14 +102,17 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
90
102
|
| Command | What it does |
|
|
91
103
|
|---|---|
|
|
92
104
|
| `/rumo new` | Track this session's work as an item. Looks for a similar idea first and offers to promote it. |
|
|
93
|
-
| `/rumo idea <text>` | Note something for later without leaving the topic. |
|
|
105
|
+
| `/rumo idea <text>` | Note something for later without leaving the topic. It comes from the linked item, and a similar idea you dropped is named with its reason. |
|
|
106
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
94
107
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
95
108
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
96
109
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
97
110
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
98
111
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
99
112
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
100
|
-
| `/rumo
|
|
113
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
114
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
115
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
101
116
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
102
117
|
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
103
118
|
|
|
@@ -122,7 +137,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
122
137
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
123
138
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
124
139
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
125
|
-
three.
|
|
140
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
141
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
142
|
+
old one up again.
|
|
143
|
+
|
|
144
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
145
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
146
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
147
|
+
Timeline or with `e`, is never news.
|
|
148
|
+
|
|
149
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
150
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
151
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
152
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
153
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
154
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
155
|
+
next to your items.
|
|
156
|
+
|
|
157
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
158
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
159
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
160
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
161
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
162
|
+
to your items.
|
|
126
163
|
|
|
127
164
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
128
165
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -137,6 +174,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
137
174
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
138
175
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
139
176
|
|
|
177
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
178
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
179
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
180
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
181
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
182
|
+
you ask.
|
|
183
|
+
|
|
140
184
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
141
185
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
142
186
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -164,6 +208,7 @@ Users land on a protected page after logging out.
|
|
|
164
208
|
## Steps
|
|
165
209
|
- [x] [agent] Fix the logout handler
|
|
166
210
|
- [ ] [manual] Ask for a PR review
|
|
211
|
+
- [ ] [waiting] Review from the team
|
|
167
212
|
- [ ] [agent] e2e test for logout
|
|
168
213
|
|
|
169
214
|
## PRs
|
|
@@ -173,8 +218,14 @@ Users land on a protected page after logging out.
|
|
|
173
218
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
174
219
|
```
|
|
175
220
|
|
|
176
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
177
|
-
|
|
221
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
222
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
223
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
224
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
225
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
226
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
227
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
228
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
178
229
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
179
230
|
unknown) and an optional title after the link.
|
|
180
231
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -191,6 +242,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
191
242
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
192
243
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
193
244
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
245
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
246
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
247
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
248
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
249
|
+
|
|
250
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
251
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
252
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
253
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
254
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
255
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
194
256
|
|
|
195
257
|
[groups.auth]
|
|
196
258
|
name = "Auth migration"
|
|
@@ -198,7 +260,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
198
260
|
```
|
|
199
261
|
|
|
200
262
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
201
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
263
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
264
|
+
them, keeps what `?` and `*` run printed.
|
|
202
265
|
|
|
203
266
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
204
267
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rumo-cli"
|
|
3
|
-
version = "0.
|
|
4
|
-
description = "Your
|
|
3
|
+
version = "0.6.0"
|
|
4
|
+
description = "Your agent forgets, rumo doesn't: what each AI agent session did and what is left, in Markdown files and a terminal Timeline"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
7
7
|
license = "MIT"
|