@jait/gateway 0.1.530 → 0.1.532

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 (66) hide show
  1. package/dist/providers/remote-cli-provider.d.ts +4 -0
  2. package/dist/providers/remote-cli-provider.d.ts.map +1 -1
  3. package/dist/providers/remote-cli-provider.js +45 -8
  4. package/dist/providers/remote-cli-provider.js.map +1 -1
  5. package/dist/routes/chat.d.ts.map +1 -1
  6. package/dist/routes/chat.js +71 -4
  7. package/dist/routes/chat.js.map +1 -1
  8. package/package.json +1 -1
  9. package/web-dist/assets/{_basePickBy-nxLv7Y1-.js → _basePickBy-CPY1wkU3.js} +1 -1
  10. package/web-dist/assets/{_baseUniq-YkrK86CP.js → _baseUniq-BstcM8D1.js} +1 -1
  11. package/web-dist/assets/{arc-C1fL2VtQ.js → arc-CzmoBRui.js} +1 -1
  12. package/web-dist/assets/{architectureDiagram-2XIMDMQ5-BPkslm9k.js → architectureDiagram-2XIMDMQ5-5rTm4e61.js} +1 -1
  13. package/web-dist/assets/{blockDiagram-WCTKOSBZ-DkCI-My5.js → blockDiagram-WCTKOSBZ-BpoyjWWa.js} +1 -1
  14. package/web-dist/assets/{c4Diagram-IC4MRINW-CFGdbvgT.js → c4Diagram-IC4MRINW-DinPlf-d.js} +1 -1
  15. package/web-dist/assets/channel-DuTXCf3u.js +1 -0
  16. package/web-dist/assets/{chunk-4BX2VUAB-C_4ab2rz.js → chunk-4BX2VUAB-BoJ4K10-.js} +1 -1
  17. package/web-dist/assets/{chunk-55IACEB6-CrRv4yBu.js → chunk-55IACEB6-C-6M8kZ_.js} +1 -1
  18. package/web-dist/assets/{chunk-FMBD7UC4-CPmf2aPr.js → chunk-FMBD7UC4-awxap80L.js} +1 -1
  19. package/web-dist/assets/{chunk-JSJVCQXG-C-g6tUAQ.js → chunk-JSJVCQXG-Br5GhZLb.js} +1 -1
  20. package/web-dist/assets/{chunk-KX2RTZJC-BxOV7HeN.js → chunk-KX2RTZJC-M-u106_3.js} +1 -1
  21. package/web-dist/assets/{chunk-NQ4KR5QH-C05JInC0.js → chunk-NQ4KR5QH-CmrJEtnF.js} +1 -1
  22. package/web-dist/assets/{chunk-QZHKN3VN-Ch6UNlh9.js → chunk-QZHKN3VN-BObCHPau.js} +1 -1
  23. package/web-dist/assets/{chunk-WL4C6EOR-C33DD2SK.js → chunk-WL4C6EOR-DfHjU5nR.js} +1 -1
  24. package/web-dist/assets/classDiagram-VBA2DB6C-BO-HOk6a.js +1 -0
  25. package/web-dist/assets/classDiagram-v2-RAHNMMFH-BO-HOk6a.js +1 -0
  26. package/web-dist/assets/clone-DJax1S5B.js +1 -0
  27. package/web-dist/assets/{cose-bilkent-S5V4N54A-CyGAM_Pf.js → cose-bilkent-S5V4N54A-hy42-Tju.js} +1 -1
  28. package/web-dist/assets/{dagre-KLK3FWXG-CEkjG8lb.js → dagre-KLK3FWXG-BQIT70g1.js} +1 -1
  29. package/web-dist/assets/{diagram-E7M64L7V-oIIW942s.js → diagram-E7M64L7V-DqidjU8Z.js} +1 -1
  30. package/web-dist/assets/{diagram-IFDJBPK2-DW583EFK.js → diagram-IFDJBPK2-DbkFsK0H.js} +1 -1
  31. package/web-dist/assets/{diagram-P4PSJMXO-DmYzBRsy.js → diagram-P4PSJMXO-B1NGyF_j.js} +1 -1
  32. package/web-dist/assets/{erDiagram-INFDFZHY-CvolWxxD.js → erDiagram-INFDFZHY-BHfcs-c7.js} +1 -1
  33. package/web-dist/assets/{flowDiagram-PKNHOUZH-BA1HMvba.js → flowDiagram-PKNHOUZH-BEOT-Rw8.js} +1 -1
  34. package/web-dist/assets/{ganttDiagram-A5KZAMGK-BLiNJnFF.js → ganttDiagram-A5KZAMGK-CyvvIP99.js} +2 -2
  35. package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-Bol4yzh5.js → gitGraphDiagram-K3NZZRJ6-66gi56wu.js} +1 -1
  36. package/web-dist/assets/{graph-AHEg6fFc.js → graph-CUbpH0Eo.js} +1 -1
  37. package/web-dist/assets/index-B4J0C1Kw.js +1551 -0
  38. package/web-dist/assets/{index-CXxpuBVO.js → index-Cioy6Yox.js} +1 -1
  39. package/web-dist/assets/index-DB1Lg9G-.css +32 -0
  40. package/web-dist/assets/{index-Deo_Bmwn.js → index-l61YOky2.js} +1 -1
  41. package/web-dist/assets/{infoDiagram-LFFYTUFH-Dl8fc90-.js → infoDiagram-LFFYTUFH-BCuSuZ9-.js} +1 -1
  42. package/web-dist/assets/{ishikawaDiagram-PHBUUO56-DjVDY7AZ.js → ishikawaDiagram-PHBUUO56-CpOS75RB.js} +1 -1
  43. package/web-dist/assets/{journeyDiagram-4ABVD52K-DCtD7zwY.js → journeyDiagram-4ABVD52K-qfZ9BVkk.js} +1 -1
  44. package/web-dist/assets/{kanban-definition-K7BYSVSG-BSu9N0xb.js → kanban-definition-K7BYSVSG-DId63oRS.js} +1 -1
  45. package/web-dist/assets/{layout-CqhlZ4hZ.js → layout-Cy12uTV4.js} +1 -1
  46. package/web-dist/assets/{linear-DweH1YO7.js → linear-i1fK8uSy.js} +1 -1
  47. package/web-dist/assets/{mindmap-definition-YRQLILUH-DLF5gFvK.js → mindmap-definition-YRQLILUH-DiZY7Ql0.js} +1 -1
  48. package/web-dist/assets/{pieDiagram-SKSYHLDU-DuBykepR.js → pieDiagram-SKSYHLDU-BnKYJIhz.js} +1 -1
  49. package/web-dist/assets/{quadrantDiagram-337W2JSQ-BoPx8dEs.js → quadrantDiagram-337W2JSQ-Bqd7K4P6.js} +1 -1
  50. package/web-dist/assets/{requirementDiagram-Z7DCOOCP-CnQ7rrDh.js → requirementDiagram-Z7DCOOCP-Bxk9Eh7A.js} +1 -1
  51. package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-ieCNEli4.js → sankeyDiagram-WA2Y5GQK-UbgapLNy.js} +1 -1
  52. package/web-dist/assets/{sequenceDiagram-2WXFIKYE-CcHl7g9G.js → sequenceDiagram-2WXFIKYE-DtFIiqPU.js} +1 -1
  53. package/web-dist/assets/{stateDiagram-RAJIS63D-C3pOsg8s.js → stateDiagram-RAJIS63D-CpOfhTT5.js} +1 -1
  54. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-_cZYTEPe.js +1 -0
  55. package/web-dist/assets/{timeline-definition-YZTLITO2--AWfjR0J.js → timeline-definition-YZTLITO2-4h1e0xx0.js} +1 -1
  56. package/web-dist/assets/{treemap-KZPCXAKY-DX6zRdhz.js → treemap-KZPCXAKY-CYCBRIDv.js} +1 -1
  57. package/web-dist/assets/{vennDiagram-LZ73GAT5-BLCYcmJZ.js → vennDiagram-LZ73GAT5-BQLEY1I4.js} +1 -1
  58. package/web-dist/assets/{xychartDiagram-JWTSCODW-FpaqRFdW.js → xychartDiagram-JWTSCODW-B1e8wYug.js} +1 -1
  59. package/web-dist/index.html +2 -2
  60. package/web-dist/assets/channel-dB9PbWQj.js +0 -1
  61. package/web-dist/assets/classDiagram-VBA2DB6C-CvACUS4Q.js +0 -1
  62. package/web-dist/assets/classDiagram-v2-RAHNMMFH-CvACUS4Q.js +0 -1
  63. package/web-dist/assets/clone-DoUt4JP8.js +0 -1
  64. package/web-dist/assets/index-3TJSoJSJ.js +0 -1546
  65. package/web-dist/assets/index-BZrUCLxt.css +0 -32
  66. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-RbTXEryp.js +0 -1
