instar 1.3.103 → 1.3.104
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +81 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/TopicPlacementPinStore.d.ts +37 -0
- package/dist/core/TopicPlacementPinStore.d.ts.map +1 -0
- package/dist/core/TopicPlacementPinStore.js +95 -0
- package/dist/core/TopicPlacementPinStore.js.map +1 -0
- package/dist/server/middleware.d.ts.map +1 -1
- package/dist/server/middleware.js +13 -0
- package/dist/server/middleware.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.104.md +58 -0
- package/upgrades/side-effects/mesh-rpc-auth-and-transfer-activation.md +72 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { TopicPlacement } from './PlacementExecutor.js';
|
|
2
|
+
/** One persisted pin: the resolved target machine + when it was set. */
|
|
3
|
+
export interface TopicPin {
|
|
4
|
+
preferredMachine: string;
|
|
5
|
+
pinned: boolean;
|
|
6
|
+
updatedAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TopicPlacementPinStoreDeps {
|
|
9
|
+
/** File the pins persist to (JSON). */
|
|
10
|
+
filePath: string;
|
|
11
|
+
/** Wall clock — injectable for tests. Defaults to `Date`. */
|
|
12
|
+
now?: () => Date;
|
|
13
|
+
}
|
|
14
|
+
export declare class TopicPlacementPinStore {
|
|
15
|
+
private readonly d;
|
|
16
|
+
private pins;
|
|
17
|
+
private loaded;
|
|
18
|
+
constructor(deps: TopicPlacementPinStoreDeps);
|
|
19
|
+
private load;
|
|
20
|
+
private persist;
|
|
21
|
+
/** Pin a topic to a machine (a hard pin). Idempotent; refreshes `updatedAt`. */
|
|
22
|
+
set(sessionKey: string, preferredMachine: string, pinned?: boolean): void;
|
|
23
|
+
/** The current pin for a topic, or null if unpinned. */
|
|
24
|
+
get(sessionKey: string): TopicPin | null;
|
|
25
|
+
/**
|
|
26
|
+
* The pin as a `TopicPlacement` for `PlacementExecutor.decide({ topicMetadata })`,
|
|
27
|
+
* or undefined if unpinned (so the caller passes `topicMetadata: undefined`).
|
|
28
|
+
*/
|
|
29
|
+
asTopicMetadata(sessionKey: string): TopicPlacement | undefined;
|
|
30
|
+
/** When the topic's pin was last set (ms epoch), or null if unpinned — feeds the transfer rate-limit guard. */
|
|
31
|
+
lastUpdatedAtMs(sessionKey: string): number | null;
|
|
32
|
+
/** Remove a topic's pin (e.g. the user unpins, or the target is decommissioned). */
|
|
33
|
+
clear(sessionKey: string): void;
|
|
34
|
+
/** All current pins (for diagnostics / GET surfaces). */
|
|
35
|
+
all(): Record<string, TopicPin>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=TopicPlacementPinStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopicPlacementPinStore.d.ts","sourceRoot":"","sources":["../../src/core/TopicPlacementPinStore.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,wEAAwE;AACxE,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA6B;IAC/C,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAEX,IAAI,EAAE,0BAA0B;IAI5C,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,OAAO;IAQf,gFAAgF;IAChF,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;IAOtE,wDAAwD;IACxD,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAKxC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAK/D,+GAA+G;IAC/G,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOlD,oFAAoF;IACpF,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ/B,yDAAyD;IACzD,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;CAIhC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TopicPlacementPinStore (Multi-Machine Session Pool §L4 — the "move this to
|
|
3
|
+
* <nickname>" pin).
|
|
4
|
+
*
|
|
5
|
+
* `PlacementExecutor.decide()` honors a per-topic `TopicPlacement`
|
|
6
|
+
* (`{preferredMachine, pinned}`) with ordering `['hard-constraint','pin','sticky',
|
|
7
|
+
* 'least-loaded']` — but nothing persisted that pin, and `SessionRouter.route()`
|
|
8
|
+
* was called with NO `topicMetadata`, so placement always fell back to
|
|
9
|
+
* least-loaded. This store is the missing piece: it durably records the pin a
|
|
10
|
+
* user sets via "move/run this on <nickname>", keyed by topic, so the next
|
|
11
|
+
* placement for that topic lands on the named machine and stays there.
|
|
12
|
+
*
|
|
13
|
+
* Durable (atomic JSON write) + injectable clock so it's unit-testable. Keyed by
|
|
14
|
+
* the topic's session key (the topic id as a string — the same key
|
|
15
|
+
* `SessionRouter.route()` uses). A pin is a HARD pin (pinned:true) per §L4: set
|
|
16
|
+
* by an explicit relocation command, cleared on `clear()`.
|
|
17
|
+
*/
|
|
18
|
+
import fs from 'node:fs';
|
|
19
|
+
import path from 'node:path';
|
|
20
|
+
export class TopicPlacementPinStore {
|
|
21
|
+
d;
|
|
22
|
+
pins = {};
|
|
23
|
+
loaded = false;
|
|
24
|
+
constructor(deps) {
|
|
25
|
+
this.d = deps;
|
|
26
|
+
}
|
|
27
|
+
load() {
|
|
28
|
+
if (this.loaded)
|
|
29
|
+
return;
|
|
30
|
+
try {
|
|
31
|
+
if (fs.existsSync(this.d.filePath)) {
|
|
32
|
+
const raw = JSON.parse(fs.readFileSync(this.d.filePath, 'utf-8'));
|
|
33
|
+
if (raw && typeof raw === 'object' && raw.pins && typeof raw.pins === 'object') {
|
|
34
|
+
this.pins = raw.pins;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
this.pins = {}; // corrupt file → start clean (the pin is advisory, not authoritative)
|
|
40
|
+
}
|
|
41
|
+
this.loaded = true;
|
|
42
|
+
}
|
|
43
|
+
persist() {
|
|
44
|
+
const dir = path.dirname(this.d.filePath);
|
|
45
|
+
try {
|
|
46
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
catch { /* exists */ }
|
|
49
|
+
const tmp = `${this.d.filePath}.tmp`;
|
|
50
|
+
fs.writeFileSync(tmp, JSON.stringify({ pins: this.pins }, null, 2));
|
|
51
|
+
fs.renameSync(tmp, this.d.filePath); // atomic swap
|
|
52
|
+
}
|
|
53
|
+
/** Pin a topic to a machine (a hard pin). Idempotent; refreshes `updatedAt`. */
|
|
54
|
+
set(sessionKey, preferredMachine, pinned = true) {
|
|
55
|
+
this.load();
|
|
56
|
+
const now = (this.d.now ?? (() => new Date()))().toISOString();
|
|
57
|
+
this.pins[sessionKey] = { preferredMachine, pinned, updatedAt: now };
|
|
58
|
+
this.persist();
|
|
59
|
+
}
|
|
60
|
+
/** The current pin for a topic, or null if unpinned. */
|
|
61
|
+
get(sessionKey) {
|
|
62
|
+
this.load();
|
|
63
|
+
return this.pins[sessionKey] ?? null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The pin as a `TopicPlacement` for `PlacementExecutor.decide({ topicMetadata })`,
|
|
67
|
+
* or undefined if unpinned (so the caller passes `topicMetadata: undefined`).
|
|
68
|
+
*/
|
|
69
|
+
asTopicMetadata(sessionKey) {
|
|
70
|
+
const pin = this.get(sessionKey);
|
|
71
|
+
return pin ? { preferredMachine: pin.preferredMachine, pinned: pin.pinned } : undefined;
|
|
72
|
+
}
|
|
73
|
+
/** When the topic's pin was last set (ms epoch), or null if unpinned — feeds the transfer rate-limit guard. */
|
|
74
|
+
lastUpdatedAtMs(sessionKey) {
|
|
75
|
+
const pin = this.get(sessionKey);
|
|
76
|
+
if (!pin)
|
|
77
|
+
return null;
|
|
78
|
+
const ms = Date.parse(pin.updatedAt);
|
|
79
|
+
return Number.isFinite(ms) ? ms : null;
|
|
80
|
+
}
|
|
81
|
+
/** Remove a topic's pin (e.g. the user unpins, or the target is decommissioned). */
|
|
82
|
+
clear(sessionKey) {
|
|
83
|
+
this.load();
|
|
84
|
+
if (this.pins[sessionKey]) {
|
|
85
|
+
delete this.pins[sessionKey];
|
|
86
|
+
this.persist();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** All current pins (for diagnostics / GET surfaces). */
|
|
90
|
+
all() {
|
|
91
|
+
this.load();
|
|
92
|
+
return { ...this.pins };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=TopicPlacementPinStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TopicPlacementPinStore.js","sourceRoot":"","sources":["../../src/core/TopicPlacementPinStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAapF;AA8BD,mDAAmD;AACnD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,IACtF,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAapF;AA8BD,mDAAmD;AACnD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,IACtF,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAwK/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,GAAE,MAAe,EAAE,WAAW,GAAE,MAAW,IAcrE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CA0B/D;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,MAAM,CAOR;AAED,wBAAgB,cAAc,CAC5B,SAAS,GAAE,MAAe,EAC1B,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,IAErC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkB/D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAExE;AAYD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAW9F;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAQlG"}
|
|
@@ -107,6 +107,19 @@ export function authMiddleware(authToken, agentId) {
|
|
|
107
107
|
next();
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
+
// /mesh/rpc is the §L0 Multi-Machine Session Pool machine-to-machine command
|
|
111
|
+
// transport. It is authed by the signed, recipient-bound MeshEnvelope (Ed25519
|
|
112
|
+
// verify → RBAC → nonce-burn in the dispatcher), NOT the API bearer token — a
|
|
113
|
+
// shared bearer token cannot work cross-machine, since each install holds its
|
|
114
|
+
// own authToken. So it is exempt from the bearer gate here; the dispatcher in
|
|
115
|
+
// the route handler rejects any envelope that fails verification. WITHOUT this
|
|
116
|
+
// exemption every cross-machine MeshRpc call (capacity/session-status,
|
|
117
|
+
// deliverMessage, place/claim/transfer) 401s before the envelope is ever
|
|
118
|
+
// checked — i.e. the entire pool is non-functional over the wire.
|
|
119
|
+
if (req.path === '/mesh/rpc') {
|
|
120
|
+
next();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
110
123
|
// Threadline protocol endpoints use their own auth (relay tokens + Ed25519 signatures).
|
|
111
124
|
// Handshake and health endpoints are unauthenticated by design.
|
|
112
125
|
// Authenticated threadline endpoints enforce Threadline-Relay auth in route handlers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-05-30T00:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-05-30T00:17:16.098Z",
|
|
5
|
+
"instarVersion": "1.3.104",
|
|
6
6
|
"entryCount": 193,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
**Two fixes that make running one agent across multiple machines actually work
|
|
8
|
+
end-to-end.**
|
|
9
|
+
|
|
10
|
+
First, a real bug: the private channel machines use to send each other commands
|
|
11
|
+
was being blocked by the normal login check before it could even verify the
|
|
12
|
+
message's own signature. Because each machine has its own login token, one
|
|
13
|
+
machine could never present a token the other would accept — so every
|
|
14
|
+
cross-machine action (checking if a peer is alive, handing a conversation to
|
|
15
|
+
another machine, moving one) was silently refused. That channel is already
|
|
16
|
+
protected by a strong per-machine cryptographic signature, so it now correctly
|
|
17
|
+
skips the token check and relies on the signature. This is the missing piece
|
|
18
|
+
that made a second machine show as offline even when both machines could reach
|
|
19
|
+
each other perfectly.
|
|
20
|
+
|
|
21
|
+
Second, the headline "move this to the mini" feature is now wired all the way
|
|
22
|
+
through. Saying "move this to <machine nickname>" (or "run this on <nickname>")
|
|
23
|
+
in a conversation now pins that conversation to the named machine and hands it
|
|
24
|
+
over, so it continues there. Before, the phrase was understood but nothing acted
|
|
25
|
+
on it.
|
|
26
|
+
|
|
27
|
+
## What to Tell Your User
|
|
28
|
+
|
|
29
|
+
If you run on one machine, nothing changes. If you run across two machines: a
|
|
30
|
+
second machine will now correctly show as online and become eligible to receive
|
|
31
|
+
conversations, and you can say "move this to the mini" (using whatever nickname
|
|
32
|
+
shows on your Machines list) to hand the current conversation to that machine —
|
|
33
|
+
it picks up there. Both machines need to update for this to work.
|
|
34
|
+
|
|
35
|
+
## Summary of New Capabilities
|
|
36
|
+
|
|
37
|
+
- The machine-to-machine command channel is exempt from the API token check and
|
|
38
|
+
authed solely by its per-machine cryptographic signature — so cross-machine
|
|
39
|
+
presence, delivery, and transfer work over the network, not just in tests.
|
|
40
|
+
- New `TopicPlacementPinStore`: durably pins a conversation to a chosen machine.
|
|
41
|
+
- "move this to <nickname>" / "run this on <nickname>" is wired on inbound:
|
|
42
|
+
recognize the command, pin the conversation, release local ownership, and let
|
|
43
|
+
it re-place onto the named machine via the existing place-and-resume path.
|
|
44
|
+
|
|
45
|
+
## Evidence
|
|
46
|
+
|
|
47
|
+
- `tests/unit/mesh-rpc-auth-exemption.test.ts` — the machine command route
|
|
48
|
+
reaches its handler with no token (and ignores a wrong one — the signature is
|
|
49
|
+
the auth); a normal protected route still requires the token.
|
|
50
|
+
- `tests/unit/topic-placement-pin-store.test.ts` — pin set/get/clear, durable
|
|
51
|
+
across restarts, tolerant of a corrupt file.
|
|
52
|
+
- `tests/unit/transfer-activation-wiring.test.ts` — the recognizer/planner are
|
|
53
|
+
wired on inbound before routing, a transfer sets the pin + releases ownership,
|
|
54
|
+
the pin is passed into placement, and the whole path is dark-gated.
|
|
55
|
+
- Found on real hardware (laptop + Mac mini): the mini stayed offline because its
|
|
56
|
+
`/mesh/rpc` returned 401 before the signed envelope was checked; with the
|
|
57
|
+
exemption the cross-machine calls authenticate off the envelope as designed.
|
|
58
|
+
- Side-effects: `upgrades/side-effects/mesh-rpc-auth-and-transfer-activation.md`.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Side-effects review — /mesh/rpc bearer-auth exemption + transfer-by-nickname activation
|
|
2
|
+
|
|
3
|
+
## What was happening (real-hardware, 2026-05-29)
|
|
4
|
+
|
|
5
|
+
After the HTTP presence transport (B, v1.3.102) deployed to the laptop, the Mac
|
|
6
|
+
mini STILL showed offline in `GET /pool`. Root cause, found by probing the mini's
|
|
7
|
+
`/mesh/rpc` over its tunnel: **401 "Missing or invalid Authorization header"**.
|
|
8
|
+
|
|
9
|
+
`/mesh/rpc` — the §L0 machine-to-machine command transport — was sitting behind
|
|
10
|
+
the general API bearer-token middleware, but `MeshRpcClient.send` sends only the
|
|
11
|
+
signed envelope (no `Authorization` header), and it *can't* send a useful one:
|
|
12
|
+
each machine install holds its own `authToken`, so the sender has no token the
|
|
13
|
+
receiver would accept. So EVERY cross-machine call — the new presence pull AND
|
|
14
|
+
`deliverMessage` / `place` / `claim` / `transfer` — was rejected 401 before the
|
|
15
|
+
dispatcher's envelope check ever ran. The pool passed all in-process dispatcher
|
|
16
|
+
tests yet was completely dead over a real tunnel.
|
|
17
|
+
|
|
18
|
+
Separately, the headline "move this to <nickname>" trigger was unbuilt: the
|
|
19
|
+
recognizer + planner existed as pure tested units but had no caller, nothing
|
|
20
|
+
persisted the pin, and `SessionRouter.route()` was called with no `topicMetadata`
|
|
21
|
+
— so placement always fell back to least-loaded and a relocation command did
|
|
22
|
+
nothing.
|
|
23
|
+
|
|
24
|
+
## The fix
|
|
25
|
+
|
|
26
|
+
1. **`src/server/middleware.ts`** — exempt `/mesh/rpc` from the bearer gate, next
|
|
27
|
+
to the other signature/HMAC-authed m2m endpoints (`/a2a/inbox`, relay). The
|
|
28
|
+
route is authed SOLELY by its Ed25519 signed, recipient-bound envelope
|
|
29
|
+
(verify → RBAC → nonce, in the dispatcher). This single change is what makes
|
|
30
|
+
the cross-machine pool function over the wire at all.
|
|
31
|
+
|
|
32
|
+
2. **`src/core/TopicPlacementPinStore.ts`** (new) — durable `{topicId → {preferredMachine,
|
|
33
|
+
pinned, updatedAt}}`. `asTopicMetadata()` shapes the pin for
|
|
34
|
+
`PlacementExecutor.decide`; `lastUpdatedAtMs()` feeds the rate-limit guard.
|
|
35
|
+
|
|
36
|
+
3. **`src/commands/server.ts`** — wire the §L4 transfer-by-nickname activation
|
|
37
|
+
(gated on stage ≠ 'dark', BEFORE the route() interception): recognize the
|
|
38
|
+
command → plan → on transfer/noop set the pin AND release local ownership so
|
|
39
|
+
the topic's next message re-places onto the pinned machine via the
|
|
40
|
+
already-wired placeAndClaim → spawnOnMachine → owner-side `onAccepted` resume
|
|
41
|
+
path; confirm-required/reject reply to the user; the command message is
|
|
42
|
+
consumed. And pass `topicMetadata: pinStore.asTopicMetadata(sessionKey)` into
|
|
43
|
+
`route()` so placement honors the pin.
|
|
44
|
+
|
|
45
|
+
## Blast radius
|
|
46
|
+
|
|
47
|
+
- **The auth exemption is the only change to a live, always-on code path.** It
|
|
48
|
+
REMOVES a gate from `/mesh/rpc`; the dispatcher's envelope verification (which
|
|
49
|
+
already ran on every accepted call) becomes the sole auth — strictly stronger
|
|
50
|
+
than a shared bearer for cross-machine (per-peer Ed25519 keys, recipient
|
|
51
|
+
binding, nonce replay protection). A non-mesh / single-machine agent never
|
|
52
|
+
receives a `/mesh/rpc` POST, so the exemption is inert for it.
|
|
53
|
+
- **The activation is dark-gated.** The recognizer/pin/route-metadata wiring only
|
|
54
|
+
runs when `_sessionPoolStage() !== 'dark'` (default dark), so it ships inert and
|
|
55
|
+
is exercised only in the controlled rollout/proof. The pin store is a new file
|
|
56
|
+
under `stateDir/session-pool/`; nothing reads it unless the activation runs.
|
|
57
|
+
- **No new config / route / schema / hook / skill → no migration.** Server +
|
|
58
|
+
middleware + one new core module; existing agents pick it up on the next
|
|
59
|
+
release. Both machines need it (the receiver's `/mesh/rpc` must accept the
|
|
60
|
+
envelope; the router needs the recognizer + pin).
|
|
61
|
+
|
|
62
|
+
## Tests
|
|
63
|
+
|
|
64
|
+
- `tests/unit/mesh-rpc-auth-exemption.test.ts` — `/mesh/rpc` reaches its handler
|
|
65
|
+
with NO Authorization header (and even with a wrong bearer — the envelope is
|
|
66
|
+
the auth); a normal protected path still 401s without a token.
|
|
67
|
+
- `tests/unit/topic-placement-pin-store.test.ts` — set/get/asTopicMetadata/
|
|
68
|
+
lastUpdatedAtMs/clear, durable across instances, corrupt-file tolerance.
|
|
69
|
+
- `tests/unit/transfer-activation-wiring.test.ts` — server boot constructs the
|
|
70
|
+
pin store + recognizer/planner imports, recognizes on inbound before route(),
|
|
71
|
+
applies a transfer (sets pin + releases ownership), returns when handled, passes
|
|
72
|
+
the pin as `topicMetadata`, and is dark-gated.
|