@turingfocus/chat-gateway-tfrobot 0.5.0 → 0.6.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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/socket.d.ts.map +1 -1
- package/dist/socket.js +655 -134
- package/dist/socket.js.map +1 -1
- package/dist/types.d.ts +16 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TFRobotChatGateway, createTFRobotChatGateway, TFROBOT_CAPABILITIES, } from "./gateway.js";
|
|
2
2
|
export { createSocketIoFactory } from "./socket.js";
|
|
3
|
-
export type { TFRobotGatewayOptions, TFRobotMessageCreator, TFRobotMessageCreatorProvider, TFRobotMessageCreatorRequest, TFRobotSession, TFRobotSocket, TFRobotSocketAnyListener, TFRobotSocketAuth, TFRobotSocketFactory, TFRobotSocketFactoryInput, TFRobotSocketListener, } from "./types.js";
|
|
3
|
+
export type { TFRobotGatewayOptions, TFRobotLifecycleDiagnostic, TFRobotMessageCreator, TFRobotMessageCreatorProvider, TFRobotMessageCreatorRequest, TFRobotSession, TFRobotSocket, TFRobotSocketAnyListener, TFRobotSocketAuth, TFRobotSocketFactory, TFRobotSocketFactoryInput, TFRobotSocketListener, } from "./types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,EAC5B,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
package/dist/socket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EASL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,GAAG,EAET,MAAM,4BAA4B,CAAC;AAuBpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EACV,qBAAqB,EAKrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAmQpB,eAAO,MAAM,yBAAyB,GACnC,SAAS,OAAO,EAAE,KAAG,oBAYU,CAAC;AAEnC,eAAO,MAAM,qBAAqB,sBAAgC,CAAC;AAqBnE,KAAK,qBAAqB,GAAG,CAC3B,cAAc,EAAE,MAAM,KACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AAIvC,qBAAa,mBAAmB;;gBAe5B,OAAO,EAAE,qBAAqB,EAC9B,qBAAqB,EAAE,qBAAqB;IAWxC,SAAS,CACb,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IA8jC9C,OAAO,IAAI,IAAI;IAYf,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;CA2K3D"}
|
package/dist/socket.js
CHANGED
|
@@ -17,6 +17,123 @@ const KNOWN_EVENTS = new Set([
|
|
|
17
17
|
]);
|
|
18
18
|
const MAX_TIMER_DELAY = 2_147_483_647;
|
|
19
19
|
const RECONNECT_AUTH_TIMEOUT_MS = 10_000;
|
|
20
|
+
const RECONNECT_JOIN_TIMEOUT_MS = 10_000;
|
|
21
|
+
const parseJoinAcknowledgement = (value, reconnect) => {
|
|
22
|
+
if (value === undefined) {
|
|
23
|
+
return {
|
|
24
|
+
accepted: reconnect,
|
|
25
|
+
recoveryComplete: false,
|
|
26
|
+
...(reconnect ? {} : { rejectionCode: "validation" }),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
if (value === null) {
|
|
30
|
+
return {
|
|
31
|
+
accepted: false,
|
|
32
|
+
recoveryComplete: false,
|
|
33
|
+
rejectionCode: "validation",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (value === false) {
|
|
37
|
+
return {
|
|
38
|
+
accepted: false,
|
|
39
|
+
recoveryComplete: false,
|
|
40
|
+
rejectionCode: "validation",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (value === true) {
|
|
44
|
+
return { accepted: true, recoveryComplete: !reconnect };
|
|
45
|
+
}
|
|
46
|
+
if (typeof value !== "object") {
|
|
47
|
+
return {
|
|
48
|
+
accepted: false,
|
|
49
|
+
recoveryComplete: false,
|
|
50
|
+
rejectionCode: "validation",
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const record = value;
|
|
54
|
+
const booleanAliases = ["ok", "accepted", "success"];
|
|
55
|
+
const hasInvalidBooleanAlias = booleanAliases.some((alias) => Object.hasOwn(record, alias) && typeof record[alias] !== "boolean");
|
|
56
|
+
const statusAliases = ["status", "statusCode", "code"];
|
|
57
|
+
const hasInvalidStatusAlias = statusAliases.some((alias) => Object.hasOwn(record, alias) && record[alias] === undefined);
|
|
58
|
+
const statuses = [record["status"], record["statusCode"], record["code"]]
|
|
59
|
+
.filter((status) => status !== undefined)
|
|
60
|
+
.map((status) => {
|
|
61
|
+
const numeric = typeof status === "number"
|
|
62
|
+
? status
|
|
63
|
+
: typeof status === "string" && /^\d{3}$/u.test(status)
|
|
64
|
+
? Number(status)
|
|
65
|
+
: undefined;
|
|
66
|
+
const normalized = typeof status === "string" ? status.trim().toLowerCase() : undefined;
|
|
67
|
+
const accepted = (numeric !== undefined && numeric >= 200 && numeric < 300) ||
|
|
68
|
+
normalized === "ok" ||
|
|
69
|
+
normalized === "success" ||
|
|
70
|
+
normalized === "accepted" ||
|
|
71
|
+
normalized === "joined";
|
|
72
|
+
const rejected = (numeric !== undefined && numeric >= 400) ||
|
|
73
|
+
normalized === "error" ||
|
|
74
|
+
normalized === "failed" ||
|
|
75
|
+
normalized === "forbidden" ||
|
|
76
|
+
normalized === "unauthorized" ||
|
|
77
|
+
normalized === "rejected";
|
|
78
|
+
return { accepted, normalized, numeric, rejected };
|
|
79
|
+
});
|
|
80
|
+
const hasUnknownStatus = statuses.some((status) => !status.accepted && !status.rejected);
|
|
81
|
+
const explicitlyAccepted = record["ok"] === true ||
|
|
82
|
+
record["accepted"] === true ||
|
|
83
|
+
record["success"] === true ||
|
|
84
|
+
statuses.some((status) => status.accepted);
|
|
85
|
+
const cursorAliases = ["cursor", "recoveryCursor"];
|
|
86
|
+
const cursorValues = cursorAliases
|
|
87
|
+
.filter((alias) => Object.hasOwn(record, alias))
|
|
88
|
+
.map((alias) => record[alias]);
|
|
89
|
+
const cursorInvalid = cursorValues.some((cursorValue) => typeof cursorValue !== "string");
|
|
90
|
+
const cursorConflict = cursorValues.length > 1 &&
|
|
91
|
+
cursorValues.some((cursorValue) => cursorValue !== cursorValues[0]);
|
|
92
|
+
const recoveryAliases = ["recovered", "recoveryComplete"];
|
|
93
|
+
const recoveryDeclarations = recoveryAliases
|
|
94
|
+
.filter((alias) => Object.hasOwn(record, alias))
|
|
95
|
+
.map((alias) => record[alias]);
|
|
96
|
+
const recoveryInvalid = recoveryDeclarations.some((declaration) => typeof declaration !== "boolean");
|
|
97
|
+
const recoveryConflict = recoveryDeclarations.includes(true) && recoveryDeclarations.includes(false);
|
|
98
|
+
const normalizedError = typeof record["error"] === "string"
|
|
99
|
+
? record["error"].trim().toLowerCase()
|
|
100
|
+
: undefined;
|
|
101
|
+
const explicitlyRejected = hasInvalidBooleanAlias ||
|
|
102
|
+
hasInvalidStatusAlias ||
|
|
103
|
+
record["ok"] === false ||
|
|
104
|
+
record["accepted"] === false ||
|
|
105
|
+
record["success"] === false ||
|
|
106
|
+
record["error"] !== undefined ||
|
|
107
|
+
cursorInvalid ||
|
|
108
|
+
cursorConflict ||
|
|
109
|
+
recoveryInvalid ||
|
|
110
|
+
recoveryConflict ||
|
|
111
|
+
(!reconnect && recoveryDeclarations.includes(false)) ||
|
|
112
|
+
hasUnknownStatus ||
|
|
113
|
+
statuses.some((status) => status.rejected);
|
|
114
|
+
const accepted = explicitlyAccepted && !explicitlyRejected;
|
|
115
|
+
const cursor = cursorValues[0];
|
|
116
|
+
const recoveryComplete = !reconnect ||
|
|
117
|
+
(recoveryDeclarations.length > 0 &&
|
|
118
|
+
recoveryDeclarations.every((declaration) => declaration === true));
|
|
119
|
+
const authenticationRejected = statuses.some(({ normalized, numeric }) => numeric === 401 || normalized === "unauthorized") || normalizedError === "unauthorized";
|
|
120
|
+
const authorizationRejected = statuses.some(({ normalized, numeric }) => numeric === 403 || normalized === "forbidden") || normalizedError === "forbidden";
|
|
121
|
+
return {
|
|
122
|
+
accepted,
|
|
123
|
+
...(authenticationRejected
|
|
124
|
+
? { rejectionCode: "authentication" }
|
|
125
|
+
: authorizationRejected
|
|
126
|
+
? { rejectionCode: "authorization" }
|
|
127
|
+
: accepted
|
|
128
|
+
? {}
|
|
129
|
+
: { rejectionCode: "validation" }),
|
|
130
|
+
recoveryComplete,
|
|
131
|
+
...(typeof cursor === "string" ? { cursor } : {}),
|
|
132
|
+
...(typeof record["message"] === "string"
|
|
133
|
+
? { message: record["message"] }
|
|
134
|
+
: {}),
|
|
135
|
+
};
|
|
136
|
+
};
|
|
20
137
|
const sameRun = (first, second) => first === second ||
|
|
21
138
|
(first != null &&
|
|
22
139
|
second != null &&
|
|
@@ -102,9 +219,9 @@ export const createSocketIoFactoryWith = (connect) => ({ getAuth, namespaceUrl,
|
|
|
102
219
|
});
|
|
103
220
|
export const createSocketIoFactory = createSocketIoFactoryWith(io);
|
|
104
221
|
export class TFRobotSocketClient {
|
|
105
|
-
#active;
|
|
106
222
|
#disposed = false;
|
|
107
223
|
#establishmentAbort;
|
|
224
|
+
#establishing;
|
|
108
225
|
#factory;
|
|
109
226
|
#namespaceUrl;
|
|
110
227
|
#now;
|
|
@@ -112,6 +229,8 @@ export class TFRobotSocketClient {
|
|
|
112
229
|
#path;
|
|
113
230
|
#reconnectStatusLoader;
|
|
114
231
|
#runs = new Map();
|
|
232
|
+
#subscriptions = new Set();
|
|
233
|
+
#subscriptionGeneration = 0;
|
|
115
234
|
constructor(options, reconnectStatusLoader) {
|
|
116
235
|
this.#options = options;
|
|
117
236
|
this.#factory = options.socketFactory ?? createSocketIoFactory;
|
|
@@ -134,7 +253,9 @@ export class TFRobotSocketClient {
|
|
|
134
253
|
error: createGatewayDeadlineExceededError(),
|
|
135
254
|
};
|
|
136
255
|
}
|
|
137
|
-
this.#
|
|
256
|
+
const generation = ++this.#subscriptionGeneration;
|
|
257
|
+
const subscriptionId = `tfrobot-subscription-${generation}`;
|
|
258
|
+
this.#cancelEstablishment();
|
|
138
259
|
const establishmentAbort = new AbortController();
|
|
139
260
|
this.#establishmentAbort = establishmentAbort;
|
|
140
261
|
const authOutcome = await awaitBounded(() => this.#getSocketAuth(conversationId, "connect"), {
|
|
@@ -142,9 +263,6 @@ export class TFRobotSocketClient {
|
|
|
142
263
|
now: this.#now,
|
|
143
264
|
signal: establishmentAbort.signal,
|
|
144
265
|
});
|
|
145
|
-
if (this.#establishmentAbort === establishmentAbort) {
|
|
146
|
-
this.#establishmentAbort = undefined;
|
|
147
|
-
}
|
|
148
266
|
switch (authOutcome.kind) {
|
|
149
267
|
case "aborted": {
|
|
150
268
|
return {
|
|
@@ -224,6 +342,20 @@ export class TFRobotSocketClient {
|
|
|
224
342
|
};
|
|
225
343
|
}
|
|
226
344
|
const listeners = new Map();
|
|
345
|
+
let joinTimeout;
|
|
346
|
+
const activeErrorIds = new Map();
|
|
347
|
+
const replaceableErrorSources = new Set([
|
|
348
|
+
"authentication",
|
|
349
|
+
"connection",
|
|
350
|
+
"recovery",
|
|
351
|
+
"subscription",
|
|
352
|
+
]);
|
|
353
|
+
let errorSequence = 0;
|
|
354
|
+
let publishUpdate = () => undefined;
|
|
355
|
+
const pendingNotifications = [];
|
|
356
|
+
const pendingRealtimeActions = [];
|
|
357
|
+
let joinPending = false;
|
|
358
|
+
let subscriptionEstablished = false;
|
|
227
359
|
let setupFailure;
|
|
228
360
|
const add = (eventName, listener) => {
|
|
229
361
|
if (setupFailure !== undefined)
|
|
@@ -244,15 +376,52 @@ export class TFRobotSocketClient {
|
|
|
244
376
|
// Diagnostics are observational and cannot break the chat stream.
|
|
245
377
|
}
|
|
246
378
|
};
|
|
247
|
-
const
|
|
248
|
-
if (!active.active)
|
|
249
|
-
return;
|
|
379
|
+
const notifyError = (error) => {
|
|
250
380
|
try {
|
|
251
381
|
observer.error?.(error);
|
|
252
382
|
}
|
|
253
383
|
catch {
|
|
254
384
|
// Host observers are isolated from the transport listener.
|
|
255
385
|
}
|
|
386
|
+
};
|
|
387
|
+
const resolveError = (source) => {
|
|
388
|
+
const errorId = activeErrorIds.get(source);
|
|
389
|
+
if (errorId === undefined || !active.active)
|
|
390
|
+
return;
|
|
391
|
+
activeErrorIds.delete(source);
|
|
392
|
+
publishUpdate(chatUpdateSchema.parse({
|
|
393
|
+
kind: "error.resolved",
|
|
394
|
+
conversationId: errorConversationId(),
|
|
395
|
+
errorId,
|
|
396
|
+
}));
|
|
397
|
+
};
|
|
398
|
+
const report = (error, source = "protocol") => {
|
|
399
|
+
if (!active.active)
|
|
400
|
+
return;
|
|
401
|
+
if (replaceableErrorSources.has(source))
|
|
402
|
+
resolveError(source);
|
|
403
|
+
const errorId = `${subscriptionId}:error:${++errorSequence}`;
|
|
404
|
+
if (replaceableErrorSources.has(source)) {
|
|
405
|
+
activeErrorIds.set(source, errorId);
|
|
406
|
+
}
|
|
407
|
+
const occurrenceError = error.conversationId === undefined
|
|
408
|
+
? error
|
|
409
|
+
: { ...error, conversationId: errorConversationId() };
|
|
410
|
+
publishUpdate(chatUpdateSchema.parse({
|
|
411
|
+
kind: "error.reported",
|
|
412
|
+
conversationId: errorConversationId(),
|
|
413
|
+
error: occurrenceError,
|
|
414
|
+
errorId,
|
|
415
|
+
source,
|
|
416
|
+
scope: source === "domain"
|
|
417
|
+
? { kind: "conversation", id: errorConversationId() }
|
|
418
|
+
: { kind: "subscription", id: subscriptionId },
|
|
419
|
+
generation,
|
|
420
|
+
}));
|
|
421
|
+
if (subscriptionEstablished)
|
|
422
|
+
notifyError(error);
|
|
423
|
+
else
|
|
424
|
+
pendingNotifications.push({ kind: "error", error });
|
|
256
425
|
diagnose(error);
|
|
257
426
|
};
|
|
258
427
|
const sanitizePayload = (payload) => {
|
|
@@ -276,6 +445,10 @@ export class TFRobotSocketClient {
|
|
|
276
445
|
updateConversationId !== errorConversationId()) {
|
|
277
446
|
return;
|
|
278
447
|
}
|
|
448
|
+
if (!subscriptionEstablished) {
|
|
449
|
+
pendingNotifications.push({ kind: "update", update });
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
279
452
|
try {
|
|
280
453
|
observer.next(update);
|
|
281
454
|
}
|
|
@@ -283,6 +456,74 @@ export class TFRobotSocketClient {
|
|
|
283
456
|
diagnose(this.#error("unknown", "TFRobot Gateway observer rejected an update", false, errorConversationId()));
|
|
284
457
|
}
|
|
285
458
|
};
|
|
459
|
+
publishUpdate = next;
|
|
460
|
+
const dispatchRealtime = (action) => {
|
|
461
|
+
if (active.acceptingEvents)
|
|
462
|
+
action();
|
|
463
|
+
else if (joinPending)
|
|
464
|
+
pendingRealtimeActions.push(action);
|
|
465
|
+
};
|
|
466
|
+
const flushRealtime = () => {
|
|
467
|
+
for (const action of pendingRealtimeActions.splice(0))
|
|
468
|
+
action();
|
|
469
|
+
};
|
|
470
|
+
const lifecycle = (status, recovery, joinLatencyMs) => {
|
|
471
|
+
if (!active.active)
|
|
472
|
+
return;
|
|
473
|
+
const value = {
|
|
474
|
+
status,
|
|
475
|
+
generation,
|
|
476
|
+
reconnectAttempt: active.reconnectAttempt,
|
|
477
|
+
subscriptionId,
|
|
478
|
+
...(recovery === undefined ? {} : { recovery }),
|
|
479
|
+
};
|
|
480
|
+
const update = chatUpdateSchema.parse({
|
|
481
|
+
kind: "lifecycle.changed",
|
|
482
|
+
conversationId: errorConversationId(),
|
|
483
|
+
lifecycle: value,
|
|
484
|
+
});
|
|
485
|
+
next(update);
|
|
486
|
+
try {
|
|
487
|
+
void Promise.resolve(this.#options.onLifecycleDiagnostic?.({
|
|
488
|
+
kind: "socket.lifecycle",
|
|
489
|
+
conversationId: errorConversationId(),
|
|
490
|
+
subscriptionId,
|
|
491
|
+
generation,
|
|
492
|
+
status,
|
|
493
|
+
reconnectAttempt: active.reconnectAttempt,
|
|
494
|
+
...(joinLatencyMs === undefined ? {} : { joinLatencyMs }),
|
|
495
|
+
...(recovery === undefined
|
|
496
|
+
? {}
|
|
497
|
+
: {
|
|
498
|
+
recoveryComplete: recovery.complete,
|
|
499
|
+
...(recovery.cursor === undefined
|
|
500
|
+
? {}
|
|
501
|
+
: { recoveryCursor: recovery.cursor }),
|
|
502
|
+
...(recovery.reason === undefined
|
|
503
|
+
? {}
|
|
504
|
+
: { recoveryReason: recovery.reason }),
|
|
505
|
+
}),
|
|
506
|
+
})).catch(() => undefined);
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
// Lifecycle diagnostics are observational.
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
const enterAuthRequired = () => {
|
|
513
|
+
active.acceptingEvents = false;
|
|
514
|
+
active.authRequired = true;
|
|
515
|
+
active.terminal = true;
|
|
516
|
+
joinPending = false;
|
|
517
|
+
pendingRealtimeActions.length = 0;
|
|
518
|
+
active.recoveryRevision += 1;
|
|
519
|
+
lifecycle("auth-required");
|
|
520
|
+
try {
|
|
521
|
+
active.socket.disconnect();
|
|
522
|
+
}
|
|
523
|
+
catch {
|
|
524
|
+
// Authentication is already terminal for this subscription episode.
|
|
525
|
+
}
|
|
526
|
+
};
|
|
286
527
|
const mapAndNext = (invalidMessage, map) => {
|
|
287
528
|
let update;
|
|
288
529
|
try {
|
|
@@ -295,10 +536,18 @@ export class TFRobotSocketClient {
|
|
|
295
536
|
next(update);
|
|
296
537
|
};
|
|
297
538
|
let settleEstablishment;
|
|
298
|
-
let connectedOnce = false;
|
|
299
539
|
add("connect", () => {
|
|
300
540
|
if (!active.active)
|
|
301
541
|
return;
|
|
542
|
+
if (active.terminal) {
|
|
543
|
+
try {
|
|
544
|
+
active.socket.disconnect();
|
|
545
|
+
}
|
|
546
|
+
catch {
|
|
547
|
+
// Terminal subscriptions never rejoin.
|
|
548
|
+
}
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
302
551
|
if (settleEstablishment !== undefined &&
|
|
303
552
|
isGatewayDeadlineExceeded(options, this.#now())) {
|
|
304
553
|
settleEstablishment({
|
|
@@ -307,13 +556,206 @@ export class TFRobotSocketClient {
|
|
|
307
556
|
});
|
|
308
557
|
return;
|
|
309
558
|
}
|
|
310
|
-
|
|
311
|
-
|
|
559
|
+
if (joinTimeout !== undefined) {
|
|
560
|
+
clearTimeout(joinTimeout);
|
|
561
|
+
joinTimeout = undefined;
|
|
562
|
+
}
|
|
563
|
+
const reconnect = subscriptionEstablished;
|
|
564
|
+
if (reconnect)
|
|
565
|
+
active.reconnectAttempt += 1;
|
|
312
566
|
const recoveryRevision = ++active.recoveryRevision;
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
567
|
+
const runRevision = active.runRevision;
|
|
568
|
+
const joinStartedAt = this.#now();
|
|
569
|
+
active.acceptingEvents = false;
|
|
570
|
+
joinPending = true;
|
|
571
|
+
pendingRealtimeActions.length = 0;
|
|
572
|
+
lifecycle("joining");
|
|
573
|
+
let acknowledgementSettled = false;
|
|
574
|
+
const settleJoin = (...acknowledgementArguments) => {
|
|
575
|
+
if (!active.active ||
|
|
576
|
+
!this.#subscriptions.has(active) ||
|
|
577
|
+
active.recoveryRevision !== recoveryRevision) {
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
if (acknowledgementSettled)
|
|
581
|
+
return;
|
|
582
|
+
acknowledgementSettled = true;
|
|
583
|
+
if (joinTimeout !== undefined) {
|
|
584
|
+
clearTimeout(joinTimeout);
|
|
585
|
+
joinTimeout = undefined;
|
|
586
|
+
}
|
|
587
|
+
let acknowledgement;
|
|
588
|
+
try {
|
|
589
|
+
const rawAcknowledgement = acknowledgementArguments[0];
|
|
590
|
+
acknowledgement = parseJoinAcknowledgement(rawAcknowledgement === undefined || rawAcknowledgement === true
|
|
591
|
+
? rawAcknowledgement
|
|
592
|
+
: sanitizeCredentialRaw(rawAcknowledgement, credentialValues), reconnect);
|
|
593
|
+
}
|
|
594
|
+
catch {
|
|
595
|
+
acknowledgement = {
|
|
596
|
+
accepted: false,
|
|
597
|
+
recoveryComplete: false,
|
|
598
|
+
rejectionCode: "validation",
|
|
599
|
+
message: "Invalid TFRobot conversation subscription acknowledgement",
|
|
600
|
+
};
|
|
601
|
+
}
|
|
602
|
+
if (!acknowledgement.accepted) {
|
|
603
|
+
joinPending = false;
|
|
604
|
+
pendingRealtimeActions.length = 0;
|
|
605
|
+
const rejectionCode = acknowledgement.rejectionCode ?? "validation";
|
|
606
|
+
const error = this.#error(rejectionCode, acknowledgement.message ??
|
|
607
|
+
"TFRobot conversation subscription was rejected", false, errorConversationId());
|
|
608
|
+
if (settleEstablishment !== undefined) {
|
|
609
|
+
lifecycle("subscription-failed");
|
|
610
|
+
if (rejectionCode === "authentication" ||
|
|
611
|
+
rejectionCode === "authorization") {
|
|
612
|
+
void this.#invalidateSession(error, "rejected");
|
|
613
|
+
}
|
|
614
|
+
settleEstablishment({ ok: false, error });
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
const authenticationRejected = rejectionCode === "authentication" ||
|
|
618
|
+
rejectionCode === "authorization";
|
|
619
|
+
if (authenticationRejected) {
|
|
620
|
+
enterAuthRequired();
|
|
621
|
+
}
|
|
622
|
+
else {
|
|
623
|
+
active.acceptingEvents = false;
|
|
624
|
+
active.terminal = true;
|
|
625
|
+
active.recoveryRevision += 1;
|
|
626
|
+
try {
|
|
627
|
+
active.socket.disconnect();
|
|
628
|
+
}
|
|
629
|
+
catch {
|
|
630
|
+
// Subscription failure is already terminal for this episode.
|
|
631
|
+
}
|
|
632
|
+
lifecycle("subscription-failed");
|
|
633
|
+
}
|
|
634
|
+
report(error, authenticationRejected ? "authentication" : "subscription");
|
|
635
|
+
if (authenticationRejected) {
|
|
636
|
+
void this.#invalidateSession(error, "rejected");
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
if (!reconnect) {
|
|
642
|
+
joinPending = false;
|
|
643
|
+
subscriptionEstablished = true;
|
|
644
|
+
for (const notification of pendingNotifications.splice(0)) {
|
|
645
|
+
if (notification.kind === "update")
|
|
646
|
+
next(notification.update);
|
|
647
|
+
else
|
|
648
|
+
notifyError(notification.error);
|
|
649
|
+
}
|
|
650
|
+
settleEstablishment?.({
|
|
651
|
+
ok: true,
|
|
652
|
+
value: {
|
|
653
|
+
dispose: () => {
|
|
654
|
+
if (!active.active)
|
|
655
|
+
return;
|
|
656
|
+
active.active = false;
|
|
657
|
+
active.cleanup();
|
|
658
|
+
this.#subscriptions.delete(active);
|
|
659
|
+
},
|
|
660
|
+
},
|
|
661
|
+
});
|
|
662
|
+
resolveError("connection");
|
|
663
|
+
resolveError("authentication");
|
|
664
|
+
lifecycle("active", {
|
|
665
|
+
complete: true,
|
|
666
|
+
...(acknowledgement.cursor === undefined
|
|
667
|
+
? {}
|
|
668
|
+
: { cursor: acknowledgement.cursor }),
|
|
669
|
+
}, this.#now() - joinStartedAt);
|
|
670
|
+
active.acceptingEvents = true;
|
|
671
|
+
flushRealtime();
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
joinPending = false;
|
|
675
|
+
const joinLatencyMs = this.#now() - joinStartedAt;
|
|
676
|
+
lifecycle("recovering", {
|
|
677
|
+
complete: false,
|
|
678
|
+
...(acknowledgement.cursor === undefined
|
|
679
|
+
? {}
|
|
680
|
+
: { cursor: acknowledgement.cursor }),
|
|
681
|
+
...(acknowledgement.recoveryComplete
|
|
682
|
+
? {}
|
|
683
|
+
: { reason: "server-replay-contract-unavailable" }),
|
|
684
|
+
}, joinLatencyMs);
|
|
685
|
+
active.acceptingEvents = true;
|
|
686
|
+
flushRealtime();
|
|
687
|
+
void this.#reconcileRunAfterReconnect(active, conversationId, credentialValues, recoveryRevision, runRevision, next, report)
|
|
688
|
+
.then((outcome) => {
|
|
689
|
+
if (outcome === "auth-required") {
|
|
690
|
+
enterAuthRequired();
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
if ((outcome !== "success" && outcome !== "superseded-by-realtime") ||
|
|
694
|
+
!acknowledgement.recoveryComplete) {
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
resolveError("connection");
|
|
698
|
+
resolveError("recovery");
|
|
699
|
+
resolveError("authentication");
|
|
700
|
+
active.manualReconnectAttempted = false;
|
|
701
|
+
active.manualReconnectPending = false;
|
|
702
|
+
active.authRequired = false;
|
|
703
|
+
active.terminal = false;
|
|
704
|
+
lifecycle("active", {
|
|
705
|
+
complete: true,
|
|
706
|
+
...(acknowledgement.cursor === undefined
|
|
707
|
+
? {}
|
|
708
|
+
: { cursor: acknowledgement.cursor }),
|
|
709
|
+
}, joinLatencyMs);
|
|
710
|
+
})
|
|
711
|
+
.catch(() => {
|
|
712
|
+
active.acceptingEvents = false;
|
|
713
|
+
active.terminal = true;
|
|
714
|
+
try {
|
|
715
|
+
active.socket.disconnect();
|
|
716
|
+
}
|
|
717
|
+
catch {
|
|
718
|
+
// Offline is already terminal for this subscription episode.
|
|
719
|
+
}
|
|
720
|
+
lifecycle("offline");
|
|
721
|
+
report(this.#error("unknown", "TFRobot reconnect reconciliation failed", true, errorConversationId()), "recovery");
|
|
316
722
|
});
|
|
723
|
+
};
|
|
724
|
+
const joinDeadlineAt = reconnect
|
|
725
|
+
? this.#now() + RECONNECT_JOIN_TIMEOUT_MS
|
|
726
|
+
: options.deadlineAt;
|
|
727
|
+
joinTimeout = setTimeout(() => {
|
|
728
|
+
joinTimeout = undefined;
|
|
729
|
+
if (!active.active || active.recoveryRevision !== recoveryRevision) {
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
active.recoveryRevision += 1;
|
|
733
|
+
joinPending = false;
|
|
734
|
+
pendingRealtimeActions.length = 0;
|
|
735
|
+
const error = createGatewayDeadlineExceededError(errorConversationId());
|
|
736
|
+
if (settleEstablishment !== undefined) {
|
|
737
|
+
lifecycle("subscription-failed");
|
|
738
|
+
settleEstablishment({ ok: false, error });
|
|
739
|
+
}
|
|
740
|
+
else {
|
|
741
|
+
if (active.manualReconnectPending)
|
|
742
|
+
enterAuthRequired();
|
|
743
|
+
else {
|
|
744
|
+
active.acceptingEvents = false;
|
|
745
|
+
active.terminal = true;
|
|
746
|
+
lifecycle("subscription-failed");
|
|
747
|
+
}
|
|
748
|
+
report(error, active.manualReconnectPending ? "connection" : "subscription");
|
|
749
|
+
try {
|
|
750
|
+
active.socket.disconnect();
|
|
751
|
+
}
|
|
752
|
+
catch {
|
|
753
|
+
// The failed join attempt is already invalidated.
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}, Math.min(MAX_TIMER_DELAY, Math.max(0, joinDeadlineAt - this.#now())));
|
|
757
|
+
try {
|
|
758
|
+
socket.emit("join_conversation", { conversation_id: conversationId }, settleJoin);
|
|
317
759
|
}
|
|
318
760
|
catch (reason) {
|
|
319
761
|
const error = this.#transportError(reason, "Unable to join the TFRobot conversation", conversationId, credentialValues);
|
|
@@ -321,112 +763,97 @@ export class TFRobotSocketClient {
|
|
|
321
763
|
settleEstablishment({ ok: false, error });
|
|
322
764
|
}
|
|
323
765
|
else {
|
|
324
|
-
report(error);
|
|
766
|
+
report(error, "subscription");
|
|
325
767
|
active.active = false;
|
|
326
768
|
active.cleanup();
|
|
327
|
-
|
|
328
|
-
this.#active = undefined;
|
|
769
|
+
this.#subscriptions.delete(active);
|
|
329
770
|
}
|
|
330
771
|
return;
|
|
331
772
|
}
|
|
332
|
-
if (settleEstablishment !== undefined &&
|
|
333
|
-
isGatewayDeadlineExceeded(options, this.#now())) {
|
|
334
|
-
settleEstablishment({
|
|
335
|
-
ok: false,
|
|
336
|
-
error: createGatewayDeadlineExceededError(errorConversationId()),
|
|
337
|
-
});
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
settleEstablishment?.({
|
|
341
|
-
ok: true,
|
|
342
|
-
value: {
|
|
343
|
-
dispose: () => {
|
|
344
|
-
if (!active.active)
|
|
345
|
-
return;
|
|
346
|
-
active.active = false;
|
|
347
|
-
active.cleanup();
|
|
348
|
-
if (this.#active === active)
|
|
349
|
-
this.#active = undefined;
|
|
350
|
-
},
|
|
351
|
-
},
|
|
352
|
-
});
|
|
353
|
-
if (reconnect) {
|
|
354
|
-
void this.#reconcileRunAfterReconnect(active, conversationId, credentialValues, recoveryRevision, next, report).catch(() => {
|
|
355
|
-
report(this.#error("unknown", "TFRobot reconnect reconciliation failed", true, errorConversationId()));
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
773
|
});
|
|
359
774
|
add("chat_message", (payload) => {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
775
|
+
dispatchRealtime(() => {
|
|
776
|
+
if (belongsToForeignConversation(payload, conversationId))
|
|
777
|
+
return;
|
|
778
|
+
const parsed = messageDtoSchema.safeParse(sanitizePayload(payload));
|
|
779
|
+
if (!parsed.success) {
|
|
780
|
+
report(this.#error("validation", "Invalid TFRobot chat_message payload", false, errorConversationId()));
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
mapAndNext("TFRobot chat_message could not be normalized", () => mapMessageUpdate(parsed.data));
|
|
784
|
+
});
|
|
368
785
|
});
|
|
369
786
|
add("chat_event", (payload) => {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
787
|
+
dispatchRealtime(() => {
|
|
788
|
+
if (belongsToForeignConversation(payload, conversationId))
|
|
789
|
+
return;
|
|
790
|
+
const parsed = eventDtoSchema.safeParse(sanitizePayload(payload));
|
|
791
|
+
if (!parsed.success) {
|
|
792
|
+
report(this.#error("validation", "Invalid TFRobot chat_event payload", false, errorConversationId()));
|
|
793
|
+
return;
|
|
794
|
+
}
|
|
795
|
+
mapAndNext("TFRobot chat_event could not be normalized", () => mapEventUpdate(parsed.data));
|
|
796
|
+
});
|
|
378
797
|
});
|
|
379
798
|
add("conversation_state_changed", (payload) => {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
targetConversationId !==
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
799
|
+
dispatchRealtime(() => {
|
|
800
|
+
if (belongsToForeignConversation(payload, conversationId))
|
|
801
|
+
return;
|
|
802
|
+
const parsed = stateChangedDtoSchema.safeParse(sanitizePayload(payload));
|
|
803
|
+
if (!parsed.success) {
|
|
804
|
+
report(this.#error("validation", "Invalid TFRobot conversation_state_changed payload", false, errorConversationId()));
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
807
|
+
const targetConversationId = String(parsed.data.conversationId);
|
|
808
|
+
if (targetConversationId !== conversationId &&
|
|
809
|
+
targetConversationId !== errorConversationId()) {
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
active.runRevision += 1;
|
|
813
|
+
mapAndNext("TFRobot run state could not be normalized", () => {
|
|
814
|
+
const run = mapRun(targetConversationId, {
|
|
815
|
+
working: parsed.data.state === "working",
|
|
816
|
+
taskId: parsed.data.taskId,
|
|
817
|
+
});
|
|
818
|
+
this.#runs.set(targetConversationId, run);
|
|
819
|
+
return chatUpdateSchema.parse({
|
|
820
|
+
kind: "run.replace",
|
|
821
|
+
conversationId: targetConversationId,
|
|
822
|
+
run,
|
|
823
|
+
});
|
|
403
824
|
});
|
|
404
825
|
});
|
|
405
826
|
});
|
|
406
827
|
add("chat_error", (payload) => {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
targetConversationId !==
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
828
|
+
dispatchRealtime(() => {
|
|
829
|
+
if (belongsToForeignConversation(payload, conversationId))
|
|
830
|
+
return;
|
|
831
|
+
const parsed = chatErrorEventDtoSchema.safeParse(sanitizePayload(payload));
|
|
832
|
+
if (!parsed.success) {
|
|
833
|
+
report(this.#error("validation", "Invalid TFRobot chat_error payload", false, errorConversationId()));
|
|
834
|
+
return;
|
|
835
|
+
}
|
|
836
|
+
const targetConversationId = String(parsed.data.conversationId);
|
|
837
|
+
if (targetConversationId !== conversationId &&
|
|
838
|
+
targetConversationId !== errorConversationId()) {
|
|
839
|
+
return;
|
|
840
|
+
}
|
|
841
|
+
report(this.#error("server", typeof parsed.data.error === "string"
|
|
842
|
+
? parsed.data.error
|
|
843
|
+
: "TFRobot run failed", false, targetConversationId, parsed.data, credentialValues), "domain");
|
|
844
|
+
});
|
|
422
845
|
});
|
|
423
846
|
add("error", (payload) => {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
847
|
+
dispatchRealtime(() => {
|
|
848
|
+
const parsed = socketProtocolErrorDtoSchema.safeParse(sanitizePayload(payload));
|
|
849
|
+
report(this.#error("validation", parsed.success && typeof parsed.data.message === "string"
|
|
850
|
+
? parsed.data.message
|
|
851
|
+
: "TFRobot Socket protocol error", false, conversationId, undefined, credentialValues));
|
|
852
|
+
});
|
|
428
853
|
});
|
|
429
854
|
add("connect_error", (reason) => {
|
|
855
|
+
if (!active.active || active.terminal)
|
|
856
|
+
return;
|
|
430
857
|
const injectedError = chatErrorSchema.safeParse(reason);
|
|
431
858
|
const rejectionCode = socketAuthRejectionCode(reason);
|
|
432
859
|
const error = authenticationFailure !== undefined
|
|
@@ -448,23 +875,82 @@ export class TFRobotSocketClient {
|
|
|
448
875
|
settleEstablishment({ ok: false, error });
|
|
449
876
|
return;
|
|
450
877
|
}
|
|
451
|
-
|
|
878
|
+
if (active.manualReconnectPending) {
|
|
879
|
+
enterAuthRequired();
|
|
880
|
+
report(error, error.code === "authentication" || error.code === "authorization"
|
|
881
|
+
? "authentication"
|
|
882
|
+
: "connection");
|
|
883
|
+
return;
|
|
884
|
+
}
|
|
885
|
+
if (error.code === "authentication" || error.code === "authorization") {
|
|
886
|
+
enterAuthRequired();
|
|
887
|
+
}
|
|
888
|
+
report(error, error.code === "authentication" || error.code === "authorization"
|
|
889
|
+
? "authentication"
|
|
890
|
+
: "connection");
|
|
452
891
|
});
|
|
453
892
|
add("disconnect", (reason) => {
|
|
454
893
|
if (reason === "io client disconnect")
|
|
455
894
|
return;
|
|
895
|
+
if (active.terminal)
|
|
896
|
+
return;
|
|
897
|
+
active.acceptingEvents = false;
|
|
898
|
+
joinPending = false;
|
|
899
|
+
pendingRealtimeActions.length = 0;
|
|
900
|
+
if (joinTimeout !== undefined) {
|
|
901
|
+
clearTimeout(joinTimeout);
|
|
902
|
+
joinTimeout = undefined;
|
|
903
|
+
}
|
|
456
904
|
active.recoveryRevision += 1;
|
|
905
|
+
lifecycle("reconnecting");
|
|
457
906
|
const injectedError = chatErrorSchema.safeParse(reason);
|
|
458
907
|
report(injectedError.success
|
|
459
908
|
? sanitizeCredentialError(injectedError.data, credentialValues)
|
|
460
|
-
: this.#error("network", `TFRobot Socket disconnected: ${String(reason)}`, true, conversationId, undefined, credentialValues));
|
|
461
|
-
|
|
462
|
-
const anyListener = (eventName, payload) => {
|
|
463
|
-
if (KNOWN_EVENTS.has(eventName))
|
|
909
|
+
: this.#error("network", `TFRobot Socket disconnected: ${String(reason)}`, true, conversationId, undefined, credentialValues), "connection");
|
|
910
|
+
if (reason !== "io server disconnect")
|
|
464
911
|
return;
|
|
465
|
-
if (
|
|
912
|
+
if (active.manualReconnectAttempted) {
|
|
913
|
+
enterAuthRequired();
|
|
466
914
|
return;
|
|
467
|
-
|
|
915
|
+
}
|
|
916
|
+
active.manualReconnectAttempted = true;
|
|
917
|
+
active.manualReconnectPending = true;
|
|
918
|
+
const invalidationRevision = active.recoveryRevision;
|
|
919
|
+
const invalidationError = this.#error("authentication", "TFRobot Socket session was invalidated by the server", true, errorConversationId());
|
|
920
|
+
void awaitBounded(() => this.#invalidateSession(invalidationError, "unknown"), {
|
|
921
|
+
deadlineAt: this.#now() + RECONNECT_AUTH_TIMEOUT_MS,
|
|
922
|
+
now: this.#now,
|
|
923
|
+
signal: connectionAbort.signal,
|
|
924
|
+
}).then((outcome) => {
|
|
925
|
+
if (!active.active ||
|
|
926
|
+
active.socket.connected ||
|
|
927
|
+
active.authRequired ||
|
|
928
|
+
!active.manualReconnectPending ||
|
|
929
|
+
active.recoveryRevision !== invalidationRevision) {
|
|
930
|
+
return;
|
|
931
|
+
}
|
|
932
|
+
if (outcome.kind !== "value" || !outcome.value) {
|
|
933
|
+
report(this.#error("authentication", "Unable to invalidate the TFRobot Socket session", false, errorConversationId()), "authentication");
|
|
934
|
+
enterAuthRequired();
|
|
935
|
+
return;
|
|
936
|
+
}
|
|
937
|
+
try {
|
|
938
|
+
active.socket.connect();
|
|
939
|
+
}
|
|
940
|
+
catch (reconnectError) {
|
|
941
|
+
report(this.#transportError(reconnectError, "Unable to reconnect the TFRobot Socket transport", conversationId, credentialValues), "authentication");
|
|
942
|
+
enterAuthRequired();
|
|
943
|
+
}
|
|
944
|
+
});
|
|
945
|
+
});
|
|
946
|
+
const anyListener = (eventName, payload) => {
|
|
947
|
+
dispatchRealtime(() => {
|
|
948
|
+
if (KNOWN_EVENTS.has(eventName))
|
|
949
|
+
return;
|
|
950
|
+
if (belongsToForeignConversation(payload, conversationId))
|
|
951
|
+
return;
|
|
952
|
+
mapAndNext("Unknown TFRobot Socket event could not be normalized", () => mapUnknownSocketEvent(sanitizeCredentialText(eventName, credentialValues), sanitizePayload(payload), errorConversationId(), this.#now()));
|
|
953
|
+
});
|
|
468
954
|
};
|
|
469
955
|
if (setupFailure === undefined) {
|
|
470
956
|
try {
|
|
@@ -476,6 +962,10 @@ export class TFRobotSocketClient {
|
|
|
476
962
|
}
|
|
477
963
|
const cleanup = () => {
|
|
478
964
|
connectionAbort.abort();
|
|
965
|
+
if (joinTimeout !== undefined) {
|
|
966
|
+
clearTimeout(joinTimeout);
|
|
967
|
+
joinTimeout = undefined;
|
|
968
|
+
}
|
|
479
969
|
for (const [eventName, listener] of listeners) {
|
|
480
970
|
try {
|
|
481
971
|
socket.off(eventName, listener);
|
|
@@ -498,6 +988,8 @@ export class TFRobotSocketClient {
|
|
|
498
988
|
}
|
|
499
989
|
firstAuth = undefined;
|
|
500
990
|
credentialValues.clear();
|
|
991
|
+
pendingNotifications.length = 0;
|
|
992
|
+
pendingRealtimeActions.length = 0;
|
|
501
993
|
};
|
|
502
994
|
if (setupFailure !== undefined) {
|
|
503
995
|
const error = this.#transportError(setupFailure.reason, "Unable to configure the TFRobot Socket transport", conversationId, credentialValues);
|
|
@@ -508,7 +1000,9 @@ export class TFRobotSocketClient {
|
|
|
508
1000
|
};
|
|
509
1001
|
}
|
|
510
1002
|
const active = {
|
|
1003
|
+
acceptingEvents: true,
|
|
511
1004
|
active: true,
|
|
1005
|
+
authRequired: false,
|
|
512
1006
|
cancelEstablishment: () => {
|
|
513
1007
|
settleEstablishment?.({
|
|
514
1008
|
ok: false,
|
|
@@ -517,11 +1011,19 @@ export class TFRobotSocketClient {
|
|
|
517
1011
|
},
|
|
518
1012
|
cleanup,
|
|
519
1013
|
conversationId,
|
|
1014
|
+
generation,
|
|
1015
|
+
manualReconnectAttempted: false,
|
|
1016
|
+
manualReconnectPending: false,
|
|
520
1017
|
observer,
|
|
1018
|
+
reconnectAttempt: 0,
|
|
521
1019
|
recoveryRevision: 0,
|
|
1020
|
+
runRevision: 0,
|
|
522
1021
|
socket,
|
|
1022
|
+
subscriptionId,
|
|
1023
|
+
terminal: false,
|
|
523
1024
|
};
|
|
524
|
-
this.#active
|
|
1025
|
+
this.#subscriptions.add(active);
|
|
1026
|
+
this.#establishing = active;
|
|
525
1027
|
return new Promise((resolve) => {
|
|
526
1028
|
let settled = false;
|
|
527
1029
|
const settle = (result) => {
|
|
@@ -529,12 +1031,16 @@ export class TFRobotSocketClient {
|
|
|
529
1031
|
return;
|
|
530
1032
|
settled = true;
|
|
531
1033
|
settleEstablishment = undefined;
|
|
1034
|
+
if (this.#establishmentAbort === establishmentAbort) {
|
|
1035
|
+
this.#establishmentAbort = undefined;
|
|
1036
|
+
}
|
|
1037
|
+
if (this.#establishing === active)
|
|
1038
|
+
this.#establishing = undefined;
|
|
532
1039
|
clearTimeout(timeout);
|
|
533
1040
|
if (!result.ok) {
|
|
534
1041
|
active.active = false;
|
|
535
1042
|
active.cleanup();
|
|
536
|
-
|
|
537
|
-
this.#active = undefined;
|
|
1043
|
+
this.#subscriptions.delete(active);
|
|
538
1044
|
}
|
|
539
1045
|
resolve(result);
|
|
540
1046
|
};
|
|
@@ -553,6 +1059,7 @@ export class TFRobotSocketClient {
|
|
|
553
1059
|
return;
|
|
554
1060
|
}
|
|
555
1061
|
try {
|
|
1062
|
+
lifecycle("connecting");
|
|
556
1063
|
socket.connect();
|
|
557
1064
|
}
|
|
558
1065
|
catch (reason) {
|
|
@@ -574,7 +1081,12 @@ export class TFRobotSocketClient {
|
|
|
574
1081
|
if (this.#disposed)
|
|
575
1082
|
return;
|
|
576
1083
|
this.#disposed = true;
|
|
577
|
-
this.#
|
|
1084
|
+
this.#cancelEstablishment();
|
|
1085
|
+
for (const subscription of this.#subscriptions) {
|
|
1086
|
+
subscription.active = false;
|
|
1087
|
+
subscription.cleanup();
|
|
1088
|
+
}
|
|
1089
|
+
this.#subscriptions.clear();
|
|
578
1090
|
this.#runs.clear();
|
|
579
1091
|
}
|
|
580
1092
|
rememberRun(conversationId, run) {
|
|
@@ -582,16 +1094,11 @@ export class TFRobotSocketClient {
|
|
|
582
1094
|
return;
|
|
583
1095
|
this.#runs.set(conversationId, run);
|
|
584
1096
|
}
|
|
585
|
-
#
|
|
1097
|
+
#cancelEstablishment() {
|
|
586
1098
|
this.#establishmentAbort?.abort();
|
|
587
1099
|
this.#establishmentAbort = undefined;
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
return;
|
|
591
|
-
current.cancelEstablishment();
|
|
592
|
-
current.active = false;
|
|
593
|
-
current.cleanup();
|
|
594
|
-
this.#active = undefined;
|
|
1100
|
+
this.#establishing?.cancelEstablishment();
|
|
1101
|
+
this.#establishing = undefined;
|
|
595
1102
|
}
|
|
596
1103
|
#defaultNamespaceUrl(baseUrl) {
|
|
597
1104
|
const url = new URL(baseUrl);
|
|
@@ -611,17 +1118,28 @@ export class TFRobotSocketClient {
|
|
|
611
1118
|
}
|
|
612
1119
|
return authOf(session);
|
|
613
1120
|
}
|
|
614
|
-
async #reconcileRunAfterReconnect(active, conversationId, credentialValues, recoveryRevision, next, report) {
|
|
1121
|
+
async #reconcileRunAfterReconnect(active, conversationId, credentialValues, recoveryRevision, runRevision, next, report) {
|
|
615
1122
|
const result = await this.#reconnectStatusLoader(conversationId);
|
|
616
1123
|
if (!active.active ||
|
|
617
|
-
this.#active
|
|
1124
|
+
!this.#subscriptions.has(active) ||
|
|
618
1125
|
!active.socket.connected ||
|
|
619
1126
|
active.recoveryRevision !== recoveryRevision) {
|
|
620
|
-
return;
|
|
1127
|
+
return "failure";
|
|
621
1128
|
}
|
|
622
1129
|
if (!result.ok) {
|
|
623
|
-
|
|
624
|
-
|
|
1130
|
+
const error = sanitizeCredentialError(result.error, credentialValues);
|
|
1131
|
+
if (error.code === "authentication" || error.code === "authorization") {
|
|
1132
|
+
report(error, "authentication");
|
|
1133
|
+
return "auth-required";
|
|
1134
|
+
}
|
|
1135
|
+
if (active.runRevision !== runRevision) {
|
|
1136
|
+
return "superseded-by-realtime";
|
|
1137
|
+
}
|
|
1138
|
+
report(error, "recovery");
|
|
1139
|
+
return "failure";
|
|
1140
|
+
}
|
|
1141
|
+
if (active.runRevision !== runRevision) {
|
|
1142
|
+
return "superseded-by-realtime";
|
|
625
1143
|
}
|
|
626
1144
|
try {
|
|
627
1145
|
const updateConversationId = sanitizeCredentialText(conversationId, credentialValues);
|
|
@@ -629,16 +1147,18 @@ export class TFRobotSocketClient {
|
|
|
629
1147
|
const run = mapRun(updateConversationId, safeStatus);
|
|
630
1148
|
const previous = this.#runs.get(conversationId);
|
|
631
1149
|
this.#runs.set(conversationId, run);
|
|
632
|
-
if (sameRun(previous, run))
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
}
|
|
1150
|
+
if (!sameRun(previous, run)) {
|
|
1151
|
+
next(chatUpdateSchema.parse({
|
|
1152
|
+
kind: "run.replace",
|
|
1153
|
+
conversationId: updateConversationId,
|
|
1154
|
+
run,
|
|
1155
|
+
}));
|
|
1156
|
+
}
|
|
1157
|
+
return "success";
|
|
639
1158
|
}
|
|
640
1159
|
catch {
|
|
641
|
-
report(this.#error("validation", "Reconnected TFRobot run status could not be normalized", false, conversationId, undefined, credentialValues));
|
|
1160
|
+
report(this.#error("validation", "Reconnected TFRobot run status could not be normalized", false, conversationId, undefined, credentialValues), "recovery");
|
|
1161
|
+
return "failure";
|
|
642
1162
|
}
|
|
643
1163
|
}
|
|
644
1164
|
async #invalidateSession(error, reason) {
|
|
@@ -647,9 +1167,10 @@ export class TFRobotSocketClient {
|
|
|
647
1167
|
reason: reason ?? (error.code === "authorization" ? "forbidden" : "expired"),
|
|
648
1168
|
error,
|
|
649
1169
|
});
|
|
1170
|
+
return true;
|
|
650
1171
|
}
|
|
651
1172
|
catch {
|
|
652
|
-
|
|
1173
|
+
return false;
|
|
653
1174
|
}
|
|
654
1175
|
}
|
|
655
1176
|
#transportError(reason, fallback, conversationId, credentialValues = []) {
|
package/dist/socket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChatError, MaybePromise, SessionProvider } from "@turingfocus/chat-protocol";
|
|
1
|
+
import type { ChatError, ChatLifecycleStatus, MaybePromise, SessionProvider } from "@turingfocus/chat-protocol";
|
|
2
2
|
export type TFRobotSession = {
|
|
3
3
|
readonly kind: "admin";
|
|
4
4
|
readonly adminKey: string;
|
|
@@ -36,12 +36,24 @@ export interface TFRobotSocket {
|
|
|
36
36
|
readonly connected: boolean;
|
|
37
37
|
connect(): void;
|
|
38
38
|
disconnect(): void;
|
|
39
|
-
emit(eventName: string,
|
|
39
|
+
emit(eventName: string, ...arguments_: unknown[]): unknown;
|
|
40
40
|
off(eventName: string, listener: TFRobotSocketListener): unknown;
|
|
41
41
|
offAny?(listener: TFRobotSocketAnyListener): unknown;
|
|
42
42
|
on(eventName: string, listener: TFRobotSocketListener): unknown;
|
|
43
43
|
onAny?(listener: TFRobotSocketAnyListener): unknown;
|
|
44
44
|
}
|
|
45
|
+
export interface TFRobotLifecycleDiagnostic {
|
|
46
|
+
readonly kind: "socket.lifecycle";
|
|
47
|
+
readonly conversationId: string;
|
|
48
|
+
readonly subscriptionId: string;
|
|
49
|
+
readonly generation: number;
|
|
50
|
+
readonly status: ChatLifecycleStatus;
|
|
51
|
+
readonly reconnectAttempt: number;
|
|
52
|
+
readonly joinLatencyMs?: number | undefined;
|
|
53
|
+
readonly recoveryComplete?: boolean | undefined;
|
|
54
|
+
readonly recoveryCursor?: string | undefined;
|
|
55
|
+
readonly recoveryReason?: string | undefined;
|
|
56
|
+
}
|
|
45
57
|
export interface TFRobotSocketFactoryInput {
|
|
46
58
|
readonly getAuth: () => Promise<TFRobotSocketAuth>;
|
|
47
59
|
readonly namespaceUrl: string;
|
|
@@ -68,5 +80,7 @@ export interface TFRobotGatewayOptions {
|
|
|
68
80
|
* credentials, headers and raw Session values are never supplied.
|
|
69
81
|
*/
|
|
70
82
|
readonly onDiagnostic?: ((error: ChatError) => MaybePromise<void>) | undefined;
|
|
83
|
+
/** Sanitized lifecycle telemetry; credentials and raw payloads are excluded. */
|
|
84
|
+
readonly onLifecycleDiagnostic?: ((diagnostic: TFRobotLifecycleDiagnostic) => MaybePromise<void>) | undefined;
|
|
71
85
|
}
|
|
72
86
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAC1C,OAAO,EAAE,4BAA4B,KAClC,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAEzC,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,KACb,KAAK,IAAI,cAQX,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AACvE,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,MAAM,EACjB,GAAG,UAAU,EAAE,OAAO,EAAE,KACrB,IAAI,CAAC;AAEV;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;IAChB,UAAU,IAAI,IAAI,CAAC;IACnB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAc,EACW,EAAE;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ;QACjC,CAAC,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAC5E,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO;YACzB,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ;YACvC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turingfocus/chat-gateway-tfrobot",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "TFRobotServer REST and realtime gateway adapter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@turingfocus/chat-protocol": "^0.
|
|
31
|
+
"@turingfocus/chat-protocol": "^0.6.0",
|
|
32
32
|
"socket.io-client": "4.8.3",
|
|
33
33
|
"zod": "4.0.17"
|
|
34
34
|
},
|