@anuma/sdk 9.1.11 → 10.0.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 +572 -239
- package/dist/expo/index.d.mts +86 -1
- package/dist/expo/index.d.ts +86 -1
- package/dist/expo/index.mjs +598 -265
- package/dist/index.cjs +444 -111
- package/dist/index.d.mts +86 -1
- package/dist/index.d.ts +86 -1
- package/dist/index.mjs +444 -111
- package/dist/react/index.cjs +619 -286
- package/dist/react/index.d.mts +86 -1
- package/dist/react/index.d.ts +86 -1
- package/dist/react/index.mjs +645 -312
- package/package.json +1 -1
package/dist/react/index.cjs
CHANGED
|
@@ -382,15 +382,15 @@ var init_redactor = __esm({
|
|
|
382
382
|
* (sequential, per-pattern) and the async {@link collectRegexSpans} (span)
|
|
383
383
|
* paths so the detection rules live in exactly one place.
|
|
384
384
|
*/
|
|
385
|
-
findMatches(
|
|
385
|
+
findMatches(text15, pattern) {
|
|
386
386
|
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
387
387
|
const found = [];
|
|
388
388
|
let m;
|
|
389
|
-
while ((m = regex.exec(
|
|
389
|
+
while ((m = regex.exec(text15)) !== null) {
|
|
390
390
|
const value = m[0];
|
|
391
391
|
if (pattern.validate && !pattern.validate(value)) continue;
|
|
392
392
|
if (pattern.context) {
|
|
393
|
-
const before =
|
|
393
|
+
const before = text15.slice(Math.max(0, m.index - 40), m.index);
|
|
394
394
|
if (!pattern.context.test(before)) continue;
|
|
395
395
|
}
|
|
396
396
|
found.push({ match: value, index: m.index });
|
|
@@ -406,9 +406,9 @@ var init_redactor = __esm({
|
|
|
406
406
|
* earlier patterns, so an earlier (more specific) pattern claims a region
|
|
407
407
|
* before a later one can — placeholders are inert and match no pattern.
|
|
408
408
|
*/
|
|
409
|
-
scan(
|
|
409
|
+
scan(text15, makeReplacement) {
|
|
410
410
|
const matches = [];
|
|
411
|
-
let redacted =
|
|
411
|
+
let redacted = text15;
|
|
412
412
|
for (const pattern of this.patterns) {
|
|
413
413
|
const found = this.findMatches(redacted, pattern);
|
|
414
414
|
if (found.length === 0) continue;
|
|
@@ -429,8 +429,8 @@ var init_redactor = __esm({
|
|
|
429
429
|
* Scan and redact PII from a single text string, using numbered, reversible
|
|
430
430
|
* placeholders ([EMAIL_1], …) tracked on this instance.
|
|
431
431
|
*/
|
|
432
|
-
redactText(
|
|
433
|
-
return this.scan(
|
|
432
|
+
redactText(text15) {
|
|
433
|
+
return this.scan(text15, (category, value) => this.getPlaceholder(category, value));
|
|
434
434
|
}
|
|
435
435
|
/**
|
|
436
436
|
* Mask PII with unnumbered, NON-reversible tokens ([EMAIL], [SSN], …) without
|
|
@@ -439,15 +439,15 @@ var init_redactor = __esm({
|
|
|
439
439
|
* embeddings endpoint while staying deterministic, so the same content always
|
|
440
440
|
* masks identically and search stays consistent across conversations.
|
|
441
441
|
*/
|
|
442
|
-
maskText(
|
|
443
|
-
return this.scan(
|
|
442
|
+
maskText(text15) {
|
|
443
|
+
return this.scan(text15, (category) => `[${category}]`).text;
|
|
444
444
|
}
|
|
445
445
|
/** All regex matches as spans on the ORIGINAL text (priority 0). Uses the
|
|
446
446
|
* same {@link findMatches} guards as the sync scan. */
|
|
447
|
-
collectRegexSpans(
|
|
447
|
+
collectRegexSpans(text15) {
|
|
448
448
|
const spans = [];
|
|
449
449
|
this.patterns.forEach((pattern, patternIndex) => {
|
|
450
|
-
for (const { match, index } of this.findMatches(
|
|
450
|
+
for (const { match, index } of this.findMatches(text15, pattern)) {
|
|
451
451
|
spans.push({
|
|
452
452
|
start: index,
|
|
453
453
|
end: index + match.length,
|
|
@@ -466,16 +466,16 @@ var init_redactor = __esm({
|
|
|
466
466
|
* of "Stripe") from producing a corrupting partial placeholder like
|
|
467
467
|
* `[ORG_1]e`.
|
|
468
468
|
*/
|
|
469
|
-
normalizeNerSpans(
|
|
469
|
+
normalizeNerSpans(text15, raw) {
|
|
470
470
|
if (!Array.isArray(raw)) return [];
|
|
471
471
|
const out = [];
|
|
472
472
|
raw.forEach((s, i) => {
|
|
473
473
|
if (!Number.isFinite(s.start) || !Number.isFinite(s.end)) return;
|
|
474
|
-
let start = Math.max(0, Math.min(Math.trunc(s.start),
|
|
475
|
-
let end = Math.max(0, Math.min(Math.trunc(s.end),
|
|
474
|
+
let start = Math.max(0, Math.min(Math.trunc(s.start), text15.length));
|
|
475
|
+
let end = Math.max(0, Math.min(Math.trunc(s.end), text15.length));
|
|
476
476
|
if (end <= start) return;
|
|
477
|
-
while (start > 0 && isWordChar(
|
|
478
|
-
while (end <
|
|
477
|
+
while (start > 0 && isWordChar(text15[start - 1])) start--;
|
|
478
|
+
while (end < text15.length && isWordChar(text15[end])) end++;
|
|
479
479
|
const category = String(s.category ?? "").trim();
|
|
480
480
|
if (!category) return;
|
|
481
481
|
out.push({ start, end, category, priority: 1, order: i });
|
|
@@ -484,10 +484,10 @@ var init_redactor = __esm({
|
|
|
484
484
|
}
|
|
485
485
|
/** Run the configured detector defensively: failures degrade to regex-only
|
|
486
486
|
* (fail-open on detection, not on protection) with a one-time warning. */
|
|
487
|
-
async detectNerSpans(
|
|
487
|
+
async detectNerSpans(text15) {
|
|
488
488
|
if (!this.nerDetector) return [];
|
|
489
489
|
try {
|
|
490
|
-
return this.normalizeNerSpans(
|
|
490
|
+
return this.normalizeNerSpans(text15, await this.nerDetector.detect(text15));
|
|
491
491
|
} catch (err) {
|
|
492
492
|
this.warnNerFailure(err);
|
|
493
493
|
return [];
|
|
@@ -520,11 +520,11 @@ var init_redactor = __esm({
|
|
|
520
520
|
* in pattern then document order, matching the sync scan's numbering). The
|
|
521
521
|
* string is then EMITTED in document order.
|
|
522
522
|
*/
|
|
523
|
-
rebuildSpans(
|
|
523
|
+
rebuildSpans(text15, spans, makeReplacement) {
|
|
524
524
|
const placeholderByStart = /* @__PURE__ */ new Map();
|
|
525
525
|
const matches = [];
|
|
526
526
|
for (const s of spans) {
|
|
527
|
-
const value =
|
|
527
|
+
const value = text15.slice(s.start, s.end);
|
|
528
528
|
const placeholder = makeReplacement(s.category, value);
|
|
529
529
|
placeholderByStart.set(s.start, placeholder);
|
|
530
530
|
matches.push({ category: s.category, original: value, placeholder });
|
|
@@ -533,16 +533,16 @@ var init_redactor = __esm({
|
|
|
533
533
|
let result = "";
|
|
534
534
|
let cursor = 0;
|
|
535
535
|
for (const s of emitOrder) {
|
|
536
|
-
result +=
|
|
536
|
+
result += text15.slice(cursor, s.start) + (placeholderByStart.get(s.start) ?? "");
|
|
537
537
|
cursor = s.end;
|
|
538
538
|
}
|
|
539
|
-
result +=
|
|
539
|
+
result += text15.slice(cursor);
|
|
540
540
|
return { text: result, matches };
|
|
541
541
|
}
|
|
542
542
|
/** Merge regex + NER spans for `text` into a resolved, non-overlapping set. */
|
|
543
|
-
async detectAllSpans(
|
|
544
|
-
const nerPromise = this.detectNerSpans(
|
|
545
|
-
const regexSpans = this.collectRegexSpans(
|
|
543
|
+
async detectAllSpans(text15) {
|
|
544
|
+
const nerPromise = this.detectNerSpans(text15);
|
|
545
|
+
const regexSpans = this.collectRegexSpans(text15);
|
|
546
546
|
const ner = await nerPromise;
|
|
547
547
|
return this.resolveOverlaps([...regexSpans, ...ner]);
|
|
548
548
|
}
|
|
@@ -551,11 +551,11 @@ var init_redactor = __esm({
|
|
|
551
551
|
* unstructured PII (the configured {@link NerDetector}) with numbered,
|
|
552
552
|
* reversible placeholders. With no detector, identical to `redactText`.
|
|
553
553
|
*/
|
|
554
|
-
async redactTextAsync(
|
|
555
|
-
if (!this.nerDetector) return this.redactText(
|
|
556
|
-
const spans = await this.detectAllSpans(
|
|
554
|
+
async redactTextAsync(text15) {
|
|
555
|
+
if (!this.nerDetector) return this.redactText(text15);
|
|
556
|
+
const spans = await this.detectAllSpans(text15);
|
|
557
557
|
return this.rebuildSpans(
|
|
558
|
-
|
|
558
|
+
text15,
|
|
559
559
|
spans,
|
|
560
560
|
(category, value) => this.getPlaceholder(category, value)
|
|
561
561
|
);
|
|
@@ -564,10 +564,10 @@ var init_redactor = __esm({
|
|
|
564
564
|
* Async counterpart to {@link maskText}: stateless `[CATEGORY]` masking over
|
|
565
565
|
* regex + NER matches. With no detector, identical to `maskText`.
|
|
566
566
|
*/
|
|
567
|
-
async maskTextAsync(
|
|
568
|
-
if (!this.nerDetector) return this.maskText(
|
|
569
|
-
const spans = await this.detectAllSpans(
|
|
570
|
-
return this.rebuildSpans(
|
|
567
|
+
async maskTextAsync(text15) {
|
|
568
|
+
if (!this.nerDetector) return this.maskText(text15);
|
|
569
|
+
const spans = await this.detectAllSpans(text15);
|
|
570
|
+
return this.rebuildSpans(text15, spans, (category) => `[${category}]`).text;
|
|
571
571
|
}
|
|
572
572
|
/**
|
|
573
573
|
* Async counterpart to {@link redactMessages}. Text parts are redacted
|
|
@@ -653,9 +653,9 @@ var init_redactor = __esm({
|
|
|
653
653
|
* {@link restoreForStorage} instead, which tolerates the mangled echoes the
|
|
654
654
|
* extraction models produce.
|
|
655
655
|
*/
|
|
656
|
-
deAnonymize(
|
|
657
|
-
if (!
|
|
658
|
-
let restored =
|
|
656
|
+
deAnonymize(text15) {
|
|
657
|
+
if (!text15.includes("[")) return text15;
|
|
658
|
+
let restored = text15;
|
|
659
659
|
for (const [placeholder, original] of this.placeholderToValue) {
|
|
660
660
|
if (restored.includes(placeholder)) {
|
|
661
661
|
restored = restored.split(placeholder).join(original);
|
|
@@ -680,15 +680,15 @@ var init_redactor = __esm({
|
|
|
680
680
|
* - `unresolved` is derived from the lookup miss during this pass, not from a
|
|
681
681
|
* regex re-scan of the output — so it can't trip over a restored value.
|
|
682
682
|
*/
|
|
683
|
-
restoreForStorage(
|
|
683
|
+
restoreForStorage(text15) {
|
|
684
684
|
if (this.storagePattern === void 0) this.storagePattern = this.buildStoragePattern();
|
|
685
685
|
if (!this.storagePattern || this.placeholderToValue.size === 0) {
|
|
686
|
-
return { text:
|
|
686
|
+
return { text: text15, unresolved: false };
|
|
687
687
|
}
|
|
688
688
|
this.storageLookup ?? (this.storageLookup = this.buildStorageLookup());
|
|
689
689
|
const { exact, ci, ciCollisions } = this.storageLookup;
|
|
690
690
|
let unresolved = false;
|
|
691
|
-
const restored =
|
|
691
|
+
const restored = text15.replace(
|
|
692
692
|
this.storagePattern,
|
|
693
693
|
(match, bracketed, bare) => {
|
|
694
694
|
const body = bracketed ?? bare ?? "";
|
|
@@ -1155,8 +1155,8 @@ function extractResponsesContent(body) {
|
|
|
1155
1155
|
if (!root) return null;
|
|
1156
1156
|
if (typeof root.output_text === "string" && root.output_text !== "") return root.output_text;
|
|
1157
1157
|
if (!Array.isArray(root.output)) return null;
|
|
1158
|
-
const
|
|
1159
|
-
return
|
|
1158
|
+
const text15 = 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("");
|
|
1159
|
+
return text15;
|
|
1160
1160
|
}
|
|
1161
1161
|
var RESPONSE_FORMAT_OK, RESPONSE_SCHEMA_OK, JSON_CONTRACT_REMINDER, RESPONSES_ONLY_MODEL_PREFIXES, CHAT_TO_RESPONSES_FIELDS, FOREIGN_ENDPOINT_SUFFIX, TIME_BUDGET_EXHAUSTED, MAX_TIMER_DELAY_MS, RETRYABLE_HTTP;
|
|
1162
1162
|
var init_portalLlm = __esm({
|
|
@@ -3631,19 +3631,19 @@ function base64ToUint8Array(base64) {
|
|
|
3631
3631
|
// src/lib/memoryEngine/vectorEncoding.ts
|
|
3632
3632
|
var BYTES_PER_FLOAT32 = 4;
|
|
3633
3633
|
var CANONICAL_BASE64 = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
3634
|
-
function encodeChunkVector(
|
|
3635
|
-
const f32 =
|
|
3634
|
+
function encodeChunkVector(vector2) {
|
|
3635
|
+
const f32 = vector2 instanceof Float32Array ? vector2 : Float32Array.from(vector2);
|
|
3636
3636
|
return uint8ArrayToBase64(new Uint8Array(f32.buffer, f32.byteOffset, f32.byteLength));
|
|
3637
3637
|
}
|
|
3638
|
-
function decodeChunkVector(
|
|
3639
|
-
if (!
|
|
3640
|
-
if (typeof
|
|
3641
|
-
if (
|
|
3638
|
+
function decodeChunkVector(vector2, onMalformed) {
|
|
3639
|
+
if (!vector2 || vector2.length === 0) return new Float32Array(0);
|
|
3640
|
+
if (typeof vector2 !== "string") return Float32Array.from(vector2);
|
|
3641
|
+
if (vector2.length % 4 !== 0 || !CANONICAL_BASE64.test(vector2)) {
|
|
3642
3642
|
onMalformed?.();
|
|
3643
3643
|
return new Float32Array(0);
|
|
3644
3644
|
}
|
|
3645
3645
|
try {
|
|
3646
|
-
const bytes2 = base64ToUint8Array(
|
|
3646
|
+
const bytes2 = base64ToUint8Array(vector2);
|
|
3647
3647
|
if (bytes2.byteLength === 0 || bytes2.byteLength % BYTES_PER_FLOAT32 !== 0) {
|
|
3648
3648
|
onMalformed?.();
|
|
3649
3649
|
return new Float32Array(0);
|
|
@@ -4130,8 +4130,8 @@ var ATTACHED_FILES_OPEN_TAG = "<attached_files>";
|
|
|
4130
4130
|
var ATTACHED_FILES_CLOSE_TAG = "</attached_files>";
|
|
4131
4131
|
var ATTACHED_FILES_PREFIX = `${ATTACHED_FILES_OPEN_TAG}
|
|
4132
4132
|
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.`;
|
|
4133
|
-
function isAttachedFilesText(
|
|
4134
|
-
return typeof
|
|
4133
|
+
function isAttachedFilesText(text15) {
|
|
4134
|
+
return typeof text15 === "string" && text15.startsWith(ATTACHED_FILES_PREFIX) && text15.endsWith(ATTACHED_FILES_CLOSE_TAG);
|
|
4135
4135
|
}
|
|
4136
4136
|
function buildAttachedFilesText(fileContext) {
|
|
4137
4137
|
return `${ATTACHED_FILES_PREFIX}
|
|
@@ -4847,7 +4847,7 @@ async function getMessageOp(ctx, uniqueId) {
|
|
|
4847
4847
|
}
|
|
4848
4848
|
return messageToStored(message, ctx.walletAddress, ctx.signMessage, ctx.embeddedWalletSigner);
|
|
4849
4849
|
}
|
|
4850
|
-
async function updateMessageEmbeddingOp(ctx, uniqueId,
|
|
4850
|
+
async function updateMessageEmbeddingOp(ctx, uniqueId, vector2, embeddingModel) {
|
|
4851
4851
|
let message;
|
|
4852
4852
|
try {
|
|
4853
4853
|
message = await ctx.messagesCollection.find(uniqueId);
|
|
@@ -4857,10 +4857,10 @@ async function updateMessageEmbeddingOp(ctx, uniqueId, vector, embeddingModel) {
|
|
|
4857
4857
|
const address = ctx.walletAddress;
|
|
4858
4858
|
await ctx.database.write(async () => {
|
|
4859
4859
|
const key = await resolveMessageEmbeddingKey(address, message.content);
|
|
4860
|
-
const storedVector2 = await serializeMessageEmbedding(key,
|
|
4860
|
+
const storedVector2 = await serializeMessageEmbedding(key, vector2);
|
|
4861
4861
|
await message.update((msg) => {
|
|
4862
4862
|
msg._setRaw("vector", storedVector2);
|
|
4863
|
-
if (msg.origin === "chunks_discarded" &&
|
|
4863
|
+
if (msg.origin === "chunks_discarded" && vector2.length > 0) {
|
|
4864
4864
|
msg._setRaw("origin", "message");
|
|
4865
4865
|
}
|
|
4866
4866
|
msg._setRaw("embedding_model", embeddingModel);
|
|
@@ -5605,49 +5605,49 @@ init_logger();
|
|
|
5605
5605
|
var DEFAULT_CHUNK_SIZE = 400;
|
|
5606
5606
|
var DEFAULT_CHUNK_OVERLAP = 50;
|
|
5607
5607
|
var DEFAULT_MIN_CHUNK_SIZE = 50;
|
|
5608
|
-
function splitIntoSentences(
|
|
5608
|
+
function splitIntoSentences(text15) {
|
|
5609
5609
|
const sentenceRegex = /[.!?]+[\s"')}\]]*(?=\s|$)/g;
|
|
5610
5610
|
const sentences = [];
|
|
5611
5611
|
let lastIndex = 0;
|
|
5612
5612
|
let match;
|
|
5613
|
-
while ((match = sentenceRegex.exec(
|
|
5613
|
+
while ((match = sentenceRegex.exec(text15)) !== null) {
|
|
5614
5614
|
const endIndex = match.index + match[0].length;
|
|
5615
|
-
const sentence =
|
|
5615
|
+
const sentence = text15.slice(lastIndex, endIndex).trim();
|
|
5616
5616
|
if (sentence) {
|
|
5617
5617
|
sentences.push(sentence);
|
|
5618
5618
|
}
|
|
5619
5619
|
lastIndex = endIndex;
|
|
5620
5620
|
}
|
|
5621
|
-
const remaining =
|
|
5621
|
+
const remaining = text15.slice(lastIndex).trim();
|
|
5622
5622
|
if (remaining) {
|
|
5623
5623
|
sentences.push(remaining);
|
|
5624
5624
|
}
|
|
5625
5625
|
return sentences;
|
|
5626
5626
|
}
|
|
5627
|
-
function chunkText(
|
|
5627
|
+
function chunkText(text15, options) {
|
|
5628
5628
|
const {
|
|
5629
5629
|
chunkSize = DEFAULT_CHUNK_SIZE,
|
|
5630
5630
|
chunkOverlap: requestedOverlap = DEFAULT_CHUNK_OVERLAP,
|
|
5631
5631
|
minChunkSize = DEFAULT_MIN_CHUNK_SIZE
|
|
5632
5632
|
} = options ?? {};
|
|
5633
5633
|
const chunkOverlap = Math.min(requestedOverlap, chunkSize - 1);
|
|
5634
|
-
if (
|
|
5634
|
+
if (text15.length <= chunkSize) {
|
|
5635
5635
|
return [
|
|
5636
5636
|
{
|
|
5637
|
-
text:
|
|
5637
|
+
text: text15.trim(),
|
|
5638
5638
|
startOffset: 0,
|
|
5639
|
-
endOffset:
|
|
5639
|
+
endOffset: text15.length
|
|
5640
5640
|
}
|
|
5641
5641
|
];
|
|
5642
5642
|
}
|
|
5643
|
-
const sentences = splitIntoSentences(
|
|
5643
|
+
const sentences = splitIntoSentences(text15);
|
|
5644
5644
|
const chunks3 = [];
|
|
5645
5645
|
let currentChunkSentences = [];
|
|
5646
5646
|
let currentChunkStart = 0;
|
|
5647
5647
|
let currentOffset = 0;
|
|
5648
5648
|
for (let i = 0; i < sentences.length; i++) {
|
|
5649
5649
|
const sentence = sentences[i];
|
|
5650
|
-
let sentenceStart =
|
|
5650
|
+
let sentenceStart = text15.indexOf(sentence, currentOffset);
|
|
5651
5651
|
if (sentenceStart === -1) {
|
|
5652
5652
|
sentenceStart = currentOffset;
|
|
5653
5653
|
}
|
|
@@ -5694,7 +5694,7 @@ function chunkText(text14, options) {
|
|
|
5694
5694
|
if (overlapSentences.length > 0) {
|
|
5695
5695
|
currentChunkSentences = [...overlapSentences, sentence];
|
|
5696
5696
|
const overlapText = overlapSentences[0];
|
|
5697
|
-
const overlapStart =
|
|
5697
|
+
const overlapStart = text15.lastIndexOf(overlapText, currentOffset);
|
|
5698
5698
|
currentChunkStart = overlapStart === -1 ? sentenceStart : overlapStart;
|
|
5699
5699
|
} else {
|
|
5700
5700
|
currentChunkSentences = [sentence];
|
|
@@ -5714,18 +5714,18 @@ function chunkText(text14, options) {
|
|
|
5714
5714
|
chunks3.push({
|
|
5715
5715
|
text: chunkText2,
|
|
5716
5716
|
startOffset: currentChunkStart,
|
|
5717
|
-
endOffset:
|
|
5717
|
+
endOffset: text15.length
|
|
5718
5718
|
});
|
|
5719
5719
|
}
|
|
5720
5720
|
}
|
|
5721
5721
|
if (chunks3.length === 0) {
|
|
5722
|
-
const trimmedText =
|
|
5722
|
+
const trimmedText = text15.trim();
|
|
5723
5723
|
if (trimmedText.length > 0) {
|
|
5724
5724
|
return [
|
|
5725
5725
|
{
|
|
5726
5726
|
text: trimmedText,
|
|
5727
5727
|
startOffset: 0,
|
|
5728
|
-
endOffset:
|
|
5728
|
+
endOffset: text15.length
|
|
5729
5729
|
}
|
|
5730
5730
|
];
|
|
5731
5731
|
}
|
|
@@ -6417,8 +6417,8 @@ var createClient = (config = {}) => {
|
|
|
6417
6417
|
data = await response[parseAs]();
|
|
6418
6418
|
break;
|
|
6419
6419
|
case "json": {
|
|
6420
|
-
const
|
|
6421
|
-
data =
|
|
6420
|
+
const text15 = await response.text();
|
|
6421
|
+
data = text15 ? JSON.parse(text15) : {};
|
|
6422
6422
|
break;
|
|
6423
6423
|
}
|
|
6424
6424
|
case "stream":
|
|
@@ -6706,22 +6706,22 @@ function embeddingErrorFrom(response) {
|
|
|
6706
6706
|
const message = typeof response.error === "object" && response.error && "error" in response.error ? response.error.error : "API embedding failed";
|
|
6707
6707
|
return new EmbeddingHttpError(message, response.response?.status);
|
|
6708
6708
|
}
|
|
6709
|
-
async function generateEmbedding(
|
|
6709
|
+
async function generateEmbedding(text15, options) {
|
|
6710
6710
|
const total = options.totalTimeoutMs;
|
|
6711
|
-
if (total === void 0) return embedOne(
|
|
6712
|
-
return withDeadline((signal) => embedOne(
|
|
6711
|
+
if (total === void 0) return embedOne(text15, options, void 0);
|
|
6712
|
+
return withDeadline((signal) => embedOne(text15, options, signal), total, "embedding");
|
|
6713
6713
|
}
|
|
6714
6714
|
var { inFlightByCache, cachedEmbeddingModels } = getEmbeddingCacheState();
|
|
6715
|
-
async function embedOne(
|
|
6715
|
+
async function embedOne(text15, options, outer) {
|
|
6716
6716
|
const { cache } = options;
|
|
6717
|
-
if (!cache) return Array.from(await requestEmbedding(
|
|
6717
|
+
if (!cache) return Array.from(await requestEmbedding(text15, options, outer));
|
|
6718
6718
|
const model = options.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
6719
|
-
const cached = cache.get(
|
|
6719
|
+
const cached = cache.get(text15);
|
|
6720
6720
|
const cachedModel = cached && cachedEmbeddingModels.get(cached);
|
|
6721
6721
|
if (cached && (cachedModel === void 0 || cachedModel === model)) return Array.from(cached);
|
|
6722
6722
|
const inFlight = inFlightByCache.get(cache) ?? /* @__PURE__ */ new Map();
|
|
6723
6723
|
inFlightByCache.set(cache, inFlight);
|
|
6724
|
-
const requestKey = JSON.stringify([model,
|
|
6724
|
+
const requestKey = JSON.stringify([model, text15]);
|
|
6725
6725
|
const pending = inFlight.get(requestKey);
|
|
6726
6726
|
if (pending) {
|
|
6727
6727
|
try {
|
|
@@ -6730,18 +6730,18 @@ async function embedOne(text14, options, outer) {
|
|
|
6730
6730
|
if (outer?.aborted) throw err;
|
|
6731
6731
|
}
|
|
6732
6732
|
}
|
|
6733
|
-
const request = requestEmbedding(
|
|
6733
|
+
const request = requestEmbedding(text15, options, outer);
|
|
6734
6734
|
inFlight.set(requestKey, request);
|
|
6735
6735
|
try {
|
|
6736
6736
|
const embedding2 = await request;
|
|
6737
6737
|
cachedEmbeddingModels.set(embedding2, model);
|
|
6738
|
-
cache.set(
|
|
6738
|
+
cache.set(text15, embedding2);
|
|
6739
6739
|
return Array.from(embedding2);
|
|
6740
6740
|
} finally {
|
|
6741
6741
|
if (inFlight.get(requestKey) === request) inFlight.delete(requestKey);
|
|
6742
6742
|
}
|
|
6743
6743
|
}
|
|
6744
|
-
async function requestEmbedding(
|
|
6744
|
+
async function requestEmbedding(text15, options, outer) {
|
|
6745
6745
|
const { baseUrl = BASE_URL, model } = options;
|
|
6746
6746
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
6747
6747
|
const headers = {
|
|
@@ -6753,7 +6753,7 @@ async function requestEmbedding(text14, options, outer) {
|
|
|
6753
6753
|
(signal) => postApiV1Embeddings({
|
|
6754
6754
|
baseUrl,
|
|
6755
6755
|
body: {
|
|
6756
|
-
input: options.maskInput ? options.maskInput(
|
|
6756
|
+
input: options.maskInput ? options.maskInput(text15) : text15,
|
|
6757
6757
|
model: model ?? DEFAULT_API_EMBEDDING_MODEL
|
|
6758
6758
|
},
|
|
6759
6759
|
headers,
|
|
@@ -7014,10 +7014,10 @@ async function chunkAndEmbedMessage(ctx, messageId, options) {
|
|
|
7014
7014
|
}
|
|
7015
7015
|
const textChunks = chunkText(message.content, options);
|
|
7016
7016
|
const chunkTexts = textChunks.map((c) => c.text);
|
|
7017
|
-
const
|
|
7017
|
+
const embeddings2 = await generateEmbeddings(chunkTexts, options);
|
|
7018
7018
|
const messageChunks = textChunks.map((chunk, i) => ({
|
|
7019
7019
|
text: chunk.text,
|
|
7020
|
-
vector:
|
|
7020
|
+
vector: embeddings2[i],
|
|
7021
7021
|
startOffset: chunk.startOffset,
|
|
7022
7022
|
endOffset: chunk.endOffset
|
|
7023
7023
|
}));
|
|
@@ -7132,13 +7132,13 @@ async function chunkAndEmbedAllMessages(ctx, options, filter) {
|
|
|
7132
7132
|
if (shortMessages.length > 0) {
|
|
7133
7133
|
try {
|
|
7134
7134
|
const texts = shortMessages.map((m) => m.content);
|
|
7135
|
-
const
|
|
7135
|
+
const embeddings2 = await generateEmbeddings(texts, options);
|
|
7136
7136
|
for (let i = 0; i < shortMessages.length; i++) {
|
|
7137
7137
|
try {
|
|
7138
7138
|
await updateMessageEmbeddingOp(
|
|
7139
7139
|
ctx,
|
|
7140
7140
|
shortMessages[i].uniqueId,
|
|
7141
|
-
|
|
7141
|
+
embeddings2[i],
|
|
7142
7142
|
embeddingModel
|
|
7143
7143
|
);
|
|
7144
7144
|
embeddedCount++;
|
|
@@ -7157,10 +7157,10 @@ async function chunkAndEmbedAllMessages(ctx, options, filter) {
|
|
|
7157
7157
|
for (const msg of longMessages) {
|
|
7158
7158
|
try {
|
|
7159
7159
|
const chunkTexts = msg.textChunks.map((c) => c.text);
|
|
7160
|
-
const
|
|
7160
|
+
const embeddings2 = await generateEmbeddings(chunkTexts, options);
|
|
7161
7161
|
const messageChunks = msg.textChunks.map((chunk, i) => ({
|
|
7162
7162
|
text: chunk.text,
|
|
7163
|
-
vector:
|
|
7163
|
+
vector: embeddings2[i],
|
|
7164
7164
|
startOffset: chunk.startOffset,
|
|
7165
7165
|
endOffset: chunk.endOffset
|
|
7166
7166
|
}));
|
|
@@ -7179,10 +7179,10 @@ var cryptoPriceCentroid = [0.025576787463333337, 0.0017598020599999997, -0.01339
|
|
|
7179
7179
|
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];
|
|
7180
7180
|
|
|
7181
7181
|
// src/lib/chat/preProcessor.ts
|
|
7182
|
-
function wrapAsUserText(prefix,
|
|
7183
|
-
if (!
|
|
7182
|
+
function wrapAsUserText(prefix, text15) {
|
|
7183
|
+
if (!text15 || !text15.trim()) return [];
|
|
7184
7184
|
return [{ role: "user", content: [{ type: "text", text: `${prefix}
|
|
7185
|
-
${
|
|
7185
|
+
${text15}` }] }];
|
|
7186
7186
|
}
|
|
7187
7187
|
|
|
7188
7188
|
// src/lib/chat/cryptoPriceClassifier.ts
|
|
@@ -7202,8 +7202,8 @@ async function classifyCryptoPrice(prompt, options) {
|
|
|
7202
7202
|
}
|
|
7203
7203
|
async function classifyCryptoPriceBatch(prompts, options) {
|
|
7204
7204
|
const { margin = 0.02, ...embeddingOptions } = options;
|
|
7205
|
-
const
|
|
7206
|
-
return
|
|
7205
|
+
const embeddings2 = await generateEmbeddings(prompts, embeddingOptions);
|
|
7206
|
+
return embeddings2.map((emb) => classify(emb, margin));
|
|
7207
7207
|
}
|
|
7208
7208
|
function createCryptoPricePreProcessor(options = {}) {
|
|
7209
7209
|
const margin = options.margin ?? 0.02;
|
|
@@ -7948,7 +7948,7 @@ function findMatchingTools(promptEmbeddings, tools, options) {
|
|
|
7948
7948
|
if (!tools || tools.length === 0) {
|
|
7949
7949
|
return [];
|
|
7950
7950
|
}
|
|
7951
|
-
const
|
|
7951
|
+
const embeddings2 = Array.isArray(promptEmbeddings[0]) ? promptEmbeddings : [promptEmbeddings];
|
|
7952
7952
|
const results = [];
|
|
7953
7953
|
for (const tool of tools) {
|
|
7954
7954
|
if (!tool.embedding || tool.embedding.length === 0) {
|
|
@@ -7956,7 +7956,7 @@ function findMatchingTools(promptEmbeddings, tools, options) {
|
|
|
7956
7956
|
}
|
|
7957
7957
|
try {
|
|
7958
7958
|
let maxSimilarity = -Infinity;
|
|
7959
|
-
for (const embedding2 of
|
|
7959
|
+
for (const embedding2 of embeddings2) {
|
|
7960
7960
|
const similarity = cosineSimilarity(embedding2, tool.embedding);
|
|
7961
7961
|
if (similarity > maxSimilarity) {
|
|
7962
7962
|
maxSimilarity = similarity;
|
|
@@ -7987,12 +7987,12 @@ function scoreTools(promptEmbeddings, tools) {
|
|
|
7987
7987
|
const scores = /* @__PURE__ */ new Map();
|
|
7988
7988
|
if (!promptEmbeddings || promptEmbeddings.length === 0) return scores;
|
|
7989
7989
|
if (!tools || tools.length === 0) return scores;
|
|
7990
|
-
const
|
|
7990
|
+
const embeddings2 = Array.isArray(promptEmbeddings[0]) ? promptEmbeddings : [promptEmbeddings];
|
|
7991
7991
|
for (const tool of tools) {
|
|
7992
7992
|
if (!tool.embedding || tool.embedding.length === 0) continue;
|
|
7993
7993
|
let maxSimilarity = -Infinity;
|
|
7994
7994
|
try {
|
|
7995
|
-
for (const embedding2 of
|
|
7995
|
+
for (const embedding2 of embeddings2) {
|
|
7996
7996
|
const similarity = cosineSimilarity(embedding2, tool.embedding);
|
|
7997
7997
|
if (similarity > maxSimilarity) maxSimilarity = similarity;
|
|
7998
7998
|
}
|
|
@@ -8203,13 +8203,13 @@ function createServerToolsFilter(options = {}) {
|
|
|
8203
8203
|
const exclude = new Set(options.excludeTools ?? []);
|
|
8204
8204
|
const sets = options.toolSets ?? [];
|
|
8205
8205
|
const matchOpts = options.matchOptions;
|
|
8206
|
-
const filter = (
|
|
8207
|
-
const matches = findMatchingTools(
|
|
8206
|
+
const filter = (embeddings2, tools) => {
|
|
8207
|
+
const matches = findMatchingTools(embeddings2, tools, matchOpts);
|
|
8208
8208
|
if (matches.length === 0) return [];
|
|
8209
8209
|
const matchedNames = new Set(matches.map((m) => m.tool.name));
|
|
8210
8210
|
let finalNames;
|
|
8211
8211
|
if (sets.length > 0) {
|
|
8212
|
-
const scores = scoreTools(
|
|
8212
|
+
const scores = scoreTools(embeddings2, tools);
|
|
8213
8213
|
const selectedScores = new Map(
|
|
8214
8214
|
[...scores].filter(([name]) => matchedNames.has(name) && !exclude.has(name))
|
|
8215
8215
|
);
|
|
@@ -10295,13 +10295,13 @@ var StreamSmoother = class {
|
|
|
10295
10295
|
/**
|
|
10296
10296
|
* Add text to the buffer. If smoothing is disabled, passes through immediately.
|
|
10297
10297
|
*/
|
|
10298
|
-
push(
|
|
10299
|
-
if (this.destroyed || !
|
|
10298
|
+
push(text15) {
|
|
10299
|
+
if (this.destroyed || !text15) return;
|
|
10300
10300
|
if (!this.enabled) {
|
|
10301
|
-
this.callback(
|
|
10301
|
+
this.callback(text15);
|
|
10302
10302
|
return;
|
|
10303
10303
|
}
|
|
10304
|
-
this.buffer +=
|
|
10304
|
+
this.buffer += text15;
|
|
10305
10305
|
this.ensureTimer();
|
|
10306
10306
|
}
|
|
10307
10307
|
/**
|
|
@@ -10312,9 +10312,9 @@ var StreamSmoother = class {
|
|
|
10312
10312
|
if (this.destroyed) return;
|
|
10313
10313
|
this.stopTimer();
|
|
10314
10314
|
if (this.buffer.length > 0) {
|
|
10315
|
-
const
|
|
10315
|
+
const text15 = this.buffer;
|
|
10316
10316
|
this.buffer = "";
|
|
10317
|
-
this.callback(
|
|
10317
|
+
this.callback(text15);
|
|
10318
10318
|
}
|
|
10319
10319
|
this.resolveDrain();
|
|
10320
10320
|
}
|
|
@@ -10381,9 +10381,9 @@ var StreamSmoother = class {
|
|
|
10381
10381
|
const currentSpeed = this.getCurrentSpeed(elapsed);
|
|
10382
10382
|
const charsThisTick = Math.max(1, Math.round(currentSpeed * (TICK_INTERVAL / 1e3)));
|
|
10383
10383
|
const toRelease = Math.min(charsThisTick, this.buffer.length);
|
|
10384
|
-
const
|
|
10384
|
+
const text15 = this.buffer.slice(0, toRelease);
|
|
10385
10385
|
this.buffer = this.buffer.slice(toRelease);
|
|
10386
|
-
this.callback(
|
|
10386
|
+
this.callback(text15);
|
|
10387
10387
|
if (this.buffer.length === 0) {
|
|
10388
10388
|
this.stopTimer();
|
|
10389
10389
|
this.resolveDrain();
|
|
@@ -10828,9 +10828,9 @@ async function runToolLoop(options) {
|
|
|
10828
10828
|
messages = await redactBatch(messages);
|
|
10829
10829
|
if (preProcessors?.length) {
|
|
10830
10830
|
try {
|
|
10831
|
-
const
|
|
10832
|
-
if (
|
|
10833
|
-
const embedding2 = await generateEmbedding(
|
|
10831
|
+
const text15 = extractLastUserText(messages);
|
|
10832
|
+
if (text15.length > 0) {
|
|
10833
|
+
const embedding2 = await generateEmbedding(text15, {
|
|
10834
10834
|
apiKey: headers?.["X-API-Key"],
|
|
10835
10835
|
getToken: token ? () => Promise.resolve(token) : void 0,
|
|
10836
10836
|
baseUrl
|
|
@@ -10838,7 +10838,7 @@ async function runToolLoop(options) {
|
|
|
10838
10838
|
const results = await Promise.all(
|
|
10839
10839
|
preProcessors.map(async (p) => {
|
|
10840
10840
|
try {
|
|
10841
|
-
return await p({ prompt:
|
|
10841
|
+
return await p({ prompt: text15, embedding: embedding2, signal: combinedSignal });
|
|
10842
10842
|
} catch (err) {
|
|
10843
10843
|
console.warn("[runToolLoop] pre-processor failed:", err);
|
|
10844
10844
|
return void 0;
|
|
@@ -10997,11 +10997,11 @@ async function runToolLoop(options) {
|
|
|
10997
10997
|
}
|
|
10998
10998
|
});
|
|
10999
10999
|
accumulator = createStreamAccumulator(model || void 0);
|
|
11000
|
-
contentSmoother = new StreamSmoother((
|
|
11001
|
-
if (emitData) emitData(
|
|
11000
|
+
contentSmoother = new StreamSmoother((text15) => {
|
|
11001
|
+
if (emitData) emitData(text15);
|
|
11002
11002
|
}, smoothing);
|
|
11003
|
-
thinkingSmoother = new StreamSmoother((
|
|
11004
|
-
if (emitThinking) emitThinking(
|
|
11003
|
+
thinkingSmoother = new StreamSmoother((text15) => {
|
|
11004
|
+
if (emitThinking) emitThinking(text15);
|
|
11005
11005
|
}, smoothing);
|
|
11006
11006
|
let chunksEmittedDownstream = false;
|
|
11007
11007
|
try {
|
|
@@ -11506,11 +11506,11 @@ Executing tool: ${toolInfo}
|
|
|
11506
11506
|
}
|
|
11507
11507
|
});
|
|
11508
11508
|
currentAccumulator = createStreamAccumulator(model || void 0);
|
|
11509
|
-
contContentSmoother = new StreamSmoother((
|
|
11510
|
-
if (emitData) emitData(
|
|
11509
|
+
contContentSmoother = new StreamSmoother((text15) => {
|
|
11510
|
+
if (emitData) emitData(text15);
|
|
11511
11511
|
}, smoothing);
|
|
11512
|
-
contThinkingSmoother = new StreamSmoother((
|
|
11513
|
-
if (emitThinking) emitThinking(
|
|
11512
|
+
contThinkingSmoother = new StreamSmoother((text15) => {
|
|
11513
|
+
if (emitThinking) emitThinking(text15);
|
|
11514
11514
|
}, smoothing);
|
|
11515
11515
|
let chunksEmittedDownstream = false;
|
|
11516
11516
|
try {
|
|
@@ -11737,11 +11737,11 @@ async function resumeStream(options) {
|
|
|
11737
11737
|
} = options;
|
|
11738
11738
|
const strategy = getStrategy(handle.apiType);
|
|
11739
11739
|
const accumulator = createStreamAccumulator(handle.model || void 0);
|
|
11740
|
-
const contentSmoother = new StreamSmoother((
|
|
11741
|
-
if (onData) onData(
|
|
11740
|
+
const contentSmoother = new StreamSmoother((text15) => {
|
|
11741
|
+
if (onData) onData(text15);
|
|
11742
11742
|
}, smoothing);
|
|
11743
|
-
const thinkingSmoother = new StreamSmoother((
|
|
11744
|
-
if (onThinking) onThinking(
|
|
11743
|
+
const thinkingSmoother = new StreamSmoother((text15) => {
|
|
11744
|
+
if (onThinking) onThinking(text15);
|
|
11745
11745
|
}, smoothing);
|
|
11746
11746
|
const idleController = new AbortController();
|
|
11747
11747
|
let watchdog;
|
|
@@ -11881,8 +11881,8 @@ async function classifyStockPrice(prompt, options) {
|
|
|
11881
11881
|
}
|
|
11882
11882
|
async function classifyStockPriceBatch(prompts, options) {
|
|
11883
11883
|
const { margin = 0.02, ...embeddingOptions } = options;
|
|
11884
|
-
const
|
|
11885
|
-
return
|
|
11884
|
+
const embeddings2 = await generateEmbeddings(prompts, embeddingOptions);
|
|
11885
|
+
return embeddings2.map((emb) => classify2(emb, margin));
|
|
11886
11886
|
}
|
|
11887
11887
|
function createStockPricePreProcessor(options = {}) {
|
|
11888
11888
|
const margin = options.margin ?? 0.02;
|
|
@@ -11921,8 +11921,8 @@ async function classifyWeather(prompt, options) {
|
|
|
11921
11921
|
}
|
|
11922
11922
|
async function classifyWeatherBatch(prompts, options) {
|
|
11923
11923
|
const { margin = 0.02, ...embeddingOptions } = options;
|
|
11924
|
-
const
|
|
11925
|
-
return
|
|
11924
|
+
const embeddings2 = await generateEmbeddings(prompts, embeddingOptions);
|
|
11925
|
+
return embeddings2.map((emb) => classify3(emb, margin));
|
|
11926
11926
|
}
|
|
11927
11927
|
function createWeatherPreProcessor(options = {}) {
|
|
11928
11928
|
const margin = options.margin ?? 0.02;
|
|
@@ -11961,8 +11961,8 @@ async function classifyWebSearch(prompt, options) {
|
|
|
11961
11961
|
}
|
|
11962
11962
|
async function classifyWebSearchBatch(prompts, options) {
|
|
11963
11963
|
const { margin = 0.02, ...embeddingOptions } = options;
|
|
11964
|
-
const
|
|
11965
|
-
return
|
|
11964
|
+
const embeddings2 = await generateEmbeddings(prompts, embeddingOptions);
|
|
11965
|
+
return embeddings2.map((emb) => classify4(emb, margin));
|
|
11966
11966
|
}
|
|
11967
11967
|
function createWebSearchPreProcessor(options = {}) {
|
|
11968
11968
|
const margin = options.margin ?? 0.02;
|
|
@@ -12345,6 +12345,7 @@ function createNearbyRequest(options, apiPath = "/api/private-memories") {
|
|
|
12345
12345
|
}
|
|
12346
12346
|
throw error;
|
|
12347
12347
|
}
|
|
12348
|
+
if (response.status === 204) return null;
|
|
12348
12349
|
return await response.json();
|
|
12349
12350
|
} catch (error) {
|
|
12350
12351
|
if (timedOut) throw new RemoteMemoryError("Nearby request timed out", 408, "timeout");
|
|
@@ -12720,6 +12721,16 @@ var ChatStoreError = class extends Error {
|
|
|
12720
12721
|
// src/lib/chatStore/remote.ts
|
|
12721
12722
|
var kinds = /* @__PURE__ */ new Set(["conversation", "message", "summary", "project", "memory_links"]);
|
|
12722
12723
|
var cipherPattern = /^enc:v\d+:(?:[0-9a-f]{2}){28,}$/i;
|
|
12724
|
+
var maxPayload = 2 * 1024 * 1024;
|
|
12725
|
+
var storedDims = 1536;
|
|
12726
|
+
var maxRequestCiphertext = 8 * 1024 * 1024;
|
|
12727
|
+
var maxGetRefs = 50;
|
|
12728
|
+
var maxImportRecords = 100;
|
|
12729
|
+
var maxVerifyRevisions = 1e3;
|
|
12730
|
+
var maxChunksPerRecord = 16;
|
|
12731
|
+
var maxChunksPerRequest = 200;
|
|
12732
|
+
var maxAttachmentBytes = 50 * 1024 * 1024;
|
|
12733
|
+
var attachmentIdPattern = /^[0-9a-f]{32}$/;
|
|
12723
12734
|
var metadata = [
|
|
12724
12735
|
"kind",
|
|
12725
12736
|
"id",
|
|
@@ -12762,7 +12773,62 @@ function validRecord(value) {
|
|
|
12762
12773
|
))
|
|
12763
12774
|
return false;
|
|
12764
12775
|
const root = value.kind === "conversation" || value.kind === "project";
|
|
12765
|
-
return root ? value.conversationId === ""
|
|
12776
|
+
return root ? value.conversationId === "" : id(value.conversationId);
|
|
12777
|
+
}
|
|
12778
|
+
function embeddings(write) {
|
|
12779
|
+
if (write.embeddings === void 0) return true;
|
|
12780
|
+
return Array.isArray(write.embeddings) && !write.record.isDeleted && (write.record.kind === "message" || write.record.kind === "summary") && write.embeddings.length <= maxChunksPerRecord && (write.embeddingModel === void 0 || typeof write.embeddingModel === "string" && write.embeddingModel.length <= 256) && Array.from({ length: write.embeddings.length }, (_, i) => i).every(
|
|
12781
|
+
(i) => vector(write.embeddings?.[i])
|
|
12782
|
+
);
|
|
12783
|
+
}
|
|
12784
|
+
function vector(v) {
|
|
12785
|
+
if (!Array.isArray(v) || v.length !== 1536 && v.length !== 4096) return false;
|
|
12786
|
+
let nonZero = false;
|
|
12787
|
+
for (let i = 0; i < v.length; i++) {
|
|
12788
|
+
const x = v[i];
|
|
12789
|
+
if (typeof x !== "number" || !Number.isFinite(x)) return false;
|
|
12790
|
+
if (i < storedDims && x !== 0) nonZero = true;
|
|
12791
|
+
}
|
|
12792
|
+
return nonZero;
|
|
12793
|
+
}
|
|
12794
|
+
function vectorFields(write) {
|
|
12795
|
+
return {
|
|
12796
|
+
...write.embeddings !== void 0 ? { embeddings: write.embeddings.map((v) => v.slice(0, storedDims)) } : {},
|
|
12797
|
+
...write.embeddingModel !== void 0 ? { embedding_model: write.embeddingModel } : {}
|
|
12798
|
+
};
|
|
12799
|
+
}
|
|
12800
|
+
function text2(value) {
|
|
12801
|
+
return typeof value === "string";
|
|
12802
|
+
}
|
|
12803
|
+
function timestamp(value) {
|
|
12804
|
+
return typeof value === "string" && Number.isFinite(Date.parse(value));
|
|
12805
|
+
}
|
|
12806
|
+
function presigned(value) {
|
|
12807
|
+
if (!object(value) || !text2(value.url) || !/^https:\/\//.test(value.url) || !text2(value.method) || !object(value.headers) || !Object.values(value.headers).every(text2) || !timestamp(value.expires_at))
|
|
12808
|
+
invalid();
|
|
12809
|
+
return {
|
|
12810
|
+
url: value.url,
|
|
12811
|
+
method: value.method,
|
|
12812
|
+
headers: value.headers,
|
|
12813
|
+
expiresAt: value.expires_at
|
|
12814
|
+
};
|
|
12815
|
+
}
|
|
12816
|
+
function attachment(value) {
|
|
12817
|
+
if (!object(value) || !text2(value.attachment_id) || !attachmentIdPattern.test(value.attachment_id) || !integer(value.size_bytes, 1) || value.state !== "pending" && value.state !== "committed" || value.owner_kind !== void 0 && value.owner_kind !== "message" && value.owner_kind !== "summary" || value.owner_id !== void 0 && !id(value.owner_id) || !timestamp(value.created_at) || value.committed_at !== void 0 && !timestamp(value.committed_at))
|
|
12818
|
+
invalid();
|
|
12819
|
+
return {
|
|
12820
|
+
id: value.attachment_id,
|
|
12821
|
+
sizeBytes: value.size_bytes,
|
|
12822
|
+
state: value.state,
|
|
12823
|
+
...value.owner_kind !== void 0 ? { ownerKind: value.owner_kind } : {},
|
|
12824
|
+
...value.owner_id !== void 0 ? { ownerId: value.owner_id } : {},
|
|
12825
|
+
createdAt: value.created_at,
|
|
12826
|
+
...value.committed_at !== void 0 ? { committedAt: value.committed_at } : {}
|
|
12827
|
+
};
|
|
12828
|
+
}
|
|
12829
|
+
function ref(value) {
|
|
12830
|
+
if (!object(value) || !text2(value.kind) || !kinds.has(value.kind) || !id(value.id)) invalid();
|
|
12831
|
+
return { kind: value.kind, id: value.id };
|
|
12766
12832
|
}
|
|
12767
12833
|
function sameMetadata(a, b) {
|
|
12768
12834
|
return metadata.every((key) => a[key] === b[key]);
|
|
@@ -12818,8 +12884,11 @@ async function createRemoteChatStore(options) {
|
|
|
12818
12884
|
isDeleted: r.is_deleted,
|
|
12819
12885
|
data: {}
|
|
12820
12886
|
};
|
|
12821
|
-
if (!validRecord(plain) || typeof r.payload !== "string" || r.payload.length >
|
|
12887
|
+
if (!validRecord(plain) || typeof r.payload !== "string" || r.payload.length > maxPayload)
|
|
12822
12888
|
invalid();
|
|
12889
|
+
if (plain.isDeleted && r.payload === "")
|
|
12890
|
+
return { record: plain, version: value.version, serverUpdatedAt: value.server_updated_at };
|
|
12891
|
+
if (!cipherPattern.test(r.payload)) invalid();
|
|
12823
12892
|
const envelope = JSON.parse(await decrypt(r.payload));
|
|
12824
12893
|
if (!object(envelope) || envelope.schema !== 1 || envelope.account_id !== accountId || envelope.key_id !== keyId || !validRecord(envelope.record) || !sameMetadata(plain, envelope.record))
|
|
12825
12894
|
invalid();
|
|
@@ -12829,30 +12898,46 @@ async function createRemoteChatStore(options) {
|
|
|
12829
12898
|
serverUpdatedAt: value.server_updated_at
|
|
12830
12899
|
};
|
|
12831
12900
|
};
|
|
12832
|
-
const
|
|
12833
|
-
if (
|
|
12901
|
+
const seal = async (record2, signal) => {
|
|
12902
|
+
if (record2.isDeleted) return "";
|
|
12903
|
+
const payload = await encrypt(
|
|
12904
|
+
JSON.stringify({ schema: 1, account_id: accountId, key_id: keyId, record: record2 })
|
|
12905
|
+
);
|
|
12906
|
+
signal?.throwIfAborted();
|
|
12907
|
+
if (!cipherPattern.test(payload) || payload.length > maxPayload) invalid();
|
|
12908
|
+
return payload;
|
|
12909
|
+
};
|
|
12910
|
+
const capture = (items, max, signal) => {
|
|
12911
|
+
if (!Array.isArray(items) || items.length < 1 || items.length > max) invalid();
|
|
12834
12912
|
const seen = /* @__PURE__ */ new Set();
|
|
12835
|
-
|
|
12913
|
+
let chunks3 = 0;
|
|
12914
|
+
return items.map((item) => {
|
|
12836
12915
|
signal?.throwIfAborted();
|
|
12837
|
-
if (!validRecord(
|
|
12838
|
-
|
|
12839
|
-
|
|
12916
|
+
if (!validRecord(item.record) || !embeddings(item)) invalid();
|
|
12917
|
+
chunks3 += item.embeddings?.length ?? 0;
|
|
12918
|
+
if (chunks3 > maxChunksPerRequest) invalid();
|
|
12919
|
+
const copy = JSON.parse(JSON.stringify(item));
|
|
12920
|
+
const recordKey = `${copy.record.kind}/${copy.record.id}`;
|
|
12840
12921
|
if (seen.has(recordKey)) invalid();
|
|
12841
12922
|
seen.add(recordKey);
|
|
12842
|
-
return
|
|
12923
|
+
return copy;
|
|
12843
12924
|
});
|
|
12925
|
+
};
|
|
12926
|
+
const putMany = async (writes, signal) => {
|
|
12927
|
+
if (Array.isArray(writes) && writes.some((w) => !integer(w.expectedVersion)))
|
|
12928
|
+
invalid();
|
|
12929
|
+
const captured = capture(writes, 25, signal);
|
|
12844
12930
|
let bytes2 = 0;
|
|
12845
12931
|
const prepared = [];
|
|
12846
12932
|
for (const write of captured) {
|
|
12847
|
-
const
|
|
12848
|
-
const payload = await encrypt(
|
|
12849
|
-
JSON.stringify({ schema: 1, account_id: accountId, key_id: keyId, record: record2 })
|
|
12850
|
-
);
|
|
12851
|
-
signal?.throwIfAborted();
|
|
12852
|
-
if (!cipherPattern.test(payload) || payload.length > 2 * 1024 * 1024) invalid();
|
|
12933
|
+
const payload = await seal(write.record, signal);
|
|
12853
12934
|
bytes2 += payload.length;
|
|
12854
|
-
if (bytes2 >
|
|
12855
|
-
prepared.push({
|
|
12935
|
+
if (bytes2 > maxRequestCiphertext) invalid();
|
|
12936
|
+
prepared.push({
|
|
12937
|
+
record: wire(write.record, payload),
|
|
12938
|
+
expected_version: write.expectedVersion,
|
|
12939
|
+
...vectorFields(write)
|
|
12940
|
+
});
|
|
12856
12941
|
}
|
|
12857
12942
|
const result = await request(
|
|
12858
12943
|
"/records/batch",
|
|
@@ -12867,7 +12952,8 @@ async function createRemoteChatStore(options) {
|
|
|
12867
12952
|
const out = [];
|
|
12868
12953
|
for (let i = 0; i < result.items.length; i++) {
|
|
12869
12954
|
const value = result.items[i];
|
|
12870
|
-
|
|
12955
|
+
const deleted = prepared[i].record.is_deleted;
|
|
12956
|
+
if (!object(value) || !object(value.record) || value.record.kind !== prepared[i].record.kind || value.record.id !== prepared[i].record.id || value.record.payload !== prepared[i].record.payload || (deleted ? value.record.is_deleted !== true || !integer(value.version, 1) : value.version !== prepared[i].expected_version + 1))
|
|
12871
12957
|
invalid();
|
|
12872
12958
|
out.push(await decode(value));
|
|
12873
12959
|
}
|
|
@@ -12896,7 +12982,7 @@ async function createRemoteChatStore(options) {
|
|
|
12896
12982
|
async list(query) {
|
|
12897
12983
|
const limit = query.limit ?? 20;
|
|
12898
12984
|
const parent = query.conversationId ?? "";
|
|
12899
|
-
if (!kinds.has(query.kind) || !integer(limit, 1) || query.includeDeleted !== void 0 && typeof query.includeDeleted !== "boolean" || limit > 50 || (query.cursor?.length ?? 0) > 2048 || (query.kind === "conversation" || query.kind === "project" ? parent !== "" : !id(parent)))
|
|
12985
|
+
if (!kinds.has(query.kind) || !integer(limit, 1) || query.includeDeleted !== void 0 && typeof query.includeDeleted !== "boolean" || limit > (query.kind === "message" ? 200 : 50) || (query.cursor?.length ?? 0) > 2048 || (query.kind === "conversation" || query.kind === "project" ? parent !== "" : !id(parent)))
|
|
12900
12986
|
invalid();
|
|
12901
12987
|
const params = new URLSearchParams({
|
|
12902
12988
|
account_id: String(accountId),
|
|
@@ -12907,7 +12993,7 @@ async function createRemoteChatStore(options) {
|
|
|
12907
12993
|
});
|
|
12908
12994
|
if (query.cursor) params.set("cursor", query.cursor);
|
|
12909
12995
|
const value = await request(`/records?${params}`, {}, query.signal);
|
|
12910
|
-
if (!object(value) || !Array.isArray(value.items) || value.items.length > limit || value.next_cursor !== void 0 && (typeof value.next_cursor !== "string" || value.next_cursor.length > 2048))
|
|
12996
|
+
if (!object(value) || !Array.isArray(value.items) || value.items.length > limit || value.next_cursor !== void 0 && (typeof value.next_cursor !== "string" || value.next_cursor.length > 2048) || value.total !== void 0 && !integer(value.total))
|
|
12911
12997
|
invalid();
|
|
12912
12998
|
const items = [];
|
|
12913
12999
|
for (const item of value.items) {
|
|
@@ -12917,11 +13003,258 @@ async function createRemoteChatStore(options) {
|
|
|
12917
13003
|
items.push(result);
|
|
12918
13004
|
}
|
|
12919
13005
|
query.signal?.throwIfAborted();
|
|
12920
|
-
return {
|
|
13006
|
+
return {
|
|
13007
|
+
items,
|
|
13008
|
+
...value.next_cursor ? { nextCursor: value.next_cursor } : {},
|
|
13009
|
+
...value.total !== void 0 ? { total: value.total } : {}
|
|
13010
|
+
};
|
|
13011
|
+
},
|
|
13012
|
+
putMany,
|
|
13013
|
+
async getMany(refs, signal) {
|
|
13014
|
+
if (!Array.isArray(refs)) invalid();
|
|
13015
|
+
const wanted = /* @__PURE__ */ new Map();
|
|
13016
|
+
for (const r of refs) {
|
|
13017
|
+
const checked = ref(r);
|
|
13018
|
+
wanted.set(`${checked.kind}/${checked.id}`, checked);
|
|
13019
|
+
}
|
|
13020
|
+
const found = /* @__PURE__ */ new Map();
|
|
13021
|
+
let pending = [...wanted.values()];
|
|
13022
|
+
while (pending.length > 0) {
|
|
13023
|
+
const batch = pending.slice(0, maxGetRefs);
|
|
13024
|
+
pending = pending.slice(maxGetRefs);
|
|
13025
|
+
const value = await request(
|
|
13026
|
+
"/records/get",
|
|
13027
|
+
{ method: "POST", body: JSON.stringify({ account_id: accountId, refs: batch }) },
|
|
13028
|
+
signal
|
|
13029
|
+
);
|
|
13030
|
+
if (!object(value) || !Array.isArray(value.items) || value.remaining !== void 0 && !Array.isArray(value.remaining))
|
|
13031
|
+
invalid();
|
|
13032
|
+
const asked = new Set(batch.map((r) => `${r.kind}/${r.id}`));
|
|
13033
|
+
for (const item of value.items) {
|
|
13034
|
+
const snapshot = await decode(item);
|
|
13035
|
+
const key = `${snapshot.record.kind}/${snapshot.record.id}`;
|
|
13036
|
+
if (!asked.has(key) || found.has(key)) invalid();
|
|
13037
|
+
found.set(key, snapshot);
|
|
13038
|
+
}
|
|
13039
|
+
const remaining = (value.remaining ?? []).map(ref);
|
|
13040
|
+
if (remaining.some((r) => !asked.has(`${r.kind}/${r.id}`) || found.has(`${r.kind}/${r.id}`)))
|
|
13041
|
+
invalid();
|
|
13042
|
+
if (remaining.length > 0 && value.items.length === 0) invalid();
|
|
13043
|
+
pending = [...remaining, ...pending];
|
|
13044
|
+
}
|
|
13045
|
+
signal?.throwIfAborted();
|
|
13046
|
+
return [...wanted.keys()].flatMap((key) => {
|
|
13047
|
+
const snapshot = found.get(key);
|
|
13048
|
+
return snapshot ? [snapshot] : [];
|
|
13049
|
+
});
|
|
13050
|
+
},
|
|
13051
|
+
async account(signal) {
|
|
13052
|
+
const value = await request("/account", {}, signal);
|
|
13053
|
+
if (!object(value) || value.account_id !== accountId || !text2(value.key_id) || value.state !== "none" && value.state !== "migrating" && value.state !== "active" || !integer(value.record_count) || !integer(value.storage_bytes) || !integer(value.vector_count))
|
|
13054
|
+
invalid();
|
|
13055
|
+
if (value.key_id && value.key_id !== keyId)
|
|
13056
|
+
throw new ChatStoreError("Canonical chat key does not match", 409, "key_mismatch");
|
|
13057
|
+
const out = {
|
|
13058
|
+
keyId: value.key_id,
|
|
13059
|
+
state: value.state,
|
|
13060
|
+
recordCount: value.record_count,
|
|
13061
|
+
storageBytes: value.storage_bytes,
|
|
13062
|
+
vectorCount: value.vector_count
|
|
13063
|
+
};
|
|
13064
|
+
return out;
|
|
12921
13065
|
},
|
|
12922
|
-
|
|
13066
|
+
async importRecords(records, signal) {
|
|
13067
|
+
const captured = capture(records, maxImportRecords, signal);
|
|
13068
|
+
let bytes2 = 0;
|
|
13069
|
+
const prepared = [];
|
|
13070
|
+
for (const item of captured) {
|
|
13071
|
+
const payload = await seal(item.record, signal);
|
|
13072
|
+
bytes2 += payload.length;
|
|
13073
|
+
if (bytes2 > maxRequestCiphertext) invalid();
|
|
13074
|
+
prepared.push({ record: wire(item.record, payload), ...vectorFields(item) });
|
|
13075
|
+
}
|
|
13076
|
+
const value = await request(
|
|
13077
|
+
"/import",
|
|
13078
|
+
{
|
|
13079
|
+
method: "POST",
|
|
13080
|
+
body: JSON.stringify({ account_id: accountId, key_id: keyId, records: prepared })
|
|
13081
|
+
},
|
|
13082
|
+
signal
|
|
13083
|
+
);
|
|
13084
|
+
if (!object(value) || !integer(value.written) || value.written > prepared.length) invalid();
|
|
13085
|
+
return value.written;
|
|
13086
|
+
},
|
|
13087
|
+
async verify(revisions, signal) {
|
|
13088
|
+
if (!Array.isArray(revisions) || revisions.length > maxVerifyRevisions) invalid();
|
|
13089
|
+
const asked = /* @__PURE__ */ new Set();
|
|
13090
|
+
const wireRevisions = revisions.map((r) => {
|
|
13091
|
+
const checked = ref(r);
|
|
13092
|
+
if (!integer(r.updatedAt, 1) || typeof r.isDeleted !== "boolean") invalid();
|
|
13093
|
+
asked.add(`${checked.kind}/${checked.id}`);
|
|
13094
|
+
return {
|
|
13095
|
+
kind: checked.kind,
|
|
13096
|
+
id: checked.id,
|
|
13097
|
+
updated_at: r.updatedAt,
|
|
13098
|
+
is_deleted: r.isDeleted
|
|
13099
|
+
};
|
|
13100
|
+
});
|
|
13101
|
+
if (wireRevisions.length === 0) return [];
|
|
13102
|
+
const value = await request(
|
|
13103
|
+
"/verify",
|
|
13104
|
+
{
|
|
13105
|
+
method: "POST",
|
|
13106
|
+
body: JSON.stringify({ account_id: accountId, revisions: wireRevisions })
|
|
13107
|
+
},
|
|
13108
|
+
signal
|
|
13109
|
+
);
|
|
13110
|
+
if (!object(value) || !Array.isArray(value.missing)) invalid();
|
|
13111
|
+
const missing = value.missing.map(ref);
|
|
13112
|
+
if (missing.some((r) => !asked.has(`${r.kind}/${r.id}`))) invalid();
|
|
13113
|
+
return missing;
|
|
13114
|
+
},
|
|
13115
|
+
async activate(signal) {
|
|
13116
|
+
const value = await request(
|
|
13117
|
+
"/account",
|
|
13118
|
+
{ method: "PUT", body: JSON.stringify({ account_id: accountId, state: "active" }) },
|
|
13119
|
+
signal
|
|
13120
|
+
);
|
|
13121
|
+
if (!object(value) || value.state !== "active" || typeof value.transitioned !== "boolean")
|
|
13122
|
+
invalid();
|
|
13123
|
+
return value.transitioned;
|
|
13124
|
+
},
|
|
13125
|
+
async changes(cursor, options2) {
|
|
13126
|
+
const limit = options2?.limit ?? 100;
|
|
13127
|
+
if (!integer(limit, 1) || limit > 200 || cursor !== void 0 && (!text2(cursor) || cursor.length > 2048))
|
|
13128
|
+
invalid();
|
|
13129
|
+
const params = new URLSearchParams({ account_id: String(accountId), limit: String(limit) });
|
|
13130
|
+
if (cursor) params.set("cursor", cursor);
|
|
13131
|
+
const value = await request(`/changes?${params}`, {}, options2?.signal);
|
|
13132
|
+
if (!object(value) || !Array.isArray(value.items) || value.items.length > limit || value.next_cursor !== void 0 && !text2(value.next_cursor) || value.changes_cursor !== void 0 && !text2(value.changes_cursor))
|
|
13133
|
+
invalid();
|
|
13134
|
+
const items = [];
|
|
13135
|
+
for (const item of value.items) items.push(await decode(item));
|
|
13136
|
+
options2?.signal?.throwIfAborted();
|
|
13137
|
+
return {
|
|
13138
|
+
items,
|
|
13139
|
+
...value.next_cursor ? { nextCursor: value.next_cursor } : {},
|
|
13140
|
+
changesCursor: value.changes_cursor ?? cursor ?? ""
|
|
13141
|
+
};
|
|
13142
|
+
},
|
|
13143
|
+
async search(embedding2, options2) {
|
|
13144
|
+
const limit = options2?.limit ?? 20;
|
|
13145
|
+
const kindsFilter = options2?.kinds;
|
|
13146
|
+
if (!Array.isArray(embedding2) || !embeddings({
|
|
13147
|
+
record: { ...emptyMessage, isDeleted: false },
|
|
13148
|
+
embeddings: [embedding2]
|
|
13149
|
+
}) || !integer(limit, 1) || limit > 50 || kindsFilter !== void 0 && (!Array.isArray(kindsFilter) || kindsFilter.length === 0 || kindsFilter.some((k) => k !== "message" && k !== "summary")) || options2?.conversationId !== void 0 && !id(options2.conversationId))
|
|
13150
|
+
invalid();
|
|
13151
|
+
const value = await request(
|
|
13152
|
+
"/search",
|
|
13153
|
+
{
|
|
13154
|
+
method: "POST",
|
|
13155
|
+
body: JSON.stringify({
|
|
13156
|
+
account_id: accountId,
|
|
13157
|
+
embedding: embedding2.slice(0, storedDims),
|
|
13158
|
+
limit,
|
|
13159
|
+
...kindsFilter ? { kinds: kindsFilter } : {},
|
|
13160
|
+
...options2?.conversationId ? { conversation_id: options2.conversationId } : {}
|
|
13161
|
+
})
|
|
13162
|
+
},
|
|
13163
|
+
options2?.signal
|
|
13164
|
+
);
|
|
13165
|
+
if (!object(value) || !Array.isArray(value.items) || value.items.length > limit) invalid();
|
|
13166
|
+
const hits = [];
|
|
13167
|
+
for (const item of value.items) {
|
|
13168
|
+
if (!object(item) || !integer(item.chunk) || typeof item.score !== "number" || !Number.isFinite(item.score))
|
|
13169
|
+
invalid();
|
|
13170
|
+
const snapshot = await decode(item);
|
|
13171
|
+
if (snapshot.record.isDeleted || kindsFilter !== void 0 && !kindsFilter.includes(snapshot.record.kind) || snapshot.record.kind !== "message" && snapshot.record.kind !== "summary" || options2?.conversationId !== void 0 && snapshot.record.conversationId !== options2.conversationId)
|
|
13172
|
+
invalid();
|
|
13173
|
+
hits.push({ ...snapshot, chunk: item.chunk, score: item.score });
|
|
13174
|
+
}
|
|
13175
|
+
options2?.signal?.throwIfAborted();
|
|
13176
|
+
return hits;
|
|
13177
|
+
},
|
|
13178
|
+
async deleteAll(signal) {
|
|
13179
|
+
const value = await request(`/records?account_id=${accountId}`, { method: "DELETE" }, signal);
|
|
13180
|
+
if (!object(value) || !integer(value.deleted)) invalid();
|
|
13181
|
+
return value.deleted;
|
|
13182
|
+
},
|
|
13183
|
+
attachments: {
|
|
13184
|
+
async create(sizeBytes, signal) {
|
|
13185
|
+
if (!integer(sizeBytes, 1) || sizeBytes > maxAttachmentBytes) invalid();
|
|
13186
|
+
const value = await request(
|
|
13187
|
+
"/attachments",
|
|
13188
|
+
{
|
|
13189
|
+
method: "POST",
|
|
13190
|
+
body: JSON.stringify({ account_id: accountId, size_bytes: sizeBytes })
|
|
13191
|
+
},
|
|
13192
|
+
signal
|
|
13193
|
+
);
|
|
13194
|
+
if (!object(value)) invalid();
|
|
13195
|
+
const created = attachment(value.attachment);
|
|
13196
|
+
if (created.sizeBytes !== sizeBytes || created.state !== "pending") invalid();
|
|
13197
|
+
return { attachment: created, upload: presigned(value.upload) };
|
|
13198
|
+
},
|
|
13199
|
+
async commit(attachmentId, owner, signal) {
|
|
13200
|
+
if (!attachmentIdPattern.test(attachmentId) || !object(owner) || owner.kind !== "message" && owner.kind !== "summary" || !id(owner.id))
|
|
13201
|
+
invalid();
|
|
13202
|
+
const value = await request(
|
|
13203
|
+
`/attachments/${attachmentId}/commit`,
|
|
13204
|
+
{
|
|
13205
|
+
method: "POST",
|
|
13206
|
+
body: JSON.stringify({
|
|
13207
|
+
account_id: accountId,
|
|
13208
|
+
owner_kind: owner.kind,
|
|
13209
|
+
owner_id: owner.id
|
|
13210
|
+
})
|
|
13211
|
+
},
|
|
13212
|
+
signal
|
|
13213
|
+
);
|
|
13214
|
+
if (!object(value)) invalid();
|
|
13215
|
+
const committed = attachment(value.attachment);
|
|
13216
|
+
if (committed.id !== attachmentId || committed.state !== "committed" || committed.ownerKind !== owner.kind || committed.ownerId !== owner.id)
|
|
13217
|
+
invalid();
|
|
13218
|
+
return committed;
|
|
13219
|
+
},
|
|
13220
|
+
async get(attachmentId, signal) {
|
|
13221
|
+
if (!attachmentIdPattern.test(attachmentId)) invalid();
|
|
13222
|
+
let value;
|
|
13223
|
+
try {
|
|
13224
|
+
value = await request(`/attachments/${attachmentId}?account_id=${accountId}`, {}, signal);
|
|
13225
|
+
} catch (error) {
|
|
13226
|
+
if (error instanceof ChatStoreError && error.status === 404) return null;
|
|
13227
|
+
throw error;
|
|
13228
|
+
}
|
|
13229
|
+
if (!object(value)) invalid();
|
|
13230
|
+
const found = attachment(value.attachment);
|
|
13231
|
+
if (found.id !== attachmentId) invalid();
|
|
13232
|
+
return {
|
|
13233
|
+
attachment: found,
|
|
13234
|
+
...value.download !== void 0 ? { download: presigned(value.download) } : {}
|
|
13235
|
+
};
|
|
13236
|
+
},
|
|
13237
|
+
async delete(attachmentId, signal) {
|
|
13238
|
+
if (!attachmentIdPattern.test(attachmentId)) invalid();
|
|
13239
|
+
await request(
|
|
13240
|
+
`/attachments/${attachmentId}?account_id=${accountId}`,
|
|
13241
|
+
{ method: "DELETE" },
|
|
13242
|
+
signal
|
|
13243
|
+
);
|
|
13244
|
+
}
|
|
13245
|
+
}
|
|
12923
13246
|
};
|
|
12924
13247
|
}
|
|
13248
|
+
var emptyMessage = {
|
|
13249
|
+
kind: "message",
|
|
13250
|
+
id: "query",
|
|
13251
|
+
conversationId: "query",
|
|
13252
|
+
sortKey: 0,
|
|
13253
|
+
createdAt: 1,
|
|
13254
|
+
updatedAt: 1,
|
|
13255
|
+
isDeleted: false,
|
|
13256
|
+
data: {}
|
|
13257
|
+
};
|
|
12925
13258
|
|
|
12926
13259
|
// src/lib/db/appFiles/models.ts
|
|
12927
13260
|
var import_watermelondb4 = require("@nozbe/watermelondb");
|
|
@@ -15576,8 +15909,8 @@ var WatermelonChatStorageAdapter = class {
|
|
|
15576
15909
|
createMessage(options) {
|
|
15577
15910
|
return createMessageOp(this.ctx, options);
|
|
15578
15911
|
}
|
|
15579
|
-
updateMessageEmbedding(uniqueId,
|
|
15580
|
-
return updateMessageEmbeddingOp(this.ctx, uniqueId,
|
|
15912
|
+
updateMessageEmbedding(uniqueId, vector2, embeddingModel) {
|
|
15913
|
+
return updateMessageEmbeddingOp(this.ctx, uniqueId, vector2, embeddingModel);
|
|
15581
15914
|
}
|
|
15582
15915
|
updateMessageChunks(uniqueId, chunks3, embeddingModel) {
|
|
15583
15916
|
return updateMessageChunksOp(this.ctx, uniqueId, chunks3, embeddingModel);
|
|
@@ -19529,8 +19862,8 @@ var STOPWORDS = /* @__PURE__ */ new Set([
|
|
|
19529
19862
|
"user",
|
|
19530
19863
|
"users"
|
|
19531
19864
|
]);
|
|
19532
|
-
function tokenize(
|
|
19533
|
-
const m =
|
|
19865
|
+
function tokenize(text15) {
|
|
19866
|
+
const m = text15.toLowerCase().match(TOKEN_RE);
|
|
19534
19867
|
if (!m) return [];
|
|
19535
19868
|
return m.filter((t) => !STOPWORDS.has(t));
|
|
19536
19869
|
}
|
|
@@ -19742,13 +20075,13 @@ function embedVaultRows(ctx, options, rows, preparation) {
|
|
|
19742
20075
|
);
|
|
19743
20076
|
[...missing].forEach(([key, row], index) => {
|
|
19744
20077
|
const request = batch.then((vectors) => {
|
|
19745
|
-
const
|
|
19746
|
-
updateVaultMemoryEmbeddingOp(ctx, row.uniqueId, JSON.stringify(
|
|
20078
|
+
const vector2 = vectors[index];
|
|
20079
|
+
updateVaultMemoryEmbeddingOp(ctx, row.uniqueId, JSON.stringify(vector2), model, {
|
|
19747
20080
|
content: row.content,
|
|
19748
20081
|
updatedAt: row.updatedAt?.getTime()
|
|
19749
20082
|
}).catch(() => {
|
|
19750
20083
|
});
|
|
19751
|
-
return
|
|
20084
|
+
return vector2;
|
|
19752
20085
|
}).finally(() => {
|
|
19753
20086
|
entries.delete(key);
|
|
19754
20087
|
if (entries.size === 0) pendingRows.get(ctx)?.delete(options.maskInput);
|
|
@@ -20362,12 +20695,12 @@ async function preEmbedVaultMemories(vaultCtx, embeddingOptions, cache, options)
|
|
|
20362
20695
|
}
|
|
20363
20696
|
}
|
|
20364
20697
|
if (uncachedTexts.length > 0) {
|
|
20365
|
-
const
|
|
20698
|
+
const embeddings2 = await embedVaultRows(vaultCtx, embeddingOptions, uncachedRows);
|
|
20366
20699
|
for (let i = 0; i < uncachedKeys.length; i++) {
|
|
20367
20700
|
cacheRowVector(
|
|
20368
20701
|
cache,
|
|
20369
20702
|
uncachedKeys[i],
|
|
20370
|
-
Float32Array.from(
|
|
20703
|
+
Float32Array.from(embeddings2[i]),
|
|
20371
20704
|
uncachedVersions[i],
|
|
20372
20705
|
uncachedTexts[i]
|
|
20373
20706
|
);
|
|
@@ -22173,7 +22506,7 @@ function createAutoExtractor(options) {
|
|
|
22173
22506
|
...options.retainCtx,
|
|
22174
22507
|
embeddingOptions: {
|
|
22175
22508
|
...options.retainCtx.embeddingOptions,
|
|
22176
|
-
maskInput: (
|
|
22509
|
+
maskInput: (text15) => piiRedactor.maskText(text15)
|
|
22177
22510
|
}
|
|
22178
22511
|
} : options.retainCtx;
|
|
22179
22512
|
function processTurn(messages, conversationId) {
|
|
@@ -22924,14 +23257,14 @@ var MaskScopedEmbeddingCache = class extends Map {
|
|
|
22924
23257
|
this.inner = inner;
|
|
22925
23258
|
this.masked = masked;
|
|
22926
23259
|
}
|
|
22927
|
-
key(
|
|
22928
|
-
return `${this.masked ? "m" : "r"}:${
|
|
23260
|
+
key(text15) {
|
|
23261
|
+
return `${this.masked ? "m" : "r"}:${text15}`;
|
|
22929
23262
|
}
|
|
22930
|
-
get(
|
|
22931
|
-
return this.inner.get(this.key(
|
|
23263
|
+
get(text15) {
|
|
23264
|
+
return this.inner.get(this.key(text15));
|
|
22932
23265
|
}
|
|
22933
|
-
set(
|
|
22934
|
-
this.inner.set(this.key(
|
|
23266
|
+
set(text15, value) {
|
|
23267
|
+
this.inner.set(this.key(text15), value);
|
|
22935
23268
|
return this;
|
|
22936
23269
|
}
|
|
22937
23270
|
};
|
|
@@ -24137,12 +24470,12 @@ ${JSON.stringify(
|
|
|
24137
24470
|
function parseAnswer(body, base, parseSchema) {
|
|
24138
24471
|
if (typeof body !== "object" || body === null) return base;
|
|
24139
24472
|
const obj = body;
|
|
24140
|
-
const
|
|
24473
|
+
const text15 = extractCompletionContent(obj) ?? "";
|
|
24141
24474
|
const usage = obj.usage;
|
|
24142
24475
|
let structuredOutput;
|
|
24143
|
-
if (parseSchema &&
|
|
24476
|
+
if (parseSchema && text15) {
|
|
24144
24477
|
try {
|
|
24145
|
-
structuredOutput = JSON.parse(extractJsonCandidate(
|
|
24478
|
+
structuredOutput = JSON.parse(extractJsonCandidate(text15));
|
|
24146
24479
|
} catch (err) {
|
|
24147
24480
|
getLogger().warn("[memory/reflect] structured output was not valid JSON", {
|
|
24148
24481
|
err: err instanceof Error ? err.message : String(err)
|
|
@@ -24152,7 +24485,7 @@ function parseAnswer(body, base, parseSchema) {
|
|
|
24152
24485
|
const promptTokens = usage?.prompt_tokens ?? usage?.input_tokens ?? 0;
|
|
24153
24486
|
const completionTokens = usage?.completion_tokens ?? usage?.output_tokens ?? 0;
|
|
24154
24487
|
return {
|
|
24155
|
-
text:
|
|
24488
|
+
text: text15,
|
|
24156
24489
|
...structuredOutput !== void 0 && { structuredOutput },
|
|
24157
24490
|
basedOn: base.basedOn,
|
|
24158
24491
|
usage: {
|
|
@@ -24723,10 +25056,10 @@ init_logger();
|
|
|
24723
25056
|
// src/lib/memory/store/remotePipeline.ts
|
|
24724
25057
|
var import_uuid5 = require("uuid");
|
|
24725
25058
|
init_logger();
|
|
24726
|
-
function storedVector(
|
|
24727
|
-
if (!Array.isArray(
|
|
25059
|
+
function storedVector(vector2) {
|
|
25060
|
+
if (!Array.isArray(vector2) || vector2.length !== 1536 && vector2.length !== 4096 || vector2.some((v) => !Number.isFinite(v)))
|
|
24728
25061
|
throw new Error("Remote memories require a finite 1536/4096-dimensional vector");
|
|
24729
|
-
const out =
|
|
25062
|
+
const out = vector2.slice(0, 1536);
|
|
24730
25063
|
const norm = Math.sqrt(out.reduce((sum, v) => sum + v * v, 0));
|
|
24731
25064
|
if (!norm) throw new Error("Remote query/content vector has no direction after MRL truncation");
|
|
24732
25065
|
return out.map((v) => v / norm);
|
|
@@ -25085,7 +25418,7 @@ function createRemoteMemoryPipeline(options) {
|
|
|
25085
25418
|
const factSource = {
|
|
25086
25419
|
graphRanking: options.graphRanking,
|
|
25087
25420
|
temporalRanking: options.temporalRanking,
|
|
25088
|
-
search: async (
|
|
25421
|
+
search: async (text15, searchOptions, embeddingCache) => {
|
|
25089
25422
|
const queryOptions = {
|
|
25090
25423
|
...embeddingOptions,
|
|
25091
25424
|
taskType: "memory_recall_embed",
|
|
@@ -25094,8 +25427,8 @@ function createRemoteMemoryPipeline(options) {
|
|
|
25094
25427
|
}
|
|
25095
25428
|
};
|
|
25096
25429
|
const { prepare } = operation("recall", queryOptions);
|
|
25097
|
-
const prepared = await prepare(
|
|
25098
|
-
const ranked = await rankPreparedVaultCandidates(
|
|
25430
|
+
const prepared = await prepare(text15, searchOptions);
|
|
25431
|
+
const ranked = await rankPreparedVaultCandidates(text15, prepared, queryOptions, searchOptions);
|
|
25099
25432
|
return {
|
|
25100
25433
|
...ranked,
|
|
25101
25434
|
rankedOnCosine: prepared.memories.length > 0 && !prepared.embeddingsUnavailable,
|
|
@@ -25185,7 +25518,7 @@ var METADATA_FIELDS = [
|
|
|
25185
25518
|
"published_at",
|
|
25186
25519
|
"geohash"
|
|
25187
25520
|
];
|
|
25188
|
-
function
|
|
25521
|
+
function text14(value) {
|
|
25189
25522
|
return typeof value === "string" && value !== "" ? value : void 0;
|
|
25190
25523
|
}
|
|
25191
25524
|
function num(value) {
|
|
@@ -25206,14 +25539,14 @@ function revision(raw) {
|
|
|
25206
25539
|
};
|
|
25207
25540
|
}
|
|
25208
25541
|
function embedding(raw, model) {
|
|
25209
|
-
const value =
|
|
25542
|
+
const value = text14(raw.embedding);
|
|
25210
25543
|
if (!value) return void 0;
|
|
25211
25544
|
try {
|
|
25212
|
-
const
|
|
25213
|
-
const stored2 =
|
|
25214
|
-
if (stored2 === void 0 ?
|
|
25545
|
+
const vector2 = JSON.parse(value);
|
|
25546
|
+
const stored2 = text14(raw.embedding_model);
|
|
25547
|
+
if (stored2 === void 0 ? vector2.length !== LOCAL_VECTOR_DIMS : stored2 !== model)
|
|
25215
25548
|
return void 0;
|
|
25216
|
-
return storedVector(
|
|
25549
|
+
return storedVector(vector2);
|
|
25217
25550
|
} catch {
|
|
25218
25551
|
return void 0;
|
|
25219
25552
|
}
|
|
@@ -25227,7 +25560,7 @@ function stringArray(value) {
|
|
|
25227
25560
|
}
|
|
25228
25561
|
}
|
|
25229
25562
|
function sourceChunkIds(raw) {
|
|
25230
|
-
const value =
|
|
25563
|
+
const value = text14(raw.source_chunk_ids);
|
|
25231
25564
|
const ids = value && stringArray(value);
|
|
25232
25565
|
return ids ? serializeSourceChunkIds(ids) : value;
|
|
25233
25566
|
}
|
|
@@ -25239,39 +25572,39 @@ function fitsNearby(row) {
|
|
|
25239
25572
|
}
|
|
25240
25573
|
function invalid2(raw) {
|
|
25241
25574
|
const id2 = raw.id;
|
|
25242
|
-
return typeof id2 !== "string" || id2 === "" || bytes(id2) > MAX_ID_BYTES || !
|
|
25575
|
+
return typeof id2 !== "string" || id2 === "" || bytes(id2) > MAX_ID_BYTES || !text14(raw.scope) || (num(raw.created_at) ?? 0) <= 0 || (num(raw.updated_at) ?? 0) <= 0;
|
|
25243
25576
|
}
|
|
25244
25577
|
function metadata2(raw, model) {
|
|
25245
|
-
const
|
|
25578
|
+
const vector2 = embedding(raw, model);
|
|
25246
25579
|
return {
|
|
25247
25580
|
scope: raw.scope,
|
|
25248
|
-
kind:
|
|
25249
|
-
level:
|
|
25250
|
-
folder_id:
|
|
25581
|
+
kind: text14(raw.kind),
|
|
25582
|
+
level: text14(raw.level),
|
|
25583
|
+
folder_id: text14(raw.folder_id),
|
|
25251
25584
|
is_deleted: bool(raw.is_deleted) ?? false,
|
|
25252
|
-
...
|
|
25585
|
+
...vector2 && { embedding: vector2, embedding_model: model },
|
|
25253
25586
|
source_chunk_ids: sourceChunkIds(raw),
|
|
25254
25587
|
proof_count: num(raw.proof_count),
|
|
25255
|
-
source:
|
|
25588
|
+
source: text14(raw.source),
|
|
25256
25589
|
event_time_start: num(raw.event_time_start),
|
|
25257
25590
|
event_time_end: num(raw.event_time_end),
|
|
25258
|
-
event_time_kind:
|
|
25591
|
+
event_time_kind: text14(raw.event_time_kind),
|
|
25259
25592
|
topics_user_managed: bool(raw.topics_user_managed),
|
|
25260
|
-
topics:
|
|
25593
|
+
topics: text14(raw.topics),
|
|
25261
25594
|
topics_updated_at: num(raw.topics_updated_at),
|
|
25262
|
-
media:
|
|
25595
|
+
media: text14(raw.media),
|
|
25263
25596
|
topics_extracted_at: num(raw.topics_extracted_at),
|
|
25264
25597
|
topics_extracted_version: num(raw.topics_extracted_version),
|
|
25265
|
-
superseded_by:
|
|
25598
|
+
superseded_by: text14(raw.superseded_by),
|
|
25266
25599
|
superseded_at: num(raw.superseded_at),
|
|
25267
25600
|
last_observed_at: num(raw.last_observed_at),
|
|
25268
|
-
fact_type:
|
|
25601
|
+
fact_type: text14(raw.fact_type),
|
|
25269
25602
|
archived_at: num(raw.archived_at),
|
|
25270
|
-
trust_tier:
|
|
25271
|
-
visibility:
|
|
25603
|
+
trust_tier: text14(raw.trust_tier),
|
|
25604
|
+
visibility: text14(raw.visibility),
|
|
25272
25605
|
twin_opt_in: bool(raw.twin_opt_in),
|
|
25273
25606
|
published_at: num(raw.published_at),
|
|
25274
|
-
geohash:
|
|
25607
|
+
geohash: text14(raw.geohash)
|
|
25275
25608
|
};
|
|
25276
25609
|
}
|
|
25277
25610
|
function defined(value) {
|
|
@@ -25282,7 +25615,7 @@ function defined(value) {
|
|
|
25282
25615
|
async function prepareRow(raw, canonical, rings, model, updatedAt) {
|
|
25283
25616
|
const deleted = bool(raw.is_deleted) ?? false;
|
|
25284
25617
|
const { encrypt } = memoryCipher(canonical);
|
|
25285
|
-
const localKindValue =
|
|
25618
|
+
const localKindValue = text14(raw.kind_value);
|
|
25286
25619
|
let plaintext;
|
|
25287
25620
|
let kindValue;
|
|
25288
25621
|
try {
|
|
@@ -25426,7 +25759,7 @@ async function remoteMetadata(request, ids, signal) {
|
|
|
25426
25759
|
}
|
|
25427
25760
|
async function backfillTopics(ctx) {
|
|
25428
25761
|
if (!ctx.entityCtx) return;
|
|
25429
|
-
const topicless = (await getAllVaultMemoryRowsOp(ctx)).filter((raw) => !
|
|
25762
|
+
const topicless = (await getAllVaultMemoryRowsOp(ctx)).filter((raw) => !text14(raw.topics) && !bool(raw.is_deleted)).map((raw) => raw.id);
|
|
25430
25763
|
if (topicless.length > 0) await backfillMemoryTopicsOp(ctx, topicless);
|
|
25431
25764
|
}
|
|
25432
25765
|
async function migrateMemoriesToRemote(options) {
|
|
@@ -25537,7 +25870,7 @@ async function migrateMemoriesToRemote(options) {
|
|
|
25537
25870
|
track(reembedded, !!row.embedding && !usable.has(id2));
|
|
25538
25871
|
track(unembedded, !row.embedding);
|
|
25539
25872
|
track(placeholders, plaintext === void 0);
|
|
25540
|
-
track(truncated, row.source_chunk_ids !==
|
|
25873
|
+
track(truncated, row.source_chunk_ids !== text14(local.get(id2).source_chunk_ids));
|
|
25541
25874
|
}
|
|
25542
25875
|
let sent = 0;
|
|
25543
25876
|
options.onProgress?.({ imported: sent, toImport: upload.length });
|
|
@@ -25955,12 +26288,12 @@ function createRemoteMemoryStore(options) {
|
|
|
25955
26288
|
};
|
|
25956
26289
|
const embedInBackground = ({ memory: { memory_id: id2, content } }) => {
|
|
25957
26290
|
generateEmbedding(content, embeddingOptions).then(
|
|
25958
|
-
(
|
|
26291
|
+
(vector2) => serialized(id2, async () => {
|
|
25959
26292
|
const current = await live(id2);
|
|
25960
26293
|
if (!current || current.memory.content !== content || current.memory.embedding?.length)
|
|
25961
26294
|
return;
|
|
25962
26295
|
const saved = await persistence.put(
|
|
25963
|
-
{ ...current.memory, embedding: storedVector(
|
|
26296
|
+
{ ...current.memory, embedding: storedVector(vector2), embedding_model: model },
|
|
25964
26297
|
current
|
|
25965
26298
|
);
|
|
25966
26299
|
notify("embedding", [saved]);
|
|
@@ -26453,8 +26786,8 @@ function createRemoteMemoryStore(options) {
|
|
|
26453
26786
|
return finish();
|
|
26454
26787
|
}
|
|
26455
26788
|
const writes = targets.flatMap((record2, i) => {
|
|
26456
|
-
const
|
|
26457
|
-
if (!
|
|
26789
|
+
const vector2 = vectors[i];
|
|
26790
|
+
if (!vector2) {
|
|
26458
26791
|
result.failed++;
|
|
26459
26792
|
return [];
|
|
26460
26793
|
}
|
|
@@ -26463,7 +26796,7 @@ function createRemoteMemoryStore(options) {
|
|
|
26463
26796
|
{
|
|
26464
26797
|
memory: {
|
|
26465
26798
|
...record2.memory,
|
|
26466
|
-
embedding: storedVector(
|
|
26799
|
+
embedding: storedVector(vector2),
|
|
26467
26800
|
embedding_model: model
|
|
26468
26801
|
},
|
|
26469
26802
|
expectedVersion: record2
|
|
@@ -26543,10 +26876,10 @@ function createRemoteMemoryStore(options) {
|
|
|
26543
26876
|
if (!rejectsInput(error)) return null;
|
|
26544
26877
|
}
|
|
26545
26878
|
const vectors = [];
|
|
26546
|
-
for (const [i,
|
|
26879
|
+
for (const [i, text15] of texts.entries()) {
|
|
26547
26880
|
signal?.throwIfAborted();
|
|
26548
26881
|
try {
|
|
26549
|
-
[vectors[i]] = await generateEmbeddings([
|
|
26882
|
+
[vectors[i]] = await generateEmbeddings([text15], embeddingOptions, signal);
|
|
26550
26883
|
} catch (error) {
|
|
26551
26884
|
signal?.throwIfAborted();
|
|
26552
26885
|
if (!rejectsInput(error)) return null;
|
|
@@ -27237,8 +27570,8 @@ async function synthesizeFacet(facet, ctx, options, prior, vaultPreparation) {
|
|
|
27237
27570
|
memories
|
|
27238
27571
|
});
|
|
27239
27572
|
const noEvidence = result.basedOn.memoryIds.length === 0;
|
|
27240
|
-
const { text:
|
|
27241
|
-
if (!
|
|
27573
|
+
const { text: text15, legitimateEmpty } = extractFacetText(result.structuredOutput);
|
|
27574
|
+
if (!text15 && !legitimateEmpty && !noEvidence) {
|
|
27242
27575
|
getLogger().warn(
|
|
27243
27576
|
"[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
|
|
27244
27577
|
{ facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
|
|
@@ -27248,12 +27581,12 @@ async function synthesizeFacet(facet, ctx, options, prior, vaultPreparation) {
|
|
|
27248
27581
|
const section = {
|
|
27249
27582
|
key: facet.key,
|
|
27250
27583
|
label: facet.label,
|
|
27251
|
-
text:
|
|
27584
|
+
text: text15,
|
|
27252
27585
|
sourceMemoryIds: result.basedOn.memoryIds,
|
|
27253
27586
|
generatedAt: Date.now()
|
|
27254
27587
|
};
|
|
27255
|
-
if (options.redactor &&
|
|
27256
|
-
const redacted = await options.redactor.redactTextAsync(
|
|
27588
|
+
if (options.redactor && text15) {
|
|
27589
|
+
const redacted = await options.redactor.redactTextAsync(text15);
|
|
27257
27590
|
section.text = redacted.text;
|
|
27258
27591
|
}
|
|
27259
27592
|
if (!legitimateEmpty && !noEvidence) {
|
|
@@ -27478,9 +27811,9 @@ async function assembleMemoryContext(options) {
|
|
|
27478
27811
|
if (!refs.length) return [];
|
|
27479
27812
|
const rows = await loadFacts({ ...filters, memoryIds: refs.map((r) => r.memoryId) });
|
|
27480
27813
|
const byId = new Map(rows.filter(active).map((m) => [m.uniqueId, m]));
|
|
27481
|
-
return refs.flatMap((
|
|
27482
|
-
const m = byId.get(
|
|
27483
|
-
return m ? [asItem(m, "session",
|
|
27814
|
+
return refs.flatMap((ref2) => {
|
|
27815
|
+
const m = byId.get(ref2.memoryId);
|
|
27816
|
+
return m ? [asItem(m, "session", ref2.score)] : [];
|
|
27484
27817
|
});
|
|
27485
27818
|
},
|
|
27486
27819
|
[]
|
|
@@ -28242,7 +28575,7 @@ async function verifyFactSupport(items, options) {
|
|
|
28242
28575
|
}
|
|
28243
28576
|
const maxEvidenceChars = Math.max(1, options.maxEvidenceChars ?? DEFAULT_MAX_EVIDENCE_CHARS);
|
|
28244
28577
|
const redactor = resolvePiiRedactor(options.piiRedaction ?? true);
|
|
28245
|
-
const safe = async (
|
|
28578
|
+
const safe = async (text15) => redactor ? (await redactor.redactTextAsync(text15)).text : text15;
|
|
28246
28579
|
let truncatedCount = 0;
|
|
28247
28580
|
const parts = [];
|
|
28248
28581
|
for (const [i, item] of items.entries()) {
|
|
@@ -28358,7 +28691,7 @@ async function verifyMemoriesForPublish(memories, sources, options) {
|
|
|
28358
28691
|
);
|
|
28359
28692
|
const pending = [];
|
|
28360
28693
|
for (const { index, uniqueId, content, ids } of withinBudget) {
|
|
28361
|
-
const evidence = ids.map((id2) => resolved.get(id2) ?? null).filter((
|
|
28694
|
+
const evidence = ids.map((id2) => resolved.get(id2) ?? null).filter((text15) => text15 !== null);
|
|
28362
28695
|
const dropped = ids.length - evidence.length;
|
|
28363
28696
|
if (ids.some((id2) => unreadable.has(id2))) {
|
|
28364
28697
|
results[index] = {
|
|
@@ -29335,10 +29668,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
29335
29668
|
function lineHeightMm(fontSizePt) {
|
|
29336
29669
|
return ptToMm(fontSizePt) * lineHeight;
|
|
29337
29670
|
}
|
|
29338
|
-
function renderWrappedText(
|
|
29671
|
+
function renderWrappedText(text15, x, maxW, fontSizePt, fontStyle = "normal", fontFamily = "Helvetica") {
|
|
29339
29672
|
doc.setFont(fontFamily, fontStyle);
|
|
29340
29673
|
doc.setFontSize(fontSizePt);
|
|
29341
|
-
const lines = doc.splitTextToSize(
|
|
29674
|
+
const lines = doc.splitTextToSize(text15, maxW);
|
|
29342
29675
|
const lh = lineHeightMm(fontSizePt);
|
|
29343
29676
|
for (const line of lines) {
|
|
29344
29677
|
ensureSpace(lh);
|
|
@@ -29420,10 +29753,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
29420
29753
|
const lh = lineHeightMm(opts.fontSize);
|
|
29421
29754
|
for (let i = 0; i < items.length; i++) {
|
|
29422
29755
|
const prefix = ordered ? `${(listToken.start || 1) + i}. ` : "\u2022 ";
|
|
29423
|
-
const
|
|
29756
|
+
const text15 = tokensToPlainText(items[i].tokens);
|
|
29424
29757
|
ensureSpace(lh);
|
|
29425
29758
|
doc.text(prefix, opts.margins.left, cursorY);
|
|
29426
|
-
const listLines = doc.splitTextToSize(
|
|
29759
|
+
const listLines = doc.splitTextToSize(text15, itemW);
|
|
29427
29760
|
for (const line of listLines) {
|
|
29428
29761
|
ensureSpace(lh);
|
|
29429
29762
|
doc.text(line, indentX, cursorY);
|
|
@@ -29435,12 +29768,12 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
29435
29768
|
}
|
|
29436
29769
|
case "blockquote": {
|
|
29437
29770
|
const bqToken = token;
|
|
29438
|
-
const
|
|
29771
|
+
const text15 = tokensToPlainText(bqToken.tokens ?? []);
|
|
29439
29772
|
const indentX = opts.margins.left + SPACING.QUOTE_INDENT;
|
|
29440
29773
|
const quoteW = cw - SPACING.QUOTE_INSET;
|
|
29441
29774
|
doc.setFont("Helvetica", "italic");
|
|
29442
29775
|
doc.setFontSize(opts.fontSize);
|
|
29443
|
-
const bqLines = doc.splitTextToSize(
|
|
29776
|
+
const bqLines = doc.splitTextToSize(text15, quoteW);
|
|
29444
29777
|
const lh = lineHeightMm(opts.fontSize);
|
|
29445
29778
|
const blockH = bqLines.length * lh;
|
|
29446
29779
|
ensureSpace(Math.min(blockH, 20));
|
|
@@ -29476,8 +29809,8 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
29476
29809
|
doc.setFont("Helvetica", fontStyle);
|
|
29477
29810
|
doc.setFontSize(tableFontSize);
|
|
29478
29811
|
const cellLines = cells.map((cell) => {
|
|
29479
|
-
const
|
|
29480
|
-
return doc.splitTextToSize(
|
|
29812
|
+
const text15 = tokensToPlainText(cell.tokens);
|
|
29813
|
+
return doc.splitTextToSize(text15, cellContentW);
|
|
29481
29814
|
});
|
|
29482
29815
|
const maxLines = Math.max(1, ...cellLines.map((l) => l.length));
|
|
29483
29816
|
ensureSpace(maxLines * lh + SPACING.SM);
|
|
@@ -29709,13 +30042,13 @@ async function withPdfDocument(pdfDataUrl, fn) {
|
|
|
29709
30042
|
}
|
|
29710
30043
|
}
|
|
29711
30044
|
function joinPdfTextItems(items) {
|
|
29712
|
-
let
|
|
30045
|
+
let text15 = "";
|
|
29713
30046
|
for (const item of items) {
|
|
29714
30047
|
if (!("str" in item)) continue;
|
|
29715
30048
|
const { str, hasEOL } = item;
|
|
29716
|
-
|
|
30049
|
+
text15 += str + (hasEOL ? "\n" : " ");
|
|
29717
30050
|
}
|
|
29718
|
-
return
|
|
30051
|
+
return text15.replace(/[ \t]+\n/g, "\n").trim();
|
|
29719
30052
|
}
|
|
29720
30053
|
function computeRenderScale(width, height) {
|
|
29721
30054
|
const longest = Math.max(width, height);
|
|
@@ -29735,7 +30068,7 @@ async function extractPdfPageTexts(pdfDataUrl) {
|
|
|
29735
30068
|
}
|
|
29736
30069
|
async function extractTextFromPdf(pdfDataUrl) {
|
|
29737
30070
|
const pageTexts = await extractPdfPageTexts(pdfDataUrl);
|
|
29738
|
-
return pageTexts.filter((
|
|
30071
|
+
return pageTexts.filter((text15) => text15.trim()).join("\n\n");
|
|
29739
30072
|
}
|
|
29740
30073
|
async function renderPdfPages(pdfDataUrl, maxPages, pageNumbers) {
|
|
29741
30074
|
return withPdfDocument(pdfDataUrl, async (pdf) => {
|
|
@@ -29777,8 +30110,8 @@ var MAX_IMAGE_PAGES = 20;
|
|
|
29777
30110
|
var MIN_PAGE_TEXT_CHARS = 20;
|
|
29778
30111
|
function selectPdfImagePages(pageTexts, maxImagePages = MAX_IMAGE_PAGES) {
|
|
29779
30112
|
const needImage = [];
|
|
29780
|
-
pageTexts.forEach((
|
|
29781
|
-
if (
|
|
30113
|
+
pageTexts.forEach((text15, index) => {
|
|
30114
|
+
if (text15.trim().length < MIN_PAGE_TEXT_CHARS) needImage.push(index + 1);
|
|
29782
30115
|
});
|
|
29783
30116
|
const limit = Math.max(0, maxImagePages);
|
|
29784
30117
|
return { rendered: needImage.slice(0, limit), omitted: needImage.slice(limit) };
|
|
@@ -29837,10 +30170,10 @@ var PdfProcessor = class {
|
|
|
29837
30170
|
textError
|
|
29838
30171
|
);
|
|
29839
30172
|
}
|
|
29840
|
-
const
|
|
30173
|
+
const text15 = (pageTexts ?? []).filter((t) => t.trim()).join("\n\n");
|
|
29841
30174
|
const { rendered, omitted } = pageTexts ? selectPdfImagePages(pageTexts) : { rendered: [], omitted: [] };
|
|
29842
30175
|
if (pageTexts && rendered.length === 0 && omitted.length === 0) {
|
|
29843
|
-
return
|
|
30176
|
+
return text15.trim() ? { extractedText: text15, format: "plain" } : null;
|
|
29844
30177
|
}
|
|
29845
30178
|
let renderedPages;
|
|
29846
30179
|
let pageCount = pageTexts?.length;
|
|
@@ -29853,7 +30186,7 @@ var PdfProcessor = class {
|
|
|
29853
30186
|
pageCount = result.pageCount;
|
|
29854
30187
|
}
|
|
29855
30188
|
} catch (imageError) {
|
|
29856
|
-
if (!
|
|
30189
|
+
if (!text15.trim()) {
|
|
29857
30190
|
logger.error("[PdfProcessor] Image conversion also failed:", imageError);
|
|
29858
30191
|
throw imageError;
|
|
29859
30192
|
}
|
|
@@ -29865,7 +30198,7 @@ var PdfProcessor = class {
|
|
|
29865
30198
|
const included = new Set(imagePages);
|
|
29866
30199
|
const needImage = pageTexts ? [...rendered, ...omitted] : Array.from({ length: pageCount ?? 0 }, (_, i) => i + 1);
|
|
29867
30200
|
const omittedPages = needImage.filter((n) => !included.has(n)).sort((a, b) => a - b);
|
|
29868
|
-
if (images.length === 0 && !
|
|
30201
|
+
if (images.length === 0 && !text15.trim()) {
|
|
29869
30202
|
logger.warn("[PdfProcessor] Image conversion also returned empty");
|
|
29870
30203
|
return null;
|
|
29871
30204
|
}
|
|
@@ -29874,9 +30207,9 @@ var PdfProcessor = class {
|
|
|
29874
30207
|
);
|
|
29875
30208
|
const imageNote = buildPdfImageNote(file.name, imagePages, omittedPages, pageCount);
|
|
29876
30209
|
return {
|
|
29877
|
-
extractedText:
|
|
30210
|
+
extractedText: text15.trim() ? `${imageNote}
|
|
29878
30211
|
|
|
29879
|
-
${
|
|
30212
|
+
${text15}` : imageNote,
|
|
29880
30213
|
format: "plain",
|
|
29881
30214
|
imageDataUrls: images.length > 0 ? images : void 0,
|
|
29882
30215
|
metadata: {
|
|
@@ -30042,16 +30375,16 @@ var TextProcessor = class {
|
|
|
30042
30375
|
async process(file) {
|
|
30043
30376
|
try {
|
|
30044
30377
|
const arrayBuffer = await dataUrlToArrayBuffer(file.dataUrl);
|
|
30045
|
-
const
|
|
30046
|
-
if (!
|
|
30378
|
+
const text15 = decodeText(new Uint8Array(arrayBuffer));
|
|
30379
|
+
if (!text15.trim()) {
|
|
30047
30380
|
return null;
|
|
30048
30381
|
}
|
|
30049
30382
|
return {
|
|
30050
|
-
extractedText:
|
|
30383
|
+
extractedText: text15,
|
|
30051
30384
|
format: this.resolveFormat(file),
|
|
30052
30385
|
metadata: {
|
|
30053
30386
|
byteLength: arrayBuffer.byteLength,
|
|
30054
|
-
characterCount:
|
|
30387
|
+
characterCount: text15.length
|
|
30055
30388
|
}
|
|
30056
30389
|
};
|
|
30057
30390
|
} catch (error) {
|
|
@@ -30113,8 +30446,8 @@ var WordProcessor = class {
|
|
|
30113
30446
|
/**
|
|
30114
30447
|
* Count words in text
|
|
30115
30448
|
*/
|
|
30116
|
-
countWords(
|
|
30117
|
-
return
|
|
30449
|
+
countWords(text15) {
|
|
30450
|
+
return text15.split(/\s+/).filter((w) => w.length > 0).length;
|
|
30118
30451
|
}
|
|
30119
30452
|
};
|
|
30120
30453
|
|
|
@@ -30352,13 +30685,13 @@ function truncationMarker2(kept, total, fileName) {
|
|
|
30352
30685
|
return `
|
|
30353
30686
|
[truncated: showing the first ${kept} of ${total} characters of ${fileName}]`;
|
|
30354
30687
|
}
|
|
30355
|
-
function truncateText(
|
|
30356
|
-
if (
|
|
30688
|
+
function truncateText(text15, limit, fileName) {
|
|
30689
|
+
if (text15.length <= limit) return { text: text15, truncated: false };
|
|
30357
30690
|
let end = Math.max(0, limit);
|
|
30358
|
-
const code =
|
|
30691
|
+
const code = text15.charCodeAt(end - 1);
|
|
30359
30692
|
if (end > 0 && code >= 55296 && code <= 56319) end--;
|
|
30360
30693
|
return {
|
|
30361
|
-
text: `${
|
|
30694
|
+
text: `${text15.slice(0, end)}${truncationMarker2(end, text15.length, fileName)}`,
|
|
30362
30695
|
truncated: true
|
|
30363
30696
|
};
|
|
30364
30697
|
}
|
|
@@ -30523,13 +30856,13 @@ async function preprocessFiles(files, options = {}) {
|
|
|
30523
30856
|
Math.max(0, MAX_TOTAL_IMAGES - allImageUrls.length)
|
|
30524
30857
|
);
|
|
30525
30858
|
allImageUrls.push(...images.slice(0, keptImages));
|
|
30526
|
-
const
|
|
30527
|
-
const fitsWhole =
|
|
30528
|
-
const limit = fitsWhole ?
|
|
30859
|
+
const text15 = rewriteImageNote(result, file.name, keptImages);
|
|
30860
|
+
const fitsWhole = text15.length <= Math.min(maxExtractedCharsPerFile, remaining);
|
|
30861
|
+
const limit = fitsWhole ? text15.length : Math.min(
|
|
30529
30862
|
maxExtractedCharsPerFile,
|
|
30530
|
-
remaining - truncationMarker2(
|
|
30863
|
+
remaining - truncationMarker2(text15.length, text15.length, file.name).length
|
|
30531
30864
|
);
|
|
30532
|
-
const capped = truncateText(
|
|
30865
|
+
const capped = truncateText(text15, Math.max(0, limit), file.name);
|
|
30533
30866
|
const formattedContent = formatExtractedContent(file.name, capped.text, result.format);
|
|
30534
30867
|
totalChars += separatorLength + formattedContent.length;
|
|
30535
30868
|
extractedTexts.push(formattedContent);
|
|
@@ -30633,9 +30966,9 @@ async function autoFilterClientTools(clientTools, promptEmbeddings, cache, embed
|
|
|
30633
30966
|
if (toolsNeedingEmbeddings.length > 0) {
|
|
30634
30967
|
try {
|
|
30635
30968
|
const descriptions = toolsNeedingEmbeddings.map((t) => t.description);
|
|
30636
|
-
const
|
|
30969
|
+
const embeddings2 = await generateEmbeddings(descriptions, embeddingOptions);
|
|
30637
30970
|
for (let i = 0; i < toolsNeedingEmbeddings.length; i++) {
|
|
30638
|
-
cache.set(toolsNeedingEmbeddings[i].name,
|
|
30971
|
+
cache.set(toolsNeedingEmbeddings[i].name, embeddings2[i]);
|
|
30639
30972
|
}
|
|
30640
30973
|
} catch {
|
|
30641
30974
|
return { tools: clientTools, activatedSetNames: /* @__PURE__ */ new Set(), matchedSetNames: /* @__PURE__ */ new Set() };
|
|
@@ -30772,11 +31105,11 @@ function createGetAuthenticatedUserTool(getAccessToken, requestAccess) {
|
|
|
30772
31105
|
};
|
|
30773
31106
|
}
|
|
30774
31107
|
var MAX_RESPONSE_SIZE = 1e5;
|
|
30775
|
-
function truncate(
|
|
30776
|
-
if (
|
|
30777
|
-
return
|
|
31108
|
+
function truncate(text15, maxLen) {
|
|
31109
|
+
if (text15.length <= maxLen) return text15;
|
|
31110
|
+
return text15.slice(0, maxLen) + `
|
|
30778
31111
|
|
|
30779
|
-
... (truncated, ${
|
|
31112
|
+
... (truncated, ${text15.length - maxLen} characters omitted)`;
|
|
30780
31113
|
}
|
|
30781
31114
|
function createGitHubApiTool(getAccessToken, requestAccess) {
|
|
30782
31115
|
return {
|
|
@@ -30824,16 +31157,16 @@ IMPORTANT: For write operations (POST, PUT, PATCH, DELETE), always confirm with
|
|
|
30824
31157
|
method,
|
|
30825
31158
|
body: body ? JSON.stringify(body) : void 0
|
|
30826
31159
|
});
|
|
30827
|
-
const
|
|
31160
|
+
const text15 = await resp.text();
|
|
30828
31161
|
if (!resp.ok) {
|
|
30829
|
-
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(
|
|
31162
|
+
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(text15, 500)}`;
|
|
30830
31163
|
}
|
|
30831
31164
|
try {
|
|
30832
|
-
const data = JSON.parse(
|
|
31165
|
+
const data = JSON.parse(text15);
|
|
30833
31166
|
const json5 = JSON.stringify(data);
|
|
30834
31167
|
return truncate(json5, MAX_RESPONSE_SIZE);
|
|
30835
31168
|
} catch {
|
|
30836
|
-
return truncate(
|
|
31169
|
+
return truncate(text15, MAX_RESPONSE_SIZE);
|
|
30837
31170
|
}
|
|
30838
31171
|
} catch (err) {
|
|
30839
31172
|
if (err instanceof DOMException && err.name === "AbortError") {
|
|
@@ -31495,10 +31828,10 @@ function formatObjectAttr(obj) {
|
|
|
31495
31828
|
});
|
|
31496
31829
|
return `{ ${entries.join(", ")} }`;
|
|
31497
31830
|
}
|
|
31498
|
-
function isSafeJsxText(
|
|
31499
|
-
if (/[<>{}&]/.test(
|
|
31500
|
-
if (/\n/.test(
|
|
31501
|
-
if (/^\s|\s$/.test(
|
|
31831
|
+
function isSafeJsxText(text15) {
|
|
31832
|
+
if (/[<>{}&]/.test(text15)) return false;
|
|
31833
|
+
if (/\n/.test(text15)) return false;
|
|
31834
|
+
if (/^\s|\s$/.test(text15)) return false;
|
|
31502
31835
|
return true;
|
|
31503
31836
|
}
|
|
31504
31837
|
function getId(node) {
|
|
@@ -33719,9 +34052,9 @@ New lines of conversation:
|
|
|
33719
34052
|
{new_lines}
|
|
33720
34053
|
|
|
33721
34054
|
New summary:`;
|
|
33722
|
-
function estimateTokens(
|
|
33723
|
-
if (!
|
|
33724
|
-
return Math.ceil(
|
|
34055
|
+
function estimateTokens(text15) {
|
|
34056
|
+
if (!text15) return 0;
|
|
34057
|
+
return Math.ceil(text15.length / 4);
|
|
33725
34058
|
}
|
|
33726
34059
|
var PER_MESSAGE_OVERHEAD_TOKENS = 4;
|
|
33727
34060
|
var MAX_MESSAGES_PER_SUMMARIZATION = 20;
|
|
@@ -33781,14 +34114,14 @@ function splitMessagesAtThreshold(messages, tokenThreshold, minWindowMessages) {
|
|
|
33781
34114
|
}
|
|
33782
34115
|
async function redactSummaryPrompt(prompt, redactor, onPiiRedacted) {
|
|
33783
34116
|
if (!redactor) return prompt;
|
|
33784
|
-
const { text:
|
|
34117
|
+
const { text: text15, matches } = await redactor.redactTextAsync(prompt);
|
|
33785
34118
|
if (matches.length > 0 && onPiiRedacted) {
|
|
33786
34119
|
try {
|
|
33787
34120
|
onPiiRedacted(matches);
|
|
33788
34121
|
} catch {
|
|
33789
34122
|
}
|
|
33790
34123
|
}
|
|
33791
|
-
return
|
|
34124
|
+
return text15;
|
|
33792
34125
|
}
|
|
33793
34126
|
async function progressiveSummarize(options) {
|
|
33794
34127
|
const {
|
|
@@ -34750,11 +35083,11 @@ function useChatStorage(options) {
|
|
|
34750
35083
|
[piiRedaction, currentConversationId]
|
|
34751
35084
|
);
|
|
34752
35085
|
const maskForEmbedding = (0, import_react6.useCallback)(
|
|
34753
|
-
(
|
|
35086
|
+
(text15) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text15) : text15,
|
|
34754
35087
|
[resolvedPiiRedaction]
|
|
34755
35088
|
);
|
|
34756
35089
|
const maskEmbeddingInput = (0, import_react6.useMemo)(
|
|
34757
|
-
() => isPiiRedactor(resolvedPiiRedaction) ? (
|
|
35090
|
+
() => isPiiRedactor(resolvedPiiRedaction) ? (text15) => resolvedPiiRedaction.maskText(text15) : void 0,
|
|
34758
35091
|
[resolvedPiiRedaction]
|
|
34759
35092
|
);
|
|
34760
35093
|
const vaultEmbeddingOptions = (0, import_react6.useMemo)(
|
|
@@ -35010,10 +35343,10 @@ function useChatStorage(options) {
|
|
|
35010
35343
|
if (shouldChunkMessage(message.content, DEFAULT_CHUNK_SIZE)) {
|
|
35011
35344
|
const textChunks = chunkText(message.content);
|
|
35012
35345
|
const chunkTexts = textChunks.map((c) => mask(c.text));
|
|
35013
|
-
const
|
|
35346
|
+
const embeddings2 = await generateEmbeddings(chunkTexts, embeddingOptions);
|
|
35014
35347
|
const messageChunks = textChunks.map((chunk, i) => ({
|
|
35015
35348
|
text: chunk.text,
|
|
35016
|
-
vector:
|
|
35349
|
+
vector: embeddings2[i],
|
|
35017
35350
|
startOffset: chunk.startOffset,
|
|
35018
35351
|
endOffset: chunk.endOffset
|
|
35019
35352
|
}));
|
|
@@ -35559,7 +35892,7 @@ function useChatStorage(options) {
|
|
|
35559
35892
|
return {
|
|
35560
35893
|
callRedactor: redactor,
|
|
35561
35894
|
callPiiRedaction: forInnerSend,
|
|
35562
|
-
maskForCall: (
|
|
35895
|
+
maskForCall: (text15) => redactor ? redactor.maskText(text15) : text15
|
|
35563
35896
|
};
|
|
35564
35897
|
};
|
|
35565
35898
|
const resolveThoughtProcess = () => finalizeThoughtProcess(getThoughtProcess?.() || thoughtProcess);
|
|
@@ -37631,13 +37964,13 @@ function useOCR() {
|
|
|
37631
37964
|
const result = await import_tesseract.default.recognize(image, language);
|
|
37632
37965
|
pageTexts.push(result.data.text);
|
|
37633
37966
|
}
|
|
37634
|
-
const
|
|
37635
|
-
if (!
|
|
37967
|
+
const text15 = pageTexts.join("\n\n");
|
|
37968
|
+
if (!text15.trim()) {
|
|
37636
37969
|
getLogger().warn(`No text found in OCR source ${filename || "unknown"}`);
|
|
37637
37970
|
return null;
|
|
37638
37971
|
}
|
|
37639
37972
|
return `[Context from OCR attachment ${filename || "unknown"}]:
|
|
37640
|
-
${
|
|
37973
|
+
${text15}`;
|
|
37641
37974
|
} catch (err) {
|
|
37642
37975
|
getLogger().error(`Failed to process OCR for ${file.filename || "unknown"}:`, err);
|
|
37643
37976
|
return null;
|
|
@@ -37681,13 +38014,13 @@ function usePdf() {
|
|
|
37681
38014
|
const contexts = await Promise.all(
|
|
37682
38015
|
pdfFiles.map(async (file) => {
|
|
37683
38016
|
try {
|
|
37684
|
-
const
|
|
37685
|
-
if (!
|
|
38017
|
+
const text15 = await extractTextFromPdf(file.url);
|
|
38018
|
+
if (!text15.trim()) {
|
|
37686
38019
|
getLogger().warn(`No text found in PDF ${file.filename}`);
|
|
37687
38020
|
return null;
|
|
37688
38021
|
}
|
|
37689
38022
|
return `[Context from PDF attachment ${file.filename}]:
|
|
37690
|
-
${
|
|
38023
|
+
${text15}`;
|
|
37691
38024
|
} catch (err) {
|
|
37692
38025
|
getLogger().error(`Failed to process PDF ${file.filename}:`, err);
|
|
37693
38026
|
return null;
|
|
@@ -39216,14 +39549,14 @@ function useVoice(options) {
|
|
|
39216
39549
|
recognition.interimResults = false;
|
|
39217
39550
|
recognition.lang = options?.language ?? "";
|
|
39218
39551
|
recognition.onresult = (event) => {
|
|
39219
|
-
let
|
|
39552
|
+
let text15 = "";
|
|
39220
39553
|
for (let i = 0; i < event.results.length; i++) {
|
|
39221
39554
|
const result = event.results[i];
|
|
39222
39555
|
if (result && result.isFinal && result[0]) {
|
|
39223
|
-
|
|
39556
|
+
text15 += result[0].transcript + " ";
|
|
39224
39557
|
}
|
|
39225
39558
|
}
|
|
39226
|
-
nativeTextRef.current =
|
|
39559
|
+
nativeTextRef.current = text15.trim();
|
|
39227
39560
|
};
|
|
39228
39561
|
recognition.onerror = (event) => {
|
|
39229
39562
|
if (event.error !== "aborted" && event.error !== "no-speech") {
|