@informedai/react 0.4.1 → 0.4.3
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 +50 -25
- package/dist/index.mjs +50 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -267,7 +267,7 @@ function InformedAIProvider({ config, children }) {
|
|
|
267
267
|
const initRef = (0, import_react.useRef)(false);
|
|
268
268
|
const heartbeatIntervalRef = (0, import_react.useRef)(null);
|
|
269
269
|
const sessionIdRef = (0, import_react.useRef)(null);
|
|
270
|
-
const shouldPersist = config.persistSession ??
|
|
270
|
+
const shouldPersist = config.persistSession ?? true;
|
|
271
271
|
const storageKey = getStorageKey(config.documentTypeId, config.externalId);
|
|
272
272
|
(0, import_react.useEffect)(() => {
|
|
273
273
|
clientRef.current = new InformedAIClient(config.apiUrl);
|
|
@@ -359,19 +359,55 @@ function InformedAIProvider({ config, children }) {
|
|
|
359
359
|
if (sessionIdToResume) {
|
|
360
360
|
try {
|
|
361
361
|
const resumedSession = await clientRef.current.getSession(sessionIdToResume);
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
362
|
+
if (resumedSession.status === "ended") {
|
|
363
|
+
console.warn("Session was ended, creating new one");
|
|
364
|
+
if (shouldPersist && typeof window !== "undefined") {
|
|
365
|
+
try {
|
|
366
|
+
localStorage.removeItem(storageKey);
|
|
367
|
+
} catch (e) {
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
} else if (resumedSession.status === "abandoned") {
|
|
371
|
+
console.log("[InformedAI] Session was abandoned, resuming...");
|
|
372
|
+
try {
|
|
373
|
+
const activeSession = await clientRef.current.resumeSession(sessionIdToResume);
|
|
374
|
+
sess = activeSession;
|
|
375
|
+
doc = resumedSession.document;
|
|
376
|
+
const embeddedDt = resumedSession.document.documentType;
|
|
377
|
+
dt = {
|
|
378
|
+
id: embeddedDt.id,
|
|
379
|
+
name: embeddedDt.name,
|
|
380
|
+
displayName: embeddedDt.displayName,
|
|
381
|
+
schema: embeddedDt.schema,
|
|
382
|
+
workspaceId: "",
|
|
383
|
+
taskConfigs: {},
|
|
384
|
+
createdAt: "",
|
|
385
|
+
updatedAt: ""
|
|
386
|
+
};
|
|
387
|
+
} catch (resumeErr) {
|
|
388
|
+
console.error("[InformedAI] Failed to resume abandoned session:", resumeErr);
|
|
389
|
+
if (shouldPersist && typeof window !== "undefined") {
|
|
390
|
+
try {
|
|
391
|
+
localStorage.removeItem(storageKey);
|
|
392
|
+
} catch (e) {
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
} else {
|
|
397
|
+
sess = resumedSession;
|
|
398
|
+
doc = resumedSession.document;
|
|
399
|
+
const embeddedDt = resumedSession.document.documentType;
|
|
400
|
+
dt = {
|
|
401
|
+
id: embeddedDt.id,
|
|
402
|
+
name: embeddedDt.name,
|
|
403
|
+
displayName: embeddedDt.displayName,
|
|
404
|
+
schema: embeddedDt.schema,
|
|
405
|
+
workspaceId: "",
|
|
406
|
+
taskConfigs: {},
|
|
407
|
+
createdAt: "",
|
|
408
|
+
updatedAt: ""
|
|
409
|
+
};
|
|
410
|
+
}
|
|
375
411
|
} catch (e) {
|
|
376
412
|
console.warn("Failed to resume session, creating new one");
|
|
377
413
|
if (shouldPersist && typeof window !== "undefined") {
|
|
@@ -477,17 +513,6 @@ function InformedAIProvider({ config, children }) {
|
|
|
477
513
|
window.document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
478
514
|
};
|
|
479
515
|
}, [session?.id, startHeartbeat, stopHeartbeat, handleSessionDeleted, config]);
|
|
480
|
-
(0, import_react.useEffect)(() => {
|
|
481
|
-
const handleBeforeUnload = () => {
|
|
482
|
-
if (clientRef.current && sessionIdRef.current) {
|
|
483
|
-
clientRef.current.endSessionBeacon(sessionIdRef.current);
|
|
484
|
-
}
|
|
485
|
-
};
|
|
486
|
-
window.addEventListener("beforeunload", handleBeforeUnload);
|
|
487
|
-
return () => {
|
|
488
|
-
window.removeEventListener("beforeunload", handleBeforeUnload);
|
|
489
|
-
};
|
|
490
|
-
}, []);
|
|
491
516
|
const handleSSEEvent = (0, import_react.useCallback)((event) => {
|
|
492
517
|
if (event.type === "content" && event.content) {
|
|
493
518
|
setStreamingContent((prev) => prev + event.content);
|
package/dist/index.mjs
CHANGED
|
@@ -237,7 +237,7 @@ function InformedAIProvider({ config, children }) {
|
|
|
237
237
|
const initRef = useRef(false);
|
|
238
238
|
const heartbeatIntervalRef = useRef(null);
|
|
239
239
|
const sessionIdRef = useRef(null);
|
|
240
|
-
const shouldPersist = config.persistSession ??
|
|
240
|
+
const shouldPersist = config.persistSession ?? true;
|
|
241
241
|
const storageKey = getStorageKey(config.documentTypeId, config.externalId);
|
|
242
242
|
useEffect(() => {
|
|
243
243
|
clientRef.current = new InformedAIClient(config.apiUrl);
|
|
@@ -329,19 +329,55 @@ function InformedAIProvider({ config, children }) {
|
|
|
329
329
|
if (sessionIdToResume) {
|
|
330
330
|
try {
|
|
331
331
|
const resumedSession = await clientRef.current.getSession(sessionIdToResume);
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
332
|
+
if (resumedSession.status === "ended") {
|
|
333
|
+
console.warn("Session was ended, creating new one");
|
|
334
|
+
if (shouldPersist && typeof window !== "undefined") {
|
|
335
|
+
try {
|
|
336
|
+
localStorage.removeItem(storageKey);
|
|
337
|
+
} catch (e) {
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
} else if (resumedSession.status === "abandoned") {
|
|
341
|
+
console.log("[InformedAI] Session was abandoned, resuming...");
|
|
342
|
+
try {
|
|
343
|
+
const activeSession = await clientRef.current.resumeSession(sessionIdToResume);
|
|
344
|
+
sess = activeSession;
|
|
345
|
+
doc = resumedSession.document;
|
|
346
|
+
const embeddedDt = resumedSession.document.documentType;
|
|
347
|
+
dt = {
|
|
348
|
+
id: embeddedDt.id,
|
|
349
|
+
name: embeddedDt.name,
|
|
350
|
+
displayName: embeddedDt.displayName,
|
|
351
|
+
schema: embeddedDt.schema,
|
|
352
|
+
workspaceId: "",
|
|
353
|
+
taskConfigs: {},
|
|
354
|
+
createdAt: "",
|
|
355
|
+
updatedAt: ""
|
|
356
|
+
};
|
|
357
|
+
} catch (resumeErr) {
|
|
358
|
+
console.error("[InformedAI] Failed to resume abandoned session:", resumeErr);
|
|
359
|
+
if (shouldPersist && typeof window !== "undefined") {
|
|
360
|
+
try {
|
|
361
|
+
localStorage.removeItem(storageKey);
|
|
362
|
+
} catch (e) {
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
} else {
|
|
367
|
+
sess = resumedSession;
|
|
368
|
+
doc = resumedSession.document;
|
|
369
|
+
const embeddedDt = resumedSession.document.documentType;
|
|
370
|
+
dt = {
|
|
371
|
+
id: embeddedDt.id,
|
|
372
|
+
name: embeddedDt.name,
|
|
373
|
+
displayName: embeddedDt.displayName,
|
|
374
|
+
schema: embeddedDt.schema,
|
|
375
|
+
workspaceId: "",
|
|
376
|
+
taskConfigs: {},
|
|
377
|
+
createdAt: "",
|
|
378
|
+
updatedAt: ""
|
|
379
|
+
};
|
|
380
|
+
}
|
|
345
381
|
} catch (e) {
|
|
346
382
|
console.warn("Failed to resume session, creating new one");
|
|
347
383
|
if (shouldPersist && typeof window !== "undefined") {
|
|
@@ -447,17 +483,6 @@ function InformedAIProvider({ config, children }) {
|
|
|
447
483
|
window.document.removeEventListener("visibilitychange", handleVisibilityChange);
|
|
448
484
|
};
|
|
449
485
|
}, [session?.id, startHeartbeat, stopHeartbeat, handleSessionDeleted, config]);
|
|
450
|
-
useEffect(() => {
|
|
451
|
-
const handleBeforeUnload = () => {
|
|
452
|
-
if (clientRef.current && sessionIdRef.current) {
|
|
453
|
-
clientRef.current.endSessionBeacon(sessionIdRef.current);
|
|
454
|
-
}
|
|
455
|
-
};
|
|
456
|
-
window.addEventListener("beforeunload", handleBeforeUnload);
|
|
457
|
-
return () => {
|
|
458
|
-
window.removeEventListener("beforeunload", handleBeforeUnload);
|
|
459
|
-
};
|
|
460
|
-
}, []);
|
|
461
486
|
const handleSSEEvent = useCallback((event) => {
|
|
462
487
|
if (event.type === "content" && event.content) {
|
|
463
488
|
setStreamingContent((prev) => prev + event.content);
|