@tokenfactory/acc-runner 0.40.15 → 0.40.17

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.
@@ -42,6 +42,13 @@ export declare const MIRROR_SOCKET_HOST: "127.0.0.1";
42
42
  export declare const MIRROR_TOKEN_QUERY_KEY: "token";
43
43
  /** WebSocket close code for an unauthenticated / unauthorised upgrade (policy violation). */
44
44
  export declare const MIRROR_CLOSE_UNAUTHORIZED: 1008;
45
+ /**
46
+ * FU-8: how many consecutive ports the mirror tries on an EADDRINUSE clash
47
+ * before giving up (starting at the configured port). A second companion
48
+ * instance clashing on the default 7717 walks 7717→7718→… so a port clash
49
+ * degrades to a different loopback port instead of breaking chat serving.
50
+ */
51
+ export declare const DEFAULT_MIRROR_PORT_ATTEMPTS: 8;
45
52
  /** Mirror-frame lifecycle events (the subset of chat-topic events worth mirroring). */
46
53
  export type MirrorFrameEvent = "turn_stream" | "turn_complete" | "turn_requeued";
47
54
  /**
@@ -90,6 +97,12 @@ export interface CompanionMirrorSocketOptions {
90
97
  onInbound?: (raw: string) => void;
91
98
  /** Injected server factory (default: node http.createServer). Test seam. */
92
99
  createHttpServer?: () => Server;
100
+ /**
101
+ * FU-8: max consecutive ports to try on an EADDRINUSE clash before failing
102
+ * (default `DEFAULT_MIRROR_PORT_ATTEMPTS`). Ignored for an ephemeral port
103
+ * (`port: 0`), which the OS never clashes on. `1` disables auto-increment.
104
+ */
105
+ maxPortAttempts?: number;
93
106
  }
94
107
  /**
95
108
  * The loopback mirror server. Construct it with an OUTBOUND broadcast source
@@ -107,6 +120,13 @@ export declare class CompanionMirrorSocket {
107
120
  constructor(opts: CompanionMirrorSocketOptions);
108
121
  /** Bind the loopback server and begin accepting authed upgrades. */
109
122
  start(): Promise<void>;
123
+ /**
124
+ * Bind `http` to one loopback port. Resolves once listening (recording the
125
+ * bound port, resolving an ephemeral 0), rejects on the first `error` (e.g.
126
+ * EADDRINUSE) so `start` can try the next port. Listeners are one-shot so a
127
+ * failed attempt leaves the server reusable for the next `listen`.
128
+ */
129
+ private listenOnce;
110
130
  /** The bound loopback port (meaningful only after `start`; resolves an ephemeral 0). */
111
131
  port(): number;
112
132
  /** Live authed browser client count. */
