mitra-interactions-sdk 1.0.60-beta.28 → 1.0.60-beta.29
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.js +48 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -354,20 +354,23 @@ async function handleResponse(response) {
|
|
|
354
354
|
}
|
|
355
355
|
return data;
|
|
356
356
|
}
|
|
357
|
+
function withFreshAuth(init) {
|
|
358
|
+
const config = getConfig();
|
|
359
|
+
const headers = { ...init.headers };
|
|
360
|
+
if (config.token) headers["Authorization"] = formatToken(config.token);
|
|
361
|
+
return { ...init, headers };
|
|
362
|
+
}
|
|
357
363
|
async function fetchWithRefresh(url, init) {
|
|
358
364
|
const fetchFn = getFetch2();
|
|
365
|
+
if (isTokenExpiring()) {
|
|
366
|
+
const refreshed = await tryRefreshToken();
|
|
367
|
+
if (refreshed) init = withFreshAuth(init);
|
|
368
|
+
}
|
|
359
369
|
const response = await fetchFn(url, init);
|
|
360
370
|
if (response.status === 401) {
|
|
361
371
|
const refreshed = await tryRefreshToken();
|
|
362
372
|
if (refreshed) {
|
|
363
|
-
const
|
|
364
|
-
const oldHeaders = init.headers;
|
|
365
|
-
if (oldHeaders) {
|
|
366
|
-
for (const [k, v] of Object.entries(oldHeaders)) {
|
|
367
|
-
if (k !== "Authorization") newHeaders[k] = v;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
const retryResponse = await fetchFn(url, { ...init, headers: newHeaders });
|
|
373
|
+
const retryResponse = await fetchFn(url, withFreshAuth(init));
|
|
371
374
|
return handleResponse(retryResponse);
|
|
372
375
|
}
|
|
373
376
|
}
|
|
@@ -658,8 +661,25 @@ var AgentTaskSession = class {
|
|
|
658
661
|
if (!this._taskId) {
|
|
659
662
|
return Promise.reject(new Error("AgentTaskSession: sem taskId \u2014 task ainda n\xE3o criada."));
|
|
660
663
|
}
|
|
661
|
-
|
|
662
|
-
|
|
664
|
+
this._wsConnectPromise = (async () => {
|
|
665
|
+
try {
|
|
666
|
+
if (isTokenExpiring()) await tryRefreshToken();
|
|
667
|
+
try {
|
|
668
|
+
return await this._connectWs(this._taskId);
|
|
669
|
+
} catch (err) {
|
|
670
|
+
const refreshed = await tryRefreshToken();
|
|
671
|
+
if (!refreshed) throw err;
|
|
672
|
+
return await this._connectWs(this._taskId);
|
|
673
|
+
}
|
|
674
|
+
} finally {
|
|
675
|
+
this._wsConnectPromise = null;
|
|
676
|
+
}
|
|
677
|
+
})();
|
|
678
|
+
return this._wsConnectPromise;
|
|
679
|
+
}
|
|
680
|
+
_connectWs(taskId) {
|
|
681
|
+
const url = getTaskWsUrl(taskId);
|
|
682
|
+
return new Promise((resolve, reject) => {
|
|
663
683
|
const socket = new WebSocket(url);
|
|
664
684
|
let opened = false;
|
|
665
685
|
const timer = setTimeout(() => {
|
|
@@ -668,7 +688,6 @@ var AgentTaskSession = class {
|
|
|
668
688
|
socket.close();
|
|
669
689
|
} catch (e) {
|
|
670
690
|
}
|
|
671
|
-
this._wsConnectPromise = null;
|
|
672
691
|
reject(new Error("Agent Chat: timeout ao conectar no WebSocket da task"));
|
|
673
692
|
}
|
|
674
693
|
}, 15e3);
|
|
@@ -676,13 +695,11 @@ var AgentTaskSession = class {
|
|
|
676
695
|
opened = true;
|
|
677
696
|
clearTimeout(timer);
|
|
678
697
|
this._ws = socket;
|
|
679
|
-
this._wsConnectPromise = null;
|
|
680
698
|
resolve(socket);
|
|
681
699
|
};
|
|
682
700
|
socket.onerror = () => {
|
|
683
701
|
if (!opened) {
|
|
684
702
|
clearTimeout(timer);
|
|
685
|
-
this._wsConnectPromise = null;
|
|
686
703
|
reject(new Error("Agent Chat: erro ao conectar no WebSocket da task"));
|
|
687
704
|
}
|
|
688
705
|
};
|
|
@@ -699,7 +716,6 @@ var AgentTaskSession = class {
|
|
|
699
716
|
this._handleWsEvent(msg);
|
|
700
717
|
};
|
|
701
718
|
});
|
|
702
|
-
return this._wsConnectPromise;
|
|
703
719
|
}
|
|
704
720
|
// ── Eventos do stream (WsOutboundMessage { type, payload, timestamp }) ──
|
|
705
721
|
_handleWsEvent(msg) {
|
|
@@ -1063,20 +1079,22 @@ function createMitraInstance(initialConfig) {
|
|
|
1063
1079
|
return false;
|
|
1064
1080
|
}
|
|
1065
1081
|
}
|
|
1082
|
+
function withFreshAuth2(init) {
|
|
1083
|
+
const headers = { ...init.headers };
|
|
1084
|
+
if (_config.token) headers["Authorization"] = formatToken2(_config.token);
|
|
1085
|
+
return { ...init, headers };
|
|
1086
|
+
}
|
|
1066
1087
|
async function fetchWithRefresh2(url, init) {
|
|
1067
1088
|
const fetchFn = getFetch3();
|
|
1089
|
+
if (isTokenExpiring(_config.token)) {
|
|
1090
|
+
const refreshed = await tryRefreshToken2();
|
|
1091
|
+
if (refreshed) init = withFreshAuth2(init);
|
|
1092
|
+
}
|
|
1068
1093
|
const response = await fetchFn(url, init);
|
|
1069
1094
|
if (response.status === 401) {
|
|
1070
1095
|
const refreshed = await tryRefreshToken2();
|
|
1071
1096
|
if (refreshed) {
|
|
1072
|
-
const
|
|
1073
|
-
const oldHeaders = init.headers;
|
|
1074
|
-
if (oldHeaders) {
|
|
1075
|
-
for (const [k, v] of Object.entries(oldHeaders)) {
|
|
1076
|
-
if (k !== "Authorization") newHeaders[k] = v;
|
|
1077
|
-
}
|
|
1078
|
-
}
|
|
1079
|
-
const retryResponse = await fetchFn(url, { ...init, headers: newHeaders });
|
|
1097
|
+
const retryResponse = await fetchFn(url, withFreshAuth2(init));
|
|
1080
1098
|
return handleResponse2(retryResponse);
|
|
1081
1099
|
}
|
|
1082
1100
|
}
|
|
@@ -1292,6 +1310,14 @@ function hasAppScope(token) {
|
|
|
1292
1310
|
if (!payload) return true;
|
|
1293
1311
|
return typeof payload.app_id === "string" && payload.app_id.length > 0;
|
|
1294
1312
|
}
|
|
1313
|
+
function isTokenExpiring(token, skewMs = 3e4) {
|
|
1314
|
+
const t = token != null ? token : globalConfig == null ? void 0 : globalConfig.token;
|
|
1315
|
+
if (!t) return false;
|
|
1316
|
+
const payload = decodeJwtPayload(t);
|
|
1317
|
+
const exp = payload == null ? void 0 : payload.exp;
|
|
1318
|
+
if (typeof exp !== "number") return false;
|
|
1319
|
+
return exp * 1e3 - Date.now() < skewMs;
|
|
1320
|
+
}
|
|
1295
1321
|
function clearRefreshToken() {
|
|
1296
1322
|
if (globalConfig) {
|
|
1297
1323
|
const { refreshToken: _drop, ...rest } = globalConfig;
|