@anuma/sdk 6.35.0 → 6.37.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/expo/index.cjs +945 -219
- package/dist/expo/index.d.mts +103 -1
- package/dist/expo/index.d.ts +103 -1
- package/dist/expo/index.mjs +945 -227
- package/dist/index.cjs +150 -74
- package/dist/index.d.mts +30 -1
- package/dist/index.d.ts +30 -1
- package/dist/index.mjs +149 -74
- package/dist/react/index.cjs +980 -254
- package/dist/react/index.d.mts +103 -1
- package/dist/react/index.d.ts +103 -1
- package/dist/react/index.mjs +980 -262
- package/dist/server/index.cjs +43 -1
- package/dist/server/index.mjs +43 -1
- package/dist/tools/index.cjs +74 -12
- package/dist/tools/index.d.mts +16 -3
- package/dist/tools/index.d.ts +16 -3
- package/dist/tools/index.mjs +73 -12
- package/package.json +1 -1
package/dist/expo/index.cjs
CHANGED
|
@@ -354,10 +354,10 @@ var init_redactor = __esm({
|
|
|
354
354
|
const existing = this.valueToPlaceholder.get(normalizedValue);
|
|
355
355
|
if (existing) return existing;
|
|
356
356
|
const existingCount = this.categoryCounters.get(category);
|
|
357
|
-
const
|
|
358
|
-
this.categoryCounters.set(category,
|
|
357
|
+
const count2 = (existingCount ?? 0) + 1;
|
|
358
|
+
this.categoryCounters.set(category, count2);
|
|
359
359
|
if (existingCount === void 0) this.storagePattern = void 0;
|
|
360
|
-
const placeholder = `[${category}_${
|
|
360
|
+
const placeholder = `[${category}_${count2}]`;
|
|
361
361
|
this.valueToPlaceholder.set(normalizedValue, placeholder);
|
|
362
362
|
this.placeholderToValue.set(placeholder, normalizedValue);
|
|
363
363
|
this.storageLookup = null;
|
|
@@ -370,15 +370,15 @@ var init_redactor = __esm({
|
|
|
370
370
|
* (sequential, per-pattern) and the async {@link collectRegexSpans} (span)
|
|
371
371
|
* paths so the detection rules live in exactly one place.
|
|
372
372
|
*/
|
|
373
|
-
findMatches(
|
|
373
|
+
findMatches(text13, pattern) {
|
|
374
374
|
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
375
375
|
const found = [];
|
|
376
376
|
let m;
|
|
377
|
-
while ((m = regex.exec(
|
|
377
|
+
while ((m = regex.exec(text13)) !== null) {
|
|
378
378
|
const value = m[0];
|
|
379
379
|
if (pattern.validate && !pattern.validate(value)) continue;
|
|
380
380
|
if (pattern.context) {
|
|
381
|
-
const before =
|
|
381
|
+
const before = text13.slice(Math.max(0, m.index - 40), m.index);
|
|
382
382
|
if (!pattern.context.test(before)) continue;
|
|
383
383
|
}
|
|
384
384
|
found.push({ match: value, index: m.index });
|
|
@@ -394,9 +394,9 @@ var init_redactor = __esm({
|
|
|
394
394
|
* earlier patterns, so an earlier (more specific) pattern claims a region
|
|
395
395
|
* before a later one can — placeholders are inert and match no pattern.
|
|
396
396
|
*/
|
|
397
|
-
scan(
|
|
397
|
+
scan(text13, makeReplacement) {
|
|
398
398
|
const matches = [];
|
|
399
|
-
let redacted =
|
|
399
|
+
let redacted = text13;
|
|
400
400
|
for (const pattern of this.patterns) {
|
|
401
401
|
const found = this.findMatches(redacted, pattern);
|
|
402
402
|
if (found.length === 0) continue;
|
|
@@ -417,8 +417,8 @@ var init_redactor = __esm({
|
|
|
417
417
|
* Scan and redact PII from a single text string, using numbered, reversible
|
|
418
418
|
* placeholders ([EMAIL_1], …) tracked on this instance.
|
|
419
419
|
*/
|
|
420
|
-
redactText(
|
|
421
|
-
return this.scan(
|
|
420
|
+
redactText(text13) {
|
|
421
|
+
return this.scan(text13, (category, value) => this.getPlaceholder(category, value));
|
|
422
422
|
}
|
|
423
423
|
/**
|
|
424
424
|
* Mask PII with unnumbered, NON-reversible tokens ([EMAIL], [SSN], …) without
|
|
@@ -427,15 +427,15 @@ var init_redactor = __esm({
|
|
|
427
427
|
* embeddings endpoint while staying deterministic, so the same content always
|
|
428
428
|
* masks identically and search stays consistent across conversations.
|
|
429
429
|
*/
|
|
430
|
-
maskText(
|
|
431
|
-
return this.scan(
|
|
430
|
+
maskText(text13) {
|
|
431
|
+
return this.scan(text13, (category) => `[${category}]`).text;
|
|
432
432
|
}
|
|
433
433
|
/** All regex matches as spans on the ORIGINAL text (priority 0). Uses the
|
|
434
434
|
* same {@link findMatches} guards as the sync scan. */
|
|
435
|
-
collectRegexSpans(
|
|
435
|
+
collectRegexSpans(text13) {
|
|
436
436
|
const spans = [];
|
|
437
437
|
this.patterns.forEach((pattern, patternIndex) => {
|
|
438
|
-
for (const { match, index } of this.findMatches(
|
|
438
|
+
for (const { match, index } of this.findMatches(text13, pattern)) {
|
|
439
439
|
spans.push({
|
|
440
440
|
start: index,
|
|
441
441
|
end: index + match.length,
|
|
@@ -454,16 +454,16 @@ var init_redactor = __esm({
|
|
|
454
454
|
* of "Stripe") from producing a corrupting partial placeholder like
|
|
455
455
|
* `[ORG_1]e`.
|
|
456
456
|
*/
|
|
457
|
-
normalizeNerSpans(
|
|
457
|
+
normalizeNerSpans(text13, raw) {
|
|
458
458
|
if (!Array.isArray(raw)) return [];
|
|
459
459
|
const out = [];
|
|
460
460
|
raw.forEach((s, i) => {
|
|
461
461
|
if (!Number.isFinite(s.start) || !Number.isFinite(s.end)) return;
|
|
462
|
-
let start = Math.max(0, Math.min(Math.trunc(s.start),
|
|
463
|
-
let end = Math.max(0, Math.min(Math.trunc(s.end),
|
|
462
|
+
let start = Math.max(0, Math.min(Math.trunc(s.start), text13.length));
|
|
463
|
+
let end = Math.max(0, Math.min(Math.trunc(s.end), text13.length));
|
|
464
464
|
if (end <= start) return;
|
|
465
|
-
while (start > 0 && isWordChar(
|
|
466
|
-
while (end <
|
|
465
|
+
while (start > 0 && isWordChar(text13[start - 1])) start--;
|
|
466
|
+
while (end < text13.length && isWordChar(text13[end])) end++;
|
|
467
467
|
const category = String(s.category ?? "").trim();
|
|
468
468
|
if (!category) return;
|
|
469
469
|
out.push({ start, end, category, priority: 1, order: i });
|
|
@@ -472,10 +472,10 @@ var init_redactor = __esm({
|
|
|
472
472
|
}
|
|
473
473
|
/** Run the configured detector defensively: failures degrade to regex-only
|
|
474
474
|
* (fail-open on detection, not on protection) with a one-time warning. */
|
|
475
|
-
async detectNerSpans(
|
|
475
|
+
async detectNerSpans(text13) {
|
|
476
476
|
if (!this.nerDetector) return [];
|
|
477
477
|
try {
|
|
478
|
-
return this.normalizeNerSpans(
|
|
478
|
+
return this.normalizeNerSpans(text13, await this.nerDetector.detect(text13));
|
|
479
479
|
} catch (err) {
|
|
480
480
|
this.warnNerFailure(err);
|
|
481
481
|
return [];
|
|
@@ -508,11 +508,11 @@ var init_redactor = __esm({
|
|
|
508
508
|
* in pattern then document order, matching the sync scan's numbering). The
|
|
509
509
|
* string is then EMITTED in document order.
|
|
510
510
|
*/
|
|
511
|
-
rebuildSpans(
|
|
511
|
+
rebuildSpans(text13, spans, makeReplacement) {
|
|
512
512
|
const placeholderByStart = /* @__PURE__ */ new Map();
|
|
513
513
|
const matches = [];
|
|
514
514
|
for (const s of spans) {
|
|
515
|
-
const value =
|
|
515
|
+
const value = text13.slice(s.start, s.end);
|
|
516
516
|
const placeholder = makeReplacement(s.category, value);
|
|
517
517
|
placeholderByStart.set(s.start, placeholder);
|
|
518
518
|
matches.push({ category: s.category, original: value, placeholder });
|
|
@@ -521,16 +521,16 @@ var init_redactor = __esm({
|
|
|
521
521
|
let result = "";
|
|
522
522
|
let cursor = 0;
|
|
523
523
|
for (const s of emitOrder) {
|
|
524
|
-
result +=
|
|
524
|
+
result += text13.slice(cursor, s.start) + (placeholderByStart.get(s.start) ?? "");
|
|
525
525
|
cursor = s.end;
|
|
526
526
|
}
|
|
527
|
-
result +=
|
|
527
|
+
result += text13.slice(cursor);
|
|
528
528
|
return { text: result, matches };
|
|
529
529
|
}
|
|
530
530
|
/** Merge regex + NER spans for `text` into a resolved, non-overlapping set. */
|
|
531
|
-
async detectAllSpans(
|
|
532
|
-
const nerPromise = this.detectNerSpans(
|
|
533
|
-
const regexSpans = this.collectRegexSpans(
|
|
531
|
+
async detectAllSpans(text13) {
|
|
532
|
+
const nerPromise = this.detectNerSpans(text13);
|
|
533
|
+
const regexSpans = this.collectRegexSpans(text13);
|
|
534
534
|
const ner = await nerPromise;
|
|
535
535
|
return this.resolveOverlaps([...regexSpans, ...ner]);
|
|
536
536
|
}
|
|
@@ -539,11 +539,11 @@ var init_redactor = __esm({
|
|
|
539
539
|
* unstructured PII (the configured {@link NerDetector}) with numbered,
|
|
540
540
|
* reversible placeholders. With no detector, identical to `redactText`.
|
|
541
541
|
*/
|
|
542
|
-
async redactTextAsync(
|
|
543
|
-
if (!this.nerDetector) return this.redactText(
|
|
544
|
-
const spans = await this.detectAllSpans(
|
|
542
|
+
async redactTextAsync(text13) {
|
|
543
|
+
if (!this.nerDetector) return this.redactText(text13);
|
|
544
|
+
const spans = await this.detectAllSpans(text13);
|
|
545
545
|
return this.rebuildSpans(
|
|
546
|
-
|
|
546
|
+
text13,
|
|
547
547
|
spans,
|
|
548
548
|
(category, value) => this.getPlaceholder(category, value)
|
|
549
549
|
);
|
|
@@ -552,10 +552,10 @@ var init_redactor = __esm({
|
|
|
552
552
|
* Async counterpart to {@link maskText}: stateless `[CATEGORY]` masking over
|
|
553
553
|
* regex + NER matches. With no detector, identical to `maskText`.
|
|
554
554
|
*/
|
|
555
|
-
async maskTextAsync(
|
|
556
|
-
if (!this.nerDetector) return this.maskText(
|
|
557
|
-
const spans = await this.detectAllSpans(
|
|
558
|
-
return this.rebuildSpans(
|
|
555
|
+
async maskTextAsync(text13) {
|
|
556
|
+
if (!this.nerDetector) return this.maskText(text13);
|
|
557
|
+
const spans = await this.detectAllSpans(text13);
|
|
558
|
+
return this.rebuildSpans(text13, spans, (category) => `[${category}]`).text;
|
|
559
559
|
}
|
|
560
560
|
/**
|
|
561
561
|
* Async counterpart to {@link redactMessages}. Text parts are redacted
|
|
@@ -641,9 +641,9 @@ var init_redactor = __esm({
|
|
|
641
641
|
* {@link restoreForStorage} instead, which tolerates the mangled echoes the
|
|
642
642
|
* extraction models produce.
|
|
643
643
|
*/
|
|
644
|
-
deAnonymize(
|
|
645
|
-
if (!
|
|
646
|
-
let restored =
|
|
644
|
+
deAnonymize(text13) {
|
|
645
|
+
if (!text13.includes("[")) return text13;
|
|
646
|
+
let restored = text13;
|
|
647
647
|
for (const [placeholder, original] of this.placeholderToValue) {
|
|
648
648
|
if (restored.includes(placeholder)) {
|
|
649
649
|
restored = restored.split(placeholder).join(original);
|
|
@@ -668,15 +668,15 @@ var init_redactor = __esm({
|
|
|
668
668
|
* - `unresolved` is derived from the lookup miss during this pass, not from a
|
|
669
669
|
* regex re-scan of the output — so it can't trip over a restored value.
|
|
670
670
|
*/
|
|
671
|
-
restoreForStorage(
|
|
671
|
+
restoreForStorage(text13) {
|
|
672
672
|
if (this.storagePattern === void 0) this.storagePattern = this.buildStoragePattern();
|
|
673
673
|
if (!this.storagePattern || this.placeholderToValue.size === 0) {
|
|
674
|
-
return { text:
|
|
674
|
+
return { text: text13, unresolved: false };
|
|
675
675
|
}
|
|
676
676
|
this.storageLookup ?? (this.storageLookup = this.buildStorageLookup());
|
|
677
677
|
const { exact, ci, ciCollisions } = this.storageLookup;
|
|
678
678
|
let unresolved = false;
|
|
679
|
-
const restored =
|
|
679
|
+
const restored = text13.replace(
|
|
680
680
|
this.storagePattern,
|
|
681
681
|
(match, bracketed, bare) => {
|
|
682
682
|
const body = bracketed ?? bare ?? "";
|
|
@@ -892,44 +892,44 @@ async function callPortalJsonCompletion(req) {
|
|
|
892
892
|
),
|
|
893
893
|
...reinforce && { reinforceJsonContract: true }
|
|
894
894
|
} : reinforce ? { ...req, reinforceJsonContract: true } : req;
|
|
895
|
-
const
|
|
895
|
+
const outcome2 = await attemptPortalJson(
|
|
896
896
|
{ ...attemptReq, transport },
|
|
897
897
|
endpoint
|
|
898
898
|
);
|
|
899
|
-
if (
|
|
899
|
+
if (outcome2.kind === "ok") {
|
|
900
900
|
req.onAttempt?.({ attempt, ok: true });
|
|
901
|
-
return
|
|
901
|
+
return outcome2.value;
|
|
902
902
|
}
|
|
903
903
|
req.onAttempt?.({
|
|
904
904
|
attempt,
|
|
905
905
|
ok: false,
|
|
906
|
-
reason:
|
|
907
|
-
...
|
|
906
|
+
reason: outcome2.code,
|
|
907
|
+
...outcome2.httpStatus !== void 0 && { httpStatus: outcome2.httpStatus }
|
|
908
908
|
});
|
|
909
909
|
lastFailure = {
|
|
910
|
-
reason:
|
|
911
|
-
...
|
|
910
|
+
reason: outcome2.code,
|
|
911
|
+
...outcome2.httpStatus !== void 0 && { httpStatus: outcome2.httpStatus },
|
|
912
912
|
attempts: attempt
|
|
913
913
|
};
|
|
914
|
-
if (
|
|
915
|
-
if (
|
|
916
|
-
log.warn(`[${req.tag}] ${
|
|
914
|
+
if (outcome2.code === "invalid-json" || outcome2.code === "null-completion") reinforce = true;
|
|
915
|
+
if (outcome2.kind === "terminal") {
|
|
916
|
+
log.warn(`[${req.tag}] ${outcome2.reason}`);
|
|
917
917
|
return giveUp();
|
|
918
918
|
}
|
|
919
919
|
if (attempt >= maxAttempts) {
|
|
920
|
-
log.warn(`[${req.tag}] ${
|
|
920
|
+
log.warn(`[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, giving up`);
|
|
921
921
|
break;
|
|
922
922
|
}
|
|
923
923
|
const backoff = (req.backoffMs ?? defaultBackoffMs)(attempt);
|
|
924
|
-
const delay = Math.max(backoff,
|
|
924
|
+
const delay = Math.max(backoff, outcome2.retryAfterMs ?? 0);
|
|
925
925
|
if (overBudget() || req.totalTimeoutMs !== void 0 && Date.now() - startedAt + delay >= req.totalTimeoutMs) {
|
|
926
926
|
log.warn(
|
|
927
|
-
`[${req.tag}] ${
|
|
927
|
+
`[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, over time budget, giving up`
|
|
928
928
|
);
|
|
929
929
|
lastFailure = { reason: "time-budget-exhausted", attempts: attempt };
|
|
930
930
|
break;
|
|
931
931
|
}
|
|
932
|
-
log.warn(`[${req.tag}] ${
|
|
932
|
+
log.warn(`[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, retrying`);
|
|
933
933
|
if (delay > 0) await sleep3(delay);
|
|
934
934
|
}
|
|
935
935
|
return giveUp();
|
|
@@ -1132,8 +1132,8 @@ function extractResponsesContent(body) {
|
|
|
1132
1132
|
if (!root) return null;
|
|
1133
1133
|
if (typeof root.output_text === "string" && root.output_text !== "") return root.output_text;
|
|
1134
1134
|
if (!Array.isArray(root.output)) return null;
|
|
1135
|
-
const
|
|
1136
|
-
return
|
|
1135
|
+
const text13 = root.output.filter((item) => asRecord(item)?.type === "message").flatMap((item) => Array.isArray(item.content) ? item.content : []).map((part) => asRecord(part)?.text).filter((t) => typeof t === "string").join("");
|
|
1136
|
+
return text13;
|
|
1137
1137
|
}
|
|
1138
1138
|
var RESPONSE_FORMAT_OK, RESPONSE_SCHEMA_OK, JSON_CONTRACT_REMINDER, RESPONSES_ONLY_MODEL_PREFIXES, CHAT_TO_RESPONSES_FIELDS, FOREIGN_ENDPOINT_SUFFIX, RETRYABLE_HTTP;
|
|
1139
1139
|
var init_portalLlm = __esm({
|
|
@@ -1391,6 +1391,7 @@ __export(index_exports, {
|
|
|
1391
1391
|
MEDIUM_TTL_MS: () => MEDIUM_TTL_MS,
|
|
1392
1392
|
MEMORY_KINDS: () => MEMORY_KINDS,
|
|
1393
1393
|
MEMORY_LEVELS: () => MEMORY_LEVELS,
|
|
1394
|
+
MemoryKeyError: () => MemoryKeyError,
|
|
1394
1395
|
MemoryLevelError: () => MemoryLevelError,
|
|
1395
1396
|
NEVER_TTL_MS: () => NEVER_TTL_MS,
|
|
1396
1397
|
NODE_BUDGET: () => NODE_BUDGET,
|
|
@@ -1403,6 +1404,7 @@ __export(index_exports, {
|
|
|
1403
1404
|
RECALL_MAX_LIMIT: () => RECALL_MAX_LIMIT,
|
|
1404
1405
|
RECALL_TOOL_NAME: () => RECALL_TOOL_NAME,
|
|
1405
1406
|
RemoteMemoryError: () => RemoteMemoryError,
|
|
1407
|
+
RemoteMemoryPartialCreateError: () => RemoteMemoryPartialCreateError,
|
|
1406
1408
|
RerankerUnavailableError: () => RerankerUnavailableError,
|
|
1407
1409
|
SDK_SCHEMA_VERSION: () => SDK_SCHEMA_VERSION,
|
|
1408
1410
|
SHORT_TTL_MS: () => SHORT_TTL_MS,
|
|
@@ -1468,6 +1470,7 @@ __export(index_exports, {
|
|
|
1468
1470
|
createRecallTool: () => createRecallTool,
|
|
1469
1471
|
createRemoteMemoryPersistence: () => createRemoteMemoryPersistence,
|
|
1470
1472
|
createRemoteMemoryPipeline: () => createRemoteMemoryPipeline,
|
|
1473
|
+
createRemoteMemoryStore: () => createRemoteMemoryStore,
|
|
1471
1474
|
createStockPricePreProcessor: () => createStockPricePreProcessor,
|
|
1472
1475
|
createStreamingDeAnonymizer: () => createStreamingDeAnonymizer,
|
|
1473
1476
|
createVaultEmbeddingCache: () => createVaultEmbeddingCache,
|
|
@@ -1484,6 +1487,7 @@ __export(index_exports, {
|
|
|
1484
1487
|
deleteVaultMemoryOp: () => deleteVaultMemoryOp,
|
|
1485
1488
|
dequantizeEmbedding: () => dequantizeEmbedding,
|
|
1486
1489
|
deriveKeyFromSignatureBytes: () => deriveKeyFromSignatureBytes,
|
|
1490
|
+
deriveMemoryKeyRing: () => deriveMemoryKeyRing,
|
|
1487
1491
|
discoverNotionOAuthEndpoints: () => discoverNotionOAuthEndpoints,
|
|
1488
1492
|
eagerEmbedContent: () => eagerEmbedContent,
|
|
1489
1493
|
embedAllMessages: () => embedAllMessages,
|
|
@@ -1495,6 +1499,7 @@ __export(index_exports, {
|
|
|
1495
1499
|
extractAndRetain: () => extractAndRetain,
|
|
1496
1500
|
extractEntitiesForMemories: () => extractEntitiesForMemories,
|
|
1497
1501
|
extractFacts: () => extractFacts,
|
|
1502
|
+
extractReservationReceipts: () => extractReservationReceipts,
|
|
1498
1503
|
formatFileProcessingNotes: () => formatFileProcessingNotes,
|
|
1499
1504
|
generateConversationId: () => generateConversationId,
|
|
1500
1505
|
generateEmbedding: () => generateEmbedding,
|
|
@@ -1527,6 +1532,7 @@ __export(index_exports, {
|
|
|
1527
1532
|
isPiiRedactor: () => isPiiRedactor,
|
|
1528
1533
|
isRerankerAvailable: () => isRerankerAvailable,
|
|
1529
1534
|
maskScopedEmbeddingCache: () => maskScopedEmbeddingCache,
|
|
1535
|
+
memoryCipher: () => memoryCipher,
|
|
1530
1536
|
moveMemoriesToFolderOp: () => moveMemoriesToFolderOp,
|
|
1531
1537
|
noopLogger: () => noopLogger,
|
|
1532
1538
|
onKeyAvailable: () => onKeyAvailable,
|
|
@@ -1536,6 +1542,7 @@ __export(index_exports, {
|
|
|
1536
1542
|
queueManager: () => queueManager,
|
|
1537
1543
|
rankProfileCandidates: () => rankProfileCandidates,
|
|
1538
1544
|
recall: () => recall,
|
|
1545
|
+
reencryptMemoryField: () => reencryptMemoryField,
|
|
1539
1546
|
reflect: () => reflect,
|
|
1540
1547
|
refreshEncryptionKeyIfMatches: () => refreshEncryptionKeyIfMatches,
|
|
1541
1548
|
refreshNotionAccessToken: () => refreshNotionAccessToken,
|
|
@@ -3163,8 +3170,8 @@ var ATTACHED_FILES_OPEN_TAG = "<attached_files>";
|
|
|
3163
3170
|
var ATTACHED_FILES_CLOSE_TAG = "</attached_files>";
|
|
3164
3171
|
var ATTACHED_FILES_PREFIX = `${ATTACHED_FILES_OPEN_TAG}
|
|
3165
3172
|
The user attached the following file(s) to this message. Their extracted contents are below; when the user refers to "the attached file", "this file" or "the document", they mean these.`;
|
|
3166
|
-
function isAttachedFilesText(
|
|
3167
|
-
return typeof
|
|
3173
|
+
function isAttachedFilesText(text13) {
|
|
3174
|
+
return typeof text13 === "string" && text13.startsWith(ATTACHED_FILES_PREFIX) && text13.endsWith(ATTACHED_FILES_CLOSE_TAG);
|
|
3168
3175
|
}
|
|
3169
3176
|
function buildAttachedFilesText(fileContext) {
|
|
3170
3177
|
return `${ATTACHED_FILES_PREFIX}
|
|
@@ -3919,14 +3926,14 @@ async function updateMessageEmbeddingOp(ctx, uniqueId, vector, embeddingModel) {
|
|
|
3919
3926
|
});
|
|
3920
3927
|
return messageToStored(message, ctx.walletAddress, ctx.signMessage, ctx.embeddedWalletSigner);
|
|
3921
3928
|
}
|
|
3922
|
-
async function updateMessageChunksOp(ctx, uniqueId,
|
|
3929
|
+
async function updateMessageChunksOp(ctx, uniqueId, chunks2, embeddingModel) {
|
|
3923
3930
|
let message;
|
|
3924
3931
|
try {
|
|
3925
3932
|
message = await ctx.messagesCollection.find(uniqueId);
|
|
3926
3933
|
} catch {
|
|
3927
3934
|
return null;
|
|
3928
3935
|
}
|
|
3929
|
-
const storedChunks =
|
|
3936
|
+
const storedChunks = chunks2.map(({ text: _text, ...rest }) => rest);
|
|
3930
3937
|
await ctx.database.write(async () => {
|
|
3931
3938
|
await message.update((msg) => {
|
|
3932
3939
|
msg._setRaw("chunks", JSON.stringify(storedChunks));
|
|
@@ -3970,12 +3977,12 @@ async function stripLegacyChunkTextOp(ctx) {
|
|
|
3970
3977
|
const messages = await ctx.messagesCollection.query(import_watermelondb2.Q.where("id", import_watermelondb2.Q.oneOf(changedIds))).fetch();
|
|
3971
3978
|
const updates = messages.flatMap((message) => {
|
|
3972
3979
|
const raw = message._raw;
|
|
3973
|
-
const
|
|
3974
|
-
if (!
|
|
3980
|
+
const chunks2 = chunksWithoutText(raw.chunks);
|
|
3981
|
+
if (!chunks2) return [];
|
|
3975
3982
|
const updatedAt = raw.updated_at;
|
|
3976
3983
|
return [
|
|
3977
3984
|
message.prepareUpdate((msg) => {
|
|
3978
|
-
msg._setRaw("chunks", JSON.stringify(
|
|
3985
|
+
msg._setRaw("chunks", JSON.stringify(chunks2));
|
|
3979
3986
|
msg._setRaw("updated_at", updatedAt);
|
|
3980
3987
|
})
|
|
3981
3988
|
];
|
|
@@ -4136,15 +4143,15 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
4136
4143
|
}
|
|
4137
4144
|
continue;
|
|
4138
4145
|
}
|
|
4139
|
-
const
|
|
4140
|
-
if (
|
|
4141
|
-
const vectors =
|
|
4146
|
+
const chunks2 = await readRawJsonField(message, "chunks", ctx.walletAddress);
|
|
4147
|
+
if (chunks2 && chunks2.length > 0) {
|
|
4148
|
+
const vectors = chunks2.map(
|
|
4142
4149
|
(chunk) => decodeChunkVector(chunk.vector, () => {
|
|
4143
4150
|
unreadableVectors++;
|
|
4144
4151
|
})
|
|
4145
4152
|
);
|
|
4146
4153
|
chunkCache?.set(message.id, { version, chunks: vectors });
|
|
4147
|
-
for (let ci = 0; ci <
|
|
4154
|
+
for (let ci = 0; ci < chunks2.length; ci++) {
|
|
4148
4155
|
const vec = vectors[ci];
|
|
4149
4156
|
if (vec.length === 0) continue;
|
|
4150
4157
|
const similarity = cosineSimilarity(queryVector, vec);
|
|
@@ -4152,7 +4159,7 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
4152
4159
|
candidates.push({
|
|
4153
4160
|
message,
|
|
4154
4161
|
similarity,
|
|
4155
|
-
chunkTextSource: { kind: "chunk", chunk:
|
|
4162
|
+
chunkTextSource: { kind: "chunk", chunk: chunks2[ci], siblings: chunks2 }
|
|
4156
4163
|
});
|
|
4157
4164
|
}
|
|
4158
4165
|
}
|
|
@@ -4268,49 +4275,49 @@ init_logger();
|
|
|
4268
4275
|
var DEFAULT_CHUNK_SIZE = 400;
|
|
4269
4276
|
var DEFAULT_CHUNK_OVERLAP = 50;
|
|
4270
4277
|
var DEFAULT_MIN_CHUNK_SIZE = 50;
|
|
4271
|
-
function splitIntoSentences(
|
|
4278
|
+
function splitIntoSentences(text13) {
|
|
4272
4279
|
const sentenceRegex = /[.!?]+[\s"')}\]]*(?=\s|$)/g;
|
|
4273
4280
|
const sentences = [];
|
|
4274
4281
|
let lastIndex = 0;
|
|
4275
4282
|
let match;
|
|
4276
|
-
while ((match = sentenceRegex.exec(
|
|
4283
|
+
while ((match = sentenceRegex.exec(text13)) !== null) {
|
|
4277
4284
|
const endIndex = match.index + match[0].length;
|
|
4278
|
-
const sentence =
|
|
4285
|
+
const sentence = text13.slice(lastIndex, endIndex).trim();
|
|
4279
4286
|
if (sentence) {
|
|
4280
4287
|
sentences.push(sentence);
|
|
4281
4288
|
}
|
|
4282
4289
|
lastIndex = endIndex;
|
|
4283
4290
|
}
|
|
4284
|
-
const remaining =
|
|
4291
|
+
const remaining = text13.slice(lastIndex).trim();
|
|
4285
4292
|
if (remaining) {
|
|
4286
4293
|
sentences.push(remaining);
|
|
4287
4294
|
}
|
|
4288
4295
|
return sentences;
|
|
4289
4296
|
}
|
|
4290
|
-
function chunkText(
|
|
4297
|
+
function chunkText(text13, options) {
|
|
4291
4298
|
const {
|
|
4292
4299
|
chunkSize = DEFAULT_CHUNK_SIZE,
|
|
4293
4300
|
chunkOverlap: requestedOverlap = DEFAULT_CHUNK_OVERLAP,
|
|
4294
4301
|
minChunkSize = DEFAULT_MIN_CHUNK_SIZE
|
|
4295
4302
|
} = options ?? {};
|
|
4296
4303
|
const chunkOverlap = Math.min(requestedOverlap, chunkSize - 1);
|
|
4297
|
-
if (
|
|
4304
|
+
if (text13.length <= chunkSize) {
|
|
4298
4305
|
return [
|
|
4299
4306
|
{
|
|
4300
|
-
text:
|
|
4307
|
+
text: text13.trim(),
|
|
4301
4308
|
startOffset: 0,
|
|
4302
|
-
endOffset:
|
|
4309
|
+
endOffset: text13.length
|
|
4303
4310
|
}
|
|
4304
4311
|
];
|
|
4305
4312
|
}
|
|
4306
|
-
const sentences = splitIntoSentences(
|
|
4307
|
-
const
|
|
4313
|
+
const sentences = splitIntoSentences(text13);
|
|
4314
|
+
const chunks2 = [];
|
|
4308
4315
|
let currentChunkSentences = [];
|
|
4309
4316
|
let currentChunkStart = 0;
|
|
4310
4317
|
let currentOffset = 0;
|
|
4311
4318
|
for (let i = 0; i < sentences.length; i++) {
|
|
4312
4319
|
const sentence = sentences[i];
|
|
4313
|
-
let sentenceStart =
|
|
4320
|
+
let sentenceStart = text13.indexOf(sentence, currentOffset);
|
|
4314
4321
|
if (sentenceStart === -1) {
|
|
4315
4322
|
sentenceStart = currentOffset;
|
|
4316
4323
|
}
|
|
@@ -4318,7 +4325,7 @@ function chunkText(text12, options) {
|
|
|
4318
4325
|
if (sentence.length > chunkSize) {
|
|
4319
4326
|
if (currentChunkSentences.length > 0) {
|
|
4320
4327
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
4321
|
-
|
|
4328
|
+
chunks2.push({
|
|
4322
4329
|
text: chunkText2,
|
|
4323
4330
|
startOffset: currentChunkStart,
|
|
4324
4331
|
endOffset: currentOffset
|
|
@@ -4329,7 +4336,7 @@ function chunkText(text12, options) {
|
|
|
4329
4336
|
const chunkEnd = Math.min(j + chunkSize, sentence.length);
|
|
4330
4337
|
const chunk = sentence.slice(j, chunkEnd);
|
|
4331
4338
|
if (chunk.length >= minChunkSize) {
|
|
4332
|
-
|
|
4339
|
+
chunks2.push({
|
|
4333
4340
|
text: chunk,
|
|
4334
4341
|
startOffset: sentenceStart + j,
|
|
4335
4342
|
endOffset: sentenceStart + chunkEnd
|
|
@@ -4343,7 +4350,7 @@ function chunkText(text12, options) {
|
|
|
4343
4350
|
const currentText = currentChunkSentences.join(" ");
|
|
4344
4351
|
const potentialLength = currentText.length + (currentText ? 1 : 0) + sentence.length;
|
|
4345
4352
|
if (potentialLength > chunkSize && currentChunkSentences.length > 0) {
|
|
4346
|
-
|
|
4353
|
+
chunks2.push({
|
|
4347
4354
|
text: currentText,
|
|
4348
4355
|
startOffset: currentChunkStart,
|
|
4349
4356
|
endOffset: currentOffset
|
|
@@ -4357,7 +4364,7 @@ function chunkText(text12, options) {
|
|
|
4357
4364
|
if (overlapSentences.length > 0) {
|
|
4358
4365
|
currentChunkSentences = [...overlapSentences, sentence];
|
|
4359
4366
|
const overlapText = overlapSentences[0];
|
|
4360
|
-
const overlapStart =
|
|
4367
|
+
const overlapStart = text13.lastIndexOf(overlapText, currentOffset);
|
|
4361
4368
|
currentChunkStart = overlapStart === -1 ? sentenceStart : overlapStart;
|
|
4362
4369
|
} else {
|
|
4363
4370
|
currentChunkSentences = [sentence];
|
|
@@ -4374,26 +4381,26 @@ function chunkText(text12, options) {
|
|
|
4374
4381
|
if (currentChunkSentences.length > 0) {
|
|
4375
4382
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
4376
4383
|
if (chunkText2.length >= minChunkSize) {
|
|
4377
|
-
|
|
4384
|
+
chunks2.push({
|
|
4378
4385
|
text: chunkText2,
|
|
4379
4386
|
startOffset: currentChunkStart,
|
|
4380
|
-
endOffset:
|
|
4387
|
+
endOffset: text13.length
|
|
4381
4388
|
});
|
|
4382
4389
|
}
|
|
4383
4390
|
}
|
|
4384
|
-
if (
|
|
4385
|
-
const trimmedText =
|
|
4391
|
+
if (chunks2.length === 0) {
|
|
4392
|
+
const trimmedText = text13.trim();
|
|
4386
4393
|
if (trimmedText.length > 0) {
|
|
4387
4394
|
return [
|
|
4388
4395
|
{
|
|
4389
4396
|
text: trimmedText,
|
|
4390
4397
|
startOffset: 0,
|
|
4391
|
-
endOffset:
|
|
4398
|
+
endOffset: text13.length
|
|
4392
4399
|
}
|
|
4393
4400
|
];
|
|
4394
4401
|
}
|
|
4395
4402
|
}
|
|
4396
|
-
return
|
|
4403
|
+
return chunks2;
|
|
4397
4404
|
}
|
|
4398
4405
|
function shouldChunkMessage(content, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
4399
4406
|
return content.length > chunkSize;
|
|
@@ -4465,9 +4472,9 @@ function createSseClient({
|
|
|
4465
4472
|
if (done) break;
|
|
4466
4473
|
buffer += value;
|
|
4467
4474
|
buffer = buffer.replace(/\r\n?/g, "\n");
|
|
4468
|
-
const
|
|
4469
|
-
buffer =
|
|
4470
|
-
for (const chunk of
|
|
4475
|
+
const chunks2 = buffer.split("\n\n");
|
|
4476
|
+
buffer = chunks2.pop() ?? "";
|
|
4477
|
+
for (const chunk of chunks2) {
|
|
4471
4478
|
const lines = chunk.split("\n");
|
|
4472
4479
|
const dataLines = [];
|
|
4473
4480
|
let eventName;
|
|
@@ -5080,8 +5087,8 @@ var createClient = (config = {}) => {
|
|
|
5080
5087
|
data = await response[parseAs]();
|
|
5081
5088
|
break;
|
|
5082
5089
|
case "json": {
|
|
5083
|
-
const
|
|
5084
|
-
data =
|
|
5090
|
+
const text13 = await response.text();
|
|
5091
|
+
data = text13 ? JSON.parse(text13) : {};
|
|
5085
5092
|
break;
|
|
5086
5093
|
}
|
|
5087
5094
|
case "stream":
|
|
@@ -5291,16 +5298,16 @@ function embeddingErrorFrom(response) {
|
|
|
5291
5298
|
const message = typeof response.error === "object" && response.error && "error" in response.error ? response.error.error : "API embedding failed";
|
|
5292
5299
|
return new EmbeddingHttpError(message, response.response?.status);
|
|
5293
5300
|
}
|
|
5294
|
-
async function generateEmbedding(
|
|
5301
|
+
async function generateEmbedding(text13, options) {
|
|
5295
5302
|
const total = options.totalTimeoutMs;
|
|
5296
|
-
if (total === void 0) return embedOne(
|
|
5297
|
-
return withDeadline((signal) => embedOne(
|
|
5303
|
+
if (total === void 0) return embedOne(text13, options, void 0);
|
|
5304
|
+
return withDeadline((signal) => embedOne(text13, options, signal), total, "embedding");
|
|
5298
5305
|
}
|
|
5299
|
-
async function embedOne(
|
|
5306
|
+
async function embedOne(text13, options, outer) {
|
|
5300
5307
|
const { baseUrl = BASE_URL, model, cache } = options;
|
|
5301
5308
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
5302
5309
|
if (cache) {
|
|
5303
|
-
const cached = cache.get(
|
|
5310
|
+
const cached = cache.get(text13);
|
|
5304
5311
|
if (cached) return Array.from(cached);
|
|
5305
5312
|
}
|
|
5306
5313
|
const headers = await resolveAuthHeaders(options, outer);
|
|
@@ -5309,7 +5316,7 @@ async function embedOne(text12, options, outer) {
|
|
|
5309
5316
|
(signal) => postApiV1Embeddings({
|
|
5310
5317
|
baseUrl,
|
|
5311
5318
|
body: {
|
|
5312
|
-
input: options.maskInput ? options.maskInput(
|
|
5319
|
+
input: options.maskInput ? options.maskInput(text13) : text13,
|
|
5313
5320
|
model: model ?? DEFAULT_API_EMBEDDING_MODEL
|
|
5314
5321
|
},
|
|
5315
5322
|
headers,
|
|
@@ -5336,7 +5343,7 @@ async function embedOne(text12, options, outer) {
|
|
|
5336
5343
|
}
|
|
5337
5344
|
const f32Embedding = Float32Array.from(embedding);
|
|
5338
5345
|
if (cache) {
|
|
5339
|
-
cache.set(
|
|
5346
|
+
cache.set(text13, f32Embedding);
|
|
5340
5347
|
}
|
|
5341
5348
|
return Array.from(f32Embedding);
|
|
5342
5349
|
}
|
|
@@ -5414,18 +5421,18 @@ async function embedMany(texts, options, outer) {
|
|
|
5414
5421
|
outer
|
|
5415
5422
|
);
|
|
5416
5423
|
} else {
|
|
5417
|
-
const
|
|
5424
|
+
const chunks2 = [];
|
|
5418
5425
|
for (let i = 0; i < uncachedTexts.length; i += chunkSize) {
|
|
5419
|
-
|
|
5426
|
+
chunks2.push(uncachedTexts.slice(i, i + chunkSize));
|
|
5420
5427
|
}
|
|
5421
|
-
const allEmbeddings = new Array(
|
|
5428
|
+
const allEmbeddings = new Array(chunks2.length);
|
|
5422
5429
|
let nextIndex = 0;
|
|
5423
5430
|
const worker = async () => {
|
|
5424
|
-
while (nextIndex <
|
|
5431
|
+
while (nextIndex < chunks2.length) {
|
|
5425
5432
|
if (outer?.aborted) throw outer.reason;
|
|
5426
5433
|
const idx = nextIndex++;
|
|
5427
5434
|
allEmbeddings[idx] = await generateEmbeddingsBatch(
|
|
5428
|
-
|
|
5435
|
+
chunks2[idx],
|
|
5429
5436
|
headers,
|
|
5430
5437
|
baseUrl,
|
|
5431
5438
|
embeddingModel,
|
|
@@ -5437,7 +5444,7 @@ async function embedMany(texts, options, outer) {
|
|
|
5437
5444
|
}
|
|
5438
5445
|
};
|
|
5439
5446
|
const workers = Array.from(
|
|
5440
|
-
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY,
|
|
5447
|
+
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY, chunks2.length) },
|
|
5441
5448
|
() => worker()
|
|
5442
5449
|
);
|
|
5443
5450
|
await Promise.all(workers);
|
|
@@ -5670,10 +5677,10 @@ var cryptoPriceCentroid = [0.025576787463333337, 0.0017598020599999997, -0.01339
|
|
|
5670
5677
|
var noCryptoPriceCentroid = [0.015473095138684206, 0.0031634101517105263, -0.011257569272697374, -0.02186071628118421, 0.008889833600921049, -0.006683160151842105, -0.009353561542368423, 0.01352172231447368, -0.01804750482084211, -0.00367377302894737, -0.02944732364736842, -0.002762284484078947, 0.033265779919736845, -0.006296026233684209, 0.022671929989210516, -0.0011530866775394733, 0.007070449366500001, -0.0050351310097368415, 0.010799295548421052, 8887227547368423e-20, 0.016334833743289468, 0.014258147745263154, 0.009584979092368422, 0.003050773904342107, -0.013426355076315791, 0.03582639014592105, -0.01160198427105263, -0.012974957788421051, -0.0031303864967105266, 0.021372544676315785, -0.02374843410263159, -0.009223416682894739, 0.005602822635394739, 0.02924898819473684, -0.014123551471890794, 0.019027650408421047, -0.005074793619605263, -4600031255263159e-19, 0.010498459563947368, -0.011094227593421054, 0.010249076817105258, -5753623577631579e-19, -0.005674418818421051, -0.00447285064486842, -0.005516097867105263, -0.007470266562368424, -0.005471375803289476, -0.006780112021052632, 0.007059772195657894, 0.0021554959672368413, 0.004705735464473685, -0.02317132775394737, -0.011564555390789474, -0.002422056378552632, -0.006380764081578948, -0.004005146213289473, -0.00794062262769737, 0.01414054164342105, -0.01016237577355263, 0.003978143405131578, -0.03655277326578946, 0.006158242906276315, 0.004217046339078946, -0.008940671309210528, -0.00673433677186842, 0.010728261618421055, 0.005998754786184212, -0.012994214264868421, 0.01220040680802632, -0.010796953655434208, -0.006105011632500001, 0.008011191312894737, 0.006423354985394737, 0.0012142853823684213, 0.009146709284210528, 0.022887410982105266, -0.022682944046052637, -0.020356859009684213, 0.010394592805789476, 0.022593094030263154, -7750265294736841e-19, 0.010491877809868419, -0.00632094335789474, -0.00435166075344737, -0.0033312799659210527, -0.013687921215789472, -0.0021700710893421053, -0.009265354446052636, -0.007450454793684212, -0.01119890545223684, 0.01885215469736842, -0.0016829954880263156, 0.004660542770078946, 0.01614547219013159, 0.0012384379707105267, 0.0012953595593421052, -0.019026688374473685, -0.012046473879210519, -0.01890812402105263, -0.0013315808465131577, 0.011091345418421055, 0.021520818015789468, -0.005630902795947368, -0.0019751528094210527, 0.016361938930000004, -0.006861605829210528, -0.0028363347098684204, 0.008591381667894738, -0.009064190686052631, 0.0019356226038157898, 6169263489473686e-19, 0.005576595939605265, 0.01869662389342105, 0.001262012349342105, -0.005366806441447369, -0.016217105081578947, 0.0016831897417500007, -0.0018950253057894739, -0.002175052982236842, 0.015151523774342104, 0.009984357328157894, -0.008543766583157896, -0.00730858755781579, -0.005671754766447369, 0.016222894231578945, -0.006877592555789474, -0.00339728109881579, 0.002327833744078947, -0.007433236152460526, 0.003641817336996051, -22983315413157884e-20, -0.018579861956578948, -0.002013661149605263, -0.0012221983013157892, -0.005588193124592107, 0.0017740131994736844, -0.005087314752105264, -0.0024032324010526303, -0.021181957791973682, 0.015352973211842105, 0.0014077697809210523, 0.01886358938289474, 0.0034620092081578944, 0.001262707815105263, -0.016702094776315787, 0.0024528663467105263, -0.015399577423684214, 0.013716609889342105, 0.008007916322368419, 17873636657894727e-20, 0.012559814308552636, 0.004152347459210525, -0.007167261042105263, -0.010308009533421052, -0.0118209450956579, 0.0034850848647894755, -0.01689842138618421, 0.02312426354868421, 0.018107834585526318, -0.005113781234210525, 0.0036598878982894733, -0.002219674033289473, 0.010094555771578948, -0.004721280503184208, -4728102780263162e-19, -0.005741379793631579, 0.004688492021052632, -0.009298409537368421, 0.021306954543421058, 0.002625481324473684, 0.0021689222906578947, 0.0016470091790789468, 0.021918357023684207, 0.01859015762499999, 0.008736974258815788, -0.007575892959605263, 0.0012198560669736834, -0.013031221881184206, 0.005416682665447367, 0.014852952819736842, -27517017642368397e-20, 0.01096887469118421, -0.0013455180846052635, 0.022272436745131585, 0.0067934349073684175, 0.012959732387171052, -0.02075517668026316, -0.0064723936585, -0.0038070007211315794, 0.0012372250631578945, 0.0050306169430263175, -0.006763357246763157, -0.006772821312763157, 0.010125664042499998, 0.002038023320000001, 0.011549378190657895, 0.0029378070836842116, 0.010960937982500004, 0.010825824704473684, 0.0021591957962631583, 0.04206184268421052, -0.024262397277631575, 0.008255900677763156, 0.009695903923947372, -0.007390906788684211, -0.008087284358947368, -0.021996855926315787, 0.011287301983684214, -5568711708289474e-19, -0.014932725518421055, 0.009245778972302627, 0.0015213949119210516, 0.009132084528947367, 0.016006044472368423, 0.011636527018026314, 0.006784626309736844, 0.013307319816763155, -0.0027379106158421057, -0.0020452238106578946, -0.004009475287105262, 0.010760948439342109, -0.008745640049473686, -0.003213084865263158, -0.002908590922105263, -0.008224298627236842, -0.01243814725003421, 0.002076089559092105, -0.009891295528947368, 0.002955430833842103, -0.026389982763157894, 0.00307576746013158, -0.019563673766447378, 0.0016621273825, -0.008313485993421054, 0.004804929035789474, -0.00549750888473684, 0.00505214069705263, -0.011755459830263165, -0.0024296008852631576, 0.00875007432236842, -0.008075735610789475, -0.01105359596322368, 0.0039991457536842105, -0.010148718380263164, 0.0025960758788157894, -0.010566656651710528, 0.012436943196578952, -0.016535537697368412, 0.01290098068868421, -0.01656991388736842, -0.007831062019144736, 0.005940865221447369, -9759450793421052e-19, -0.008620581310184207, -0.003005893026447368, -0.002761302409605262, -0.0030793885886842114, -0.006974357054078946, 9721991617105264e-19, 0.010942189804473684, 0.002026653777631579, -0.012401945011578947, 0.0033469499360526318, 0.018924720229473682, -0.005991988553184208, 0.0033316007316315788, -0.015320591599605263, -0.02128828745542763, -0.0022622942237697373, 0.0069056783826315785, 0.004446302767763156, -0.016207595330789474, 11362097776315657e-20, 0.008954130263986842, -0.010221943235789475, 0.014461354018157896, 0.0028590932341973686, -0.010514913011447373, -0.015841919529473683, -0.01389901701263158, -0.009229765706842105, 2461921435526319e-19, 0.020577489130263162, -0.022800926136842106, -0.0015163221825394738, -0.013809464157236842, 0.004897803686315791, 0.018522811494736845, -0.009630460222828948, 0.011984547498157897, 0.0111937101125, 0.015270678807631577, 0.0019252811815789483, 0.014758101361842106, -0.005758524065263159, -0.0021391250729868427, -0.010472078178684207, -0.012900316256973682, -0.0014497102297763157, 0.006431885074342107, -0.003826420850657895, 0.004125123941578948, 7190557013157885e-20, 0.005760016457894736, -0.01029894582407894, -0.014202551836842109, -0.008429392661184212, -0.004542960022631579, 0.004390327258289474, -0.017841332352631578, -0.02092670811578947, -0.011721044171184207, 0.001154552708868421, -0.008358092435263156, -0.009767428120921056, 0.00617505359518421, 0.004506490673552631, 0.0020017606636842113, -0.00796983946092105, 0.020977802086842096, -0.0075353952266447415, -0.007463197555921055, -0.012128650817236842, 0.019736432668421053, 0.002261451146973684, 0.004720614210526316, -0.009998388954473686, -0.005624677788552632, -0.022545385379078953, -0.001583800878381579, -0.002379242887671053, -0.006442413411381578, -0.00695587538394737, 0.0011264698367105268, -0.0045705394853947385, -0.0015821324533815784, 0.023414226677631576, -0.0012724761923684214, 0.023761430540263154, 0.0029503868397894734, -0.0033352330858684217, -0.011512791865657892, 0.00981099949723684, -5708729797368422e-19, 8188937956578947e-19, 0.010694227110197371, 0.008592401465789476, -35825991868421067e-20, -0.004266100294447367, 0.005692018715789475, -0.0033002098638157907, 0.004866896994999999, 0.01000889828684211, 0.006752862654868419, 0.0026472819757499995, -0.005589931472697369, -0.017258877186842114, 0.01836197345605264, 0.003980058679868421, -0.0020851821997368417, -0.006682193140302631, 0.008638199788657895, 0.01154588990657895, -0.0014030509926710529, 0.00623447043604513, 0.016997480921671054, -0.0076195284961842105, 9118090571052634e-19, -0.01740562824342105, 0.001625513271842105, -0.012645379938157893, 0.010188843557894742, -0.012510250708026317, 0.0014163581344342104, 0.007640950823026323, 0.009030281375263157, -6778679552631581e-19, -0.021454867002973686, 0.001957897549473684, 0.001193311223026316, 0.0027351965483684215, -0.05114138984210526, 9931653628947367e-19, -0.0034956210430263156, -0.011831037061315788, 0.010289316701315792, -0.006878016126315793, 0.004890278758947368, 0.005483033461842105, -0.01275958679236842, -0.01331795716276316, 0.003143929424078947, -0.0022857318045394724, 0.007633577711973686, 0.0021747185855263158, 0.005520500721710526, 0.008252045688684212, -0.014708749063026315, -0.010071718517500002, 0.004989717453947367, 0.017077984349605266, -8273659215789473e-19, 0.005120420113328947, 0.007857212020657894, -0.007720276348289473, 0.002462438197763158, -55125038157895184e-21, 0.004356982750105262, -0.00700954478736842, 0.008855195414342104, -0.007593518517105262, 5683125496052636e-19, 0.006104346186842107, 0.0018523006100263158, 0.011868568778421053, 0.008818247002631579, 0.007355409463684211, 0.014110024566184213, -0.004139245012105264, -0.008042714513815788, -0.008814672356447366, 0.010348661143157892, 0.008645756135526317, -0.0039321516707894735, -0.018719250872499996, 0.016164309558789468, 0.011362069608157893, 0.012222493691973682, 0.009424688908947371, -0.00664402617118421, -0.007866664878289475, -0.012993650039078946, -0.018103016852631583, -0.0065906644863157875, 0.004789760346776317, -0.014935053199342104, 0.014902569211842109, 0.004785409491052631, 0.007345346444473684, 0.003159245409736842, 0.01312098370328947, 0.006301784642499999, 0.005022653047368423, -0.002849895648684211, -0.0032933022748421045, 0.004350993063026316, -0.007350343983026319, 0.010007334274736844, -0.0028172315381578953, -0.011997126834394734, -0.005281044011052631, 0.017256082294736845, -0.026231524928157893, 0.001482624986578947, -0.01504677556723684, -0.006961093627631583, -0.009158235009605265, -0.010464971171052636, -0.012205843889473683, 0.013581314933421051, 0.024057515715473682, -0.026571698318421058, -39512425210526327e-20, -0.008364490104342107, 0.01043953546486842, -0.006329244778157894, 0.00677121107763158, -0.006404679137105265, -0.008498417039605265, -0.011997726845921054, -0.00819236379276316, -0.008719842036447368, 2480567830263159e-19, -0.009615319662105265, 0.010179268672105262, 0.010257863497157897, -0.002203600034342105, -0.014915970727368411, 0.010107625643947371, -0.0016536920541710522, -0.006636945585526316, -0.016858044851315784, -0.020209110402631573, -0.007010765250131577, 0.0073754879921052625, 0.019676440628368427, 0.010058316429868416, -0.026224092562236838, -0.010421548158342108, 0.004843649796842105, -0.018334794059605263, 0.007321559153421053, 0.014406508708157897, -0.013035912961381586, 0.008222181527763156, -0.002566978908289474, 0.009497600043981577, -0.0056751013231578955, 0.004298258599210526, -0.00134152910618421, 0.0017198262138157904, -0.00527642314413158, -0.006738037163421052, 8391017913947374e-19, -0.011822055771453949, -0.0023647280209210526, 0.018581314182894736, 0.0013511696361842105, -0.008034561226052629, 0.0050400383831578945, 0.011289238419736843, -0.01018335548486842, -0.008891896734736842, 0.007739089927236841, -0.014787865826578945, -0.017835246043026314, 0.0056641722032894715, -0.0059957612642105255, -0.006282649575526315, 0.016645820401710514, 0.002203326760921053, 0.0022889429653157895, -0.008153908865789473, -0.009116433642894738, 0.014059073972894742, 0.006152197939947369, 0.01395997850157895, -0.012334291357763155, 0.017010570389868414, -0.0063333831828947355, -0.0025206653310921056, 0.006800531193421053, -0.004048019489342104, -0.006107880013157895, -0.011589549206710528, -0.0023016446209210527, 0.018917020458026318, -0.0018317876103026314, 0.007985371543710523, -0.009285482378157892, -0.007067705323684211, 0.011150805990789475, -0.009777598592105264, -0.008635949183289476, -0.004163104284868419, 0.010232138396315793, -0.0019257375613157897, -5739201986842089e-20, 0.013092055408684215, 0.01974871008065789, 0.005587073321842107, 0.025888940701315793, 0.016139226412631578, -0.0011026304183986845, -0.006448130678552632, 0.0013506662108157892, -0.00879462901421053, 0.0067748442927236825, -0.002999273877368421, 5861502590000002e-19, -31988263750131585e-20, -9557692903947368e-19, -0.005667702506315793, -0.006468547942684208, -0.017199129730526317, -0.019429718929210527, -0.003644407856578948, 0.004087335838671054, -0.003677765850855264, 0.007942120783605264, 6586344227631579e-19, -0.0037614600624999986, 0.0055129023461368415, 0.011244061396578945, 0.005010426876315791, 0.0072596023613157885, -0.008378387808157896, 0.01193223011842105, 0.002783704421578947, -0.0018955311381578942, 0.016495522016315784, 0.0010300654348684207, 0.0029166797853947372, 0.0019548181412, 0.0034482197978947357, -0.01597233675447369, -0.004172262047894737, 0.004349557685394737, 0.0057765581432894725, -0.017049438059999998, -0.004525430396052631, -28143429157894773e-20, 0.008926862911842108, -0.01706470510842106, -0.009343251894078945, -0.014551790916315796, 0.0037077234910526317, -0.024520926263157893, 0.005740144142368422, 0.0053956368143421056, -0.005766834186973687, -0.012353098134999999, 0.005150600744473685, -0.002591634655236843, -0.0034600672671052644, 0.020232129807894742, 0.0019706625393421055, -0.021094935969078955, 0.013562589856578945, -0.01982315960263158, 0.0022789787307368413, 0.0030350554696052627, -0.0023380354609868425, 0.0016429701249999996, 0.0013748243807894737, -0.011015212538802624, -0.01045923693026316, -0.010230515132368417, 0.0031865286891710532, 0.019525663493815786, -0.01229977110328947, -0.01392738180263158, 0.0047192255380921035, 0.009634271472381582, -0.0036637588399210516, 0.01367465738263158, -9074315167105264e-19, 0.009034615510460526, -0.013227085239526318, -0.008698134963421054, -0.005679745975289474, 0.016064328626710523, 6854882098684209e-19, -0.02409260117894737, -0.029390496973684222, -8429490286315783e-19, 0.017532396812105267, 0.003992892611842105, -0.015176699562894741, 0.017688143694565794, 0.015704753903289473, -0.006714242723157895, 0.006966373187026316, 0.014712872807894739, 0.0048426642788421065, 0.004560759092499999, 0.014764954930526316, 0.007755880210394735, -0.0063704605949999995, 0.013370230355131577, 0.006058873911578949, -0.007236065584644737, 0.02192650811447368, -0.0036055442649473683, 0.017262371172368424, -0.019675186598421057, 0.012352453031578945, -0.019395975741052625, -0.005476996759473683, -0.003981952255394738, -0.019128493134342103, -0.006420192784736843, 0.00663706127763158, -0.00931713626539474, -0.004438600155394738, -0.0074747220036842105, -3532221511315789e-19, 0.003786715305789473, 0.002143004024210527, -0.013259830103026315, -0.019481669799736843, 0.0063924609735921045, -0.006268689519868423, 0.011194401769210527, 0.014244597600921052, -0.009581357068684208, 0.015704279303947365, 0.002868509497368421, 0.009993456976842102, -0.009288659571184214, -0.00567008211111842, -0.0016774708461842105, -0.015881515857631583, -0.0031357240957894735, 0.009431347011250004, -0.02115866819605263, -0.002224235694342105, 0.016286955564605264, 0.007042988388157893, 0.002287434175, 0.010197640378157893, -0.005280943861578946, 0.0014105266302631581, 8359535263157892e-19, 0.0047502692026315805, 0.013299677349078947, -0.0023519426788157897, -0.004674174603421053, 0.018177119728907887, -0.0014176172173881575, 0.007134867282894738, -22741002690789458e-20, -0.022838398981578946, -0.003212089612105263, 2004287202631577e-19, -0.022176862091973677, -0.020671407409605266, 0.009063825494342106, -0.016635621425526326, -0.008275760027894737, -0.010347646235000002, 0.009041304183157893, 0.0051814241601315794, 0.005795941738552632, -0.006237753602210528, -0.004308292899078948, 0.027939477830263154, 0.0022927221325526313, -0.009122603172894738, -0.012685393528368422, 0.035720136647368415, 3721588992105262e-19, -0.015025574779078942, 0.0087486222525, -0.009074244906710525, -0.01173346431697368, 0.012090590483960533, 0.016366954857105268, 0.011179668721052633, -0.0073358287721842115, -0.007733899611315792, -0.003457529575921053, -0.006236338289078949, 0.005774385420526318, -0.018860930085526313, 0.01522345625828947, -0.012091792738157891, -0.004068704780263158, -0.004178824925921053, -0.013820312269210535, -0.01096366969644737, -0.004025642653947369, -0.024534325314078946, 0.006440052884473688, -0.016726629586052633, -3620708957894737e-19, 0.0047140585557894745, 0.0018035156026315793, 0.0048402487059210535, -0.00438187360013158, -6329667841710535e-19, 0.013023098627184216, -0.0015603331286578957, -0.0015727194086052627, 0.015044479001315789, 0.003913626584973687, -0.011406708371973688, 0.009567988548947368, 0.0048712744065789486, 8060304496052634e-19, -0.0027007557632499997, -0.007984334569848683, 0.0035786119902631594, 0.008549296575394733, 0.013448384334736838, 0.003980597008986842, 0.0027732479433552628, 0.0022548364651710537, 0.01305019627302631, -0.010885881758421052, 0.0046425705302631575, -0.006159144808684208, 0.0016908100748684212, 0.010177649750394735, -0.00148574499868421, -0.007758489989078948, -0.010132687943157893, 0.010328826282539472, -0.007675625043065791, 0.010875474622368417, -10961718381578953e-20, 2469314122368423e-19, 0.01456813955157895, -0.002258910603421052, -0.006317790170921054, 0.008751932444473686, -0.009791627398947367, 0.015247204259210523, 0.010811477365789473, 0.006444553805289473, -0.009046801008342103, 0.0030660862369736833, 0.020425601981842102, 1083259947368725e-21, 0.024182386267499998, -0.017303176044473685, 0.006597084168552631, 0.001865562837526316, 0.001028871313631579, 0.01472760354684211, -0.0075378481717105275, 0.010146784916184209, -0.007357307590657895, 0.015889662872500005, -0.0010280143740789473, 0.008057754063236841, -0.0017568669571052641, -0.004133698758421052, 0.007827215762368422, 0.03512832019999999, -0.00993780903394737, -0.004260993277631579, -0.008866919430526315, -0.012339414527631576, -45847830315789447e-20, 0.00838245042193421, -0.016904068641184215, -0.01032341292509211, -0.0179430145493421, -0.005017911380025, 0.004198584343289474, -0.012134608429342105, 0.02621189465, 0.021764919877236843, -0.0016967839548684218, 0.0064469595144736845, 0.0015113159294999998, 0.01449087951447368, 0.00908490776328947, 0.0021144275999999997, -0.0023710569351315784, -0.012429141851184206, -0.007313173065394735, -0.003165631556907895, -0.005191618546052632, -0.00811820481360526, 0.006263298302894738, -4727746834342098e-19, 0.01215529816414474, 0.005959134763223686, -0.003053097290263157, 0.0022509379385526307, -0.012437947575526312, -0.017363427211052634, -0.0044620109, 0.01702834882368421, -0.0014438623280263164, 0.007209018304078949, -0.005530027731842105, -0.006350269325728949, -1933061736184215e-19, -0.012560664186842102, 0.021907004355263156, -0.00368476647618421, -0.008714235420315792, 0.006064745458157897, 0.004239938750368421, -0.003381502998157895, -0.009450509392500002, 0.021473245165789474, -0.006664313856578946, -0.007727308110131578, 0.01755496648539474, -0.008046387513815787, 0.004243436594473684, -0.0018419240855263163, -0.002696314727236842, 0.00458863617605263, -0.009136615755921052, -0.01227240456026316, 0.007315492906276317, 0.001563661388157895, -0.005130049675394736, -0.002669057950473685, -0.0014561823650000002, -0.005081315489473683, -0.019940945634210522, 0.0020929494719736843, 0.004403723249342103, -0.03075529604868421, -0.008624309510289472, 0.01228930504118421, -0.009409504784473681, 0.0011323868934210513, -5501856157894726e-19, 0.011253276619736843, -0.005881537943934211, -0.009128014259078948, -0.002782203197434212, -0.00439761305381579, 0.018774566821052625, -0.011816556899605264, -0.019359096755263157, -0.009348714950473683, -0.0010719945900657896, 0.010479289703256579, -0.011939962278157891, 0.005665995433736843, 0.006774268349210528, 0.0034390900013157896, -0.008370486944868423, 0.017960268711842104, -0.0040098660762236836, 7006663912157889e-19, 0.0015448419175000006, 0.030164748171052642, -0.013288672209210527, -0.0194342324281579, -0.014333865537368415, -0.0010687613120394742, 0.006369927146184209, -0.02037403711921052, -0.0011595645836842109, 0.012291525279210526, -0.004659846724868422, 0.014351864156447373, 0.004539899117368421, -0.011356260933815792, 0.014434559298684207, 0.003388873248815791, 6091339384210531e-19, 0.009991929092763158, 0.019049285447499998, -0.007336658402000001, 0.01645323191407895, 0.011546428464605267, -0.003781113732894739, 0.01016362579592105, 0.003369438427763157, -0.012699591561842107, -0.027960629820000003, 0.006582685929197369, -0.0014268903726315791, 0.005638759550394738, -0.006515546567039474, -0.004676419364394737, 0.008950068268947365, -0.006762236009210526, 0.010658080675000004, -0.005891587223157895, -0.014665679521842107, -0.013644553504473684, 10368947013157792e-20, -0.007762898519210526, -0.01131838790855263, -0.00988497489276316, -0.0072114894752039445, 0.0027077467686842105, 7480073221052632e-19, 0.001175619631578947, 9005636573684216e-19, -0.017333229999605265, 5094909162236838e-19, 0.012029732047368418, 0.009794908618684218, -0.01157117548918421, -0.009239849182894735, 0.005636658962236845, -0.008340407034210524, -817503516907895e-18, 0.003921638921052632, 0.005545640947368417, 0.014569629413078954, -0.00717244047236842, 0.00835087193605263, -0.008531247800499998, -0.004064330462, 0.008101339765526315, -0.01701503037605263, 0.004955823044473687, -0.0022204531394868425, -0.01208521188631579, -0.002832061093026315, -0.002318643040434209, -0.007110677303947368, 0.001033564958947368, 0.027433827638157895, 0.010220588290263156, -0.007394786349605265, -0.006538531349210523, -0.0022718601860526317, -0.004229559157973685, 0.005938436034868422, 0.01048373804263158, 0.00986031018078947, 0.020336058257894734, 0.004668691585657895, -0.011039444343815792, -0.03195965501315791, 22211712236841965e-20, 0.004621380856581578, -0.0032872489723684223, 0.0022427985402631574, 0.009466410571710526, 0.017591113605263154, -0.004106379021052631, 0.006385616363748682, -0.0040017953515789455, 0.0012984135143552632, -0.0013681684519605262, 0.006150785983582896, 0.02349364751052632, -0.003507428290921053, -0.023245202525000005, 0.0073350322506578955, -0.012751762621973684, -0.009509772432105263, -0.011624634206315787, 0.008383111918289473, 0.008738430290394734, -0.0019306551646052629, 0.004987825924447366, 0.0067051984610657905, 0.010962145944078953, -0.006160766227763156, -0.01599381954276316, -0.005996254381473684, 0.013413042621052635, -0.016699554863157894, -0.00425797138263158, -0.002346582932368421, -0.003454997969210526, 0.015414278531447364, 0.0020144495526315796, 0.004778662968414474, 0.019607659189473686, -36090899996052645e-20, -0.008492139364605267, 0.007747498233499999, -0.0013514066389473686, -0.013021238629802628, 0.02135893455000001, 0.0050934569453947335, -0.005380931788039476, 0.0034462612061184213, 0.002471601183026315, 0.0018443146213815793, -0.005110344829342106, -0.014184218227105262, -0.0043937764976315795, -0.004010257807763158, 0.007609986475131577, -0.0017383072384999994, -0.008765348437499997, 0.006436899067289473, -0.005252098280921053, 0.0012666882906842106, 7271012838815791e-19, -0.012168801171973687, -0.006950649873815789, 0.006179354461447367, 0.008584705725921056, 6826743815789457e-20, 0.005478510884342106, -0.001656087406842105, 0.004353472659210527, -0.007852758323026314, 0.00774670264888684, -0.004548253065789474, -0.00872336939763158, 0.007497302493421052, -0.003937119212631579, 0.005084670148232898, -0.006804365856578951, -0.004160022079342104, -8716827518421054e-19, -0.0018917191575000003, -0.04542618686578948, -7962240394736886e-20, 0.005303945623421051, -0.0010489784114473685, 0.0040561710610526325, -0.005575023273947369, -0.014307941818026318, -0.005483095651842106, -0.0036865826026315804, -0.007326996465921051, -0.007258892687710523, -0.017002108826973682, 0.0026596006468421053, 0.007241479605526319, -0.006855145818736838, -0.007547068765263157, -0.011135433282763159, 0.015574704355921056, 0.015176253521052627, -0.006872319883815792, 0.0017937790452631581, 0.0012157494165789468, 0.007882637975789471, 0.003405427387894736, -0.004297595478375, 0.017864616917368424, 0.0030970381859210523, -0.0023354204692105267, 0.0017386867781578944, 0.02049815361294737, -0.00913410340657895, 0.01556748598855263, 0.0014741332142105261, 0.00888697265651316, -0.008259757955789475, 0.010162209150921054, -0.015258628212236844, 0.007913002543421052, 5999896474736846e-19, 0.010361211858157896, -0.005668571334210528, 0.009625429015263158, -0.0104467670125, 82077470868421e-17, -0.0016111464500000003, 0.011819657311842107, -0.010997043170815787, 0.026556267275000003, 0.006691072826710528, 0.020695954338157893, 0.003105390495, 0.007586750871802631, -0.006386726654605265, -0.02003319237539473, 4345854440394738e-19, -0.008994508450263157, -0.026183591028947364, -0.002199864392631578, -0.0028300363084210523, 0.008933973642105263, -0.004872168878026316, -0.010508434657894736, -0.030814126236842106, 0.003977499332947367, 0.003367798314605263, -0.008800812126184209, 0.03421133572763158, 0.036882231234210514, -0.009774976162894739, 0.014867376786052633, 0.01847335194828948, 0.004703114508157895, 0.004981278706842106, -20820300881578947e-20, 0.0023825047832894738, -0.006051949050131578, 0.005748253940526316, -0.048717287638157886, 0.006936276815973685, -0.00717120160088158, -0.0011371543828947368, -633878522763158e-18, -0.009472156436842108, 0.004011299037763159, -6579590755328946e-19, 0.006974676819078946, -0.005393841788815792, -0.004757979923842104, -0.0033050710856578945, 0.011350404267631583, -0.007076194413157896, 0.0017202756382894743, 0.012773173556842102, 0.0030848825621578946, 0.0027823394973684207, -0.00670719708276316, 0.005835784166710526, 0.006515324253026317, 0.008066022838947366, 0.001960170838894737, 0.0051619980871052615, 0.0026211382473684216, -5182459471052627e-19, -0.0027954785167105234, -0.004234536522631581, -0.009315601918947366, 0.008809953131578951, -6880571447368561e-21, -7682047319210527e-19, -4287664078947533e-21, -0.008450649188421052, -0.0035262061703947374, 0.012014457226315788, 0.00802163259636842, -0.014263569363815795, -0.001529443673157895, 0.0038201108919736853, -0.0021061006564999994, -0.006485662478921053, -4953983351315789e-19, -39382826565789427e-20, 0.0028122849150000006, -0.012065431929342112, -0.004557107439381579, -0.004202265546447372, -0.006648211306315786, -0.0026814599381578944, -0.004716990799535528, 0.011677914061486841, 0.0054311442510526315, -0.009687709625394739, -0.00401446957026316, 21303643315789461e-20, -0.004548820044210527, 0.001488740388592105, -0.008498280648552632, -0.009067142177105258, -0.001475207605789474, 0.003382969827236843, -0.003364108026184211, -0.015231927833026314, -25714068360526294e-20, -0.009678724665486842, 21494394868420982e-20, 0.0069928910540789455, -0.009154249508157892, -0.014927330287236848, -0.04244073076315791, -0.009253368699736841, -0.007564927833815789, -0.006217242748684212, -0.007667895968815788, 0.012352994166578951, 0.005073167429381579, -0.005000820531315791, -0.01045439083394737, 0.0015025571015789476, 0.0064443839557894724, -0.007921140097105263, 0.01298356292368421, 0.022927954959605267, -0.005738576246052634, 0.01002808020881579, -0.0017933789327631581, -0.0036308607342026324, 0.007852910432894737, 0.008723654298289477, 0.005285313737631579, 0.013029228591842109, 0.0033245363744736855, -0.00546107157763158, -0.01238937413552632, -0.014016715163947365, -0.00480338421131579, -0.017565224993223685, -0.0010297757147368421, 0.0190754480131579, -0.016528817848684218, -1554027478552634e-19, -0.0033909335259210555, -0.02275056143078949, -0.012455294898723683, -4695065194736842e-19, -0.019497075148026316, 29407749652631535e-20, -0.004932486893276316, 800515078947368e-20, -0.019466739034210534, 0.0011483287201315788, -0.006102988706842104, 0.004115763767592106, 0.004177756370252632, -0.002618433127763157, -0.00537044665544737, -0.011829460742671057, 0.00692578045657895, 0.006913495407763157, -0.0012394369451315791, 0.004177181062190789, -0.004855147448592105, -0.009354103443947366, 0.008475817234342108, -0.0060853426540789495, 0.017770833389999994, 0.010468942911184213, -0.006522560685973683, -0.015092426563342105, 0.008636236548684206, 0.004441229959605264, 0.005320611943289475, -9800074276184207e-19, -0.010191143523026322, -0.007796377074999998, 0.005595688935526317, -0.0016283605736842112, -0.012121330430263163, 0.008727131922578948, 0.002284515743368422, 0.002682018403026316, 0.02112667354078947, -0.013087226411842108, 0.011961740068421057, -0.0029621327447368426, -0.00711086599605263, -7157445806315789e-19, 0.00296389472118421, -0.002106245437236842, -2060961381578952e-19, -0.0023762942430657894, 0.0067748971048684214, 0.02305358949394737, 0.024209113952105267, -0.0010323672338157883, 5835666469736843e-19, 0.0011928865788157893, -0.013926641433421053, -0.0010454462015131592, -0.008992499685921052, 0.005833304399473685, 0.007247240086842105, 0.007005285494078946, 0.00532119499868421, -0.002409817022763158, -0.009118484332407894, 0.00902553582131579, 0.003644393953815789, -0.001458669926578947, -0.007759722557236839, -0.015974711869276317, 0.005593415395263159, -0.00699891096894737, 0.013671992413157898, 0.0030071592296052633, -0.00725996611631579, 0.00831834310973684, 15080351578947707e-21, 0.010492338298289472, -0.011587350163157897, 0.007662332826842105, 0.008755792813026311, 0.007074787369210524, 0.01825972633684211, 0.005628270758078947, 0.013933462579342108, 4695127519736841e-19, -0.016538577678947376, 0.013688757842105262, -0.00958296806763158, -0.01084689514210526, 0.004655695267894736, 0.002764839804828948, -0.008966435890710524, 0.01818742012328948, -0.002021167613421053, 0.011088005707894739, -0.003949641440789475, 0.016206056167105264, -0.018271099290000006, 0.012128778174342108, 0.016409871427894733, -0.005132905442789474, 0.013977325583552627, 0.0027061513397368423, -0.030432116805263153, 0.009202131592500001, -0.005219011863552631, -0.02768622942105263, 0.005146511143078947, 0.016741514684210528, 0.008617631309868421, 0.001446558946578948, -0.010973319831578945, -0.002393318402447369, 0.0025146223098815794, 0.002058704305, 0.009670727197499998, 0.006972026925486846, 0.007941592818026316, 0.006313998498157896, 0.004550358204605262, 0.019503475739868426, -0.00808706035526316, 0.0014521665658289477, 0.008814657770526316, -0.0034991419792894736, 0.001152647225789473, 0.0035165233944736848, -0.008015521834605265, 0.0030662299349999986, -0.008316208095789476, 0.0018460274468421055, 0.010874037769736845, 0.0019301458946052628, 0.014981398493289479, 0.0063040013951315785, 0.0011182811667105259, -0.001531185306381579, 0.007286755069710524, 0.007252432990381575, 0.005447569480263158, 0.005672717215565791, -0.011183678003684212, 0.0010281094409210528, 0.0037040489348026313, -0.018558228386052637, -0.0024118456417105264, 0.001912976863157895, 0.004824422551335526, -0.007085397379605263, 0.010146420386052636, -0.012797370635526323, 0.005280684883421054, -0.007430231397421052, 0.0012657216987105263, -0.003414122816315788, -0.001953577547894738, 0.004944337450526315, -0.009499839262763153, -0.007726497248157897, 0.02043591631578946, 0.005235241476657896, -0.016428867193421043, -0.02316521289473684, -5283661032894735e-19, 0.0039097042727631575, -33895851092105274e-20, 0.01083217157236842, -7426432255263161e-19, -0.00391929611618421, -0.007359749506882893, -0.0035571319606578938, 0.012559667453289472, 0.0058923027007894745, 0.015785403049999997, -0.013460644672368413, 8476099292105275e-19, -0.0033159500932236833, 0.008975023673552632, -0.01474813875868421, 0.01023825899394737, -0.01589566984736842, -7458934167105253e-19, 0.015296658677631575, 0.008350472782171053, -0.01303794148592105, 0.009825855495394734, -0.0031653390423157907, -0.0023992715984210533, 0.012867784544868418, -0.007730846508157893, -0.008233608065789473, -0.00578186875105263, 7660654657894731e-19, 0.007309484258749999, -0.004728002686184211, 0.024414807685526316, 0.07103057530263161, 138350805131579e-18, -0.0227730847868421, -0.002000239483157895, -2523412961842105e-19, 0.0036002593248947363, -0.00960461145763158, -0.014719047412763165, -0.010525172183026317, -0.008946292160657896, -0.00487614558486842, -0.015348885583552638, 0.005484280077631576, 0.0047399032012368425, -0.011332118468552635, 0.018375535672368423, 0.0028248364129736837, 0.002669773003710525, -0.013733811623947365, -0.012085463925657897, -0.005202895044802634, 0.0011071545386052636, 0.002822448957105263, -0.005775769501039475, -0.007958374655000005, -0.012961527270999999, 0.008736424775394736, 0.001623934084342105, -0.0029857376405, 0.006539750386447366, -921088730657895e-18, 0.01011317570105263, 0.004816758724236842, 0.01006797531394737, -0.024919923669736846, -0.013252434965131578, 0.004975805359868419, 0.0028436151710394737, 0.026767861371052633, 0.01679312495263158, 0.0029180558214473695, -0.01334025122631579, 0.006395531258157895, 0.012167909879868426, 0.0010437845743947376, 0.015899900866315795, -0.015891970886315786, -0.007016795418947369, 0.005720414304868421, 0.014279509605394737, 0.011842180225789475, 0.012174502878815788, -0.004032991572842103, -0.01191846249868421, 0.006569720230394738, -0.007758679420881577, 0.008243021787499999, -0.0056768207752631574, -0.010259304986710528, -0.005975154729605264, 0.022218811560526314, -0.01284212495, -0.0043886743385526325, -0.007587261113289475, -0.00100997453736842, 0.007466683218736842, 0.0017474622250000002, 0.011411024255263157, 0.007287669592105263, -0.011071793518989473, -0.007791523718026317, 0.0024424171717105266, 0.010883432589473684, 0.017893625253684212, 0.008674725273447368, 0.00948412372276316, 0.004439929401005265, -0.012966921410526314, -0.009952035897894734, -0.009481836221250003, 6631337719736842e-19, 0.013784739155921056, 0.01274559315868421, 0.015312255263157895, 0.014739994169736837, 0.001961665102973683, 0.016666361813815787, -0.01601210714707894, -0.003862630162710527, 0.0017456178976315803, 0.002383359211842105, 0.005658344708289475, 0.02028012731447368, 0.0038586854298289478, -0.003930425682236844, 0.005947570116842103, 0.006645788041973682, 0.00593962558863158, -0.0055098527475, -2709300878947366e-19, -0.02526451096052632, 0.0034957235959210526, -0.004797192927499998, 0.010852291108092103, -0.0024250138515789464, -0.008193180311052631, -0.006060304734868421, -0.005015898619736843, 0.009915213199078949, 0.0049576433317105265, 13137401934210517e-20, -0.011906290325000004, 0.005487915484868421, -0.0026353010490789476, -0.006053524171552631, -0.01679510672763158, 0.0019228737013157898, 0.01702610227171053, 0.007407213732763154, 0.001119691041315789, -0.0041095490676315806, -8301038464210527e-19, 0.0033998062114736845, 0.010597575788947365, 0.014257269136842107, 0.007372944618421052, -0.0035281079432894734, -0.017203723107131575, 0.004068165850842105, 0.00382046129631579, -0.011138788382368418, 0.01527541427763158, 0.01094105444394737, 0.003186118735263158, -0.011153858221842101, -0.001682062516447369, 1102902368421087e-20, -0.007634609815394738, -0.0024121695576315794, -0.004676494936184211, -0.004374885159342105, -0.004125291510394737, 8512605788947367e-19, -0.015911860113236847, -0.01630071632578947, 0.0075893821925000025, 0.016570409282894737, -0.0028060973136842106, -0.010812139536144735, -0.0035154795997368424, -0.007599472084868421, -0.0027118450077763152, 0.003790211149736841, -0.0016624428627631574, -0.006025105557500002, -0.00271212489868421, 0.004819238931578948, -2838972343421054e-19, 0.008508885079999997, 0.0037412741409736843, 0.003480958837938158, 0.01989113539539474, -0.007170555643552633, 0.007131082274999999, -0.00324891509618421, 0.017624990426578946, -0.008696587564605262, 0.009625076661710525, -0.003385572580052631, -0.0011940798148684204, 0.013382737070394736, -0.0019341717852631578, 0.014078404609210527, 0.006157531654513156, -0.00436843442881579, 0.010804814319078945, 0.016877812977368414, -0.004866282633157894, -0.004019908407105263, -0.008622002943026319, -0.001156913919736843, 0.00860937810460526, 0.00854736410960526, 0.006645876394210526, 0.006044397847105263, -0.0029129494269078955, 0.005728795454605264, 0.003868690374868421, 14415561068421056e-20, -0.011550837929210526, 0.0024273528732894744, 0.01675736555552631, 0.008618001551842105, -0.009086696278947369, -0.0019255664260000005, 0.017823474286842108, 0.023852092268289476, 0.005640211945657894, -0.0157103212696579, 0.002671248446973685, 5732126974736841e-19, -0.003747782739723685, -0.015167234880263156, -7942613815789339e-21, 20631670931578946e-20, 0.005739634929078944, 0.008089517185263155, -0.005618019369960528, -0.004716671923026316, 0.002440650008157895, -0.013887452536578948, 0.010245098745394738, 0.011824351372763156, -0.005547870031710528, -16388543065789472e-20, -0.0074466632465789466, 0.00498810127631579, 0.015039879665789478, -0.0040669246943421085, -0.005869341766447369, -0.024218201709868412, 0.001695024713552631, -0.005041553392631579, -0.00783228454736842, -0.005132145636842107, 579431247268421e-18, 0.0026811771932894746, -0.007146641212236844, -0.008457516277105264, -0.015692255188223682, 0.024690377132894726, 20765250613157882e-20, -0.0020539644646052624, -0.005768370673684211, 0.003702322850921053, 0.004201434479473683, 0.0028723328136842103, -0.014360589550263161, 0.003967806877105263, 0.004476002342671051, 0.004944308020131578, -0.01157276546618421, -0.009082047036973684, 0.0036693403972368425, 0.009826728072236843, 0.0074656336861842094, -6485088782894734e-19, -0.0014051343403289473, 0.007369758026842101, -0.010425479788289477, 0.01821328323157895, -0.012023113507986844, 0.001740522146710527, 0.005332594062894738, -0.001378770888421052, -0.015753834223815794, 0.0076369660996052635, -0.014926969834157896, 0.0038507784668157883, -0.0041886614165, 0.005354455710657894, -9931518065789487e-20, -0.002756159138157895, 0.014061157835657897, -13951124842105257e-20, -0.013132667226578947, -0.0019348305806052633, -0.009907254651973684, 0.009314450074276314, -0.006995864365000003, -0.004312180836447369, 0.004297729036710528, 0.0047553823486842116, -0.00931211325394737, 0.021702308997368424, 0.007112765311718424, -0.008150883757249996, -0.0015760545419210529, -16017972894736844e-20, 0.0012709232195131578, 0.008913342906302628, -0.009902096786842104, 0.03158665600926315, -0.0043072190056578944, 0.007661704021052634, 0.004888625593815791, 0.003962992540921054, 0.004328961708421054, -0.0062252458030263155, -0.0073411886288157905, -0.002077252053605263, -0.011778288789210526, -0.00824901193289474, -0.0036174059680000002, 0.008596170780328946, -0.007529505605394737, 0.00450591202768421, -0.016162284833421053, -0.006285099551315791, 0.01741020744342105, -0.004753392869697369, 0.004862889815131579, 0.008373598259, 0.007595550645657895, -0.007107993389473689, -0.008475462659473682, 5595674320263158e-19, -0.0034365798056578915, -0.016078184318421052, -0.010819015256052633, -0.0018932811597368428, -0.0060824286468421015, 0.009014217587631579, -0.005298673378684211, 0.0020203203051710524, 0.0023555486237763156, -0.011414600681763159, -0.029000318375131576, 0.012605560375, -0.015203555485526316, 0.013647403227894738, -0.008804857755526316, 0.008642128292289471, -7019206473684211e-19, 0.028421054261842115, 0.010750185311184211, 0.004273382298328947, 0.014962174191052634, -0.0091029727825, 0.004545577043947365, -0.005067943168815789, -0.008576309225131579, -0.009371516520921051, -0.003953041012539474, 0.0026335486594868413, 0.0010443595075789475, -0.006137380078947367, -0.019068207819210526, -0.0066171946843947395, 0.0154603859943421, -0.03956156613026316, -0.005423286051376317, 0.0064764647446052615, 0.017917068601973684, 0.018834929819078944, -0.023795076729473678, -0.005232680938421053, 0.007063256785526317, -0.002471332747368421, -0.005540072479078948, 0.0030247992273684196, -0.041372428210526314, -0.022792676082894738, 0.01496056775592105, 7162006171052637e-20, -0.0054049346089473675, -5917285729473686e-19, -0.006140541838736841, 0.01165498020263158, 7520184688157894e-19, -0.004048719246052633, -0.004093513149078948, 0.001113782621578947, -0.00515289844513158, -0.014532121503749999, -0.005462963103684211, 0.002013934241710526, 0.006934004597374998, 0.011849665684605267, -0.02845128821973684, -0.0027645604678947374, -0.029641802678947365, 0.005846543234157898, 0.004001273209868421, 0.009660376192697369, -0.01431830397552632, -0.0034636234957236833, -0.015780388346842117, -0.0061515257567105255, 0.011677517784078944, 0.011294756013947365, 0.009406988080263162, 0.02362260060394736, 0.006315555671052633, -0.00983715779947368, -0.012793336953947368, -0.010380582411513158, -0.005019749015, 0.004049450225131579, 0.017717702139473684, 0.012014558753947363, -0.004216072575789474, 0.012309840076065792, 0.003926167156578947, -0.011685566748684212, -25353602302631577e-22, -0.005299348902368422, 0.007730379013289471, -0.0027699679941184216, -0.0069104686293421065, -0.002654266115921053, -0.012859640121842106, -0.0107146154105921, 0.004399860249078947, -0.006205988169868421, -0.002287691709381579, 0.0022477117532631575, -0.011032372216710525, 0.0038386147140789476, 0.017001313835526322, 0.003409522446052632, 0.0038818556153947365, 0.0010723420983289483, 0.007902039610460527, 0.0023776093863157894, -0.006922669011657895, -0.012493596986842102, 5051128443421054e-19, -0.003519559938197369, 0.009428645297631578, -0.0010605874422368415, -0.008557814389473686, -7813989881578948e-19, -0.008372406573684214, 9731762513157829e-20, -0.008460361298552634, -0.0022174336363157904, -0.008624776876973684, 11917679249999991e-20, 0.006416730669828947, 0.008520198330263157, 0.012873614050657895, 0.011955042275394739, 0.01041146601725, -0.007033908750526316, -0.0016643551606578938, -0.011975207748157898, -0.010176406554210527, 0.0046722559355434215, -0.019248556189473687, 0.012035626013513158, 0.005876074411052633, 0.0023601008795000006, 0.0017393916595131586, -0.006760177633552631, 0.0037472353740789477, 0.08577118239473684, -0.004266319282368422, -0.0071308153913157875, 0.002913963492236842, -0.011218220720921051, 0.0016349006751315786, -0.0019050253921052633, -0.003319563322894737, -0.004499976557500002, 0.009833074842368417, 0.007605858973947369, 0.005772069280921054, -5503060188947367e-19, 0.013013069021578944, -0.0034565342047368423, -0.01143237421848684, 0.01110795669013158, -987561984539474e-18, -0.006423849459473684, 0.00217356449263158, 0.0010567873492894734, 0.014532239263815788, 0.010447370052631582, -0.00759626205513158, -0.0022266032110526313, -0.008538287243881578, -0.01131031077157895, -0.015313536264473682, 0.005158005157763159, 0.0030549536626315785, 0.004764115755657894, -0.012034718590789474, -0.006626763940263157, 0.009110119795921048, -0.002301413071921053, 0.015578638884210528, -0.005167726482500001, 0.02117604996315789, 0.008285337067996052, -0.007844231455157892, -0.01983585482868422, 0.008469638907236843, 3119132776315813e-20, -0.001960619750092105, -0.0174250582075, 0.0024971948229210532, -0.009844892709210526, -0.00997894878157895, 0.008923550396710523, -0.015006534729868421, 0.010365114785526321, -0.01453934758578947, -0.003352099966710527, 7359328694736843e-19, -0.010912618383552628, 0.00553644026263158, -0.0020364845940789474, 0.01638792804421053, -0.002702654283236842, 8317131059210523e-19, -0.0062164165, 0.01416901248881579, -0.001157289313026316, 0.0015120998847368426, 0.018197012598026318, 0.018230856374999993, 0.0013759326027105259, -0.0022414605464473685, 0.010594263889473684, 0.0032048177697368407, 0.0015967663478421053, 0.005898981746447367, 0.0026566908555921056, 0.007526576979868416, 0.006680355165921054, -0.010573069984868419, -0.0037745313918421054, 0.005754974540473685, 0.008721350822763157, -0.004220488521921052, 0.007543852856315786, 0.002001725290789474, 3765012028947365e-19, -0.005974376834473688, -0.007132448870578947, -0.008149476120263158, 0.020858640447368428, -0.0026150683706578945, 0.0025981752977631586, 0.011055772810526318, 0.006417484732236842, 0.02127346352631579, -0.010789793555, 0.0018354179835526315, 0.01635032267421053, -0.00914016103246053, 0.00721719150447368, -0.011749975486184212, 0.007983058785, -0.0025599285438157905, -0.02525250945921052, 0.016565419086578947, -0.0049727678667105275, 0.016954254666710526, 0.0072252290184210526, 0.00663506177881579, -0.016708790731052633, -0.019179279734736834, 0.0036575822153815793, -0.0036278681642105243, 9362055535526312e-19, 0.003667399366578948, -0.005599063442105262, -0.001710235229973684, -0.0020441094883684213, 0.008895651518289471, 0.011197020705263155, -0.0096675727705921, 0.0048109815131578935, -0.009713690278157895, -6161499026315836e-20, 0.013903376549342109, -0.0037505515171052627, -0.004402282192631579, -0.00803135064986842, -0.0022901599207236834, 0.0028172990298684225, 0.005441962186973684, 0.008157506930394737, -0.005246615045631578, 0.0017373259923157893, -0.011001224905657895, 0.0012983470696052632, -0.01309617162052632, 5287650694736846e-19, -0.012678124126447364, -0.004449979991315788, 0.013012943638552632, 0.002311609178421053, 0.00852208751355263, -0.0021326908651973695, 0.006498695877500001, -0.012073736925131582, 0.010822192646592104, 0.004732820625263159, -0.003690172558684211, -0.009818942454868423, -0.00727969328513158, -0.01263686636618421, -0.003183486671921052, -0.009880075140921055, 0.002198814761578948, 0.013470662695263156, 0.00607287450868421, -6002962989999996e-19, 0.008114174997552634, 0.011275753842105262, -0.005673379224736841, 0.0031662297654605257, 0.0028777117961842117, 0.008016936837894739, 0.0017901154897368426, -0.006646555544013159, -0.008096424208289474, -0.006122036452894737, -0.0057617752151315794, 0.0011516110418421056, 0.0033034063114473684, 0.001144898634342105, 0.015016336455263162, -0.005089427256578948, 0.011095485811210526, -0.01487947794381579, 2754231664473685e-19, 0.01434458742828948, 0.004142680879736844, -0.008173420285131577, 0.009047083722894741, 0.006638912060921054, -0.010928462396842106, 0.005584001594493421, -0.006758851203157896, 0.012239943157835526, 7178325472368416e-19, 0.004164529241644737, 0.006919659793157895, 0.0018766501502631577, 0.005851904381052632, 0.01649575659144737, 0.018543284467894737, -0.004570943860131577, -0.014199454217763158, -0.004522597645789472, 0.01323128955736842, 0.009430725228289473, 4302028357894734e-19, 0.014124286351315792, 0.0014682764307894735, 0.014347456733684217, -0.004273947661315787, -0.005397340513289473, 0.004777006242105263, 0.0014340101824815783, 0.004214361838684211, 0.004253698227473684, -0.005495129646250002, -0.004944426877631579, 0.001132264872631579, -0.025759664019736846, 0.01343974873236842, 0.007074848766842105, -0.017592669572894747, 0.0017375639004473685, 0.015513802537763154, -976651714342105e-18, 0.006099546812236844, 0.009297965083289474, -0.006545829302368422, 0.002187739041315791, 0.003335506018026315, 0.0021257748652631593, 0.007083832225526319, -0.00821666152184211, 0.008502307442157893, -0.0012726394867368417, 0.003975927348552632, 0.005120596614473684, 0.005579327967368418, -0.0076789852039473696, -0.021034838578947373, 0.007545610900131577, 0.011339017010394737, 0.01220300189605263, 0.012834558334486842, 23943841328947444e-20, -0.012060543739868423, -9013390900000001e-19, -0.007001447220394739, 0.001807072239342103, -0.007920413789473684, -0.014183284144078948, 0.0032435898167105224, 0.007661070786578948, -0.009576734622368422, -24735532930263165e-20, -3279625464473687e-19, 0.00592114891631579, -0.0031360228920394744, -0.004423669705131578, -0.006236715882473684, -0.01428929095, 0.0012041522547368432, 0.009992463885789478, 0.014660581713355257, -0.012100258024789475, -0.0041604909128947366, -0.0022737396475000005, -0.005318546005078945, -0.0019765347979631576, 0.001943228074394737, 0.01009488755486842, 0.006165831676578947, 0.0018300388325000001, -18122561157894723e-20, -0.020566950382894744, -0.006887413951872369, 0.004043231116447368, 0.014405956009276313, -0.004649199056078947, 0.016667253566842104, -0.012720103426315793, -0.004804016313157894, -4011695289473683e-19, 0.004846170921052631, -0.0016384565850263162, 0.017794608296052634, -0.007291804857605264, 5409149652631579e-19, -0.005412328068421052, 0.014002738125526317, 0.007782216855789474, 0.03379361171052632, -0.0037693036657894725, 0.006207439997131578, 0.011665550201763155, -0.002727257783815789, 0.006404820097236843, -0.007757448749342103, 0.00321114124381579, -0.005974114834342104, -0.017798501374999998, 0.008996167303710525, 0.004107372101447368, 0.007539583035263157, -0.0014233594372368415, 0.00381117836013158, 0.008256078101842102, -0.0018291068210526304, 0.0019358302312894743, -0.010674378317894738, 0.0065658293554078945, -0.007450003366710528, 0.004437219244605264, -0.024618154752631582, -0.015038326359078957, -0.00463826566381579, 0.007930537400131579, 0.004519121789078946, -21704581684210515e-20, -0.007922356677894737, -0.011271936131578942, 0.006213316302368421, -0.001811201335361843, -0.06298805399342101, -0.003931348754999999, -0.002375323733289475, 0.006955065128421053, 0.011551465797368423, 0.005049561330973682, -0.004226440632631578, 0.001415731466381579, -13998377784210452e-20, -0.0011909930659210531, -0.002045448113026316, -7439456209210522e-19, 0.008089150971763161, -0.007385254353552632, 0.0017794121346052629, -0.0021466796694736847, -0.007901907795526318, -0.006739856069736841, -0.0031380352994736845, 0.0076046099585000025, -0.011527594351315795, -0.0020396639011052635, 0.001525548389342105, -0.006094216933684211, -0.0014722651828947364, -4518903077631577e-19, 0.007140101749473689, -0.011676537059210524, -0.019966328755921053, -0.0024167389288157906, -0.008110973655078945, -0.010138389487328942, 0.004652459228947369, 0.003344180307855263, -0.00269698604401316, -0.006219439502236842, -0.012621290809263159, -0.010441855874605261, -0.001525004825868421, 3106502772368417e-19, -0.02632054453157896, 0.014578032460263153, -0.004134980474473683, 11510845465789741e-21, 0.0062397942408684215, -0.0063305206980263165, -0.0032845915709868406, -0.011880825206578951, -0.004127339640789471, -0.005412744576842107, 5791435789473685e-19, -0.005604593690263158, 0.01140999920789474, -0.0035105268881578944, -0.005644377784736843, 3777405411052633e-19, 0.006655294573118422, 0.012310034789868423, -0.012314680914342105, -0.004660671697236843, 0.019227642512499997, 0.012370556660526312, 0.0018540437435131578, 2843068044736842e-19, 0.0029149404551315795, 0.001349117293078947, 0.004231145650921054, 0.005014896011447368, 0.0030759806921052636, 0.002634996195394737, -0.02146838184355263, -0.023354627235526327, 0.007463801508881578, -0.044740355858815806, 16885995480789474e-21, 0.0018187605642105266, -0.0028608081773684206, -0.019586663092236847, -0.005291358396439473, -9306446955263162e-19, 9336062423026312e-19, 0.00640387573013158, -0.05765600515921052, -0.0010193050008289466, 0.0029813614198157894, 0.0017824373404078948, -0.006496215178552631, 0.024087691802631577, -0.010348639678947369, 503021751973684e-18, -0.009403571023947366, 0.012732326389460522, -0.005403565589605263, 10905120605263125e-20, -0.008504000929605262, 0.006370600620263157, 0.018242643109210525, 0.009379113575526317, -0.01214825572302631, -0.0015711109278947369, -0.0020749150806842107, 0.0051656843653947355, -0.015150247375526317, 0.0034633881215789457, -0.0023204803727631573, 0.0013554988172368421, -0.00916673603631579, -1386599248684208e-19, -0.011236653686842102, 0.01057515615355263, 0.0038270946907894747, 0.0032054099676315792, -718647992236842e-18, -8057763245394725e-19, -0.004644138220394738, 5584668676973688e-19, 0.004134472640657893, 0.003242992475139473, 0.004408569986710524, 0.006886769568421052, 0.0022040188868421057, 0.004717420271184211, -0.010944220514868425, -0.01496134418960526, -0.004904572456118423, -0.0029349479123026317, 5269890798684209e-19, -0.018642433568684214, -0.0014636822255263157, -0.0032874282358578933, -0.005220993034210527, -0.001006430675144737, 9930258057894734e-19, 0.01337606780197368, 0.009240478431184211, -0.01117918292618421, 0.015037270521710534, 0.00705424925763158, 0.004022910573421053, 0.004511536920394735, 7300990415789472e-19, 0.0025198337564868423, 0.004174408284605264, -0.006822327408157894, -0.012508884771973679, 0.0018977242146052643, 0.00169175941868421, 0.00914618583809211, 0.00616711017276316, -0.016066297167105267, -0.007600618392368421, -5936514901315801e-19, 0.009191851769736843, -0.01048495533644737, 0.0039003314751315785, 0.010082093744078946, -0.02150961690736843, -0.003076141387631579, 0.01795051239210526, -0.0016097397646052626, 0.006738568165394737, -0.01008712938552631, -0.0023239680332894736, -0.0023542645427631586, -0.007415254536973685, -0.0017370888950000002, -2142969864736847e-19, -0.0019526079594736842, 0.004812759554289475, -0.003177666265657895, -0.010193668303157894, -0.008950753272763155, -0.012276084238157898, -0.013801354708684207, 0.013260181611973685, 0.005137841782236843, -0.005623419413947369, 0.002380635332763157, 0.020261579571842093, 0.0025086264638157895, 23285078407894738e-20, -0.013896984565526316, -0.002813308350394737, 0.006464827561842104, -0.0017387912031578952, -0.009293710947368423, -0.002234433483973683, 0.0029236971019736837, -7009606947368418e-19, 0.004321338025526315, 0.011410774383157896, 0.0019641712277631575, -0.0032173488855263156, -9017514617105258e-19, 0.02536431413421052, -0.0036204208476315796, -0.0045066121440394714, 0.007895695332842106, 0.01375771906894737, 0.0016665629351973685, -0.009256044322434214, -0.010135795456671053, 0.008737079069078947, 0.0034428967317105263, -0.010638219975263161, -0.004573688986184211, -0.008506904400102367, 0.0025543856753947364, 0.004874314954210525, 0.010396809270921051, -0.0018452750817105265, 0.01090056822052632, 0.02098761590078947, 0.009814058689144733, -0.0029276505494736844, -0.010893099969697373, 0.01975842706710526, -0.010948870352592106, 0.0058412445308815815, 0.015515693848684214, 0.0020952677422368424, 0.008907295886842106, 0.00873527318223684, -0.006631097216973685, -0.01977647116223684, 0.010740387438947363, 0.008736050202499998, -6532119030263152e-19, -8522597289473685e-19, 0.007881729391184214, 0.007262564786315789, 0.009642556828684206, 0.009887033669644734, -0.00506204858236842, 0.00914667588671053, -0.005646160281184208, 0.0015682480643947365, 0.007187644667573682, -6413499337828947e-19, 0.0014132899411842103, 0.0017755321165263149, -0.007160940067000004, 0.012367878591973682, 22851084263157844e-20, -0.006308410619078947, -0.0015791580263157898, 0.00442315712593421, -0.006452675031118422, -0.009020969568421053, -0.011030041889539469, -8780194159210523e-19, 9627984798684214e-19, 0.00363151196994737, 0.02183342311710526, 0.02024013596973684, -0.012353824388684213, -764319970657895e-18, 0.002105059234210527, -0.0014566305570592104, 0.002706323287631579, 0.00607090862407895, -0.009545597578157896, -0.004247753485894737, -0.0176261248381579, -0.0031491103884210524, -0.003108941359539473, 0.015593445543815788, -0.04427306710881578, -0.0020792380994736847, 0.011489951907105264, 0.006966976375342106, 0.0015082572486578947, 0.007737702031710525, -0.00655683788473684, 0.007863643000657894, 0.002917634675013158, -0.004152638770789473, 0.005619210159473683, 0.005586618189342104, 0.010026886728421051, -0.004179918709473686, -0.005501686800131579, -0.00604261921421053, -0.0071300491338157895, 0.014459129589473686, -0.0037379425788157897, -0.0020940462386842117, -0.00957774127394737, -0.03357854765131578, 0.025668219275000004, 0.022622876078947373, 0.0022629713582894718, -0.0026858775323684216, -0.0017051095038157894, 0.003815842962894737, -3828872972368422e-19, 0.0026066615468157894, 0.012387053006578948, -0.006318214374868418, -0.007521578666315793, -0.01284997625631579, 0.012826012949078947, 0.0010223195625, -0.011615881295131579, 0.0022139161670263153, -0.002016348744078947, -0.0028064120447368417, -0.015572008834210525, -0.0019618904405263164, 0.00544554776289474, 0.009761993845921054, -0.012984902144736842, -0.014145811457894734, -0.008978529723144736, 0.004056017691315789, -0.011844596710394733, -0.0059587758225, 0.007508870492105264, -0.005443937433289474, 0.002935879441578947, 0.01486225123960526, -0.005532202826052629, 0.005462015192631581, -0.02565744589868421, -0.008383098813815791, 0.003647495577368422, 5357671111842098e-19, 0.01166961910486842, -0.006377186925131579, 0.0127008994825, -0.009436918356578944, 0.0020323967420921053, -0.008456428355526319, -2027747211842104e-19, -0.0030937144914473694, -0.011085721413078948, -0.009645654179210527, -0.014846991478947372, -0.0035684288476315797, -0.011654160063684214, -0.01581150187026316, -0.016840036789473687, 0.013057866414473684, -0.008234539141578947, 0.0053163960105263195, 0.020490004785526317, -0.00960410656486842, -0.006657243668236841, 0.010736420357105264, -0.01748494961973684, 0.0011016242359736844, 0.005718755139868422, 0.006338006613157893, 0.0038684128078947367, 0.005595157857631579, 0.017694987824210535, 0.017391755352355258, -0.003702699658552634, -0.005022188236513158, 0.01342638474771316, -0.0043205563098684206, -0.0028454328957894745, 2592531746052632e-19, -0.004767219290789473, 0.013560908384539477, 0.005906873550263159, -0.009617733145394736, 0.003591151950263157, 0.005010814367368423, 0.0012510964286842107, 0.0028993149072368417, -0.0051906266312368434, 0.00729437020368421, -0.012531499855657886, 0.020476676778750005, -0.009869155927894734, 0.0025973456112368416, -0.021903372915789476, 0.008153542140921052, -0.006835870289605262, -0.010486773017592106, 0.017626112727631586, -0.004606312977368421, -0.014957404596052633, 0.0020897874979618424, -0.004724369788980265, 0.021548606073684213, -0.0019029721914473681, 0.006200722453289475, -0.003450824262276317, -0.006826156169210524, -0.010176031075657897, 0.024789349911842107, 0.003143936896315789, -0.004955119694078948, 9158874664473686e-19, 0.0052856249526315804, 0.01390172287763158, 0.004978571828947366, -0.0032051206281578947, -0.007972612475236842, -0.007769723397631579, -0.00202725623381579, -0.003416697538776315, -0.002556709217407894, 0.0184408019, -0.01105052606855263, -0.014664148855789474, 0.003882449320657895, -0.012429670850921054, 0.013084466028552635, -0.04336451231578946, 0.0074979511960526326, -0.001663643616907895, 0.008059816289473682, -0.011445970542105267, -0.004167850928697367, -0.003230411173657895, 0.02097656965710526, -0.011578596098421053, 0.012013696860657893, 0.001233423443421052, -0.002649905661144737, -0.00883562393153947, 0.0015486095338157892, -0.010413099061842105, 0.013987708639236847, -0.0038697919174999996, 0.006219689598421055, 0.006652394345230264, -0.005381284718815789, -0.0037626181478947387, 0.01059816618401315, 0.003220842913421052, 0.0035804951468421044, 0.010183990906447369, -0.009547694365789472, 7697464371184215e-19, -0.011326520949342108, 0.036538593302236834, 9323258973684188e-20, -0.008973688185921053, 0.00706366331381579, 0.001107784416394737, -4910452642105268e-19, -6440596276315794e-19, -0.0036792987653684202, 0.003713873318157893, -0.004735835042960525, -9658112065789478e-19, -0.043979574686842084, -0.0016790318328947353, 9925788503157894e-19, 0.018722528654473682, -0.0021518665293421054, 0.0035296605411842103, 1413653897368415e-19, -0.017016988203947366, 0.004561038191973685, 0.015442165966184201, -0.007485759814473685, -0.017065918415000002, 0.009342482221710524, -0.0020734458669736835, -0.002520825664789474, -0.021231756026315784, -0.010013884122368423, 0.009265903680263157, 0.008139276791052632, -5609036057894738e-19, 0.015773905215697364, -0.001884182508960525, -0.0024270794468947356, -0.00422654353631579, 0.006008762833684209, -0.003698271740263158, 0.016081907390789473, 0.030718033629736848, -0.007108369866842106, 0.00527163336881579, -9271790684210529e-19, 0.0068789392490789456, -0.013093138075605264, -0.012924308120526315, 0.00556886656968421, 0.0033076618509210527, 0.0017935490473684217, -0.008094466807394738, -0.01079597931, 0.01151358625263158, 0.00893792486236842, 0.010344446836842108, -0.00719051074644737, 0.00572758606, 0.004846286956973685, 0.00814658403092105, -0.0010492790623684207, 0.0049120969460526315, -0.01486755767197368, 0.004852195027565792, -0.007043126832710525, 0.005356651270263156, -0.0035065615885723684, -0.005829078253026317, 0.025083412392631576, 0.0015541765726315804, -0.013320558341842105, -0.027978110792105267, -0.004866113275657896, 0.009822611491184208, -0.004338714495526316, 0.028622747207894733, 0.0056140354747368434, -0.012210432556184212, 0.0033045029190263164, -19000230480263145e-20, -0.0034141616881578937, -0.004623406075394737, 0.006392982858421052, 0.01835209741710526, 0.01747985185131579, 0.004233065692460527, 0.01626176455263158, 0.0032433631718421056, -0.011749469372421053, -0.012891163621052632, -0.01571628433157894, 0.002652207523026316, 0.004507458543026318, -0.01775668739868421, -0.03493414880657894, -0.016362935907894737, 7675142188157897e-19, 0.010285956762684217, -0.0014735680384210526, 0.011252831868552636, 9547897207894737e-19, 0.006510753468289477, 0.005189211297763158, -0.013117319414473682, 0.003801194065131578, -0.008176472670263162, -0.008538372863026316, 0.02108607474342105, 0.0037161164223684204, -0.004774306337894736, -0.0077946213527631605, 0.0024585640678947366, -0.012176232483421057, -0.012235060736184205, 0.001400212257894737, 0.0027084579294736843, 0.0068722990685526324, 0.013335502111842099, -0.005830226586052632, 0.011873504235263161, -0.013693625648026312, -0.010449696567302632, 0.011044927082500003, 0.015400494224552629, -0.009381916401355262, 0.006673642672368421, -0.0018263740446052626, -0.0021770728546052624, 0.016361497218421055, -0.01863254121315789, -0.003530500149210525, -0.03730359020723685, -0.004191118148289474, -0.0045071628236842114, 0.015596569568947373, 0.004240642962276315, -0.002759536991368422, 0.005148003131355265, -0.0069468455677631595, 0.012819585946447368, -0.003170211528815789, 0.01752115107447369, 0.009766708002105265, 0.01720768516973684, -0.01617324446578948, 0.012112183639473681, -0.021386946318421057, -19106013060526326e-20, 0.006491905236710525, 0.012694083912631583, -0.012121427248552632, 0.007453259151052631, -0.005300583340657895, -0.0034357232692105253, -0.008234549374210526, -0.0049134867761842105, -0.011864055638157895, -0.00727513381118421, -0.006225588572394736, -0.014474562209210527, -1696423735526317e-19, -0.009927942404210525, 0.005164234018026316, 0.0017515462315789469, 0.0015904607235526311, 0.007963644751578946, 0.012216724002631584, -0.009501306335068424, -0.003338244066407896, -0.013702270143026316, 3177477896842107e-19, -0.004519560832171056, 0.002465137685263159, 0.0021053644855789483, 0.01910074195263158, 0.012031324014473682, -0.0018186422331578943, 0.005212327788421051, -0.004785163042710527, 0.0021153964885526322, -0.00444928972188158, -0.0035029865, 0.0075856674897368396, -0.016637170858460525, -0.0049104649688157895, 0.004211803076513158, -8546719754210526e-19, -0.005023115469473685, 0.0029476111911842105, 0.002885427894921053, 0.004207519965584211, -0.0045995042944736875, 0.003015317669210526, -0.003959649376578948, -0.001799221694921052, -0.010122554486973682, -0.004602558039210528, 0.0013513901315789464, 3764912463157896e-19, 0.008489159527105262, 0.014707852295131572, 0.002345036650789474, -0.0032689961036842102, 0.04255329955263159, -0.014716855848684204, 0.008619987162236838, 0.008365918811578948, -0.005013759794736842, 0.004195959585499997, -0.008992120611710525, -0.009782703207236846, -0.0022335605896052625, 0.01287937127763158, -0.015554637754473693, 0.008397985909605265, 0.002251561622499998, -0.010050093168815789, 0.008956767632171053, 0.013687852065394742, 0.013600534268289477, 0.004365934441315789, -0.0030305592554868413, -0.00781057913469737, -0.004966902079605262, 0.01856187427644737, -0.0025631659986842118, 0.004677612719921054, 10226186131578904e-20, -0.014421684380263157, 0.016739205349605258, 0.0050146044172894744, 0.011911084407631578, -0.002687138399210526, 0.00960758048539474, -0.002726553521315789, -2118536161842109e-19, 0.013187813793947371, 0.009969895463026316, 0.006658861126052631, -0.0018322755946052636, -0.0017487937331578944, -0.011101524417894743, -0.032939431818421065, 0.01520578899605263, 0.0015081202571052632, -0.005066026860486843, 493556515986842e-18, 0.004060829064605263, -0.005561150131894735, 0.010997560033026309, 0.004095647503947369, 0.012622729288684204, -0.004958941837157896, 0.006538527521447367, -0.0010266161943421049, -0.004851542462973687, 0.0016268616459210535, 0.008403855759605262, -0.005476859455, -0.00812804427618421, 0.007041481924657892, 8838693684210528e-20, 0.00597193902618421, -0.00842409854263158, 0.0024697172419736856, 0.005663838686578944, 0.0036075020965789487, -0.0023292463477631578, -0.0032376719465789477, 0.021101475338026313, 26567486563157904e-20, 0.016493054231184204, -0.002458445587631579, 0.0010258956694736841, 0.00225805411368421, 0.0031990768135526323, 0.006263685490526316, -0.004572679283552632, 0.009529538310526317, -0.011298854067368422, -0.010216326432368422, -0.01634466709473685, -0.014281002560460524, 2702401223684224e-20, 0.005255444044671053, -5290619164473683e-19, 0.020079138140789477, -0.0017828449621052637, -0.012192540535789468, -0.007199579816184209, -0.00116835002625, 0.00958368675736842, 0.007733851895789477, 0.007963292808289474, 0.025216065143421052, 0.004103331857894736, 0.0030591781828947368, -0.009872114714473685, -0.004663548545, 0.004991833832105262, -0.006863926871710525, 0.001242838931578947, 0.020425079027802634, 0.012370465663815786, -0.012126274007894736, 0.010670443024473687, -0.01464566428460526, -0.0038673775906710524, 41958086710526394e-21, 0.01994244099210526, 0.015357990706842106, 0.0063989385026315794, -0.018309239200000004, 0.006747877917368419, -0.017506960167236837, 0.005670401942631581, -0.010581732321578946, 0.0011620065078947373, 0.012163235759210531, 0.006399715106223681, -0.006113071873210528, -0.0028651888345789466, 0.002149627898157895, -0.012140688709210527, -0.010713522528947373, 0.02737408816710527, 0.017518066717105266, -0.005137931570986841, 0.003589904351447368, 0.0010994190049210533, -0.004798525595026317, -4554749059210497e-20, -6981043210526358e-20, 0.017134092135131583, 0.012083527265789476, -0.049615527359210515, 0.005816751165736842, 0.01857131190000001, 0.02351225466336842, 0.01219104790131579, -0.0010487995125921048, -0.0044726659714473685, -0.001028941063157895, -0.005443464117499998, -0.00634262967868421, 0.010381099005263152, 0.001703392962105263, -0.009139037917894735, 0.009512460323684208, 0.008586436496315792, -0.025455710537105262, -0.009792295319078947, -7742059002744737e-19, 0.018877256644736842, 0.038857334956578955, 0.003912381590921053, -0.008361733056842105, 0.016590833038421057, -0.005869556491710525, 0.009990736888552633, 38346460510526274e-20, -0.016626637246578948, -0.012364668933289474, 0.0018547245361842113, 0.006512999228605265, -0.001085481154868421, -0.009963445404999997, 0.004301809971973684, 3661409990131576e-19, -4224867659394737e-19, 48160601578947393e-20, -0.007223044006763162, -0.026113254673289465, -0.0013004677222368422, -0.0017831314044736836, 0.01561539529144738, -0.0066719939618421036, -0.00877529002351316, 0.006605579253289475, 0.005603149853552632, -0.007193712031578948, -0.0016247132320263158, -0.012534181940394738, 0.017229109368421053, 0.00245370861631579, -0.006031722248552632, 0.0031117475930263158, 0.0043886369376315805, -0.0024453895729249996, 0.00690473798328947, 40740072210526353e-20, -0.0031424490643421057, 0.019926203121315794, 0.012182200482894739, 0.008118145491578951, -0.005559053631315788, -27164370357368446e-20, -0.003351124758092105, 0.005957678860368421, -0.008513101869473681, 0.007304541067499999, 0.019957336234210518, -0.0030209489469736834, 0.004469626572763158, 0.012090736671578948, 0.01514115723331579, 0.0042360726635526326, -0.010162506523684207, -0.002649304801184211, -0.007750173208749997, 0.0019587431771447374, -0.027095424518421053, 0.0066075871005263145, 0.00536601891631579, -0.0010357673420394737, -0.003466868494342106, 0.014316960686578954, 0.0023369776231578956, -0.0053653818119210545, -0.007858214859999999, -0.013146294391315785, -0.0018566735342105262, -0.009514895538421051, -0.0036132000074342112, 0.0034368430490789486, -8554010195394731e-19, -0.0032387031372368437, 0.00244777456131579, -0.006286163061842106, 0.011771267721710532, 0.023035620363157896, -0.0043442739443421054, -0.009922730226315792, -0.004276738937499999, -0.0035189323507894745, 0.0039030267724473704, 0.014395429023592102, -0.0012053757906578947, -2897619489473682e-19, 0.007045867771144736, 0.007517767199210526, 0.007418771915644738, 0.010169157498289476, 0.00706302323276316, 0.013311043676250002, 0.003038169512894737, 0.0033463043809210517, 0.001753204881197368, -0.0074550630986842115, -0.03247426388684211, -0.014712809272763156, -0.01257650307744737, -0.005583758863815789, -0.010988394333684212, -0.01094829823105263, 0.014527793146184208, -0.01726736960019736, -0.0011412191313157898, -0.003875160005921052, 0.0054491025328289484, 0.00764098283223684, -0.01397128377631579, 0.020156240986078953, -0.018178711318157893, 0.007760771186842106, -0.012693300230263159, 0.0034562666953947383, 0.017623470872368423, 0.01328646389205263, 0.006033057996184212, 0.0021477171030263157, 0.004209592630394737, 0.022607883206578958, 45995770960526315e-20, 0.004256902114473686, 0.007727120836526311, -0.011495399911315795, -0.006097572578026317, -0.003288532194342106, 23524967355263143e-20, -0.01843602415421052, -0.006332212189999999, -0.007104603521578947, -0.006046406687763155, 0.0031444280434210527, 0.011026709301315791, 0.007965343235657892, -7478460321052628e-19, 0.010399411723157894, -0.003222595633552633, 0.0013722621246052631, -9306063203684211e-19, -0.008244672536447365, 0.010224801592763153, 0.011236862973157893, 0.002438936607828946, -0.0011834995152631578, -0.007761896696973684, -0.006536142010526313, -0.004305835025789474, -0.006375306423552633, 0.002894340127526317, -0.007056530478157897, -0.006344087711473684, 0.012371267300526317, -0.008661172924210528, 0.016608231906578945, 0.006209598555605264, -0.0049610081385394736, -0.006289596580421053, -0.008653004873157896, 0.006589724684342105, 0.0042221396663157905, -0.024205309596052636, -0.007927559016842107, -0.0036796517148684213, -0.010860645916842101, -0.001776141146973683, -0.0066375001164473675, 0.002395305515921052, -0.014593319744736844, 0.00733454749668421, 0.0019130213015789476, -0.02945044170131579, 0.0021041659146052625, -0.002779561371539474, -0.020078335207894735, 0.003642550809710527, 5936502644736846e-19, 0.00325616999868421, 0.017399437181578953, -0.06370752007631578, -0.003701780296631579, 0.007564594753552632, -0.00405948423839737, 0.0015840840405263162, 0.005836310675263158, -0.012381032086315788, -0.004665367583947368, -0.0010173959317894734, 0.005156387308802632, -0.0165339495006579, 734178938157895e-18, 0.024508261125789473, 0.01724277075526316, 0.008913617889078948, 0.018123411353289477, 0.019972735151315802, -0.015223236485526315, -0.011504417352105265, 0.010046699026184209, -0.009774468743421052, 0.014051472367763159, -799595632236844e-19, 0.015914003425263158, -0.010235261282894738, -0.012426796318973685, -0.00529559477105263, 0.0032275154818421047, -0.012022474961184216, 0.004842165463157897, -0.012777494966842105, 0.007940708949736842, -0.010386868507894734, -0.012277893373289472, -0.01469461501513158, 6472758955460526e-19, 0.011309826192631581, 0.0014896182946052632, -0.0018290806492105261, 0.004781091154078948, 0.009413893570921053, 0.00916419533118421, -0.002920155307368421, -0.004322433785789473, 0.010922147476842106, -9692939010657897e-19, -0.00471161965105263, 0.0022456688428947364, -0.01511019358289474, 0.01469485253026316, -0.0034939871920921027, 0.005169176186973684, -0.004767383189802632, -0.004363123971710525, 0.008160435356184211, 0.008593854647631578, -0.014373928093157892, 0.012998453866184211, 0.012818183890921054, -0.0012967544054736846, 0.018860078121447365, 0.011299536434868421, 0.010162780092499995, 0.010768595093881578, 0.006929429669736845, -0.009301306071052631, -0.001229964434210526, 0.022915811622105268, 0.005473494591263157, 0.01684595049736842, 0.0068085582832894745, -0.009735548395394736, -0.008009809031052632, 0.00818278650394737, -0.00514607482631579, -0.0017882432596052638, -0.003795041893157895, -0.0028177598829473675, -0.009401223562894738, -0.015638386469736837, -0.013144470036842108, -0.0025362829124999987, -0.015570190517552634, 0.0072135779351315795, -0.0033293784007894737, 0.0033921677573684203, 0.0171126722368421, -0.016200724738157896, 0.002023070578552632, -0.005874176478421054, -0.007982894414539473, -0.01305297109342105, 0.013835959466144737, -0.007678114530657894, 0.0016565042665789473, -0.0029898593556578947, 0.018475673282499997, -0.004774599107368421, -0.01045985660768421, 5002329298684213e-19, 455613157105266e-19, 0.012770474667763154, 0.0036531933109210527, -0.006355904673157896, -0.00323254957336842, -28950164197368423e-20, -0.0016983754679473682, -6461348456578951e-19, 0.011579839645394736, 3174967802632419e-21, -0.009248690072105265, 0.010413905775572371, 0.00742944108473684, 0.00453180122631579, 0.01615883042802631, -0.0032757992935526312, -0.0038371938214394738, -0.002908959269342105, 0.009208926093951316, -0.0014955339189473683, -0.013758465006973683, -0.0063294295475, -0.005727852496578948, -0.005272904527105263, -0.001316834533684211, -0.01645172019144737, -0.007092707085578947, -0.003522257189605263, -0.013505265605263156, -0.011881032946052632, 0.011369551982828954, 44452595263157905e-21, -0.006352405066578949, 0.0052995613325, 0.009505844287763156, -0.006053228503013156, 0.006845024962368421, -0.011510292038552633, -0.0032177408799999997, -0.004505434028289475, 0.004123595264342105, 0.006593527555000002, -0.011078657794605259, -0.014011584826078945, 0.0029858133488157895, 4344722920789474e-19, 0.008640971361973684, 0.006481291948157893, -0.005891967694342105, 0.008448872632763157, 0.016859102106052633, 0.0014603208068421055, 0.005249472965605262, -0.00686901125013158, -0.010637044371578948, 0.011924648195789474, -0.0058005032065789495, 0.015501499024999997, -0.006453810105921054, -0.002997035320473683, 0.018575800172368425, -0.008515451444736838, 0.012462028264473679, -0.003774380357539475, -0.0019450062711842105, 0.00391133496173684, 0.004730433910526316, -0.001315982468776316, 3232796018157894e-19, -0.0066704201258026286, 0.00680665693223684, -39029438710526344e-20, 0.005489703965131578, 0.008671756791842107, -0.012851425032368417, 0.003147755206052631, 0.0026194010623684216, -0.007664137591973682, -0.011883636635, 0.004133208043763159, -8303924315789413e-20, 0.003270837395131579, -0.005892774992763157, 0.012238801593815785, 0.006942355931973683, 0.02878469881921053, 9479045131578946e-19, 0.0017351399474736847, 0.008778382914078947, 0.0010939997295263163, 0.0030465893436842097, 0.014783142862368417, 0.01642540962717105, 0.0036857923714473675, -0.015363344993026315, 0.009919231350263158, -0.011551756493421059, 0.0023134715465394744, 0.011385295549473687, 0.013802586752105264, -0.01116167753921053, -0.003641126586684211, -0.013648889441184206, 0.014234762527368418, 0.002806655006105263, -0.013499138960736849, 0.005006243019473683, 0.015739427460526312, -0.0027175753445131574, -0.010932971389473686, -0.010770135974552631, 890700216526316e-18, -0.012623942286842103, 0.016124839350000003, -0.002831514939934211, 0.012697006429342104, -0.007019076696973686, -0.006475317798065787, 0.007137869946052634, 0.006031961175105265, -0.00705848445763158, 0.0033737443014210527, -2768167815789512e-20, 0.017694467707894734, 0.006258390639605262, -0.002385706069394737, 0.003583886412894737, -7993168968421051e-19, -0.01620972400113158, 0.01370171146118421, 0.00461520679318421, -7547631113157896e-19, 0.002939954357631579, -0.006845462558289473, 0.007328082212763157, 0.007676322326467105, 0.004349595261973684, 0.015829044343197374, -0.00368448221881579, 5303418106447364e-19, 0.0026827215614473685, -0.008580460431710527, 0.005024989097499999, -0.003635687485394737, 0.002272944439315789, -0.006124602738289472, -0.016172138838026325, 0.015377584130394738, 0.010782426606184206, -0.021383269930657894, 0.005706450336052631, 0.0018523320315789475, 3522892494736843e-19, 0.004350316041157894, 0.005934959479144734, 0.01708160452131579, -0.007678650551447369, -0.0033582777418421053, -0.017157569269684224, 0.007354085403947371, 8351606031578944e-19, -0.005335390844342104, -0.002535301282368421, 0.014636234615921057, 0.004858749898355263, 0.007662922150526313, -0.0016256868378026308, 0.01556731267368421, -0.005104593538289476, -0.019748377389473677, -0.013980995652631582, 0.00946453539263158, -0.008415238208421055, -0.011370187082631577, -0.024026692542368423, -0.028569824043500013, -0.004478069888947369, 0.0031515005953947363, -0.002700122834605264, 0.00815917739855658, -0.00445320840494737, 0.006830579967631578, -0.006684497927105263, 0.010432664122105263, -0.014661140320368424, -0.006587801074605265, 0.007357709939078946, -0.005931698591973684, -7732484365789474e-19, -0.002239530471052632, 0.007788843097894735, 0.0064669147390789454, -0.0030537573617631575, 0.017894125887236843, 0.014577202200000002, 0.0015132674616710532, -0.0057732834064473685, -0.0027821142750131585, -0.01908095769276315, 0.009781772397894737, 0.009500178334210524, -0.08152622444736843, 0.008212754039473679, -0.01767476994144737, 0.0026395801725000003, 0.0014657673559210526, 0.007638076904605263, 0.004058115665973685, 0.0035145148113157896, -0.011827003826315791, -0.0027065570113157895, 0.0023756798456578943, 0.008448311618421052, 0.017983404865789466, 0.016279126637631577, -0.0012591387876315795, -0.01015563660263158, -0.007210258607868422, 5225580767105262e-19, 0.008399898934210526, 0.005169876301250003, -0.0054817867677631575, 0.004851883672052633, 8781897375131572e-19, -0.004407749175657896, -0.0037234890038684225, 0.010837226267236846, -0.008299530855789473, 0.012997853572105266, -0.017374133039473685, 0.01771941214802632, -0.010850383854999996, -0.0025922976049605273, -0.005014948546052633, 0.001572493777631579, -0.009683719784736844, 0.003544048853289474, -0.005399044507894736, 0.0019298673893421046, 0.008562550747213162, 0.007685438104276315, 9653876659736838e-19, 0.006209795067934209, -0.007815720736421053, 0.01339235502684211, -0.014595927550000002, -0.001961306322894736, 0.01755357029118421, 0.009892284107105262, -0.004357266436710526, -0.024933551971052636, -0.008265622360263156, 46308488684210446e-21, 0.008073451047105263, -0.006002720232921055, 0.00960784907105263, -0.008960232250921057, 0.009452138660526316, -1669984473684197e-19, 0.006347901398026315, 0.006253983917105261, -0.001933425444473684, -0.010605378191710526, 0.0017956876511842107, 0.010316846388552634, -0.006851734682407896, 0.017523879366710526, -0.003045540768026316, 0.021021487419736837, -0.00978115143263158, 0.007848767184210523, 0.008862482220921052, -0.01242224652736842, 0.0013790572871052633, 0.014478706237421052, -0.008613721365578947, 8338612144736844e-19, 0.003780419830131578, 0.00346602358868421, 0.01269026605723684, 0.009463772316851317, 0.012594825682894736, -0.0069123792341578925, 0.0013869928297368425, -0.012008816909210525, -0.005822936399078947, -0.016418475083815786, -0.010629006791973683, 0.008168218550394738, 0.00664607999610526, -5069868140000001e-19, 0.004181848071447371, -0.0011114877839473682, 0.02246608591315789, -0.0034439313037368416, -0.004351277874210527, 0.0014461106753947362, -0.009660680614197373, -0.005408365936052628, 0.01752714284907894, 0.008516543233210525, 0.002278526259736842, -0.006875266473026315, -0.0069421802624999975, 0.013035910887894736, 0.0015391923593421058, 0.0012664572747368423, 0.0011414591399473686, -0.0037214528182894745, 0.015104741671868427, -0.013068065997078947, -9741302530000001e-19, -0.0033918721798684216, 0.005097137174605263, 0.004477671593026316, 0.006166728530789473, -4620546571052633e-19, -0.00529603509618421, 8418184122421051e-19, -0.0012031493919868418, 15712514144736853e-20, -0.0019224767417105261, 0.005464992050000003, 0.004573905729556577, -0.005107717659999997, -0.001779724216276316, 0.0062555419631578945, 0.014157424513157893, -0.002229668639710526, -0.004112240003421051, -0.008737391783947368, -0.01772272931749999, -0.011969726380789475, 3489228665526319e-19, 0.008398761923223683, 0.006083781918289473, 0.0038491992196052634, 0.006757484750263158, -0.0033988848290789457, 0.010786320785381581, 0.007709229539986843, -0.0027759906160526315, 0.01513786151671053, -33675679921052606e-20, -9034154792105268e-19, -0.006730010358421051, -0.0038794277310526316, 0.011774508437552627, 0.0075108212575000005, -5415923363157894e-19, -0.010228818563289476, -0.004567732969605264, -0.006103785833947367, -0.007408031901286839, -0.0032699436107894737, -0.007860791874210528, 0.01599756300842105, -0.016585482788684217, -0.008410989815789471, -0.0024622896271447366, -31383816486842115e-20, -0.006790721234210526, 0.0037121541342105256, -0.009942839455, -0.012361527721052628, 0.019747696744736844, -0.004605994977907893, 0.0033676318580263156, 8737887935394738e-19, 0.002211198596144737, 0.010937877776315795, -0.01129901567118421, -8168034689473677e-19, -0.009641223938421057, 0.009402437952631576, 0.0056297516052631605, -0.0010065862368421055, -0.02594543341447368, -0.0011355776477631582, -0.011891248669605264, -0.00839228417031579, 0.007896343589210524, 0.007322515729342106, 0.0033040433167105263, 0.003778204579868421, 0.011096790547631581, -0.0015593353430263153, 0.014356465188157893, -0.006630788594118421, 4828352872894737e-19, 0.0010450569010473684, -0.007027775473815791, -0.006984254253157892, -0.00792534963342105, -0.00162584528, -0.006522221855263158, 0.01805963293197369, -0.004809070690789476, -0.01814591389078947, -0.005865267296828947, 0.003988285848684209, -0.008169152964999999, -0.008437095909210527, 0.009360843043815788, 0.030021375652105258, 0.007297060365657896, -0.0023612295406578963, -0.01073050399763947, 0.0019045162401315795, 0.00651718905263158, 0.0010275199546052635, -0.006277306921263158, 0.0012021913027105262, -0.011182417592105264, -0.002024020123421053, -0.006231476668342106, 4796000135526314e-19, 0.006449109247355262, 7456603261184208e-19, -0.005144762157460526, -0.0021357675948684212, -0.01883197047171053, -0.025576503247368407, -0.013539074083421053, -0.011034470814473686, 0.0024368244498684222, -0.002245899774736842, 0.007094408709210526, 0.0012029363072368422, -0.009510369465000001, -0.012366834156578943, 22163493250000016e-20, -864950124473684e-18, -0.0054156288555263134, 0.005750937247368423, 0.003270796098421053, 0.002449161180921053, 52041173618420834e-21, 0.010704513787500002, 0.001962141009605263, 0.004546446430526313, -0.009514348226710524, 0.013900074301842112, 0.007515311701355261, 0.0035688571342105263, -0.0031417825293421063, 0.013631733623026311, 0.004473217585789474, 0.022099065907894736, -0.010242928179605263, -0.021115605811315788, -0.0020430657981592103, -0.004960829025921049, 6026669513157779e-20, -0.004585000899605264, -0.004475863079315788, -0.004507509982368421, 0.012760686508684211, 0.0035079304818421055, 0.0043142242481578955, -0.0037753994023157884, 0.009972505233289472, 0.004257388717499998, 0.0037933767182894737, -0.003782828635039474, -0.016245113222631585, -0.0067635378846052615, 0.001699853626842106, 0.0049727823532894734, -0.0026726438017763156, 35606309460526324e-20, 0.0014221154155263163, -0.006753894785657897, -0.0021303370428947363, 0.0020290390381578942, 0.0065541381115789485, 0.005578077509210527, 0.00597834956631579, -0.015656070957894737, -0.005700937814868422, -0.003300278165210526, 0.0010437032015789478, -0.006081244438026316, -0.012030119331578949, 0.008609655173684212, -0.012421846317171054, 0.0038849181815789487, -0.003441401350921053, 0.005337632936842106, -0.00501430082631579, 0.007684295191355262, -0.018589622549210528, 0.0020294963380921055, -0.01736990133552631, -12342767794736842e-20, 0.013101640196631579, -19718100105263185e-20, 0.00191136175070921, 0.002991744120394736, 0.005360340401578948, -0.002541910205657895, -0.011420830478947371, 0.0025571802081578946, -0.007654641906842104, 1324760923026315e-19, 0.009839589908289474, 0.014137809323684214, 0.005973617257894737, 0.0044086344710526325, -0.007683909966710525, -0.014283573396973682, -0.015558832550000004, 0.006422352959605265, 0.0015610042364473677, 0.005954876463289471, 0.01747821746710526, 0.012649821948026316, -0.00588777466013158, 0.00278459120360921, -0.0027093084425131573, 0.00528561605, -0.0013567440365789465, -0.0036329947868421046, -0.027717547824078946, -0.009446810628947372, 0.0016673699111842107, 0.01964425766578947, -0.00695099289526316, 0.01540288453881579, -0.0017949823404736845, -0.0017532934771052637, 0.011818318206578948, 0.0014771281863157897, 0.010423521287236842, 7254289103947369e-19, -0.004566167288026315, -0.003529428743197369, 0.0011952240294736843, -0.003898400712605264, -0.010473680018684213, 0.00285922366139474, -0.006599853688026317, -0.02107415088815789, 0.0052880693118421045, 0.006744707181578948, -0.00798451460657895, -0.004557204219868423, -0.01156681187255263, 0.0076239759752631635, 0.0035902046968684207, -0.012573743979605262, -0.003764909397236842, 6335979498684211e-19, -0.003016045632947368, 0.0018927498906578949, 0.007497210715789474, -0.005934193091907899, 0.0035080823515789466, -0.0018217714548684216, -5523007649828952e-19, -7058270163815789e-19, 0.012370342157368423, -15139791644736762e-21, -0.013432961709210524, -4939559349999998e-19, 0.010054779912499996, -0.001919280470486842, -0.0013844150172368421, 0.007696783919605264, 0.008991117240473684, -0.007747281024078945, -0.004739962277894735, 0.007187543989473684, 0.003015955778815791, -0.001928289877644735, 0.004620562280552632, -0.0014514659089473684, -0.020361874824473686, 0.010851485952894735, -0.0048367870628947375, 7418370901184215e-19, 0.003954019490328949, -0.0036905010957894754, 0.005135467446315788, -7641653630263166e-19, 0.002803192092157894, 9011874512236843e-19, -0.006852827178236843, -0.009182144093157896, 6662634763552632e-19, 0.003859204278289474, 0.002627766069263158, 16687577934210564e-20, -0.004155122549868421, 0.007481256317894739, 0.010201827506842105, -0.02001931662526316, 0.008597913657499998, 0.009211417565, -0.003000300423684211, 48565491249999974e-20, -0.006839893910657894, -0.0024400726705263165, 0.0018072735346052636, -0.019441373660526323, 0.008917724683289475, 0.006977527517447371, 0.0012267423015789476, 37295210526322205e-22, -0.03201578951578947, 0.0014607340267894736, 0.010337255695263156, 0.002957082175947369, 0.009742125079473684, 0.0062952107691315795, 0.010293411451381573, 0.007467224718026317, -0.01702668064539474, 0.005315579784210528, -0.03403872432368421, -0.0036593492817105257, -0.013481478045789471, -0.005543817282105263, 0.0024990400036842106, -0.005272580224539472, 0.009082922817368418, -0.001777538198289474, -0.00401194444394737, 0.00793982549736842, 23839166631578926e-20, 0.005703706245131579, 0.0032615849919210536, 5623444232236841e-19, -0.009299548110394735, 0.0010441157952631576, -0.012694072275263158, 0.004126734016842105, -0.001088491213815789, -43924066513157913e-20, -0.006497900055789475, -0.008375932914473687, 0.006604953940657895, 0.008322977985131578, 0.0014929076139473686, -0.005037357923289473, 0.001687304174736842, 0.005036407010486843, 0.002468036690526316, 0.0014052489157894733, -0.0022257209973684214, 0.005458085299473683, 0.009009774955749998, 0.0858067330657895, -0.007581642367631578, 0.01083994584868421, -0.0022605711906578943, 21345696315789494e-20, -0.005091092415263156, -0.0064649052059342115, -0.0031673467632894734, 0.007837809513026317, -0.0048379660456749985, 0.003358471353947369, -0.007209436236315789, -0.004074764670526317, -0.002432236466131579, -0.001538101053328947, -0.003958276178197368, -0.001431222515394737, -0.002890863070263158, -0.005015565842105263, 0.006637256008947367, -0.01610401879026316, 16318058486842113e-20, 0.006704906538815789, -0.00704305531026316, -0.006291144144078946, 0.00933739933177632, 0.003039505811973684, -0.002349317244736842, 6161272673684213e-19, 0.011576436187894739, 19294986634210533e-20, -5418114680263158e-19, 0.002641153911184212, -0.00675274457026316, 0.008304665786171056, 0.001867557076842105, 0.007009144105789473, 37644492855263173e-20, 0.008968001444210526, 0.0015434073640789474, 0.005244117515263159, 0.0029953329880263156, 5347106021052633e-19, 0.004156591307368421, -0.0022211070997368424, 0.0034716415264473685, -0.0065318866889473685, 977989682631579e-18, -0.0014095522748684215, -0.006451674766447366, 0.0032100871473157893, -0.005529904199539473, 0.0059584155557894725, -9850399996052639e-19, 0.006995684919078948, -0.0022856163722368393, -0.01090589053710526, 0.009130581944078944, 0.00312594295013158, 0.007374450093421053, 0.0025797777251710522, 29641350526315737e-21, 0.001176881737763158, -0.014572063391447372, -2289824355263157e-19, -0.004469249211710526, 0.007769186374868425, -0.002506505231434211, 0.006041142717631577, -0.002120238433026316, -0.009695580013552628, -0.005020087666881578, 0.005143053156315791, 0.007150294719789475, 0.0023021195396710527, 0.003707133851447368, 0.006069693725921051, -0.00467861785710526, 0.02125906401236842, 9268083446052627e-19, -0.003634692288684209, -0.003680463652815789, 0.0040336247021052615, 0.0013372253536447368, 0.0021130635865789465, -4880915286842109e-19, -0.012233446567342104, -0.004310965072894738, -0.01132869828552632, -0.006841497305263159, -0.0016422147394736845, -0.002537146005289474, 0.003615671777368422, 0.00814799093118421, -0.005056491793263158, 0.013174237758684208, 3394553878157892e-19, -0.008489372885473684, -0.0027938550723684203, 0.0030627760844078957, 9348454796052637e-19, 0.004848255386842105, -0.0117739507, -6810965494736843e-19, -0.002880153715, 0.008861613728178947, 0.0033199058337500006, -0.003612675859078948, 0.002928360304065789, 0.0039185375651315775, -7332073442631576e-19, -0.0012935513150789466, 0.004886879997894738, 0.007781129023552632, -0.004267412731052632, -0.003639562495460526, 0.00523262424868421, -0.003657068880394737, 0.005125610617552631, -0.004419953952236842, -9843244355092107e-19, -2347114171052623e-20, 0.0016072527152631584, 0.003128275799539474, 4279722777368421e-19, 0.006050774428552632, -0.004237210059210528, -0.0025468053725000005, 0.0026924242311184205, -0.02019396686092105, -0.005761839523684209, -0.009751797271973686, 0.011594078876973685, 9348787827236843e-19, 0.014106164205263163, 6055481813026316e-19, -7440742407894764e-20, -0.005227106624868422, 0.013380218100789466, 0.008165820871447366, -4882895227631577e-19, -0.0010533377903157893, -0.0016510250091447362, 0.0018723641477631577, -0.004344320649736843, 0.002451466830486842, 0.003751309517368421, -1192675066447369e-19, 5871760036842106e-19, 0.00721447406936842, 0.003513352502315789, 0.009986706387763158, -0.003577922982105263, -0.006272508934210527, 0.00939798507907895, 0.005559408675131579, -0.004530027807368421, 0.008267799573289474, 9763903811842103e-19, 6323663030263157e-19, -0.018563745183684206, 0.003477922045657895, 0.0034454675522368416, 0.0022030032148815794, 9718481634210526e-19, -0.006363050955000002, 0.009044980506973683, -0.007551598236973688, -6711054927894736e-19, -0.0013286158334210524, 0.0017464641878947365, -0.011715851191973686, -0.005520589822500002, 8535201651315791e-19, 0.010038929649605262];
|
|
5671
5678
|
|
|
5672
5679
|
// src/lib/chat/preProcessor.ts
|
|
5673
|
-
function wrapAsUserText(prefix,
|
|
5674
|
-
if (!
|
|
5680
|
+
function wrapAsUserText(prefix, text13) {
|
|
5681
|
+
if (!text13 || !text13.trim()) return [];
|
|
5675
5682
|
return [{ role: "user", content: [{ type: "text", text: `${prefix}
|
|
5676
|
-
${
|
|
5683
|
+
${text13}` }] }];
|
|
5677
5684
|
}
|
|
5678
5685
|
|
|
5679
5686
|
// src/lib/chat/cryptoPriceClassifier.ts
|
|
@@ -5712,6 +5719,80 @@ function createCryptoPricePreProcessor(options = {}) {
|
|
|
5712
5719
|
};
|
|
5713
5720
|
}
|
|
5714
5721
|
|
|
5722
|
+
// src/lib/chat/reservationReceipts.ts
|
|
5723
|
+
var ACTIONS = [
|
|
5724
|
+
{
|
|
5725
|
+
kind: "booking",
|
|
5726
|
+
tool: "anuma_book_restaurant",
|
|
5727
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_BOOKED:/
|
|
5728
|
+
},
|
|
5729
|
+
{
|
|
5730
|
+
kind: "cancel",
|
|
5731
|
+
tool: "anuma_cancel_reservation",
|
|
5732
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_CANCELLED:/
|
|
5733
|
+
}
|
|
5734
|
+
];
|
|
5735
|
+
var NOT_AN_ATTEMPT = /^Tool "[^"]*" (has already been called|was already called)/;
|
|
5736
|
+
var BOOKING_OUTCOME_UNKNOWN = /^Tool "[^"]*" failed: BOOKING_OUTCOME_UNKNOWN:/;
|
|
5737
|
+
var CANCEL_OUTCOME_UNKNOWN = "CANCEL_OUTCOME_UNKNOWN";
|
|
5738
|
+
function extractReservationReceipts(toolCallEvents) {
|
|
5739
|
+
const latest = /* @__PURE__ */ new Map();
|
|
5740
|
+
for (const event of toolCallEvents ?? []) {
|
|
5741
|
+
const action = ACTIONS.find((a) => event.name?.endsWith(a.tool));
|
|
5742
|
+
const output = event.output ?? "";
|
|
5743
|
+
if (!action || !output || NOT_AN_ATTEMPT.test(output)) continue;
|
|
5744
|
+
const kept = latest.get(action.kind)?.status;
|
|
5745
|
+
if (kept === "made") continue;
|
|
5746
|
+
const receipt = toReceipt(action, event.arguments ?? "", output);
|
|
5747
|
+
if (kept === "unknown" && receipt.status !== "made") continue;
|
|
5748
|
+
latest.set(action.kind, receipt);
|
|
5749
|
+
}
|
|
5750
|
+
return [...latest.values()];
|
|
5751
|
+
}
|
|
5752
|
+
function toReceipt(action, argumentsJson, output) {
|
|
5753
|
+
const args = parseObject(argumentsJson);
|
|
5754
|
+
const result = parseObject(output);
|
|
5755
|
+
return {
|
|
5756
|
+
kind: action.kind,
|
|
5757
|
+
venueName: text(args.venue_name) ?? "",
|
|
5758
|
+
day: text(args.day) ?? "",
|
|
5759
|
+
time: text(args.time) ?? "",
|
|
5760
|
+
partySize: count(args.party_size),
|
|
5761
|
+
reservationId: text(result.reservation_id) ?? text(args.reservation_id),
|
|
5762
|
+
resyUrl: text(result.reservations_url),
|
|
5763
|
+
feeSummary: text(result.fee_summary),
|
|
5764
|
+
...outcome(action, output, result)
|
|
5765
|
+
};
|
|
5766
|
+
}
|
|
5767
|
+
function outcome(action, output, result) {
|
|
5768
|
+
if (action.alreadyDone.test(output)) return { status: "already_done" };
|
|
5769
|
+
const reason = text(result.error);
|
|
5770
|
+
if (action.kind === "booking") {
|
|
5771
|
+
if (BOOKING_OUTCOME_UNKNOWN.test(output)) return { status: "unknown" };
|
|
5772
|
+
const held = result.success === true || text(result.reservation_id) !== void 0;
|
|
5773
|
+
return held ? { status: "made" } : { status: "not_made", reason };
|
|
5774
|
+
}
|
|
5775
|
+
if (result.error_code === CANCEL_OUTCOME_UNKNOWN) return { status: "unknown", reason };
|
|
5776
|
+
const cancelled = result.success === true && !result.error && !result.error_code;
|
|
5777
|
+
return cancelled ? { status: "made" } : { status: "not_made", reason };
|
|
5778
|
+
}
|
|
5779
|
+
function parseObject(json4) {
|
|
5780
|
+
try {
|
|
5781
|
+
const parsed = JSON.parse(json4);
|
|
5782
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
5783
|
+
} catch {
|
|
5784
|
+
return {};
|
|
5785
|
+
}
|
|
5786
|
+
}
|
|
5787
|
+
function text(value) {
|
|
5788
|
+
if (typeof value === "number") return String(value);
|
|
5789
|
+
return typeof value === "string" && value ? value : void 0;
|
|
5790
|
+
}
|
|
5791
|
+
function count(value) {
|
|
5792
|
+
const n = typeof value === "string" && value.trim() ? Number(value) : value;
|
|
5793
|
+
return typeof n === "number" && Number.isFinite(n) ? n : void 0;
|
|
5794
|
+
}
|
|
5795
|
+
|
|
5715
5796
|
// src/lib/chat/resumeStream.ts
|
|
5716
5797
|
init_clientConfig();
|
|
5717
5798
|
|
|
@@ -5720,6 +5801,46 @@ init_clientConfig();
|
|
|
5720
5801
|
|
|
5721
5802
|
// src/tools/confirmConstants.ts
|
|
5722
5803
|
var CONFIRM_TOOL_NAME = "prompt_user_confirm";
|
|
5804
|
+
var BOOK_RESTAURANT = {
|
|
5805
|
+
tool: "AnumaPaymentsMCP-anuma_book_restaurant",
|
|
5806
|
+
status: "confirmed_not_booked",
|
|
5807
|
+
fields: ["venue_id", "config_id", "party_size", "day", "venue_name", "time"]
|
|
5808
|
+
};
|
|
5809
|
+
var CANCEL_RESERVATION = {
|
|
5810
|
+
tool: "AnumaPaymentsMCP-anuma_cancel_reservation",
|
|
5811
|
+
status: "confirmed_not_cancelled",
|
|
5812
|
+
fields: [
|
|
5813
|
+
"reservation_id",
|
|
5814
|
+
"venue_name",
|
|
5815
|
+
"day",
|
|
5816
|
+
"time",
|
|
5817
|
+
"party_size",
|
|
5818
|
+
"fee_applies",
|
|
5819
|
+
"fee_amount"
|
|
5820
|
+
]
|
|
5821
|
+
};
|
|
5822
|
+
var CONFIRM_REQUIRED_FIELDS = /* @__PURE__ */ new Map([
|
|
5823
|
+
["book_restaurant", BOOK_RESTAURANT],
|
|
5824
|
+
["anuma_book_restaurant", BOOK_RESTAURANT],
|
|
5825
|
+
["anumapaymentsmcp-anuma_book_restaurant", BOOK_RESTAURANT],
|
|
5826
|
+
["cancel_reservation", CANCEL_RESERVATION],
|
|
5827
|
+
["anuma_cancel_reservation", CANCEL_RESERVATION],
|
|
5828
|
+
["anumapaymentsmcp-anuma_cancel_reservation", CANCEL_RESERVATION]
|
|
5829
|
+
]);
|
|
5830
|
+
function confirmRequirement(action) {
|
|
5831
|
+
if (typeof action !== "string") return void 0;
|
|
5832
|
+
return CONFIRM_REQUIRED_FIELDS.get(action.trim().toLowerCase());
|
|
5833
|
+
}
|
|
5834
|
+
function missingConfirmFields(action, parameters) {
|
|
5835
|
+
const requirement = confirmRequirement(action);
|
|
5836
|
+
if (!requirement) return [];
|
|
5837
|
+
const shown = /* @__PURE__ */ new Set();
|
|
5838
|
+
for (const parameter of Array.isArray(parameters) ? parameters : []) {
|
|
5839
|
+
const { name, value } = parameter ?? {};
|
|
5840
|
+
if (typeof name === "string" && typeof value === "string" && value.trim()) shown.add(name);
|
|
5841
|
+
}
|
|
5842
|
+
return requirement.fields.filter((field10) => !shown.has(field10));
|
|
5843
|
+
}
|
|
5723
5844
|
|
|
5724
5845
|
// src/lib/chat/toolLoop.ts
|
|
5725
5846
|
init_redactor();
|
|
@@ -8421,13 +8542,13 @@ var StreamSmoother = class {
|
|
|
8421
8542
|
/**
|
|
8422
8543
|
* Add text to the buffer. If smoothing is disabled, passes through immediately.
|
|
8423
8544
|
*/
|
|
8424
|
-
push(
|
|
8425
|
-
if (this.destroyed || !
|
|
8545
|
+
push(text13) {
|
|
8546
|
+
if (this.destroyed || !text13) return;
|
|
8426
8547
|
if (!this.enabled) {
|
|
8427
|
-
this.callback(
|
|
8548
|
+
this.callback(text13);
|
|
8428
8549
|
return;
|
|
8429
8550
|
}
|
|
8430
|
-
this.buffer +=
|
|
8551
|
+
this.buffer += text13;
|
|
8431
8552
|
this.ensureTimer();
|
|
8432
8553
|
}
|
|
8433
8554
|
/**
|
|
@@ -8438,9 +8559,9 @@ var StreamSmoother = class {
|
|
|
8438
8559
|
if (this.destroyed) return;
|
|
8439
8560
|
this.stopTimer();
|
|
8440
8561
|
if (this.buffer.length > 0) {
|
|
8441
|
-
const
|
|
8562
|
+
const text13 = this.buffer;
|
|
8442
8563
|
this.buffer = "";
|
|
8443
|
-
this.callback(
|
|
8564
|
+
this.callback(text13);
|
|
8444
8565
|
}
|
|
8445
8566
|
this.resolveDrain();
|
|
8446
8567
|
}
|
|
@@ -8507,9 +8628,9 @@ var StreamSmoother = class {
|
|
|
8507
8628
|
const currentSpeed = this.getCurrentSpeed(elapsed);
|
|
8508
8629
|
const charsThisTick = Math.max(1, Math.round(currentSpeed * (TICK_INTERVAL / 1e3)));
|
|
8509
8630
|
const toRelease = Math.min(charsThisTick, this.buffer.length);
|
|
8510
|
-
const
|
|
8631
|
+
const text13 = this.buffer.slice(0, toRelease);
|
|
8511
8632
|
this.buffer = this.buffer.slice(toRelease);
|
|
8512
|
-
this.callback(
|
|
8633
|
+
this.callback(text13);
|
|
8513
8634
|
if (this.buffer.length === 0) {
|
|
8514
8635
|
this.stopTimer();
|
|
8515
8636
|
this.resolveDrain();
|
|
@@ -8713,6 +8834,7 @@ function getToolName(tool) {
|
|
|
8713
8834
|
}
|
|
8714
8835
|
function toolsAfterConfirmation(apiTools, executionResults) {
|
|
8715
8836
|
const members = /* @__PURE__ */ new Set();
|
|
8837
|
+
let keepConfirm = false;
|
|
8716
8838
|
for (const r of executionResults) {
|
|
8717
8839
|
if (r.name !== CONFIRM_TOOL_NAME) continue;
|
|
8718
8840
|
const answer = r.result;
|
|
@@ -8720,11 +8842,12 @@ function toolsAfterConfirmation(apiTools, executionResults) {
|
|
|
8720
8842
|
const setName = CONFIRMED_ACTION_TOOL_SETS.get(answer.action.trim().toLowerCase());
|
|
8721
8843
|
const set = BUILT_IN_TOOL_SETS.find((s) => s.name === setName);
|
|
8722
8844
|
for (const member of set?.members ?? []) members.add(member);
|
|
8845
|
+
if (missingConfirmFields(answer.action, answer.parameters).length > 0) keepConfirm = true;
|
|
8723
8846
|
}
|
|
8724
8847
|
if (!apiTools.some((t) => members.has(getToolName(t) ?? ""))) return void 0;
|
|
8725
8848
|
return apiTools.filter((t) => {
|
|
8726
8849
|
const name = getToolName(t) ?? "";
|
|
8727
|
-
return members.has(name) || name ===
|
|
8850
|
+
return members.has(name) || name === TOOL_SEARCH_TOOL_NAME || keepConfirm && name === CONFIRM_TOOL_NAME;
|
|
8728
8851
|
});
|
|
8729
8852
|
}
|
|
8730
8853
|
var STREAM_RESUMABLE_HEADER = "X-Stream-Resumable";
|
|
@@ -8930,9 +9053,9 @@ async function runToolLoop(options) {
|
|
|
8930
9053
|
messages = await redactBatch(messages);
|
|
8931
9054
|
if (preProcessors?.length) {
|
|
8932
9055
|
try {
|
|
8933
|
-
const
|
|
8934
|
-
if (
|
|
8935
|
-
const embedding = await generateEmbedding(
|
|
9056
|
+
const text13 = extractLastUserText(messages);
|
|
9057
|
+
if (text13.length > 0) {
|
|
9058
|
+
const embedding = await generateEmbedding(text13, {
|
|
8936
9059
|
apiKey: headers?.["X-API-Key"],
|
|
8937
9060
|
getToken: token ? () => Promise.resolve(token) : void 0,
|
|
8938
9061
|
baseUrl
|
|
@@ -8940,7 +9063,7 @@ async function runToolLoop(options) {
|
|
|
8940
9063
|
const results = await Promise.all(
|
|
8941
9064
|
preProcessors.map(async (p) => {
|
|
8942
9065
|
try {
|
|
8943
|
-
return await p({ prompt:
|
|
9066
|
+
return await p({ prompt: text13, embedding, signal: combinedSignal });
|
|
8944
9067
|
} catch (err) {
|
|
8945
9068
|
console.warn("[runToolLoop] pre-processor failed:", err);
|
|
8946
9069
|
return void 0;
|
|
@@ -9099,11 +9222,11 @@ async function runToolLoop(options) {
|
|
|
9099
9222
|
}
|
|
9100
9223
|
});
|
|
9101
9224
|
accumulator = createStreamAccumulator(model || void 0);
|
|
9102
|
-
contentSmoother = new StreamSmoother((
|
|
9103
|
-
if (emitData) emitData(
|
|
9225
|
+
contentSmoother = new StreamSmoother((text13) => {
|
|
9226
|
+
if (emitData) emitData(text13);
|
|
9104
9227
|
}, smoothing);
|
|
9105
|
-
thinkingSmoother = new StreamSmoother((
|
|
9106
|
-
if (emitThinking) emitThinking(
|
|
9228
|
+
thinkingSmoother = new StreamSmoother((text13) => {
|
|
9229
|
+
if (emitThinking) emitThinking(text13);
|
|
9107
9230
|
}, smoothing);
|
|
9108
9231
|
let chunksEmittedDownstream = false;
|
|
9109
9232
|
try {
|
|
@@ -9608,11 +9731,11 @@ Executing tool: ${toolInfo}
|
|
|
9608
9731
|
}
|
|
9609
9732
|
});
|
|
9610
9733
|
currentAccumulator = createStreamAccumulator(model || void 0);
|
|
9611
|
-
contContentSmoother = new StreamSmoother((
|
|
9612
|
-
if (emitData) emitData(
|
|
9734
|
+
contContentSmoother = new StreamSmoother((text13) => {
|
|
9735
|
+
if (emitData) emitData(text13);
|
|
9613
9736
|
}, smoothing);
|
|
9614
|
-
contThinkingSmoother = new StreamSmoother((
|
|
9615
|
-
if (emitThinking) emitThinking(
|
|
9737
|
+
contThinkingSmoother = new StreamSmoother((text13) => {
|
|
9738
|
+
if (emitThinking) emitThinking(text13);
|
|
9616
9739
|
}, smoothing);
|
|
9617
9740
|
let chunksEmittedDownstream = false;
|
|
9618
9741
|
try {
|
|
@@ -9839,11 +9962,11 @@ async function resumeStream(options) {
|
|
|
9839
9962
|
} = options;
|
|
9840
9963
|
const strategy = getStrategy(handle.apiType);
|
|
9841
9964
|
const accumulator = createStreamAccumulator(handle.model || void 0);
|
|
9842
|
-
const contentSmoother = new StreamSmoother((
|
|
9843
|
-
if (onData) onData(
|
|
9965
|
+
const contentSmoother = new StreamSmoother((text13) => {
|
|
9966
|
+
if (onData) onData(text13);
|
|
9844
9967
|
}, smoothing);
|
|
9845
|
-
const thinkingSmoother = new StreamSmoother((
|
|
9846
|
-
if (onThinking) onThinking(
|
|
9968
|
+
const thinkingSmoother = new StreamSmoother((text13) => {
|
|
9969
|
+
if (onThinking) onThinking(text13);
|
|
9847
9970
|
}, smoothing);
|
|
9848
9971
|
const idleController = new AbortController();
|
|
9849
9972
|
let watchdog;
|
|
@@ -10087,20 +10210,20 @@ function sseFailureMessage(status, statusText, detail = "") {
|
|
|
10087
10210
|
return `SSE failed: ${status} ${statusText}${detail}`;
|
|
10088
10211
|
}
|
|
10089
10212
|
function parseSseChunks(raw, incompleteBuffer) {
|
|
10090
|
-
const
|
|
10091
|
-
const
|
|
10092
|
-
const lines =
|
|
10213
|
+
const chunks2 = [];
|
|
10214
|
+
const text13 = incompleteBuffer + raw;
|
|
10215
|
+
const lines = text13.split("\n");
|
|
10093
10216
|
const remaining = raw.endsWith("\n") ? "" : lines.pop() ?? "";
|
|
10094
10217
|
for (const line of lines) {
|
|
10095
10218
|
if (!line.startsWith("data: ")) continue;
|
|
10096
10219
|
const data = line.substring(6).trim();
|
|
10097
10220
|
if (data === "[DONE]") continue;
|
|
10098
10221
|
try {
|
|
10099
|
-
|
|
10222
|
+
chunks2.push(JSON.parse(data));
|
|
10100
10223
|
} catch {
|
|
10101
10224
|
}
|
|
10102
10225
|
}
|
|
10103
|
-
return { chunks, remaining };
|
|
10226
|
+
return { chunks: chunks2, remaining };
|
|
10104
10227
|
}
|
|
10105
10228
|
var xhrTransport = (options) => {
|
|
10106
10229
|
const queue = [];
|
|
@@ -10169,18 +10292,18 @@ var xhrTransport = (options) => {
|
|
|
10169
10292
|
const newData = xhr.responseText.substring(lastProcessedIndex);
|
|
10170
10293
|
lastProcessedIndex = xhr.responseText.length;
|
|
10171
10294
|
if (newData.length > 0) options.onActivity?.();
|
|
10172
|
-
const { chunks, remaining } = parseSseChunks(newData, incompleteBuffer);
|
|
10295
|
+
const { chunks: chunks2, remaining } = parseSseChunks(newData, incompleteBuffer);
|
|
10173
10296
|
incompleteBuffer = remaining;
|
|
10174
|
-
for (const chunk of
|
|
10297
|
+
for (const chunk of chunks2) {
|
|
10175
10298
|
push({ type: "data", value: chunk });
|
|
10176
10299
|
}
|
|
10177
10300
|
};
|
|
10178
10301
|
xhr.onload = () => {
|
|
10179
10302
|
options.signal?.removeEventListener("abort", abortHandler);
|
|
10180
10303
|
if (incompleteBuffer) {
|
|
10181
|
-
const { chunks } = parseSseChunks(incompleteBuffer + "\n", "");
|
|
10304
|
+
const { chunks: chunks2 } = parseSseChunks(incompleteBuffer + "\n", "");
|
|
10182
10305
|
incompleteBuffer = "";
|
|
10183
|
-
for (const chunk of
|
|
10306
|
+
for (const chunk of chunks2) {
|
|
10184
10307
|
push({ type: "data", value: chunk });
|
|
10185
10308
|
}
|
|
10186
10309
|
}
|
|
@@ -10585,14 +10708,14 @@ var MaskScopedEmbeddingCache = class extends Map {
|
|
|
10585
10708
|
this.inner = inner;
|
|
10586
10709
|
this.masked = masked;
|
|
10587
10710
|
}
|
|
10588
|
-
key(
|
|
10589
|
-
return `${this.masked ? "m" : "r"}:${
|
|
10711
|
+
key(text13) {
|
|
10712
|
+
return `${this.masked ? "m" : "r"}:${text13}`;
|
|
10590
10713
|
}
|
|
10591
|
-
get(
|
|
10592
|
-
return this.inner.get(this.key(
|
|
10714
|
+
get(text13) {
|
|
10715
|
+
return this.inner.get(this.key(text13));
|
|
10593
10716
|
}
|
|
10594
|
-
set(
|
|
10595
|
-
this.inner.set(this.key(
|
|
10717
|
+
set(text13, value) {
|
|
10718
|
+
this.inner.set(this.key(text13), value);
|
|
10596
10719
|
return this;
|
|
10597
10720
|
}
|
|
10598
10721
|
};
|
|
@@ -14631,7 +14754,7 @@ Which item numbers should be flagged?`,
|
|
|
14631
14754
|
if (parsed === null) return empty;
|
|
14632
14755
|
return { flagged: parseFlagged(parsed, scope.length) };
|
|
14633
14756
|
}
|
|
14634
|
-
function parseFlagged(parsed,
|
|
14757
|
+
function parseFlagged(parsed, count2) {
|
|
14635
14758
|
const out = /* @__PURE__ */ new Set();
|
|
14636
14759
|
if (typeof parsed !== "object" || parsed === null) return out;
|
|
14637
14760
|
const list = parsed.poisoned;
|
|
@@ -14639,7 +14762,7 @@ function parseFlagged(parsed, count) {
|
|
|
14639
14762
|
for (const raw of list) {
|
|
14640
14763
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
14641
14764
|
if (!Number.isInteger(n)) continue;
|
|
14642
|
-
if (n >= 1 && n <=
|
|
14765
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
14643
14766
|
}
|
|
14644
14767
|
return out;
|
|
14645
14768
|
}
|
|
@@ -15136,8 +15259,8 @@ var STOPWORDS = /* @__PURE__ */ new Set([
|
|
|
15136
15259
|
"user",
|
|
15137
15260
|
"users"
|
|
15138
15261
|
]);
|
|
15139
|
-
function tokenize(
|
|
15140
|
-
const m =
|
|
15262
|
+
function tokenize(text13) {
|
|
15263
|
+
const m = text13.toLowerCase().match(TOKEN_RE);
|
|
15141
15264
|
if (!m) return [];
|
|
15142
15265
|
return m.filter((t) => !STOPWORDS.has(t));
|
|
15143
15266
|
}
|
|
@@ -16664,14 +16787,14 @@ async function retainWithPersistence(content, ctx, options = {}) {
|
|
|
16664
16787
|
);
|
|
16665
16788
|
}
|
|
16666
16789
|
if (options.consolidateOptions) {
|
|
16667
|
-
const
|
|
16668
|
-
if (
|
|
16669
|
-
if ("done" in
|
|
16670
|
-
if ("create" in
|
|
16790
|
+
const outcome2 = await tryConsolidate(trimmed, ctx, options, prepared);
|
|
16791
|
+
if (outcome2) {
|
|
16792
|
+
if ("done" in outcome2) return outcome2.done;
|
|
16793
|
+
if ("create" in outcome2) {
|
|
16671
16794
|
consolidationDecidedCreate = true;
|
|
16672
16795
|
} else {
|
|
16673
|
-
supersedeTargetIds =
|
|
16674
|
-
supersedeContent =
|
|
16796
|
+
supersedeTargetIds = outcome2.supersede;
|
|
16797
|
+
supersedeContent = outcome2.content;
|
|
16675
16798
|
}
|
|
16676
16799
|
}
|
|
16677
16800
|
}
|
|
@@ -17337,12 +17460,12 @@ async function extractAndRetain(messages, retainCtx, options) {
|
|
|
17337
17460
|
if (failedWrites > 0) {
|
|
17338
17461
|
log.warn(`[memory/extract] ${failedWrites} of ${filtered.length} candidates failed to retain`);
|
|
17339
17462
|
}
|
|
17340
|
-
const
|
|
17463
|
+
const outcome2 = exhaustedEmpty ? "empty-after-retry" : filtered.length > 0 ? "extracted" : droppedAfterRedaction ? "dropped-after-redaction" : "no-facts";
|
|
17341
17464
|
return {
|
|
17342
17465
|
candidates: succeededCandidates,
|
|
17343
17466
|
results,
|
|
17344
17467
|
failedCount: failedWrites,
|
|
17345
|
-
outcome,
|
|
17468
|
+
outcome: outcome2,
|
|
17346
17469
|
quarantined: quarantinedInfo,
|
|
17347
17470
|
funnel: {
|
|
17348
17471
|
rawCandidateCount,
|
|
@@ -17574,7 +17697,7 @@ function createAutoExtractor(options) {
|
|
|
17574
17697
|
...options.retainCtx,
|
|
17575
17698
|
embeddingOptions: {
|
|
17576
17699
|
...options.retainCtx.embeddingOptions,
|
|
17577
|
-
maskInput: (
|
|
17700
|
+
maskInput: (text13) => piiRedactor.maskText(text13)
|
|
17578
17701
|
}
|
|
17579
17702
|
} : options.retainCtx;
|
|
17580
17703
|
function processTurn(messages, conversationId) {
|
|
@@ -17607,7 +17730,7 @@ function createAutoExtractor(options) {
|
|
|
17607
17730
|
const t0 = Date.now();
|
|
17608
17731
|
void (async () => {
|
|
17609
17732
|
try {
|
|
17610
|
-
const { candidates, results, failedCount, outcome, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
17733
|
+
const { candidates, results, failedCount, outcome: outcome2, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
17611
17734
|
extract,
|
|
17612
17735
|
...options.minConfidence !== void 0 && { minConfidence: options.minConfidence },
|
|
17613
17736
|
...options.entityCtx !== void 0 && { entityCtx: options.entityCtx },
|
|
@@ -17624,7 +17747,7 @@ function createAutoExtractor(options) {
|
|
|
17624
17747
|
onQuarantined: (info) => options.onMemoryQuarantined?.({ ...info, conversationId })
|
|
17625
17748
|
}
|
|
17626
17749
|
});
|
|
17627
|
-
if (
|
|
17750
|
+
if (outcome2 !== "empty-after-retry" && failedCount === 0) {
|
|
17628
17751
|
const advancedTo = window2[window2.length - 1].id;
|
|
17629
17752
|
stateFor(conversationId).watermark = advancedTo;
|
|
17630
17753
|
persistCursor(conversationId, messages, advancedTo, contiguous);
|
|
@@ -17643,7 +17766,7 @@ function createAutoExtractor(options) {
|
|
|
17643
17766
|
failedCount,
|
|
17644
17767
|
durationMs: Date.now() - t0,
|
|
17645
17768
|
conversationId,
|
|
17646
|
-
outcome,
|
|
17769
|
+
outcome: outcome2,
|
|
17647
17770
|
funnel,
|
|
17648
17771
|
timings,
|
|
17649
17772
|
model,
|
|
@@ -19320,12 +19443,12 @@ ${JSON.stringify(
|
|
|
19320
19443
|
function parseAnswer(body, base, parseSchema) {
|
|
19321
19444
|
if (typeof body !== "object" || body === null) return base;
|
|
19322
19445
|
const obj = body;
|
|
19323
|
-
const
|
|
19446
|
+
const text13 = extractCompletionContent(obj) ?? "";
|
|
19324
19447
|
const usage = obj.usage;
|
|
19325
19448
|
let structuredOutput;
|
|
19326
|
-
if (parseSchema &&
|
|
19449
|
+
if (parseSchema && text13) {
|
|
19327
19450
|
try {
|
|
19328
|
-
structuredOutput = JSON.parse(extractJsonCandidate(
|
|
19451
|
+
structuredOutput = JSON.parse(extractJsonCandidate(text13));
|
|
19329
19452
|
} catch (err) {
|
|
19330
19453
|
getLogger().warn("[memory/reflect] structured output was not valid JSON", {
|
|
19331
19454
|
err: err instanceof Error ? err.message : String(err)
|
|
@@ -19335,7 +19458,7 @@ function parseAnswer(body, base, parseSchema) {
|
|
|
19335
19458
|
const promptTokens = usage?.prompt_tokens ?? usage?.input_tokens ?? 0;
|
|
19336
19459
|
const completionTokens = usage?.completion_tokens ?? usage?.output_tokens ?? 0;
|
|
19337
19460
|
return {
|
|
19338
|
-
text:
|
|
19461
|
+
text: text13,
|
|
19339
19462
|
...structuredOutput !== void 0 && { structuredOutput },
|
|
19340
19463
|
basedOn: base.basedOn,
|
|
19341
19464
|
usage: {
|
|
@@ -19691,6 +19814,65 @@ function createLocalMemoryStore(options) {
|
|
|
19691
19814
|
};
|
|
19692
19815
|
}
|
|
19693
19816
|
|
|
19817
|
+
// src/lib/memory/store/memoryKeys.ts
|
|
19818
|
+
var KEY_ID_DOMAIN = "anuma-private-memory-key-id-v1";
|
|
19819
|
+
var MemoryKeyError = class extends Error {
|
|
19820
|
+
constructor(message) {
|
|
19821
|
+
super(message);
|
|
19822
|
+
this.name = "MemoryKeyError";
|
|
19823
|
+
}
|
|
19824
|
+
};
|
|
19825
|
+
async function importAesKey(hex) {
|
|
19826
|
+
return crypto.subtle.importKey(
|
|
19827
|
+
"raw",
|
|
19828
|
+
hexToBytes(hex).buffer,
|
|
19829
|
+
{ name: "AES-GCM" },
|
|
19830
|
+
false,
|
|
19831
|
+
["encrypt", "decrypt"]
|
|
19832
|
+
);
|
|
19833
|
+
}
|
|
19834
|
+
async function deriveMemoryKeyRing(signatureHex) {
|
|
19835
|
+
const v3Hex = await deriveKeyFromSignatureV3(signatureHex);
|
|
19836
|
+
const digest = await crypto.subtle.digest(
|
|
19837
|
+
"SHA-256",
|
|
19838
|
+
new TextEncoder().encode(`${KEY_ID_DOMAIN}:${v3Hex}`)
|
|
19839
|
+
);
|
|
19840
|
+
const keyId = "v3:" + Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
19841
|
+
return {
|
|
19842
|
+
keyId,
|
|
19843
|
+
v3: await importAesKey(v3Hex),
|
|
19844
|
+
v2: await importAesKey(await deriveKeyFromSignature(signatureHex))
|
|
19845
|
+
};
|
|
19846
|
+
}
|
|
19847
|
+
async function decryptWith(value, rings) {
|
|
19848
|
+
const version = value.startsWith("enc:v3:") ? "v3" : "v2";
|
|
19849
|
+
for (const ring of rings) {
|
|
19850
|
+
try {
|
|
19851
|
+
return await decryptDataWithKey(value.slice(`enc:${version}:`.length), ring[version]);
|
|
19852
|
+
} catch {
|
|
19853
|
+
continue;
|
|
19854
|
+
}
|
|
19855
|
+
}
|
|
19856
|
+
throw new MemoryKeyError(`No supplied key decrypts this enc:${version} field`);
|
|
19857
|
+
}
|
|
19858
|
+
function memoryCipher(canonical) {
|
|
19859
|
+
return {
|
|
19860
|
+
encrypt: async (plaintext) => `enc:v3:${await encryptDataWithKey(plaintext, canonical.v3)}`,
|
|
19861
|
+
decrypt: async (ciphertext) => {
|
|
19862
|
+
if (!ciphertext.startsWith("enc:v3:") || !isEncrypted(ciphertext))
|
|
19863
|
+
throw new MemoryKeyError("Remote memory content must be enc:v3 ciphertext");
|
|
19864
|
+
return decryptWith(ciphertext, [canonical]);
|
|
19865
|
+
}
|
|
19866
|
+
};
|
|
19867
|
+
}
|
|
19868
|
+
async function reencryptMemoryField(value, canonical, fallbacks = []) {
|
|
19869
|
+
const { encrypt } = memoryCipher(canonical);
|
|
19870
|
+
if (!value.startsWith("enc:")) return encrypt(value);
|
|
19871
|
+
if (!isEncrypted(value))
|
|
19872
|
+
throw new MemoryKeyError("Field has an encryption prefix but an invalid payload");
|
|
19873
|
+
return encrypt(await decryptWith(value, [canonical, ...fallbacks]));
|
|
19874
|
+
}
|
|
19875
|
+
|
|
19694
19876
|
// src/lib/memory/store/remotePersistence.ts
|
|
19695
19877
|
var RemoteMemoryError = class extends Error {
|
|
19696
19878
|
constructor(message, status, code) {
|
|
@@ -19743,6 +19925,30 @@ var candidateListLimits = [
|
|
|
19743
19925
|
["memory_ids", 1e3],
|
|
19744
19926
|
["force_ids", 100]
|
|
19745
19927
|
];
|
|
19928
|
+
var queryListLimits = [
|
|
19929
|
+
["scopes", 20],
|
|
19930
|
+
["fact_types", 20],
|
|
19931
|
+
["visibility", 20],
|
|
19932
|
+
["memory_ids", 1e3],
|
|
19933
|
+
["topics", 100]
|
|
19934
|
+
];
|
|
19935
|
+
var queryFields = [
|
|
19936
|
+
"include_deleted",
|
|
19937
|
+
"include_archived",
|
|
19938
|
+
"include_quarantined",
|
|
19939
|
+
"include_superseded",
|
|
19940
|
+
"archived_only",
|
|
19941
|
+
"scopes",
|
|
19942
|
+
"fact_types",
|
|
19943
|
+
"visibility",
|
|
19944
|
+
"memory_ids",
|
|
19945
|
+
"topics",
|
|
19946
|
+
"updated_after",
|
|
19947
|
+
"order",
|
|
19948
|
+
"cursor",
|
|
19949
|
+
"limit",
|
|
19950
|
+
"include_embeddings"
|
|
19951
|
+
];
|
|
19746
19952
|
function record(value) {
|
|
19747
19953
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
19748
19954
|
}
|
|
@@ -20077,6 +20283,35 @@ async function createRemoteMemoryPersistence(options) {
|
|
|
20077
20283
|
throw new Error("Invalid nearby batch response");
|
|
20078
20284
|
return Promise.all(result.items.map((item, i) => decodeCommitted(item, prepared[i])));
|
|
20079
20285
|
},
|
|
20286
|
+
query: async (queryOptions = {}) => {
|
|
20287
|
+
const { signal, ...query } = queryOptions;
|
|
20288
|
+
if (query.limit !== void 0 && (!Number.isInteger(query.limit) || query.limit < 1 || query.limit > 200))
|
|
20289
|
+
throw new Error("Page limit must be 1\u2013200");
|
|
20290
|
+
for (const [key, max] of queryListLimits) {
|
|
20291
|
+
const values = query[key];
|
|
20292
|
+
if (values && values.length > max)
|
|
20293
|
+
throw new Error(`Query ${key} accepts at most ${max} entries (got ${values.length})`);
|
|
20294
|
+
}
|
|
20295
|
+
const page = await request(
|
|
20296
|
+
"/memories/query",
|
|
20297
|
+
{
|
|
20298
|
+
method: "POST",
|
|
20299
|
+
body: JSON.stringify(
|
|
20300
|
+
Object.fromEntries(
|
|
20301
|
+
queryFields.filter((key) => query[key] !== void 0).map((key) => [key, query[key]])
|
|
20302
|
+
)
|
|
20303
|
+
)
|
|
20304
|
+
},
|
|
20305
|
+
signal
|
|
20306
|
+
);
|
|
20307
|
+
if (!record(page) || !Array.isArray(page.items) || page.next_cursor !== void 0 && typeof page.next_cursor !== "string" || page.changes_cursor !== void 0 && typeof page.changes_cursor !== "string")
|
|
20308
|
+
throw new Error("Invalid nearby private-memory page");
|
|
20309
|
+
return {
|
|
20310
|
+
...await decodeAll(page.items),
|
|
20311
|
+
...page.next_cursor !== void 0 && { next_cursor: page.next_cursor },
|
|
20312
|
+
...page.changes_cursor !== void 0 && { changes_cursor: page.changes_cursor }
|
|
20313
|
+
};
|
|
20314
|
+
},
|
|
20080
20315
|
candidateSet,
|
|
20081
20316
|
candidates: async (embedding, candidateOptions = {}) => decodeAll((await fetchCandidates(embedding, candidateOptions, false)).items)
|
|
20082
20317
|
};
|
|
@@ -20428,10 +20663,10 @@ function createRemoteMemoryPipeline(options) {
|
|
|
20428
20663
|
factSource: {
|
|
20429
20664
|
graphRanking: options.graphRanking,
|
|
20430
20665
|
temporalRanking: options.temporalRanking,
|
|
20431
|
-
search: async (
|
|
20432
|
-
const prepared = await prepare(
|
|
20666
|
+
search: async (text13, searchOptions) => {
|
|
20667
|
+
const prepared = await prepare(text13, searchOptions);
|
|
20433
20668
|
const ranked = await rankPreparedVaultCandidates(
|
|
20434
|
-
|
|
20669
|
+
text13,
|
|
20435
20670
|
prepared,
|
|
20436
20671
|
embeddingOptions,
|
|
20437
20672
|
searchOptions
|
|
@@ -20466,6 +20701,490 @@ function createRemoteMemoryPipeline(options) {
|
|
|
20466
20701
|
};
|
|
20467
20702
|
}
|
|
20468
20703
|
|
|
20704
|
+
// src/lib/memory/store/remoteStore.ts
|
|
20705
|
+
var import_uuid5 = require("uuid");
|
|
20706
|
+
init_logger();
|
|
20707
|
+
function relevant(change, options) {
|
|
20708
|
+
return options.includeDeleted ? change === "membership" : change !== "embedding" || !!options.embeddings;
|
|
20709
|
+
}
|
|
20710
|
+
function safely(onChange) {
|
|
20711
|
+
try {
|
|
20712
|
+
onChange();
|
|
20713
|
+
} catch (error) {
|
|
20714
|
+
getLogger().warn("[memory/remote-store] Subscriber threw:", error);
|
|
20715
|
+
}
|
|
20716
|
+
}
|
|
20717
|
+
var MAX_BATCH = 50;
|
|
20718
|
+
var MAX_QUERY_IDS = 1e3;
|
|
20719
|
+
var MAX_QUERY_TOPICS = 100;
|
|
20720
|
+
var MAX_QUERY_FILTER = 20;
|
|
20721
|
+
var RemoteMemoryPartialCreateError = class extends Error {
|
|
20722
|
+
constructor(created, cause) {
|
|
20723
|
+
super(`createMany stored ${created.length} memories before a batch failed`);
|
|
20724
|
+
this.created = created;
|
|
20725
|
+
this.cause = cause;
|
|
20726
|
+
this.name = "RemoteMemoryPartialCreateError";
|
|
20727
|
+
}
|
|
20728
|
+
};
|
|
20729
|
+
function warnFailed(failed) {
|
|
20730
|
+
if (failed.length)
|
|
20731
|
+
getLogger().warn(
|
|
20732
|
+
`[memory/remote-store] Skipping ${failed.length} undecryptable row(s)`,
|
|
20733
|
+
failed.map((failure) => failure.memory_id)
|
|
20734
|
+
);
|
|
20735
|
+
}
|
|
20736
|
+
function bounded(filters, key) {
|
|
20737
|
+
const values = filters[key];
|
|
20738
|
+
if (!values || values.length <= MAX_QUERY_FILTER) return [filters];
|
|
20739
|
+
return chunks(values, MAX_QUERY_FILTER).map((chunk) => ({ ...filters, [key]: chunk }));
|
|
20740
|
+
}
|
|
20741
|
+
function chunks(values, size) {
|
|
20742
|
+
const out = [];
|
|
20743
|
+
for (let i = 0; i < values.length; i += size) out.push(values.slice(i, i + size));
|
|
20744
|
+
return out;
|
|
20745
|
+
}
|
|
20746
|
+
function stateFilters(options) {
|
|
20747
|
+
return {
|
|
20748
|
+
include_deleted: options.includeDeleted,
|
|
20749
|
+
include_archived: options.includeArchived,
|
|
20750
|
+
include_quarantined: options.includeQuarantined,
|
|
20751
|
+
include_superseded: options.includeSuperseded
|
|
20752
|
+
};
|
|
20753
|
+
}
|
|
20754
|
+
function hidden(memory, options) {
|
|
20755
|
+
if (memory.trust_tier === "quarantined") return true;
|
|
20756
|
+
if (options.includeDeleted) return false;
|
|
20757
|
+
return !!memory.is_deleted || memory.archived_at !== void 0 && memory.archived_at !== null || !!memory.superseded_by;
|
|
20758
|
+
}
|
|
20759
|
+
function subscriptionKey({ memory, version }, options) {
|
|
20760
|
+
if (hidden(memory, options)) return void 0;
|
|
20761
|
+
if (options.includeDeleted) return String(!!memory.is_deleted);
|
|
20762
|
+
return JSON.stringify([
|
|
20763
|
+
options.embeddings ? version : null,
|
|
20764
|
+
memory.content,
|
|
20765
|
+
memory.scope,
|
|
20766
|
+
memory.updated_at,
|
|
20767
|
+
memory.fact_type,
|
|
20768
|
+
memory.event_time_start,
|
|
20769
|
+
memory.event_time_end,
|
|
20770
|
+
memory.event_time_kind,
|
|
20771
|
+
memory.trust_tier,
|
|
20772
|
+
memory.visibility,
|
|
20773
|
+
memory.published_at,
|
|
20774
|
+
memory.geohash,
|
|
20775
|
+
memory.topics,
|
|
20776
|
+
memory.topics_user_managed,
|
|
20777
|
+
memory.media,
|
|
20778
|
+
memory.source
|
|
20779
|
+
]);
|
|
20780
|
+
}
|
|
20781
|
+
function topicInputs(topics, source) {
|
|
20782
|
+
return topics.flatMap((topic) => {
|
|
20783
|
+
const name = (typeof topic === "string" ? topic : topic.name).trim();
|
|
20784
|
+
const kind = typeof topic === "string" ? void 0 : topic.kind;
|
|
20785
|
+
return name ? [{ name, ...kind && { kind }, source }] : [];
|
|
20786
|
+
});
|
|
20787
|
+
}
|
|
20788
|
+
function mergeTopics(existing, added) {
|
|
20789
|
+
const byName = /* @__PURE__ */ new Map();
|
|
20790
|
+
for (const topic of [...existing, ...added]) {
|
|
20791
|
+
const key = normalizeEntityName(topic.name);
|
|
20792
|
+
if (!byName.has(key)) byName.set(key, topic);
|
|
20793
|
+
}
|
|
20794
|
+
return [...byName.values()];
|
|
20795
|
+
}
|
|
20796
|
+
function canonicalTopics(row) {
|
|
20797
|
+
return new Set((parseTopics(row.topics) ?? []).map((topic) => normalizeEntityName(topic.name)));
|
|
20798
|
+
}
|
|
20799
|
+
function createRemoteMemoryStore(options) {
|
|
20800
|
+
const { persistence, embeddingOptions } = options;
|
|
20801
|
+
const model = embeddingOptions.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
20802
|
+
const pollIntervalMs = options.pollIntervalMs ?? 6e4;
|
|
20803
|
+
const pipeline = createRemoteMemoryPipeline(options);
|
|
20804
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
20805
|
+
const seen = /* @__PURE__ */ new Map();
|
|
20806
|
+
let timer;
|
|
20807
|
+
const notify = (change, records = []) => {
|
|
20808
|
+
if (timer) for (const record2 of records) seen.set(record2.memory.memory_id, record2);
|
|
20809
|
+
for (const subscriber of [...subscribers])
|
|
20810
|
+
if (relevant(change, subscriber.options)) safely(subscriber.onChange);
|
|
20811
|
+
};
|
|
20812
|
+
const enumerate = async (filters, max = Infinity) => {
|
|
20813
|
+
const records = [];
|
|
20814
|
+
let cursor2;
|
|
20815
|
+
do {
|
|
20816
|
+
const page = await persistence.query({
|
|
20817
|
+
...filters,
|
|
20818
|
+
limit: Math.min(200, Math.max(1, max - records.length)),
|
|
20819
|
+
...cursor2 && { cursor: cursor2 }
|
|
20820
|
+
});
|
|
20821
|
+
warnFailed(page.failed);
|
|
20822
|
+
records.push(...page.items);
|
|
20823
|
+
cursor2 = page.next_cursor;
|
|
20824
|
+
} while (cursor2 && records.length < max);
|
|
20825
|
+
return records.slice(0, max);
|
|
20826
|
+
};
|
|
20827
|
+
const enumerateIds = async (ids, filters) => (await Promise.all(
|
|
20828
|
+
chunks([...new Set(ids)], MAX_QUERY_IDS).map(
|
|
20829
|
+
(memory_ids) => enumerate({ ...filters, memory_ids })
|
|
20830
|
+
)
|
|
20831
|
+
)).flat();
|
|
20832
|
+
const queues = /* @__PURE__ */ new Map();
|
|
20833
|
+
const serialized = (id, task) => {
|
|
20834
|
+
const run = (queues.get(id) ?? Promise.resolve()).then(task, task);
|
|
20835
|
+
const settled = run.catch(() => void 0);
|
|
20836
|
+
queues.set(id, settled);
|
|
20837
|
+
void settled.then(() => {
|
|
20838
|
+
if (queues.get(id) === settled) queues.delete(id);
|
|
20839
|
+
});
|
|
20840
|
+
return run;
|
|
20841
|
+
};
|
|
20842
|
+
const live = async (id) => {
|
|
20843
|
+
const record2 = await persistence.get(id);
|
|
20844
|
+
return record2 && !record2.memory.is_deleted ? record2 : null;
|
|
20845
|
+
};
|
|
20846
|
+
const mutate = async (id, change, edit) => serialized(id, async () => {
|
|
20847
|
+
const record2 = await live(id);
|
|
20848
|
+
if (!record2) return null;
|
|
20849
|
+
const next = edit(structuredClone(record2.memory));
|
|
20850
|
+
if (!next) return null;
|
|
20851
|
+
const saved = await persistence.put(next, record2);
|
|
20852
|
+
notify(change, [saved]);
|
|
20853
|
+
return saved;
|
|
20854
|
+
});
|
|
20855
|
+
const embedInBackground = ({ memory: { memory_id: id, content } }) => {
|
|
20856
|
+
generateEmbedding(content, embeddingOptions).then(
|
|
20857
|
+
(vector) => serialized(id, async () => {
|
|
20858
|
+
const current = await live(id);
|
|
20859
|
+
if (!current || current.memory.content !== content || current.memory.embedding?.length)
|
|
20860
|
+
return;
|
|
20861
|
+
const saved = await persistence.put(
|
|
20862
|
+
{ ...current.memory, embedding: storedVector(vector), embedding_model: model },
|
|
20863
|
+
current
|
|
20864
|
+
);
|
|
20865
|
+
notify("embedding", [saved]);
|
|
20866
|
+
})
|
|
20867
|
+
).catch((error) => {
|
|
20868
|
+
getLogger().warn("[memory/remote-store] Failed to embed memory:", error);
|
|
20869
|
+
});
|
|
20870
|
+
};
|
|
20871
|
+
const newRow = (input) => {
|
|
20872
|
+
const now = Date.now();
|
|
20873
|
+
const scope = input.scope ?? "private";
|
|
20874
|
+
return {
|
|
20875
|
+
memory_id: (0, import_uuid5.v7)(),
|
|
20876
|
+
content: input.content,
|
|
20877
|
+
scope,
|
|
20878
|
+
level: levelFromScope(scope),
|
|
20879
|
+
created_at: now,
|
|
20880
|
+
updated_at: now,
|
|
20881
|
+
is_deleted: false,
|
|
20882
|
+
...input.embedding !== void 0 && {
|
|
20883
|
+
embedding: storedVector(JSON.parse(input.embedding)),
|
|
20884
|
+
embedding_model: input.embeddingModel ?? model
|
|
20885
|
+
},
|
|
20886
|
+
proof_count: 1,
|
|
20887
|
+
source: "manual",
|
|
20888
|
+
...input.eventTime && {
|
|
20889
|
+
event_time_start: input.eventTime.start ?? void 0,
|
|
20890
|
+
event_time_end: input.eventTime.end ?? void 0,
|
|
20891
|
+
event_time_kind: input.eventTime.kind ?? void 0
|
|
20892
|
+
},
|
|
20893
|
+
fact_type: input.factType,
|
|
20894
|
+
geohash: input.geohash,
|
|
20895
|
+
visibility: "private",
|
|
20896
|
+
twin_opt_in: false
|
|
20897
|
+
};
|
|
20898
|
+
};
|
|
20899
|
+
const created = (records, inputs) => {
|
|
20900
|
+
records.forEach((record2, i) => {
|
|
20901
|
+
if (inputs[i].embedding === void 0) embedInBackground(record2);
|
|
20902
|
+
});
|
|
20903
|
+
notify("membership", records);
|
|
20904
|
+
return records.map((record2) => stored(record2.memory));
|
|
20905
|
+
};
|
|
20906
|
+
const asStored = (record2) => record2 ? stored(record2.memory) : null;
|
|
20907
|
+
const everyState = {
|
|
20908
|
+
include_deleted: true,
|
|
20909
|
+
include_archived: true,
|
|
20910
|
+
include_quarantined: true,
|
|
20911
|
+
include_superseded: true
|
|
20912
|
+
};
|
|
20913
|
+
const changesSince = async (cursor2, pending2) => {
|
|
20914
|
+
const records = [];
|
|
20915
|
+
const failed = /* @__PURE__ */ new Set();
|
|
20916
|
+
const collect = (page) => {
|
|
20917
|
+
warnFailed(page.failed);
|
|
20918
|
+
records.push(...page.items);
|
|
20919
|
+
for (const failure of page.failed) failed.add(failure.memory_id);
|
|
20920
|
+
};
|
|
20921
|
+
let resume = cursor2;
|
|
20922
|
+
let next;
|
|
20923
|
+
do {
|
|
20924
|
+
const page = await persistence.query({
|
|
20925
|
+
...everyState,
|
|
20926
|
+
order: "changed",
|
|
20927
|
+
limit: 200,
|
|
20928
|
+
...(next ?? resume) && { cursor: next ?? resume }
|
|
20929
|
+
});
|
|
20930
|
+
collect(page);
|
|
20931
|
+
resume = page.changes_cursor ?? resume;
|
|
20932
|
+
next = page.next_cursor;
|
|
20933
|
+
} while (next);
|
|
20934
|
+
for (const memory_ids of chunks([...pending2], MAX_QUERY_IDS)) {
|
|
20935
|
+
let retry;
|
|
20936
|
+
do {
|
|
20937
|
+
const page = await persistence.query({
|
|
20938
|
+
...everyState,
|
|
20939
|
+
memory_ids,
|
|
20940
|
+
limit: 200,
|
|
20941
|
+
...retry && { cursor: retry }
|
|
20942
|
+
});
|
|
20943
|
+
collect(page);
|
|
20944
|
+
retry = page.next_cursor;
|
|
20945
|
+
} while (retry);
|
|
20946
|
+
}
|
|
20947
|
+
return { records, resume, failed };
|
|
20948
|
+
};
|
|
20949
|
+
let generation = 0;
|
|
20950
|
+
let ready = false;
|
|
20951
|
+
let cursor;
|
|
20952
|
+
let pending = /* @__PURE__ */ new Set();
|
|
20953
|
+
let polling = false;
|
|
20954
|
+
const poll = () => {
|
|
20955
|
+
if (polling) return;
|
|
20956
|
+
polling = true;
|
|
20957
|
+
const current = generation;
|
|
20958
|
+
changesSince(cursor, pending).then(({ records, resume, failed }) => {
|
|
20959
|
+
if (current !== generation) return;
|
|
20960
|
+
const changed = /* @__PURE__ */ new Set();
|
|
20961
|
+
for (const record2 of records) {
|
|
20962
|
+
const id = record2.memory.memory_id;
|
|
20963
|
+
const previous = seen.get(id);
|
|
20964
|
+
seen.set(id, record2);
|
|
20965
|
+
if (!ready) continue;
|
|
20966
|
+
for (const subscriber of subscribers) {
|
|
20967
|
+
const before = previous && subscriptionKey(previous, subscriber.options);
|
|
20968
|
+
if (before !== subscriptionKey(record2, subscriber.options)) changed.add(subscriber);
|
|
20969
|
+
}
|
|
20970
|
+
}
|
|
20971
|
+
ready = true;
|
|
20972
|
+
cursor = resume;
|
|
20973
|
+
pending = failed;
|
|
20974
|
+
for (const subscriber of changed)
|
|
20975
|
+
if (subscribers.has(subscriber)) safely(subscriber.onChange);
|
|
20976
|
+
}).catch((error) => {
|
|
20977
|
+
getLogger().warn("[memory/remote-store] Subscription poll failed:", error);
|
|
20978
|
+
}).finally(() => {
|
|
20979
|
+
polling = false;
|
|
20980
|
+
});
|
|
20981
|
+
};
|
|
20982
|
+
return {
|
|
20983
|
+
list: async (listOptions = {}) => {
|
|
20984
|
+
const order = listOptions.since ? "updated" : "created";
|
|
20985
|
+
const filters = {
|
|
20986
|
+
...stateFilters(listOptions),
|
|
20987
|
+
include_embeddings: true,
|
|
20988
|
+
order,
|
|
20989
|
+
...listOptions.scopes?.length && { scopes: listOptions.scopes },
|
|
20990
|
+
...listOptions.factTypes?.length && { fact_types: listOptions.factTypes },
|
|
20991
|
+
...listOptions.visibility?.length && { visibility: listOptions.visibility },
|
|
20992
|
+
...listOptions.since && { updated_after: listOptions.since.getTime() }
|
|
20993
|
+
};
|
|
20994
|
+
const max = listOptions.limit && listOptions.limit > 0 ? listOptions.limit : Infinity;
|
|
20995
|
+
const variants = bounded(filters, "scopes").flatMap((f) => bounded(f, "fact_types"));
|
|
20996
|
+
if (!listOptions.memoryIds && variants.length === 1)
|
|
20997
|
+
return (await enumerate(filters, max)).map((r) => stored(r.memory));
|
|
20998
|
+
const fetched = await Promise.all(
|
|
20999
|
+
variants.map(
|
|
21000
|
+
(variant) => listOptions.memoryIds ? enumerateIds(listOptions.memoryIds, variant) : enumerate(variant, max)
|
|
21001
|
+
)
|
|
21002
|
+
);
|
|
21003
|
+
const rows = [...new Map(fetched.flat().map((r) => [r.memory.memory_id, r])).values()].map((record2) => stored(record2.memory)).sort(
|
|
21004
|
+
(a, b) => order === "updated" ? b.updatedAt.getTime() - a.updatedAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1) : b.createdAt.getTime() - a.createdAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1)
|
|
21005
|
+
);
|
|
21006
|
+
return rows.slice(0, max);
|
|
21007
|
+
},
|
|
21008
|
+
get: async (id) => asStored(await live(id)),
|
|
21009
|
+
listArchived: async () => (await enumerate({ archived_only: true, order: "archived", include_embeddings: true })).map(
|
|
21010
|
+
(record2) => stored(record2.memory)
|
|
21011
|
+
),
|
|
21012
|
+
memoriesByTopics: async (names) => {
|
|
21013
|
+
const wanted = new Set(names.map(normalizeEntityName).filter(Boolean));
|
|
21014
|
+
const out = /* @__PURE__ */ new Map();
|
|
21015
|
+
const pages = await Promise.all(
|
|
21016
|
+
chunks([...wanted], MAX_QUERY_TOPICS).map((topics) => enumerate({ topics }))
|
|
21017
|
+
);
|
|
21018
|
+
for (const { memory } of pages.flat()) {
|
|
21019
|
+
const matched = [...canonicalTopics(memory)].filter((name) => wanted.has(name));
|
|
21020
|
+
if (matched.length) out.set(memory.memory_id, new Set(matched));
|
|
21021
|
+
}
|
|
21022
|
+
return out;
|
|
21023
|
+
},
|
|
21024
|
+
topicsByMemories: async (memoryIds) => {
|
|
21025
|
+
const out = /* @__PURE__ */ new Map();
|
|
21026
|
+
for (const { memory } of await enumerateIds(memoryIds, {
|
|
21027
|
+
include_archived: true,
|
|
21028
|
+
include_superseded: true,
|
|
21029
|
+
include_quarantined: true
|
|
21030
|
+
})) {
|
|
21031
|
+
const topics = canonicalTopics(memory);
|
|
21032
|
+
if (topics.size) out.set(memory.memory_id, topics);
|
|
21033
|
+
}
|
|
21034
|
+
return out;
|
|
21035
|
+
},
|
|
21036
|
+
create: async (input) => {
|
|
21037
|
+
const record2 = await persistence.put(newRow(input), 0);
|
|
21038
|
+
return created([record2], [input])[0];
|
|
21039
|
+
},
|
|
21040
|
+
createMany: async (inputs) => {
|
|
21041
|
+
const out = [];
|
|
21042
|
+
for (const batch of chunks(inputs, MAX_BATCH)) {
|
|
21043
|
+
let records;
|
|
21044
|
+
try {
|
|
21045
|
+
records = await persistence.putMany(
|
|
21046
|
+
batch.map((input) => ({ memory: newRow(input), expectedVersion: 0 }))
|
|
21047
|
+
);
|
|
21048
|
+
} catch (error) {
|
|
21049
|
+
if (out.length === 0) throw error;
|
|
21050
|
+
throw new RemoteMemoryPartialCreateError(out, error);
|
|
21051
|
+
}
|
|
21052
|
+
out.push(...created(records, batch));
|
|
21053
|
+
}
|
|
21054
|
+
return out;
|
|
21055
|
+
},
|
|
21056
|
+
update: async (id, patch) => {
|
|
21057
|
+
const saved = await mutate(id, "edit", (memory) => {
|
|
21058
|
+
if (memory.superseded_by) return null;
|
|
21059
|
+
memory.content = patch.content;
|
|
21060
|
+
memory.updated_at = Date.now();
|
|
21061
|
+
if (patch.scope !== void 0) {
|
|
21062
|
+
memory.level = levelForScopeChange(
|
|
21063
|
+
{ level: memory.level, scope: memory.scope },
|
|
21064
|
+
patch.scope
|
|
21065
|
+
);
|
|
21066
|
+
memory.scope = patch.scope;
|
|
21067
|
+
}
|
|
21068
|
+
if (patch.factType !== void 0) memory.fact_type = patch.factType ?? void 0;
|
|
21069
|
+
if (patch.eventTime !== void 0) {
|
|
21070
|
+
memory.event_time_start = patch.eventTime?.start ?? void 0;
|
|
21071
|
+
memory.event_time_end = patch.eventTime?.end ?? void 0;
|
|
21072
|
+
memory.event_time_kind = patch.eventTime?.kind ?? void 0;
|
|
21073
|
+
}
|
|
21074
|
+
if (patch.embedding === void 0 || patch.embedding === null) {
|
|
21075
|
+
memory.embedding = [];
|
|
21076
|
+
delete memory.embedding_model;
|
|
21077
|
+
} else {
|
|
21078
|
+
memory.embedding = storedVector(JSON.parse(patch.embedding));
|
|
21079
|
+
memory.embedding_model = patch.embeddingModel ?? model;
|
|
21080
|
+
}
|
|
21081
|
+
return memory;
|
|
21082
|
+
});
|
|
21083
|
+
if (saved && patch.embedding === void 0) embedInBackground(saved);
|
|
21084
|
+
return asStored(saved);
|
|
21085
|
+
},
|
|
21086
|
+
delete: async (id) => !!await mutate(id, "membership", (memory) => ({ ...memory, is_deleted: true })),
|
|
21087
|
+
supersede: async (id, supersededById) => {
|
|
21088
|
+
if (id === supersededById) return false;
|
|
21089
|
+
const [first, second] = [id, supersededById].sort();
|
|
21090
|
+
return serialized(
|
|
21091
|
+
first,
|
|
21092
|
+
() => serialized(second, async () => {
|
|
21093
|
+
const [old, next] = await Promise.all([live(id), live(supersededById)]);
|
|
21094
|
+
if (!old || !next || old.memory.superseded_by || next.memory.superseded_by) return false;
|
|
21095
|
+
if (old.memory.kind !== void 0 && old.memory.kind !== null) return false;
|
|
21096
|
+
const saved = await persistence.putMany([
|
|
21097
|
+
{
|
|
21098
|
+
memory: { ...old.memory, superseded_by: supersededById, superseded_at: Date.now() },
|
|
21099
|
+
expectedVersion: old
|
|
21100
|
+
},
|
|
21101
|
+
{ memory: next.memory, expectedVersion: next }
|
|
21102
|
+
]);
|
|
21103
|
+
notify("membership", saved);
|
|
21104
|
+
return true;
|
|
21105
|
+
})
|
|
21106
|
+
);
|
|
21107
|
+
},
|
|
21108
|
+
archive: async (id) => !!await mutate(
|
|
21109
|
+
id,
|
|
21110
|
+
"edit",
|
|
21111
|
+
(memory) => memory.archived_at === void 0 || memory.archived_at === null ? { ...memory, archived_at: Date.now() } : null
|
|
21112
|
+
),
|
|
21113
|
+
restore: (id) => serialized(id, async () => {
|
|
21114
|
+
const record2 = await live(id);
|
|
21115
|
+
if (!record2) return false;
|
|
21116
|
+
if (record2.memory.archived_at === void 0 || record2.memory.archived_at === null)
|
|
21117
|
+
return true;
|
|
21118
|
+
const { archived_at: _archivedAt, ...memory } = record2.memory;
|
|
21119
|
+
notify("edit", [await persistence.put(memory, record2)]);
|
|
21120
|
+
return true;
|
|
21121
|
+
}),
|
|
21122
|
+
setTopics: async (memoryId, topics) => asStored(
|
|
21123
|
+
await mutate(memoryId, "edit", (memory) => ({
|
|
21124
|
+
...memory,
|
|
21125
|
+
topics: serializeTopics(mergeTopics([], topicInputs(topics, "user"))),
|
|
21126
|
+
topics_user_managed: true,
|
|
21127
|
+
topics_updated_at: Date.now()
|
|
21128
|
+
}))
|
|
21129
|
+
),
|
|
21130
|
+
addTopics: async (memoryId, topics) => {
|
|
21131
|
+
const added = topicInputs(topics, "auto");
|
|
21132
|
+
const saved = await mutate(memoryId, "edit", (memory) => ({
|
|
21133
|
+
...memory,
|
|
21134
|
+
topics: serializeTopics(mergeTopics(parseTopics(memory.topics) ?? [], added)),
|
|
21135
|
+
topics_updated_at: Date.now()
|
|
21136
|
+
}));
|
|
21137
|
+
if (!saved) return [];
|
|
21138
|
+
const now = /* @__PURE__ */ new Date();
|
|
21139
|
+
return mergeTopics([], added).map(
|
|
21140
|
+
(topic) => ({
|
|
21141
|
+
uniqueId: normalizeEntityName(topic.name),
|
|
21142
|
+
canonicalName: normalizeEntityName(topic.name),
|
|
21143
|
+
kind: topic.kind ?? null,
|
|
21144
|
+
createdAt: now,
|
|
21145
|
+
updatedAt: now
|
|
21146
|
+
})
|
|
21147
|
+
);
|
|
21148
|
+
},
|
|
21149
|
+
setVisibility: async (id, visibility, visibilityOptions) => asStored(
|
|
21150
|
+
await mutate(id, "edit", (memory) => {
|
|
21151
|
+
memory.visibility = visibility;
|
|
21152
|
+
if (visibility === "private") delete memory.published_at;
|
|
21153
|
+
else memory.published_at ?? (memory.published_at = Date.now());
|
|
21154
|
+
if (visibilityOptions?.twinOptIn !== void 0)
|
|
21155
|
+
memory.twin_opt_in = visibilityOptions.twinOptIn;
|
|
21156
|
+
return memory;
|
|
21157
|
+
})
|
|
21158
|
+
),
|
|
21159
|
+
recall: (query, recallOptions) => pipeline.recall(query, recallOptions),
|
|
21160
|
+
retain: async (content, retainOptions) => {
|
|
21161
|
+
const result = await pipeline.retain(content, retainOptions);
|
|
21162
|
+
if (result.action === "create" || result.action === "supersede") notify("membership");
|
|
21163
|
+
else if (result.action === "update" || result.action === "merge") notify("edit");
|
|
21164
|
+
return result;
|
|
21165
|
+
},
|
|
21166
|
+
subscribe: (onChange, subscribeOptions = {}) => {
|
|
21167
|
+
const subscriber = { onChange, options: subscribeOptions };
|
|
21168
|
+
subscribers.add(subscriber);
|
|
21169
|
+
if (pollIntervalMs > 0 && !timer) {
|
|
21170
|
+
timer = setInterval(poll, pollIntervalMs);
|
|
21171
|
+
poll();
|
|
21172
|
+
}
|
|
21173
|
+
return () => {
|
|
21174
|
+
subscribers.delete(subscriber);
|
|
21175
|
+
if (subscribers.size || !timer) return;
|
|
21176
|
+
clearInterval(timer);
|
|
21177
|
+
timer = void 0;
|
|
21178
|
+
generation++;
|
|
21179
|
+
seen.clear();
|
|
21180
|
+
ready = false;
|
|
21181
|
+
cursor = void 0;
|
|
21182
|
+
pending = /* @__PURE__ */ new Set();
|
|
21183
|
+
};
|
|
21184
|
+
}
|
|
21185
|
+
};
|
|
21186
|
+
}
|
|
21187
|
+
|
|
20469
21188
|
// src/lib/memory/synthesizeProfile.ts
|
|
20470
21189
|
init_internalFlowMarker();
|
|
20471
21190
|
init_logger();
|
|
@@ -20838,8 +21557,8 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
20838
21557
|
memories
|
|
20839
21558
|
});
|
|
20840
21559
|
const noEvidence = result.basedOn.memoryIds.length === 0;
|
|
20841
|
-
const { text:
|
|
20842
|
-
if (!
|
|
21560
|
+
const { text: text13, legitimateEmpty } = extractFacetText(result.structuredOutput);
|
|
21561
|
+
if (!text13 && !legitimateEmpty && !noEvidence) {
|
|
20843
21562
|
getLogger().warn(
|
|
20844
21563
|
"[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
|
|
20845
21564
|
{ facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
|
|
@@ -20849,12 +21568,12 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
20849
21568
|
const section = {
|
|
20850
21569
|
key: facet.key,
|
|
20851
21570
|
label: facet.label,
|
|
20852
|
-
text:
|
|
21571
|
+
text: text13,
|
|
20853
21572
|
sourceMemoryIds: result.basedOn.memoryIds,
|
|
20854
21573
|
generatedAt: Date.now()
|
|
20855
21574
|
};
|
|
20856
|
-
if (options.redactor &&
|
|
20857
|
-
const redacted = await options.redactor.redactTextAsync(
|
|
21575
|
+
if (options.redactor && text13) {
|
|
21576
|
+
const redacted = await options.redactor.redactTextAsync(text13);
|
|
20858
21577
|
section.text = redacted.text;
|
|
20859
21578
|
}
|
|
20860
21579
|
if (!legitimateEmpty && !noEvidence) {
|
|
@@ -21367,10 +22086,10 @@ function createDurableAutoExtractor(options) {
|
|
|
21367
22086
|
const counted = error instanceof BatchFailureError || error instanceof LockedSourcesError && error.persistentIds.length > 0;
|
|
21368
22087
|
if (!counted) return false;
|
|
21369
22088
|
const prior = sessionFailures.get(job.id);
|
|
21370
|
-
const
|
|
21371
|
-
sessionFailures.set(job.id, { head, count });
|
|
22089
|
+
const count2 = prior?.head === head ? prior.count + 1 : 1;
|
|
22090
|
+
sessionFailures.set(job.id, { head, count: count2 });
|
|
21372
22091
|
const terminal = error instanceof BatchFailureError && error.terminal;
|
|
21373
|
-
if (!terminal &&
|
|
22092
|
+
if (!terminal && count2 < MAX_ATTEMPTS) return false;
|
|
21374
22093
|
skippedThisSession.add(job.id);
|
|
21375
22094
|
const now = clock();
|
|
21376
22095
|
const lastCounted = failedAtOf(job, head);
|
|
@@ -21677,7 +22396,7 @@ async function verifyFactSupport(items, options) {
|
|
|
21677
22396
|
}
|
|
21678
22397
|
const maxEvidenceChars = Math.max(1, options.maxEvidenceChars ?? DEFAULT_MAX_EVIDENCE_CHARS);
|
|
21679
22398
|
const redactor = resolvePiiRedactor(options.piiRedaction ?? true);
|
|
21680
|
-
const safe = async (
|
|
22399
|
+
const safe = async (text13) => redactor ? (await redactor.redactTextAsync(text13)).text : text13;
|
|
21681
22400
|
let truncatedCount = 0;
|
|
21682
22401
|
const parts = [];
|
|
21683
22402
|
for (const [i, item] of items.entries()) {
|
|
@@ -21734,7 +22453,7 @@ Which item numbers are supported?`,
|
|
|
21734
22453
|
}
|
|
21735
22454
|
return supported;
|
|
21736
22455
|
}
|
|
21737
|
-
function parseSupported(parsed,
|
|
22456
|
+
function parseSupported(parsed, count2) {
|
|
21738
22457
|
if (typeof parsed !== "object" || parsed === null) return null;
|
|
21739
22458
|
const list = parsed.supported;
|
|
21740
22459
|
if (!Array.isArray(list)) return null;
|
|
@@ -21742,7 +22461,7 @@ function parseSupported(parsed, count) {
|
|
|
21742
22461
|
for (const raw of list) {
|
|
21743
22462
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
21744
22463
|
if (!Number.isInteger(n)) continue;
|
|
21745
|
-
if (n >= 1 && n <=
|
|
22464
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
21746
22465
|
}
|
|
21747
22466
|
return out;
|
|
21748
22467
|
}
|
|
@@ -21793,7 +22512,7 @@ async function verifyMemoriesForPublish(memories, sources, options) {
|
|
|
21793
22512
|
);
|
|
21794
22513
|
const pending = [];
|
|
21795
22514
|
for (const { index, uniqueId, content, ids } of withinBudget) {
|
|
21796
|
-
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((
|
|
22515
|
+
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((text13) => text13 !== null);
|
|
21797
22516
|
const dropped = ids.length - evidence.length;
|
|
21798
22517
|
if (ids.some((id) => unreadable.has(id))) {
|
|
21799
22518
|
results[index] = {
|
|
@@ -22296,22 +23015,22 @@ function normalizeManualFactType(value) {
|
|
|
22296
23015
|
function isSharedScope(scope) {
|
|
22297
23016
|
return scope === "shared";
|
|
22298
23017
|
}
|
|
22299
|
-
async function notifyWritten(options, input,
|
|
23018
|
+
async function notifyWritten(options, input, outcome2) {
|
|
22300
23019
|
try {
|
|
22301
|
-
await options?.onWritten?.({ input, outcome });
|
|
23020
|
+
await options?.onWritten?.({ input, outcome: outcome2 });
|
|
22302
23021
|
} catch {
|
|
22303
23022
|
}
|
|
22304
23023
|
}
|
|
22305
|
-
function describeWriteOutcome(
|
|
22306
|
-
switch (
|
|
23024
|
+
function describeWriteOutcome(outcome2) {
|
|
23025
|
+
switch (outcome2.action) {
|
|
22307
23026
|
case "create":
|
|
22308
|
-
return `Memory saved successfully (ID: ${
|
|
23027
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}).`;
|
|
22309
23028
|
case "update":
|
|
22310
23029
|
case "supersede":
|
|
22311
|
-
return `Memory saved successfully (ID: ${
|
|
23030
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}); it replaces an earlier version of this fact.`;
|
|
22312
23031
|
case "merge":
|
|
22313
23032
|
case "skip":
|
|
22314
|
-
return `The vault already holds this fact (ID: ${
|
|
23033
|
+
return `The vault already holds this fact (ID: ${outcome2.memoryId}); it was noted as re-observed. Nothing new was created \u2014 do not save it again.`;
|
|
22315
23034
|
case "suppressed":
|
|
22316
23035
|
return "Not saved: this matches a memory the user previously deleted. Do not re-save it.";
|
|
22317
23036
|
}
|
|
@@ -22417,9 +23136,9 @@ function createMemoryVaultTool(vaultCtx, options, embeddingOptions, cache) {
|
|
|
22417
23136
|
...folderId !== void 0 && { folderId },
|
|
22418
23137
|
...factType !== void 0 && { factType }
|
|
22419
23138
|
};
|
|
22420
|
-
const
|
|
22421
|
-
await notifyWritten(options, input,
|
|
22422
|
-
return describeWriteOutcome(
|
|
23139
|
+
const outcome2 = await options.write(input);
|
|
23140
|
+
await notifyWritten(options, input, outcome2);
|
|
23141
|
+
return describeWriteOutcome(outcome2);
|
|
22423
23142
|
}
|
|
22424
23143
|
const created = await createVaultMemoryOp(vaultCtx, {
|
|
22425
23144
|
content,
|
|
@@ -22903,8 +23622,8 @@ var sessionCache = /* @__PURE__ */ new Map();
|
|
|
22903
23622
|
function generateRequestId() {
|
|
22904
23623
|
return ++requestIdCounter;
|
|
22905
23624
|
}
|
|
22906
|
-
function parseSSEResponse(
|
|
22907
|
-
const events =
|
|
23625
|
+
function parseSSEResponse(text13) {
|
|
23626
|
+
const events = text13.split(/\n\n+/);
|
|
22908
23627
|
let lastEventData = "";
|
|
22909
23628
|
for (const event of events) {
|
|
22910
23629
|
const dataLines = [];
|
|
@@ -22926,11 +23645,11 @@ function parseSSEResponse(text12) {
|
|
|
22926
23645
|
}
|
|
22927
23646
|
async function parseResponseBody(response) {
|
|
22928
23647
|
const contentType = response.headers.get("Content-Type") || "";
|
|
22929
|
-
const
|
|
22930
|
-
if (contentType.includes("text/event-stream") ||
|
|
22931
|
-
return parseSSEResponse(
|
|
23648
|
+
const text13 = await response.text();
|
|
23649
|
+
if (contentType.includes("text/event-stream") || text13.startsWith("event:") || text13.startsWith("data:")) {
|
|
23650
|
+
return parseSSEResponse(text13);
|
|
22932
23651
|
}
|
|
22933
|
-
return JSON.parse(
|
|
23652
|
+
return JSON.parse(text13);
|
|
22934
23653
|
}
|
|
22935
23654
|
async function initializeMCPSession(accessToken) {
|
|
22936
23655
|
const requestId = generateRequestId();
|
|
@@ -23891,7 +24610,7 @@ function useChat(options) {
|
|
|
23891
24610
|
|
|
23892
24611
|
// src/expo/useChatStorage.ts
|
|
23893
24612
|
var import_react5 = require("react");
|
|
23894
|
-
var
|
|
24613
|
+
var import_uuid7 = require("uuid");
|
|
23895
24614
|
init_clientConfig();
|
|
23896
24615
|
|
|
23897
24616
|
// src/lib/chat/assembleMessages.ts
|
|
@@ -24067,9 +24786,9 @@ New lines of conversation:
|
|
|
24067
24786
|
{new_lines}
|
|
24068
24787
|
|
|
24069
24788
|
New summary:`;
|
|
24070
|
-
function estimateTokens(
|
|
24071
|
-
if (!
|
|
24072
|
-
return Math.ceil(
|
|
24789
|
+
function estimateTokens(text13) {
|
|
24790
|
+
if (!text13) return 0;
|
|
24791
|
+
return Math.ceil(text13.length / 4);
|
|
24073
24792
|
}
|
|
24074
24793
|
var PER_MESSAGE_OVERHEAD_TOKENS = 4;
|
|
24075
24794
|
var MAX_MESSAGES_PER_SUMMARIZATION = 20;
|
|
@@ -24129,14 +24848,14 @@ function splitMessagesAtThreshold(messages, tokenThreshold, minWindowMessages) {
|
|
|
24129
24848
|
}
|
|
24130
24849
|
async function redactSummaryPrompt(prompt, redactor, onPiiRedacted) {
|
|
24131
24850
|
if (!redactor) return prompt;
|
|
24132
|
-
const { text:
|
|
24851
|
+
const { text: text13, matches } = await redactor.redactTextAsync(prompt);
|
|
24133
24852
|
if (matches.length > 0 && onPiiRedacted) {
|
|
24134
24853
|
try {
|
|
24135
24854
|
onPiiRedacted(matches);
|
|
24136
24855
|
} catch {
|
|
24137
24856
|
}
|
|
24138
24857
|
}
|
|
24139
|
-
return
|
|
24858
|
+
return text13;
|
|
24140
24859
|
}
|
|
24141
24860
|
async function progressiveSummarize(options) {
|
|
24142
24861
|
const {
|
|
@@ -24554,9 +25273,9 @@ async function decryptMediaFields(media, address, signMessage, embeddedWalletSig
|
|
|
24554
25273
|
}
|
|
24555
25274
|
|
|
24556
25275
|
// src/lib/db/media/types.ts
|
|
24557
|
-
var
|
|
25276
|
+
var import_uuid6 = require("uuid");
|
|
24558
25277
|
function generateMediaId() {
|
|
24559
|
-
return `media_${(0,
|
|
25278
|
+
return `media_${(0, import_uuid6.v7)()}`;
|
|
24560
25279
|
}
|
|
24561
25280
|
|
|
24562
25281
|
// src/lib/db/media/operations.ts
|
|
@@ -24868,7 +25587,7 @@ function useChatStorage(options) {
|
|
|
24868
25587
|
[piiRedaction, currentConversationId]
|
|
24869
25588
|
);
|
|
24870
25589
|
const maskForEmbedding = (0, import_react5.useCallback)(
|
|
24871
|
-
(
|
|
25590
|
+
(text13) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text13) : text13,
|
|
24872
25591
|
[resolvedPiiRedaction]
|
|
24873
25592
|
);
|
|
24874
25593
|
const maskEmbeddingInput = isPiiRedactor(resolvedPiiRedaction) ? maskForEmbedding : void 0;
|
|
@@ -25512,12 +26231,12 @@ function useChatStorage(options) {
|
|
|
25512
26231
|
return {
|
|
25513
26232
|
callRedactor: redactor,
|
|
25514
26233
|
callPiiRedaction: forInnerSend,
|
|
25515
|
-
maskForCall: (
|
|
26234
|
+
maskForCall: (text13) => redactor ? redactor.maskText(text13) : text13
|
|
25516
26235
|
};
|
|
25517
26236
|
};
|
|
25518
26237
|
pendingResumeRef.current = null;
|
|
25519
|
-
const effectiveAssistantUniqueId = assistantUniqueId ?? (resumable ? `msg_${(0,
|
|
25520
|
-
const embedToolText = (
|
|
26238
|
+
const effectiveAssistantUniqueId = assistantUniqueId ?? (resumable ? `msg_${(0, import_uuid7.v7)()}` : void 0);
|
|
26239
|
+
const embedToolText = (text13, mask, masked, token) => {
|
|
25521
26240
|
const opts = {
|
|
25522
26241
|
getToken: token,
|
|
25523
26242
|
baseUrl,
|
|
@@ -25525,10 +26244,10 @@ function useChatStorage(options) {
|
|
|
25525
26244
|
maskInput: mask,
|
|
25526
26245
|
cache: embeddingCache ? maskScopedEmbeddingCache(embeddingCache, masked) : void 0
|
|
25527
26246
|
};
|
|
25528
|
-
return shouldChunkMessage(
|
|
25529
|
-
chunkText(
|
|
26247
|
+
return shouldChunkMessage(text13, DEFAULT_CHUNK_SIZE) ? generateEmbeddings(
|
|
26248
|
+
chunkText(text13).map((c) => c.text),
|
|
25530
26249
|
opts
|
|
25531
|
-
) : generateEmbedding(
|
|
26250
|
+
) : generateEmbedding(text13, opts);
|
|
25532
26251
|
};
|
|
25533
26252
|
if (walletAddress && signMessage && !hasEncryptionKey(walletAddress)) {
|
|
25534
26253
|
try {
|
|
@@ -26034,7 +26753,7 @@ function useChatStorage(options) {
|
|
|
26034
26753
|
const detachedResult = result;
|
|
26035
26754
|
if (detachedResult.detached) {
|
|
26036
26755
|
recordToolSetTurn(database, convId, matchedToolSets);
|
|
26037
|
-
const rowId = effectiveAssistantUniqueId ?? `msg_${(0,
|
|
26756
|
+
const rowId = effectiveAssistantUniqueId ?? `msg_${(0, import_uuid7.v7)()}`;
|
|
26038
26757
|
pendingResumeRef.current = {
|
|
26039
26758
|
handle: detachedResult.resume ?? null,
|
|
26040
26759
|
convId,
|
|
@@ -26546,6 +27265,7 @@ function useChatStorage(options) {
|
|
|
26546
27265
|
MEDIUM_TTL_MS,
|
|
26547
27266
|
MEMORY_KINDS,
|
|
26548
27267
|
MEMORY_LEVELS,
|
|
27268
|
+
MemoryKeyError,
|
|
26549
27269
|
MemoryLevelError,
|
|
26550
27270
|
NEVER_TTL_MS,
|
|
26551
27271
|
NODE_BUDGET,
|
|
@@ -26558,6 +27278,7 @@ function useChatStorage(options) {
|
|
|
26558
27278
|
RECALL_MAX_LIMIT,
|
|
26559
27279
|
RECALL_TOOL_NAME,
|
|
26560
27280
|
RemoteMemoryError,
|
|
27281
|
+
RemoteMemoryPartialCreateError,
|
|
26561
27282
|
RerankerUnavailableError,
|
|
26562
27283
|
SDK_SCHEMA_VERSION,
|
|
26563
27284
|
SHORT_TTL_MS,
|
|
@@ -26623,6 +27344,7 @@ function useChatStorage(options) {
|
|
|
26623
27344
|
createRecallTool,
|
|
26624
27345
|
createRemoteMemoryPersistence,
|
|
26625
27346
|
createRemoteMemoryPipeline,
|
|
27347
|
+
createRemoteMemoryStore,
|
|
26626
27348
|
createStockPricePreProcessor,
|
|
26627
27349
|
createStreamingDeAnonymizer,
|
|
26628
27350
|
createVaultEmbeddingCache,
|
|
@@ -26639,6 +27361,7 @@ function useChatStorage(options) {
|
|
|
26639
27361
|
deleteVaultMemoryOp,
|
|
26640
27362
|
dequantizeEmbedding,
|
|
26641
27363
|
deriveKeyFromSignatureBytes,
|
|
27364
|
+
deriveMemoryKeyRing,
|
|
26642
27365
|
discoverNotionOAuthEndpoints,
|
|
26643
27366
|
eagerEmbedContent,
|
|
26644
27367
|
embedAllMessages,
|
|
@@ -26650,6 +27373,7 @@ function useChatStorage(options) {
|
|
|
26650
27373
|
extractAndRetain,
|
|
26651
27374
|
extractEntitiesForMemories,
|
|
26652
27375
|
extractFacts,
|
|
27376
|
+
extractReservationReceipts,
|
|
26653
27377
|
formatFileProcessingNotes,
|
|
26654
27378
|
generateConversationId,
|
|
26655
27379
|
generateEmbedding,
|
|
@@ -26682,6 +27406,7 @@ function useChatStorage(options) {
|
|
|
26682
27406
|
isPiiRedactor,
|
|
26683
27407
|
isRerankerAvailable,
|
|
26684
27408
|
maskScopedEmbeddingCache,
|
|
27409
|
+
memoryCipher,
|
|
26685
27410
|
moveMemoriesToFolderOp,
|
|
26686
27411
|
noopLogger,
|
|
26687
27412
|
onKeyAvailable,
|
|
@@ -26691,6 +27416,7 @@ function useChatStorage(options) {
|
|
|
26691
27416
|
queueManager,
|
|
26692
27417
|
rankProfileCandidates,
|
|
26693
27418
|
recall,
|
|
27419
|
+
reencryptMemoryField,
|
|
26694
27420
|
reflect,
|
|
26695
27421
|
refreshEncryptionKeyIfMatches,
|
|
26696
27422
|
refreshNotionAccessToken,
|