@@ -1 +1 @@
1
- {"version":3,"file":"companion-mirror-socket.d.ts","sourceRoot":"","sources":["../src/companion-mirror-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAG,WAAoB,CAAC;AAEvD,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,EAAG,OAAgB,CAAC;AAEvD,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,EAAG,IAAa,CAAC;AAEvD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,OAAO,0BAA0B,CAAC;IACpD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMlE;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAQpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEN,IAAI,EAAE,4BAA4B;IAI/D,oEAAoE;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC5B,wFAAwF;IACxF,IAAI,IAAI,MAAM;IAId,wCAAwC;IACxC,WAAW,IAAI,MAAM;IAIrB,2FAA2F;IAC3F,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM;IA0BjG,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B,OAAO,CAAC,MAAM;CAYf"}
1
+ {"version":3,"file":"companion-mirror-socket.d.ts","sourceRoot":"","sources":["../src/companion-mirror-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAG,WAAoB,CAAC;AAEvD,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,EAAG,OAAgB,CAAC;AAEvD,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,EAAG,IAAa,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,EAAG,CAAU,CAAC;AAEvD,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,OAAO,0BAA0B,CAAC;IACpD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,EAAE,IAAI,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMlE;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAQpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEN,IAAI,EAAE,4BAA4B;IAI/D,oEAAoE;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD5B;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAkBlB,wFAAwF;IACxF,IAAI,IAAI,MAAM;IAId,wCAAwC;IACxC,WAAW,IAAI,MAAM;IAIrB,2FAA2F;IAC3F,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM;IA0BjG,4EAA4E;IACtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B,OAAO,CAAC,MAAM;CAYf"}
@@ -44,6 +44,13 @@ export const MIRROR_SOCKET_HOST = "127.0.0.1";
44
44
  export const MIRROR_TOKEN_QUERY_KEY = "token";
45
45
  /** WebSocket close code for an unauthenticated / unauthorised upgrade (policy violation). */
46
46
  export const MIRROR_CLOSE_UNAUTHORIZED = 1008;
47
+ /**
48
+ * FU-8: how many consecutive ports the mirror tries on an EADDRINUSE clash
49
+ * before giving up (starting at the configured port). A second companion
50
+ * instance clashing on the default 7717 walks 7717→7718→… so a port clash
51
+ * degrades to a different loopback port instead of breaking chat serving.
52
+ */
53
+ export const DEFAULT_MIRROR_PORT_ATTEMPTS = 8;
47
54
  /** Constant-time token compare that tolerates length mismatch without throwing. */
48
55
  export function tokensMatch(a, b) {
49
56
  if (a.length === 0 || b.length === 0)
@@ -103,17 +110,57 @@ export class CompanionMirrorSocket {
103
110
  }
104
111
  wss.handleUpgrade(req, socket, head, (ws) => this.accept(ws));
105
112
  });
106
- await new Promise((resolve, reject) => {
107
- http.once("error", reject);
108
- http.listen(this.opts.port, MIRROR_SOCKET_HOST, () => {
109
- http.off("error", reject);
113
+ // FU-8: bind resilience. On an EADDRINUSE clash (a second companion on the
114
+ // same loopback port) walk to the next port instead of throwing — the caller
115
+ // treats a hard failure as "serve mirror-less", so either way a port clash
116
+ // never breaks chat. An ephemeral port (0) can't clash, so it binds once.
117
+ const attempts = this.opts.port === 0 ? 1 : Math.max(1, this.opts.maxPortAttempts ?? DEFAULT_MIRROR_PORT_ATTEMPTS);
118
+ let lastErr = null;
119
+ for (let i = 0; i < attempts; i += 1) {
120
+ const port = this.opts.port === 0 ? 0 : this.opts.port + i;
121
+ try {
122
+ await this.listenOnce(http, port);
123
+ if (port !== this.opts.port) {
124
+ this.opts.onLog?.(`[acc-runner] mirror socket: port ${this.opts.port} in use, bound ${port} instead`);
125
+ }
126
+ this.http = http;
127
+ this.wss = wss;
128
+ return;
129
+ }
130
+ catch (err) {
131
+ lastErr = err;
132
+ // Only a port clash is retryable; any other bind error fails fast.
133
+ if (lastErr.code !== "EADDRINUSE")
134
+ break;
135
+ }
136
+ }
137
+ // Give up: drop our upgrade listener so the abandoned server holds nothing,
138
+ // and throw so the caller can fall back to serving mirror-less.
139
+ http.removeAllListeners("upgrade");
140
+ throw lastErr ?? new Error("mirror socket failed to bind");
141
+ }
142
+ /**
143
+ * Bind `http` to one loopback port. Resolves once listening (recording the
144
+ * bound port, resolving an ephemeral 0), rejects on the first `error` (e.g.
145
+ * EADDRINUSE) so `start` can try the next port. Listeners are one-shot so a
146
+ * failed attempt leaves the server reusable for the next `listen`.
147
+ */
148
+ listenOnce(http, port) {
149
+ return new Promise((resolve, reject) => {
150
+ const onError = (err) => {
151
+ http.off("listening", onListening);
152
+ reject(err);
153
+ };
154
+ const onListening = () => {
155
+ http.off("error", onError);
110
156
  const addr = http.address();
111
- this.boundPort = typeof addr === "object" && addr ? addr.port : this.opts.port;
157
+ this.boundPort = typeof addr === "object" && addr ? addr.port : port;
112
158
  resolve();
113
- });
159
+ };
160
+ http.once("error", onError);
161
+ http.once("listening", onListening);
162
+ http.listen(port, MIRROR_SOCKET_HOST);
114
163
  });
115
- this.http = http;
116
- this.wss = wss;
117
164
  }
118
165
  /** The bound loopback port (meaningful only after `start`; resolves an ephemeral 0). */
119
166
  port() {
@@ -1 +1 @@
1
- {"version":3,"file":"companion-mirror-socket.js","sourceRoot":"","sources":["../src/companion-mirror-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAoB,CAAC;AAEvD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAgB,CAAC;AAEvD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAa,CAAC;AAuBvD,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAuB;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AA0BD;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAQH;IAPrB,IAAI,GAAkB,IAAI,CAAC;IAC3B,GAAG,GAA2B,IAAI,CAAC;IAC1B,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAG,CAAC,CAAC;IACL,GAAG,CAAe;IAEnC,YAA6B,IAAkC;QAAlC,SAAI,GAAJ,IAAI,CAA8B;QAC7D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IAClC,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO;QACrB,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,EAAE,CAAC;QAC5D,8EAA8E;QAC9E,0EAA0E;QAC1E,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,2DAA2D,CAAC,CAAC;gBAC/E,sEAAsE;gBACtE,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE;gBACnD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/E,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,wFAAwF;IACxF,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,wCAAwC;IACxC,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,2FAA2F;IAC3F,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAuB,EAAE,cAAsB,EAAE,MAAc,EAAE,OAAgB;QACtF,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAgB;YACzB,gBAAgB,EAAE,0BAA0B;YAC5C,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,cAAc;YAC/B,OAAO,EAAE,MAAM;YACf,KAAK;YACL,OAAO;YACP,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI;gBAAE,SAAS;YACxC,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,IAAI,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,oCAAqC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,KAAK,CAAC,KAAK;QACT,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,GAAG;YAAE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI;YAAE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,MAAM,CAAC,EAAa;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,0EAA0E;QAC1E,oEAAoE;QACpE,2EAA2E;QAC3E,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CACF"}
1
+ {"version":3,"file":"companion-mirror-socket.js","sourceRoot":"","sources":["../src/companion-mirror-socket.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,6 @@
2
2
  export interface CompanionHandle {
3
3
  stop(): Promise<void>;
4
4
  }
5
- /** Env var seeding the owner's conversations the companion should serve at boot. */
6
- export declare const COMPANION_CONVERSATIONS_ENV = "ACC_RUNNER_COMPANION_CONVERSATIONS";
7
5
  /**
8
6
  * Optional OVERRIDE naming the acc.ai_identities row this companion serves. The
9
7
  * default is self-discovery (see companion-identity.ts) — this env var only
@@ -1 +1 @@
1
- {"version":3,"file":"companion-run.d.ts","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"AA8CA,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,oFAAoF;AACpF,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAChF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,CA0OjE;AAED,+DAA+D;AAC/D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED,8DAA8D;AAC9D,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7D;AAED,wCAAwC;AACxC,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/D"}
1
+ {"version":3,"file":"companion-run.d.ts","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"AAiDA,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,CAqTjE;AAED,+DAA+D;AAC/D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED,8DAA8D;AAC9D,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK7D;AAED,wCAAwC;AACxC,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/D"}
@@ -17,12 +17,10 @@ import { getChatEngine } from "./engines/registry.js";
17
17
  import { writeMcpConfig } from "./mcp-spawn.js";
18
18
  import { ChatCircuitBreaker, getChatCircuit } from "./runtime/chat-circuit-breaker.js";
19
19
  import { CompanionMirrorSocket } from "./companion-mirror-socket.js";
20
- import { CompanionRunner, OwnerConversationSource, createIdentityBroadcaster, deriveMirrorToken, resolveCompanionConfig, } from "./companion.js";
20
+ import { CompanionRunner, OwnerConversationSource, backfillActiveConversations, createConversationListener, createIdentityBroadcaster, deriveMirrorToken, resolveCompanionConfig, } from "./companion.js";
21
21
  import { companionStatusLine, defaultAutostartHost, installAutostart, uninstallAutostart, } from "./companion-autostart.js";
22
22
  import { companionBanner, discoverCompanionIdentities, providerForEngine, reportIdentityProbe, resolveBinding, } from "./companion-identity.js";
23
23
  import { PACKAGE_VERSION } from "./pkg-version.js";
24
- /** Env var seeding the owner's conversations the companion should serve at boot. */
25
- export const COMPANION_CONVERSATIONS_ENV = "ACC_RUNNER_COMPANION_CONVERSATIONS";
26
24
  /**
27
25
  * Optional OVERRIDE naming the acc.ai_identities row this companion serves. The
28
26
  * default is self-discovery (see companion-identity.ts) — this env var only
@@ -83,18 +81,22 @@ export async function companionCommand() {
83
81
  onLog: (line) => console.log(chalk.gray(line)),
84
82
  })
85
83
  : null;
86
- // Owner-affinity: only conversations owned by this user are servable. Seeded
87
- // from the env allowlist (owner == this session's user); the control plane
88
- // adds/removes more over the authenticated identity topic.
89
- const seedIds = (process.env[COMPANION_CONVERSATIONS_ENV] ?? "")
90
- .split(",")
91
- .map((s) => s.trim())
92
- .filter(Boolean)
93
- .map((conversationId) => ({ conversationId, ownerUserId: session.user_id }));
94
- const conversations = new OwnerConversationSource(session.user_id, seedIds);
84
+ // Owner-affinity: only conversations owned by this user are servable. FU-4:
85
+ // the boot-time ACC_RUNNER_COMPANION_CONVERSATIONS env seed is GONE — the
86
+ // companion DISCOVERS conversations live over the authenticated identity topic
87
+ // (the browser announces `conversation_active` when a conversation opens), so
88
+ // a brand-new conversation is served with no restart. Starts empty.
89
+ const conversations = new OwnerConversationSource(session.user_id);
95
90
  const broadcaster = createIdentityBroadcaster(supabase, session.user_id, {
96
91
  onLog: (line) => console.log(chalk.gray(line)),
97
92
  });
93
+ // FU-4: inbound identity-topic listener — folds browser `conversation_active`
94
+ // broadcasts into the owner-affinity source (owner-affinity enforced on add).
95
+ // Same `identity:<user>` topic the broadcaster announces on; a distinct
96
+ // channel so the two lifecycles (send vs. listen) stay independent.
97
+ const conversationListener = createConversationListener(supabase, session.user_id, conversations, {
98
+ onLog: (line) => console.log(chalk.gray(line)),
99
+ });
98
100
  // COMPANION-IDENTITY-DISCOVERY: self-discover the enrollment identity so plain
99
101
  // `acc-runner companion` binds with ZERO env vars. This authenticated call is
100
102
  // ALSO the pre-online SESSION PING — a dead session yields 401 here, and we
@@ -130,9 +132,13 @@ export async function companionCommand() {
130
132
  // hard-errors ("MCP config file not found") and the turn streams NO text — the
131
133
  // operator sees an empty reply. The task lane provisions it via writeMcpConfig;
132
134
  // the chat lane must too. One config covers the whole companion session (cwd is
133
- // the stable repoPath); acc-mcp-server authorizes via the runner access token
134
- // (task-id is optional for the chat lane). Re-provisioned on every token
135
- // refresh so the baked JWT never goes stale. Reads session/cfg at CALL time.
135
+ // the stable repoPath). FU-5 (CHAT-RT): the config still bakes the runner
136
+ // access token as a FALLBACK, but each turn also forwards a narrow per-turn
137
+ // delegation token via ACC_MCP_DELEGATION_TOKEN (see mintDelegation below +
138
+ // chatEnv), which the acc-mcp-server prefers as its Bearer — so companion tool
139
+ // calls are bounded by the delegation claims, not the broad runner token.
140
+ // Re-provisioned on every token refresh so the baked fallback JWT never goes
141
+ // stale. Reads session/cfg at CALL time.
136
142
  let mcpCleanup = null;
137
143
  const provisionChatMcp = async () => {
138
144
  try {
@@ -152,6 +158,39 @@ export async function companionCommand() {
152
158
  console.log(chalk.yellow(`[acc-runner] chat acc-mcp provisioning failed: ${err.message}`));
153
159
  }
154
160
  };
161
+ // CHAT-DELEGATION (FU-5): mint a NARROW per-turn delegation token bound to the
162
+ // turn's conversation. POSTs to /api/chat/delegation under the operator's own
163
+ // session JWT (the companion is owner-bound, so the operator == this session's
164
+ // user); the server clamps the scope to the operator's ceiling and signs the
165
+ // frozen DelegationJwtClaims. The token flows turn → engine.streamTurn →
166
+ // chatEnv (ACC_MCP_DELEGATION_TOKEN) → acc-mcp-server, which authorizes the
167
+ // turn's tool calls under these claims instead of the broad runner token.
168
+ // Best-effort: a mint failure returns undefined, so the turn falls back to the
169
+ // baked runner-token .mcp.json (pre-FU-5 behaviour) rather than failing. Reads
170
+ // session at CALL time so a token rotation is reflected.
171
+ const delegationBase = cfg.publicUrl.replace(/\/+$/, "");
172
+ const mintDelegation = async (turn) => {
173
+ try {
174
+ const res = await fetch(`${delegationBase}/api/chat/delegation`, {
175
+ method: "POST",
176
+ headers: {
177
+ "Content-Type": "application/json",
178
+ Authorization: `Bearer ${session.access_token}`,
179
+ },
180
+ body: JSON.stringify({ conversation_id: turn.conversation_id, role: "companion" }),
181
+ });
182
+ if (!res.ok) {
183
+ console.log(chalk.yellow(`[acc-runner] chat delegation mint failed: HTTP ${res.status}`));
184
+ return undefined;
185
+ }
186
+ const json = (await res.json());
187
+ return typeof json.token === "string" && json.token ? json.token : undefined;
188
+ }
189
+ catch (err) {
190
+ console.log(chalk.yellow(`[acc-runner] chat delegation mint error: ${err.message}`));
191
+ return undefined;
192
+ }
193
+ };
155
194
  // AUTH-REFRESH: rotate the ACC session in place. Called proactively (token
156
195
  // near expiry) and reactively (ONE per auth-failure streak) by CompanionRunner.
157
196
  // Rebuilds the Supabase client so the next heartbeat bears the fresh JWT, and
@@ -218,11 +257,28 @@ export async function companionCommand() {
218
257
  ? { refreshAuth, expiresSoon: (leadMs) => expiresSoon(session, leadMs) }
219
258
  : {}),
220
259
  cwd: cfg.repoPath,
260
+ // FU-5 (CHAT-RT): narrow the per-turn acc-mcp identity to the delegation.
261
+ mintDelegation,
221
262
  onLog: (line) => console.log(chalk.gray(line)),
222
263
  });
223
264
  // Provision the acc-mcp tool bus before any turn can be claimed/driven.
224
265
  await provisionChatMcp();
225
266
  await runner.start();
267
+ // FU-4: begin discovering conversations over the identity topic. Best-effort —
268
+ // a subscribe failure never blocks the companion coming online; a dropped
269
+ // broadcast self-heals on the operator's next send (the browser re-announces
270
+ // `conversation_active` on every `conversation` SSE event).
271
+ await conversationListener.start().catch((err) => {
272
+ console.log(chalk.yellow(`[acc-runner] conversation discovery listener failed to start: ${err.message}`));
273
+ });
274
+ // FU-8: STARTUP BACKFILL — a companion (re)start starts with an empty served
275
+ // set and, before this, only re-learned conversations from a live browser
276
+ // announce (FU-4). Backfill the bound user's conversations that currently have
277
+ // a queued/streaming turn so a restart self-heals and drains the in-flight
278
+ // turn with no manual re-announce. Best-effort (the helper swallows + logs).
279
+ await backfillActiveConversations(supabase, session.user_id, conversations, {
280
+ onLog: (line) => console.log(chalk.gray(line)),
281
+ });
226
282
  // HONESTY: the banner states the bound identity (green) or "UNBOUND — not
227
283
  // serving provider status" (yellow) with the reason + how to fix. `tone==="ok"`
228
284
  // iff bound, so a green-and-silent-while-unbound banner is impossible.
@@ -230,11 +286,21 @@ export async function companionCommand() {
230
286
  console.log((banner.tone === "ok" ? chalk.green : chalk.yellow.bold)(banner.headline));
231
287
  for (const line of banner.lines)
232
288
  console.log(chalk.gray(line));
233
- console.log(chalk.gray(` serving ${conversations.size()} conversation(s)` +
234
- (mirror ? `; mirror on 127.0.0.1:${mirror.port()}` : "; mirror disabled")));
289
+ // FU-8: mirror.port() > 0 iff the loopback socket actually bound (possibly on
290
+ // an auto-incremented port after a clash); a live mirror that couldn't bind
291
+ // fell back to mirror-less, so report that honestly rather than "127.0.0.1:0".
292
+ const mirrorPort = mirror?.port() ?? 0;
293
+ const mirrorNote = !mirror
294
+ ? "; mirror disabled"
295
+ : mirrorPort > 0
296
+ ? `; mirror on 127.0.0.1:${mirrorPort}`
297
+ : "; mirror unavailable (port busy — serving mirror-less)";
298
+ console.log(chalk.gray(` serving ${conversations.size()} conversation(s) (discovered live over identity:${session.user_id})` +
299
+ mirrorNote));
235
300
  return {
236
301
  async stop() {
237
302
  await runner.stop();
303
+ await conversationListener.close();
238
304
  await broadcaster.close();
239
305
  // Remove our JWT-bearing .mcp.json (or restore the operator's original).
240
306
  await mcpCleanup?.restore().catch(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"companion-run.js","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"companion-run.js","sourceRoot":"","sources":["../src/companion-run.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { ChatCircuitBreaker } from "./runtime/chat-circuit-breaker.js";
4
4
  import type { ConformantAgentEngine, EngineCapabilityMatrix, EngineCapabilityTier, RunnerCapacityClass } from "./engines/types.js";
5
5
  import type { StoredSession } from "./types.js";
6
6
  /** Identity-topic events (mirror of the web-app `IdentityTopicEvent`). */
7
- export type IdentityTopicEvent = "capacity_changed" | "companion_registered" | "companion_lost";
7
+ export type IdentityTopicEvent = "capacity_changed" | "companion_registered" | "companion_lost" | "conversation_active";
8
8
  /** runner → server: register/refresh a companion bound to its owner. */
9
9
  export interface CompanionRegisterPayload {
10
10
  mode: "companion";
@@ -22,6 +22,20 @@ export interface IdentityCapacityEvent {
22
22
  available_engine_ids: string[];
23
23
  ts: string;
24
24
  }
25
+ /**
26
+ * Payload of an `identity:<user_id>` `conversation_active` broadcast
27
+ * (browser → runner; mirror of the web-app IdentityConversationActiveEvent).
28
+ * The browser announces a conversation opened/closed so the companion DISCOVERS
29
+ * and serves it live — no ACC_RUNNER_COMPANION_CONVERSATIONS boot seed and no
30
+ * restart. Owner-affinity is enforced runner-side via `owner_user_id`.
31
+ */
32
+ export interface IdentityConversationActiveEvent {
33
+ conversation_id: string;
34
+ owner_user_id: string;
35
+ /** true = opened / servable, false = closed / removed. */
36
+ active: boolean;
37
+ ts: string;
38
+ }
25
39
  /** Build the per-identity capacity Realtime topic (mirror of the web builder). */
26
40
  export declare function identityTopic(userId: string): `identity:${string}`;
27
41
  /** Opt the runner's chat lane into serving code tasks too (default: chat only). */
@@ -196,6 +210,12 @@ export interface CompanionRunnerDeps {
196
210
  export declare class CompanionRunner {
197
211
  private readonly deps;
198
212
  private companion;
213
+ /**
214
+ * FU-8: the mirror socket that actually came up. Resolves to null when the
215
+ * mirror bind failed (a port clash a second instance can't recover from) so
216
+ * discovery/claim still start — a latency shim is never worth breaking chat.
217
+ */
218
+ private activeMirror;
199
219
  private heartbeatTimer;
200
220
  private lastCapacity;
201
221
  private stopped;
@@ -265,6 +285,63 @@ export declare function createIdentityBroadcaster(client: {
265
285
  announce: (event: IdentityTopicEvent, payload: unknown) => Promise<void>;
266
286
  close: () => Promise<void>;
267
287
  };
288
+ /**
289
+ * Fold one inbound `conversation_active` identity-topic broadcast into the
290
+ * owner-affinity source. Pure apart from the mutation on `conversations`, and
291
+ * returns what it did for observability/tests. Owner-affinity is enforced by
292
+ * `OwnerConversationSource.add` (a foreign owner is a no-op), so it is safe to
293
+ * call for any inbound payload; malformed payloads are ignored.
294
+ */
295
+ export declare function applyConversationActive(conversations: OwnerConversationSource, payload: unknown, onLog?: (line: string) => void): "added" | "removed" | "ignored";
296
+ /**
297
+ * Subscribe to inbound `conversation_active` broadcasts on the companion's
298
+ * `identity:<userId>` topic and fold them into the owner-affinity source, so a
299
+ * conversation the operator opens in the browser is DISCOVERED and served with
300
+ * no boot-time env seed and no companion restart (FU-4). The inbound counterpart
301
+ * of `createIdentityBroadcaster`; kept separate from the orchestrator so tests
302
+ * inject a recording fake client. Owner-affinity is enforced inside
303
+ * `applyConversationActive` → `conversations.add`.
304
+ */
305
+ export declare function createConversationListener(client: {
306
+ channel: (topic: string) => any;
307
+ removeChannel: (ch: any) => Promise<unknown>;
308
+ }, userId: string, conversations: OwnerConversationSource, opts?: {
309
+ onLog?: (line: string) => void;
310
+ }): {
311
+ start: () => Promise<void>;
312
+ close: () => Promise<void>;
313
+ };
314
+ /** In-flight chat-turn statuses that mean a conversation still needs serving. */
315
+ export declare const BACKFILL_ACTIVE_TURN_STATUSES: readonly string[];
316
+ /**
317
+ * FU-8 (CHAT-RT): STARTUP BACKFILL — self-heal a companion (re)start.
318
+ *
319
+ * `OwnerConversationSource` starts empty and otherwise only learns conversations
320
+ * from live browser `conversation_active` announces (FU-4). A companion that
321
+ * restarts therefore drops its served set until the operator sends again — so an
322
+ * in-flight/queued turn on an already-active conversation is never claimed (the
323
+ * ~20-min stuck-chat the operator hit after a restart). This backfills, once at
324
+ * startup, every conversation OWNED BY the bound user that currently has a
325
+ * queued/claimed/streaming turn, so the claim loop drains it with no manual
326
+ * re-announce.
327
+ *
328
+ * Owner-affinity: the `acc.chat_turns` SELECT policy is ORG-scoped (migration
329
+ * 0254), so a candidate id may belong to a fellow org member. We therefore
330
+ * confirm ownership against `acc.chat_conversations` (filtered to the bound
331
+ * user) before serving any, so the same guarantee `OwnerConversationSource.add`
332
+ * enforces structurally holds here too. Best-effort: any query failure is logged
333
+ * and returns an empty result — the companion still comes online and self-heals
334
+ * on the operator's next send.
335
+ */
336
+ export declare function backfillActiveConversations(client: {
337
+ from: (table: string) => any;
338
+ }, boundUserId: string, conversations: OwnerConversationSource, opts?: {
339
+ onLog?: (line: string) => void;
340
+ statuses?: readonly string[];
341
+ }): Promise<{
342
+ added: string[];
343
+ scanned: number;
344
+ }>;
268
345
  /** Re-export for callers that resolve chat-lane knobs alongside companion knobs. */
269
346
  export { resolveChatLaneConfig };
270
347
  //# sourceMappingURL=companion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"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"}
package/dist/companion.js CHANGED
@@ -184,6 +184,12 @@ export function mirrorTee(transport, mirror) {
184
184
  export class CompanionRunner {
185
185
  deps;
186
186
  companion = null;
187
+ /**
188
+ * FU-8: the mirror socket that actually came up. Resolves to null when the
189
+ * mirror bind failed (a port clash a second instance can't recover from) so
190
+ * discovery/claim still start — a latency shim is never worth breaking chat.
191
+ */
192
+ activeMirror = null;
187
193
  heartbeatTimer = null;
188
194
  lastCapacity = null;
189
195
  stopped = false;
@@ -247,12 +253,26 @@ export class CompanionRunner {
247
253
  this.deps.onLog?.(`[acc-runner] companion registration persist failed: ${err.message}`);
248
254
  });
249
255
  }
250
- if (this.deps.mirror)
251
- await this.deps.mirror.start();
256
+ // FU-8: the mirror is a pure latency shim — its bind must NEVER break chat
257
+ // serving. A second companion instance clashing on 127.0.0.1:7717
258
+ // (EADDRINUSE) previously threw here, so the pump/heartbeat below never
259
+ // started and the instance came up degraded. The socket now auto-increments
260
+ // to the next free port; if it still can't bind we log and serve mirror-less.
261
+ this.activeMirror = this.deps.mirror ?? null;
262
+ if (this.activeMirror) {
263
+ try {
264
+ await this.activeMirror.start();
265
+ }
266
+ catch (err) {
267
+ this.deps.onLog?.(`[acc-runner] companion mirror socket unavailable (${err.message}); ` +
268
+ `serving chat without the loopback latency shim`);
269
+ this.activeMirror = null;
270
+ }
271
+ }
252
272
  this.companion = new ChatCompanion({
253
273
  runnerId: this.deps.runnerId,
254
274
  engine: this.deps.engine,
255
- transport: mirrorTee(this.deps.transport, this.deps.mirror),
275
+ transport: mirrorTee(this.deps.transport, this.activeMirror),
256
276
  breaker: this.deps.breaker,
257
277
  concurrencyLimit: this.deps.concurrencyLimit,
258
278
  maxShare: this.deps.maxShare,
@@ -300,8 +320,10 @@ export class CompanionRunner {
300
320
  ts: new Date(this.now()).toISOString(),
301
321
  })
302
322
  .catch(() => undefined);
303
- if (this.deps.mirror)
304
- await this.deps.mirror.close().catch(() => undefined);
323
+ // Close only the mirror that actually came up (null when it fell back to
324
+ // mirror-less); a never-started socket's close() is a safe no-op regardless.
325
+ if (this.activeMirror)
326
+ await this.activeMirror.close().catch(() => undefined);
305
327
  }
306
328
  /**
307
329
  * One production heartbeat cycle: run a beat then arm the next backoff-aware
@@ -493,6 +515,154 @@ client, userId, opts = {}) {
493
515
  },
494
516
  };
495
517
  }
518
+ /**
519
+ * Fold one inbound `conversation_active` identity-topic broadcast into the
520
+ * owner-affinity source. Pure apart from the mutation on `conversations`, and
521
+ * returns what it did for observability/tests. Owner-affinity is enforced by
522
+ * `OwnerConversationSource.add` (a foreign owner is a no-op), so it is safe to
523
+ * call for any inbound payload; malformed payloads are ignored.
524
+ */
525
+ export function applyConversationActive(conversations, payload, onLog) {
526
+ if (typeof payload !== "object" || payload === null)
527
+ return "ignored";
528
+ const p = payload;
529
+ const conversationId = typeof p.conversation_id === "string" ? p.conversation_id.trim() : "";
530
+ if (!conversationId)
531
+ return "ignored";
532
+ if (p.active === false) {
533
+ conversations.remove(conversationId);
534
+ onLog?.(`[acc-runner] companion dropped conversation ${conversationId}`);
535
+ return "removed";
536
+ }
537
+ // owner-affinity: add() rejects a foreign owner (or blank id) and no-ops, so a
538
+ // spoofed broadcast can never make the companion serve another operator's chat.
539
+ const ownerUserId = typeof p.owner_user_id === "string" ? p.owner_user_id : "";
540
+ if (conversations.add(conversationId, ownerUserId)) {
541
+ onLog?.(`[acc-runner] companion discovered conversation ${conversationId}`);
542
+ return "added";
543
+ }
544
+ return "ignored";
545
+ }
546
+ /**
547
+ * Subscribe to inbound `conversation_active` broadcasts on the companion's
548
+ * `identity:<userId>` topic and fold them into the owner-affinity source, so a
549
+ * conversation the operator opens in the browser is DISCOVERED and served with
550
+ * no boot-time env seed and no companion restart (FU-4). The inbound counterpart
551
+ * of `createIdentityBroadcaster`; kept separate from the orchestrator so tests
552
+ * inject a recording fake client. Owner-affinity is enforced inside
553
+ * `applyConversationActive` → `conversations.add`.
554
+ */
555
+ export function createConversationListener(
556
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
557
+ client, userId, conversations, opts = {}) {
558
+ const topic = identityTopic(userId);
559
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
560
+ let channel = null;
561
+ return {
562
+ async start() {
563
+ if (channel)
564
+ return;
565
+ channel = client
566
+ .channel(topic)
567
+ .on("broadcast", { event: "conversation_active" }, (msg) => {
568
+ applyConversationActive(conversations, msg?.payload, opts.onLog);
569
+ });
570
+ await new Promise((resolve) => {
571
+ channel.subscribe((status) => {
572
+ if (status === "SUBSCRIBED")
573
+ resolve();
574
+ });
575
+ setTimeout(resolve, 2_000).unref?.();
576
+ });
577
+ },
578
+ async close() {
579
+ if (channel) {
580
+ try {
581
+ await client.removeChannel(channel);
582
+ }
583
+ catch {
584
+ /* best-effort */
585
+ }
586
+ channel = null;
587
+ }
588
+ },
589
+ };
590
+ }
591
+ /** In-flight chat-turn statuses that mean a conversation still needs serving. */
592
+ export const BACKFILL_ACTIVE_TURN_STATUSES = ["queued", "claimed", "streaming"];
593
+ /**
594
+ * FU-8 (CHAT-RT): STARTUP BACKFILL — self-heal a companion (re)start.
595
+ *
596
+ * `OwnerConversationSource` starts empty and otherwise only learns conversations
597
+ * from live browser `conversation_active` announces (FU-4). A companion that
598
+ * restarts therefore drops its served set until the operator sends again — so an
599
+ * in-flight/queued turn on an already-active conversation is never claimed (the
600
+ * ~20-min stuck-chat the operator hit after a restart). This backfills, once at
601
+ * startup, every conversation OWNED BY the bound user that currently has a
602
+ * queued/claimed/streaming turn, so the claim loop drains it with no manual
603
+ * re-announce.
604
+ *
605
+ * Owner-affinity: the `acc.chat_turns` SELECT policy is ORG-scoped (migration
606
+ * 0254), so a candidate id may belong to a fellow org member. We therefore
607
+ * confirm ownership against `acc.chat_conversations` (filtered to the bound
608
+ * user) before serving any, so the same guarantee `OwnerConversationSource.add`
609
+ * enforces structurally holds here too. Best-effort: any query failure is logged
610
+ * and returns an empty result — the companion still comes online and self-heals
611
+ * on the operator's next send.
612
+ */
613
+ export async function backfillActiveConversations(
614
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
615
+ client, boundUserId, conversations, opts = {}) {
616
+ const statuses = opts.statuses ?? BACKFILL_ACTIVE_TURN_STATUSES;
617
+ try {
618
+ const turnsRes = await client
619
+ .from("chat_turns")
620
+ .select("conversation_id")
621
+ .in("status", statuses);
622
+ if (turnsRes?.error) {
623
+ opts.onLog?.(`[acc-runner] companion startup backfill: chat_turns scan failed: ${turnsRes.error.message}`);
624
+ return { added: [], scanned: 0 };
625
+ }
626
+ const turnRows = Array.isArray(turnsRes?.data) ? turnsRes.data : [];
627
+ const candidateIds = [
628
+ ...new Set(turnRows
629
+ .map((r) => {
630
+ const v = r?.conversation_id;
631
+ return typeof v === "string" ? v.trim() : "";
632
+ })
633
+ .filter((id) => id.length > 0)),
634
+ ];
635
+ if (candidateIds.length === 0)
636
+ return { added: [], scanned: 0 };
637
+ // Owner-affinity: resolve which candidates the bound user actually owns.
638
+ const ownedRes = await client
639
+ .from("chat_conversations")
640
+ .select("id")
641
+ .eq("user_id", boundUserId)
642
+ .in("id", candidateIds);
643
+ if (ownedRes?.error) {
644
+ opts.onLog?.(`[acc-runner] companion startup backfill: ownership check failed: ${ownedRes.error.message}`);
645
+ return { added: [], scanned: candidateIds.length };
646
+ }
647
+ const ownedRows = Array.isArray(ownedRes?.data) ? ownedRes.data : [];
648
+ const added = [];
649
+ for (const r of ownedRows) {
650
+ const v = r?.id;
651
+ const id = typeof v === "string" ? v.trim() : "";
652
+ // add() re-checks owner-affinity (owner === boundUserId ⇒ always true here).
653
+ if (id && conversations.add(id, boundUserId))
654
+ added.push(id);
655
+ }
656
+ if (added.length > 0) {
657
+ opts.onLog?.(`[acc-runner] companion startup backfill: serving ${added.length} active conversation(s) after restart`);
658
+ }
659
+ return { added, scanned: candidateIds.length };
660
+ }
661
+ catch (err) {
662
+ opts.onLog?.(`[acc-runner] companion startup backfill failed: ${err.message}`);
663
+ return { added: [], scanned: 0 };
664
+ }
665
+ }
496
666
  /** Re-export for callers that resolve chat-lane knobs alongside companion knobs. */
497
667
  export { resolveChatLaneConfig };
498
668
  //# sourceMappingURL=companion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"companion.js","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"companion.js","sourceRoot":"","sources":["../src/companion.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tokenfactory/acc-runner",
3
- "version": "0.40.15",
3
+ "version": "0.40.17",
4
4
  "description": "Agent Control Center local runner. Spawns Claude Code sessions assigned via ACC.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,