unity-open-mcp 0.9.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/asmdef-discovery.d.ts +35 -0
  2. package/dist/asmdef-discovery.js +171 -0
  3. package/dist/asmdef-discovery.js.map +1 -0
  4. package/dist/batch-spawn.d.ts +27 -0
  5. package/dist/batch-spawn.js +218 -24
  6. package/dist/batch-spawn.js.map +1 -1
  7. package/dist/capabilities/build-capabilities.d.ts +10 -0
  8. package/dist/capabilities/build-capabilities.js +4 -0
  9. package/dist/capabilities/build-capabilities.js.map +1 -1
  10. package/dist/capabilities/capabilities-view.d.ts +48 -0
  11. package/dist/capabilities/capabilities-view.js +93 -0
  12. package/dist/capabilities/capabilities-view.js.map +1 -0
  13. package/dist/capabilities/intent-groups.js +42 -0
  14. package/dist/capabilities/intent-groups.js.map +1 -1
  15. package/dist/capabilities/rule-catalog.js +7 -1
  16. package/dist/capabilities/rule-catalog.js.map +1 -1
  17. package/dist/capabilities/tool-groups.js +37 -2
  18. package/dist/capabilities/tool-groups.js.map +1 -1
  19. package/dist/child-supervision.d.ts +34 -0
  20. package/dist/child-supervision.js +110 -0
  21. package/dist/child-supervision.js.map +1 -0
  22. package/dist/cli/cli.js +9 -0
  23. package/dist/cli/cli.js.map +1 -1
  24. package/dist/cli/commands.js +37 -4
  25. package/dist/cli/commands.js.map +1 -1
  26. package/dist/compressible-router.js +12 -1
  27. package/dist/compressible-router.js.map +1 -1
  28. package/dist/constants.d.ts +31 -1
  29. package/dist/constants.js +31 -1
  30. package/dist/constants.js.map +1 -1
  31. package/dist/dialog-dismiss.d.ts +11 -0
  32. package/dist/dialog-dismiss.js +59 -4
  33. package/dist/dialog-dismiss.js.map +1 -1
  34. package/dist/editor-wedge.d.ts +45 -0
  35. package/dist/editor-wedge.js +111 -0
  36. package/dist/editor-wedge.js.map +1 -0
  37. package/dist/event-stream.d.ts +19 -6
  38. package/dist/event-stream.js +139 -17
  39. package/dist/event-stream.js.map +1 -1
  40. package/dist/gate-error.d.ts +2 -0
  41. package/dist/gate-error.js +9 -0
  42. package/dist/gate-error.js.map +1 -1
  43. package/dist/instance-discovery.d.ts +23 -0
  44. package/dist/instance-discovery.js +47 -1
  45. package/dist/instance-discovery.js.map +1 -1
  46. package/dist/live-client.d.ts +40 -5
  47. package/dist/live-client.js +254 -36
  48. package/dist/live-client.js.map +1 -1
  49. package/dist/offline/api.js +82 -30
  50. package/dist/offline/api.js.map +1 -1
  51. package/dist/offline/index-builders.d.ts +9 -0
  52. package/dist/offline/index-builders.js +58 -8
  53. package/dist/offline/index-builders.js.map +1 -1
  54. package/dist/offline/parse.js +5 -1
  55. package/dist/offline/parse.js.map +1 -1
  56. package/dist/process-diagnostics.d.ts +101 -19
  57. package/dist/process-diagnostics.js +197 -59
  58. package/dist/process-diagnostics.js.map +1 -1
  59. package/dist/project-settings.d.ts +36 -0
  60. package/dist/project-settings.js +96 -0
  61. package/dist/project-settings.js.map +1 -0
  62. package/dist/results.d.ts +8 -0
  63. package/dist/results.js +4 -1
  64. package/dist/results.js.map +1 -1
  65. package/dist/routers.js +4 -1
  66. package/dist/routers.js.map +1 -1
  67. package/dist/running-unity.d.ts +23 -0
  68. package/dist/running-unity.js +60 -0
  69. package/dist/running-unity.js.map +1 -1
  70. package/dist/server.js +8 -2
  71. package/dist/server.js.map +1 -1
  72. package/dist/stale-assembly-cache.d.ts +40 -0
  73. package/dist/stale-assembly-cache.js +76 -0
  74. package/dist/stale-assembly-cache.js.map +1 -0
  75. package/dist/tool-hint.d.ts +36 -0
  76. package/dist/tool-hint.js +98 -0
  77. package/dist/tool-hint.js.map +1 -0
  78. package/dist/tool-router.d.ts +47 -2
  79. package/dist/tool-router.js +652 -71
  80. package/dist/tool-router.js.map +1 -1
  81. package/dist/tools/agent-capabilities.js +27 -1
  82. package/dist/tools/agent-capabilities.js.map +1 -1
  83. package/dist/tools/baseline-create.js +1 -1
  84. package/dist/tools/baseline-create.js.map +1 -1
  85. package/dist/tools/batch-execute.js +12 -1
  86. package/dist/tools/batch-execute.js.map +1 -1
  87. package/dist/tools/bridge-status.js +21 -1
  88. package/dist/tools/bridge-status.js.map +1 -1
  89. package/dist/tools/capture-inline.js +4 -3
  90. package/dist/tools/capture-inline.js.map +1 -1
  91. package/dist/tools/editor-status.js +7 -2
  92. package/dist/tools/editor-status.js.map +1 -1
  93. package/dist/tools/execute-csharp.js +36 -3
  94. package/dist/tools/execute-csharp.js.map +1 -1
  95. package/dist/tools/execute-menu.js +33 -2
  96. package/dist/tools/execute-menu.js.map +1 -1
  97. package/dist/tools/index.d.ts +1 -0
  98. package/dist/tools/index.js +44 -0
  99. package/dist/tools/index.js.map +1 -1
  100. package/dist/tools/inputsim-key.d.ts +40 -0
  101. package/dist/tools/inputsim-key.js +72 -0
  102. package/dist/tools/inputsim-key.js.map +1 -0
  103. package/dist/tools/inputsim-pointer.d.ts +40 -0
  104. package/dist/tools/inputsim-pointer.js +121 -0
  105. package/dist/tools/inputsim-pointer.js.map +1 -0
  106. package/dist/tools/inputsim-pointer3d.d.ts +40 -0
  107. package/dist/tools/inputsim-pointer3d.js +55 -0
  108. package/dist/tools/inputsim-pointer3d.js.map +1 -0
  109. package/dist/tools/inputsim-probe.d.ts +40 -0
  110. package/dist/tools/inputsim-probe.js +43 -0
  111. package/dist/tools/inputsim-probe.js.map +1 -0
  112. package/dist/tools/inputsim-step.d.ts +40 -0
  113. package/dist/tools/inputsim-step.js +50 -0
  114. package/dist/tools/inputsim-step.js.map +1 -0
  115. package/dist/tools/inputsim-touch.d.ts +40 -0
  116. package/dist/tools/inputsim-touch.js +83 -0
  117. package/dist/tools/inputsim-touch.js.map +1 -0
  118. package/dist/tools/invoke-method.js +15 -1
  119. package/dist/tools/invoke-method.js.map +1 -1
  120. package/dist/tools/memory-snapshot-capture.js +11 -5
  121. package/dist/tools/memory-snapshot-capture.js.map +1 -1
  122. package/dist/tools/pull-events.js +18 -10
  123. package/dist/tools/pull-events.js.map +1 -1
  124. package/dist/tools/read-compile-errors.js +36 -7
  125. package/dist/tools/read-compile-errors.js.map +1 -1
  126. package/dist/tools/regression-check.js +2 -1
  127. package/dist/tools/regression-check.js.map +1 -1
  128. package/dist/tools/resource-pressure.js +21 -10
  129. package/dist/tools/resource-pressure.js.map +1 -1
  130. package/dist/tools/run-tests.js +11 -2
  131. package/dist/tools/run-tests.js.map +1 -1
  132. package/dist/tools/scan-all.js +2 -2
  133. package/dist/tools/scan-all.js.map +1 -1
  134. package/dist/tools/screenshot-window.js +18 -12
  135. package/dist/tools/screenshot-window.js.map +1 -1
  136. package/dist/tools/screenshot.js +13 -6
  137. package/dist/tools/screenshot.js.map +1 -1
  138. package/dist/tools/visual-compare.d.ts +40 -0
  139. package/dist/tools/visual-compare.js +98 -0
  140. package/dist/tools/visual-compare.js.map +1 -0
  141. package/dist/unity-log.d.ts +67 -2
  142. package/dist/unity-log.js +206 -8
  143. package/dist/unity-log.js.map +1 -1
  144. package/package.json +1 -1
