pi-kage 0.3.1 → 0.3.2
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.
- package/README.md +8 -12
- package/bin/kage.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,9 +35,9 @@ machine. Each parallel session gets its own working tree, its own branch, its ow
|
|
|
35
35
|
Code merges the normal way: on GitHub. No local collisions, ever.
|
|
36
36
|
|
|
37
37
|
And like a real Naruto shadow clone, it **carries your memory out** (the origin's 5 most recent pi
|
|
38
|
-
sessions are copied into the clone, so you can `resume` them there) and **returns it on dispel** (the
|
|
39
|
-
*new* sessions are merged back into the original when you `finish`). The clone always opens a
|
|
40
|
-
session — kage never replays your old turns or fakes a "resumed" conversation.
|
|
38
|
+
sessions are copied into the clone, so you can `resume` them there) and **returns it on dispel** (the
|
|
39
|
+
clone's *new* sessions are merged back into the original when you `finish`). The clone always opens a
|
|
40
|
+
**fresh** session — kage never replays your old turns or fakes a "resumed" conversation.
|
|
41
41
|
|
|
42
42
|
Why a full folder copy instead of `git worktree`? A worktree shares one `.git`, which means you
|
|
43
43
|
can't check out the same branch twice, you share stash/refs, and you get a *fresh* checkout with no
|
|
@@ -158,15 +158,11 @@ Four invariants keep parallel work safe and lossless:
|
|
|
158
158
|
- kage **doesn't create a branch** — the clone stays on the origin's current branch, and kage stays out
|
|
159
159
|
of git flow entirely. Decide your own branching/PR workflow inside the clone (instruct the agent via
|
|
160
160
|
your `AGENTS.md` / project conventions).
|
|
161
|
-
- The clone opens a **fresh** pi session. The origin's 5 most recent sessions are copied in and are
|
|
162
|
-
pi's resume picker. Real work belongs in the clone's own fresh session, but if you do
|
|
163
|
-
origin session and add turns, on `finish` that continuation is written back as a
|
|
164
|
-
(the origin's original session is left untouched), so nothing is lost and no
|
|
165
|
-
|
|
166
|
-
fabricated *seed* session in their `.kage.json` (`seedFile`/`seedLeafId`). `finish` no longer special-
|
|
167
|
-
cases those, so finishing such a clone would copy the replayed seed context back into the origin. For
|
|
168
|
-
any clone created by an older kage, prefer `kage rm` (the code is already on its branch / PR) instead
|
|
169
|
-
of `kage finish`.
|
|
161
|
+
- The clone opens a **fresh** pi session. The origin's 5 most recent sessions are copied in and are
|
|
162
|
+
**resumable** via pi's resume picker. Real work belongs in the clone's own fresh session, but if you do
|
|
163
|
+
resume a copied origin session and add turns, on `finish` that continuation is written back as a
|
|
164
|
+
**separate** session (the origin's original session is left untouched), so nothing is lost and no
|
|
165
|
+
active conversation is hijacked.
|
|
170
166
|
- **No remote?** `finish` still works losslessly: committed work that isn't on a remote is fetched into
|
|
171
167
|
the origin as a local `kage/<name>-<sha>` branch (the exact name is printed; `git merge` it to
|
|
172
168
|
integrate). The short sha keeps the ref unique, so reusing a clone name never collides. With a remote
|
package/bin/kage.mjs
CHANGED
|
@@ -30,7 +30,7 @@ import { homedir } from "node:os";
|
|
|
30
30
|
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
31
31
|
import readline from "node:readline";
|
|
32
32
|
|
|
33
|
-
const VERSION = "0.3.
|
|
33
|
+
const VERSION = "0.3.2"; // keep in sync with package.json (enforced by test)
|
|
34
34
|
const MARKER = ".kage.json";
|
|
35
35
|
const SESSIONS = process.env.KAGE_SESSIONS_DIR || join(homedir(), ".pi", "agent", "sessions");
|
|
36
36
|
const RECENT_SESSIONS = 5; // how many of the origin's most-recent sessions to copy into a clone
|
package/package.json
CHANGED