@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.
- package/dist/providers/remote-cli-provider.d.ts +4 -0
- package/dist/providers/remote-cli-provider.d.ts.map +1 -1
- package/dist/providers/remote-cli-provider.js +45 -8
- package/dist/providers/remote-cli-provider.js.map +1 -1
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +71 -4
- package/dist/routes/chat.js.map +1 -1
- package/package.json +1 -1
- package/web-dist/assets/{_basePickBy-nxLv7Y1-.js → _basePickBy-CPY1wkU3.js} +1 -1
- package/web-dist/assets/{_baseUniq-YkrK86CP.js → _baseUniq-BstcM8D1.js} +1 -1
- package/web-dist/assets/{arc-C1fL2VtQ.js → arc-CzmoBRui.js} +1 -1
- package/web-dist/assets/{architectureDiagram-2XIMDMQ5-BPkslm9k.js → architectureDiagram-2XIMDMQ5-5rTm4e61.js} +1 -1
- package/web-dist/assets/{blockDiagram-WCTKOSBZ-DkCI-My5.js → blockDiagram-WCTKOSBZ-BpoyjWWa.js} +1 -1
- package/web-dist/assets/{c4Diagram-IC4MRINW-CFGdbvgT.js → c4Diagram-IC4MRINW-DinPlf-d.js} +1 -1
- package/web-dist/assets/channel-DuTXCf3u.js +1 -0
- package/web-dist/assets/{chunk-4BX2VUAB-C_4ab2rz.js → chunk-4BX2VUAB-BoJ4K10-.js} +1 -1
- package/web-dist/assets/{chunk-55IACEB6-CrRv4yBu.js → chunk-55IACEB6-C-6M8kZ_.js} +1 -1
- package/web-dist/assets/{chunk-FMBD7UC4-CPmf2aPr.js → chunk-FMBD7UC4-awxap80L.js} +1 -1
- package/web-dist/assets/{chunk-JSJVCQXG-C-g6tUAQ.js → chunk-JSJVCQXG-Br5GhZLb.js} +1 -1
- package/web-dist/assets/{chunk-KX2RTZJC-BxOV7HeN.js → chunk-KX2RTZJC-M-u106_3.js} +1 -1
- package/web-dist/assets/{chunk-NQ4KR5QH-C05JInC0.js → chunk-NQ4KR5QH-CmrJEtnF.js} +1 -1
- package/web-dist/assets/{chunk-QZHKN3VN-Ch6UNlh9.js → chunk-QZHKN3VN-BObCHPau.js} +1 -1
- package/web-dist/assets/{chunk-WL4C6EOR-C33DD2SK.js → chunk-WL4C6EOR-DfHjU5nR.js} +1 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-BO-HOk6a.js +1 -0
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-BO-HOk6a.js +1 -0
- package/web-dist/assets/clone-DJax1S5B.js +1 -0
- package/web-dist/assets/{cose-bilkent-S5V4N54A-CyGAM_Pf.js → cose-bilkent-S5V4N54A-hy42-Tju.js} +1 -1
- package/web-dist/assets/{dagre-KLK3FWXG-CEkjG8lb.js → dagre-KLK3FWXG-BQIT70g1.js} +1 -1
- package/web-dist/assets/{diagram-E7M64L7V-oIIW942s.js → diagram-E7M64L7V-DqidjU8Z.js} +1 -1
- package/web-dist/assets/{diagram-IFDJBPK2-DW583EFK.js → diagram-IFDJBPK2-DbkFsK0H.js} +1 -1
- package/web-dist/assets/{diagram-P4PSJMXO-DmYzBRsy.js → diagram-P4PSJMXO-B1NGyF_j.js} +1 -1
- package/web-dist/assets/{erDiagram-INFDFZHY-CvolWxxD.js → erDiagram-INFDFZHY-BHfcs-c7.js} +1 -1
- package/web-dist/assets/{flowDiagram-PKNHOUZH-BA1HMvba.js → flowDiagram-PKNHOUZH-BEOT-Rw8.js} +1 -1
- package/web-dist/assets/{ganttDiagram-A5KZAMGK-BLiNJnFF.js → ganttDiagram-A5KZAMGK-CyvvIP99.js} +2 -2
- package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-Bol4yzh5.js → gitGraphDiagram-K3NZZRJ6-66gi56wu.js} +1 -1
- package/web-dist/assets/{graph-AHEg6fFc.js → graph-CUbpH0Eo.js} +1 -1
- package/web-dist/assets/index-B4J0C1Kw.js +1551 -0
- package/web-dist/assets/{index-CXxpuBVO.js → index-Cioy6Yox.js} +1 -1
- package/web-dist/assets/index-DB1Lg9G-.css +32 -0
- package/web-dist/assets/{index-Deo_Bmwn.js → index-l61YOky2.js} +1 -1
- package/web-dist/assets/{infoDiagram-LFFYTUFH-Dl8fc90-.js → infoDiagram-LFFYTUFH-BCuSuZ9-.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-PHBUUO56-DjVDY7AZ.js → ishikawaDiagram-PHBUUO56-CpOS75RB.js} +1 -1
- package/web-dist/assets/{journeyDiagram-4ABVD52K-DCtD7zwY.js → journeyDiagram-4ABVD52K-qfZ9BVkk.js} +1 -1
- package/web-dist/assets/{kanban-definition-K7BYSVSG-BSu9N0xb.js → kanban-definition-K7BYSVSG-DId63oRS.js} +1 -1
- package/web-dist/assets/{layout-CqhlZ4hZ.js → layout-Cy12uTV4.js} +1 -1
- package/web-dist/assets/{linear-DweH1YO7.js → linear-i1fK8uSy.js} +1 -1
- package/web-dist/assets/{mindmap-definition-YRQLILUH-DLF5gFvK.js → mindmap-definition-YRQLILUH-DiZY7Ql0.js} +1 -1
- package/web-dist/assets/{pieDiagram-SKSYHLDU-DuBykepR.js → pieDiagram-SKSYHLDU-BnKYJIhz.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-337W2JSQ-BoPx8dEs.js → quadrantDiagram-337W2JSQ-Bqd7K4P6.js} +1 -1
- package/web-dist/assets/{requirementDiagram-Z7DCOOCP-CnQ7rrDh.js → requirementDiagram-Z7DCOOCP-Bxk9Eh7A.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-ieCNEli4.js → sankeyDiagram-WA2Y5GQK-UbgapLNy.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-2WXFIKYE-CcHl7g9G.js → sequenceDiagram-2WXFIKYE-DtFIiqPU.js} +1 -1
- package/web-dist/assets/{stateDiagram-RAJIS63D-C3pOsg8s.js → stateDiagram-RAJIS63D-CpOfhTT5.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-_cZYTEPe.js +1 -0
- package/web-dist/assets/{timeline-definition-YZTLITO2--AWfjR0J.js → timeline-definition-YZTLITO2-4h1e0xx0.js} +1 -1
- package/web-dist/assets/{treemap-KZPCXAKY-DX6zRdhz.js → treemap-KZPCXAKY-CYCBRIDv.js} +1 -1
- package/web-dist/assets/{vennDiagram-LZ73GAT5-BLCYcmJZ.js → vennDiagram-LZ73GAT5-BQLEY1I4.js} +1 -1
- package/web-dist/assets/{xychartDiagram-JWTSCODW-FpaqRFdW.js → xychartDiagram-JWTSCODW-B1e8wYug.js} +1 -1
- package/web-dist/index.html +2 -2
- package/web-dist/assets/channel-dB9PbWQj.js +0 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-CvACUS4Q.js +0 -1
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-CvACUS4Q.js +0 -1
- package/web-dist/assets/clone-DoUt4JP8.js +0 -1
- package/web-dist/assets/index-3TJSoJSJ.js +0 -1546
- package/web-dist/assets/index-BZrUCLxt.css +0 -32
- 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;
|
|
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;
|
|
1
|
+
{"version":3,"file":"remote-cli-provider.js","sourceRoot":"","sources":["../../src/providers/remote-cli-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/routes/chat.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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;
|