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.
@@ -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,CA0J/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"}
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":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC5E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,IAAI,MAAM,IAAI,8CAA8C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,mCAAmC,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;IAC1E,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO;IACT,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACtD,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAC7D,MAAM,yBAAyB,GAAG,IAAI,CAAC,CAAC,eAAe;AAEvD,SAAS,oBAAoB,CAAC,SAAiB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACvE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,2BAA2B,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kEAAkE;IAClE,IAAI,mBAAmB,CAAC,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC1D,IAAI,SAAS,KAAK,SAAS;YAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,yBAAyB;IACvC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAAC,SAA+C,EAAE,OAAgB;IAC9F,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,iEAAiE;QACjE,sDAAsD;QACtD,MAAM,aAAa,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,mCAAmC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,oFAAoF;QACpF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,kFAAkF;QAClF,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,0FAA0F;QAC1F,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9D,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,4EAA4E;QAC5E,yEAAyE;QACzE,0EAA0E;QAC1E,iEAAiE;QACjE,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChH,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,+EAA+E;QAC/E,8EAA8E;QAC9E,8EAA8E;QAC9E,8EAA8E;QAC9E,+EAA+E;QAC/E,uEAAuE;QACvE,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,wFAAwF;QACxF,gEAAgE;QAChE,sFAAsF;QACtF,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACxC,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,0DAA0D;QAC1D,EAAE;QACF,8DAA8D;QAC9D,8DAA8D;QAC9D,+DAA+D;QAC/D,gEAAgE;QAChE,kEAAkE;QAClE,kEAAkE;QAClE,kEAAkE;QAClE,sCAAsC;QACtC,EAAE;QACF,+DAA+D;QAC/D,uDAAuD;QACvD,6DAA6D;QAC7D,iDAAiD;QACjD,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;YACxC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;gBAChF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC,CAAC;gBACnF,OAAO;YACT,CAAC;YACD,mDAAmD;QACrD,CAAC;QAED,yDAAyD;QACzD,2EAA2E;QAC3E,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,IAAI,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;gBAC7D,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,uEAAuE;QACvE,kEAAkE;QAClE,mEAAmE;QACnE,0DAA0D;QAC1D,iEAAiE;QACjE,oEAAoE;QACpE,qEAAqE;QACrE,gCAAgC;QAChC,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAC1D,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,qBAAqB,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,+DAA+D;gBAC/D,+DAA+D;gBAC/D,gEAAgE;gBAChE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;gBACrD,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC1C,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CACV,8CAA8C,GAAG,CAAC,IAAI,GAAG;wBACzD,QAAQ,MAAM,gDAAgD;wBAC9D,6BAA6B,CAC9B,CAAC;gBACJ,CAAC;gBACD,0CAA0C;YAC5C,CAAC;iBAAM,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;gBACvC,8DAA8D;gBAC9D,8DAA8D;gBAC9D,8DAA8D;gBAC9D,2DAA2D;gBAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,4CAA4C;QAC9C,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,qFAAqF;QACrF,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/D,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,MAAM,EAAE,cAAsB,EAAE;IAC7E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE7C,sEAAsE;IACtE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;gBACvE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACjB,UAAU,CAAC,KAAK,EAAE,CAAC;IAEnB,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;YACZ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,yBAAyB;QACzB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE,4BAA4B,WAAW,iBAAiB,QAAQ,GAAG,IAAI,IAAI;gBAClF,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,GAAG;aACzC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,iBAAiB,EAAE,6BAA6B;QAChD,uBAAuB,EAAE,6BAA6B;QACtD,cAAc,EAAE,6BAA6B;QAC7C,gBAAgB,EAAE,6BAA6B;QAC/C,iBAAiB,EAAE,6BAA6B;QAChD,yBAAyB,EAAE,6BAA6B;QACxD,yBAAyB,EAAE,sBAAsB;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,SAAiB,EACjB,gBAAwC;IAExC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;QAC3C,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,YAAoB,MAAM,EAC1B,mBAA2C,EAAE;IAE7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAE/E,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE,iBAAiB;oBACxB,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,uCAAuC;QACvC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,SAAiB;IAC9D,OAAO,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,GAAW,EAAE,SAAiB;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACtF,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QAChD,GAAG,CAAC,MAAM,CACR,yBAAyB,EACzB,+IAA+I,CAChJ,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,IAAa,EAAE,GAAa,EAAE,KAAmB;IAC1F,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC5C,+CAA+C;IAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE,uBAAuB;QAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.103",
3
+ "version": "1.3.104",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-05-30T00:02:22.029Z",
5
- "instarVersion": "1.3.103",
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.