@@ -17,6 +17,8 @@ export declare class RemoteCliProvider implements CliProviderAdapter {
17
17
  readonly info: ProviderInfo;
18
18
  private emitter;
19
19
  private sessions;
20
+ private remoteEventUnsubscribe;
21
+ private readonly remoteEventListener;
20
22
  constructor(ws: WsControlPlane, nodeId: string, providerId: ProviderId);
21
23
  checkAvailability(): Promise<boolean>;
22
24
  getAuthStatus(): Promise<ProviderAuthStatus>;
@@ -30,6 +32,8 @@ export declare class RemoteCliProvider implements CliProviderAdapter {
30
32
  stopSession(sessionId: string): Promise<void>;
31
33
  onEvent(handler: (event: ProviderEvent) => void): () => void;
32
34
  private emit;
35
+ private ensureRemoteEventSubscription;
36
+ private detachRemoteEventSubscriptionIfIdle;
33
37
  /**
34
38
  * Handle a remote event relayed from the client via WS.
35
39
  * Uses the shared codex event mapper to translate raw JSON-RPC notifications.
@@ -1 +1 @@
1
- {"version":3,"file":"remote-cli-provider.d.ts","sourceRoot":"","sources":["../../src/providers/remote-cli-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,qBAAa,iBAAkB,YAAW,kBAAkB;IAQxD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IARhB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAsC;gBAG5C,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU;IAqBlB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAQ5C,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1C,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIvC,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc1C,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8CpE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAK5D,OAAO,CAAC,IAAI;IAIZ;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,wBAAwB;CASjC"}
1
+ {"version":3,"file":"remote-cli-provider.d.ts","sourceRoot":"","sources":["../../src/providers/remote-cli-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA+C/C,qBAAa,iBAAkB,YAAW,kBAAkB;IAYxD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAZhB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAElC;gBAGQ,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,EACtB,UAAU,EAAE,UAAU;IAalB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAQ5C,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1C,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIvC,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAc1C,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgDpE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAK5D,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,6BAA6B;IAKrC,OAAO,CAAC,mCAAmC;IAM3C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,wBAAwB;CASjC"}
@@ -12,6 +12,31 @@ import { EventEmitter } from "node:events";
12
12
  import { uuidv7 } from "../db/uuidv7.js";
13
13
  import { mapCodexNotification } from "./codex-event-mapper.js";
14
14
  import { NO_PROVIDER_AUTH, unsupportedLogin, unsupportedLogout } from "./provider-auth.js";
15
+ const remoteProviderEventDispatchers = new WeakMap();
16
+ function registerRemoteProviderEventListener(ws, listener) {
17
+ let dispatcher = remoteProviderEventDispatchers.get(ws);
18
+ if (!dispatcher) {
19
+ const previous = ws.onRemoteProviderEvent;
20
+ dispatcher = {
21
+ previous,
22
+ listeners: new Set(),
23
+ };
24
+ ws.onRemoteProviderEvent = (sessionId, event, metadata) => {
25
+ previous?.(sessionId, event, metadata);
26
+ const currentDispatcher = remoteProviderEventDispatchers.get(ws);
27
+ if (!currentDispatcher)
28
+ return;
29
+ for (const currentListener of Array.from(currentDispatcher.listeners)) {
30
+ currentListener(sessionId, event, metadata);
31
+ }
32
+ };
33
+ remoteProviderEventDispatchers.set(ws, dispatcher);
34
+ }
35
+ dispatcher.listeners.add(listener);
36
+ return () => {
37
+ dispatcher?.listeners.delete(listener);
38
+ };
39
+ }
15
40
  export class RemoteCliProvider {
16
41
  ws;
17
42
  nodeId;
@@ -19,6 +44,10 @@ export class RemoteCliProvider {
19
44
  info;
20
45
  emitter = new EventEmitter();
21
46
  sessions = new Map();
47
+ remoteEventUnsubscribe = null;
48
+ remoteEventListener = (sessionId, event) => {
49
+ this.handleRemoteEvent(sessionId, event);
50
+ };
22
51
  constructor(ws, nodeId, providerId) {
23
52
  this.ws = ws;
24
53
  this.nodeId = nodeId;
@@ -31,14 +60,6 @@ export class RemoteCliProvider {
31
60
  modes: ["full-access", "supervised"],
32
61
  auth: NO_PROVIDER_AUTH,
33
62
  };
34
- // Listen for events forwarded from the remote node
35
- const prevHandler = ws.onRemoteProviderEvent;
36
- ws.onRemoteProviderEvent = (sessionId, event, metadata) => {
37
- // Call previous handler if present (another RemoteCliProvider)
38
- if (prevHandler)
39
- prevHandler(sessionId, event, metadata);
40
- this.handleRemoteEvent(sessionId, event);
41
- };
42
63
  }
43
64
  async checkAvailability() {
44
65
  const node = this.ws.findNodeByDeviceId(this.nodeId);
@@ -87,6 +108,7 @@ export class RemoteCliProvider {
87
108
  startedAt: new Date().toISOString(),
88
109
  };
89
110
  this.sessions.set(sessionId, session);
111
+ this.ensureRemoteEventSubscription();
90
112
  try {
91
113
  const result = await this.ws.proxyProviderOp(this.nodeId, "start-session", {
92
114
  sessionId,
@@ -109,6 +131,7 @@ export class RemoteCliProvider {
109
131
  session.status = "error";
110
132
  session.error = err instanceof Error ? err.message : "Remote session start failed";
111
133
  this.sessions.delete(sessionId);
134
+ this.detachRemoteEventSubscriptionIfIdle();
112
135
  this.emit({ type: "session.error", sessionId, error: session.error });
113
136
  throw err;
114
137
  }
@@ -185,6 +208,7 @@ export class RemoteCliProvider {
185
208
  session.completedAt = new Date().toISOString();
186
209
  }
187
210
  this.sessions.delete(sessionId);
211
+ this.detachRemoteEventSubscriptionIfIdle();
188
212
  }
189
213
  onEvent(handler) {
190
214
  this.emitter.on("event", handler);
@@ -193,6 +217,17 @@ export class RemoteCliProvider {
193
217
  emit(event) {
194
218
  this.emitter.emit("event", event);
195
219
  }
220
+ ensureRemoteEventSubscription() {
221
+ if (this.remoteEventUnsubscribe)
222
+ return;
223
+ this.remoteEventUnsubscribe = registerRemoteProviderEventListener(this.ws, this.remoteEventListener);
224
+ }
225
+ detachRemoteEventSubscriptionIfIdle() {
226
+ if (this.sessions.size > 0 || !this.remoteEventUnsubscribe)
227
+ return;
228
+ this.remoteEventUnsubscribe();
229
+ this.remoteEventUnsubscribe = null;
230
+ }
196
231
  /**
197
232
  * Handle a remote event relayed from the client via WS.
198
233
  * Uses the shared codex event mapper to translate raw JSON-RPC notifications.
@@ -205,6 +240,7 @@ export class RemoteCliProvider {
205
240
  this.emit(directEvent);
206
241
  if (directEvent.type === "session.completed" || directEvent.type === "session.error") {
207
242
  this.sessions.delete(sessionId);
243
+ this.detachRemoteEventSubscriptionIfIdle();
208
244
  }
209
245
  return;
210
246
  }
@@ -217,6 +253,7 @@ export class RemoteCliProvider {
217
253
  this.emit(evt);
218
254
  if (evt.type === "session.completed") {
219
255
  this.sessions.delete(sessionId);
256
+ this.detachRemoteEventSubscriptionIfIdle();
220
257
  }
221
258
  }
222
259
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remote-cli-provider.js","sourceRoot":"","sources":["../../src/providers/remote-cli-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3F,MAAM,OAAO,iBAAiB;IAQlB;IACA;IARD,EAAE,CAAa;IACf,IAAI,CAAe;IAEpB,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEtD,YACU,EAAkB,EAClB,MAAc,EACtB,UAAsB;QAFd,OAAE,GAAF,EAAE,CAAgB;QAClB,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG;YACV,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU,UAAU,EAAE;YAC5B,WAAW,EAAE,GAAG,UAAU,6BAA6B,MAAM,EAAE;YAC/D,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;YACpC,IAAI,EAAE,gBAAgB;SACvB,CAAC;QAEF,mDAAmD;QACnD,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC;QAC7C,EAAE,CAAC,qBAAqB,GAAG,CAAC,SAAiB,EAAE,KAAc,EAAE,QAA4C,EAAE,EAAE;YAC7G,+DAA+D;YAC/D,IAAI,WAAW;gBAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,CAAC,MAAM,mBAAmB,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAC1C,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,YAAY,IAAI,CAAC,EAAE,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO;YACL,GAAG,gBAAgB;YACnB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,wDAAwD;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,wDAAwD,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,wDAAwD,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAC1C,IAAI,CAAC,MAAM,EACX,aAAa,EACb,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,EACvB,MAAM,CACP,CAAC;YACF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAoB;YAC/B,EAAE,EAAE,SAAS;YACb,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAGzC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE;gBAC/B,SAAS;gBACT,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,EAAE,MAAM,CAAC,CAAC;YAEX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;YAElD,mEAAmE;YACnE,IAAI,MAAM,EAAE,gBAAgB,EAAE,CAAC;gBAC5B,OAA2D,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC1G,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACnF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,OAAe;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAkE,CAAC;QAC9G,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAC;QAEhE,IAAI,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,iBAAiB,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,eAAe;oBACrB,SAAS;oBACT,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,wCAAwC;iBACjE,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE;gBACvC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO;gBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC5G,iBAAiB,EAAE,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,iBAAiB,GAAG,GAAG,EAAE;gBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAA0B,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;gBAC9F,SAAS;gBACT,OAAO;gBACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,SAAS;aACxD,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;YAC5B,IAAI,MAAM,EAAE,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,iBAAiB,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,eAAe,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,sCAAsC;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAE,SAAkB;QAChF,qEAAqE;IACvE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,OAAuC;QAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEO,IAAI,CAAC,KAAoB;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAiB,EAAE,KAAc;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO;QAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvB,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACrF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,GAAG,KAA8D,CAAC;QACzE,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,OAAO;QAEtB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;QAC3D,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,KAAc,EAAE,SAAiB;QAChE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAErD,MAAM,SAAS,GAAG,KAAyE,CAAC;QAC5F,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE9F,OAAO,EAAE,GAAG,SAAS,EAAE,SAAS,EAAmB,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"remote-cli-provider.js","sourceRoot":"","sources":["../../src/providers/remote-cli-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAc3F,MAAM,8BAA8B,GAAG,IAAI,OAAO,EAAiD,CAAC;AAEpG,SAAS,mCAAmC,CAC1C,EAAkB,EAClB,QAAoC;IAEpC,IAAI,UAAU,GAAG,8BAA8B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,EAAE,CAAC,qBAAqB,CAAC;QAC1C,UAAU,GAAG;YACX,QAAQ;YACR,SAAS,EAAE,IAAI,GAAG,EAAE;SACrB,CAAC;QACF,EAAE,CAAC,qBAAqB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxD,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,iBAAiB;gBAAE,OAAO;YAC/B,KAAK,MAAM,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtE,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC;QACF,8BAA8B,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,GAAG,EAAE;QACV,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,iBAAiB;IAYlB;IACA;IAZD,EAAE,CAAa;IACf,IAAI,CAAe;IAEpB,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9C,sBAAsB,GAAwB,IAAI,CAAC;IAC1C,mBAAmB,GAA+B,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACtF,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,YACU,EAAkB,EAClB,MAAc,EACtB,UAAsB;QAFd,OAAE,GAAF,EAAE,CAAgB;QAClB,WAAM,GAAN,MAAM,CAAQ;QAGtB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG;YACV,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,UAAU,UAAU,EAAE;YAC5B,WAAW,EAAE,GAAG,UAAU,6BAA6B,MAAM,EAAE;YAC/D,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;YACpC,IAAI,EAAE,gBAAgB;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,CAAC,MAAM,mBAAmB,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAC1C,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CACpD,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,YAAY,IAAI,CAAC,EAAE,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO;YACL,GAAG,gBAAgB;YACnB,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,wDAAwD;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,wDAAwD,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,wDAAwD,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAC1C,IAAI,CAAC,MAAM,EACX,aAAa,EACb,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,EACvB,MAAM,CACP,CAAC;YACF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAoB;YAC/B,EAAE,EAAE,SAAS;YACb,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAErC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAGzC,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE;gBAC/B,SAAS;gBACT,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,EAAE,MAAM,CAAC,CAAC;YAEX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;YAElD,mEAAmE;YACnE,IAAI,MAAM,EAAE,gBAAgB,EAAE,CAAC;gBAC5B,OAA2D,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC1G,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACnF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,OAAe;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAkE,CAAC;QAC9G,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAC;QAEhE,IAAI,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,iBAAiB,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,eAAe;oBACrB,SAAS;oBACT,KAAK,EAAE,UAAU,IAAI,CAAC,EAAE,wCAAwC;iBACjE,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACnB,MAAM,OAAO,GAAG,CAAC,KAAoB,EAAE,EAAE;gBACvC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;oBAAE,OAAO;gBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC5G,iBAAiB,EAAE,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,iBAAiB,GAAG,GAAG,EAAE;gBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAA0B,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;gBAC9F,SAAS;gBACT,OAAO;gBACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,SAAS;aACxD,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC;YAC5B,IAAI,MAAM,EAAE,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,iBAAiB,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,eAAe,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,sCAAsC;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAE,SAAkB;QAChF,qEAAqE;IACvE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;YAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,mCAAmC,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,OAAuC;QAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEO,IAAI,CAAC,KAAoB;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,6BAA6B;QACnC,IAAI,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACxC,IAAI,CAAC,sBAAsB,GAAG,mCAAmC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvG,CAAC;IAEO,mCAAmC;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACnE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,SAAiB,EAAE,KAAc;QACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO;QAE1C,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACpE,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvB,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,IAAI,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACrF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,GAAG,KAA8D,CAAC;QACzE,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,OAAO;QAEtB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;QAC3D,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChC,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,KAAc,EAAE,SAAiB;QAChE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAErD,MAAM,SAAS,GAAG,KAAyE,CAAC;QAC5F,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACpD,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE9F,OAAO,EAAE,GAAG,SAAS,EAAE,SAAS,EAAmB,CAAC;IACtD,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAgCjE,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAgGvF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBrE;AAyED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE3D;AAqbD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyCtF;AA+hBD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,KACtD,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,SAAS,EACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,EACjC,iBAAiB,CAAC,EAAE,cAAc,QAyiEnC"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAe,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAgCjE,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAgGvF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBrE;AAyED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAE3D;AAscD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyCtF;AA+hBD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,KACtD,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,SAAS,EACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,EACjC,iBAAiB,CAAC,EAAE,cAAc,QAgmEnC"}
@@ -414,6 +414,7 @@ function parseQueuedChatMessages(raw) {
414
414
  queue.push({
415
415
  id: typeof record.id === "string" ? record.id : undefined,
416
416
  content: record.content,
417
+ queuedAt: typeof record.queuedAt === "number" ? record.queuedAt : undefined,
417
418
  mode: isValidChatMode(record.mode) ? record.mode : undefined,
418
419
  provider: record.provider === "jait" || record.provider === "codex" || record.provider === "claude-code"
419
420
  ? record.provider
@@ -422,6 +423,21 @@ function parseQueuedChatMessages(raw) {
422
423
  ? record.runtimeMode
423
424
  : undefined,
424
425
  model: typeof record.model === "string" ? record.model : null,
426
+ responseStyle: isResponseStyle(record.responseStyle) ? record.responseStyle : undefined,
427
+ attachments: Array.isArray(record.attachments)
428
+ ? record.attachments.flatMap((attachment) => {
429
+ if (!attachment || typeof attachment !== "object")
430
+ return [];
431
+ const candidate = attachment;
432
+ if (typeof candidate.name !== "string" || typeof candidate.data !== "string")
433
+ return [];
434
+ return [{
435
+ name: candidate.name,
436
+ mimeType: typeof candidate.mimeType === "string" ? candidate.mimeType : "application/octet-stream",
437
+ data: candidate.data,
438
+ }];
439
+ })
440
+ : undefined,
425
441
  displaySegments,
426
442
  });
427
443
  }
@@ -1056,8 +1072,10 @@ export function registerChatRoutes(app, config, depsOrDb, sessionServiceArg) {
1056
1072
  ...(nextMessage.mode ? { mode: nextMessage.mode } : {}),
1057
1073
  ...(nextMessage.provider ? { provider: nextMessage.provider } : {}),
1058
1074
  ...(nextMessage.runtimeMode ? { runtimeMode: nextMessage.runtimeMode } : {}),
1075
+ ...(nextMessage.responseStyle ? { responseStyle: nextMessage.responseStyle } : {}),
1059
1076
  ...(nextMessage.model ? { model: nextMessage.model } : {}),
1060
1077
  ...(nextMessage.displaySegments ? { displaySegments: nextMessage.displaySegments } : {}),
1078
+ ...(nextMessage.attachments?.length ? { attachments: nextMessage.attachments } : {}),
1061
1079
  _queuedDrain: true,
1062
1080
  },
1063
1081
  });
@@ -1280,6 +1298,7 @@ export function registerChatRoutes(app, config, depsOrDb, sessionServiceArg) {
1280
1298
  : randomUUID();
1281
1299
  const chatMode = isValidChatMode(body["mode"]) ? body["mode"] : "agent";
1282
1300
  const responseStyle = isResponseStyle(body["responseStyle"]) ? body["responseStyle"] : "normal";
1301
+ const requestBodyModel = typeof body["model"] === "string" ? body["model"].trim() : "";
1283
1302
  let requestProvider = typeof body["provider"] === "string"
1284
1303
  ? body["provider"]
1285
1304
  : undefined;
@@ -1316,9 +1335,49 @@ export function registerChatRoutes(app, config, depsOrDb, sessionServiceArg) {
1316
1335
  sessionService.update(sessionId, { name: deriveSessionTitle(content) }, authUser.id);
1317
1336
  }
1318
1337
  }
1338
+ if (!isQueuedDrainRequest && activeStreams.has(sessionId)) {
1339
+ if (!sessionStateService) {
1340
+ return reply.status(409).send({ error: "CONFLICT", details: "Session is already streaming" });
1341
+ }
1342
+ const existingState = sessionStateService.get(sessionId, ["queued_messages"]);
1343
+ const queue = parseQueuedChatMessages(existingState["queued_messages"]);
1344
+ const queuedMessage = {
1345
+ id: `q-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
1346
+ content,
1347
+ queuedAt: Date.now(),
1348
+ mode: chatMode,
1349
+ ...(requestProvider ? { provider: requestProvider } : {}),
1350
+ ...(requestRuntimeMode ? { runtimeMode: requestRuntimeMode } : {}),
1351
+ ...(responseStyle !== "normal" ? { responseStyle } : {}),
1352
+ ...(requestBodyModel ? { model: requestBodyModel } : {}),
1353
+ ...(displaySegments ? { displaySegments } : {}),
1354
+ ...(attachments.length ? { attachments } : {}),
1355
+ };
1356
+ const nextQueue = [...queue, queuedMessage];
1357
+ sessionStateService.set(sessionId, { queued_messages: nextQueue });
1358
+ broadcastQueuedMessagesState(sessionId, nextQueue);
1359
+ const reqOrigin = request.headers.origin ?? "*";
1360
+ reply.raw.writeHead(202, {
1361
+ "Content-Type": "text/event-stream",
1362
+ "Cache-Control": "no-cache",
1363
+ Connection: "keep-alive",
1364
+ "X-Accel-Buffering": "no",
1365
+ "Access-Control-Allow-Origin": reqOrigin,
1366
+ "Access-Control-Allow-Credentials": "true",
1367
+ });
1368
+ const queuedEvent = {
1369
+ type: "queued",
1370
+ session_id: sessionId,
1371
+ message: queuedMessage,
1372
+ queue_length: nextQueue.length,
1373
+ };
1374
+ reply.raw.write(`data: ${JSON.stringify(queuedEvent)}\n\n`);
1375
+ reply.raw.write(`data: ${JSON.stringify({ type: "done", session_id: sessionId, prompt_count: null, remaining_prompts: null })}\n\n`);
1376
+ reply.raw.end();
1377
+ return;
1378
+ }
1319
1379
  const userSettings = userService?.getSettings(authUser.id);
1320
1380
  const userApiKeys = userSettings?.apiKeys ?? {};
1321
- const requestBodyModel = typeof body["model"] === "string" ? body["model"].trim() : "";
1322
1381
  const jaitCoordinatorModel = swarmWorkerProvider ? "" : requestBodyModel;
1323
1382
  // Use the user's preferred backend, but fall back to the server-level config
1324
1383
  // when the user still has the initial default ("openai") and the server is
@@ -1545,13 +1604,21 @@ export function registerChatRoutes(app, config, depsOrDb, sessionServiceArg) {
1545
1604
  let isRemote = false;
1546
1605
  let remoteNodeInfo = null;
1547
1606
  if (!pathExistsLocally && ws) {
1548
- // Match path platform to connected FsNodes
1607
+ const remoteSurfaceNodeId = surfaceRegistry?.getBySession(sessionId)
1608
+ .map((surface) => surface.snapshot().metadata)
1609
+ .find((metadata) => metadata?.remote === true && typeof metadata.nodeId === "string")
1610
+ ?.nodeId;
1611
+ // Prefer the node that owns the active remote filesystem surface. If
1612
+ // no surface is available, fall back to matching by path platform.
1549
1613
  const isWindowsPath = /^[A-Za-z]:[\\/]/.test(cliWsRoot);
1550
1614
  const expectedPlatform = isWindowsPath ? "windows" : null;
1551
- for (const node of ws.getFsNodes()) {
1615
+ const candidateNodes = remoteSurfaceNodeId
1616
+ ? ws.getFsNodes().filter((node) => node.id === remoteSurfaceNodeId)
1617
+ : ws.getFsNodes();
1618
+ for (const node of candidateNodes) {
1552
1619
  if (node.isGateway)
1553
1620
  continue;
1554
- if (expectedPlatform && node.platform !== expectedPlatform)
1621
+ if (!remoteSurfaceNodeId && expectedPlatform && node.platform !== expectedPlatform)
1555
1622
  continue;
1556
1623
  if (!node.providers?.includes(requestProvider))
1557
1624
  continue;