@popoverinstall/cli 0.4.0 → 0.5.0
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 +119 -0
- package/dist/doctor.js +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +129 -52
- package/dist/index.js.map +1 -1
- package/dist/setup.js +1 -1
- package/dist/setup.js.map +1 -1
- package/package.json +5 -4
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +1 -1
- package/plugin/commands/team.md +44 -20
- package/plugin/hooks/hooks.json +6 -0
- package/plugin/mcp/index.mjs +69 -0
- package/plugin/scripts/deliver-messages.mjs +76 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
What `popover update` prints after it installs a new version. Write for the person who is
|
|
4
|
+
about to be handed the build — what changed for them, not what changed in the tree.
|
|
5
|
+
|
|
6
|
+
The format is parsed by `parseChangelog()` in `packages/shared/src/changelog.ts`, and the
|
|
7
|
+
parser doing the reading is the one shipped in the *previous* release, so keep to what is
|
|
8
|
+
already here:
|
|
9
|
+
|
|
10
|
+
- `## <version>` — newest first. Anything that is not a version triple is skipped, so an
|
|
11
|
+
`## Unreleased` heading is safe to keep at the top while a release is in flight.
|
|
12
|
+
- `### Features` and `### Fixes` — the only two sections that print. Others are ignored.
|
|
13
|
+
- `- ` bullets, one change each. Wrapped lines are joined; a blank line ends the bullet.
|
|
14
|
+
|
|
15
|
+
Every version that ships needs an entry — an update with nothing to print says nothing at
|
|
16
|
+
all, which reads as though the update did not happen.
|
|
17
|
+
|
|
18
|
+
## 0.5.0
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
- popover installs from npm now: `npm install -g @popoverinstall/cli`, then `popover setup`
|
|
23
|
+
and `popover login`. The same two commands on macOS, Linux and Windows.
|
|
24
|
+
- Running `popover` with no arguments tells you what to run next, and ticks each step off as
|
|
25
|
+
you finish it. It stops appearing once the machine is connected.
|
|
26
|
+
- `popover ask` and `popover tell` have moved into the session: use `/popover:team ask B1 …`
|
|
27
|
+
and `/popover:team tell B1 …` in Claude Code. Typing the old commands tells you where they
|
|
28
|
+
went. An agent asking has the context to write a question worth answering, and to do
|
|
29
|
+
something with the answer — a terminal has neither.
|
|
30
|
+
- `popover log` now lists the messages your agents were sent as well as the questions they
|
|
31
|
+
were asked.
|
|
32
|
+
|
|
33
|
+
### Fixes
|
|
34
|
+
|
|
35
|
+
- `popover setup` registers the Claude Code plugin correctly on a machine that has never had
|
|
36
|
+
it installed. It previously named a plugin marketplace that does not exist, which only
|
|
37
|
+
showed up on a genuinely fresh machine.
|
|
38
|
+
|
|
39
|
+
## 0.4.0
|
|
40
|
+
|
|
41
|
+
### Features
|
|
42
|
+
|
|
43
|
+
- Agents can tell each other things, not only ask. `/popover:team tell B1 the migration is
|
|
44
|
+
applied on prod` drops a heads-up into that agent's next prompt. Nothing comes back —
|
|
45
|
+
it is for facts that would otherwise cause a collision, not for questions.
|
|
46
|
+
- `/popover:team` now takes `ask` or `tell` as its first word. `/popover:team ask B1 why did you
|
|
47
|
+
rule out redis?` is what it always did, spelled out.
|
|
48
|
+
- You are told whenever a teammate's agent sends one of yours a message, so nothing reaches
|
|
49
|
+
your agent without you knowing. Messages between two of your own agents stay quiet.
|
|
50
|
+
- A message arrives named: which agent sent it, and who is running that agent. Your agent is
|
|
51
|
+
told to treat it as information from someone who cannot see what it is working on, rather
|
|
52
|
+
than as an instruction from you.
|
|
53
|
+
- Only agents working in the same repo can be told, the same rule that decides who you can
|
|
54
|
+
ask, and one agent can send another at most ten messages an hour.
|
|
55
|
+
- The activity page lists messages next to questions, so you can see who told whom what.
|
|
56
|
+
- `popover update` prints the release notes for what it just installed.
|
|
57
|
+
|
|
58
|
+
### Fixes
|
|
59
|
+
|
|
60
|
+
- An ask whose agent finishes without writing an answer now says the agent could not
|
|
61
|
+
answer, instead of the contradictory "The agent failed (success)".
|
|
62
|
+
|
|
63
|
+
## 0.3.0
|
|
64
|
+
|
|
65
|
+
### Features
|
|
66
|
+
|
|
67
|
+
- An agent sees only the teammates working in the same repo. Repos are identified by their
|
|
68
|
+
git remotes, so two clones match however they were cloned and whatever the folder is
|
|
69
|
+
called, and a directory with no shared remote stays private.
|
|
70
|
+
- Your teammates' machines now appear on the dashboard, read-only, alongside your own.
|
|
71
|
+
- The dashboard follows the organization picked in the switcher instead of showing
|
|
72
|
+
everything you can see at once.
|
|
73
|
+
- The dashboard, sign-in and onboarding screens are restyled to match the landing poster.
|
|
74
|
+
|
|
75
|
+
### Fixes
|
|
76
|
+
|
|
77
|
+
- A laptop that logged in more than once is one row on the machines page again, not three.
|
|
78
|
+
- Only the daemon can report a daemon version or a heartbeat, so a stale row can no longer
|
|
79
|
+
claim a machine is alive.
|
|
80
|
+
- Refreshing the team list no longer folds your own machines into your teammates'.
|
|
81
|
+
|
|
82
|
+
## 0.2.1
|
|
83
|
+
|
|
84
|
+
### Features
|
|
85
|
+
|
|
86
|
+
- Agent handles lost their dash: `G1`, not `G-1`.
|
|
87
|
+
- The roster marks which line is the reading agent's own, and the activity feed names both
|
|
88
|
+
ends of an ask.
|
|
89
|
+
|
|
90
|
+
### Fixes
|
|
91
|
+
|
|
92
|
+
- The asker's session is read from `CLAUDE_CODE_SESSION_ID` — the old name did not exist,
|
|
93
|
+
so asks were attributed to nobody.
|
|
94
|
+
- A missing `role` claim is named on the dashboard instead of rendering an empty page.
|
|
95
|
+
|
|
96
|
+
## 0.2.0
|
|
97
|
+
|
|
98
|
+
### Features
|
|
99
|
+
|
|
100
|
+
- `popover update` upgrades this machine in place and restarts the daemon on the new build.
|
|
101
|
+
- The roster prints one line when a newer version is available.
|
|
102
|
+
- Windows installer: `irm <host>/install.ps1 | iex`.
|
|
103
|
+
- The machines page stays current instead of freezing at whatever it rendered with.
|
|
104
|
+
|
|
105
|
+
### Fixes
|
|
106
|
+
|
|
107
|
+
- An agent that cannot be reached shows as unreachable rather than active.
|
|
108
|
+
- The daemon exits when it crashes and when its terminal closes, instead of lingering.
|
|
109
|
+
- Stopping the daemon on Windows marks its sessions offline, so teammates stop seeing rows
|
|
110
|
+
for agents that are gone.
|
|
111
|
+
- One machine row per install instead of one per login, and sessions stranded by an earlier
|
|
112
|
+
login on the same host are closed.
|
|
113
|
+
|
|
114
|
+
## 0.1.0
|
|
115
|
+
|
|
116
|
+
### Features
|
|
117
|
+
|
|
118
|
+
- First release: see your team's active Claude Code agents with `/popover:team`, and ask one of
|
|
119
|
+
them a question that a read-only fork answers from that agent's full context.
|
package/dist/doctor.js
CHANGED
|
@@ -39,7 +39,7 @@ export async function doctor() {
|
|
|
39
39
|
ok("popover plugin found");
|
|
40
40
|
else {
|
|
41
41
|
warn("popover plugin not detected in ~/.claude");
|
|
42
|
-
dim("Install it with: claude plugin install popover@
|
|
42
|
+
dim("Install it with: claude plugin install popover@popover");
|
|
43
43
|
dim("Without it, your sessions will not appear to your team.");
|
|
44
44
|
}
|
|
45
45
|
// 3. Credentials
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAe,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,6HAA6H;AAC7H,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAU,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,IAAa,EAAE,EAAE;QAC1C,GAAG,CAAC,GAAG,CAAC,CAAC;QACT,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,iBAAiB;IACjB,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CAAC,8BAA8B,EAAE,iDAAiD,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACxD,IAAI,CACF,UAAU,OAAO,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EACtE,oFAAoF,CACrF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,IAAI,cAAc;QAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC;SAC1C,CAAC;QACJ,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACjD,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4BA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,MAEb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { existsSync, mkdirSync, openSync, readFileSync, rmSync } from "node:fs";
|
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
|
-
import { PACKAGE_NAME, clearCredentials, daemonEntryPointerPath, daemonLogPath, defaultApiUrl, installCommand, loadCredentials, popoverHome, } from "@popoverinstall/shared";
|
|
7
|
+
import { PACKAGE_NAME, clearCredentials, daemonEntryPointerPath, daemonLogPath, defaultApiUrl, installCommand, loadCredentials, parseChangelog, popoverHome, releasesInstalled, renderReleaseNotes, } from "@popoverinstall/shared";
|
|
8
8
|
import { resolveDaemonEntry } from "./daemon-entry.js";
|
|
9
9
|
import { doctor } from "./doctor.js";
|
|
10
10
|
import { askDaemon, daemonIsRunning } from "./ipc-client.js";
|
|
@@ -40,8 +40,6 @@ async function main() {
|
|
|
40
40
|
return doctor();
|
|
41
41
|
case "team":
|
|
42
42
|
return team();
|
|
43
|
-
case "ask":
|
|
44
|
-
return ask(rest);
|
|
45
43
|
case "daemon":
|
|
46
44
|
return daemonCommand(rest[0] ?? "status");
|
|
47
45
|
case "log":
|
|
@@ -57,15 +55,76 @@ async function main() {
|
|
|
57
55
|
case "-v":
|
|
58
56
|
console.log(VERSION);
|
|
59
57
|
return 0;
|
|
58
|
+
// Both shipped before 0.4.1 and are muscle memory for anyone who used them, so they get
|
|
59
|
+
// a direction rather than "unknown command" and a wall of usage.
|
|
60
|
+
case "ask":
|
|
61
|
+
case "tell":
|
|
62
|
+
bad(`\`popover ${command}\` has moved into the session.`);
|
|
63
|
+
dim(`Run /popover:team ${command} <agent> <${command === "ask" ? "question" : "message"}> in Claude Code instead.`);
|
|
64
|
+
dim("An agent there has the context to write a question worth answering — and to");
|
|
65
|
+
dim("do something with the answer.");
|
|
66
|
+
return 1;
|
|
60
67
|
default:
|
|
61
68
|
bad(`Unknown command: ${command}`);
|
|
62
69
|
usage();
|
|
63
70
|
return 1;
|
|
64
71
|
}
|
|
65
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* The two commands that finish an install, for someone who just ran `npm install -g`.
|
|
75
|
+
*
|
|
76
|
+
* npm can place files, but it cannot register a Claude Code plugin or connect a machine —
|
|
77
|
+
* so a fresh install is inert until `setup` and `login` run, and nothing in npm's output
|
|
78
|
+
* says so. A `postinstall` hook is the obvious place for this and is deliberately not used
|
|
79
|
+
* (see `setup`); it would also be unreliable, because `--ignore-scripts` is common and
|
|
80
|
+
* corporate registries strip lifecycle scripts. Bare `popover` is what someone types first
|
|
81
|
+
* — `main()` defaults the command to `help` — so the guidance lives here, where it always
|
|
82
|
+
* runs.
|
|
83
|
+
*
|
|
84
|
+
* Both checks are synchronous reads of files written by the step they detect. Asking Claude
|
|
85
|
+
* Code whether the plugin is registered would be more direct, but it costs a subprocess on
|
|
86
|
+
* every argument-less `popover`.
|
|
87
|
+
*
|
|
88
|
+
* Returns null once both are done, so the prompt disappears rather than nagging.
|
|
89
|
+
*/
|
|
90
|
+
function gettingStarted() {
|
|
91
|
+
const steps = [
|
|
92
|
+
{
|
|
93
|
+
done: existsSync(daemonEntryPointerPath()),
|
|
94
|
+
command: "popover setup",
|
|
95
|
+
what: "Register the Claude Code plugin",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
done: loadCredentials() !== null,
|
|
99
|
+
command: "popover login",
|
|
100
|
+
what: "Connect this machine to your team",
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
if (steps.every((s) => s.done))
|
|
104
|
+
return null;
|
|
105
|
+
const lines = steps.map(({ done, command, what }, i) => {
|
|
106
|
+
// Padded to a common width before colouring, so the ✓ and the "2." line up: the
|
|
107
|
+
// escape codes have no width but `padEnd` cannot know that.
|
|
108
|
+
const marker = (done ? "✓" : `${i + 1}.`).padEnd(2);
|
|
109
|
+
const name = command.padEnd(16);
|
|
110
|
+
return done
|
|
111
|
+
? ` ${c.green(marker)} ${c.dim(name)}${c.dim(what)}`
|
|
112
|
+
: ` ${c.bold(marker)} ${c.bold(name)}${what}`;
|
|
113
|
+
});
|
|
114
|
+
return ` ${c.bold("Finish installing")} — npm placed the files, these connect them:
|
|
115
|
+
|
|
116
|
+
${lines.join("\n")}
|
|
117
|
+
|
|
118
|
+
${c.dim("Then run")} ${c.cyan("/popover:team")} ${c.dim("inside Claude Code to see your teammates' agents.")}
|
|
119
|
+
`;
|
|
120
|
+
}
|
|
66
121
|
function usage() {
|
|
122
|
+
const next = gettingStarted();
|
|
67
123
|
console.log(`
|
|
68
|
-
${c.bold("popover")} —
|
|
124
|
+
${c.bold("popover")} — connect this machine, and see what your team's agents are doing
|
|
125
|
+
${next ? `\n${next}` : ""}
|
|
126
|
+
Asking and telling happen inside a session, where the agent doing them has the
|
|
127
|
+
context to be worth reading: ${c.bold("/popover:team ask B1 …")} and ${c.bold("/popover:team tell B1 …")}
|
|
69
128
|
|
|
70
129
|
${c.bold("popover login")} [--api URL] Connect this machine to your team
|
|
71
130
|
${c.bold("popover logout")} Forget this machine's credentials
|
|
@@ -73,10 +132,9 @@ ${c.bold("popover")} — talk to your teammates' Claude Code agents
|
|
|
73
132
|
${c.bold("popover update")} Upgrade to the newest version and restart the daemon
|
|
74
133
|
${c.bold("popover status")} Show this machine's sessions and connection
|
|
75
134
|
${c.bold("popover team")} Print the team roster
|
|
76
|
-
${c.bold("popover ask")} <who> <question> Ask a teammate's agent directly
|
|
77
135
|
${c.bold("popover doctor")} Diagnose setup problems
|
|
78
136
|
${c.bold("popover daemon")} <start|stop|restart|status|logs>
|
|
79
|
-
${c.bold("popover log")} [--lines N] Recent questions
|
|
137
|
+
${c.bold("popover log")} [--lines N] Recent questions and messages your agents received
|
|
80
138
|
${c.bold("popover uninstall")} Remove popover from this machine
|
|
81
139
|
`);
|
|
82
140
|
}
|
|
@@ -132,11 +190,65 @@ async function update() {
|
|
|
132
190
|
// Re-register the plugin at its new version before restarting, so Claude Code and the
|
|
133
191
|
// daemon come back up on the same build.
|
|
134
192
|
await setup({ force: true });
|
|
193
|
+
// Read after npm has replaced the install directory, so this is what actually landed
|
|
194
|
+
// rather than what the registry advertised a moment ago.
|
|
195
|
+
const after = installedVersion() ?? expected ?? VERSION;
|
|
135
196
|
const started = await daemonCommand("start");
|
|
136
|
-
|
|
197
|
+
if (after === VERSION)
|
|
198
|
+
ok(`Reinstalled ${after}.`);
|
|
199
|
+
else
|
|
200
|
+
ok(`Updated ${VERSION} → ${after}.`);
|
|
201
|
+
if (after !== VERSION)
|
|
202
|
+
printReleaseNotes(VERSION, after);
|
|
137
203
|
dim("Restart Claude Code to pick up the new plugin; the daemon is already on the new build.");
|
|
138
204
|
return started;
|
|
139
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* What arrived, printed from the CHANGELOG.md that npm just installed beside us — see the
|
|
208
|
+
* header of packages/shared/src/changelog.ts for why it is read off disk rather than
|
|
209
|
+
* compiled in.
|
|
210
|
+
*
|
|
211
|
+
* Reads the *new* package's copy, which is the point: the changelog that landed is the one
|
|
212
|
+
* describing what landed. `prepack` stages it into the package (see stage-plugin.mjs),
|
|
213
|
+
* because npm can only pack files inside the package directory.
|
|
214
|
+
*
|
|
215
|
+
* Silent whenever there is nothing trustworthy to print: no changelog in the tree (a dev
|
|
216
|
+
* checkout, or a release predating this), or no entry covering the range. The update
|
|
217
|
+
* succeeded either way, and a warning about missing release notes would read as though it
|
|
218
|
+
* had not.
|
|
219
|
+
*/
|
|
220
|
+
function printReleaseNotes(before, after) {
|
|
221
|
+
let markdown;
|
|
222
|
+
try {
|
|
223
|
+
markdown = readFileSync(new URL("../CHANGELOG.md", import.meta.url), "utf8");
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const notes = renderReleaseNotes(releasesInstalled(parseChangelog(markdown), before, after), process.stdout.columns ?? 80);
|
|
229
|
+
if (!notes)
|
|
230
|
+
return;
|
|
231
|
+
console.log("");
|
|
232
|
+
console.log(` ${c.bold("What's new")}`);
|
|
233
|
+
console.log("");
|
|
234
|
+
console.log(notes);
|
|
235
|
+
console.log("");
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* The version now on disk, re-read after npm has replaced the install directory.
|
|
239
|
+
*
|
|
240
|
+
* `VERSION` at the top of this file was read when the process started, so it is the build
|
|
241
|
+
* being replaced. This is the one that landed. Deliberately not cached: the whole point is
|
|
242
|
+
* that the file changed underneath us mid-run.
|
|
243
|
+
*/
|
|
244
|
+
function installedVersion() {
|
|
245
|
+
try {
|
|
246
|
+
return (JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version ?? null);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
140
252
|
/**
|
|
141
253
|
* Undo what `popover setup` did, in the order that keeps the machine consistent if any
|
|
142
254
|
* single step fails: stop publishing, then unhook Claude Code.
|
|
@@ -216,48 +328,6 @@ async function team() {
|
|
|
216
328
|
console.log("");
|
|
217
329
|
return 0;
|
|
218
330
|
}
|
|
219
|
-
async function ask(args) {
|
|
220
|
-
const [target, ...questionParts] = args;
|
|
221
|
-
const question = questionParts.join(" ").trim();
|
|
222
|
-
if (!target || !question) {
|
|
223
|
-
bad("Usage: popover ask <agent> <question>");
|
|
224
|
-
dim('e.g. popover ask B1 "why did you rule out redis?"');
|
|
225
|
-
return 1;
|
|
226
|
-
}
|
|
227
|
-
process.stdout.write(c.dim(` Asking ${target}…`));
|
|
228
|
-
const started = Date.now();
|
|
229
|
-
const ticker = setInterval(() => process.stdout.write(c.dim(".")), 2000);
|
|
230
|
-
const reply = await askDaemon({
|
|
231
|
-
t: "ask",
|
|
232
|
-
id: "cli-ask",
|
|
233
|
-
req: { target, question, timeoutSeconds: 90 },
|
|
234
|
-
cwd: process.cwd(),
|
|
235
|
-
}, 120_000);
|
|
236
|
-
clearInterval(ticker);
|
|
237
|
-
console.log("");
|
|
238
|
-
if (!reply) {
|
|
239
|
-
bad("The daemon is not responding.");
|
|
240
|
-
return 1;
|
|
241
|
-
}
|
|
242
|
-
if (reply.t === "error") {
|
|
243
|
-
bad(reply.message);
|
|
244
|
-
return 1;
|
|
245
|
-
}
|
|
246
|
-
if (reply.t !== "ask.ok") {
|
|
247
|
-
bad("Unexpected response from the daemon.");
|
|
248
|
-
return 1;
|
|
249
|
-
}
|
|
250
|
-
const { answer } = reply;
|
|
251
|
-
const by = answer.answeredBy;
|
|
252
|
-
console.log("");
|
|
253
|
-
console.log(c.bold(by ? `${by.handle} — ${by.ownerName} (${by.repo})` : "Answer"));
|
|
254
|
-
console.log("");
|
|
255
|
-
console.log(answer.answer ?? "(no answer)");
|
|
256
|
-
console.log("");
|
|
257
|
-
dim(`${((Date.now() - started) / 1000).toFixed(1)}s` +
|
|
258
|
-
(answer.costUsd != null ? ` · $${answer.costUsd.toFixed(3)} on their account` : ""));
|
|
259
|
-
return 0;
|
|
260
|
-
}
|
|
261
331
|
async function daemonCommand(sub) {
|
|
262
332
|
switch (sub) {
|
|
263
333
|
case "start": {
|
|
@@ -364,7 +434,7 @@ async function daemonCommand(sub) {
|
|
|
364
434
|
function showLog(limit) {
|
|
365
435
|
const file = path.join(popoverHome(), "notifications.jsonl");
|
|
366
436
|
if (!existsSync(file)) {
|
|
367
|
-
info("No teammate has asked your agents anything yet.");
|
|
437
|
+
info("No teammate has asked or told your agents anything yet.");
|
|
368
438
|
return 0;
|
|
369
439
|
}
|
|
370
440
|
const lines = readFileSync(file, "utf8").split("\n").filter(Boolean).slice(-limit);
|
|
@@ -372,8 +442,15 @@ function showLog(limit) {
|
|
|
372
442
|
for (const line of lines) {
|
|
373
443
|
try {
|
|
374
444
|
const entry = JSON.parse(line);
|
|
375
|
-
|
|
376
|
-
|
|
445
|
+
// Two shapes share this file. Asks predate the `kind` field and have none, so a
|
|
446
|
+
// missing kind means ask rather than unknown — reading it the other way round would
|
|
447
|
+
// blank every entry written before tells existed.
|
|
448
|
+
const isTell = entry.kind === "tell";
|
|
449
|
+
const who = isTell ? entry.senderName : entry.askerName;
|
|
450
|
+
const verb = isTell ? "told" : "→";
|
|
451
|
+
const body = isTell ? entry.message : entry.question;
|
|
452
|
+
console.log(`${c.dim(new Date(entry.at).toLocaleString())} ${c.bold(who ?? "someone")} ${verb} ${entry.handle} ${c.dim(`(${entry.repo})`)}`);
|
|
453
|
+
console.log(` ${body ?? ""}`);
|
|
377
454
|
console.log("");
|
|
378
455
|
}
|
|
379
456
|
catch {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CACvC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAClE,CAAC,OAAO,CAAC;AAEV,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1D,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEvD,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEpD,KAAK,QAAQ;YACX,gBAAgB,EAAE,CAAC;YACnB,EAAE,CAAC,gEAAgE,CAAC,CAAC;YACrE,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAC1E,OAAO,CAAC,CAAC;QAEX,KAAK,QAAQ;YACX,OAAO,MAAM,EAAE,CAAC;QAElB,KAAK,QAAQ;YACX,OAAO,MAAM,EAAE,CAAC;QAElB,KAAK,QAAQ;YACX,OAAO,MAAM,EAAE,CAAC;QAElB,KAAK,MAAM;YACT,OAAO,IAAI,EAAE,CAAC;QAEhB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAE5C,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtD,KAAK,WAAW;YACd,OAAO,SAAS,EAAE,CAAC;QAErB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,CAAC;QAEX,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QAEX,wFAAwF;QACxF,iEAAiE;QACjE,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,GAAG,CAAC,aAAa,OAAO,gCAAgC,CAAC,CAAC;YAC1D,GAAG,CACD,qBAAqB,OAAO,aAAa,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,2BAA2B,CAC/G,CAAC;YACF,GAAG,CAAC,6EAA6E,CAAC,CAAC;YACnF,GAAG,CAAC,+BAA+B,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QAEX;YACE,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG;QACZ;YACE,IAAI,EAAE,UAAU,CAAC,sBAAsB,EAAE,CAAC;YAC1C,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,iCAAiC;SACxC;QACD;YACE,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI;YAChC,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,mCAAmC;SAC1C;KACF,CAAC;IACF,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACrD,gFAAgF;QAChF,4DAA4D;QAC5D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,IAAI;YACT,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACvD,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;;EAEvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;IAEd,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,mDAAmD,CAAC;CAC7G,CAAC;AACF,CAAC;AAED,SAAS,KAAK;IACZ,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC;EACZ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;EACjB,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;iCAEQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;;IAEtG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IACvB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IACtB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IACrB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;CAC9B,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,KAAK,UAAU,MAAM;IACnB,kFAAkF;IAClF,iCAAiC;IACjC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,sFAAsF;IACtF,oFAAoF;IACpF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,YAAY,YAAY,KAAK,OAAO,MAAM,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC;IACxE,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC,EAAE;YACzF,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAE,GAA2B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,uBAAuB,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/C,uEAAuE;QACvE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sFAAsF;IACtF,yCAAyC;IACzC,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7B,qFAAqF;IACrF,yDAAyD;IACzD,MAAM,KAAK,GAAG,gBAAgB,EAAE,IAAI,QAAQ,IAAI,OAAO,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,OAAO;QAAE,EAAE,CAAC,eAAe,KAAK,GAAG,CAAC,CAAC;;QAC9C,EAAE,CAAC,WAAW,OAAO,MAAM,KAAK,GAAG,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,OAAO;QAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzD,GAAG,CAAC,wFAAwF,CAAC,CAAC;IAC9F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAAC,MAAqB,EAAE,KAAa;IAC7D,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAC9B,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAC1D,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAC7B,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAC9F,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,SAAS;IACtB,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI;QACjB,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;QAClC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC/C,EAAE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,kFAAkF;QACpF,CAAC;IACH,CAAC;IACD,EAAE,CAAC,2BAA2B,CAAC,CAAC;IAEhC,mFAAmF;IACnF,sFAAsF;IACtF,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,CAAC,sBAAsB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,EAAE,CAAC,4BAA4B,CAAC,CAAC;IAEjC,GAAG,CAAC,oCAAoC,IAAI,6CAA6C,CAAC,CAAC;IAC3F,GAAG,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;IAEhE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,EAAE,CAAC,oBAAoB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAExC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC;QACrF,kFAAkF;QAClF,mDAAmD;QACnD,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;IACxE,IAAI,KAAK,EAAE,CAAC,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,0FAA0F;IAC1F,6FAA6F;IAC7F,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAC9D,KAAK,CACN,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,6DAA6D,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QAC5B,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,CAAC;AACX,CAAC;AAGD,KAAK,UAAU,aAAa,CAAC,GAAW;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,MAAM,eAAe,EAAE,EAAE,CAAC;gBAC5B,EAAE,CAAC,4BAA4B,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBACxC,GAAG,CAAC,uEAAuE,CAAC,CAAC;gBAC7E,OAAO,CAAC,CAAC;YACX,CAAC;YACD,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC;YACzE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;gBAC7C,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC;gBAC3B,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,EAAE,CAAC;YAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,IAAI,MAAM,eAAe,EAAE,EAAE,CAAC;oBAC5B,EAAE,CAAC,iBAAiB,CAAC,CAAC;oBACtB,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC;YACD,GAAG,CAAC,sDAAsD,CAAC,CAAC;YAC5D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,gFAAgF;YAChF,uEAAuE;YACvE,mFAAmF;YACnF,6DAA6D;YAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,KAAK,EAAE,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;wBAC/B,EAAE,CAAC,iBAAiB,CAAC,CAAC;wBACtB,OAAO,CAAC,CAAC;oBACX,CAAC;oBACD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAC5E,CAAC;YAED,0EAA0E;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBACpD,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAChC,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7B,EAAE,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAChC,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,KAAK,SAAS;YACZ,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAEhC,KAAK,QAAQ;YACX,IAAI,MAAM,eAAe,EAAE,EAAE,CAAC;gBAC5B,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBACzB,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC/B,OAAO,CAAC,CAAC;QAEX,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC3B,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAChF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,MAAM,GACV,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QAED;YACE,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,gFAAgF;YAChF,oFAAoF;YACpF,kDAAkD;YAClD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAErD,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CACjI,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAC,IAAc,EAAE,IAAY;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACb,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/setup.js
CHANGED
|
@@ -48,7 +48,7 @@ export async function setup({ force = false } = {}) {
|
|
|
48
48
|
await claude(["plugin", "marketplace", "remove", "popover"]).catch(() => { });
|
|
49
49
|
try {
|
|
50
50
|
await claude(["plugin", "marketplace", "add", marketplace]);
|
|
51
|
-
await claude(["plugin", "install", "popover@
|
|
51
|
+
await claude(["plugin", "install", "popover@popover", "--scope", "user", "-y"]);
|
|
52
52
|
}
|
|
53
53
|
catch (err) {
|
|
54
54
|
bad(`Could not register the plugin: ${err instanceof Error ? err.message : String(err)}`);
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE;IAChD,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,+BAA+B,CAAC,CAAC;QACrC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,UAAU,OAAO,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7E,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAC1F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,GAAG,CAAC,gDAAgD,CAAC,CAAC;QACtD,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAC1F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,EAAE,CAAC;QACzC,EAAE,CAAC,wCAAwC,CAAC,CAAC;QAC7C,OAAO,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,uFAAuF;IACvF,qFAAqF;IACrF,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC5C,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.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.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "See your teammates' active Claude Code agents and ask them questions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -33,14 +33,15 @@
|
|
|
33
33
|
"dist",
|
|
34
34
|
"plugin",
|
|
35
35
|
".claude-plugin",
|
|
36
|
-
"README.md"
|
|
36
|
+
"README.md",
|
|
37
|
+
"CHANGELOG.md"
|
|
37
38
|
],
|
|
38
39
|
"scripts": {
|
|
39
40
|
"build": "tsc -b",
|
|
40
41
|
"prepack": "node ../../scripts/stage-plugin.mjs && tsc -b"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
43
|
-
"@popoverinstall/daemon": "0.
|
|
44
|
-
"@popoverinstall/shared": "0.
|
|
44
|
+
"@popoverinstall/daemon": "0.5.0",
|
|
45
|
+
"@popoverinstall/shared": "0.5.0"
|
|
45
46
|
}
|
|
46
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.
|
|
6
|
+
"version": "0.5.0",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Quolabs"
|
|
9
9
|
},
|
package/plugin/README.md
CHANGED
|
@@ -45,7 +45,7 @@ duplicate ~15 lines of `@popoverinstall/shared` on purpose.
|
|
|
45
45
|
```bash
|
|
46
46
|
npm run build # from the repo root
|
|
47
47
|
claude plugin marketplace add "$(pwd)" # absolute; a bare `.` is rejected
|
|
48
|
-
claude plugin install popover@
|
|
48
|
+
claude plugin install popover@popover -y
|
|
49
49
|
claude plugin uninstall popover # to undo
|
|
50
50
|
```
|
|
51
51
|
|
package/plugin/commands/team.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: See your team's active Claude Code agents in this repo
|
|
2
|
+
description: See your team's active Claude Code agents in this repo, ask one a question, or tell one something
|
|
3
3
|
# Quoted because an unquoted value starting with `[` is parsed as a YAML flow sequence,
|
|
4
4
|
# which fails and silently drops EVERY field here, allowed-tools included.
|
|
5
|
-
argument-hint: "[agent-handle] [question]"
|
|
6
|
-
allowed-tools: mcp__plugin_popover_popover__team_list, mcp__plugin_popover_popover__team_ask, AskUserQuestion
|
|
5
|
+
argument-hint: "[ask|tell] [agent-handle] [question or message]"
|
|
6
|
+
allowed-tools: mcp__plugin_popover_popover__team_list, mcp__plugin_popover_popover__team_ask, mcp__plugin_popover_popover__team_tell, AskUserQuestion
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Team agents
|
|
@@ -11,25 +11,24 @@ allowed-tools: mcp__plugin_popover_popover__team_list, mcp__plugin_popover_popov
|
|
|
11
11
|
The user ran `/popover:team`. Arguments, which may be empty: **$ARGUMENTS**
|
|
12
12
|
|
|
13
13
|
Only agents working in **this repo** are visible. A teammate running Claude Code in a
|
|
14
|
-
different repository is neither listed nor
|
|
14
|
+
different repository is neither listed nor reachable, so an empty roster means nobody else is
|
|
15
15
|
working *here* — not that the team is idle. Say it that way if it comes up.
|
|
16
16
|
|
|
17
|
-
Follow exactly one of these
|
|
17
|
+
The first word of the arguments chooses what to do. Follow exactly one of these paths.
|
|
18
18
|
|
|
19
19
|
## 1. No arguments — show the roster
|
|
20
20
|
|
|
21
21
|
Call `mcp__plugin_popover_popover__team_list`, then print what it returns **verbatim** in a
|
|
22
22
|
fenced block. Do not reformat it, re-sort it, or add agents that are not in it.
|
|
23
23
|
|
|
24
|
-
Then add one short line
|
|
25
|
-
`/popover:team B1 why did you rule out redis?`
|
|
24
|
+
Then add one short line showing both forms:
|
|
25
|
+
`/popover:team ask B1 why did you rule out redis?` · `/popover:team tell B1 the migration is applied`
|
|
26
26
|
|
|
27
|
-
Stop there. Do not ask
|
|
27
|
+
Stop there. Do not ask or tell anything on the user's behalf.
|
|
28
28
|
|
|
29
|
-
## 2.
|
|
29
|
+
## 2. `ask <handle> <question>` — ask it and wait
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
by a question, call `mcp__plugin_popover_popover__team_ask` with:
|
|
31
|
+
Call `mcp__plugin_popover_popover__team_ask` with:
|
|
33
32
|
|
|
34
33
|
- `target`: the handle or name they used, exactly as typed
|
|
35
34
|
- `question`: the rest of their message, as a self-contained question — the answering
|
|
@@ -43,21 +42,46 @@ When the answer comes back, show it clearly attributed:
|
|
|
43
42
|
Then say how it bears on what you are working on, if it does. If the tool returns an
|
|
44
43
|
error, relay it plainly — do not retry a different agent unless the user asks.
|
|
45
44
|
|
|
46
|
-
## 3.
|
|
45
|
+
## 3. `tell <handle> <message>` — send it, expect nothing back
|
|
46
|
+
|
|
47
|
+
Call `mcp__plugin_popover_popover__team_tell` with:
|
|
48
|
+
|
|
49
|
+
- `target`: the handle or name they used, exactly as typed
|
|
50
|
+
- `message`: the rest of their message, made self-contained the same way — it arrives with
|
|
51
|
+
no context of its own, so name the thing rather than referring to it
|
|
52
|
+
|
|
53
|
+
There is no answer. Confirm what was sent and to whom, in one line, and stop:
|
|
54
|
+
|
|
55
|
+
> Told **B1** (Bob Chen): the repo_keys migration is applied on prod.
|
|
56
|
+
|
|
57
|
+
A tell is for facts about shared state that would otherwise cause a collision. If the user
|
|
58
|
+
is trying to give another agent instructions or hand it work, say that a tell does not do
|
|
59
|
+
that — the receiving agent is told to treat it as information rather than a directive — and
|
|
60
|
+
offer to ask instead.
|
|
61
|
+
|
|
62
|
+
## 4. A question or message with no clear target — pick one
|
|
47
63
|
|
|
48
64
|
Call `mcp__plugin_popover_popover__team_list` first. Then:
|
|
49
65
|
|
|
50
|
-
- If exactly one agent plausibly fits,
|
|
66
|
+
- If exactly one agent plausibly fits, use it and say which one you chose and why.
|
|
51
67
|
- If several fit, call `AskUserQuestion` with up to 4 of them as options (label = the
|
|
52
|
-
handle, description = owner, repo, and what it is doing). Then
|
|
68
|
+
handle, description = owner, repo, and what it is doing). Then use the chosen one.
|
|
53
69
|
- If none fit, say so and show the roster instead.
|
|
54
70
|
|
|
71
|
+
If it is unclear whether the user meant to ask or to tell, prefer **ask** — it interrupts
|
|
72
|
+
nobody and costs only the answering machine some tokens, whereas a tell puts text into a
|
|
73
|
+
colleague's context and notifies them.
|
|
74
|
+
|
|
55
75
|
## Rules
|
|
56
76
|
|
|
57
77
|
- Never invent a handle. Only use ones `team_list` returned. A handle from earlier in this
|
|
58
|
-
conversation may since have gone out of scope; if
|
|
59
|
-
|
|
60
|
-
- Asking costs the *teammate* money and runs on *their* machine.
|
|
61
|
-
request; do not fan out to several agents
|
|
62
|
-
|
|
63
|
-
|
|
78
|
+
conversation may since have gone out of scope; if the tool says it does not match, relay
|
|
79
|
+
that rather than guessing at another agent.
|
|
80
|
+
- Asking costs the *teammate* money and runs on *their* machine. Telling costs their
|
|
81
|
+
attention and notifies them. One per request either way; do not fan out to several agents
|
|
82
|
+
unless explicitly asked.
|
|
83
|
+
- An answer comes from a read-only copy of their session. Their live session is not
|
|
84
|
+
interrupted and cannot be modified by an ask.
|
|
85
|
+
- A tell **is** delivered into their live session, before its next prompt. That is the one
|
|
86
|
+
thing in popover that reaches a running agent, so treat it as something the user should have
|
|
87
|
+
meant to do.
|
package/plugin/hooks/hooks.json
CHANGED
package/plugin/mcp/index.mjs
CHANGED
|
@@ -23,6 +23,7 @@ const SERVER_INFO = {
|
|
|
23
23
|
).version,
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
+
|
|
26
27
|
const TOOLS = [
|
|
27
28
|
{
|
|
28
29
|
name: "team_list",
|
|
@@ -73,6 +74,40 @@ const TOOLS = [
|
|
|
73
74
|
},
|
|
74
75
|
annotations: { readOnlyHint: true, openWorldHint: true, title: "Ask a teammate's agent" },
|
|
75
76
|
},
|
|
77
|
+
{
|
|
78
|
+
name: "team_tell",
|
|
79
|
+
description:
|
|
80
|
+
"Send a short heads-up to a teammate's agent working in this repo. Unlike team_ask " +
|
|
81
|
+
"there is no answer: the message is delivered into that agent's context before its " +
|
|
82
|
+
"next prompt, and nothing comes back. Use it for facts about shared state that would " +
|
|
83
|
+
"otherwise cause a collision — \"the migration is applied on prod\", \"I am rewriting " +
|
|
84
|
+
"globals.css, leave it alone\". Do not use it to give another agent instructions or " +
|
|
85
|
+
"assign it work: the receiving agent is told to treat your message as information " +
|
|
86
|
+
"from outside its conversation, not as a directive, and its user is notified that you " +
|
|
87
|
+
"sent it. Only agents in the same repository can be told, and you are limited to 10 " +
|
|
88
|
+
"messages an hour to any one agent.",
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: "object",
|
|
91
|
+
properties: {
|
|
92
|
+
target: {
|
|
93
|
+
type: "string",
|
|
94
|
+
description:
|
|
95
|
+
"Which agent to tell: a handle from team_list such as 'B1', or a teammate's " +
|
|
96
|
+
"name, or a repo name.",
|
|
97
|
+
},
|
|
98
|
+
message: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description:
|
|
101
|
+
"The heads-up, in one or two sentences. It arrives with no context of its own, " +
|
|
102
|
+
"so name the thing you are talking about rather than referring to it.",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
required: ["target", "message"],
|
|
106
|
+
additionalProperties: false,
|
|
107
|
+
},
|
|
108
|
+
// Not read-only: this writes into someone else's context and notifies a person.
|
|
109
|
+
annotations: { readOnlyHint: false, openWorldHint: true, title: "Tell a teammate's agent" },
|
|
110
|
+
},
|
|
76
111
|
];
|
|
77
112
|
|
|
78
113
|
// ---------------------------------------------------------------------------
|
|
@@ -157,6 +192,39 @@ async function callTeamAsk(args) {
|
|
|
157
192
|
return text(`Answer from ${attribution}:\n\n${answer.answer}${cost}`);
|
|
158
193
|
}
|
|
159
194
|
|
|
195
|
+
async function callTeamTell(args) {
|
|
196
|
+
const target = typeof args?.target === "string" ? args.target.trim() : "";
|
|
197
|
+
const message = typeof args?.message === "string" ? args.message.trim() : "";
|
|
198
|
+
|
|
199
|
+
if (!target) return errorText("`target` is required — call team_list to see the options.");
|
|
200
|
+
if (!message) return errorText("`message` is required.");
|
|
201
|
+
|
|
202
|
+
const reply = await request(
|
|
203
|
+
{
|
|
204
|
+
t: "tell",
|
|
205
|
+
id: rpcId(),
|
|
206
|
+
req: {
|
|
207
|
+
target,
|
|
208
|
+
message,
|
|
209
|
+
...(callerSessionId() ? { fromSessionId: callerSessionId() } : {}),
|
|
210
|
+
},
|
|
211
|
+
cwd: process.cwd(),
|
|
212
|
+
},
|
|
213
|
+
{ timeoutMs: 15000 },
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
if (!reply) return errorText(daemonDownMessage());
|
|
217
|
+
if (reply.t === "error") return errorText(explain(reply));
|
|
218
|
+
if (reply.t !== "tell.ok") return errorText("The popover daemon returned an unexpected response.");
|
|
219
|
+
|
|
220
|
+
// Says delivered-to, never read-by: a sender is deliberately told nothing about what
|
|
221
|
+
// happened to their message afterwards.
|
|
222
|
+
return text(
|
|
223
|
+
`Sent to ${reply.handle} (${reply.ownerName}). It will reach that agent before its next ` +
|
|
224
|
+
`prompt; there is no reply.`,
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
160
228
|
function explain(errorReply) {
|
|
161
229
|
switch (errorReply.code) {
|
|
162
230
|
// The daemon knows whether credentials are missing or merely unusable; relaying its
|
|
@@ -247,6 +315,7 @@ async function handle(message) {
|
|
|
247
315
|
try {
|
|
248
316
|
if (name === "team_list") return reply(id, await callTeamList());
|
|
249
317
|
if (name === "team_ask") return reply(id, await callTeamAsk(params?.arguments ?? {}));
|
|
318
|
+
if (name === "team_tell") return reply(id, await callTeamTell(params?.arguments ?? {}));
|
|
250
319
|
return replyError(id, -32602, `Unknown tool: ${name}`);
|
|
251
320
|
} catch (err) {
|
|
252
321
|
// A thrown handler must not kill the server; report it as a failed tool call.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Delivers tells into a live session.
|
|
3
|
+
//
|
|
4
|
+
// This is the one hook in the plugin that writes to stdout on purpose. Every other one is
|
|
5
|
+
// registered `async: true` and forbidden from printing, because for UserPromptSubmit stdout
|
|
6
|
+
// is injected into the model's context — see the header of emit-event.mjs. That is precisely
|
|
7
|
+
// the channel a tell needs, so this hook is synchronous and its output is the message.
|
|
8
|
+
//
|
|
9
|
+
// Which makes it the riskiest script here, and it is written accordingly:
|
|
10
|
+
//
|
|
11
|
+
// - It runs before every prompt the user submits, so it must be fast and must fail open.
|
|
12
|
+
// A missed heads-up is survivable; a prompt that hangs waiting on a dead daemon is not.
|
|
13
|
+
// - It prints only what the daemon hands back. The envelope is rendered on this machine
|
|
14
|
+
// from columns the database filled in, so a sender can neither forge the attribution nor
|
|
15
|
+
// strip the framing off their own message.
|
|
16
|
+
// - It stays silent inside a fork. Forks run the plugin's hooks like any other session, and
|
|
17
|
+
// a fork answering a teammate's question must never be handed a third party's text — its
|
|
18
|
+
// output goes back to whoever asked.
|
|
19
|
+
|
|
20
|
+
import { callerSessionId, request } from "./_ipc.mjs";
|
|
21
|
+
|
|
22
|
+
// The fork runner sets this when it spawns a read-only answer session.
|
|
23
|
+
if (process.env.CLAUDE_CODE_ENTRYPOINT === "popover-fork") process.exit(0);
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
// The payload carries session_id; the environment is the fallback, and one of the two is
|
|
27
|
+
// always present in a real session. Without a session there is no inbox to drain.
|
|
28
|
+
let sessionId = callerSessionId();
|
|
29
|
+
try {
|
|
30
|
+
const raw = await readStdinQuickly();
|
|
31
|
+
if (raw) sessionId = JSON.parse(raw)?.session_id || sessionId;
|
|
32
|
+
} catch {
|
|
33
|
+
// A malformed payload is not a reason to skip delivery; the env var still identifies us.
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (sessionId) {
|
|
37
|
+
const reply = await request(
|
|
38
|
+
{ t: "pending", id: "hook", fromSessionId: sessionId, limit: 3 },
|
|
39
|
+
{ timeoutMs: 300 },
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (reply?.t === "pending.ok" && reply.rendered) {
|
|
43
|
+
// The whole point of the script. Everything above exists to make this line safe.
|
|
44
|
+
process.stdout.write(`${reply.rendered}\n`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
} catch {
|
|
48
|
+
// Fail open, always. Whatever went wrong, the user's prompt must still go through.
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
process.exit(0);
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Read the hook payload, but never wait long for it.
|
|
55
|
+
*
|
|
56
|
+
* `readStdin` in _ipc.mjs allows two seconds, which is right for a fire-and-forget reporter
|
|
57
|
+
* and far too long for something sitting between a keystroke and the model.
|
|
58
|
+
*/
|
|
59
|
+
function readStdinQuickly(timeoutMs = 150) {
|
|
60
|
+
return new Promise((resolve) => {
|
|
61
|
+
let data = "";
|
|
62
|
+
const timer = setTimeout(() => resolve(data), timeoutMs);
|
|
63
|
+
process.stdin.setEncoding("utf8");
|
|
64
|
+
process.stdin.on("data", (chunk) => {
|
|
65
|
+
data += chunk;
|
|
66
|
+
});
|
|
67
|
+
process.stdin.on("end", () => {
|
|
68
|
+
clearTimeout(timer);
|
|
69
|
+
resolve(data);
|
|
70
|
+
});
|
|
71
|
+
process.stdin.on("error", () => {
|
|
72
|
+
clearTimeout(timer);
|
|
73
|
+
resolve(data);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|