@popoverinstall/cli 0.8.0 → 0.8.1
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/CHANGELOG.md +58 -0
- package/dist/next-steps.d.ts +1 -5
- package/dist/next-steps.d.ts.map +1 -1
- package/dist/next-steps.js +9 -5
- package/dist/next-steps.js.map +1 -1
- package/dist/terminal.d.ts.map +1 -1
- package/dist/terminal.js +21 -0
- package/dist/terminal.js.map +1 -1
- package/package.json +3 -3
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +3 -2
- package/plugin/commands/fork.md +3 -2
- package/plugin/scripts/announce-roster.mjs +16 -6
- package/plugin/skills/popover/SKILL.md +11 -3
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,64 @@ already here:
|
|
|
15
15
|
Every version that ships needs an entry — an update with nothing to print says nothing at
|
|
16
16
|
all, which reads as though the update did not happen.
|
|
17
17
|
|
|
18
|
+
## 0.8.1
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
- Your agent offers a fork when the moment calls for one, instead of waiting to be asked. It
|
|
23
|
+
used to be told never to suggest one, on the reasoning that handing over a whole
|
|
24
|
+
conversation is a large enough disclosure to be the user's own idea. The effect was that the
|
|
25
|
+
most useful case never came up at all, because the moment for a fork is one you are usually
|
|
26
|
+
too deep in the work to notice: you are going off shift, or about to re-explain an hour of
|
|
27
|
+
debugging to a colleague by hand, or trading asks back and forth on what turns out never to
|
|
28
|
+
have been one question. Your agent now says so once, and says what the fork would include.
|
|
29
|
+
Making one is still yours alone — it cannot create a fork without you asking, "that would be
|
|
30
|
+
useful" is not read as a yes, and if you pass on the offer it does not raise it again.
|
|
31
|
+
|
|
32
|
+
### Fixes
|
|
33
|
+
|
|
34
|
+
- Your agent is told who else is working in the repo again. The notice was supposed to appear
|
|
35
|
+
whenever the cast of teammate agents changed, and almost never did: it gave the daemon 250ms
|
|
36
|
+
to answer, and any answer more than five seconds old means fetching from the server, which
|
|
37
|
+
takes about 350ms. So it ran out of time and said nothing — and saying nothing looks exactly
|
|
38
|
+
like working alone, which is why it went unnoticed. It now waits long enough to get an
|
|
39
|
+
answer. If you are working alone it also stops checking every prompt, so you are not paying
|
|
40
|
+
for a lookup that has nothing to report.
|
|
41
|
+
|
|
42
|
+
- `popover fork revoke` no longer tells you a fork is destroyed when it is not. If the write
|
|
43
|
+
failed, it said "revoked" anyway — the one command whose whole job is undoing a mistake, and
|
|
44
|
+
the one place a false confirmation is worst, because you stop looking. It now says it could
|
|
45
|
+
not and asks you to try again. A code that was already gone still reports success, which is
|
|
46
|
+
deliberate: answering differently would let anyone holding a code learn whether a
|
|
47
|
+
conversation exists.
|
|
48
|
+
|
|
49
|
+
- Expired forks are actually deleted now. A fork's ciphertext is supposed to be destroyed 24
|
|
50
|
+
hours after it is made, but the cleanup only ever ran when somebody happened to create
|
|
51
|
+
another fork — so on a quiet team, conversations you had shared for a day stayed on the
|
|
52
|
+
server indefinitely. It now runs on a schedule of its own.
|
|
53
|
+
|
|
54
|
+
- A hiccup on our side no longer signs your machine out. Several of these reported a temporary
|
|
55
|
+
server problem as a permanent refusal: a failed lookup during `popover login` looked like an
|
|
56
|
+
invalid code and abandoned the login, and one during a routine daemon check looked like your
|
|
57
|
+
machine had been revoked — which is not something it retries. They now say the service is
|
|
58
|
+
briefly unavailable, and the daemon keeps its session.
|
|
59
|
+
|
|
60
|
+
- Opening a fork works on Windows when the folder it came from has a non-ASCII name. The
|
|
61
|
+
console reads a script in its own code page rather than UTF-8, so a path like
|
|
62
|
+
`C:\Users\Renée\work` arrived mangled, the `cd` quietly failed, and the fork opened anyway in
|
|
63
|
+
whatever directory the console started in — looking correct while every file path in the
|
|
64
|
+
conversation pointed somewhere else. It now switches the console to UTF-8 first, and stops
|
|
65
|
+
with a message rather than opening in the wrong place.
|
|
66
|
+
|
|
67
|
+
- Asks against a long conversation work now. Answering an agent used to run the question past
|
|
68
|
+
Haiku no matter what the agent itself was running, and Haiku holds 200K tokens — so on any
|
|
69
|
+
session bigger than that, Claude Code had to compress the whole conversation before it could
|
|
70
|
+
read it, which took longer than the 90 seconds the asker waits. You got "did not answer in
|
|
71
|
+
time", and the machine being asked had already spent the tokens. The answer now comes from
|
|
72
|
+
the same model the session is already running, which fits by definition: measured on a 3.9MB
|
|
73
|
+
conversation, 97.6s and no answer became 15s and an answer. It costs the answering machine
|
|
74
|
+
more per ask, and it is their call — set `POPOVER_FORK_MODEL` to pin a cheaper one.
|
|
75
|
+
|
|
18
76
|
## 0.8.0
|
|
19
77
|
|
|
20
78
|
### Features
|
package/dist/next-steps.d.ts
CHANGED
|
@@ -6,11 +6,7 @@
|
|
|
6
6
|
* either way, so it gets the same send-off — and login.ts cannot import this from welcome.ts,
|
|
7
7
|
* which imports login.ts.
|
|
8
8
|
*/
|
|
9
|
-
/**
|
|
10
|
-
* The product name as people see it. The installers print it too — they are separate templates
|
|
11
|
-
* in apps/web/src/lib/install-script*.ts, so that string is paired with this one rather than
|
|
12
|
-
* shared.
|
|
13
|
-
*/
|
|
9
|
+
/** The product name as people see it. */
|
|
14
10
|
export declare const BRAND = "Popover";
|
|
15
11
|
export declare const TAGLINE = "The first multiplayer coding experience.";
|
|
16
12
|
export declare const TAGLINE_SECONDARY = "Let your team's AI agents communicate and collaborate with each other.";
|
package/dist/next-steps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-steps.d.ts","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH
|
|
1
|
+
{"version":3,"file":"next-steps.d.ts","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,yCAAyC;AACzC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,OAAO,6CAA6C,CAAC;AAClE,eAAO,MAAM,iBAAiB,2EAC4C,CAAC;AA6B3E,wBAAgB,SAAS,IAAI,IAAI,CAiDhC"}
|
package/dist/next-steps.js
CHANGED
|
@@ -7,11 +7,7 @@
|
|
|
7
7
|
* which imports login.ts.
|
|
8
8
|
*/
|
|
9
9
|
import { badge, box, glyph, line, step, style, trunk, wrap } from "./theme.js";
|
|
10
|
-
/**
|
|
11
|
-
* The product name as people see it. The installers print it too — they are separate templates
|
|
12
|
-
* in apps/web/src/lib/install-script*.ts, so that string is paired with this one rather than
|
|
13
|
-
* shared.
|
|
14
|
-
*/
|
|
10
|
+
/** The product name as people see it. */
|
|
15
11
|
export const BRAND = "Popover";
|
|
16
12
|
export const TAGLINE = "The first multiplayer coding experience.";
|
|
17
13
|
export const TAGLINE_SECONDARY = "Let your team's AI agents communicate and collaborate with each other.";
|
|
@@ -30,6 +26,11 @@ export const TAGLINE_SECONDARY = "Let your team's AI agents communicate and coll
|
|
|
30
26
|
* Three different opening verbs, and no "Ask Popover" prefix: the heading above these
|
|
31
27
|
* already says whose job this is, and every character spent on the prefix is a character
|
|
32
28
|
* closer to wrapping in an 80-column terminal.
|
|
29
|
+
*
|
|
30
|
+
* Note that all three need a teammate, and most people finishing an install do not have one
|
|
31
|
+
* yet — so on its own this section shows a new user three ways to be told nobody is there.
|
|
32
|
+
* `/popover:fork create` in "Pick a starting point" is the counterweight: it is the one thing
|
|
33
|
+
* here that does something on a team of one. Keep it there if these change.
|
|
33
34
|
*/
|
|
34
35
|
const ASK_EXAMPLES = [
|
|
35
36
|
"Who else is working in this repo right now, and on what?",
|
|
@@ -54,6 +55,9 @@ export function nextSteps() {
|
|
|
54
55
|
trunk();
|
|
55
56
|
step(style.amber("Pick a starting point"));
|
|
56
57
|
bullet(`${style.bold("/popover:team")} ${style.dim("run it in any Claude Code session")}`);
|
|
58
|
+
// The only line here that works before anyone else joins, which is why it is in the first
|
|
59
|
+
// section rather than buried below: whoever you send a fork to needs no account at all.
|
|
60
|
+
bullet(`${style.bold("/popover:fork")} ${style.dim("hand a conversation to anyone — no account needed")}`);
|
|
57
61
|
bullet(`${style.bold("popover doctor")} ${style.dim("if something looks wrong")}`);
|
|
58
62
|
trunk();
|
|
59
63
|
step(style.amber("Ask your coding agent"));
|
package/dist/next-steps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-steps.js","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE/E
|
|
1
|
+
{"version":3,"file":"next-steps.js","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"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"}
|
package/dist/terminal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,UAAwB,GAC5B,aAAa,GAAG,IAAI,CAkCtB;AAED,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAK3F;AAOD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,UAAwB,GAC5B,aAAa,GAAG,IAAI,CAkCtB;AAED,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAK3F;AAOD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,CAsDR;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,UAA0B,GAC9B,aAAa,CAuBf"}
|
package/dist/terminal.js
CHANGED
|
@@ -68,11 +68,32 @@ export function writeLauncherScript(dir, opts, platform, env) {
|
|
|
68
68
|
const quoted = command.map((a) => (/[\s&|<>^"]/.test(a) ? `"${a}"` : a)).join(" ");
|
|
69
69
|
const body = [
|
|
70
70
|
"@echo off",
|
|
71
|
+
// cmd.exe decodes a batch file in the console code page, which on a default Windows
|
|
72
|
+
// console is 437 or 1252 — not UTF-8. Without this, a cwd containing any non-ASCII
|
|
73
|
+
// character (`C:\Users\Renée\...`, any CJK path) is mis-decoded, and because `cd` used to
|
|
74
|
+
// have no guard the script carried on and started the fork in whatever directory the
|
|
75
|
+
// console happened to open in. `--resume` searches every project, so it *did* resume —
|
|
76
|
+
// the fork looked correct while every relative path in the conversation was wrong.
|
|
77
|
+
"chcp 65001 >nul",
|
|
71
78
|
// Nothing below may contain a bare % or it would be read as a variable.
|
|
72
79
|
...opts.banner.map((line) => `echo ${line.replace(/[%^&<>|]/g, "")}`),
|
|
73
80
|
"echo.",
|
|
81
|
+
// Guarded, matching the POSIX branch below. Opening someone else's conversation in the
|
|
82
|
+
// wrong directory is worse than not opening it, because nothing on screen says so.
|
|
83
|
+
//
|
|
84
|
+
// `goto` rather than `||` on purpose: `&&` would put an `&` in the body, and this file is
|
|
85
|
+
// asserted to contain none — a stray `&` is a command separator, so keeping the whole
|
|
86
|
+
// script free of one is a real invariant rather than a style choice. The failure message
|
|
87
|
+
// deliberately does not echo the path, since a `%` in it would be expanded.
|
|
74
88
|
`cd /d ${JSON.stringify(opts.cwd)}`,
|
|
89
|
+
"if errorlevel 1 goto popover_cd_failed",
|
|
75
90
|
quoted,
|
|
91
|
+
"exit /b 0",
|
|
92
|
+
":popover_cd_failed",
|
|
93
|
+
"echo Could not enter the folder this fork came from.",
|
|
94
|
+
"echo It may not exist on this machine.",
|
|
95
|
+
"pause",
|
|
96
|
+
"exit /b 1",
|
|
76
97
|
"",
|
|
77
98
|
].join("\r\n");
|
|
78
99
|
writeFileSync(file, body, "utf8");
|
package/dist/terminal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@popoverinstall/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "See your teammates' active Claude Code agents and ask them questions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"prepack": "node ../../scripts/stage-plugin.mjs && tsc -b"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@popoverinstall/daemon": "0.8.
|
|
45
|
-
"@popoverinstall/shared": "0.8.
|
|
44
|
+
"@popoverinstall/daemon": "0.8.1",
|
|
45
|
+
"@popoverinstall/shared": "0.8.1"
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "popover",
|
|
4
4
|
"displayName": "Popover",
|
|
5
5
|
"description": "See your teammates' active Claude Code agents and ask them questions. A read-only fork answers from the agent's full context without interrupting your teammate.",
|
|
6
|
-
"version": "0.8.
|
|
6
|
+
"version": "0.8.1",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Quolabs"
|
|
9
9
|
},
|
package/plugin/README.md
CHANGED
|
@@ -67,8 +67,9 @@ claude plugin install popover@popover -y
|
|
|
67
67
|
claude plugin uninstall popover # to undo
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Teammates do not do this — they run
|
|
71
|
-
which is the
|
|
70
|
+
Teammates do not do this — they run `npm install -g @popoverinstall/cli && popover welcome`,
|
|
71
|
+
which is the path that also delivers the daemon and registers this plugin. There is no longer a
|
|
72
|
+
`curl … /install | sh` installer; that route was removed when popover moved to npm.
|
|
72
73
|
|
|
73
74
|
The hook scripts *talk to* the daemon over `POPOVER_DAEMON_ADDR`, falling back to
|
|
74
75
|
`\\.\pipe\popover-<user>` on Windows and `~/.popover/daemon.sock` elsewhere. They *launch* it
|
package/plugin/commands/fork.md
CHANGED
|
@@ -100,8 +100,9 @@ Say what the two halves do in two lines, and stop:
|
|
|
100
100
|
`/popover:fork create` · `/popover:fork open PQRS-2345-BCDF-7892`
|
|
101
101
|
|
|
102
102
|
Do not create a fork on the user's behalf just because they ran the command with no
|
|
103
|
-
arguments.
|
|
104
|
-
|
|
103
|
+
arguments. Suggesting a fork is fair game, and the popover skill says when — but creating
|
|
104
|
+
one is a disclosure the user has to have chosen. An empty invocation is someone looking, not
|
|
105
|
+
someone choosing.
|
|
105
106
|
|
|
106
107
|
## Rules
|
|
107
108
|
|
|
@@ -30,20 +30,30 @@ const sessionId = callerSessionId();
|
|
|
30
30
|
|
|
31
31
|
try {
|
|
32
32
|
// No stdin read at all. deliver-messages.mjs spends 150ms on the payload because a missed
|
|
33
|
-
// tell is a real loss; here the environment variable is enough, and 150ms
|
|
34
|
-
//
|
|
33
|
+
// tell is a real loss; here the environment variable is enough, and 150ms of latency the
|
|
34
|
+
// user pays on every prompt buys nothing this cannot get for free.
|
|
35
35
|
if (!sessionId) process.exit(0);
|
|
36
36
|
|
|
37
|
-
// `refresh: false`
|
|
38
|
-
//
|
|
39
|
-
//
|
|
37
|
+
// `refresh: false` means "do not force a refresh". It does NOT mean "do not use the
|
|
38
|
+
// network", which is what a comment here used to claim: the daemon caches a roster for 5s,
|
|
39
|
+
// and past that this call awaits a cloud fetch measuring ~355ms. Since a human types
|
|
40
|
+
// prompts minutes apart, nearly every one of these went to the cloud — so the 250ms budget
|
|
41
|
+
// this used to carry lost the race almost every time, failed open, and printed nothing. A
|
|
42
|
+
// hook that silently does not fire is indistinguishable from having no teammates, which is
|
|
43
|
+
// why it went unnoticed for a release.
|
|
44
|
+
//
|
|
45
|
+
// 2000ms is a ceiling on how long a *degraded* backend may hold up a prompt, not a target:
|
|
46
|
+
// the happy path is 2ms cached or ~355ms fetched. It must stay in step with
|
|
47
|
+
// ROSTER_HOOK_TIMEOUT_MS in @popoverinstall/shared, which this dependency-free script
|
|
48
|
+
// cannot import — packages/shared/test/roster-cache.test.ts fails if they drift.
|
|
49
|
+
//
|
|
40
50
|
// `cwd` matters most here of anywhere: this fires on the first prompt of a session, which
|
|
41
51
|
// is exactly when the daemon may not yet have resolved that session's repo — and the line
|
|
42
52
|
// it prints claims the agents are "in this repo". Without the hint an unplaceable caller
|
|
43
53
|
// is scoped by recency across the whole machine, so the claim could be false.
|
|
44
54
|
const reply = await request(
|
|
45
55
|
{ t: "roster", id: "hook", refresh: false, fromSessionId: sessionId, cwd: process.cwd() },
|
|
46
|
-
{ timeoutMs:
|
|
56
|
+
{ timeoutMs: 2000 },
|
|
47
57
|
);
|
|
48
58
|
|
|
49
59
|
// Daemon down, or signed out. Silence is right: the skill tells an agent how to read a
|
|
@@ -130,11 +130,19 @@ match, relay that instead of trying a different agent.
|
|
|
130
130
|
|
|
131
131
|
A fork hands over **this entire conversation**, frozen, and the recipient continues it in
|
|
132
132
|
their own session. Nothing comes back. That includes the contents of every file read into the
|
|
133
|
-
context, so it is a far larger disclosure than an ask
|
|
134
|
-
|
|
133
|
+
context, so it is a far larger disclosure than an ask.
|
|
134
|
+
|
|
135
|
+
**Creating one is the user's alone.** It happens when they ask for it in as many words, never
|
|
136
|
+
on their behalf — and "that would be useful" is not a yes.
|
|
137
|
+
|
|
138
|
+
Saying that a fork would fit is a different act from making one, and it is worth doing once.
|
|
139
|
+
The moment for a fork is one the user is usually too deep in the work to notice: they are going
|
|
140
|
+
off shift, or about to re-explain an hour of debugging to a colleague by hand, or trading asks
|
|
141
|
+
back and forth on what was never really one question. Say so plainly, say what the fork would
|
|
142
|
+
include, and leave it there. If they pass, do not raise it again.
|
|
135
143
|
|
|
136
144
|
When the user wants an *answer* rather than to hand over the whole conversation, an ask is the
|
|
137
|
-
cheaper and more private thing. Offer
|
|
145
|
+
cheaper and more private thing. Offer that instead.
|
|
138
146
|
|
|
139
147
|
## When it does not work
|
|
140
148
|
|