aibroker 0.35.2 → 0.36.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/dist/core/hybrid.d.ts.map +1 -1
- package/dist/core/hybrid.js +6 -0
- package/dist/core/hybrid.js.map +1 -1
- package/dist/daemon/cli.js +78 -0
- package/dist/daemon/cli.js.map +1 -1
- package/dist/daemon/core-handlers.d.ts.map +1 -1
- package/dist/daemon/core-handlers.js +66 -1
- package/dist/daemon/core-handlers.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +13 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/machine.d.ts +63 -0
- package/dist/daemon/machine.d.ts.map +1 -0
- package/dist/daemon/machine.js +153 -0
- package/dist/daemon/machine.js.map +1 -0
- package/dist/daemon/manage.d.ts +77 -0
- package/dist/daemon/manage.d.ts.map +1 -0
- package/dist/daemon/manage.js +942 -0
- package/dist/daemon/manage.js.map +1 -0
- package/dist/daemon/peer-cli.d.ts +9 -0
- package/dist/daemon/peer-cli.d.ts.map +1 -0
- package/dist/daemon/peer-cli.js +164 -0
- package/dist/daemon/peer-cli.js.map +1 -0
- package/dist/daemon/peer-handlers.d.ts +35 -0
- package/dist/daemon/peer-handlers.d.ts.map +1 -0
- package/dist/daemon/peer-handlers.js +165 -0
- package/dist/daemon/peer-handlers.js.map +1 -0
- package/dist/daemon/standup.d.ts +69 -0
- package/dist/daemon/standup.d.ts.map +1 -0
- package/dist/daemon/standup.js +141 -0
- package/dist/daemon/standup.js.map +1 -0
- package/dist/ipc/peering.d.ts +103 -0
- package/dist/ipc/peering.d.ts.map +1 -0
- package/dist/ipc/peering.js +185 -0
- package/dist/ipc/peering.js.map +1 -0
- package/dist/ipc/server.d.ts +16 -0
- package/dist/ipc/server.d.ts.map +1 -1
- package/dist/ipc/server.js +76 -0
- package/dist/ipc/server.js.map +1 -1
- package/dist/mcp/index.js +45 -0
- package/dist/mcp/index.js.map +1 -1
- package/hooks/manage-hook.mjs +204 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/daemon/manage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/peer-cli.ts — pairing machines, and seeing the fleet.
|
|
3
|
+
*
|
|
4
|
+
* Two commands to pair, one to look. Pairing that takes four values typed into
|
|
5
|
+
* two machines gets done wrong at least once, and the wrong one is usually the
|
|
6
|
+
* secret, which fails in a way that looks like a network problem.
|
|
7
|
+
*/
|
|
8
|
+
export declare function runPeer(args: string[]): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=peer-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-cli.d.ts","sourceRoot":"","sources":["../../src/daemon/peer-cli.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoI3D"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/peer-cli.ts — pairing machines, and seeing the fleet.
|
|
3
|
+
*
|
|
4
|
+
* Two commands to pair, one to look. Pairing that takes four values typed into
|
|
5
|
+
* two machines gets done wrong at least once, and the wrong one is usually the
|
|
6
|
+
* secret, which fails in a way that looks like a network problem.
|
|
7
|
+
*/
|
|
8
|
+
import { WatcherClient } from "../ipc/client.js";
|
|
9
|
+
import { DAEMON_SOCKET_PATH } from "./index.js";
|
|
10
|
+
function client() {
|
|
11
|
+
return new WatcherClient(DAEMON_SOCKET_PATH);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Call the local daemon, and distinguish "it is not there" from "it said no".
|
|
15
|
+
*
|
|
16
|
+
* The first version reported every failure as "the local daemon did not
|
|
17
|
+
* answer", so a deliberate refusal — refusing to bind a wildcard address, for
|
|
18
|
+
* instance — was presented as the daemon being down. That sends the reader to
|
|
19
|
+
* check whether the service is running when the service is working correctly
|
|
20
|
+
* and telling them something important. A transport failure and a considered
|
|
21
|
+
* answer are different events and must not share a sentence.
|
|
22
|
+
*/
|
|
23
|
+
async function call(method, params) {
|
|
24
|
+
try {
|
|
25
|
+
return await client().call_raw(method, params);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
const msg = e.message ?? String(e);
|
|
29
|
+
const notRunning = /ENOENT|ECONNREFUSED|socket|not running/i.test(msg);
|
|
30
|
+
console.error(notRunning
|
|
31
|
+
? `the local daemon is not answering on its socket: ${msg}`
|
|
32
|
+
: msg);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export async function runPeer(args) {
|
|
37
|
+
const [sub, ...rest] = args;
|
|
38
|
+
switch (sub) {
|
|
39
|
+
case "invite": {
|
|
40
|
+
// The address is required and deliberately has no default. Guessing one
|
|
41
|
+
// means opening a port somewhere nobody chose.
|
|
42
|
+
const host = rest.find((a) => !a.startsWith("--"));
|
|
43
|
+
const portArg = rest[rest.indexOf("--port") + 1];
|
|
44
|
+
const nameArg = rest[rest.indexOf("--as") + 1];
|
|
45
|
+
if (!host) {
|
|
46
|
+
console.log("usage: aibroker peer invite <address-others-reach-me-on> [--port N] [--as name]");
|
|
47
|
+
console.log();
|
|
48
|
+
console.log("The address is the one the OTHER machine will dial. On a Tailscale network");
|
|
49
|
+
console.log("that is this machine's Tailscale address; for a local VM it is the address");
|
|
50
|
+
console.log("the guest sees the host as. There is no default on purpose.");
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
const r = await call("peer", {
|
|
54
|
+
action: "invite",
|
|
55
|
+
host,
|
|
56
|
+
port: rest.includes("--port") ? Number(portArg) : undefined,
|
|
57
|
+
name: rest.includes("--as") ? nameArg : undefined,
|
|
58
|
+
});
|
|
59
|
+
console.log(r.message ?? JSON.stringify(r));
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case "join": {
|
|
63
|
+
const invite = rest.join(" ").trim();
|
|
64
|
+
if (!invite) {
|
|
65
|
+
console.log("usage: aibroker peer join <the line the other machine printed>");
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
const r = await call("peer", { action: "join", invite });
|
|
69
|
+
console.log(r.message ?? JSON.stringify(r));
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case "forget": {
|
|
73
|
+
const name = rest[0];
|
|
74
|
+
if (!name) {
|
|
75
|
+
console.log("usage: aibroker peer forget <name>");
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const r = await call("peer", { action: "forget", name });
|
|
79
|
+
console.log(r.message ?? JSON.stringify(r));
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case "list":
|
|
83
|
+
case undefined: {
|
|
84
|
+
const r = await call("peer", { action: "list" });
|
|
85
|
+
console.log(r.listening ? `this hub accepts peers on ${r.listening}` : "this hub accepts no peers (no listener configured)");
|
|
86
|
+
if (!r.peers?.length) {
|
|
87
|
+
console.log("no machines paired. `aibroker peer invite <address>` on one, then `join` on the other.");
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
console.log();
|
|
91
|
+
for (const p of r.peers) {
|
|
92
|
+
console.log(` ${p.reachable ? "●" : "○"} ${p.name.padEnd(14)} ${p.address}${p.reachable ? "" : ` — ${p.detail}`}`);
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* fleet — every machine, what it can do, and where its work stands.
|
|
98
|
+
*
|
|
99
|
+
* The question a lead actually asks is not "is the network up" but "who is
|
|
100
|
+
* free, who can compile this, and is anybody's branch ready to look at".
|
|
101
|
+
* One command, because a status that takes three commands to assemble is a
|
|
102
|
+
* status nobody assembles.
|
|
103
|
+
*/
|
|
104
|
+
case "fleet": {
|
|
105
|
+
const { loadPeering, peerCall } = await import("../ipc/peering.js");
|
|
106
|
+
const { machineFacts, branchState } = await import("./machine.js");
|
|
107
|
+
const repo = rest.find((a) => !a.startsWith("--"));
|
|
108
|
+
const here = machineFacts();
|
|
109
|
+
const show = (label, m, checkout) => {
|
|
110
|
+
const caps = [
|
|
111
|
+
m.canDriveScreen ? "screen" : "headless",
|
|
112
|
+
`${m.cpus}cpu`,
|
|
113
|
+
`${m.memoryGb}GB`,
|
|
114
|
+
...(m.has ?? []),
|
|
115
|
+
].join(" · ");
|
|
116
|
+
console.log(` ${label.padEnd(16)} ${caps}`);
|
|
117
|
+
if (checkout?.branch) {
|
|
118
|
+
const bits = [
|
|
119
|
+
`on ${checkout.branch}`,
|
|
120
|
+
checkout.head ? `at ${checkout.head}` : null,
|
|
121
|
+
checkout.dirty ? `${checkout.dirty} uncommitted` : "clean",
|
|
122
|
+
checkout.ahead ? `${checkout.ahead} ahead` : null,
|
|
123
|
+
checkout.behind ? `${checkout.behind} behind` : null,
|
|
124
|
+
].filter(Boolean);
|
|
125
|
+
console.log(` ${" ".repeat(16)} ${bits.join(" · ")}`);
|
|
126
|
+
}
|
|
127
|
+
else if (checkout?.error) {
|
|
128
|
+
console.log(` ${" ".repeat(16)} ${checkout.error}`);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
console.log("this machine");
|
|
132
|
+
show(here.name, here, repo ? branchState(repo) : undefined);
|
|
133
|
+
const { peers } = loadPeering();
|
|
134
|
+
if (!peers.length)
|
|
135
|
+
return;
|
|
136
|
+
console.log("\npaired machines");
|
|
137
|
+
for (const p of peers) {
|
|
138
|
+
const r = await peerCall(p, "where", repo ? { repo } : {});
|
|
139
|
+
if (!r.ok) {
|
|
140
|
+
console.log(` ${p.name.padEnd(16)} unreachable — ${r.error}`);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
show(p.name, r.result.machine, r.result.checkout);
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case "standup": {
|
|
148
|
+
const { collectStandup, renderStandup } = await import("./standup.js");
|
|
149
|
+
const repo = rest.find((a) => !a.startsWith("--"));
|
|
150
|
+
console.log(renderStandup(await collectStandup(repo)));
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
default:
|
|
154
|
+
console.log("aibroker peer <invite|join|list|forget|fleet|standup>");
|
|
155
|
+
console.log();
|
|
156
|
+
console.log(" invite <address> on the machine to be reached; prints one line to copy");
|
|
157
|
+
console.log(" join <line> on the other machine; pastes it and proves it works");
|
|
158
|
+
console.log(" list who is paired, and reachable right now");
|
|
159
|
+
console.log(" forget <name> unpair one");
|
|
160
|
+
console.log(" fleet [repo] every machine: what it can do, and where its branch is");
|
|
161
|
+
console.log(" standup [repo] what moved, what is moving, what is blocked");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=peer-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-cli.js","sourceRoot":"","sources":["../../src/daemon/peer-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/peer-handlers.ts — pairing, and reaching sessions on another machine.
|
|
3
|
+
*
|
|
4
|
+
* The whole cross-machine surface is four verbs a person types once and then
|
|
5
|
+
* forgets: invite, join, list, forget. Everything after that is ordinary — a
|
|
6
|
+
* session on the guest appears in listings as `guest/CaseLeaf` and takes
|
|
7
|
+
* messages like any other, because the alternative is every call site growing a
|
|
8
|
+
* branch for "unless it is remote", and branches like that are never added
|
|
9
|
+
* everywhere they are needed.
|
|
10
|
+
*/
|
|
11
|
+
import type { IpcServer } from "../ipc/server.js";
|
|
12
|
+
/**
|
|
13
|
+
* Sessions on every paired hub, named `peer/session`.
|
|
14
|
+
*
|
|
15
|
+
* Best effort by design: a peer that is asleep, rebuilding or simply switched
|
|
16
|
+
* off must not stop the local list being returned. An unreachable peer is
|
|
17
|
+
* reported as unreachable rather than omitted, because a machine silently
|
|
18
|
+
* missing from a list is indistinguishable from a machine with no sessions —
|
|
19
|
+
* and those want opposite reactions.
|
|
20
|
+
*/
|
|
21
|
+
export declare function remoteSessions(): Promise<{
|
|
22
|
+
sessions: Array<Record<string, unknown>>;
|
|
23
|
+
unreachable: Array<{
|
|
24
|
+
peer: string;
|
|
25
|
+
why: string;
|
|
26
|
+
}>;
|
|
27
|
+
}>;
|
|
28
|
+
/** Forward a call to whichever peer owns the addressed session. */
|
|
29
|
+
export declare function forwardToPeer(target: string, method: string, params: Record<string, unknown>): Promise<{
|
|
30
|
+
ok: boolean;
|
|
31
|
+
result?: any;
|
|
32
|
+
error?: string;
|
|
33
|
+
} | null>;
|
|
34
|
+
export declare function registerPeerHandlers(server: IpcServer): void;
|
|
35
|
+
//# sourceMappingURL=peer-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-handlers.d.ts","sourceRoot":"","sources":["../../src/daemon/peer-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAclD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC9C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC,CA2BD;AAED,mEAAmE;AACnE,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAO/D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2H5D"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/peer-handlers.ts — pairing, and reaching sessions on another machine.
|
|
3
|
+
*
|
|
4
|
+
* The whole cross-machine surface is four verbs a person types once and then
|
|
5
|
+
* forgets: invite, join, list, forget. Everything after that is ordinary — a
|
|
6
|
+
* session on the guest appears in listings as `guest/CaseLeaf` and takes
|
|
7
|
+
* messages like any other, because the alternative is every call site growing a
|
|
8
|
+
* branch for "unless it is remote", and branches like that are never added
|
|
9
|
+
* everywhere they are needed.
|
|
10
|
+
*/
|
|
11
|
+
import { log } from "../core/log.js";
|
|
12
|
+
import { loadPeering, savePeering, newToken, makeInvite, readInvite, peerCall, rejectWildcard, splitRemote, } from "../ipc/peering.js";
|
|
13
|
+
/**
|
|
14
|
+
* Sessions on every paired hub, named `peer/session`.
|
|
15
|
+
*
|
|
16
|
+
* Best effort by design: a peer that is asleep, rebuilding or simply switched
|
|
17
|
+
* off must not stop the local list being returned. An unreachable peer is
|
|
18
|
+
* reported as unreachable rather than omitted, because a machine silently
|
|
19
|
+
* missing from a list is indistinguishable from a machine with no sessions —
|
|
20
|
+
* and those want opposite reactions.
|
|
21
|
+
*/
|
|
22
|
+
export async function remoteSessions() {
|
|
23
|
+
const { peers } = loadPeering();
|
|
24
|
+
const sessions = [];
|
|
25
|
+
const unreachable = [];
|
|
26
|
+
await Promise.all(peers.map(async (p) => {
|
|
27
|
+
const r = await peerCall(p, "sessions", {});
|
|
28
|
+
if (!r.ok) {
|
|
29
|
+
unreachable.push({ peer: p.name, why: r.error ?? "unknown" });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const s of r.result?.sessions ?? []) {
|
|
33
|
+
sessions.push({
|
|
34
|
+
...s,
|
|
35
|
+
// Qualified on the way in, so nothing downstream has to know the
|
|
36
|
+
// difference and two machines may hold a session of the same name.
|
|
37
|
+
name: `${p.name}/${s.paiName ?? s.name}`,
|
|
38
|
+
paiName: `${p.name}/${s.paiName ?? s.name}`,
|
|
39
|
+
peer: p.name,
|
|
40
|
+
remote: true,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
return { sessions, unreachable };
|
|
45
|
+
}
|
|
46
|
+
/** Forward a call to whichever peer owns the addressed session. */
|
|
47
|
+
export async function forwardToPeer(target, method, params) {
|
|
48
|
+
const split = splitRemote(target);
|
|
49
|
+
if (!split)
|
|
50
|
+
return null;
|
|
51
|
+
const peer = loadPeering().peers.find((p) => p.name.toLowerCase() === split.peer.toLowerCase());
|
|
52
|
+
if (!peer)
|
|
53
|
+
return null;
|
|
54
|
+
// The peer knows the session by its bare name; the prefix was ours.
|
|
55
|
+
return peerCall(peer, method, { ...params, target: split.session, session: split.session });
|
|
56
|
+
}
|
|
57
|
+
export function registerPeerHandlers(server) {
|
|
58
|
+
/**
|
|
59
|
+
* peer — the entire pairing surface.
|
|
60
|
+
*
|
|
61
|
+
* invite on the machine that will be reached, prints one line to copy
|
|
62
|
+
* join on the other machine, paste that line
|
|
63
|
+
* list who is paired, and can each be reached right now
|
|
64
|
+
* forget remove one
|
|
65
|
+
*/
|
|
66
|
+
server.on("peer", async (req) => {
|
|
67
|
+
const { action, host, port, invite, name } = req.params;
|
|
68
|
+
const cfg = loadPeering();
|
|
69
|
+
switch (action) {
|
|
70
|
+
case "invite": {
|
|
71
|
+
if (!host) {
|
|
72
|
+
return {
|
|
73
|
+
ok: false,
|
|
74
|
+
error: "an address is required: the one this machine should be reached on. " +
|
|
75
|
+
"Use its Tailscale address, or the address the other machine sees it as. " +
|
|
76
|
+
"There is deliberately no default — a guess here is a port open somewhere unintended.",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const refusal = rejectWildcard(host);
|
|
80
|
+
if (refusal)
|
|
81
|
+
return { ok: false, error: refusal };
|
|
82
|
+
// Reuse the existing secret if there is one, so inviting a second
|
|
83
|
+
// machine does not silently lock out the first.
|
|
84
|
+
const token = cfg.listen?.token ?? newToken();
|
|
85
|
+
const p = port ?? cfg.listen?.port ?? 8770;
|
|
86
|
+
cfg.listen = { host, port: p, token };
|
|
87
|
+
savePeering(cfg);
|
|
88
|
+
const me = name ?? "host";
|
|
89
|
+
log(`[peer] invite issued for ${host}:${p} as "${me}" — listener starts on next daemon restart`);
|
|
90
|
+
return {
|
|
91
|
+
ok: true,
|
|
92
|
+
result: {
|
|
93
|
+
invite: makeInvite(me, host, p, token),
|
|
94
|
+
message: `Paste this on the other machine:\n\n aibroker peer join ${makeInvite(me, host, p, token)}\n\n` +
|
|
95
|
+
`Then restart this daemon so the listener comes up on ${host}:${p}.\n` +
|
|
96
|
+
`Anyone holding that line can type into this machine's terminals — treat it like a password.`,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
case "join": {
|
|
101
|
+
if (!invite)
|
|
102
|
+
return { ok: false, error: "paste the whole line the other machine printed" };
|
|
103
|
+
let inv;
|
|
104
|
+
try {
|
|
105
|
+
inv = readInvite(invite);
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
return { ok: false, error: e.message };
|
|
109
|
+
}
|
|
110
|
+
const rec = { name: inv.name, host: inv.host, port: inv.port, token: inv.token };
|
|
111
|
+
// Prove it works now rather than at three in the morning. A pairing that
|
|
112
|
+
// is only discovered to be broken when something depends on it is worse
|
|
113
|
+
// than one that refuses at the moment somebody is watching.
|
|
114
|
+
const probe = await peerCall(rec, "ping", {}, 8_000);
|
|
115
|
+
if (!probe.ok) {
|
|
116
|
+
return {
|
|
117
|
+
ok: false,
|
|
118
|
+
error: `paired nothing: ${probe.error}\n` +
|
|
119
|
+
`The invite was readable, so the address or the listener is the problem. ` +
|
|
120
|
+
`Check the other machine's daemon has been restarted since its invite was issued.`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
cfg.peers = [...cfg.peers.filter((p) => p.name !== rec.name), { ...rec, lastSeenAt: Date.now() }];
|
|
124
|
+
savePeering(cfg);
|
|
125
|
+
log(`[peer] joined "${rec.name}" at ${rec.host}:${rec.port}`);
|
|
126
|
+
return {
|
|
127
|
+
ok: true,
|
|
128
|
+
result: {
|
|
129
|
+
message: `paired with "${rec.name}" and reached it. Its sessions appear as ${rec.name}/<name>.`,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
case "list": {
|
|
134
|
+
const rows = await Promise.all(cfg.peers.map(async (p) => {
|
|
135
|
+
const r = await peerCall(p, "ping", {}, 6_000);
|
|
136
|
+
return { name: p.name, address: `${p.host}:${p.port}`, reachable: r.ok, detail: r.ok ? "" : r.error };
|
|
137
|
+
}));
|
|
138
|
+
return {
|
|
139
|
+
ok: true,
|
|
140
|
+
result: {
|
|
141
|
+
listening: cfg.listen ? `${cfg.listen.host}:${cfg.listen.port}` : null,
|
|
142
|
+
peers: rows,
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
case "forget": {
|
|
147
|
+
if (!name)
|
|
148
|
+
return { ok: false, error: "which one? give the peer's name" };
|
|
149
|
+
const before = cfg.peers.length;
|
|
150
|
+
cfg.peers = cfg.peers.filter((p) => p.name.toLowerCase() !== name.toLowerCase());
|
|
151
|
+
savePeering(cfg);
|
|
152
|
+
return {
|
|
153
|
+
ok: true,
|
|
154
|
+
result: { message: before === cfg.peers.length ? `no peer called "${name}"` : `forgot "${name}"` },
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
default:
|
|
158
|
+
return {
|
|
159
|
+
ok: false,
|
|
160
|
+
error: "peer <invite|join|list|forget>",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=peer-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-handlers.js","sourceRoot":"","sources":["../../src/daemon/peer-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemon/standup.ts — what everyone did, is doing, and is stuck on.
|
|
3
|
+
*
|
|
4
|
+
* THE OLDEST MEETING IN SOFTWARE, and it survives because it answers the three
|
|
5
|
+
* questions a lead cannot get from a repository: what moved, what is moving,
|
|
6
|
+
* and what is blocked. Two of those are already visible here — the objective a
|
|
7
|
+
* machine is working to, and the state of its branch. The third is the one that
|
|
8
|
+
* needs the agent to say something, so the standup asks for it rather than
|
|
9
|
+
* inferring it, exactly as it would of a person.
|
|
10
|
+
*
|
|
11
|
+
* WHY IT IS NOT A MEETING. Nobody attends. It is assembled on a schedule and
|
|
12
|
+
* delivered wherever the lead is — phone, terminal, task list — because the
|
|
13
|
+
* whole reason for giving each developer their own machine was that the lead
|
|
14
|
+
* stopped having to sit and watch. A standup that requires attendance would put
|
|
15
|
+
* that back.
|
|
16
|
+
*
|
|
17
|
+
* WHAT IT DELIBERATELY DOES NOT DO. It does not decide anything. No agent is
|
|
18
|
+
* appointed to run it, chase people or reprioritise. The scrum master's job
|
|
19
|
+
* splits cleanly in two: the process half is a schedule and a template, which is
|
|
20
|
+
* this file; the judgement half is deciding what matters when two things
|
|
21
|
+
* conflict, which stays with the person. Automating the first is a saving.
|
|
22
|
+
* Automating the second recreates the supervisor problem this whole design
|
|
23
|
+
* exists to remove — an agent watching agents, costing a context, becoming the
|
|
24
|
+
* bottleneck it was meant to relieve.
|
|
25
|
+
*/
|
|
26
|
+
export interface StandupEntry {
|
|
27
|
+
machine: string;
|
|
28
|
+
reachable: boolean;
|
|
29
|
+
/** What it was told to work on. */
|
|
30
|
+
objective?: string;
|
|
31
|
+
/** What it appears to be doing right now. */
|
|
32
|
+
doing?: string;
|
|
33
|
+
branch?: string;
|
|
34
|
+
head?: string;
|
|
35
|
+
dirty?: number;
|
|
36
|
+
ahead?: number;
|
|
37
|
+
behind?: number;
|
|
38
|
+
/** Anything it could not do, in its own words. */
|
|
39
|
+
blocked?: string;
|
|
40
|
+
detail?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Collect from every machine, including this one.
|
|
44
|
+
*
|
|
45
|
+
* An unreachable machine is REPORTED as unreachable rather than dropped. A
|
|
46
|
+
* developer missing from a standup and a developer with nothing to say look
|
|
47
|
+
* identical in a list that omits them, and they want opposite reactions — one
|
|
48
|
+
* needs chasing, the other does not.
|
|
49
|
+
*/
|
|
50
|
+
export declare function collectStandup(repo?: string): Promise<StandupEntry[]>;
|
|
51
|
+
/**
|
|
52
|
+
* The report, in the shape a person reads at a glance.
|
|
53
|
+
*
|
|
54
|
+
* Ordered by what needs attention rather than by machine name: anything
|
|
55
|
+
* unreachable or blocked first, then work ready to look at, then the rest. A
|
|
56
|
+
* list sorted alphabetically makes the reader do the triage that the report
|
|
57
|
+
* exists to save them.
|
|
58
|
+
*/
|
|
59
|
+
export declare function renderStandup(rows: StandupEntry[]): string;
|
|
60
|
+
/**
|
|
61
|
+
* Run it on a schedule and deliver it.
|
|
62
|
+
*
|
|
63
|
+
* Off unless asked for. A report that arrives whether or not anybody wanted it
|
|
64
|
+
* teaches its reader to skip it, and a standup nobody reads is worse than none
|
|
65
|
+
* because it looks like oversight.
|
|
66
|
+
*/
|
|
67
|
+
export declare function startStandup(everyMinutes: number, deliver: (text: string) => void, repo?: string): void;
|
|
68
|
+
export declare function stopStandup(): void;
|
|
69
|
+
//# sourceMappingURL=standup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standup.d.ts","sourceRoot":"","sources":["../../src/daemon/standup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgC3E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAmC1D;AAID;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAavG;AAED,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|