@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 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
@@ -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.";
@@ -1 +1 @@
1
- {"version":3,"file":"next-steps.d.ts","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,OAAO,6CAA6C,CAAC;AAClE,eAAO,MAAM,iBAAiB,2EAC4C,CAAC;AAwB3E,wBAAgB,SAAS,IAAI,IAAI,CA4ChC"}
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"}
@@ -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"));
@@ -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;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAC5B,wEAAwE,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,YAAY,GAAG;IACnB,0DAA0D;IAC1D,0DAA0D;IAC1D,sDAAsD;CACvD,CAAC;AAEF,MAAM,UAAU,SAAS;IACvB,kFAAkF;IAClF,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,KAAK,EAAE,CAAC;IACR,GAAG,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,0BAA0B,CAAC;QAChD,KAAK,EAAE;YACL,EAAE;YACF,GAAG,IAAI,CAAC,GAAG,KAAK,+CAA+C,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACtF,GAAG,IAAI,CAAC,4DAA4D,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1F,EAAE;SACH;QACD,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC;IACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IAC7F,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAEpF,KAAK,EAAE,CAAC;IACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC;;;;;;WAMG;QACH,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/B,2FAA2F;QAC3F,iEAAiE;QACjE,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,EAAE,CAAC;IACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,CAAC;IACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,6CAA6C;AAC7C,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"next-steps.js","sourceRoot":"","sources":["../src/next-steps.ts"],"names":[],"mappings":"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"}
@@ -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,CAiCR;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"}
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");
@@ -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.0",
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.0",
45
- "@popoverinstall/shared": "0.8.0"
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.0",
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 the installer (`curl -fsSL <host>/install | sh`),
71
- which is the only path that also delivers the daemon. See the repo root README.
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
@@ -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. Sharing a conversation is a disclosure, and it should always be something they
104
- asked for in as many words.
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 would be a
34
- // sixth of the whole budget.
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` is what makes the tight timeout survivable this reads whatever the
38
- // daemon already has, so it costs one socket round trip and no network. A hook sitting
39
- // between a keystroke and the model must never be the thing that calls the cloud.
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: 250 },
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, and it is only ever something the user
134
- asks for in as many words — never something you suggest doing on their behalf and then do.
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 it.
145
+ cheaper and more private thing. Offer that instead.
138
146
 
139
147
  ## When it does not work
140
148