@@ -12,6 +12,12 @@
12
12
  // reader once and is a no-op afterwards.
13
13
  // - The reader reconnects with the last subscriber id so it keeps its cursor
14
14
  // across disconnects (a 10-minute SSE timeout or a Unity domain reload).
15
+ // Reconnects back off exponentially (2s doubling to a 30s cap, reset after
16
+ // a successful connect) so a dead bridge is not hammered forever, and each
17
+ // attempt re-reads the instance lock first: the bridge mints a fresh token
18
+ // on every Acquire (domain reload / editor restart), so the reader must
19
+ // pick up the new port+token instead of going permanently 401 with the
20
+ // construction-time credentials.
15
21
  // - On bridge-unavailable (connection refused), ensureSubscription records
16
22
  // the failure and the tool surfaces a `bridge_unavailable` error to the
17
23
  // agent instead of hanging.
@@ -19,10 +25,13 @@
19
25
  // No new runtime deps — uses only `node:crypto`, the global `fetch`, and the
20
26
  // `node:events` API.
21
27
  import { randomBytes } from "node:crypto";
28
+ import { resolveRefreshedEndpoint } from "./instance-discovery.js";
22
29
  const QUEUE_CAPACITY = 500;
30
+ /** First reconnect delay; doubles on each consecutive failure. */
31
+ const RECONNECT_BASE_DELAY_MS = 2000;
32
+ /** Backoff ceiling — consecutive failures never wait longer than this. */
33
+ const RECONNECT_MAX_DELAY_MS = 30_000;
23
34
  export class BridgeEventStream {
24
- baseUrl;
25
- authToken;
26
35
  subscriberId;
27
36
  queue = [];
28
37
  dropped = 0;
@@ -31,14 +40,41 @@ export class BridgeEventStream {
31
40
  abortController = null;
32
41
  reconnectTimer = null;
33
42
  started = false;
43
+ // Current reconnect delay — doubles in scheduleReconnect() on each
44
+ // consecutive failure and resets to RECONNECT_BASE_DELAY_MS once a connect
45
+ // succeeds. Plain 2s-forever meant a dead/stale-token bridge was retried
46
+ // ~1800 times/hour for the whole process lifetime.
47
+ reconnectDelayMs = RECONNECT_BASE_DELAY_MS;
34
48
  // True after stop() so the pump's finally/catch know not to schedule a
35
49
  // reconnect for the AbortError they observe when the stream is torn down.
36
50
  stopped = false;
37
- constructor(baseUrl, subscriberId, authToken) {
51
+ // feedback #8 (2026-08-10) — per-subscriber read cursors over the shared
52
+ // queue. The bridge SSE reader is a single process-wide subscription (one
53
+ // queue), but each `pull_events` caller can name its own subscriber id.
54
+ // Without a per-subscriber cursor every caller drained the SAME FIFO queue,
55
+ // so a fresh subscriber name replayed the entire accumulated backlog
56
+ // (sometimes hours of history across editor restarts) instead of returning
57
+ // `started:true` with empty events as the contract promises. `cursors` maps
58
+ // a subscriber id → its next-read index into `queue`; a brand-new subscriber
59
+ // is initialised to the current queue tail (the high-water mark) so it only
60
+ // sees events emitted AFTER its first pull.
61
+ cursors = new Map();
62
+ // baseUrl/authToken are mutable: connect() re-resolves them from the
63
+ // instance lock (resolveRefreshedEndpoint) because the bridge rotates its
64
+ // bearer token on every domain reload / editor restart. projectPath/envPort
65
+ // feed that refresh; envPort in force means env is authoritative and the
66
+ // refresh is a no-op (same precedence as LiveClient).
67
+ baseUrl;
68
+ authToken;
69
+ projectPath;
70
+ envPort;
71
+ constructor(baseUrl, subscriberId, authToken, projectPath, envPort) {
38
72
  this.baseUrl = baseUrl;
39
- this.authToken = authToken;
40
73
  this.subscriberId =
41
74
  subscriberId ?? randomBytes(16).toString("hex");
75
+ this.authToken = authToken;
76
+ this.projectPath = projectPath;
77
+ this.envPort = envPort;
42
78
  }
43
79
  /**
44
80
  * Start the SSE reader if it isn't running. Safe to call repeatedly; returns
@@ -57,6 +93,17 @@ export class BridgeEventStream {
57
93
  // (Re)starting after a stop() — clear the stopped flag so genuine failures
58
94
  // can drive reconnects again.
59
95
  this.stopped = false;
96
+ // The bridge mints a fresh token on every Acquire (domain reload /
97
+ // editor restart), so the construction-time credentials go stale
98
+ // mid-session. Re-read the instance lock so this reconnect targets the
99
+ // CURRENT port+token instead of hammering a live listener with 401s
100
+ // until the process exits. No-op without a projectPath or when an
101
+ // env-port override is in force.
102
+ const refreshed = resolveRefreshedEndpoint(this.projectPath, this.envPort, this.baseUrl, this.authToken);
103
+ if (refreshed) {
104
+ this.baseUrl = refreshed.baseUrl;
105
+ this.authToken = refreshed.authToken;
106
+ }
60
107
  this.abortController = new AbortController();
61
108
  const url = `${this.baseUrl}/events?subscriber=${encodeURIComponent(this.subscriberId)}&max_per_poll=100`;
62
109
  // SSE read is streaming; consume body manually so we can split on
@@ -72,10 +119,20 @@ export class BridgeEventStream {
72
119
  })
73
120
  .then((res) => {
74
121
  if (!res.ok || !res.body) {
122
+ // Cancel the unconsumed body before throwing: undici keeps the
123
+ // socket (and its fd) out of the keep-alive pool until the
124
+ // Response is garbage-collected, so dropping it on every failed
125
+ // reconnect (a stale token yields one 401 per retry) accumulated
126
+ // abandoned sockets for the whole process lifetime.
127
+ if (res.body)
128
+ void res.body.cancel().catch(() => { });
75
129
  throw new Error(`HTTP ${res.status}`);
76
130
  }
77
131
  this.connected = true;
78
132
  this.lastError = null;
133
+ // A successful connect ends any backoff streak — the next failure
134
+ // starts again from the base delay.
135
+ this.reconnectDelayMs = RECONNECT_BASE_DELAY_MS;
79
136
  this.pump(res.body);
80
137
  })
81
138
  .catch((err) => {
@@ -197,41 +254,101 @@ export class BridgeEventStream {
197
254
  if (excess > 0) {
198
255
  this.queue.splice(0, excess);
199
256
  this.dropped += excess;
257
+ // feedback #8 — eviction shifts every queue index down by `excess`. Keep
258
+ // per-subscriber cursors valid by subtracting the same amount (floored at
259
+ // 0); a cursor that pointed at an evicted event simply re-aligns to the
260
+ // new head, so the subscriber sees the oldest surviving event next.
261
+ if (this.cursors.size > 0) {
262
+ for (const [id, pos] of this.cursors) {
263
+ this.cursors.set(id, Math.max(0, pos - excess));
264
+ }
265
+ }
200
266
  }
201
267
  }
202
268
  scheduleReconnect() {
203
269
  if (this.reconnectTimer)
204
270
  return;
271
+ const delay = this.reconnectDelayMs;
205
272
  this.reconnectTimer = setTimeout(() => {
206
273
  this.reconnectTimer = null;
207
274
  this.abortController = null;
208
275
  this.connect();
209
- }, 2000);
276
+ }, delay);
277
+ // A pending reconnect must not keep the Node event loop alive after the
278
+ // MCP host closes stdio — without the MCP server ever calling stop() on
279
+ // this path, an un-unref'd timer chained forever left an orphaned node
280
+ // process behind every host session.
281
+ this.reconnectTimer.unref?.();
282
+ // Exponential backoff: 2s → 4s → … → 30s cap. The delay resets to the
283
+ // base on the next successful connect (see connect()).
284
+ this.reconnectDelayMs = Math.min(this.reconnectDelayMs * 2, RECONNECT_MAX_DELAY_MS);
210
285
  }
211
286
  /** Drain all queued events. The subscription keeps running. */
212
287
  drain(maxEvents) {
213
288
  const cap = maxEvents > 0 && maxEvents <= 1000 ? maxEvents : 100;
214
289
  const out = this.queue.slice(0, cap);
215
290
  this.queue = this.queue.slice(cap);
291
+ // feedback #8 cursor fix-up, second site: `slice(cap)` removes `cap` items
292
+ // from the FRONT of the queue, shifting every index down — exactly like
293
+ // enqueue()'s eviction `splice(0, excess)`. The eviction path decrements
294
+ // every named-subscriber cursor; this legacy drain path did not, so a
295
+ // legacy `pull()` (no subscriber) interleaved with an active named
296
+ // subscriber left that subscriber's cursor pointing past the new tail and
297
+ // silently skipped/dropped the events the legacy pull drained. Mirror the
298
+ // eviction fix-up so both front-removal sites keep cursors valid.
299
+ if (cap > 0 && this.cursors.size > 0) {
300
+ for (const [id, pos] of this.cursors) {
301
+ this.cursors.set(id, Math.max(0, pos - cap));
302
+ }
303
+ }
216
304
  return out;
217
305
  }
218
- /** One-shot pull: start the subscription if needed and drain. */
219
- pull(maxEvents) {
220
- const started = this.ensureSubscription();
221
- const events = this.drain(maxEvents);
222
- // L4 — `dropped` counts queue overflows. It is surfaced as a per-pull
223
- // value (how many events were lost since the last pull), so reset it to 0
224
- // once it has been reported. A polling agent that re-pulls must see 0 when
225
- // nothing new overflowed, not the same stale total forever — otherwise it
226
- // cannot tell a single old overflow from continuous loss.
306
+ /** One-shot pull: start the subscription if needed and drain.
307
+ *
308
+ * feedback #8 — passing an explicit `subscriberId` selects a per-subscriber
309
+ * read cursor over the shared queue. A brand-new named subscriber is
310
+ * initialised to the current queue tail, so its FIRST pull returns
311
+ * `started:true` with an empty event list — it only sees events emitted
312
+ * after it subscribed (no backlog replay). A returning named subscriber
313
+ * resumes from its saved cursor. Omitting `subscriberId` preserves the
314
+ * legacy shared-cursor behaviour (drain whatever has accumulated), used by
315
+ * callers that do not name a subscriber. */
316
+ pull(maxEvents, subscriberId) {
317
+ const subStarted = this.ensureSubscription();
318
+ // Legacy shared-cursor path: no per-subscriber cursor, drain the whole
319
+ // queue as before. Existing callers (and the overflow tests) rely on the
320
+ // first pull returning whatever has accumulated.
321
+ if (!subscriberId || subscriberId.length === 0) {
322
+ const events = this.drain(maxEvents);
323
+ const dropped = this.dropped;
324
+ this.dropped = 0;
325
+ return {
326
+ subscriberId: this.subscriberId,
327
+ events,
328
+ dropped,
329
+ connected: this.connected,
330
+ started: subStarted,
331
+ lastError: this.lastError,
332
+ };
333
+ }
334
+ // Named-subscriber path: a fresh subscriber starts at the high-water mark
335
+ // (queue tail); history before its first pull is NOT replayed. `started`
336
+ // reflects THIS subscriber's first pull.
337
+ const isNew = !this.cursors.has(subscriberId);
338
+ if (isNew)
339
+ this.cursors.set(subscriberId, this.queue.length);
340
+ const cap = maxEvents > 0 && maxEvents <= 1000 ? maxEvents : 100;
341
+ const from = this.cursors.get(subscriberId) ?? this.queue.length;
342
+ const available = this.queue.slice(from, from + cap);
343
+ this.cursors.set(subscriberId, from + available.length);
227
344
  const dropped = this.dropped;
228
345
  this.dropped = 0;
229
346
  return {
230
- subscriberId: this.subscriberId,
231
- events,
347
+ subscriberId,
348
+ events: available,
232
349
  dropped,
233
350
  connected: this.connected,
234
- started,
351
+ started: isNew || subStarted,
235
352
  lastError: this.lastError,
236
353
  };
237
354
  }
@@ -244,6 +361,8 @@ export class BridgeEventStream {
244
361
  clearTimeout(this.reconnectTimer);
245
362
  this.reconnectTimer = null;
246
363
  }
364
+ // A stopped→restarted stream starts its backoff from scratch.
365
+ this.reconnectDelayMs = RECONNECT_BASE_DELAY_MS;
247
366
  if (this.abortController) {
248
367
  this.abortController.abort();
249
368
  this.abortController = null;
@@ -252,6 +371,9 @@ export class BridgeEventStream {
252
371
  this.connected = false;
253
372
  this.queue = [];
254
373
  this.dropped = 0;
374
+ // feedback #8 — drop per-subscriber cursors so a post-stop pull re-initialises
375
+ // each subscriber at the (now empty) high-water mark.
376
+ this.cursors.clear();
255
377
  }
256
378
  get isConnected() {
257
379
  return this.connected;
@@ -1 +1 @@
1
- {"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../src/event-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../src/event-stream.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface MutationEnvelope {
10
10
  gate: {
11
11
  mode: string;
12
12
  skipped: boolean;
13
+ /** Structured outcome token: passed | warned | failed | skipped | validate_scan_failed. */
14
+ outcome?: string;
13
15
  validation: unknown;
14
16
  delta: Record<string, unknown> | null;
15
17
  };
@@ -12,6 +12,15 @@ export function deriveIsError(envelope) {
12
12
  }
13
13
  if (envelope.mutation.success === false)
14
14
  return true;
15
+ // The bridge marks GateFailed=true and outcome "validate_scan_failed" when
16
+ // the mutation committed but the post-mutation health check could not run
17
+ // (the validate scan threw, or a verify rule threw on either side of the
18
+ // delta). The bridge's own activity log records these as Failed; isError
19
+ // must agree, or an agent keying on isError reads "health unknown" as an
20
+ // unqualified success. (A `warned` outcome under warn mode stays non-error —
21
+ // report-only is the operator's explicit choice.)
22
+ if (envelope.gate?.outcome === "validate_scan_failed")
23
+ return true;
15
24
  if (envelope.gate?.mode === "enforce" && envelope.gate.delta) {
16
25
  const newErrors = envelope.gate.delta.newErrors;
17
26
  if (typeof newErrors === "number" && newErrors > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"gate-error.js","sourceRoot":"","sources":["../src/gate-error.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,aAAa,CAAC,QAA0B;IACtD,yEAAyE;IACzE,2EAA2E;IAC3E,+EAA+E;IAC/E,qEAAqE;IACrE,gFAAgF;IAChF,IACE,CAAC,QAAQ;QACT,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QACrC,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAErD,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"gate-error.js","sourceRoot":"","sources":["../src/gate-error.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,aAAa,CAAC,QAA0B;IACtD,yEAAyE;IACzE,2EAA2E;IAC3E,+EAA+E;IAC/E,qEAAqE;IACrE,gFAAgF;IAChF,IACE,CAAC,QAAQ;QACT,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QACrC,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAErD,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,6EAA6E;IAC7E,kDAAkD;IAClD,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,sBAAsB;QAAE,OAAO,IAAI,CAAC;IAEnE,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAChD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAClE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -113,6 +113,29 @@ export declare function resolvePort(projectPath: string, envPort?: number): numb
113
113
  * skips the lock read (no token to discover).
114
114
  */
115
115
  export declare function resolveAuthToken(projectPath: string, envPort?: number): string | undefined;
116
+ /**
117
+ * Re-resolve a bridge endpoint (baseUrl + authToken) from the on-disk instance
118
+ * lock, returning the refreshed pair when the live bridge has moved, or null
119
+ * when nothing changed / the lock can't be trusted. Shared by LiveClient and
120
+ * BridgeEventStream so every long-lived bridge client self-heals after a Unity
121
+ * restart or domain reload — the bridge mints a fresh token on every Acquire,
122
+ * so a client that caches the construction-time token forever goes permanently
123
+ * 401 after the first reload.
124
+ *
125
+ * No-op (null) when there is no projectPath, an env-port override is in force
126
+ * (env is authoritative — no lock to read, matching resolvePort/
127
+ * resolveAuthToken), or the lock is missing/its PID is dead/nothing actually
128
+ * changed. Never throws — readInstanceLock/isPidAlive are fault-tolerant.
129
+ *
130
+ * @param projectPath absolute Unity project root
131
+ * @param envPort parsed UNITY_OPEN_MCP_BRIDGE_PORT override, if any
132
+ * @param currentBaseUrl the client's currently cached bridge base URL
133
+ * @param currentToken the client's currently cached bearer token
134
+ */
135
+ export declare function resolveRefreshedEndpoint(projectPath: string | undefined, envPort: number | undefined, currentBaseUrl: string, currentToken: string | undefined): {
136
+ baseUrl: string;
137
+ authToken: string | undefined;
138
+ } | null;
116
139
  /**
117
140
  * A heartbeat is considered "stale" once it is this many milliseconds old.
118
141
  * The bridge writes every 0.5s (BridgeHeartbeat.HeartbeatIntervalSec), so
@@ -22,7 +22,7 @@ import { createHash } from "node:crypto";
22
22
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
23
23
  import { homedir } from "node:os";
24
24
  import { join } from "node:path";
25
- import { STATUS_DIR_NAME } from "./constants.js";
25
+ import { STATUS_DIR_NAME, bridgeBaseUrl } from "./constants.js";
26
26
  export const PORT_RANGE_START = 20000;
27
27
  export const PORT_RANGE_SIZE = 10000;
28
28
  /**
@@ -207,6 +207,52 @@ export function resolveAuthToken(projectPath, envPort) {
207
207
  const token = lock.authToken;
208
208
  return typeof token === "string" && token.length > 0 ? token : undefined;
209
209
  }
210
+ /**
211
+ * Re-resolve a bridge endpoint (baseUrl + authToken) from the on-disk instance
212
+ * lock, returning the refreshed pair when the live bridge has moved, or null
213
+ * when nothing changed / the lock can't be trusted. Shared by LiveClient and
214
+ * BridgeEventStream so every long-lived bridge client self-heals after a Unity
215
+ * restart or domain reload — the bridge mints a fresh token on every Acquire,
216
+ * so a client that caches the construction-time token forever goes permanently
217
+ * 401 after the first reload.
218
+ *
219
+ * No-op (null) when there is no projectPath, an env-port override is in force
220
+ * (env is authoritative — no lock to read, matching resolvePort/
221
+ * resolveAuthToken), or the lock is missing/its PID is dead/nothing actually
222
+ * changed. Never throws — readInstanceLock/isPidAlive are fault-tolerant.
223
+ *
224
+ * @param projectPath absolute Unity project root
225
+ * @param envPort parsed UNITY_OPEN_MCP_BRIDGE_PORT override, if any
226
+ * @param currentBaseUrl the client's currently cached bridge base URL
227
+ * @param currentToken the client's currently cached bearer token
228
+ */
229
+ export function resolveRefreshedEndpoint(projectPath, envPort, currentBaseUrl, currentToken) {
230
+ if (!projectPath)
231
+ return null;
232
+ if (envPort !== undefined)
233
+ return null; // env override wins
234
+ let lock;
235
+ try {
236
+ lock = readInstanceLock(projectPath);
237
+ }
238
+ catch {
239
+ return null;
240
+ }
241
+ if (!lock)
242
+ return null;
243
+ if (!isPidAlive(lock.pid))
244
+ return null;
245
+ const portChanged = typeof lock.port === "number" &&
246
+ lock.port > 0 &&
247
+ currentBaseUrl !== bridgeBaseUrl(lock.port);
248
+ const tokenChanged = lock.authToken !== currentToken;
249
+ if (!portChanged && !tokenChanged)
250
+ return null;
251
+ return {
252
+ baseUrl: portChanged ? bridgeBaseUrl(lock.port) : currentBaseUrl,
253
+ authToken: tokenChanged ? lock.authToken : currentToken,
254
+ };
255
+ }
210
256
  // ---------------------------------------------------------------------------
211
257
  // Dead-bridge detection
212
258
  //
@@ -1 +1 @@
1
- {"version":3,"file":"instance-discovery.js","sourceRoot":"","sources":["../src/instance-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance-discovery.js","sourceRoot":"","sources":["../src/instance-discovery.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,16 @@ export declare class LiveClient implements Router {
44
44
  * waitForCompile settle) so a reload or compile is observed promptly.
45
45
  */
46
46
  private bridgeToolsCache;
47
+ /**
48
+ * feedback-fable-04-08 §5 — short-TTL cache for detectStaleAssembly() used
49
+ * by the `_staleDomain` annotation on execute_csharp / invoke_method.
50
+ * Invalidated alongside bridgeToolsCache on dead-bridge / reload / compile
51
+ * settle so a reload that rebuilt the assembly clears a cached stale signal.
52
+ */
53
+ private staleAssemblyCache;
54
+ /** specs/feedback.md 2026-08-14 — short-TTL cache for the fd-exhaustion
55
+ * wedge scan behind the `editor_build_wedged` guard. */
56
+ private editorWedgeCache;
47
57
  private dismissEnabled;
48
58
  private dismissTimeoutMs;
49
59
  private dismissIntervalMs;
@@ -207,11 +217,9 @@ export declare class LiveClient implements Router {
207
217
  * (because {@link postTool} re-POSTs on recovery) duplicate side-effects
208
218
  * once the editor came back. Refreshing here lets a restart self-heal.
209
219
  *
210
- * No-op (returns false) when there is no projectPath, an env-port override
211
- * is in force (env is authoritative — no lock to read, matching
212
- * resolvePort/resolveAuthToken), or the lock is missing/its PID is dead/
213
- * nothing actually changed. Never throws — readInstanceLock/isPidAlive are
214
- * already fault-tolerant.
220
+ * Delegates the lock read/comparison to the shared
221
+ * {@link resolveRefreshedEndpoint} helper (also used by BridgeEventStream)
222
+ * — no-op semantics live there.
215
223
  */
216
224
  private refreshEndpointFromLock;
217
225
  /**
@@ -292,6 +300,33 @@ export declare class LiveClient implements Router {
292
300
  * the compiled output.
293
301
  */
294
302
  private newestScriptAssembliesMtime;
303
+ /**
304
+ * feedback-fable-04-08 §5 — resolve the stale-assembly signal for the
305
+ * `_staleDomain` annotation, backed by a short-TTL cache so repeated
306
+ * execute_csharp / invoke_method probes in one agent turn reuse one scan.
307
+ * Returns the cached result within the TTL, otherwise runs
308
+ * {@link detectStaleAssembly} against this project's `Assets/` + `Library/
309
+ * ScriptAssemblies`, records it, and returns it. Never throws — any fs error
310
+ * inside detectStaleAssembly degrades to a non-stale result.
311
+ */
312
+ private resolveStaleAssembly;
313
+ /**
314
+ * specs/feedback.md 2026-08-14 — resolve the `editor_fd_exhaustion` wedge
315
+ * signal for the `editor_build_wedged` guard, behind the same short-TTL
316
+ * caching discipline as the stale-assembly scan.
317
+ *
318
+ * Only reached when the stale-assembly check has ALREADY fired, so the log
319
+ * read costs nothing on the healthy path. The signature is terminal (the
320
+ * Editor never recovers on its own), so a cached "present" can never be a
321
+ * false positive that outlives the condition.
322
+ */
323
+ private resolveEditorWedge;
324
+ /**
325
+ * The live Unity PID from the instance lock, when one is recorded and alive.
326
+ * Feeds the log-rotation fallback in {@link resolveEditorLogPath} so the
327
+ * wedge scan reads the file the live editor is actually writing.
328
+ */
329
+ private resolveLiveEditorPid;
295
330
  /**
296
331
  * Apply the compile-verify annotation to a successful compile-reload result.
297
332
  * Reads the after-snapshot, runs the pure detector, and — when flagged —