remote-pi 0.4.3 → 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/README.md +33 -0
- package/dist/daemon/client.js +5 -2
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/control_protocol.d.ts +68 -0
- package/dist/daemon/control_protocol.js.map +1 -1
- package/dist/daemon/cron_log.d.ts +45 -0
- package/dist/daemon/cron_log.js +72 -0
- package/dist/daemon/cron_log.js.map +1 -0
- package/dist/daemon/cron_registry.d.ts +80 -0
- package/dist/daemon/cron_registry.js +194 -0
- package/dist/daemon/cron_registry.js.map +1 -0
- package/dist/daemon/id.d.ts +6 -0
- package/dist/daemon/id.js +6 -0
- package/dist/daemon/id.js.map +1 -1
- package/dist/daemon/install.d.ts +9 -2
- package/dist/daemon/install.js +54 -10
- package/dist/daemon/install.js.map +1 -1
- package/dist/daemon/registry.d.ts +17 -1
- package/dist/daemon/registry.js +34 -4
- package/dist/daemon/registry.js.map +1 -1
- package/dist/daemon/rpc_child.d.ts +60 -0
- package/dist/daemon/rpc_child.js +150 -5
- package/dist/daemon/rpc_child.js.map +1 -1
- package/dist/daemon/supervisor.d.ts +44 -0
- package/dist/daemon/supervisor.js +256 -21
- package/dist/daemon/supervisor.js.map +1 -1
- package/dist/index.d.ts +68 -11
- package/dist/index.js +0 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/mesh_server.js +18 -9
- package/dist/mcp/mesh_server.js.map +1 -1
- package/dist/pairing/qr.d.ts +8 -1
- package/dist/pairing/qr.js +13 -3
- package/dist/pairing/qr.js.map +1 -1
- package/dist/protocol/codec.js +1 -0
- package/dist/protocol/codec.js.map +1 -1
- package/dist/protocol/types.d.ts +11 -0
- package/dist/rooms.d.ts +20 -0
- package/dist/rooms.js +35 -0
- package/dist/rooms.js.map +1 -1
- package/dist/session/broker.d.ts +79 -3
- package/dist/session/broker.js +155 -28
- package/dist/session/broker.js.map +1 -1
- package/dist/session/broker_remote.d.ts +30 -10
- package/dist/session/broker_remote.js +77 -39
- package/dist/session/broker_remote.js.map +1 -1
- package/dist/session/cwd_lock.d.ts +7 -2
- package/dist/session/cwd_lock.js +39 -9
- package/dist/session/cwd_lock.js.map +1 -1
- package/dist/session/global_config.d.ts +12 -2
- package/dist/session/global_config.js +16 -3
- package/dist/session/global_config.js.map +1 -1
- package/dist/session/ipc.d.ts +27 -0
- package/dist/session/ipc.js +22 -0
- package/dist/session/ipc.js.map +1 -0
- package/dist/session/leader_election.js +8 -2
- package/dist/session/leader_election.js.map +1 -1
- package/dist/session/local_config.d.ts +36 -6
- package/dist/session/local_config.js +103 -28
- package/dist/session/local_config.js.map +1 -1
- package/dist/session/mesh_node.d.ts +15 -1
- package/dist/session/mesh_node.js +26 -5
- package/dist/session/mesh_node.js.map +1 -1
- package/dist/session/peer.d.ts +19 -2
- package/dist/session/peer.js +45 -9
- package/dist/session/peer.js.map +1 -1
- package/dist/session/tools.js +14 -12
- package/dist/session/tools.js.map +1 -1
- package/package.json +2 -1
- package/service-templates/task-scheduler.xml.template +38 -0
- package/skills/agent-network/SKILL.md +63 -26
|
@@ -9,16 +9,46 @@ export interface LocalConfig {
|
|
|
9
9
|
*/
|
|
10
10
|
auto_start_relay?: boolean;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Normalize a name segment to a mesh-safe token: trim, replace the addressing
|
|
14
|
+
* separators (`/ : @ #`) and whitespace runs with `-`, collapse repeats, strip
|
|
15
|
+
* edges. The `@` is included so a sanitized name can never contain the address
|
|
16
|
+
* separator — `<cwd>@<name>` stays unambiguous on the wire. Returns undefined
|
|
17
|
+
* when the input isn't a usable non-empty string, sanitizes to empty, or is a
|
|
18
|
+
* reserved addressing keyword (`broadcast` / `broker`). Used by the broker's
|
|
19
|
+
* `sanitizeMeshName` to keep the `<nome>` half of a peer address safe to
|
|
20
|
+
* compose (plan/38).
|
|
21
|
+
*/
|
|
22
|
+
export declare function sanitizeSegment(v: unknown): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Migrate a persisted `agent_name` to the plan/38 leaf-name model (decision E).
|
|
25
|
+
* Two legacy shapes get rewritten on read so a pre-fix config never fossilizes a
|
|
26
|
+
* runtime accident as if it were an explicit choice:
|
|
27
|
+
*
|
|
28
|
+
* - **`#N` collision suffix** — could only have come from a broker/lock
|
|
29
|
+
* assignment (the user can't type `#`: `sanitizeSegment` maps it to `-`), so
|
|
30
|
+
* a trailing `#<digits>` is stripped and the clean base re-derived.
|
|
31
|
+
* - **legacy `parent/folder`** — the old `defaultAgentName` shape; the `/`
|
|
32
|
+
* means it predates the leaf-only model, so we keep only the leaf segment.
|
|
33
|
+
*
|
|
34
|
+
* Returns the cleaned name, or undefined when nothing usable remains (so the
|
|
35
|
+
* caller falls back to `defaultAgentName(cwd)`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function migrateAgentName(raw: string): string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* True when a local config is available for this cwd — either inline via
|
|
40
|
+
* `REMOTE_PI_DIRECT_CONFIG` or as `<cwd>/.pi/remote-pi/config.json` on disk.
|
|
41
|
+
*/
|
|
13
42
|
export declare function localConfigExists(cwd: string): boolean;
|
|
14
43
|
export declare function loadLocalConfig(cwd: string): LocalConfig;
|
|
15
44
|
export declare function saveLocalConfig(cwd: string, patch: Partial<LocalConfig>): void;
|
|
16
45
|
/**
|
|
17
|
-
* Default agent name when none is configured
|
|
18
|
-
*
|
|
19
|
-
* (
|
|
20
|
-
*
|
|
21
|
-
*
|
|
46
|
+
* Default agent name when none is configured (plan/38 decision D): the **leaf**
|
|
47
|
+
* of the cwd, `basename(cwd)`. The cwd now travels as its own address axis
|
|
48
|
+
* (`<cwd>@<nome>`), so the name no longer needs the `parent/folder` prefix that
|
|
49
|
+
* used to disambiguate folders — the broker keys peers by `(cwd, nome)`, and a
|
|
50
|
+
* clean leaf means `#N` almost never fires. Falls back to `"agent"` for a
|
|
51
|
+
* path with no usable basename (root / empty).
|
|
22
52
|
*/
|
|
23
53
|
export declare function defaultAgentName(cwd: string): string;
|
|
24
54
|
/** Resolves auto_start_relay with backward-compat (undefined → true). */
|
|
@@ -2,32 +2,112 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { basename, dirname, join } from "node:path";
|
|
3
3
|
const LOCAL_DIR = ".pi/remote-pi";
|
|
4
4
|
const LOCAL_FILE = "config.json";
|
|
5
|
+
/**
|
|
6
|
+
* Escape hatch: when set, carries the WHOLE local config as inline JSON,
|
|
7
|
+
* bypassing the on-disk `config.json`. For CI/ops/daemons that inject config
|
|
8
|
+
* via env instead of writing a file — mirrors `REMOTE_PI_RELAY` for the relay
|
|
9
|
+
* URL. Takes precedence over the file; an unset/empty/unparseable value falls
|
|
10
|
+
* back to the file (never fatal).
|
|
11
|
+
*/
|
|
12
|
+
const DIRECT_CONFIG_ENV = "REMOTE_PI_DIRECT_CONFIG";
|
|
5
13
|
function pathFor(cwd) {
|
|
6
14
|
return join(cwd, LOCAL_DIR, LOCAL_FILE);
|
|
7
15
|
}
|
|
8
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Normalize a name segment to a mesh-safe token: trim, replace the addressing
|
|
18
|
+
* separators (`/ : @ #`) and whitespace runs with `-`, collapse repeats, strip
|
|
19
|
+
* edges. The `@` is included so a sanitized name can never contain the address
|
|
20
|
+
* separator — `<cwd>@<name>` stays unambiguous on the wire. Returns undefined
|
|
21
|
+
* when the input isn't a usable non-empty string, sanitizes to empty, or is a
|
|
22
|
+
* reserved addressing keyword (`broadcast` / `broker`). Used by the broker's
|
|
23
|
+
* `sanitizeMeshName` to keep the `<nome>` half of a peer address safe to
|
|
24
|
+
* compose (plan/38).
|
|
25
|
+
*/
|
|
26
|
+
export function sanitizeSegment(v) {
|
|
27
|
+
if (typeof v !== "string")
|
|
28
|
+
return undefined;
|
|
29
|
+
const token = v.trim().replace(/[/:@#\s]+/g, "-").replace(/-{2,}/g, "-").replace(/^-+|-+$/g, "");
|
|
30
|
+
if (!token)
|
|
31
|
+
return undefined;
|
|
32
|
+
if (token.toLowerCase() === "broadcast" || token.toLowerCase() === "broker")
|
|
33
|
+
return undefined;
|
|
34
|
+
return token;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Migrate a persisted `agent_name` to the plan/38 leaf-name model (decision E).
|
|
38
|
+
* Two legacy shapes get rewritten on read so a pre-fix config never fossilizes a
|
|
39
|
+
* runtime accident as if it were an explicit choice:
|
|
40
|
+
*
|
|
41
|
+
* - **`#N` collision suffix** — could only have come from a broker/lock
|
|
42
|
+
* assignment (the user can't type `#`: `sanitizeSegment` maps it to `-`), so
|
|
43
|
+
* a trailing `#<digits>` is stripped and the clean base re-derived.
|
|
44
|
+
* - **legacy `parent/folder`** — the old `defaultAgentName` shape; the `/`
|
|
45
|
+
* means it predates the leaf-only model, so we keep only the leaf segment.
|
|
46
|
+
*
|
|
47
|
+
* Returns the cleaned name, or undefined when nothing usable remains (so the
|
|
48
|
+
* caller falls back to `defaultAgentName(cwd)`).
|
|
49
|
+
*/
|
|
50
|
+
export function migrateAgentName(raw) {
|
|
51
|
+
// Legacy `parent/folder` (or any path-ish value) → keep the trailing segment.
|
|
52
|
+
const leaf = raw.includes("/") ? raw.slice(raw.lastIndexOf("/") + 1) : raw;
|
|
53
|
+
// Drop a runtime collision suffix a pre-fix build may have frozen into config.
|
|
54
|
+
const clean = leaf.replace(/#\d+$/, "").trim();
|
|
55
|
+
return clean.length > 0 ? clean : undefined;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse a raw JSON string into a LocalConfig, surfacing only known fields.
|
|
59
|
+
* Returns null when the input isn't a usable JSON object. Legacy `session_name`
|
|
60
|
+
* from pre-refactor configs is silently dropped — the local UDS mesh is now
|
|
61
|
+
* always a single fixed session, so the field has no meaning.
|
|
62
|
+
*/
|
|
63
|
+
function parseLocalConfig(raw) {
|
|
64
|
+
let parsed;
|
|
65
|
+
try {
|
|
66
|
+
parsed = JSON.parse(raw);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
72
|
+
return null;
|
|
73
|
+
const src = parsed;
|
|
74
|
+
const cfg = {};
|
|
75
|
+
if (typeof src["agent_name"] === "string") {
|
|
76
|
+
// Migrate on read (plan/38 decision E): strip a frozen `#N` and the legacy
|
|
77
|
+
// `parent/folder` shape so neither fossilizes as an explicit name.
|
|
78
|
+
const migrated = migrateAgentName(src["agent_name"]);
|
|
79
|
+
if (migrated)
|
|
80
|
+
cfg.agent_name = migrated;
|
|
81
|
+
}
|
|
82
|
+
if (typeof src["auto_start_relay"] === "boolean")
|
|
83
|
+
cfg.auto_start_relay = src["auto_start_relay"];
|
|
84
|
+
return cfg;
|
|
85
|
+
}
|
|
86
|
+
/** Inline config from `REMOTE_PI_DIRECT_CONFIG`, when set + parseable; else null. */
|
|
87
|
+
function directConfig() {
|
|
88
|
+
const raw = process.env[DIRECT_CONFIG_ENV];
|
|
89
|
+
if (!raw || raw.trim().length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
return parseLocalConfig(raw);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* True when a local config is available for this cwd — either inline via
|
|
95
|
+
* `REMOTE_PI_DIRECT_CONFIG` or as `<cwd>/.pi/remote-pi/config.json` on disk.
|
|
96
|
+
*/
|
|
9
97
|
export function localConfigExists(cwd) {
|
|
10
|
-
return existsSync(pathFor(cwd));
|
|
98
|
+
return directConfig() !== null || existsSync(pathFor(cwd));
|
|
11
99
|
}
|
|
12
100
|
export function loadLocalConfig(cwd) {
|
|
101
|
+
// Precedence: inline `REMOTE_PI_DIRECT_CONFIG` env wins over the file. An
|
|
102
|
+
// unset/empty/malformed env falls through to the on-disk config.json.
|
|
103
|
+
const direct = directConfig();
|
|
104
|
+
if (direct)
|
|
105
|
+
return direct;
|
|
13
106
|
const p = pathFor(cwd);
|
|
14
107
|
if (!existsSync(p))
|
|
15
108
|
return {};
|
|
16
109
|
try {
|
|
17
|
-
|
|
18
|
-
const parsed = JSON.parse(raw);
|
|
19
|
-
if (!parsed || typeof parsed !== "object")
|
|
20
|
-
return {};
|
|
21
|
-
// Only surface known fields. Legacy `session_name` from pre-refactor
|
|
22
|
-
// configs is silently dropped — the local UDS mesh is now always a
|
|
23
|
-
// single fixed session, so the field has no meaning.
|
|
24
|
-
const src = parsed;
|
|
25
|
-
const cfg = {};
|
|
26
|
-
if (typeof src["agent_name"] === "string")
|
|
27
|
-
cfg.agent_name = src["agent_name"];
|
|
28
|
-
if (typeof src["auto_start_relay"] === "boolean")
|
|
29
|
-
cfg.auto_start_relay = src["auto_start_relay"];
|
|
30
|
-
return cfg;
|
|
110
|
+
return parseLocalConfig(readFileSync(p, "utf8")) ?? {};
|
|
31
111
|
}
|
|
32
112
|
catch {
|
|
33
113
|
return {};
|
|
@@ -46,20 +126,15 @@ export function saveLocalConfig(cwd, patch) {
|
|
|
46
126
|
writeFileSync(p, JSON.stringify(next, null, 2));
|
|
47
127
|
}
|
|
48
128
|
/**
|
|
49
|
-
* Default agent name when none is configured
|
|
50
|
-
*
|
|
51
|
-
* (
|
|
52
|
-
*
|
|
53
|
-
*
|
|
129
|
+
* Default agent name when none is configured (plan/38 decision D): the **leaf**
|
|
130
|
+
* of the cwd, `basename(cwd)`. The cwd now travels as its own address axis
|
|
131
|
+
* (`<cwd>@<nome>`), so the name no longer needs the `parent/folder` prefix that
|
|
132
|
+
* used to disambiguate folders — the broker keys peers by `(cwd, nome)`, and a
|
|
133
|
+
* clean leaf means `#N` almost never fires. Falls back to `"agent"` for a
|
|
134
|
+
* path with no usable basename (root / empty).
|
|
54
135
|
*/
|
|
55
136
|
export function defaultAgentName(cwd) {
|
|
56
|
-
|
|
57
|
-
const parent = basename(dirname(cwd));
|
|
58
|
-
if (!folder)
|
|
59
|
-
return "agent";
|
|
60
|
-
if (!parent || parent === "/" || parent === folder || parent === ".")
|
|
61
|
-
return folder;
|
|
62
|
-
return `${parent}/${folder}`;
|
|
137
|
+
return basename(cwd) || "agent";
|
|
63
138
|
}
|
|
64
139
|
/** Resolves auto_start_relay with backward-compat (undefined → true). */
|
|
65
140
|
export function effectiveAutoStartRelay(cfg) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local_config.js","sourceRoot":"","sources":["../../src/session/local_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,UAAU,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"local_config.js","sourceRoot":"","sources":["../../src/session/local_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,10 @@ export interface MeshNodeOptions {
|
|
|
43
43
|
sockPath: string;
|
|
44
44
|
/** Requested mesh name (broker may add a #N collision suffix). */
|
|
45
45
|
name: string;
|
|
46
|
+
/** Working directory, forwarded to the broker in `register` so peers are
|
|
47
|
+
* keyed by (cwd, name) and a same-folder same-name reincarnation takes over
|
|
48
|
+
* instead of colliding into `#N`. Optional (legacy peers omit it). */
|
|
49
|
+
cwd?: string;
|
|
46
50
|
/** Optional audit log path passed through to SessionPeer. */
|
|
47
51
|
auditPath?: string;
|
|
48
52
|
/** Self-managed relay bridge — brought up if this node leads. */
|
|
@@ -118,8 +122,18 @@ export declare class MeshNode {
|
|
|
118
122
|
onMessage(handler: (env: Envelope) => void): () => void;
|
|
119
123
|
/** Subscribe to post-failover reconnects. Returns an unsubscribe fn. */
|
|
120
124
|
onReconnect(handler: () => void): () => void;
|
|
121
|
-
/** Assigned mesh name (after any #N collision suffix). */
|
|
125
|
+
/** Assigned clean mesh name (after any #N collision suffix). */
|
|
122
126
|
name(): string;
|
|
127
|
+
/** Canonical mesh address (`[<pc>:]<cwd>@<nome>`) — echo, never compose. */
|
|
128
|
+
address(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Rename this peer on the broker via a soft leave+rejoin (re-registers under
|
|
131
|
+
* `newName`; the broker may append a `#N` on collision — returns the assigned
|
|
132
|
+
* name). Keeps the process + onMessage handlers alive. Does NOT touch the
|
|
133
|
+
* cross-PC bridge or the relay room — the caller must cycle the relay so the
|
|
134
|
+
* App↔Pi room (keyed by `(cwd, name)`, plan/41) follows the new name.
|
|
135
|
+
*/
|
|
136
|
+
rename(newName: string): Promise<string>;
|
|
123
137
|
/** "leader" | "follower". */
|
|
124
138
|
currentRole(): "leader" | "follower";
|
|
125
139
|
/** The locally-hosted Broker when leader, else null. */
|
|
@@ -2,7 +2,7 @@ import { SessionPeer } from "./peer.js";
|
|
|
2
2
|
import { RelayClient } from "../transport/relay_client.js";
|
|
3
3
|
import { attachCrossPcBridge } from "./bridge.js";
|
|
4
4
|
import { getOrCreateEd25519Keypair } from "../pairing/storage.js";
|
|
5
|
-
import {
|
|
5
|
+
import { roomIdFor } from "../rooms.js";
|
|
6
6
|
import { toWebSocketUrl } from "../config.js";
|
|
7
7
|
export class MeshNode {
|
|
8
8
|
peer_;
|
|
@@ -22,6 +22,8 @@ export class MeshNode {
|
|
|
22
22
|
constructor(opts) {
|
|
23
23
|
this.log = opts.log ?? (() => { });
|
|
24
24
|
const peerOpts = { sockPath: opts.sockPath, name: opts.name };
|
|
25
|
+
if (opts.cwd !== undefined)
|
|
26
|
+
peerOpts.cwd = opts.cwd;
|
|
25
27
|
if (opts.auditPath !== undefined)
|
|
26
28
|
peerOpts.auditPath = opts.auditPath;
|
|
27
29
|
this.peer_ = new SessionPeer(peerOpts);
|
|
@@ -105,8 +107,12 @@ export class MeshNode {
|
|
|
105
107
|
else {
|
|
106
108
|
if (!this.keypair)
|
|
107
109
|
this.keypair = params.keypair ?? (await getOrCreateEd25519Keypair());
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
// plan/41: room is keyed by (cwd, name) so two agents in the same folder
|
|
111
|
+
// get distinct App↔Pi rooms. Use the SAME name as room_meta.name so the
|
|
112
|
+
// derivation and the announced label agree.
|
|
113
|
+
const roomName = params.sessionName ?? this.peer_.name();
|
|
114
|
+
const roomId = roomIdFor(params.cwd, roomName);
|
|
115
|
+
const roomMeta = { name: roomName, cwd: params.cwd };
|
|
110
116
|
const r = new RelayClient(toWebSocketUrl(params.relayUrl), this.keypair);
|
|
111
117
|
try {
|
|
112
118
|
await r.connect({ roomId, roomMeta });
|
|
@@ -252,10 +258,24 @@ export class MeshNode {
|
|
|
252
258
|
onReconnect(handler) {
|
|
253
259
|
return this.peer_.onReconnect(handler);
|
|
254
260
|
}
|
|
255
|
-
/** Assigned mesh name (after any #N collision suffix). */
|
|
261
|
+
/** Assigned clean mesh name (after any #N collision suffix). */
|
|
256
262
|
name() {
|
|
257
263
|
return this.peer_.name();
|
|
258
264
|
}
|
|
265
|
+
/** Canonical mesh address (`[<pc>:]<cwd>@<nome>`) — echo, never compose. */
|
|
266
|
+
address() {
|
|
267
|
+
return this.peer_.address();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Rename this peer on the broker via a soft leave+rejoin (re-registers under
|
|
271
|
+
* `newName`; the broker may append a `#N` on collision — returns the assigned
|
|
272
|
+
* name). Keeps the process + onMessage handlers alive. Does NOT touch the
|
|
273
|
+
* cross-PC bridge or the relay room — the caller must cycle the relay so the
|
|
274
|
+
* App↔Pi room (keyed by `(cwd, name)`, plan/41) follows the new name.
|
|
275
|
+
*/
|
|
276
|
+
async rename(newName) {
|
|
277
|
+
return this.peer_.rename(newName);
|
|
278
|
+
}
|
|
259
279
|
/** "leader" | "follower". */
|
|
260
280
|
currentRole() {
|
|
261
281
|
return this.peer_.currentRole();
|
|
@@ -271,7 +291,8 @@ export class MeshNode {
|
|
|
271
291
|
async listPeers(timeoutMs = 2_000) {
|
|
272
292
|
const reply = await this.peer_.request("broker", { type: "list_peers" }, timeoutMs);
|
|
273
293
|
const body = reply.body;
|
|
274
|
-
|
|
294
|
+
// Peers are ADDRESSES now — filter self by address, not the clean name.
|
|
295
|
+
return (body?.peers ?? []).filter((p) => p !== this.peer_.address());
|
|
275
296
|
}
|
|
276
297
|
/** Tear down the bridge (if any) and leave the mesh. */
|
|
277
298
|
async close() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh_node.js","sourceRoot":"","sources":["../../src/session/mesh_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2C,MAAM,WAAW,CAAC;AAKjF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mesh_node.js","sourceRoot":"","sources":["../../src/session/mesh_node.ts"],"names":[],"mappings":"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"}
|
package/dist/session/peer.d.ts
CHANGED
|
@@ -14,6 +14,14 @@ export type ReconnectHandler = () => void;
|
|
|
14
14
|
export interface SessionPeerOptions {
|
|
15
15
|
sockPath: string;
|
|
16
16
|
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* Working directory of this agent. Sent in the `register` so the broker can
|
|
19
|
+
* key peers by the (cwd, name) pair: two agents in the SAME folder with the
|
|
20
|
+
* same name are the SAME logical agent reincarnating (switch_session /
|
|
21
|
+
* restart), so the broker take-over the name instead of suffixing `#N`.
|
|
22
|
+
* Optional for backward-compat with peers that predate this field.
|
|
23
|
+
*/
|
|
24
|
+
cwd?: string;
|
|
17
25
|
auditPath?: string;
|
|
18
26
|
/** Per-request default timeout (ms). Override per call if needed. */
|
|
19
27
|
defaultTimeoutMs?: number;
|
|
@@ -28,8 +36,13 @@ export interface AckResult {
|
|
|
28
36
|
}
|
|
29
37
|
export declare class SessionPeer {
|
|
30
38
|
private readonly opts;
|
|
31
|
-
/**
|
|
39
|
+
/** Clean leaf name actually assigned by the broker (may carry a `#N`
|
|
40
|
+
* collision suffix). Used for display + self-filtering. */
|
|
32
41
|
private assignedName;
|
|
42
|
+
/** Canonical address assigned by the broker (`[<pc>:]<cwd>@<nome>`, or just
|
|
43
|
+
* the name for a legacy broker). This is the routing/identity key the mesh
|
|
44
|
+
* uses; callers ECHO it, never compose it. */
|
|
45
|
+
private assignedAddress;
|
|
33
46
|
private role;
|
|
34
47
|
private broker;
|
|
35
48
|
private socket;
|
|
@@ -44,8 +57,12 @@ export declare class SessionPeer {
|
|
|
44
57
|
constructor(opts: SessionPeerOptions);
|
|
45
58
|
/** Joins or leads the session at `sockPath`. Resolves with the assigned name. */
|
|
46
59
|
start(): Promise<string>;
|
|
47
|
-
/** Returns the name as assigned by the broker (after
|
|
60
|
+
/** Returns the clean leaf name as assigned by the broker (after any `#N`). */
|
|
48
61
|
name(): string;
|
|
62
|
+
/** Returns the canonical address (`[<pc>:]<cwd>@<nome>`) assigned by the
|
|
63
|
+
* broker — the key the mesh routes on. Equals `name()` against a legacy
|
|
64
|
+
* broker that returns no address. */
|
|
65
|
+
address(): string;
|
|
49
66
|
/** Returns "leader" or "follower" — current role. */
|
|
50
67
|
currentRole(): "leader" | "follower";
|
|
51
68
|
/** Returns the locally-hosted Broker when this peer is the leader, or
|
package/dist/session/peer.js
CHANGED
|
@@ -7,8 +7,13 @@ const ACK_TIMEOUT_MS = 5_000;
|
|
|
7
7
|
const FAILOVER_RETRY_MS = 100;
|
|
8
8
|
export class SessionPeer {
|
|
9
9
|
opts;
|
|
10
|
-
/**
|
|
10
|
+
/** Clean leaf name actually assigned by the broker (may carry a `#N`
|
|
11
|
+
* collision suffix). Used for display + self-filtering. */
|
|
11
12
|
assignedName;
|
|
13
|
+
/** Canonical address assigned by the broker (`[<pc>:]<cwd>@<nome>`, or just
|
|
14
|
+
* the name for a legacy broker). This is the routing/identity key the mesh
|
|
15
|
+
* uses; callers ECHO it, never compose it. */
|
|
16
|
+
assignedAddress;
|
|
12
17
|
role = "follower";
|
|
13
18
|
broker = null;
|
|
14
19
|
socket = null;
|
|
@@ -23,16 +28,23 @@ export class SessionPeer {
|
|
|
23
28
|
constructor(opts) {
|
|
24
29
|
this.opts = opts;
|
|
25
30
|
this.assignedName = opts.name;
|
|
31
|
+
this.assignedAddress = opts.name;
|
|
26
32
|
}
|
|
27
33
|
// ── public API ────────────────────────────────────────────────────────────
|
|
28
34
|
/** Joins or leads the session at `sockPath`. Resolves with the assigned name. */
|
|
29
35
|
async start() {
|
|
30
36
|
return this._joinOrLead();
|
|
31
37
|
}
|
|
32
|
-
/** Returns the name as assigned by the broker (after
|
|
38
|
+
/** Returns the clean leaf name as assigned by the broker (after any `#N`). */
|
|
33
39
|
name() {
|
|
34
40
|
return this.assignedName;
|
|
35
41
|
}
|
|
42
|
+
/** Returns the canonical address (`[<pc>:]<cwd>@<nome>`) assigned by the
|
|
43
|
+
* broker — the key the mesh routes on. Equals `name()` against a legacy
|
|
44
|
+
* broker that returns no address. */
|
|
45
|
+
address() {
|
|
46
|
+
return this.assignedAddress;
|
|
47
|
+
}
|
|
36
48
|
/** Returns "leader" or "follower" — current role. */
|
|
37
49
|
currentRole() {
|
|
38
50
|
return this.role;
|
|
@@ -172,7 +184,7 @@ export class SessionPeer {
|
|
|
172
184
|
this.buf = "";
|
|
173
185
|
sock.setEncoding("utf8");
|
|
174
186
|
sock.on("data", (chunk) => this._onData(chunk));
|
|
175
|
-
sock.on("close", () => this._onSocketClose());
|
|
187
|
+
sock.on("close", () => this._onSocketClose(sock));
|
|
176
188
|
sock.on("error", () => { });
|
|
177
189
|
}
|
|
178
190
|
_registerOver(sock) {
|
|
@@ -181,18 +193,32 @@ export class SessionPeer {
|
|
|
181
193
|
const wait = setTimeout(() => reject(new Error("register_ack timeout")), 5_000);
|
|
182
194
|
const onceListener = (raw) => {
|
|
183
195
|
clearTimeout(wait);
|
|
196
|
+
// plan/38: a new broker returns `address_assigned` (canonical key) +
|
|
197
|
+
// `name_assigned` (clean leaf). Read both with cross-fallback so we work
|
|
198
|
+
// against either a new broker OR a legacy one (only `name_assigned`,
|
|
199
|
+
// where address == name).
|
|
184
200
|
const ack = raw;
|
|
185
|
-
|
|
186
|
-
|
|
201
|
+
const name = typeof ack?.name_assigned === "string" ? ack.name_assigned : ack?.address_assigned;
|
|
202
|
+
const address = typeof ack?.address_assigned === "string" ? ack.address_assigned : ack?.name_assigned;
|
|
203
|
+
if (ack && ack.type === "register_ack" && typeof name === "string" && typeof address === "string") {
|
|
204
|
+
this.assignedName = name;
|
|
205
|
+
this.assignedAddress = address;
|
|
187
206
|
this._preAckListener = null;
|
|
188
|
-
resolve(
|
|
207
|
+
resolve(name);
|
|
189
208
|
}
|
|
190
209
|
else {
|
|
191
210
|
reject(new Error(`expected register_ack, got: ${JSON.stringify(raw)}`));
|
|
192
211
|
}
|
|
193
212
|
};
|
|
194
213
|
this._preAckListener = onceListener;
|
|
195
|
-
const req = JSON.stringify({
|
|
214
|
+
const req = JSON.stringify({
|
|
215
|
+
type: "register",
|
|
216
|
+
name: this.opts.name,
|
|
217
|
+
// Only include cwd when set — keeps the wire identical to the legacy
|
|
218
|
+
// payload for callers that don't supply it (broker treats absent cwd
|
|
219
|
+
// as "no take-over", i.e. the old #N behavior).
|
|
220
|
+
...(this.opts.cwd !== undefined ? { cwd: this.opts.cwd } : {}),
|
|
221
|
+
}) + "\n";
|
|
196
222
|
try {
|
|
197
223
|
sock.write(req);
|
|
198
224
|
}
|
|
@@ -284,13 +310,23 @@ export class SessionPeer {
|
|
|
284
310
|
}
|
|
285
311
|
this.socket.write(serialize(env));
|
|
286
312
|
}
|
|
287
|
-
async _onSocketClose() {
|
|
313
|
+
async _onSocketClose(closedSock) {
|
|
288
314
|
if (this.leftFlag)
|
|
289
315
|
return; // intentional leave
|
|
316
|
+
// Only the CURRENT socket dying is a real failover. A close from a socket
|
|
317
|
+
// we've already replaced — `rename()` (teardown + rejoin) or a prior
|
|
318
|
+
// reconnect — must NOT trigger another `_joinOrLead`, or we'd double-
|
|
319
|
+
// register (the broker suffixes the second as `#N`) and leave an orphaned
|
|
320
|
+
// still-open socket as a ghost peer. `this.socket` is null mid-rename
|
|
321
|
+
// (teardown done, rejoin in flight) or already the new socket — either way
|
|
322
|
+
// `!== closedSock`, so we skip. Genuine leader death: `this.socket` is still
|
|
323
|
+
// the (now-closed) follower socket → identity matches → we re-elect.
|
|
324
|
+
if (this.socket !== closedSock)
|
|
325
|
+
return;
|
|
290
326
|
// Attempt to re-elect once. New leader will bind sockPath; we either
|
|
291
327
|
// become leader ourselves or rejoin as follower.
|
|
292
328
|
await delay(FAILOVER_RETRY_MS);
|
|
293
|
-
if (this.leftFlag)
|
|
329
|
+
if (this.leftFlag || this.socket !== closedSock)
|
|
294
330
|
return;
|
|
295
331
|
try {
|
|
296
332
|
await this._joinOrLead();
|
package/dist/session/peer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/session/peer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../src/session/peer.ts"],"names":[],"mappings":"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"}
|
package/dist/session/tools.js
CHANGED
|
@@ -66,7 +66,7 @@ export function registerAgentTools(pi, getSessionPeer) {
|
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
const { to, body, re } = params;
|
|
69
|
-
if (to === peer.name()) {
|
|
69
|
+
if (to === peer.address() || to === peer.name()) {
|
|
70
70
|
const msg = `Refused: cannot agent_send to yourself ("${to}"). Just do the work directly.`;
|
|
71
71
|
const details = { status: "refused", ok: false, error: msg };
|
|
72
72
|
return {
|
|
@@ -120,13 +120,14 @@ export function registerAgentTools(pi, getSessionPeer) {
|
|
|
120
120
|
pi.registerTool({
|
|
121
121
|
name: "list_peers",
|
|
122
122
|
label: "List Peers",
|
|
123
|
-
description: "Returns the current peer inventory in this session
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
"
|
|
129
|
-
|
|
123
|
+
description: "Returns the current peer inventory in this session as ADDRESSES of the " +
|
|
124
|
+
"form `<cwd>@<name>` (cross-PC peers prefixed `<pc>:`). An address is an " +
|
|
125
|
+
"opaque routing key — pass it to `agent_send`/`agent_request` VERBATIM, " +
|
|
126
|
+
"never build one by hand. Use BEFORE sending whenever you're unsure who's " +
|
|
127
|
+
"available, or after a `peer_joined` / `peer_left` notification to refresh " +
|
|
128
|
+
"your mental model. Resolves in milliseconds — a metadata query to the " +
|
|
129
|
+
"broker, not a turn of another agent.",
|
|
130
|
+
promptSnippet: "list_peers(): returns {peers: string[]} of addresses `<cwd>@<name>` (`<pc>:` prefix cross-PC). Echo an address verbatim to agent_send; never compose one. Cheap; call freely.",
|
|
130
131
|
parameters: ListPeersParams,
|
|
131
132
|
execute: async (_toolCallId) => {
|
|
132
133
|
const peer = getSessionPeer();
|
|
@@ -146,9 +147,10 @@ export function registerAgentTools(pi, getSessionPeer) {
|
|
|
146
147
|
? body.peers.filter((p) => typeof p === "string")
|
|
147
148
|
: [];
|
|
148
149
|
// Drop self from the list — the caller is the only one who can't
|
|
149
|
-
// address itself anyway, so listing it is noise.
|
|
150
|
-
|
|
151
|
-
const
|
|
150
|
+
// address itself anyway, so listing it is noise. Peers are ADDRESSES
|
|
151
|
+
// (plan/38), so filter by address.
|
|
152
|
+
const selfAddress = peer.address();
|
|
153
|
+
const filtered = peers.filter((p) => p !== selfAddress);
|
|
152
154
|
const text = filtered.length === 0 ? "(no peers)" : filtered.join("\n");
|
|
153
155
|
return {
|
|
154
156
|
content: [{ type: "text", text }],
|
|
@@ -183,7 +185,7 @@ export function registerAgentTools(pi, getSessionPeer) {
|
|
|
183
185
|
};
|
|
184
186
|
}
|
|
185
187
|
const { to, body, timeout_ms } = params;
|
|
186
|
-
if (to === peer.name()) {
|
|
188
|
+
if (to === peer.address() || to === peer.name()) {
|
|
187
189
|
const msg = `Refused: cannot agent_request to yourself ("${to}"). Just do the work directly.`;
|
|
188
190
|
return {
|
|
189
191
|
content: [{ type: "text", text: msg }],
|