@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/react/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({
|
|
@@ -1427,6 +1427,7 @@ __export(index_exports, {
|
|
|
1427
1427
|
MEMORY_KINDS: () => MEMORY_KINDS,
|
|
1428
1428
|
MEMORY_LEVELS: () => MEMORY_LEVELS,
|
|
1429
1429
|
MemoryEntityModel: () => MemoryEntity,
|
|
1430
|
+
MemoryKeyError: () => MemoryKeyError,
|
|
1430
1431
|
MemoryLevelError: () => MemoryLevelError,
|
|
1431
1432
|
NEVER_TTL_MS: () => NEVER_TTL_MS,
|
|
1432
1433
|
NODE_BUDGET: () => NODE_BUDGET,
|
|
@@ -1441,6 +1442,7 @@ __export(index_exports, {
|
|
|
1441
1442
|
RECALL_MAX_LIMIT: () => RECALL_MAX_LIMIT,
|
|
1442
1443
|
RECALL_TOOL_NAME: () => RECALL_TOOL_NAME,
|
|
1443
1444
|
RemoteMemoryError: () => RemoteMemoryError,
|
|
1445
|
+
RemoteMemoryPartialCreateError: () => RemoteMemoryPartialCreateError,
|
|
1444
1446
|
RerankerUnavailableError: () => RerankerUnavailableError,
|
|
1445
1447
|
SDK_SCHEMA_VERSION: () => SDK_SCHEMA_VERSION,
|
|
1446
1448
|
SERVER_TOOL_DEPENDENCY_SETS: () => SERVER_TOOL_DEPENDENCY_SETS,
|
|
@@ -1534,6 +1536,7 @@ __export(index_exports, {
|
|
|
1534
1536
|
createRecallTool: () => createRecallTool,
|
|
1535
1537
|
createRemoteMemoryPersistence: () => createRemoteMemoryPersistence,
|
|
1536
1538
|
createRemoteMemoryPipeline: () => createRemoteMemoryPipeline,
|
|
1539
|
+
createRemoteMemoryStore: () => createRemoteMemoryStore,
|
|
1537
1540
|
createSavedToolOp: () => createSavedToolOp,
|
|
1538
1541
|
createServerToolsFilter: () => createServerToolsFilter,
|
|
1539
1542
|
createStockPricePreProcessor: () => createStockPricePreProcessor,
|
|
@@ -1565,6 +1568,7 @@ __export(index_exports, {
|
|
|
1565
1568
|
deleteVaultMemoryOp: () => deleteVaultMemoryOp,
|
|
1566
1569
|
dequantizeEmbedding: () => dequantizeEmbedding,
|
|
1567
1570
|
deriveKeyFromSignatureBytes: () => deriveKeyFromSignatureBytes,
|
|
1571
|
+
deriveMemoryKeyRing: () => deriveMemoryKeyRing,
|
|
1568
1572
|
eagerEmbedContent: () => eagerEmbedContent,
|
|
1569
1573
|
embedAllMessages: () => embedAllMessages,
|
|
1570
1574
|
embedMessage: () => embedMessage,
|
|
@@ -1584,6 +1588,7 @@ __export(index_exports, {
|
|
|
1584
1588
|
extractFacts: () => extractFacts,
|
|
1585
1589
|
extractFileIds: () => extractFileIds,
|
|
1586
1590
|
extractMCPImageUrls: () => extractMCPImageUrls,
|
|
1591
|
+
extractReservationReceipts: () => extractReservationReceipts,
|
|
1587
1592
|
fileExists: () => fileExists,
|
|
1588
1593
|
findById: () => findById,
|
|
1589
1594
|
findMatchingTools: () => findMatchingTools,
|
|
@@ -1704,6 +1709,7 @@ __export(index_exports, {
|
|
|
1704
1709
|
linkMemoryEntitiesOp: () => linkMemoryEntitiesOp,
|
|
1705
1710
|
maskScopedEmbeddingCache: () => maskScopedEmbeddingCache,
|
|
1706
1711
|
mediaToStored: () => mediaToStored,
|
|
1712
|
+
memoryCipher: () => memoryCipher,
|
|
1707
1713
|
migrateCalendarToken: () => migrateCalendarToken,
|
|
1708
1714
|
migrateDisplayResult: () => migrateDisplayResult,
|
|
1709
1715
|
migrateDriveToken: () => migrateDriveToken,
|
|
@@ -1725,6 +1731,7 @@ __export(index_exports, {
|
|
|
1725
1731
|
rankProfileCandidates: () => rankProfileCandidates,
|
|
1726
1732
|
readEncryptedFile: () => readEncryptedFile,
|
|
1727
1733
|
recall: () => recall,
|
|
1734
|
+
reencryptMemoryField: () => reencryptMemoryField,
|
|
1728
1735
|
reflect: () => reflect,
|
|
1729
1736
|
refreshCalendarToken: () => refreshCalendarToken,
|
|
1730
1737
|
refreshDriveToken: () => refreshDriveToken,
|
|
@@ -1904,9 +1911,9 @@ function createSseClient({
|
|
|
1904
1911
|
if (done) break;
|
|
1905
1912
|
buffer += value;
|
|
1906
1913
|
buffer = buffer.replace(/\r\n?/g, "\n");
|
|
1907
|
-
const
|
|
1908
|
-
buffer =
|
|
1909
|
-
for (const chunk of
|
|
1914
|
+
const chunks2 = buffer.split("\n\n");
|
|
1915
|
+
buffer = chunks2.pop() ?? "";
|
|
1916
|
+
for (const chunk of chunks2) {
|
|
1910
1917
|
const lines = chunk.split("\n");
|
|
1911
1918
|
const dataLines = [];
|
|
1912
1919
|
let eventName;
|
|
@@ -2519,8 +2526,8 @@ var createClient = (config = {}) => {
|
|
|
2519
2526
|
data = await response[parseAs]();
|
|
2520
2527
|
break;
|
|
2521
2528
|
case "json": {
|
|
2522
|
-
const
|
|
2523
|
-
data =
|
|
2529
|
+
const text13 = await response.text();
|
|
2530
|
+
data = text13 ? JSON.parse(text13) : {};
|
|
2524
2531
|
break;
|
|
2525
2532
|
}
|
|
2526
2533
|
case "stream":
|
|
@@ -5804,8 +5811,8 @@ var ATTACHED_FILES_OPEN_TAG = "<attached_files>";
|
|
|
5804
5811
|
var ATTACHED_FILES_CLOSE_TAG = "</attached_files>";
|
|
5805
5812
|
var ATTACHED_FILES_PREFIX = `${ATTACHED_FILES_OPEN_TAG}
|
|
5806
5813
|
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.`;
|
|
5807
|
-
function isAttachedFilesText(
|
|
5808
|
-
return typeof
|
|
5814
|
+
function isAttachedFilesText(text13) {
|
|
5815
|
+
return typeof text13 === "string" && text13.startsWith(ATTACHED_FILES_PREFIX) && text13.endsWith(ATTACHED_FILES_CLOSE_TAG);
|
|
5809
5816
|
}
|
|
5810
5817
|
function buildAttachedFilesText(fileContext) {
|
|
5811
5818
|
return `${ATTACHED_FILES_PREFIX}
|
|
@@ -6558,14 +6565,14 @@ async function updateMessageEmbeddingOp(ctx, uniqueId, vector, embeddingModel) {
|
|
|
6558
6565
|
});
|
|
6559
6566
|
return messageToStored(message, ctx.walletAddress, ctx.signMessage, ctx.embeddedWalletSigner);
|
|
6560
6567
|
}
|
|
6561
|
-
async function updateMessageChunksOp(ctx, uniqueId,
|
|
6568
|
+
async function updateMessageChunksOp(ctx, uniqueId, chunks2, embeddingModel) {
|
|
6562
6569
|
let message;
|
|
6563
6570
|
try {
|
|
6564
6571
|
message = await ctx.messagesCollection.find(uniqueId);
|
|
6565
6572
|
} catch {
|
|
6566
6573
|
return null;
|
|
6567
6574
|
}
|
|
6568
|
-
const storedChunks =
|
|
6575
|
+
const storedChunks = chunks2.map(({ text: _text, ...rest }) => rest);
|
|
6569
6576
|
await ctx.database.write(async () => {
|
|
6570
6577
|
await message.update((msg) => {
|
|
6571
6578
|
msg._setRaw("chunks", JSON.stringify(storedChunks));
|
|
@@ -6609,12 +6616,12 @@ async function stripLegacyChunkTextOp(ctx) {
|
|
|
6609
6616
|
const messages = await ctx.messagesCollection.query(import_watermelondb2.Q.where("id", import_watermelondb2.Q.oneOf(changedIds))).fetch();
|
|
6610
6617
|
const updates = messages.flatMap((message) => {
|
|
6611
6618
|
const raw = message._raw;
|
|
6612
|
-
const
|
|
6613
|
-
if (!
|
|
6619
|
+
const chunks2 = chunksWithoutText(raw.chunks);
|
|
6620
|
+
if (!chunks2) return [];
|
|
6614
6621
|
const updatedAt = raw.updated_at;
|
|
6615
6622
|
return [
|
|
6616
6623
|
message.prepareUpdate((msg) => {
|
|
6617
|
-
msg._setRaw("chunks", JSON.stringify(
|
|
6624
|
+
msg._setRaw("chunks", JSON.stringify(chunks2));
|
|
6618
6625
|
msg._setRaw("updated_at", updatedAt);
|
|
6619
6626
|
})
|
|
6620
6627
|
];
|
|
@@ -6824,15 +6831,15 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
6824
6831
|
}
|
|
6825
6832
|
continue;
|
|
6826
6833
|
}
|
|
6827
|
-
const
|
|
6828
|
-
if (
|
|
6829
|
-
const vectors =
|
|
6834
|
+
const chunks2 = await readRawJsonField(message, "chunks", ctx.walletAddress);
|
|
6835
|
+
if (chunks2 && chunks2.length > 0) {
|
|
6836
|
+
const vectors = chunks2.map(
|
|
6830
6837
|
(chunk) => decodeChunkVector(chunk.vector, () => {
|
|
6831
6838
|
unreadableVectors++;
|
|
6832
6839
|
})
|
|
6833
6840
|
);
|
|
6834
6841
|
chunkCache?.set(message.id, { version, chunks: vectors });
|
|
6835
|
-
for (let ci = 0; ci <
|
|
6842
|
+
for (let ci = 0; ci < chunks2.length; ci++) {
|
|
6836
6843
|
const vec = vectors[ci];
|
|
6837
6844
|
if (vec.length === 0) continue;
|
|
6838
6845
|
const similarity = cosineSimilarity(queryVector, vec);
|
|
@@ -6840,7 +6847,7 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
6840
6847
|
candidates.push({
|
|
6841
6848
|
message,
|
|
6842
6849
|
similarity,
|
|
6843
|
-
chunkTextSource: { kind: "chunk", chunk:
|
|
6850
|
+
chunkTextSource: { kind: "chunk", chunk: chunks2[ci], siblings: chunks2 }
|
|
6844
6851
|
});
|
|
6845
6852
|
}
|
|
6846
6853
|
}
|
|
@@ -6984,49 +6991,49 @@ init_logger();
|
|
|
6984
6991
|
var DEFAULT_CHUNK_SIZE = 400;
|
|
6985
6992
|
var DEFAULT_CHUNK_OVERLAP = 50;
|
|
6986
6993
|
var DEFAULT_MIN_CHUNK_SIZE = 50;
|
|
6987
|
-
function splitIntoSentences(
|
|
6994
|
+
function splitIntoSentences(text13) {
|
|
6988
6995
|
const sentenceRegex = /[.!?]+[\s"')}\]]*(?=\s|$)/g;
|
|
6989
6996
|
const sentences = [];
|
|
6990
6997
|
let lastIndex = 0;
|
|
6991
6998
|
let match;
|
|
6992
|
-
while ((match = sentenceRegex.exec(
|
|
6999
|
+
while ((match = sentenceRegex.exec(text13)) !== null) {
|
|
6993
7000
|
const endIndex = match.index + match[0].length;
|
|
6994
|
-
const sentence =
|
|
7001
|
+
const sentence = text13.slice(lastIndex, endIndex).trim();
|
|
6995
7002
|
if (sentence) {
|
|
6996
7003
|
sentences.push(sentence);
|
|
6997
7004
|
}
|
|
6998
7005
|
lastIndex = endIndex;
|
|
6999
7006
|
}
|
|
7000
|
-
const remaining =
|
|
7007
|
+
const remaining = text13.slice(lastIndex).trim();
|
|
7001
7008
|
if (remaining) {
|
|
7002
7009
|
sentences.push(remaining);
|
|
7003
7010
|
}
|
|
7004
7011
|
return sentences;
|
|
7005
7012
|
}
|
|
7006
|
-
function chunkText(
|
|
7013
|
+
function chunkText(text13, options) {
|
|
7007
7014
|
const {
|
|
7008
7015
|
chunkSize = DEFAULT_CHUNK_SIZE,
|
|
7009
7016
|
chunkOverlap: requestedOverlap = DEFAULT_CHUNK_OVERLAP,
|
|
7010
7017
|
minChunkSize = DEFAULT_MIN_CHUNK_SIZE
|
|
7011
7018
|
} = options ?? {};
|
|
7012
7019
|
const chunkOverlap = Math.min(requestedOverlap, chunkSize - 1);
|
|
7013
|
-
if (
|
|
7020
|
+
if (text13.length <= chunkSize) {
|
|
7014
7021
|
return [
|
|
7015
7022
|
{
|
|
7016
|
-
text:
|
|
7023
|
+
text: text13.trim(),
|
|
7017
7024
|
startOffset: 0,
|
|
7018
|
-
endOffset:
|
|
7025
|
+
endOffset: text13.length
|
|
7019
7026
|
}
|
|
7020
7027
|
];
|
|
7021
7028
|
}
|
|
7022
|
-
const sentences = splitIntoSentences(
|
|
7023
|
-
const
|
|
7029
|
+
const sentences = splitIntoSentences(text13);
|
|
7030
|
+
const chunks2 = [];
|
|
7024
7031
|
let currentChunkSentences = [];
|
|
7025
7032
|
let currentChunkStart = 0;
|
|
7026
7033
|
let currentOffset = 0;
|
|
7027
7034
|
for (let i = 0; i < sentences.length; i++) {
|
|
7028
7035
|
const sentence = sentences[i];
|
|
7029
|
-
let sentenceStart =
|
|
7036
|
+
let sentenceStart = text13.indexOf(sentence, currentOffset);
|
|
7030
7037
|
if (sentenceStart === -1) {
|
|
7031
7038
|
sentenceStart = currentOffset;
|
|
7032
7039
|
}
|
|
@@ -7034,7 +7041,7 @@ function chunkText(text12, options) {
|
|
|
7034
7041
|
if (sentence.length > chunkSize) {
|
|
7035
7042
|
if (currentChunkSentences.length > 0) {
|
|
7036
7043
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
7037
|
-
|
|
7044
|
+
chunks2.push({
|
|
7038
7045
|
text: chunkText2,
|
|
7039
7046
|
startOffset: currentChunkStart,
|
|
7040
7047
|
endOffset: currentOffset
|
|
@@ -7045,7 +7052,7 @@ function chunkText(text12, options) {
|
|
|
7045
7052
|
const chunkEnd = Math.min(j + chunkSize, sentence.length);
|
|
7046
7053
|
const chunk = sentence.slice(j, chunkEnd);
|
|
7047
7054
|
if (chunk.length >= minChunkSize) {
|
|
7048
|
-
|
|
7055
|
+
chunks2.push({
|
|
7049
7056
|
text: chunk,
|
|
7050
7057
|
startOffset: sentenceStart + j,
|
|
7051
7058
|
endOffset: sentenceStart + chunkEnd
|
|
@@ -7059,7 +7066,7 @@ function chunkText(text12, options) {
|
|
|
7059
7066
|
const currentText = currentChunkSentences.join(" ");
|
|
7060
7067
|
const potentialLength = currentText.length + (currentText ? 1 : 0) + sentence.length;
|
|
7061
7068
|
if (potentialLength > chunkSize && currentChunkSentences.length > 0) {
|
|
7062
|
-
|
|
7069
|
+
chunks2.push({
|
|
7063
7070
|
text: currentText,
|
|
7064
7071
|
startOffset: currentChunkStart,
|
|
7065
7072
|
endOffset: currentOffset
|
|
@@ -7073,7 +7080,7 @@ function chunkText(text12, options) {
|
|
|
7073
7080
|
if (overlapSentences.length > 0) {
|
|
7074
7081
|
currentChunkSentences = [...overlapSentences, sentence];
|
|
7075
7082
|
const overlapText = overlapSentences[0];
|
|
7076
|
-
const overlapStart =
|
|
7083
|
+
const overlapStart = text13.lastIndexOf(overlapText, currentOffset);
|
|
7077
7084
|
currentChunkStart = overlapStart === -1 ? sentenceStart : overlapStart;
|
|
7078
7085
|
} else {
|
|
7079
7086
|
currentChunkSentences = [sentence];
|
|
@@ -7090,26 +7097,26 @@ function chunkText(text12, options) {
|
|
|
7090
7097
|
if (currentChunkSentences.length > 0) {
|
|
7091
7098
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
7092
7099
|
if (chunkText2.length >= minChunkSize) {
|
|
7093
|
-
|
|
7100
|
+
chunks2.push({
|
|
7094
7101
|
text: chunkText2,
|
|
7095
7102
|
startOffset: currentChunkStart,
|
|
7096
|
-
endOffset:
|
|
7103
|
+
endOffset: text13.length
|
|
7097
7104
|
});
|
|
7098
7105
|
}
|
|
7099
7106
|
}
|
|
7100
|
-
if (
|
|
7101
|
-
const trimmedText =
|
|
7107
|
+
if (chunks2.length === 0) {
|
|
7108
|
+
const trimmedText = text13.trim();
|
|
7102
7109
|
if (trimmedText.length > 0) {
|
|
7103
7110
|
return [
|
|
7104
7111
|
{
|
|
7105
7112
|
text: trimmedText,
|
|
7106
7113
|
startOffset: 0,
|
|
7107
|
-
endOffset:
|
|
7114
|
+
endOffset: text13.length
|
|
7108
7115
|
}
|
|
7109
7116
|
];
|
|
7110
7117
|
}
|
|
7111
7118
|
}
|
|
7112
|
-
return
|
|
7119
|
+
return chunks2;
|
|
7113
7120
|
}
|
|
7114
7121
|
function shouldChunkMessage(content, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
7115
7122
|
return content.length > chunkSize;
|
|
@@ -7205,16 +7212,16 @@ function embeddingErrorFrom(response) {
|
|
|
7205
7212
|
const message = typeof response.error === "object" && response.error && "error" in response.error ? response.error.error : "API embedding failed";
|
|
7206
7213
|
return new EmbeddingHttpError(message, response.response?.status);
|
|
7207
7214
|
}
|
|
7208
|
-
async function generateEmbedding(
|
|
7215
|
+
async function generateEmbedding(text13, options) {
|
|
7209
7216
|
const total = options.totalTimeoutMs;
|
|
7210
|
-
if (total === void 0) return embedOne(
|
|
7211
|
-
return withDeadline((signal) => embedOne(
|
|
7217
|
+
if (total === void 0) return embedOne(text13, options, void 0);
|
|
7218
|
+
return withDeadline((signal) => embedOne(text13, options, signal), total, "embedding");
|
|
7212
7219
|
}
|
|
7213
|
-
async function embedOne(
|
|
7220
|
+
async function embedOne(text13, options, outer) {
|
|
7214
7221
|
const { baseUrl = BASE_URL, model, cache } = options;
|
|
7215
7222
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
7216
7223
|
if (cache) {
|
|
7217
|
-
const cached = cache.get(
|
|
7224
|
+
const cached = cache.get(text13);
|
|
7218
7225
|
if (cached) return Array.from(cached);
|
|
7219
7226
|
}
|
|
7220
7227
|
const headers = await resolveAuthHeaders(options, outer);
|
|
@@ -7223,7 +7230,7 @@ async function embedOne(text12, options, outer) {
|
|
|
7223
7230
|
(signal) => postApiV1Embeddings({
|
|
7224
7231
|
baseUrl,
|
|
7225
7232
|
body: {
|
|
7226
|
-
input: options.maskInput ? options.maskInput(
|
|
7233
|
+
input: options.maskInput ? options.maskInput(text13) : text13,
|
|
7227
7234
|
model: model ?? DEFAULT_API_EMBEDDING_MODEL
|
|
7228
7235
|
},
|
|
7229
7236
|
headers,
|
|
@@ -7250,7 +7257,7 @@ async function embedOne(text12, options, outer) {
|
|
|
7250
7257
|
}
|
|
7251
7258
|
const f32Embedding = Float32Array.from(embedding);
|
|
7252
7259
|
if (cache) {
|
|
7253
|
-
cache.set(
|
|
7260
|
+
cache.set(text13, f32Embedding);
|
|
7254
7261
|
}
|
|
7255
7262
|
return Array.from(f32Embedding);
|
|
7256
7263
|
}
|
|
@@ -7328,18 +7335,18 @@ async function embedMany(texts, options, outer) {
|
|
|
7328
7335
|
outer
|
|
7329
7336
|
);
|
|
7330
7337
|
} else {
|
|
7331
|
-
const
|
|
7338
|
+
const chunks2 = [];
|
|
7332
7339
|
for (let i = 0; i < uncachedTexts.length; i += chunkSize) {
|
|
7333
|
-
|
|
7340
|
+
chunks2.push(uncachedTexts.slice(i, i + chunkSize));
|
|
7334
7341
|
}
|
|
7335
|
-
const allEmbeddings = new Array(
|
|
7342
|
+
const allEmbeddings = new Array(chunks2.length);
|
|
7336
7343
|
let nextIndex = 0;
|
|
7337
7344
|
const worker = async () => {
|
|
7338
|
-
while (nextIndex <
|
|
7345
|
+
while (nextIndex < chunks2.length) {
|
|
7339
7346
|
if (outer?.aborted) throw outer.reason;
|
|
7340
7347
|
const idx = nextIndex++;
|
|
7341
7348
|
allEmbeddings[idx] = await generateEmbeddingsBatch(
|
|
7342
|
-
|
|
7349
|
+
chunks2[idx],
|
|
7343
7350
|
headers,
|
|
7344
7351
|
baseUrl,
|
|
7345
7352
|
embeddingModel,
|
|
@@ -7351,7 +7358,7 @@ async function embedMany(texts, options, outer) {
|
|
|
7351
7358
|
}
|
|
7352
7359
|
};
|
|
7353
7360
|
const workers = Array.from(
|
|
7354
|
-
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY,
|
|
7361
|
+
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY, chunks2.length) },
|
|
7355
7362
|
() => worker()
|
|
7356
7363
|
);
|
|
7357
7364
|
await Promise.all(workers);
|
|
@@ -7584,10 +7591,10 @@ var cryptoPriceCentroid = [0.025576787463333337, 0.0017598020599999997, -0.01339
|
|
|
7584
7591
|
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];
|
|
7585
7592
|
|
|
7586
7593
|
// src/lib/chat/preProcessor.ts
|
|
7587
|
-
function wrapAsUserText(prefix,
|
|
7588
|
-
if (!
|
|
7594
|
+
function wrapAsUserText(prefix, text13) {
|
|
7595
|
+
if (!text13 || !text13.trim()) return [];
|
|
7589
7596
|
return [{ role: "user", content: [{ type: "text", text: `${prefix}
|
|
7590
|
-
${
|
|
7597
|
+
${text13}` }] }];
|
|
7591
7598
|
}
|
|
7592
7599
|
|
|
7593
7600
|
// src/lib/chat/cryptoPriceClassifier.ts
|
|
@@ -7626,6 +7633,80 @@ function createCryptoPricePreProcessor(options = {}) {
|
|
|
7626
7633
|
};
|
|
7627
7634
|
}
|
|
7628
7635
|
|
|
7636
|
+
// src/lib/chat/reservationReceipts.ts
|
|
7637
|
+
var ACTIONS = [
|
|
7638
|
+
{
|
|
7639
|
+
kind: "booking",
|
|
7640
|
+
tool: "anuma_book_restaurant",
|
|
7641
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_BOOKED:/
|
|
7642
|
+
},
|
|
7643
|
+
{
|
|
7644
|
+
kind: "cancel",
|
|
7645
|
+
tool: "anuma_cancel_reservation",
|
|
7646
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_CANCELLED:/
|
|
7647
|
+
}
|
|
7648
|
+
];
|
|
7649
|
+
var NOT_AN_ATTEMPT = /^Tool "[^"]*" (has already been called|was already called)/;
|
|
7650
|
+
var BOOKING_OUTCOME_UNKNOWN = /^Tool "[^"]*" failed: BOOKING_OUTCOME_UNKNOWN:/;
|
|
7651
|
+
var CANCEL_OUTCOME_UNKNOWN = "CANCEL_OUTCOME_UNKNOWN";
|
|
7652
|
+
function extractReservationReceipts(toolCallEvents) {
|
|
7653
|
+
const latest = /* @__PURE__ */ new Map();
|
|
7654
|
+
for (const event of toolCallEvents ?? []) {
|
|
7655
|
+
const action = ACTIONS.find((a) => event.name?.endsWith(a.tool));
|
|
7656
|
+
const output = event.output ?? "";
|
|
7657
|
+
if (!action || !output || NOT_AN_ATTEMPT.test(output)) continue;
|
|
7658
|
+
const kept = latest.get(action.kind)?.status;
|
|
7659
|
+
if (kept === "made") continue;
|
|
7660
|
+
const receipt = toReceipt(action, event.arguments ?? "", output);
|
|
7661
|
+
if (kept === "unknown" && receipt.status !== "made") continue;
|
|
7662
|
+
latest.set(action.kind, receipt);
|
|
7663
|
+
}
|
|
7664
|
+
return [...latest.values()];
|
|
7665
|
+
}
|
|
7666
|
+
function toReceipt(action, argumentsJson, output) {
|
|
7667
|
+
const args = parseObject(argumentsJson);
|
|
7668
|
+
const result = parseObject(output);
|
|
7669
|
+
return {
|
|
7670
|
+
kind: action.kind,
|
|
7671
|
+
venueName: text(args.venue_name) ?? "",
|
|
7672
|
+
day: text(args.day) ?? "",
|
|
7673
|
+
time: text(args.time) ?? "",
|
|
7674
|
+
partySize: count(args.party_size),
|
|
7675
|
+
reservationId: text(result.reservation_id) ?? text(args.reservation_id),
|
|
7676
|
+
resyUrl: text(result.reservations_url),
|
|
7677
|
+
feeSummary: text(result.fee_summary),
|
|
7678
|
+
...outcome(action, output, result)
|
|
7679
|
+
};
|
|
7680
|
+
}
|
|
7681
|
+
function outcome(action, output, result) {
|
|
7682
|
+
if (action.alreadyDone.test(output)) return { status: "already_done" };
|
|
7683
|
+
const reason = text(result.error);
|
|
7684
|
+
if (action.kind === "booking") {
|
|
7685
|
+
if (BOOKING_OUTCOME_UNKNOWN.test(output)) return { status: "unknown" };
|
|
7686
|
+
const held = result.success === true || text(result.reservation_id) !== void 0;
|
|
7687
|
+
return held ? { status: "made" } : { status: "not_made", reason };
|
|
7688
|
+
}
|
|
7689
|
+
if (result.error_code === CANCEL_OUTCOME_UNKNOWN) return { status: "unknown", reason };
|
|
7690
|
+
const cancelled = result.success === true && !result.error && !result.error_code;
|
|
7691
|
+
return cancelled ? { status: "made" } : { status: "not_made", reason };
|
|
7692
|
+
}
|
|
7693
|
+
function parseObject(json4) {
|
|
7694
|
+
try {
|
|
7695
|
+
const parsed = JSON.parse(json4);
|
|
7696
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
7697
|
+
} catch {
|
|
7698
|
+
return {};
|
|
7699
|
+
}
|
|
7700
|
+
}
|
|
7701
|
+
function text(value) {
|
|
7702
|
+
if (typeof value === "number") return String(value);
|
|
7703
|
+
return typeof value === "string" && value ? value : void 0;
|
|
7704
|
+
}
|
|
7705
|
+
function count(value) {
|
|
7706
|
+
const n = typeof value === "string" && value.trim() ? Number(value) : value;
|
|
7707
|
+
return typeof n === "number" && Number.isFinite(n) ? n : void 0;
|
|
7708
|
+
}
|
|
7709
|
+
|
|
7629
7710
|
// src/lib/chat/resumeStream.ts
|
|
7630
7711
|
init_clientConfig();
|
|
7631
7712
|
|
|
@@ -7634,6 +7715,46 @@ init_clientConfig();
|
|
|
7634
7715
|
|
|
7635
7716
|
// src/tools/confirmConstants.ts
|
|
7636
7717
|
var CONFIRM_TOOL_NAME = "prompt_user_confirm";
|
|
7718
|
+
var BOOK_RESTAURANT = {
|
|
7719
|
+
tool: "AnumaPaymentsMCP-anuma_book_restaurant",
|
|
7720
|
+
status: "confirmed_not_booked",
|
|
7721
|
+
fields: ["venue_id", "config_id", "party_size", "day", "venue_name", "time"]
|
|
7722
|
+
};
|
|
7723
|
+
var CANCEL_RESERVATION = {
|
|
7724
|
+
tool: "AnumaPaymentsMCP-anuma_cancel_reservation",
|
|
7725
|
+
status: "confirmed_not_cancelled",
|
|
7726
|
+
fields: [
|
|
7727
|
+
"reservation_id",
|
|
7728
|
+
"venue_name",
|
|
7729
|
+
"day",
|
|
7730
|
+
"time",
|
|
7731
|
+
"party_size",
|
|
7732
|
+
"fee_applies",
|
|
7733
|
+
"fee_amount"
|
|
7734
|
+
]
|
|
7735
|
+
};
|
|
7736
|
+
var CONFIRM_REQUIRED_FIELDS = /* @__PURE__ */ new Map([
|
|
7737
|
+
["book_restaurant", BOOK_RESTAURANT],
|
|
7738
|
+
["anuma_book_restaurant", BOOK_RESTAURANT],
|
|
7739
|
+
["anumapaymentsmcp-anuma_book_restaurant", BOOK_RESTAURANT],
|
|
7740
|
+
["cancel_reservation", CANCEL_RESERVATION],
|
|
7741
|
+
["anuma_cancel_reservation", CANCEL_RESERVATION],
|
|
7742
|
+
["anumapaymentsmcp-anuma_cancel_reservation", CANCEL_RESERVATION]
|
|
7743
|
+
]);
|
|
7744
|
+
function confirmRequirement(action) {
|
|
7745
|
+
if (typeof action !== "string") return void 0;
|
|
7746
|
+
return CONFIRM_REQUIRED_FIELDS.get(action.trim().toLowerCase());
|
|
7747
|
+
}
|
|
7748
|
+
function missingConfirmFields(action, parameters) {
|
|
7749
|
+
const requirement = confirmRequirement(action);
|
|
7750
|
+
if (!requirement) return [];
|
|
7751
|
+
const shown = /* @__PURE__ */ new Set();
|
|
7752
|
+
for (const parameter of Array.isArray(parameters) ? parameters : []) {
|
|
7753
|
+
const { name, value } = parameter ?? {};
|
|
7754
|
+
if (typeof name === "string" && typeof value === "string" && value.trim()) shown.add(name);
|
|
7755
|
+
}
|
|
7756
|
+
return requirement.fields.filter((field10) => !shown.has(field10));
|
|
7757
|
+
}
|
|
7637
7758
|
|
|
7638
7759
|
// src/lib/chat/toolLoop.ts
|
|
7639
7760
|
init_redactor();
|
|
@@ -10460,13 +10581,13 @@ var StreamSmoother = class {
|
|
|
10460
10581
|
/**
|
|
10461
10582
|
* Add text to the buffer. If smoothing is disabled, passes through immediately.
|
|
10462
10583
|
*/
|
|
10463
|
-
push(
|
|
10464
|
-
if (this.destroyed || !
|
|
10584
|
+
push(text13) {
|
|
10585
|
+
if (this.destroyed || !text13) return;
|
|
10465
10586
|
if (!this.enabled) {
|
|
10466
|
-
this.callback(
|
|
10587
|
+
this.callback(text13);
|
|
10467
10588
|
return;
|
|
10468
10589
|
}
|
|
10469
|
-
this.buffer +=
|
|
10590
|
+
this.buffer += text13;
|
|
10470
10591
|
this.ensureTimer();
|
|
10471
10592
|
}
|
|
10472
10593
|
/**
|
|
@@ -10477,9 +10598,9 @@ var StreamSmoother = class {
|
|
|
10477
10598
|
if (this.destroyed) return;
|
|
10478
10599
|
this.stopTimer();
|
|
10479
10600
|
if (this.buffer.length > 0) {
|
|
10480
|
-
const
|
|
10601
|
+
const text13 = this.buffer;
|
|
10481
10602
|
this.buffer = "";
|
|
10482
|
-
this.callback(
|
|
10603
|
+
this.callback(text13);
|
|
10483
10604
|
}
|
|
10484
10605
|
this.resolveDrain();
|
|
10485
10606
|
}
|
|
@@ -10546,9 +10667,9 @@ var StreamSmoother = class {
|
|
|
10546
10667
|
const currentSpeed = this.getCurrentSpeed(elapsed);
|
|
10547
10668
|
const charsThisTick = Math.max(1, Math.round(currentSpeed * (TICK_INTERVAL / 1e3)));
|
|
10548
10669
|
const toRelease = Math.min(charsThisTick, this.buffer.length);
|
|
10549
|
-
const
|
|
10670
|
+
const text13 = this.buffer.slice(0, toRelease);
|
|
10550
10671
|
this.buffer = this.buffer.slice(toRelease);
|
|
10551
|
-
this.callback(
|
|
10672
|
+
this.callback(text13);
|
|
10552
10673
|
if (this.buffer.length === 0) {
|
|
10553
10674
|
this.stopTimer();
|
|
10554
10675
|
this.resolveDrain();
|
|
@@ -10752,6 +10873,7 @@ function getToolName(tool) {
|
|
|
10752
10873
|
}
|
|
10753
10874
|
function toolsAfterConfirmation(apiTools, executionResults) {
|
|
10754
10875
|
const members = /* @__PURE__ */ new Set();
|
|
10876
|
+
let keepConfirm = false;
|
|
10755
10877
|
for (const r of executionResults) {
|
|
10756
10878
|
if (r.name !== CONFIRM_TOOL_NAME) continue;
|
|
10757
10879
|
const answer = r.result;
|
|
@@ -10759,11 +10881,12 @@ function toolsAfterConfirmation(apiTools, executionResults) {
|
|
|
10759
10881
|
const setName = CONFIRMED_ACTION_TOOL_SETS.get(answer.action.trim().toLowerCase());
|
|
10760
10882
|
const set = BUILT_IN_TOOL_SETS.find((s) => s.name === setName);
|
|
10761
10883
|
for (const member of set?.members ?? []) members.add(member);
|
|
10884
|
+
if (missingConfirmFields(answer.action, answer.parameters).length > 0) keepConfirm = true;
|
|
10762
10885
|
}
|
|
10763
10886
|
if (!apiTools.some((t) => members.has(getToolName(t) ?? ""))) return void 0;
|
|
10764
10887
|
return apiTools.filter((t) => {
|
|
10765
10888
|
const name = getToolName(t) ?? "";
|
|
10766
|
-
return members.has(name) || name ===
|
|
10889
|
+
return members.has(name) || name === TOOL_SEARCH_TOOL_NAME || keepConfirm && name === CONFIRM_TOOL_NAME;
|
|
10767
10890
|
});
|
|
10768
10891
|
}
|
|
10769
10892
|
var STREAM_RESUMABLE_HEADER = "X-Stream-Resumable";
|
|
@@ -10969,9 +11092,9 @@ async function runToolLoop(options) {
|
|
|
10969
11092
|
messages = await redactBatch(messages);
|
|
10970
11093
|
if (preProcessors?.length) {
|
|
10971
11094
|
try {
|
|
10972
|
-
const
|
|
10973
|
-
if (
|
|
10974
|
-
const embedding = await generateEmbedding(
|
|
11095
|
+
const text13 = extractLastUserText(messages);
|
|
11096
|
+
if (text13.length > 0) {
|
|
11097
|
+
const embedding = await generateEmbedding(text13, {
|
|
10975
11098
|
apiKey: headers?.["X-API-Key"],
|
|
10976
11099
|
getToken: token ? () => Promise.resolve(token) : void 0,
|
|
10977
11100
|
baseUrl
|
|
@@ -10979,7 +11102,7 @@ async function runToolLoop(options) {
|
|
|
10979
11102
|
const results = await Promise.all(
|
|
10980
11103
|
preProcessors.map(async (p) => {
|
|
10981
11104
|
try {
|
|
10982
|
-
return await p({ prompt:
|
|
11105
|
+
return await p({ prompt: text13, embedding, signal: combinedSignal });
|
|
10983
11106
|
} catch (err) {
|
|
10984
11107
|
console.warn("[runToolLoop] pre-processor failed:", err);
|
|
10985
11108
|
return void 0;
|
|
@@ -11138,11 +11261,11 @@ async function runToolLoop(options) {
|
|
|
11138
11261
|
}
|
|
11139
11262
|
});
|
|
11140
11263
|
accumulator = createStreamAccumulator(model || void 0);
|
|
11141
|
-
contentSmoother = new StreamSmoother((
|
|
11142
|
-
if (emitData) emitData(
|
|
11264
|
+
contentSmoother = new StreamSmoother((text13) => {
|
|
11265
|
+
if (emitData) emitData(text13);
|
|
11143
11266
|
}, smoothing);
|
|
11144
|
-
thinkingSmoother = new StreamSmoother((
|
|
11145
|
-
if (emitThinking) emitThinking(
|
|
11267
|
+
thinkingSmoother = new StreamSmoother((text13) => {
|
|
11268
|
+
if (emitThinking) emitThinking(text13);
|
|
11146
11269
|
}, smoothing);
|
|
11147
11270
|
let chunksEmittedDownstream = false;
|
|
11148
11271
|
try {
|
|
@@ -11647,11 +11770,11 @@ Executing tool: ${toolInfo}
|
|
|
11647
11770
|
}
|
|
11648
11771
|
});
|
|
11649
11772
|
currentAccumulator = createStreamAccumulator(model || void 0);
|
|
11650
|
-
contContentSmoother = new StreamSmoother((
|
|
11651
|
-
if (emitData) emitData(
|
|
11773
|
+
contContentSmoother = new StreamSmoother((text13) => {
|
|
11774
|
+
if (emitData) emitData(text13);
|
|
11652
11775
|
}, smoothing);
|
|
11653
|
-
contThinkingSmoother = new StreamSmoother((
|
|
11654
|
-
if (emitThinking) emitThinking(
|
|
11776
|
+
contThinkingSmoother = new StreamSmoother((text13) => {
|
|
11777
|
+
if (emitThinking) emitThinking(text13);
|
|
11655
11778
|
}, smoothing);
|
|
11656
11779
|
let chunksEmittedDownstream = false;
|
|
11657
11780
|
try {
|
|
@@ -11878,11 +12001,11 @@ async function resumeStream(options) {
|
|
|
11878
12001
|
} = options;
|
|
11879
12002
|
const strategy = getStrategy(handle.apiType);
|
|
11880
12003
|
const accumulator = createStreamAccumulator(handle.model || void 0);
|
|
11881
|
-
const contentSmoother = new StreamSmoother((
|
|
11882
|
-
if (onData) onData(
|
|
12004
|
+
const contentSmoother = new StreamSmoother((text13) => {
|
|
12005
|
+
if (onData) onData(text13);
|
|
11883
12006
|
}, smoothing);
|
|
11884
|
-
const thinkingSmoother = new StreamSmoother((
|
|
11885
|
-
if (onThinking) onThinking(
|
|
12007
|
+
const thinkingSmoother = new StreamSmoother((text13) => {
|
|
12008
|
+
if (onThinking) onThinking(text13);
|
|
11886
12009
|
}, smoothing);
|
|
11887
12010
|
const idleController = new AbortController();
|
|
11888
12011
|
let watchdog;
|
|
@@ -14705,8 +14828,8 @@ var WatermelonChatStorageAdapter = class {
|
|
|
14705
14828
|
updateMessageEmbedding(uniqueId, vector, embeddingModel) {
|
|
14706
14829
|
return updateMessageEmbeddingOp(this.ctx, uniqueId, vector, embeddingModel);
|
|
14707
14830
|
}
|
|
14708
|
-
updateMessageChunks(uniqueId,
|
|
14709
|
-
return updateMessageChunksOp(this.ctx, uniqueId,
|
|
14831
|
+
updateMessageChunks(uniqueId, chunks2, embeddingModel) {
|
|
14832
|
+
return updateMessageChunksOp(this.ctx, uniqueId, chunks2, embeddingModel);
|
|
14710
14833
|
}
|
|
14711
14834
|
updateMessageError(uniqueId, error) {
|
|
14712
14835
|
return updateMessageErrorOp(this.ctx, uniqueId, error);
|
|
@@ -18002,7 +18125,7 @@ Which item numbers should be flagged?`,
|
|
|
18002
18125
|
if (parsed === null) return empty;
|
|
18003
18126
|
return { flagged: parseFlagged(parsed, scope.length) };
|
|
18004
18127
|
}
|
|
18005
|
-
function parseFlagged(parsed,
|
|
18128
|
+
function parseFlagged(parsed, count2) {
|
|
18006
18129
|
const out = /* @__PURE__ */ new Set();
|
|
18007
18130
|
if (typeof parsed !== "object" || parsed === null) return out;
|
|
18008
18131
|
const list = parsed.poisoned;
|
|
@@ -18010,7 +18133,7 @@ function parseFlagged(parsed, count) {
|
|
|
18010
18133
|
for (const raw of list) {
|
|
18011
18134
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
18012
18135
|
if (!Number.isInteger(n)) continue;
|
|
18013
|
-
if (n >= 1 && n <=
|
|
18136
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
18014
18137
|
}
|
|
18015
18138
|
return out;
|
|
18016
18139
|
}
|
|
@@ -18507,8 +18630,8 @@ var STOPWORDS = /* @__PURE__ */ new Set([
|
|
|
18507
18630
|
"user",
|
|
18508
18631
|
"users"
|
|
18509
18632
|
]);
|
|
18510
|
-
function tokenize(
|
|
18511
|
-
const m =
|
|
18633
|
+
function tokenize(text13) {
|
|
18634
|
+
const m = text13.toLowerCase().match(TOKEN_RE);
|
|
18512
18635
|
if (!m) return [];
|
|
18513
18636
|
return m.filter((t) => !STOPWORDS.has(t));
|
|
18514
18637
|
}
|
|
@@ -20035,14 +20158,14 @@ async function retainWithPersistence(content, ctx, options = {}) {
|
|
|
20035
20158
|
);
|
|
20036
20159
|
}
|
|
20037
20160
|
if (options.consolidateOptions) {
|
|
20038
|
-
const
|
|
20039
|
-
if (
|
|
20040
|
-
if ("done" in
|
|
20041
|
-
if ("create" in
|
|
20161
|
+
const outcome2 = await tryConsolidate(trimmed, ctx, options, prepared);
|
|
20162
|
+
if (outcome2) {
|
|
20163
|
+
if ("done" in outcome2) return outcome2.done;
|
|
20164
|
+
if ("create" in outcome2) {
|
|
20042
20165
|
consolidationDecidedCreate = true;
|
|
20043
20166
|
} else {
|
|
20044
|
-
supersedeTargetIds =
|
|
20045
|
-
supersedeContent =
|
|
20167
|
+
supersedeTargetIds = outcome2.supersede;
|
|
20168
|
+
supersedeContent = outcome2.content;
|
|
20046
20169
|
}
|
|
20047
20170
|
}
|
|
20048
20171
|
}
|
|
@@ -20708,12 +20831,12 @@ async function extractAndRetain(messages, retainCtx, options) {
|
|
|
20708
20831
|
if (failedWrites > 0) {
|
|
20709
20832
|
log.warn(`[memory/extract] ${failedWrites} of ${filtered.length} candidates failed to retain`);
|
|
20710
20833
|
}
|
|
20711
|
-
const
|
|
20834
|
+
const outcome2 = exhaustedEmpty ? "empty-after-retry" : filtered.length > 0 ? "extracted" : droppedAfterRedaction ? "dropped-after-redaction" : "no-facts";
|
|
20712
20835
|
return {
|
|
20713
20836
|
candidates: succeededCandidates,
|
|
20714
20837
|
results,
|
|
20715
20838
|
failedCount: failedWrites,
|
|
20716
|
-
outcome,
|
|
20839
|
+
outcome: outcome2,
|
|
20717
20840
|
quarantined: quarantinedInfo,
|
|
20718
20841
|
funnel: {
|
|
20719
20842
|
rawCandidateCount,
|
|
@@ -20945,7 +21068,7 @@ function createAutoExtractor(options) {
|
|
|
20945
21068
|
...options.retainCtx,
|
|
20946
21069
|
embeddingOptions: {
|
|
20947
21070
|
...options.retainCtx.embeddingOptions,
|
|
20948
|
-
maskInput: (
|
|
21071
|
+
maskInput: (text13) => piiRedactor.maskText(text13)
|
|
20949
21072
|
}
|
|
20950
21073
|
} : options.retainCtx;
|
|
20951
21074
|
function processTurn(messages, conversationId) {
|
|
@@ -20978,7 +21101,7 @@ function createAutoExtractor(options) {
|
|
|
20978
21101
|
const t0 = Date.now();
|
|
20979
21102
|
void (async () => {
|
|
20980
21103
|
try {
|
|
20981
|
-
const { candidates, results, failedCount, outcome, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
21104
|
+
const { candidates, results, failedCount, outcome: outcome2, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
20982
21105
|
extract,
|
|
20983
21106
|
...options.minConfidence !== void 0 && { minConfidence: options.minConfidence },
|
|
20984
21107
|
...options.entityCtx !== void 0 && { entityCtx: options.entityCtx },
|
|
@@ -20995,7 +21118,7 @@ function createAutoExtractor(options) {
|
|
|
20995
21118
|
onQuarantined: (info) => options.onMemoryQuarantined?.({ ...info, conversationId })
|
|
20996
21119
|
}
|
|
20997
21120
|
});
|
|
20998
|
-
if (
|
|
21121
|
+
if (outcome2 !== "empty-after-retry" && failedCount === 0) {
|
|
20999
21122
|
const advancedTo = window2[window2.length - 1].id;
|
|
21000
21123
|
stateFor(conversationId).watermark = advancedTo;
|
|
21001
21124
|
persistCursor(conversationId, messages, advancedTo, contiguous);
|
|
@@ -21014,7 +21137,7 @@ function createAutoExtractor(options) {
|
|
|
21014
21137
|
failedCount,
|
|
21015
21138
|
durationMs: Date.now() - t0,
|
|
21016
21139
|
conversationId,
|
|
21017
|
-
outcome,
|
|
21140
|
+
outcome: outcome2,
|
|
21018
21141
|
funnel,
|
|
21019
21142
|
timings,
|
|
21020
21143
|
model,
|
|
@@ -22691,12 +22814,12 @@ ${JSON.stringify(
|
|
|
22691
22814
|
function parseAnswer(body, base, parseSchema) {
|
|
22692
22815
|
if (typeof body !== "object" || body === null) return base;
|
|
22693
22816
|
const obj = body;
|
|
22694
|
-
const
|
|
22817
|
+
const text13 = extractCompletionContent(obj) ?? "";
|
|
22695
22818
|
const usage = obj.usage;
|
|
22696
22819
|
let structuredOutput;
|
|
22697
|
-
if (parseSchema &&
|
|
22820
|
+
if (parseSchema && text13) {
|
|
22698
22821
|
try {
|
|
22699
|
-
structuredOutput = JSON.parse(extractJsonCandidate(
|
|
22822
|
+
structuredOutput = JSON.parse(extractJsonCandidate(text13));
|
|
22700
22823
|
} catch (err) {
|
|
22701
22824
|
getLogger().warn("[memory/reflect] structured output was not valid JSON", {
|
|
22702
22825
|
err: err instanceof Error ? err.message : String(err)
|
|
@@ -22706,7 +22829,7 @@ function parseAnswer(body, base, parseSchema) {
|
|
|
22706
22829
|
const promptTokens = usage?.prompt_tokens ?? usage?.input_tokens ?? 0;
|
|
22707
22830
|
const completionTokens = usage?.completion_tokens ?? usage?.output_tokens ?? 0;
|
|
22708
22831
|
return {
|
|
22709
|
-
text:
|
|
22832
|
+
text: text13,
|
|
22710
22833
|
...structuredOutput !== void 0 && { structuredOutput },
|
|
22711
22834
|
basedOn: base.basedOn,
|
|
22712
22835
|
usage: {
|
|
@@ -23062,6 +23185,65 @@ function createLocalMemoryStore(options) {
|
|
|
23062
23185
|
};
|
|
23063
23186
|
}
|
|
23064
23187
|
|
|
23188
|
+
// src/lib/memory/store/memoryKeys.ts
|
|
23189
|
+
var KEY_ID_DOMAIN = "anuma-private-memory-key-id-v1";
|
|
23190
|
+
var MemoryKeyError = class extends Error {
|
|
23191
|
+
constructor(message) {
|
|
23192
|
+
super(message);
|
|
23193
|
+
this.name = "MemoryKeyError";
|
|
23194
|
+
}
|
|
23195
|
+
};
|
|
23196
|
+
async function importAesKey(hex) {
|
|
23197
|
+
return crypto.subtle.importKey(
|
|
23198
|
+
"raw",
|
|
23199
|
+
hexToBytes(hex).buffer,
|
|
23200
|
+
{ name: "AES-GCM" },
|
|
23201
|
+
false,
|
|
23202
|
+
["encrypt", "decrypt"]
|
|
23203
|
+
);
|
|
23204
|
+
}
|
|
23205
|
+
async function deriveMemoryKeyRing(signatureHex) {
|
|
23206
|
+
const v3Hex = await deriveKeyFromSignatureV3(signatureHex);
|
|
23207
|
+
const digest = await crypto.subtle.digest(
|
|
23208
|
+
"SHA-256",
|
|
23209
|
+
new TextEncoder().encode(`${KEY_ID_DOMAIN}:${v3Hex}`)
|
|
23210
|
+
);
|
|
23211
|
+
const keyId = "v3:" + Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
23212
|
+
return {
|
|
23213
|
+
keyId,
|
|
23214
|
+
v3: await importAesKey(v3Hex),
|
|
23215
|
+
v2: await importAesKey(await deriveKeyFromSignature(signatureHex))
|
|
23216
|
+
};
|
|
23217
|
+
}
|
|
23218
|
+
async function decryptWith(value, rings) {
|
|
23219
|
+
const version = value.startsWith("enc:v3:") ? "v3" : "v2";
|
|
23220
|
+
for (const ring of rings) {
|
|
23221
|
+
try {
|
|
23222
|
+
return await decryptDataWithKey(value.slice(`enc:${version}:`.length), ring[version]);
|
|
23223
|
+
} catch {
|
|
23224
|
+
continue;
|
|
23225
|
+
}
|
|
23226
|
+
}
|
|
23227
|
+
throw new MemoryKeyError(`No supplied key decrypts this enc:${version} field`);
|
|
23228
|
+
}
|
|
23229
|
+
function memoryCipher(canonical) {
|
|
23230
|
+
return {
|
|
23231
|
+
encrypt: async (plaintext) => `enc:v3:${await encryptDataWithKey(plaintext, canonical.v3)}`,
|
|
23232
|
+
decrypt: async (ciphertext) => {
|
|
23233
|
+
if (!ciphertext.startsWith("enc:v3:") || !isEncrypted(ciphertext))
|
|
23234
|
+
throw new MemoryKeyError("Remote memory content must be enc:v3 ciphertext");
|
|
23235
|
+
return decryptWith(ciphertext, [canonical]);
|
|
23236
|
+
}
|
|
23237
|
+
};
|
|
23238
|
+
}
|
|
23239
|
+
async function reencryptMemoryField(value, canonical, fallbacks = []) {
|
|
23240
|
+
const { encrypt } = memoryCipher(canonical);
|
|
23241
|
+
if (!value.startsWith("enc:")) return encrypt(value);
|
|
23242
|
+
if (!isEncrypted(value))
|
|
23243
|
+
throw new MemoryKeyError("Field has an encryption prefix but an invalid payload");
|
|
23244
|
+
return encrypt(await decryptWith(value, [canonical, ...fallbacks]));
|
|
23245
|
+
}
|
|
23246
|
+
|
|
23065
23247
|
// src/lib/memory/store/remotePersistence.ts
|
|
23066
23248
|
var RemoteMemoryError = class extends Error {
|
|
23067
23249
|
constructor(message, status, code) {
|
|
@@ -23114,6 +23296,30 @@ var candidateListLimits = [
|
|
|
23114
23296
|
["memory_ids", 1e3],
|
|
23115
23297
|
["force_ids", 100]
|
|
23116
23298
|
];
|
|
23299
|
+
var queryListLimits = [
|
|
23300
|
+
["scopes", 20],
|
|
23301
|
+
["fact_types", 20],
|
|
23302
|
+
["visibility", 20],
|
|
23303
|
+
["memory_ids", 1e3],
|
|
23304
|
+
["topics", 100]
|
|
23305
|
+
];
|
|
23306
|
+
var queryFields = [
|
|
23307
|
+
"include_deleted",
|
|
23308
|
+
"include_archived",
|
|
23309
|
+
"include_quarantined",
|
|
23310
|
+
"include_superseded",
|
|
23311
|
+
"archived_only",
|
|
23312
|
+
"scopes",
|
|
23313
|
+
"fact_types",
|
|
23314
|
+
"visibility",
|
|
23315
|
+
"memory_ids",
|
|
23316
|
+
"topics",
|
|
23317
|
+
"updated_after",
|
|
23318
|
+
"order",
|
|
23319
|
+
"cursor",
|
|
23320
|
+
"limit",
|
|
23321
|
+
"include_embeddings"
|
|
23322
|
+
];
|
|
23117
23323
|
function record(value) {
|
|
23118
23324
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
23119
23325
|
}
|
|
@@ -23448,6 +23654,35 @@ async function createRemoteMemoryPersistence(options) {
|
|
|
23448
23654
|
throw new Error("Invalid nearby batch response");
|
|
23449
23655
|
return Promise.all(result.items.map((item, i) => decodeCommitted(item, prepared[i])));
|
|
23450
23656
|
},
|
|
23657
|
+
query: async (queryOptions = {}) => {
|
|
23658
|
+
const { signal, ...query } = queryOptions;
|
|
23659
|
+
if (query.limit !== void 0 && (!Number.isInteger(query.limit) || query.limit < 1 || query.limit > 200))
|
|
23660
|
+
throw new Error("Page limit must be 1\u2013200");
|
|
23661
|
+
for (const [key, max] of queryListLimits) {
|
|
23662
|
+
const values = query[key];
|
|
23663
|
+
if (values && values.length > max)
|
|
23664
|
+
throw new Error(`Query ${key} accepts at most ${max} entries (got ${values.length})`);
|
|
23665
|
+
}
|
|
23666
|
+
const page = await request(
|
|
23667
|
+
"/memories/query",
|
|
23668
|
+
{
|
|
23669
|
+
method: "POST",
|
|
23670
|
+
body: JSON.stringify(
|
|
23671
|
+
Object.fromEntries(
|
|
23672
|
+
queryFields.filter((key) => query[key] !== void 0).map((key) => [key, query[key]])
|
|
23673
|
+
)
|
|
23674
|
+
)
|
|
23675
|
+
},
|
|
23676
|
+
signal
|
|
23677
|
+
);
|
|
23678
|
+
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")
|
|
23679
|
+
throw new Error("Invalid nearby private-memory page");
|
|
23680
|
+
return {
|
|
23681
|
+
...await decodeAll(page.items),
|
|
23682
|
+
...page.next_cursor !== void 0 && { next_cursor: page.next_cursor },
|
|
23683
|
+
...page.changes_cursor !== void 0 && { changes_cursor: page.changes_cursor }
|
|
23684
|
+
};
|
|
23685
|
+
},
|
|
23451
23686
|
candidateSet,
|
|
23452
23687
|
candidates: async (embedding, candidateOptions = {}) => decodeAll((await fetchCandidates(embedding, candidateOptions, false)).items)
|
|
23453
23688
|
};
|
|
@@ -23799,10 +24034,10 @@ function createRemoteMemoryPipeline(options) {
|
|
|
23799
24034
|
factSource: {
|
|
23800
24035
|
graphRanking: options.graphRanking,
|
|
23801
24036
|
temporalRanking: options.temporalRanking,
|
|
23802
|
-
search: async (
|
|
23803
|
-
const prepared = await prepare(
|
|
24037
|
+
search: async (text13, searchOptions) => {
|
|
24038
|
+
const prepared = await prepare(text13, searchOptions);
|
|
23804
24039
|
const ranked = await rankPreparedVaultCandidates(
|
|
23805
|
-
|
|
24040
|
+
text13,
|
|
23806
24041
|
prepared,
|
|
23807
24042
|
embeddingOptions,
|
|
23808
24043
|
searchOptions
|
|
@@ -23837,6 +24072,490 @@ function createRemoteMemoryPipeline(options) {
|
|
|
23837
24072
|
};
|
|
23838
24073
|
}
|
|
23839
24074
|
|
|
24075
|
+
// src/lib/memory/store/remoteStore.ts
|
|
24076
|
+
var import_uuid6 = require("uuid");
|
|
24077
|
+
init_logger();
|
|
24078
|
+
function relevant(change, options) {
|
|
24079
|
+
return options.includeDeleted ? change === "membership" : change !== "embedding" || !!options.embeddings;
|
|
24080
|
+
}
|
|
24081
|
+
function safely(onChange) {
|
|
24082
|
+
try {
|
|
24083
|
+
onChange();
|
|
24084
|
+
} catch (error) {
|
|
24085
|
+
getLogger().warn("[memory/remote-store] Subscriber threw:", error);
|
|
24086
|
+
}
|
|
24087
|
+
}
|
|
24088
|
+
var MAX_BATCH = 50;
|
|
24089
|
+
var MAX_QUERY_IDS = 1e3;
|
|
24090
|
+
var MAX_QUERY_TOPICS = 100;
|
|
24091
|
+
var MAX_QUERY_FILTER = 20;
|
|
24092
|
+
var RemoteMemoryPartialCreateError = class extends Error {
|
|
24093
|
+
constructor(created, cause) {
|
|
24094
|
+
super(`createMany stored ${created.length} memories before a batch failed`);
|
|
24095
|
+
this.created = created;
|
|
24096
|
+
this.cause = cause;
|
|
24097
|
+
this.name = "RemoteMemoryPartialCreateError";
|
|
24098
|
+
}
|
|
24099
|
+
};
|
|
24100
|
+
function warnFailed(failed) {
|
|
24101
|
+
if (failed.length)
|
|
24102
|
+
getLogger().warn(
|
|
24103
|
+
`[memory/remote-store] Skipping ${failed.length} undecryptable row(s)`,
|
|
24104
|
+
failed.map((failure) => failure.memory_id)
|
|
24105
|
+
);
|
|
24106
|
+
}
|
|
24107
|
+
function bounded(filters, key) {
|
|
24108
|
+
const values = filters[key];
|
|
24109
|
+
if (!values || values.length <= MAX_QUERY_FILTER) return [filters];
|
|
24110
|
+
return chunks(values, MAX_QUERY_FILTER).map((chunk) => ({ ...filters, [key]: chunk }));
|
|
24111
|
+
}
|
|
24112
|
+
function chunks(values, size) {
|
|
24113
|
+
const out = [];
|
|
24114
|
+
for (let i = 0; i < values.length; i += size) out.push(values.slice(i, i + size));
|
|
24115
|
+
return out;
|
|
24116
|
+
}
|
|
24117
|
+
function stateFilters(options) {
|
|
24118
|
+
return {
|
|
24119
|
+
include_deleted: options.includeDeleted,
|
|
24120
|
+
include_archived: options.includeArchived,
|
|
24121
|
+
include_quarantined: options.includeQuarantined,
|
|
24122
|
+
include_superseded: options.includeSuperseded
|
|
24123
|
+
};
|
|
24124
|
+
}
|
|
24125
|
+
function hidden(memory, options) {
|
|
24126
|
+
if (memory.trust_tier === "quarantined") return true;
|
|
24127
|
+
if (options.includeDeleted) return false;
|
|
24128
|
+
return !!memory.is_deleted || memory.archived_at !== void 0 && memory.archived_at !== null || !!memory.superseded_by;
|
|
24129
|
+
}
|
|
24130
|
+
function subscriptionKey({ memory, version }, options) {
|
|
24131
|
+
if (hidden(memory, options)) return void 0;
|
|
24132
|
+
if (options.includeDeleted) return String(!!memory.is_deleted);
|
|
24133
|
+
return JSON.stringify([
|
|
24134
|
+
options.embeddings ? version : null,
|
|
24135
|
+
memory.content,
|
|
24136
|
+
memory.scope,
|
|
24137
|
+
memory.updated_at,
|
|
24138
|
+
memory.fact_type,
|
|
24139
|
+
memory.event_time_start,
|
|
24140
|
+
memory.event_time_end,
|
|
24141
|
+
memory.event_time_kind,
|
|
24142
|
+
memory.trust_tier,
|
|
24143
|
+
memory.visibility,
|
|
24144
|
+
memory.published_at,
|
|
24145
|
+
memory.geohash,
|
|
24146
|
+
memory.topics,
|
|
24147
|
+
memory.topics_user_managed,
|
|
24148
|
+
memory.media,
|
|
24149
|
+
memory.source
|
|
24150
|
+
]);
|
|
24151
|
+
}
|
|
24152
|
+
function topicInputs(topics, source) {
|
|
24153
|
+
return topics.flatMap((topic) => {
|
|
24154
|
+
const name = (typeof topic === "string" ? topic : topic.name).trim();
|
|
24155
|
+
const kind = typeof topic === "string" ? void 0 : topic.kind;
|
|
24156
|
+
return name ? [{ name, ...kind && { kind }, source }] : [];
|
|
24157
|
+
});
|
|
24158
|
+
}
|
|
24159
|
+
function mergeTopics(existing, added) {
|
|
24160
|
+
const byName = /* @__PURE__ */ new Map();
|
|
24161
|
+
for (const topic of [...existing, ...added]) {
|
|
24162
|
+
const key = normalizeEntityName(topic.name);
|
|
24163
|
+
if (!byName.has(key)) byName.set(key, topic);
|
|
24164
|
+
}
|
|
24165
|
+
return [...byName.values()];
|
|
24166
|
+
}
|
|
24167
|
+
function canonicalTopics(row) {
|
|
24168
|
+
return new Set((parseTopics(row.topics) ?? []).map((topic) => normalizeEntityName(topic.name)));
|
|
24169
|
+
}
|
|
24170
|
+
function createRemoteMemoryStore(options) {
|
|
24171
|
+
const { persistence, embeddingOptions } = options;
|
|
24172
|
+
const model = embeddingOptions.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
24173
|
+
const pollIntervalMs = options.pollIntervalMs ?? 6e4;
|
|
24174
|
+
const pipeline = createRemoteMemoryPipeline(options);
|
|
24175
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
24176
|
+
const seen = /* @__PURE__ */ new Map();
|
|
24177
|
+
let timer;
|
|
24178
|
+
const notify = (change, records = []) => {
|
|
24179
|
+
if (timer) for (const record2 of records) seen.set(record2.memory.memory_id, record2);
|
|
24180
|
+
for (const subscriber of [...subscribers])
|
|
24181
|
+
if (relevant(change, subscriber.options)) safely(subscriber.onChange);
|
|
24182
|
+
};
|
|
24183
|
+
const enumerate = async (filters, max = Infinity) => {
|
|
24184
|
+
const records = [];
|
|
24185
|
+
let cursor2;
|
|
24186
|
+
do {
|
|
24187
|
+
const page = await persistence.query({
|
|
24188
|
+
...filters,
|
|
24189
|
+
limit: Math.min(200, Math.max(1, max - records.length)),
|
|
24190
|
+
...cursor2 && { cursor: cursor2 }
|
|
24191
|
+
});
|
|
24192
|
+
warnFailed(page.failed);
|
|
24193
|
+
records.push(...page.items);
|
|
24194
|
+
cursor2 = page.next_cursor;
|
|
24195
|
+
} while (cursor2 && records.length < max);
|
|
24196
|
+
return records.slice(0, max);
|
|
24197
|
+
};
|
|
24198
|
+
const enumerateIds = async (ids, filters) => (await Promise.all(
|
|
24199
|
+
chunks([...new Set(ids)], MAX_QUERY_IDS).map(
|
|
24200
|
+
(memory_ids) => enumerate({ ...filters, memory_ids })
|
|
24201
|
+
)
|
|
24202
|
+
)).flat();
|
|
24203
|
+
const queues = /* @__PURE__ */ new Map();
|
|
24204
|
+
const serialized = (id, task) => {
|
|
24205
|
+
const run = (queues.get(id) ?? Promise.resolve()).then(task, task);
|
|
24206
|
+
const settled = run.catch(() => void 0);
|
|
24207
|
+
queues.set(id, settled);
|
|
24208
|
+
void settled.then(() => {
|
|
24209
|
+
if (queues.get(id) === settled) queues.delete(id);
|
|
24210
|
+
});
|
|
24211
|
+
return run;
|
|
24212
|
+
};
|
|
24213
|
+
const live = async (id) => {
|
|
24214
|
+
const record2 = await persistence.get(id);
|
|
24215
|
+
return record2 && !record2.memory.is_deleted ? record2 : null;
|
|
24216
|
+
};
|
|
24217
|
+
const mutate = async (id, change, edit) => serialized(id, async () => {
|
|
24218
|
+
const record2 = await live(id);
|
|
24219
|
+
if (!record2) return null;
|
|
24220
|
+
const next = edit(structuredClone(record2.memory));
|
|
24221
|
+
if (!next) return null;
|
|
24222
|
+
const saved = await persistence.put(next, record2);
|
|
24223
|
+
notify(change, [saved]);
|
|
24224
|
+
return saved;
|
|
24225
|
+
});
|
|
24226
|
+
const embedInBackground = ({ memory: { memory_id: id, content } }) => {
|
|
24227
|
+
generateEmbedding(content, embeddingOptions).then(
|
|
24228
|
+
(vector) => serialized(id, async () => {
|
|
24229
|
+
const current = await live(id);
|
|
24230
|
+
if (!current || current.memory.content !== content || current.memory.embedding?.length)
|
|
24231
|
+
return;
|
|
24232
|
+
const saved = await persistence.put(
|
|
24233
|
+
{ ...current.memory, embedding: storedVector(vector), embedding_model: model },
|
|
24234
|
+
current
|
|
24235
|
+
);
|
|
24236
|
+
notify("embedding", [saved]);
|
|
24237
|
+
})
|
|
24238
|
+
).catch((error) => {
|
|
24239
|
+
getLogger().warn("[memory/remote-store] Failed to embed memory:", error);
|
|
24240
|
+
});
|
|
24241
|
+
};
|
|
24242
|
+
const newRow = (input) => {
|
|
24243
|
+
const now = Date.now();
|
|
24244
|
+
const scope = input.scope ?? "private";
|
|
24245
|
+
return {
|
|
24246
|
+
memory_id: (0, import_uuid6.v7)(),
|
|
24247
|
+
content: input.content,
|
|
24248
|
+
scope,
|
|
24249
|
+
level: levelFromScope(scope),
|
|
24250
|
+
created_at: now,
|
|
24251
|
+
updated_at: now,
|
|
24252
|
+
is_deleted: false,
|
|
24253
|
+
...input.embedding !== void 0 && {
|
|
24254
|
+
embedding: storedVector(JSON.parse(input.embedding)),
|
|
24255
|
+
embedding_model: input.embeddingModel ?? model
|
|
24256
|
+
},
|
|
24257
|
+
proof_count: 1,
|
|
24258
|
+
source: "manual",
|
|
24259
|
+
...input.eventTime && {
|
|
24260
|
+
event_time_start: input.eventTime.start ?? void 0,
|
|
24261
|
+
event_time_end: input.eventTime.end ?? void 0,
|
|
24262
|
+
event_time_kind: input.eventTime.kind ?? void 0
|
|
24263
|
+
},
|
|
24264
|
+
fact_type: input.factType,
|
|
24265
|
+
geohash: input.geohash,
|
|
24266
|
+
visibility: "private",
|
|
24267
|
+
twin_opt_in: false
|
|
24268
|
+
};
|
|
24269
|
+
};
|
|
24270
|
+
const created = (records, inputs) => {
|
|
24271
|
+
records.forEach((record2, i) => {
|
|
24272
|
+
if (inputs[i].embedding === void 0) embedInBackground(record2);
|
|
24273
|
+
});
|
|
24274
|
+
notify("membership", records);
|
|
24275
|
+
return records.map((record2) => stored(record2.memory));
|
|
24276
|
+
};
|
|
24277
|
+
const asStored = (record2) => record2 ? stored(record2.memory) : null;
|
|
24278
|
+
const everyState = {
|
|
24279
|
+
include_deleted: true,
|
|
24280
|
+
include_archived: true,
|
|
24281
|
+
include_quarantined: true,
|
|
24282
|
+
include_superseded: true
|
|
24283
|
+
};
|
|
24284
|
+
const changesSince = async (cursor2, pending2) => {
|
|
24285
|
+
const records = [];
|
|
24286
|
+
const failed = /* @__PURE__ */ new Set();
|
|
24287
|
+
const collect = (page) => {
|
|
24288
|
+
warnFailed(page.failed);
|
|
24289
|
+
records.push(...page.items);
|
|
24290
|
+
for (const failure of page.failed) failed.add(failure.memory_id);
|
|
24291
|
+
};
|
|
24292
|
+
let resume = cursor2;
|
|
24293
|
+
let next;
|
|
24294
|
+
do {
|
|
24295
|
+
const page = await persistence.query({
|
|
24296
|
+
...everyState,
|
|
24297
|
+
order: "changed",
|
|
24298
|
+
limit: 200,
|
|
24299
|
+
...(next ?? resume) && { cursor: next ?? resume }
|
|
24300
|
+
});
|
|
24301
|
+
collect(page);
|
|
24302
|
+
resume = page.changes_cursor ?? resume;
|
|
24303
|
+
next = page.next_cursor;
|
|
24304
|
+
} while (next);
|
|
24305
|
+
for (const memory_ids of chunks([...pending2], MAX_QUERY_IDS)) {
|
|
24306
|
+
let retry;
|
|
24307
|
+
do {
|
|
24308
|
+
const page = await persistence.query({
|
|
24309
|
+
...everyState,
|
|
24310
|
+
memory_ids,
|
|
24311
|
+
limit: 200,
|
|
24312
|
+
...retry && { cursor: retry }
|
|
24313
|
+
});
|
|
24314
|
+
collect(page);
|
|
24315
|
+
retry = page.next_cursor;
|
|
24316
|
+
} while (retry);
|
|
24317
|
+
}
|
|
24318
|
+
return { records, resume, failed };
|
|
24319
|
+
};
|
|
24320
|
+
let generation = 0;
|
|
24321
|
+
let ready = false;
|
|
24322
|
+
let cursor;
|
|
24323
|
+
let pending = /* @__PURE__ */ new Set();
|
|
24324
|
+
let polling = false;
|
|
24325
|
+
const poll = () => {
|
|
24326
|
+
if (polling) return;
|
|
24327
|
+
polling = true;
|
|
24328
|
+
const current = generation;
|
|
24329
|
+
changesSince(cursor, pending).then(({ records, resume, failed }) => {
|
|
24330
|
+
if (current !== generation) return;
|
|
24331
|
+
const changed = /* @__PURE__ */ new Set();
|
|
24332
|
+
for (const record2 of records) {
|
|
24333
|
+
const id = record2.memory.memory_id;
|
|
24334
|
+
const previous = seen.get(id);
|
|
24335
|
+
seen.set(id, record2);
|
|
24336
|
+
if (!ready) continue;
|
|
24337
|
+
for (const subscriber of subscribers) {
|
|
24338
|
+
const before = previous && subscriptionKey(previous, subscriber.options);
|
|
24339
|
+
if (before !== subscriptionKey(record2, subscriber.options)) changed.add(subscriber);
|
|
24340
|
+
}
|
|
24341
|
+
}
|
|
24342
|
+
ready = true;
|
|
24343
|
+
cursor = resume;
|
|
24344
|
+
pending = failed;
|
|
24345
|
+
for (const subscriber of changed)
|
|
24346
|
+
if (subscribers.has(subscriber)) safely(subscriber.onChange);
|
|
24347
|
+
}).catch((error) => {
|
|
24348
|
+
getLogger().warn("[memory/remote-store] Subscription poll failed:", error);
|
|
24349
|
+
}).finally(() => {
|
|
24350
|
+
polling = false;
|
|
24351
|
+
});
|
|
24352
|
+
};
|
|
24353
|
+
return {
|
|
24354
|
+
list: async (listOptions = {}) => {
|
|
24355
|
+
const order = listOptions.since ? "updated" : "created";
|
|
24356
|
+
const filters = {
|
|
24357
|
+
...stateFilters(listOptions),
|
|
24358
|
+
include_embeddings: true,
|
|
24359
|
+
order,
|
|
24360
|
+
...listOptions.scopes?.length && { scopes: listOptions.scopes },
|
|
24361
|
+
...listOptions.factTypes?.length && { fact_types: listOptions.factTypes },
|
|
24362
|
+
...listOptions.visibility?.length && { visibility: listOptions.visibility },
|
|
24363
|
+
...listOptions.since && { updated_after: listOptions.since.getTime() }
|
|
24364
|
+
};
|
|
24365
|
+
const max = listOptions.limit && listOptions.limit > 0 ? listOptions.limit : Infinity;
|
|
24366
|
+
const variants = bounded(filters, "scopes").flatMap((f) => bounded(f, "fact_types"));
|
|
24367
|
+
if (!listOptions.memoryIds && variants.length === 1)
|
|
24368
|
+
return (await enumerate(filters, max)).map((r) => stored(r.memory));
|
|
24369
|
+
const fetched = await Promise.all(
|
|
24370
|
+
variants.map(
|
|
24371
|
+
(variant) => listOptions.memoryIds ? enumerateIds(listOptions.memoryIds, variant) : enumerate(variant, max)
|
|
24372
|
+
)
|
|
24373
|
+
);
|
|
24374
|
+
const rows = [...new Map(fetched.flat().map((r) => [r.memory.memory_id, r])).values()].map((record2) => stored(record2.memory)).sort(
|
|
24375
|
+
(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)
|
|
24376
|
+
);
|
|
24377
|
+
return rows.slice(0, max);
|
|
24378
|
+
},
|
|
24379
|
+
get: async (id) => asStored(await live(id)),
|
|
24380
|
+
listArchived: async () => (await enumerate({ archived_only: true, order: "archived", include_embeddings: true })).map(
|
|
24381
|
+
(record2) => stored(record2.memory)
|
|
24382
|
+
),
|
|
24383
|
+
memoriesByTopics: async (names) => {
|
|
24384
|
+
const wanted = new Set(names.map(normalizeEntityName).filter(Boolean));
|
|
24385
|
+
const out = /* @__PURE__ */ new Map();
|
|
24386
|
+
const pages = await Promise.all(
|
|
24387
|
+
chunks([...wanted], MAX_QUERY_TOPICS).map((topics) => enumerate({ topics }))
|
|
24388
|
+
);
|
|
24389
|
+
for (const { memory } of pages.flat()) {
|
|
24390
|
+
const matched = [...canonicalTopics(memory)].filter((name) => wanted.has(name));
|
|
24391
|
+
if (matched.length) out.set(memory.memory_id, new Set(matched));
|
|
24392
|
+
}
|
|
24393
|
+
return out;
|
|
24394
|
+
},
|
|
24395
|
+
topicsByMemories: async (memoryIds) => {
|
|
24396
|
+
const out = /* @__PURE__ */ new Map();
|
|
24397
|
+
for (const { memory } of await enumerateIds(memoryIds, {
|
|
24398
|
+
include_archived: true,
|
|
24399
|
+
include_superseded: true,
|
|
24400
|
+
include_quarantined: true
|
|
24401
|
+
})) {
|
|
24402
|
+
const topics = canonicalTopics(memory);
|
|
24403
|
+
if (topics.size) out.set(memory.memory_id, topics);
|
|
24404
|
+
}
|
|
24405
|
+
return out;
|
|
24406
|
+
},
|
|
24407
|
+
create: async (input) => {
|
|
24408
|
+
const record2 = await persistence.put(newRow(input), 0);
|
|
24409
|
+
return created([record2], [input])[0];
|
|
24410
|
+
},
|
|
24411
|
+
createMany: async (inputs) => {
|
|
24412
|
+
const out = [];
|
|
24413
|
+
for (const batch of chunks(inputs, MAX_BATCH)) {
|
|
24414
|
+
let records;
|
|
24415
|
+
try {
|
|
24416
|
+
records = await persistence.putMany(
|
|
24417
|
+
batch.map((input) => ({ memory: newRow(input), expectedVersion: 0 }))
|
|
24418
|
+
);
|
|
24419
|
+
} catch (error) {
|
|
24420
|
+
if (out.length === 0) throw error;
|
|
24421
|
+
throw new RemoteMemoryPartialCreateError(out, error);
|
|
24422
|
+
}
|
|
24423
|
+
out.push(...created(records, batch));
|
|
24424
|
+
}
|
|
24425
|
+
return out;
|
|
24426
|
+
},
|
|
24427
|
+
update: async (id, patch) => {
|
|
24428
|
+
const saved = await mutate(id, "edit", (memory) => {
|
|
24429
|
+
if (memory.superseded_by) return null;
|
|
24430
|
+
memory.content = patch.content;
|
|
24431
|
+
memory.updated_at = Date.now();
|
|
24432
|
+
if (patch.scope !== void 0) {
|
|
24433
|
+
memory.level = levelForScopeChange(
|
|
24434
|
+
{ level: memory.level, scope: memory.scope },
|
|
24435
|
+
patch.scope
|
|
24436
|
+
);
|
|
24437
|
+
memory.scope = patch.scope;
|
|
24438
|
+
}
|
|
24439
|
+
if (patch.factType !== void 0) memory.fact_type = patch.factType ?? void 0;
|
|
24440
|
+
if (patch.eventTime !== void 0) {
|
|
24441
|
+
memory.event_time_start = patch.eventTime?.start ?? void 0;
|
|
24442
|
+
memory.event_time_end = patch.eventTime?.end ?? void 0;
|
|
24443
|
+
memory.event_time_kind = patch.eventTime?.kind ?? void 0;
|
|
24444
|
+
}
|
|
24445
|
+
if (patch.embedding === void 0 || patch.embedding === null) {
|
|
24446
|
+
memory.embedding = [];
|
|
24447
|
+
delete memory.embedding_model;
|
|
24448
|
+
} else {
|
|
24449
|
+
memory.embedding = storedVector(JSON.parse(patch.embedding));
|
|
24450
|
+
memory.embedding_model = patch.embeddingModel ?? model;
|
|
24451
|
+
}
|
|
24452
|
+
return memory;
|
|
24453
|
+
});
|
|
24454
|
+
if (saved && patch.embedding === void 0) embedInBackground(saved);
|
|
24455
|
+
return asStored(saved);
|
|
24456
|
+
},
|
|
24457
|
+
delete: async (id) => !!await mutate(id, "membership", (memory) => ({ ...memory, is_deleted: true })),
|
|
24458
|
+
supersede: async (id, supersededById) => {
|
|
24459
|
+
if (id === supersededById) return false;
|
|
24460
|
+
const [first, second] = [id, supersededById].sort();
|
|
24461
|
+
return serialized(
|
|
24462
|
+
first,
|
|
24463
|
+
() => serialized(second, async () => {
|
|
24464
|
+
const [old, next] = await Promise.all([live(id), live(supersededById)]);
|
|
24465
|
+
if (!old || !next || old.memory.superseded_by || next.memory.superseded_by) return false;
|
|
24466
|
+
if (old.memory.kind !== void 0 && old.memory.kind !== null) return false;
|
|
24467
|
+
const saved = await persistence.putMany([
|
|
24468
|
+
{
|
|
24469
|
+
memory: { ...old.memory, superseded_by: supersededById, superseded_at: Date.now() },
|
|
24470
|
+
expectedVersion: old
|
|
24471
|
+
},
|
|
24472
|
+
{ memory: next.memory, expectedVersion: next }
|
|
24473
|
+
]);
|
|
24474
|
+
notify("membership", saved);
|
|
24475
|
+
return true;
|
|
24476
|
+
})
|
|
24477
|
+
);
|
|
24478
|
+
},
|
|
24479
|
+
archive: async (id) => !!await mutate(
|
|
24480
|
+
id,
|
|
24481
|
+
"edit",
|
|
24482
|
+
(memory) => memory.archived_at === void 0 || memory.archived_at === null ? { ...memory, archived_at: Date.now() } : null
|
|
24483
|
+
),
|
|
24484
|
+
restore: (id) => serialized(id, async () => {
|
|
24485
|
+
const record2 = await live(id);
|
|
24486
|
+
if (!record2) return false;
|
|
24487
|
+
if (record2.memory.archived_at === void 0 || record2.memory.archived_at === null)
|
|
24488
|
+
return true;
|
|
24489
|
+
const { archived_at: _archivedAt, ...memory } = record2.memory;
|
|
24490
|
+
notify("edit", [await persistence.put(memory, record2)]);
|
|
24491
|
+
return true;
|
|
24492
|
+
}),
|
|
24493
|
+
setTopics: async (memoryId, topics) => asStored(
|
|
24494
|
+
await mutate(memoryId, "edit", (memory) => ({
|
|
24495
|
+
...memory,
|
|
24496
|
+
topics: serializeTopics(mergeTopics([], topicInputs(topics, "user"))),
|
|
24497
|
+
topics_user_managed: true,
|
|
24498
|
+
topics_updated_at: Date.now()
|
|
24499
|
+
}))
|
|
24500
|
+
),
|
|
24501
|
+
addTopics: async (memoryId, topics) => {
|
|
24502
|
+
const added = topicInputs(topics, "auto");
|
|
24503
|
+
const saved = await mutate(memoryId, "edit", (memory) => ({
|
|
24504
|
+
...memory,
|
|
24505
|
+
topics: serializeTopics(mergeTopics(parseTopics(memory.topics) ?? [], added)),
|
|
24506
|
+
topics_updated_at: Date.now()
|
|
24507
|
+
}));
|
|
24508
|
+
if (!saved) return [];
|
|
24509
|
+
const now = /* @__PURE__ */ new Date();
|
|
24510
|
+
return mergeTopics([], added).map(
|
|
24511
|
+
(topic) => ({
|
|
24512
|
+
uniqueId: normalizeEntityName(topic.name),
|
|
24513
|
+
canonicalName: normalizeEntityName(topic.name),
|
|
24514
|
+
kind: topic.kind ?? null,
|
|
24515
|
+
createdAt: now,
|
|
24516
|
+
updatedAt: now
|
|
24517
|
+
})
|
|
24518
|
+
);
|
|
24519
|
+
},
|
|
24520
|
+
setVisibility: async (id, visibility, visibilityOptions) => asStored(
|
|
24521
|
+
await mutate(id, "edit", (memory) => {
|
|
24522
|
+
memory.visibility = visibility;
|
|
24523
|
+
if (visibility === "private") delete memory.published_at;
|
|
24524
|
+
else memory.published_at ?? (memory.published_at = Date.now());
|
|
24525
|
+
if (visibilityOptions?.twinOptIn !== void 0)
|
|
24526
|
+
memory.twin_opt_in = visibilityOptions.twinOptIn;
|
|
24527
|
+
return memory;
|
|
24528
|
+
})
|
|
24529
|
+
),
|
|
24530
|
+
recall: (query, recallOptions) => pipeline.recall(query, recallOptions),
|
|
24531
|
+
retain: async (content, retainOptions) => {
|
|
24532
|
+
const result = await pipeline.retain(content, retainOptions);
|
|
24533
|
+
if (result.action === "create" || result.action === "supersede") notify("membership");
|
|
24534
|
+
else if (result.action === "update" || result.action === "merge") notify("edit");
|
|
24535
|
+
return result;
|
|
24536
|
+
},
|
|
24537
|
+
subscribe: (onChange, subscribeOptions = {}) => {
|
|
24538
|
+
const subscriber = { onChange, options: subscribeOptions };
|
|
24539
|
+
subscribers.add(subscriber);
|
|
24540
|
+
if (pollIntervalMs > 0 && !timer) {
|
|
24541
|
+
timer = setInterval(poll, pollIntervalMs);
|
|
24542
|
+
poll();
|
|
24543
|
+
}
|
|
24544
|
+
return () => {
|
|
24545
|
+
subscribers.delete(subscriber);
|
|
24546
|
+
if (subscribers.size || !timer) return;
|
|
24547
|
+
clearInterval(timer);
|
|
24548
|
+
timer = void 0;
|
|
24549
|
+
generation++;
|
|
24550
|
+
seen.clear();
|
|
24551
|
+
ready = false;
|
|
24552
|
+
cursor = void 0;
|
|
24553
|
+
pending = /* @__PURE__ */ new Set();
|
|
24554
|
+
};
|
|
24555
|
+
}
|
|
24556
|
+
};
|
|
24557
|
+
}
|
|
24558
|
+
|
|
23840
24559
|
// src/lib/memory/synthesizeProfile.ts
|
|
23841
24560
|
init_internalFlowMarker();
|
|
23842
24561
|
init_logger();
|
|
@@ -24209,8 +24928,8 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
24209
24928
|
memories
|
|
24210
24929
|
});
|
|
24211
24930
|
const noEvidence = result.basedOn.memoryIds.length === 0;
|
|
24212
|
-
const { text:
|
|
24213
|
-
if (!
|
|
24931
|
+
const { text: text13, legitimateEmpty } = extractFacetText(result.structuredOutput);
|
|
24932
|
+
if (!text13 && !legitimateEmpty && !noEvidence) {
|
|
24214
24933
|
getLogger().warn(
|
|
24215
24934
|
"[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
|
|
24216
24935
|
{ facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
|
|
@@ -24220,12 +24939,12 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
24220
24939
|
const section = {
|
|
24221
24940
|
key: facet.key,
|
|
24222
24941
|
label: facet.label,
|
|
24223
|
-
text:
|
|
24942
|
+
text: text13,
|
|
24224
24943
|
sourceMemoryIds: result.basedOn.memoryIds,
|
|
24225
24944
|
generatedAt: Date.now()
|
|
24226
24945
|
};
|
|
24227
|
-
if (options.redactor &&
|
|
24228
|
-
const redacted = await options.redactor.redactTextAsync(
|
|
24946
|
+
if (options.redactor && text13) {
|
|
24947
|
+
const redacted = await options.redactor.redactTextAsync(text13);
|
|
24229
24948
|
section.text = redacted.text;
|
|
24230
24949
|
}
|
|
24231
24950
|
if (!legitimateEmpty && !noEvidence) {
|
|
@@ -24738,10 +25457,10 @@ function createDurableAutoExtractor(options) {
|
|
|
24738
25457
|
const counted = error instanceof BatchFailureError || error instanceof LockedSourcesError && error.persistentIds.length > 0;
|
|
24739
25458
|
if (!counted) return false;
|
|
24740
25459
|
const prior = sessionFailures.get(job.id);
|
|
24741
|
-
const
|
|
24742
|
-
sessionFailures.set(job.id, { head, count });
|
|
25460
|
+
const count2 = prior?.head === head ? prior.count + 1 : 1;
|
|
25461
|
+
sessionFailures.set(job.id, { head, count: count2 });
|
|
24743
25462
|
const terminal = error instanceof BatchFailureError && error.terminal;
|
|
24744
|
-
if (!terminal &&
|
|
25463
|
+
if (!terminal && count2 < MAX_ATTEMPTS) return false;
|
|
24745
25464
|
skippedThisSession.add(job.id);
|
|
24746
25465
|
const now = clock();
|
|
24747
25466
|
const lastCounted = failedAtOf(job, head);
|
|
@@ -25048,7 +25767,7 @@ async function verifyFactSupport(items, options) {
|
|
|
25048
25767
|
}
|
|
25049
25768
|
const maxEvidenceChars = Math.max(1, options.maxEvidenceChars ?? DEFAULT_MAX_EVIDENCE_CHARS);
|
|
25050
25769
|
const redactor = resolvePiiRedactor(options.piiRedaction ?? true);
|
|
25051
|
-
const safe = async (
|
|
25770
|
+
const safe = async (text13) => redactor ? (await redactor.redactTextAsync(text13)).text : text13;
|
|
25052
25771
|
let truncatedCount = 0;
|
|
25053
25772
|
const parts = [];
|
|
25054
25773
|
for (const [i, item] of items.entries()) {
|
|
@@ -25105,7 +25824,7 @@ Which item numbers are supported?`,
|
|
|
25105
25824
|
}
|
|
25106
25825
|
return supported;
|
|
25107
25826
|
}
|
|
25108
|
-
function parseSupported(parsed,
|
|
25827
|
+
function parseSupported(parsed, count2) {
|
|
25109
25828
|
if (typeof parsed !== "object" || parsed === null) return null;
|
|
25110
25829
|
const list = parsed.supported;
|
|
25111
25830
|
if (!Array.isArray(list)) return null;
|
|
@@ -25113,7 +25832,7 @@ function parseSupported(parsed, count) {
|
|
|
25113
25832
|
for (const raw of list) {
|
|
25114
25833
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
25115
25834
|
if (!Number.isInteger(n)) continue;
|
|
25116
|
-
if (n >= 1 && n <=
|
|
25835
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
25117
25836
|
}
|
|
25118
25837
|
return out;
|
|
25119
25838
|
}
|
|
@@ -25164,7 +25883,7 @@ async function verifyMemoriesForPublish(memories, sources, options) {
|
|
|
25164
25883
|
);
|
|
25165
25884
|
const pending = [];
|
|
25166
25885
|
for (const { index, uniqueId, content, ids } of withinBudget) {
|
|
25167
|
-
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((
|
|
25886
|
+
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((text13) => text13 !== null);
|
|
25168
25887
|
const dropped = ids.length - evidence.length;
|
|
25169
25888
|
if (ids.some((id) => unreadable.has(id))) {
|
|
25170
25889
|
results[index] = {
|
|
@@ -25667,22 +26386,22 @@ function normalizeManualFactType(value) {
|
|
|
25667
26386
|
function isSharedScope(scope) {
|
|
25668
26387
|
return scope === "shared";
|
|
25669
26388
|
}
|
|
25670
|
-
async function notifyWritten(options, input,
|
|
26389
|
+
async function notifyWritten(options, input, outcome2) {
|
|
25671
26390
|
try {
|
|
25672
|
-
await options?.onWritten?.({ input, outcome });
|
|
26391
|
+
await options?.onWritten?.({ input, outcome: outcome2 });
|
|
25673
26392
|
} catch {
|
|
25674
26393
|
}
|
|
25675
26394
|
}
|
|
25676
|
-
function describeWriteOutcome(
|
|
25677
|
-
switch (
|
|
26395
|
+
function describeWriteOutcome(outcome2) {
|
|
26396
|
+
switch (outcome2.action) {
|
|
25678
26397
|
case "create":
|
|
25679
|
-
return `Memory saved successfully (ID: ${
|
|
26398
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}).`;
|
|
25680
26399
|
case "update":
|
|
25681
26400
|
case "supersede":
|
|
25682
|
-
return `Memory saved successfully (ID: ${
|
|
26401
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}); it replaces an earlier version of this fact.`;
|
|
25683
26402
|
case "merge":
|
|
25684
26403
|
case "skip":
|
|
25685
|
-
return `The vault already holds this fact (ID: ${
|
|
26404
|
+
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.`;
|
|
25686
26405
|
case "suppressed":
|
|
25687
26406
|
return "Not saved: this matches a memory the user previously deleted. Do not re-save it.";
|
|
25688
26407
|
}
|
|
@@ -25788,9 +26507,9 @@ function createMemoryVaultTool(vaultCtx, options, embeddingOptions, cache) {
|
|
|
25788
26507
|
...folderId !== void 0 && { folderId },
|
|
25789
26508
|
...factType !== void 0 && { factType }
|
|
25790
26509
|
};
|
|
25791
|
-
const
|
|
25792
|
-
await notifyWritten(options, input,
|
|
25793
|
-
return describeWriteOutcome(
|
|
26510
|
+
const outcome2 = await options.write(input);
|
|
26511
|
+
await notifyWritten(options, input, outcome2);
|
|
26512
|
+
return describeWriteOutcome(outcome2);
|
|
25794
26513
|
}
|
|
25795
26514
|
const created = await createVaultMemoryOp(vaultCtx, {
|
|
25796
26515
|
content,
|
|
@@ -26079,10 +26798,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
26079
26798
|
function lineHeightMm(fontSizePt) {
|
|
26080
26799
|
return ptToMm(fontSizePt) * lineHeight;
|
|
26081
26800
|
}
|
|
26082
|
-
function renderWrappedText(
|
|
26801
|
+
function renderWrappedText(text13, x, maxW, fontSizePt, fontStyle = "normal", fontFamily = "Helvetica") {
|
|
26083
26802
|
doc.setFont(fontFamily, fontStyle);
|
|
26084
26803
|
doc.setFontSize(fontSizePt);
|
|
26085
|
-
const lines = doc.splitTextToSize(
|
|
26804
|
+
const lines = doc.splitTextToSize(text13, maxW);
|
|
26086
26805
|
const lh = lineHeightMm(fontSizePt);
|
|
26087
26806
|
for (const line of lines) {
|
|
26088
26807
|
ensureSpace(lh);
|
|
@@ -26164,10 +26883,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
26164
26883
|
const lh = lineHeightMm(opts.fontSize);
|
|
26165
26884
|
for (let i = 0; i < items.length; i++) {
|
|
26166
26885
|
const prefix = ordered ? `${(listToken.start || 1) + i}. ` : "\u2022 ";
|
|
26167
|
-
const
|
|
26886
|
+
const text13 = tokensToPlainText(items[i].tokens);
|
|
26168
26887
|
ensureSpace(lh);
|
|
26169
26888
|
doc.text(prefix, opts.margins.left, cursorY);
|
|
26170
|
-
const listLines = doc.splitTextToSize(
|
|
26889
|
+
const listLines = doc.splitTextToSize(text13, itemW);
|
|
26171
26890
|
for (const line of listLines) {
|
|
26172
26891
|
ensureSpace(lh);
|
|
26173
26892
|
doc.text(line, indentX, cursorY);
|
|
@@ -26179,12 +26898,12 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
26179
26898
|
}
|
|
26180
26899
|
case "blockquote": {
|
|
26181
26900
|
const bqToken = token;
|
|
26182
|
-
const
|
|
26901
|
+
const text13 = tokensToPlainText(bqToken.tokens ?? []);
|
|
26183
26902
|
const indentX = opts.margins.left + SPACING.QUOTE_INDENT;
|
|
26184
26903
|
const quoteW = cw - SPACING.QUOTE_INSET;
|
|
26185
26904
|
doc.setFont("Helvetica", "italic");
|
|
26186
26905
|
doc.setFontSize(opts.fontSize);
|
|
26187
|
-
const bqLines = doc.splitTextToSize(
|
|
26906
|
+
const bqLines = doc.splitTextToSize(text13, quoteW);
|
|
26188
26907
|
const lh = lineHeightMm(opts.fontSize);
|
|
26189
26908
|
const blockH = bqLines.length * lh;
|
|
26190
26909
|
ensureSpace(Math.min(blockH, 20));
|
|
@@ -26220,8 +26939,8 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
26220
26939
|
doc.setFont("Helvetica", fontStyle);
|
|
26221
26940
|
doc.setFontSize(tableFontSize);
|
|
26222
26941
|
const cellLines = cells.map((cell) => {
|
|
26223
|
-
const
|
|
26224
|
-
return doc.splitTextToSize(
|
|
26942
|
+
const text13 = tokensToPlainText(cell.tokens);
|
|
26943
|
+
return doc.splitTextToSize(text13, cellContentW);
|
|
26225
26944
|
});
|
|
26226
26945
|
const maxLines = Math.max(1, ...cellLines.map((l) => l.length));
|
|
26227
26946
|
ensureSpace(maxLines * lh + SPACING.SM);
|
|
@@ -26452,13 +27171,13 @@ async function withPdfDocument(pdfDataUrl, fn) {
|
|
|
26452
27171
|
}
|
|
26453
27172
|
}
|
|
26454
27173
|
function joinPdfTextItems(items) {
|
|
26455
|
-
let
|
|
27174
|
+
let text13 = "";
|
|
26456
27175
|
for (const item of items) {
|
|
26457
27176
|
if (!("str" in item)) continue;
|
|
26458
27177
|
const { str, hasEOL } = item;
|
|
26459
|
-
|
|
27178
|
+
text13 += str + (hasEOL ? "\n" : " ");
|
|
26460
27179
|
}
|
|
26461
|
-
return
|
|
27180
|
+
return text13.replace(/[ \t]+\n/g, "\n").trim();
|
|
26462
27181
|
}
|
|
26463
27182
|
function computeRenderScale(width, height) {
|
|
26464
27183
|
const longest = Math.max(width, height);
|
|
@@ -26478,7 +27197,7 @@ async function extractPdfPageTexts(pdfDataUrl) {
|
|
|
26478
27197
|
}
|
|
26479
27198
|
async function extractTextFromPdf(pdfDataUrl) {
|
|
26480
27199
|
const pageTexts = await extractPdfPageTexts(pdfDataUrl);
|
|
26481
|
-
return pageTexts.filter((
|
|
27200
|
+
return pageTexts.filter((text13) => text13.trim()).join("\n\n");
|
|
26482
27201
|
}
|
|
26483
27202
|
async function renderPdfPages(pdfDataUrl, maxPages, pageNumbers) {
|
|
26484
27203
|
return withPdfDocument(pdfDataUrl, async (pdf) => {
|
|
@@ -26520,8 +27239,8 @@ var MAX_IMAGE_PAGES = 20;
|
|
|
26520
27239
|
var MIN_PAGE_TEXT_CHARS = 20;
|
|
26521
27240
|
function selectPdfImagePages(pageTexts, maxImagePages = MAX_IMAGE_PAGES) {
|
|
26522
27241
|
const needImage = [];
|
|
26523
|
-
pageTexts.forEach((
|
|
26524
|
-
if (
|
|
27242
|
+
pageTexts.forEach((text13, index) => {
|
|
27243
|
+
if (text13.trim().length < MIN_PAGE_TEXT_CHARS) needImage.push(index + 1);
|
|
26525
27244
|
});
|
|
26526
27245
|
const limit = Math.max(0, maxImagePages);
|
|
26527
27246
|
return { rendered: needImage.slice(0, limit), omitted: needImage.slice(limit) };
|
|
@@ -26580,10 +27299,10 @@ var PdfProcessor = class {
|
|
|
26580
27299
|
textError
|
|
26581
27300
|
);
|
|
26582
27301
|
}
|
|
26583
|
-
const
|
|
27302
|
+
const text13 = (pageTexts ?? []).filter((t) => t.trim()).join("\n\n");
|
|
26584
27303
|
const { rendered, omitted } = pageTexts ? selectPdfImagePages(pageTexts) : { rendered: [], omitted: [] };
|
|
26585
27304
|
if (pageTexts && rendered.length === 0 && omitted.length === 0) {
|
|
26586
|
-
return
|
|
27305
|
+
return text13.trim() ? { extractedText: text13, format: "plain" } : null;
|
|
26587
27306
|
}
|
|
26588
27307
|
let renderedPages;
|
|
26589
27308
|
let pageCount = pageTexts?.length;
|
|
@@ -26596,7 +27315,7 @@ var PdfProcessor = class {
|
|
|
26596
27315
|
pageCount = result.pageCount;
|
|
26597
27316
|
}
|
|
26598
27317
|
} catch (imageError) {
|
|
26599
|
-
if (!
|
|
27318
|
+
if (!text13.trim()) {
|
|
26600
27319
|
logger.error("[PdfProcessor] Image conversion also failed:", imageError);
|
|
26601
27320
|
throw imageError;
|
|
26602
27321
|
}
|
|
@@ -26608,7 +27327,7 @@ var PdfProcessor = class {
|
|
|
26608
27327
|
const included = new Set(imagePages);
|
|
26609
27328
|
const needImage = pageTexts ? [...rendered, ...omitted] : Array.from({ length: pageCount ?? 0 }, (_, i) => i + 1);
|
|
26610
27329
|
const omittedPages = needImage.filter((n) => !included.has(n)).sort((a, b) => a - b);
|
|
26611
|
-
if (images.length === 0 && !
|
|
27330
|
+
if (images.length === 0 && !text13.trim()) {
|
|
26612
27331
|
logger.warn("[PdfProcessor] Image conversion also returned empty");
|
|
26613
27332
|
return null;
|
|
26614
27333
|
}
|
|
@@ -26617,9 +27336,9 @@ var PdfProcessor = class {
|
|
|
26617
27336
|
);
|
|
26618
27337
|
const imageNote = buildPdfImageNote(file.name, imagePages, omittedPages, pageCount);
|
|
26619
27338
|
return {
|
|
26620
|
-
extractedText:
|
|
27339
|
+
extractedText: text13.trim() ? `${imageNote}
|
|
26621
27340
|
|
|
26622
|
-
${
|
|
27341
|
+
${text13}` : imageNote,
|
|
26623
27342
|
format: "plain",
|
|
26624
27343
|
imageDataUrls: images.length > 0 ? images : void 0,
|
|
26625
27344
|
metadata: {
|
|
@@ -26785,16 +27504,16 @@ var TextProcessor = class {
|
|
|
26785
27504
|
async process(file) {
|
|
26786
27505
|
try {
|
|
26787
27506
|
const arrayBuffer = await dataUrlToArrayBuffer(file.dataUrl);
|
|
26788
|
-
const
|
|
26789
|
-
if (!
|
|
27507
|
+
const text13 = decodeText(new Uint8Array(arrayBuffer));
|
|
27508
|
+
if (!text13.trim()) {
|
|
26790
27509
|
return null;
|
|
26791
27510
|
}
|
|
26792
27511
|
return {
|
|
26793
|
-
extractedText:
|
|
27512
|
+
extractedText: text13,
|
|
26794
27513
|
format: this.resolveFormat(file),
|
|
26795
27514
|
metadata: {
|
|
26796
27515
|
byteLength: arrayBuffer.byteLength,
|
|
26797
|
-
characterCount:
|
|
27516
|
+
characterCount: text13.length
|
|
26798
27517
|
}
|
|
26799
27518
|
};
|
|
26800
27519
|
} catch (error) {
|
|
@@ -26856,8 +27575,8 @@ var WordProcessor = class {
|
|
|
26856
27575
|
/**
|
|
26857
27576
|
* Count words in text
|
|
26858
27577
|
*/
|
|
26859
|
-
countWords(
|
|
26860
|
-
return
|
|
27578
|
+
countWords(text13) {
|
|
27579
|
+
return text13.split(/\s+/).filter((w) => w.length > 0).length;
|
|
26861
27580
|
}
|
|
26862
27581
|
};
|
|
26863
27582
|
|
|
@@ -27095,13 +27814,13 @@ function truncationMarker2(kept, total, fileName) {
|
|
|
27095
27814
|
return `
|
|
27096
27815
|
[truncated: showing the first ${kept} of ${total} characters of ${fileName}]`;
|
|
27097
27816
|
}
|
|
27098
|
-
function truncateText(
|
|
27099
|
-
if (
|
|
27817
|
+
function truncateText(text13, limit, fileName) {
|
|
27818
|
+
if (text13.length <= limit) return { text: text13, truncated: false };
|
|
27100
27819
|
let end = Math.max(0, limit);
|
|
27101
|
-
const code =
|
|
27820
|
+
const code = text13.charCodeAt(end - 1);
|
|
27102
27821
|
if (end > 0 && code >= 55296 && code <= 56319) end--;
|
|
27103
27822
|
return {
|
|
27104
|
-
text: `${
|
|
27823
|
+
text: `${text13.slice(0, end)}${truncationMarker2(end, text13.length, fileName)}`,
|
|
27105
27824
|
truncated: true
|
|
27106
27825
|
};
|
|
27107
27826
|
}
|
|
@@ -27265,13 +27984,13 @@ async function preprocessFiles(files, options = {}) {
|
|
|
27265
27984
|
Math.max(0, MAX_TOTAL_IMAGES - allImageUrls.length)
|
|
27266
27985
|
);
|
|
27267
27986
|
allImageUrls.push(...images.slice(0, keptImages));
|
|
27268
|
-
const
|
|
27269
|
-
const fitsWhole =
|
|
27270
|
-
const limit = fitsWhole ?
|
|
27987
|
+
const text13 = rewriteImageNote(result, file.name, keptImages);
|
|
27988
|
+
const fitsWhole = text13.length <= Math.min(maxExtractedCharsPerFile, remaining);
|
|
27989
|
+
const limit = fitsWhole ? text13.length : Math.min(
|
|
27271
27990
|
maxExtractedCharsPerFile,
|
|
27272
|
-
remaining - truncationMarker2(
|
|
27991
|
+
remaining - truncationMarker2(text13.length, text13.length, file.name).length
|
|
27273
27992
|
);
|
|
27274
|
-
const capped = truncateText(
|
|
27993
|
+
const capped = truncateText(text13, Math.max(0, limit), file.name);
|
|
27275
27994
|
const formattedContent = formatExtractedContent(file.name, capped.text, result.format);
|
|
27276
27995
|
totalChars += separatorLength + formattedContent.length;
|
|
27277
27996
|
extractedTexts.push(formattedContent);
|
|
@@ -27514,11 +28233,11 @@ function createGetAuthenticatedUserTool(getAccessToken, requestAccess) {
|
|
|
27514
28233
|
};
|
|
27515
28234
|
}
|
|
27516
28235
|
var MAX_RESPONSE_SIZE = 1e5;
|
|
27517
|
-
function truncate(
|
|
27518
|
-
if (
|
|
27519
|
-
return
|
|
28236
|
+
function truncate(text13, maxLen) {
|
|
28237
|
+
if (text13.length <= maxLen) return text13;
|
|
28238
|
+
return text13.slice(0, maxLen) + `
|
|
27520
28239
|
|
|
27521
|
-
... (truncated, ${
|
|
28240
|
+
... (truncated, ${text13.length - maxLen} characters omitted)`;
|
|
27522
28241
|
}
|
|
27523
28242
|
function createGitHubApiTool(getAccessToken, requestAccess) {
|
|
27524
28243
|
return {
|
|
@@ -27566,16 +28285,16 @@ IMPORTANT: For write operations (POST, PUT, PATCH, DELETE), always confirm with
|
|
|
27566
28285
|
method,
|
|
27567
28286
|
body: body ? JSON.stringify(body) : void 0
|
|
27568
28287
|
});
|
|
27569
|
-
const
|
|
28288
|
+
const text13 = await resp.text();
|
|
27570
28289
|
if (!resp.ok) {
|
|
27571
|
-
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(
|
|
28290
|
+
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(text13, 500)}`;
|
|
27572
28291
|
}
|
|
27573
28292
|
try {
|
|
27574
|
-
const data = JSON.parse(
|
|
28293
|
+
const data = JSON.parse(text13);
|
|
27575
28294
|
const json4 = JSON.stringify(data);
|
|
27576
28295
|
return truncate(json4, MAX_RESPONSE_SIZE);
|
|
27577
28296
|
} catch {
|
|
27578
|
-
return truncate(
|
|
28297
|
+
return truncate(text13, MAX_RESPONSE_SIZE);
|
|
27579
28298
|
}
|
|
27580
28299
|
} catch (err) {
|
|
27581
28300
|
if (err instanceof DOMException && err.name === "AbortError") {
|
|
@@ -28237,10 +28956,10 @@ function formatObjectAttr(obj) {
|
|
|
28237
28956
|
});
|
|
28238
28957
|
return `{ ${entries.join(", ")} }`;
|
|
28239
28958
|
}
|
|
28240
|
-
function isSafeJsxText(
|
|
28241
|
-
if (/[<>{}&]/.test(
|
|
28242
|
-
if (/\n/.test(
|
|
28243
|
-
if (/^\s|\s$/.test(
|
|
28959
|
+
function isSafeJsxText(text13) {
|
|
28960
|
+
if (/[<>{}&]/.test(text13)) return false;
|
|
28961
|
+
if (/\n/.test(text13)) return false;
|
|
28962
|
+
if (/^\s|\s$/.test(text13)) return false;
|
|
28244
28963
|
return true;
|
|
28245
28964
|
}
|
|
28246
28965
|
function getId(node) {
|
|
@@ -31820,9 +32539,9 @@ New lines of conversation:
|
|
|
31820
32539
|
{new_lines}
|
|
31821
32540
|
|
|
31822
32541
|
New summary:`;
|
|
31823
|
-
function estimateTokens(
|
|
31824
|
-
if (!
|
|
31825
|
-
return Math.ceil(
|
|
32542
|
+
function estimateTokens(text13) {
|
|
32543
|
+
if (!text13) return 0;
|
|
32544
|
+
return Math.ceil(text13.length / 4);
|
|
31826
32545
|
}
|
|
31827
32546
|
var PER_MESSAGE_OVERHEAD_TOKENS = 4;
|
|
31828
32547
|
var MAX_MESSAGES_PER_SUMMARIZATION = 20;
|
|
@@ -31882,14 +32601,14 @@ function splitMessagesAtThreshold(messages, tokenThreshold, minWindowMessages) {
|
|
|
31882
32601
|
}
|
|
31883
32602
|
async function redactSummaryPrompt(prompt, redactor, onPiiRedacted) {
|
|
31884
32603
|
if (!redactor) return prompt;
|
|
31885
|
-
const { text:
|
|
32604
|
+
const { text: text13, matches } = await redactor.redactTextAsync(prompt);
|
|
31886
32605
|
if (matches.length > 0 && onPiiRedacted) {
|
|
31887
32606
|
try {
|
|
31888
32607
|
onPiiRedacted(matches);
|
|
31889
32608
|
} catch {
|
|
31890
32609
|
}
|
|
31891
32610
|
}
|
|
31892
|
-
return
|
|
32611
|
+
return text13;
|
|
31893
32612
|
}
|
|
31894
32613
|
async function progressiveSummarize(options) {
|
|
31895
32614
|
const {
|
|
@@ -32202,14 +32921,14 @@ var MaskScopedEmbeddingCache = class extends Map {
|
|
|
32202
32921
|
this.inner = inner;
|
|
32203
32922
|
this.masked = masked;
|
|
32204
32923
|
}
|
|
32205
|
-
key(
|
|
32206
|
-
return `${this.masked ? "m" : "r"}:${
|
|
32924
|
+
key(text13) {
|
|
32925
|
+
return `${this.masked ? "m" : "r"}:${text13}`;
|
|
32207
32926
|
}
|
|
32208
|
-
get(
|
|
32209
|
-
return this.inner.get(this.key(
|
|
32927
|
+
get(text13) {
|
|
32928
|
+
return this.inner.get(this.key(text13));
|
|
32210
32929
|
}
|
|
32211
|
-
set(
|
|
32212
|
-
this.inner.set(this.key(
|
|
32930
|
+
set(text13, value) {
|
|
32931
|
+
this.inner.set(this.key(text13), value);
|
|
32213
32932
|
return this;
|
|
32214
32933
|
}
|
|
32215
32934
|
};
|
|
@@ -32864,11 +33583,11 @@ function useChatStorage(options) {
|
|
|
32864
33583
|
[piiRedaction, currentConversationId]
|
|
32865
33584
|
);
|
|
32866
33585
|
const maskForEmbedding = (0, import_react6.useCallback)(
|
|
32867
|
-
(
|
|
33586
|
+
(text13) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text13) : text13,
|
|
32868
33587
|
[resolvedPiiRedaction]
|
|
32869
33588
|
);
|
|
32870
33589
|
const maskEmbeddingInput = (0, import_react6.useMemo)(
|
|
32871
|
-
() => isPiiRedactor(resolvedPiiRedaction) ? (
|
|
33590
|
+
() => isPiiRedactor(resolvedPiiRedaction) ? (text13) => resolvedPiiRedaction.maskText(text13) : void 0,
|
|
32872
33591
|
[resolvedPiiRedaction]
|
|
32873
33592
|
);
|
|
32874
33593
|
const vaultEmbeddingOptions = (0, import_react6.useMemo)(
|
|
@@ -33599,7 +34318,7 @@ function useChatStorage(options) {
|
|
|
33599
34318
|
return {
|
|
33600
34319
|
callRedactor: redactor,
|
|
33601
34320
|
callPiiRedaction: forInnerSend,
|
|
33602
|
-
maskForCall: (
|
|
34321
|
+
maskForCall: (text13) => redactor ? redactor.maskText(text13) : text13
|
|
33603
34322
|
};
|
|
33604
34323
|
};
|
|
33605
34324
|
const resolveThoughtProcess = () => finalizeThoughtProcess(getThoughtProcess?.() || thoughtProcess);
|
|
@@ -35925,13 +36644,13 @@ function useOCR() {
|
|
|
35925
36644
|
const result = await import_tesseract.default.recognize(image, language);
|
|
35926
36645
|
pageTexts.push(result.data.text);
|
|
35927
36646
|
}
|
|
35928
|
-
const
|
|
35929
|
-
if (!
|
|
36647
|
+
const text13 = pageTexts.join("\n\n");
|
|
36648
|
+
if (!text13.trim()) {
|
|
35930
36649
|
getLogger().warn(`No text found in OCR source ${filename || "unknown"}`);
|
|
35931
36650
|
return null;
|
|
35932
36651
|
}
|
|
35933
36652
|
return `[Context from OCR attachment ${filename || "unknown"}]:
|
|
35934
|
-
${
|
|
36653
|
+
${text13}`;
|
|
35935
36654
|
} catch (err) {
|
|
35936
36655
|
getLogger().error(`Failed to process OCR for ${file.filename || "unknown"}:`, err);
|
|
35937
36656
|
return null;
|
|
@@ -35975,13 +36694,13 @@ function usePdf() {
|
|
|
35975
36694
|
const contexts = await Promise.all(
|
|
35976
36695
|
pdfFiles.map(async (file) => {
|
|
35977
36696
|
try {
|
|
35978
|
-
const
|
|
35979
|
-
if (!
|
|
36697
|
+
const text13 = await extractTextFromPdf(file.url);
|
|
36698
|
+
if (!text13.trim()) {
|
|
35980
36699
|
getLogger().warn(`No text found in PDF ${file.filename}`);
|
|
35981
36700
|
return null;
|
|
35982
36701
|
}
|
|
35983
36702
|
return `[Context from PDF attachment ${file.filename}]:
|
|
35984
|
-
${
|
|
36703
|
+
${text13}`;
|
|
35985
36704
|
} catch (err) {
|
|
35986
36705
|
getLogger().error(`Failed to process PDF ${file.filename}:`, err);
|
|
35987
36706
|
return null;
|
|
@@ -37507,14 +38226,14 @@ function useVoice(options) {
|
|
|
37507
38226
|
recognition.interimResults = false;
|
|
37508
38227
|
recognition.lang = options?.language ?? "";
|
|
37509
38228
|
recognition.onresult = (event) => {
|
|
37510
|
-
let
|
|
38229
|
+
let text13 = "";
|
|
37511
38230
|
for (let i = 0; i < event.results.length; i++) {
|
|
37512
38231
|
const result = event.results[i];
|
|
37513
38232
|
if (result && result.isFinal && result[0]) {
|
|
37514
|
-
|
|
38233
|
+
text13 += result[0].transcript + " ";
|
|
37515
38234
|
}
|
|
37516
38235
|
}
|
|
37517
|
-
nativeTextRef.current =
|
|
38236
|
+
nativeTextRef.current = text13.trim();
|
|
37518
38237
|
};
|
|
37519
38238
|
recognition.onerror = (event) => {
|
|
37520
38239
|
if (event.error !== "aborted" && event.error !== "no-speech") {
|
|
@@ -37819,6 +38538,7 @@ function useWalletBinding(options = {}) {
|
|
|
37819
38538
|
MEMORY_KINDS,
|
|
37820
38539
|
MEMORY_LEVELS,
|
|
37821
38540
|
MemoryEntityModel,
|
|
38541
|
+
MemoryKeyError,
|
|
37822
38542
|
MemoryLevelError,
|
|
37823
38543
|
NEVER_TTL_MS,
|
|
37824
38544
|
NODE_BUDGET,
|
|
@@ -37833,6 +38553,7 @@ function useWalletBinding(options = {}) {
|
|
|
37833
38553
|
RECALL_MAX_LIMIT,
|
|
37834
38554
|
RECALL_TOOL_NAME,
|
|
37835
38555
|
RemoteMemoryError,
|
|
38556
|
+
RemoteMemoryPartialCreateError,
|
|
37836
38557
|
RerankerUnavailableError,
|
|
37837
38558
|
SDK_SCHEMA_VERSION,
|
|
37838
38559
|
SERVER_TOOL_DEPENDENCY_SETS,
|
|
@@ -37926,6 +38647,7 @@ function useWalletBinding(options = {}) {
|
|
|
37926
38647
|
createRecallTool,
|
|
37927
38648
|
createRemoteMemoryPersistence,
|
|
37928
38649
|
createRemoteMemoryPipeline,
|
|
38650
|
+
createRemoteMemoryStore,
|
|
37929
38651
|
createSavedToolOp,
|
|
37930
38652
|
createServerToolsFilter,
|
|
37931
38653
|
createStockPricePreProcessor,
|
|
@@ -37957,6 +38679,7 @@ function useWalletBinding(options = {}) {
|
|
|
37957
38679
|
deleteVaultMemoryOp,
|
|
37958
38680
|
dequantizeEmbedding,
|
|
37959
38681
|
deriveKeyFromSignatureBytes,
|
|
38682
|
+
deriveMemoryKeyRing,
|
|
37960
38683
|
eagerEmbedContent,
|
|
37961
38684
|
embedAllMessages,
|
|
37962
38685
|
embedMessage,
|
|
@@ -37976,6 +38699,7 @@ function useWalletBinding(options = {}) {
|
|
|
37976
38699
|
extractFacts,
|
|
37977
38700
|
extractFileIds,
|
|
37978
38701
|
extractMCPImageUrls,
|
|
38702
|
+
extractReservationReceipts,
|
|
37979
38703
|
fileExists,
|
|
37980
38704
|
findById,
|
|
37981
38705
|
findMatchingTools,
|
|
@@ -38096,6 +38820,7 @@ function useWalletBinding(options = {}) {
|
|
|
38096
38820
|
linkMemoryEntitiesOp,
|
|
38097
38821
|
maskScopedEmbeddingCache,
|
|
38098
38822
|
mediaToStored,
|
|
38823
|
+
memoryCipher,
|
|
38099
38824
|
migrateCalendarToken,
|
|
38100
38825
|
migrateDisplayResult,
|
|
38101
38826
|
migrateDriveToken,
|
|
@@ -38117,6 +38842,7 @@ function useWalletBinding(options = {}) {
|
|
|
38117
38842
|
rankProfileCandidates,
|
|
38118
38843
|
readEncryptedFile,
|
|
38119
38844
|
recall,
|
|
38845
|
+
reencryptMemoryField,
|
|
38120
38846
|
reflect,
|
|
38121
38847
|
refreshCalendarToken,
|
|
38122
38848
|
refreshDriveToken,
|