@anuma/sdk 6.35.0 → 6.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/expo/index.cjs +945 -219
- package/dist/expo/index.d.mts +103 -1
- package/dist/expo/index.d.ts +103 -1
- package/dist/expo/index.mjs +945 -227
- package/dist/index.cjs +150 -74
- package/dist/index.d.mts +30 -1
- package/dist/index.d.ts +30 -1
- package/dist/index.mjs +149 -74
- package/dist/react/index.cjs +980 -254
- package/dist/react/index.d.mts +103 -1
- package/dist/react/index.d.ts +103 -1
- package/dist/react/index.mjs +980 -262
- package/dist/server/index.cjs +43 -1
- package/dist/server/index.mjs +43 -1
- package/dist/tools/index.cjs +74 -12
- package/dist/tools/index.d.mts +16 -3
- package/dist/tools/index.d.ts +16 -3
- package/dist/tools/index.mjs +73 -12
- package/package.json +1 -1
package/dist/react/index.mjs
CHANGED
|
@@ -89,9 +89,9 @@ function createSseClient({
|
|
|
89
89
|
if (done) break;
|
|
90
90
|
buffer += value;
|
|
91
91
|
buffer = buffer.replace(/\r\n?/g, "\n");
|
|
92
|
-
const
|
|
93
|
-
buffer =
|
|
94
|
-
for (const chunk of
|
|
92
|
+
const chunks2 = buffer.split("\n\n");
|
|
93
|
+
buffer = chunks2.pop() ?? "";
|
|
94
|
+
for (const chunk of chunks2) {
|
|
95
95
|
const lines = chunk.split("\n");
|
|
96
96
|
const dataLines = [];
|
|
97
97
|
let eventName;
|
|
@@ -704,8 +704,8 @@ var createClient = (config = {}) => {
|
|
|
704
704
|
data = await response[parseAs]();
|
|
705
705
|
break;
|
|
706
706
|
case "json": {
|
|
707
|
-
const
|
|
708
|
-
data =
|
|
707
|
+
const text13 = await response.text();
|
|
708
|
+
data = text13 ? JSON.parse(text13) : {};
|
|
709
709
|
break;
|
|
710
710
|
}
|
|
711
711
|
case "stream":
|
|
@@ -3977,8 +3977,8 @@ var ATTACHED_FILES_OPEN_TAG = "<attached_files>";
|
|
|
3977
3977
|
var ATTACHED_FILES_CLOSE_TAG = "</attached_files>";
|
|
3978
3978
|
var ATTACHED_FILES_PREFIX = `${ATTACHED_FILES_OPEN_TAG}
|
|
3979
3979
|
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.`;
|
|
3980
|
-
function isAttachedFilesText(
|
|
3981
|
-
return typeof
|
|
3980
|
+
function isAttachedFilesText(text13) {
|
|
3981
|
+
return typeof text13 === "string" && text13.startsWith(ATTACHED_FILES_PREFIX) && text13.endsWith(ATTACHED_FILES_CLOSE_TAG);
|
|
3982
3982
|
}
|
|
3983
3983
|
function buildAttachedFilesText(fileContext) {
|
|
3984
3984
|
return `${ATTACHED_FILES_PREFIX}
|
|
@@ -4731,14 +4731,14 @@ async function updateMessageEmbeddingOp(ctx, uniqueId, vector, embeddingModel) {
|
|
|
4731
4731
|
});
|
|
4732
4732
|
return messageToStored(message, ctx.walletAddress, ctx.signMessage, ctx.embeddedWalletSigner);
|
|
4733
4733
|
}
|
|
4734
|
-
async function updateMessageChunksOp(ctx, uniqueId,
|
|
4734
|
+
async function updateMessageChunksOp(ctx, uniqueId, chunks2, embeddingModel) {
|
|
4735
4735
|
let message;
|
|
4736
4736
|
try {
|
|
4737
4737
|
message = await ctx.messagesCollection.find(uniqueId);
|
|
4738
4738
|
} catch {
|
|
4739
4739
|
return null;
|
|
4740
4740
|
}
|
|
4741
|
-
const storedChunks =
|
|
4741
|
+
const storedChunks = chunks2.map(({ text: _text, ...rest }) => rest);
|
|
4742
4742
|
await ctx.database.write(async () => {
|
|
4743
4743
|
await message.update((msg) => {
|
|
4744
4744
|
msg._setRaw("chunks", JSON.stringify(storedChunks));
|
|
@@ -4782,12 +4782,12 @@ async function stripLegacyChunkTextOp(ctx) {
|
|
|
4782
4782
|
const messages = await ctx.messagesCollection.query(Q.where("id", Q.oneOf(changedIds))).fetch();
|
|
4783
4783
|
const updates = messages.flatMap((message) => {
|
|
4784
4784
|
const raw = message._raw;
|
|
4785
|
-
const
|
|
4786
|
-
if (!
|
|
4785
|
+
const chunks2 = chunksWithoutText(raw.chunks);
|
|
4786
|
+
if (!chunks2) return [];
|
|
4787
4787
|
const updatedAt = raw.updated_at;
|
|
4788
4788
|
return [
|
|
4789
4789
|
message.prepareUpdate((msg) => {
|
|
4790
|
-
msg._setRaw("chunks", JSON.stringify(
|
|
4790
|
+
msg._setRaw("chunks", JSON.stringify(chunks2));
|
|
4791
4791
|
msg._setRaw("updated_at", updatedAt);
|
|
4792
4792
|
})
|
|
4793
4793
|
];
|
|
@@ -4997,15 +4997,15 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
4997
4997
|
}
|
|
4998
4998
|
continue;
|
|
4999
4999
|
}
|
|
5000
|
-
const
|
|
5001
|
-
if (
|
|
5002
|
-
const vectors =
|
|
5000
|
+
const chunks2 = await readRawJsonField(message, "chunks", ctx.walletAddress);
|
|
5001
|
+
if (chunks2 && chunks2.length > 0) {
|
|
5002
|
+
const vectors = chunks2.map(
|
|
5003
5003
|
(chunk) => decodeChunkVector(chunk.vector, () => {
|
|
5004
5004
|
unreadableVectors++;
|
|
5005
5005
|
})
|
|
5006
5006
|
);
|
|
5007
5007
|
chunkCache?.set(message.id, { version, chunks: vectors });
|
|
5008
|
-
for (let ci = 0; ci <
|
|
5008
|
+
for (let ci = 0; ci < chunks2.length; ci++) {
|
|
5009
5009
|
const vec = vectors[ci];
|
|
5010
5010
|
if (vec.length === 0) continue;
|
|
5011
5011
|
const similarity = cosineSimilarity(queryVector, vec);
|
|
@@ -5013,7 +5013,7 @@ async function searchChunksOp(ctx, queryVector, options) {
|
|
|
5013
5013
|
candidates.push({
|
|
5014
5014
|
message,
|
|
5015
5015
|
similarity,
|
|
5016
|
-
chunkTextSource: { kind: "chunk", chunk:
|
|
5016
|
+
chunkTextSource: { kind: "chunk", chunk: chunks2[ci], siblings: chunks2 }
|
|
5017
5017
|
});
|
|
5018
5018
|
}
|
|
5019
5019
|
}
|
|
@@ -5154,49 +5154,49 @@ function makeSyntheticStoredConversation(opts, defaultTitle) {
|
|
|
5154
5154
|
var DEFAULT_CHUNK_SIZE = 400;
|
|
5155
5155
|
var DEFAULT_CHUNK_OVERLAP = 50;
|
|
5156
5156
|
var DEFAULT_MIN_CHUNK_SIZE = 50;
|
|
5157
|
-
function splitIntoSentences(
|
|
5157
|
+
function splitIntoSentences(text13) {
|
|
5158
5158
|
const sentenceRegex = /[.!?]+[\s"')}\]]*(?=\s|$)/g;
|
|
5159
5159
|
const sentences = [];
|
|
5160
5160
|
let lastIndex = 0;
|
|
5161
5161
|
let match;
|
|
5162
|
-
while ((match = sentenceRegex.exec(
|
|
5162
|
+
while ((match = sentenceRegex.exec(text13)) !== null) {
|
|
5163
5163
|
const endIndex = match.index + match[0].length;
|
|
5164
|
-
const sentence =
|
|
5164
|
+
const sentence = text13.slice(lastIndex, endIndex).trim();
|
|
5165
5165
|
if (sentence) {
|
|
5166
5166
|
sentences.push(sentence);
|
|
5167
5167
|
}
|
|
5168
5168
|
lastIndex = endIndex;
|
|
5169
5169
|
}
|
|
5170
|
-
const remaining =
|
|
5170
|
+
const remaining = text13.slice(lastIndex).trim();
|
|
5171
5171
|
if (remaining) {
|
|
5172
5172
|
sentences.push(remaining);
|
|
5173
5173
|
}
|
|
5174
5174
|
return sentences;
|
|
5175
5175
|
}
|
|
5176
|
-
function chunkText(
|
|
5176
|
+
function chunkText(text13, options) {
|
|
5177
5177
|
const {
|
|
5178
5178
|
chunkSize = DEFAULT_CHUNK_SIZE,
|
|
5179
5179
|
chunkOverlap: requestedOverlap = DEFAULT_CHUNK_OVERLAP,
|
|
5180
5180
|
minChunkSize = DEFAULT_MIN_CHUNK_SIZE
|
|
5181
5181
|
} = options ?? {};
|
|
5182
5182
|
const chunkOverlap = Math.min(requestedOverlap, chunkSize - 1);
|
|
5183
|
-
if (
|
|
5183
|
+
if (text13.length <= chunkSize) {
|
|
5184
5184
|
return [
|
|
5185
5185
|
{
|
|
5186
|
-
text:
|
|
5186
|
+
text: text13.trim(),
|
|
5187
5187
|
startOffset: 0,
|
|
5188
|
-
endOffset:
|
|
5188
|
+
endOffset: text13.length
|
|
5189
5189
|
}
|
|
5190
5190
|
];
|
|
5191
5191
|
}
|
|
5192
|
-
const sentences = splitIntoSentences(
|
|
5193
|
-
const
|
|
5192
|
+
const sentences = splitIntoSentences(text13);
|
|
5193
|
+
const chunks2 = [];
|
|
5194
5194
|
let currentChunkSentences = [];
|
|
5195
5195
|
let currentChunkStart = 0;
|
|
5196
5196
|
let currentOffset = 0;
|
|
5197
5197
|
for (let i = 0; i < sentences.length; i++) {
|
|
5198
5198
|
const sentence = sentences[i];
|
|
5199
|
-
let sentenceStart =
|
|
5199
|
+
let sentenceStart = text13.indexOf(sentence, currentOffset);
|
|
5200
5200
|
if (sentenceStart === -1) {
|
|
5201
5201
|
sentenceStart = currentOffset;
|
|
5202
5202
|
}
|
|
@@ -5204,7 +5204,7 @@ function chunkText(text12, options) {
|
|
|
5204
5204
|
if (sentence.length > chunkSize) {
|
|
5205
5205
|
if (currentChunkSentences.length > 0) {
|
|
5206
5206
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
5207
|
-
|
|
5207
|
+
chunks2.push({
|
|
5208
5208
|
text: chunkText2,
|
|
5209
5209
|
startOffset: currentChunkStart,
|
|
5210
5210
|
endOffset: currentOffset
|
|
@@ -5215,7 +5215,7 @@ function chunkText(text12, options) {
|
|
|
5215
5215
|
const chunkEnd = Math.min(j + chunkSize, sentence.length);
|
|
5216
5216
|
const chunk = sentence.slice(j, chunkEnd);
|
|
5217
5217
|
if (chunk.length >= minChunkSize) {
|
|
5218
|
-
|
|
5218
|
+
chunks2.push({
|
|
5219
5219
|
text: chunk,
|
|
5220
5220
|
startOffset: sentenceStart + j,
|
|
5221
5221
|
endOffset: sentenceStart + chunkEnd
|
|
@@ -5229,7 +5229,7 @@ function chunkText(text12, options) {
|
|
|
5229
5229
|
const currentText = currentChunkSentences.join(" ");
|
|
5230
5230
|
const potentialLength = currentText.length + (currentText ? 1 : 0) + sentence.length;
|
|
5231
5231
|
if (potentialLength > chunkSize && currentChunkSentences.length > 0) {
|
|
5232
|
-
|
|
5232
|
+
chunks2.push({
|
|
5233
5233
|
text: currentText,
|
|
5234
5234
|
startOffset: currentChunkStart,
|
|
5235
5235
|
endOffset: currentOffset
|
|
@@ -5243,7 +5243,7 @@ function chunkText(text12, options) {
|
|
|
5243
5243
|
if (overlapSentences.length > 0) {
|
|
5244
5244
|
currentChunkSentences = [...overlapSentences, sentence];
|
|
5245
5245
|
const overlapText = overlapSentences[0];
|
|
5246
|
-
const overlapStart =
|
|
5246
|
+
const overlapStart = text13.lastIndexOf(overlapText, currentOffset);
|
|
5247
5247
|
currentChunkStart = overlapStart === -1 ? sentenceStart : overlapStart;
|
|
5248
5248
|
} else {
|
|
5249
5249
|
currentChunkSentences = [sentence];
|
|
@@ -5260,26 +5260,26 @@ function chunkText(text12, options) {
|
|
|
5260
5260
|
if (currentChunkSentences.length > 0) {
|
|
5261
5261
|
const chunkText2 = currentChunkSentences.join(" ");
|
|
5262
5262
|
if (chunkText2.length >= minChunkSize) {
|
|
5263
|
-
|
|
5263
|
+
chunks2.push({
|
|
5264
5264
|
text: chunkText2,
|
|
5265
5265
|
startOffset: currentChunkStart,
|
|
5266
|
-
endOffset:
|
|
5266
|
+
endOffset: text13.length
|
|
5267
5267
|
});
|
|
5268
5268
|
}
|
|
5269
5269
|
}
|
|
5270
|
-
if (
|
|
5271
|
-
const trimmedText =
|
|
5270
|
+
if (chunks2.length === 0) {
|
|
5271
|
+
const trimmedText = text13.trim();
|
|
5272
5272
|
if (trimmedText.length > 0) {
|
|
5273
5273
|
return [
|
|
5274
5274
|
{
|
|
5275
5275
|
text: trimmedText,
|
|
5276
5276
|
startOffset: 0,
|
|
5277
|
-
endOffset:
|
|
5277
|
+
endOffset: text13.length
|
|
5278
5278
|
}
|
|
5279
5279
|
];
|
|
5280
5280
|
}
|
|
5281
5281
|
}
|
|
5282
|
-
return
|
|
5282
|
+
return chunks2;
|
|
5283
5283
|
}
|
|
5284
5284
|
function shouldChunkMessage(content, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
5285
5285
|
return content.length > chunkSize;
|
|
@@ -5374,16 +5374,16 @@ function embeddingErrorFrom(response) {
|
|
|
5374
5374
|
const message = typeof response.error === "object" && response.error && "error" in response.error ? response.error.error : "API embedding failed";
|
|
5375
5375
|
return new EmbeddingHttpError(message, response.response?.status);
|
|
5376
5376
|
}
|
|
5377
|
-
async function generateEmbedding(
|
|
5377
|
+
async function generateEmbedding(text13, options) {
|
|
5378
5378
|
const total = options.totalTimeoutMs;
|
|
5379
|
-
if (total === void 0) return embedOne(
|
|
5380
|
-
return withDeadline((signal) => embedOne(
|
|
5379
|
+
if (total === void 0) return embedOne(text13, options, void 0);
|
|
5380
|
+
return withDeadline((signal) => embedOne(text13, options, signal), total, "embedding");
|
|
5381
5381
|
}
|
|
5382
|
-
async function embedOne(
|
|
5382
|
+
async function embedOne(text13, options, outer) {
|
|
5383
5383
|
const { baseUrl = BASE_URL, model, cache } = options;
|
|
5384
5384
|
const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
|
|
5385
5385
|
if (cache) {
|
|
5386
|
-
const cached = cache.get(
|
|
5386
|
+
const cached = cache.get(text13);
|
|
5387
5387
|
if (cached) return Array.from(cached);
|
|
5388
5388
|
}
|
|
5389
5389
|
const headers = await resolveAuthHeaders(options, outer);
|
|
@@ -5392,7 +5392,7 @@ async function embedOne(text12, options, outer) {
|
|
|
5392
5392
|
(signal) => postApiV1Embeddings({
|
|
5393
5393
|
baseUrl,
|
|
5394
5394
|
body: {
|
|
5395
|
-
input: options.maskInput ? options.maskInput(
|
|
5395
|
+
input: options.maskInput ? options.maskInput(text13) : text13,
|
|
5396
5396
|
model: model ?? DEFAULT_API_EMBEDDING_MODEL
|
|
5397
5397
|
},
|
|
5398
5398
|
headers,
|
|
@@ -5419,7 +5419,7 @@ async function embedOne(text12, options, outer) {
|
|
|
5419
5419
|
}
|
|
5420
5420
|
const f32Embedding = Float32Array.from(embedding);
|
|
5421
5421
|
if (cache) {
|
|
5422
|
-
cache.set(
|
|
5422
|
+
cache.set(text13, f32Embedding);
|
|
5423
5423
|
}
|
|
5424
5424
|
return Array.from(f32Embedding);
|
|
5425
5425
|
}
|
|
@@ -5497,18 +5497,18 @@ async function embedMany(texts, options, outer) {
|
|
|
5497
5497
|
outer
|
|
5498
5498
|
);
|
|
5499
5499
|
} else {
|
|
5500
|
-
const
|
|
5500
|
+
const chunks2 = [];
|
|
5501
5501
|
for (let i = 0; i < uncachedTexts.length; i += chunkSize) {
|
|
5502
|
-
|
|
5502
|
+
chunks2.push(uncachedTexts.slice(i, i + chunkSize));
|
|
5503
5503
|
}
|
|
5504
|
-
const allEmbeddings = new Array(
|
|
5504
|
+
const allEmbeddings = new Array(chunks2.length);
|
|
5505
5505
|
let nextIndex = 0;
|
|
5506
5506
|
const worker = async () => {
|
|
5507
|
-
while (nextIndex <
|
|
5507
|
+
while (nextIndex < chunks2.length) {
|
|
5508
5508
|
if (outer?.aborted) throw outer.reason;
|
|
5509
5509
|
const idx = nextIndex++;
|
|
5510
5510
|
allEmbeddings[idx] = await generateEmbeddingsBatch(
|
|
5511
|
-
|
|
5511
|
+
chunks2[idx],
|
|
5512
5512
|
headers,
|
|
5513
5513
|
baseUrl,
|
|
5514
5514
|
embeddingModel,
|
|
@@ -5520,7 +5520,7 @@ async function embedMany(texts, options, outer) {
|
|
|
5520
5520
|
}
|
|
5521
5521
|
};
|
|
5522
5522
|
const workers = Array.from(
|
|
5523
|
-
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY,
|
|
5523
|
+
{ length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY, chunks2.length) },
|
|
5524
5524
|
() => worker()
|
|
5525
5525
|
);
|
|
5526
5526
|
await Promise.all(workers);
|
|
@@ -5753,10 +5753,10 @@ var cryptoPriceCentroid = [0.025576787463333337, 0.0017598020599999997, -0.01339
|
|
|
5753
5753
|
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];
|
|
5754
5754
|
|
|
5755
5755
|
// src/lib/chat/preProcessor.ts
|
|
5756
|
-
function wrapAsUserText(prefix,
|
|
5757
|
-
if (!
|
|
5756
|
+
function wrapAsUserText(prefix, text13) {
|
|
5757
|
+
if (!text13 || !text13.trim()) return [];
|
|
5758
5758
|
return [{ role: "user", content: [{ type: "text", text: `${prefix}
|
|
5759
|
-
${
|
|
5759
|
+
${text13}` }] }];
|
|
5760
5760
|
}
|
|
5761
5761
|
|
|
5762
5762
|
// src/lib/chat/cryptoPriceClassifier.ts
|
|
@@ -5795,8 +5795,122 @@ function createCryptoPricePreProcessor(options = {}) {
|
|
|
5795
5795
|
};
|
|
5796
5796
|
}
|
|
5797
5797
|
|
|
5798
|
+
// src/lib/chat/reservationReceipts.ts
|
|
5799
|
+
var ACTIONS = [
|
|
5800
|
+
{
|
|
5801
|
+
kind: "booking",
|
|
5802
|
+
tool: "anuma_book_restaurant",
|
|
5803
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_BOOKED:/
|
|
5804
|
+
},
|
|
5805
|
+
{
|
|
5806
|
+
kind: "cancel",
|
|
5807
|
+
tool: "anuma_cancel_reservation",
|
|
5808
|
+
alreadyDone: /^Tool "[^"]*" failed: ALREADY_CANCELLED:/
|
|
5809
|
+
}
|
|
5810
|
+
];
|
|
5811
|
+
var NOT_AN_ATTEMPT = /^Tool "[^"]*" (has already been called|was already called)/;
|
|
5812
|
+
var BOOKING_OUTCOME_UNKNOWN = /^Tool "[^"]*" failed: BOOKING_OUTCOME_UNKNOWN:/;
|
|
5813
|
+
var CANCEL_OUTCOME_UNKNOWN = "CANCEL_OUTCOME_UNKNOWN";
|
|
5814
|
+
function extractReservationReceipts(toolCallEvents) {
|
|
5815
|
+
const latest = /* @__PURE__ */ new Map();
|
|
5816
|
+
for (const event of toolCallEvents ?? []) {
|
|
5817
|
+
const action = ACTIONS.find((a) => event.name?.endsWith(a.tool));
|
|
5818
|
+
const output = event.output ?? "";
|
|
5819
|
+
if (!action || !output || NOT_AN_ATTEMPT.test(output)) continue;
|
|
5820
|
+
const kept = latest.get(action.kind)?.status;
|
|
5821
|
+
if (kept === "made") continue;
|
|
5822
|
+
const receipt = toReceipt(action, event.arguments ?? "", output);
|
|
5823
|
+
if (kept === "unknown" && receipt.status !== "made") continue;
|
|
5824
|
+
latest.set(action.kind, receipt);
|
|
5825
|
+
}
|
|
5826
|
+
return [...latest.values()];
|
|
5827
|
+
}
|
|
5828
|
+
function toReceipt(action, argumentsJson, output) {
|
|
5829
|
+
const args = parseObject(argumentsJson);
|
|
5830
|
+
const result = parseObject(output);
|
|
5831
|
+
return {
|
|
5832
|
+
kind: action.kind,
|
|
5833
|
+
venueName: text(args.venue_name) ?? "",
|
|
5834
|
+
day: text(args.day) ?? "",
|
|
5835
|
+
time: text(args.time) ?? "",
|
|
5836
|
+
partySize: count(args.party_size),
|
|
5837
|
+
reservationId: text(result.reservation_id) ?? text(args.reservation_id),
|
|
5838
|
+
resyUrl: text(result.reservations_url),
|
|
5839
|
+
feeSummary: text(result.fee_summary),
|
|
5840
|
+
...outcome(action, output, result)
|
|
5841
|
+
};
|
|
5842
|
+
}
|
|
5843
|
+
function outcome(action, output, result) {
|
|
5844
|
+
if (action.alreadyDone.test(output)) return { status: "already_done" };
|
|
5845
|
+
const reason = text(result.error);
|
|
5846
|
+
if (action.kind === "booking") {
|
|
5847
|
+
if (BOOKING_OUTCOME_UNKNOWN.test(output)) return { status: "unknown" };
|
|
5848
|
+
const held = result.success === true || text(result.reservation_id) !== void 0;
|
|
5849
|
+
return held ? { status: "made" } : { status: "not_made", reason };
|
|
5850
|
+
}
|
|
5851
|
+
if (result.error_code === CANCEL_OUTCOME_UNKNOWN) return { status: "unknown", reason };
|
|
5852
|
+
const cancelled = result.success === true && !result.error && !result.error_code;
|
|
5853
|
+
return cancelled ? { status: "made" } : { status: "not_made", reason };
|
|
5854
|
+
}
|
|
5855
|
+
function parseObject(json4) {
|
|
5856
|
+
try {
|
|
5857
|
+
const parsed = JSON.parse(json4);
|
|
5858
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
5859
|
+
} catch {
|
|
5860
|
+
return {};
|
|
5861
|
+
}
|
|
5862
|
+
}
|
|
5863
|
+
function text(value) {
|
|
5864
|
+
if (typeof value === "number") return String(value);
|
|
5865
|
+
return typeof value === "string" && value ? value : void 0;
|
|
5866
|
+
}
|
|
5867
|
+
function count(value) {
|
|
5868
|
+
const n = typeof value === "string" && value.trim() ? Number(value) : value;
|
|
5869
|
+
return typeof n === "number" && Number.isFinite(n) ? n : void 0;
|
|
5870
|
+
}
|
|
5871
|
+
|
|
5798
5872
|
// src/tools/confirmConstants.ts
|
|
5799
5873
|
var CONFIRM_TOOL_NAME = "prompt_user_confirm";
|
|
5874
|
+
var BOOK_RESTAURANT = {
|
|
5875
|
+
tool: "AnumaPaymentsMCP-anuma_book_restaurant",
|
|
5876
|
+
status: "confirmed_not_booked",
|
|
5877
|
+
fields: ["venue_id", "config_id", "party_size", "day", "venue_name", "time"]
|
|
5878
|
+
};
|
|
5879
|
+
var CANCEL_RESERVATION = {
|
|
5880
|
+
tool: "AnumaPaymentsMCP-anuma_cancel_reservation",
|
|
5881
|
+
status: "confirmed_not_cancelled",
|
|
5882
|
+
fields: [
|
|
5883
|
+
"reservation_id",
|
|
5884
|
+
"venue_name",
|
|
5885
|
+
"day",
|
|
5886
|
+
"time",
|
|
5887
|
+
"party_size",
|
|
5888
|
+
"fee_applies",
|
|
5889
|
+
"fee_amount"
|
|
5890
|
+
]
|
|
5891
|
+
};
|
|
5892
|
+
var CONFIRM_REQUIRED_FIELDS = /* @__PURE__ */ new Map([
|
|
5893
|
+
["book_restaurant", BOOK_RESTAURANT],
|
|
5894
|
+
["anuma_book_restaurant", BOOK_RESTAURANT],
|
|
5895
|
+
["anumapaymentsmcp-anuma_book_restaurant", BOOK_RESTAURANT],
|
|
5896
|
+
["cancel_reservation", CANCEL_RESERVATION],
|
|
5897
|
+
["anuma_cancel_reservation", CANCEL_RESERVATION],
|
|
5898
|
+
["anumapaymentsmcp-anuma_cancel_reservation", CANCEL_RESERVATION]
|
|
5899
|
+
]);
|
|
5900
|
+
function confirmRequirement(action) {
|
|
5901
|
+
if (typeof action !== "string") return void 0;
|
|
5902
|
+
return CONFIRM_REQUIRED_FIELDS.get(action.trim().toLowerCase());
|
|
5903
|
+
}
|
|
5904
|
+
function missingConfirmFields(action, parameters) {
|
|
5905
|
+
const requirement = confirmRequirement(action);
|
|
5906
|
+
if (!requirement) return [];
|
|
5907
|
+
const shown = /* @__PURE__ */ new Set();
|
|
5908
|
+
for (const parameter of Array.isArray(parameters) ? parameters : []) {
|
|
5909
|
+
const { name, value } = parameter ?? {};
|
|
5910
|
+
if (typeof name === "string" && typeof value === "string" && value.trim()) shown.add(name);
|
|
5911
|
+
}
|
|
5912
|
+
return requirement.fields.filter((field10) => !shown.has(field10));
|
|
5913
|
+
}
|
|
5800
5914
|
|
|
5801
5915
|
// src/lib/storage/mcpImages.ts
|
|
5802
5916
|
var IMAGE_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -8615,13 +8729,13 @@ var StreamSmoother = class {
|
|
|
8615
8729
|
/**
|
|
8616
8730
|
* Add text to the buffer. If smoothing is disabled, passes through immediately.
|
|
8617
8731
|
*/
|
|
8618
|
-
push(
|
|
8619
|
-
if (this.destroyed || !
|
|
8732
|
+
push(text13) {
|
|
8733
|
+
if (this.destroyed || !text13) return;
|
|
8620
8734
|
if (!this.enabled) {
|
|
8621
|
-
this.callback(
|
|
8735
|
+
this.callback(text13);
|
|
8622
8736
|
return;
|
|
8623
8737
|
}
|
|
8624
|
-
this.buffer +=
|
|
8738
|
+
this.buffer += text13;
|
|
8625
8739
|
this.ensureTimer();
|
|
8626
8740
|
}
|
|
8627
8741
|
/**
|
|
@@ -8632,9 +8746,9 @@ var StreamSmoother = class {
|
|
|
8632
8746
|
if (this.destroyed) return;
|
|
8633
8747
|
this.stopTimer();
|
|
8634
8748
|
if (this.buffer.length > 0) {
|
|
8635
|
-
const
|
|
8749
|
+
const text13 = this.buffer;
|
|
8636
8750
|
this.buffer = "";
|
|
8637
|
-
this.callback(
|
|
8751
|
+
this.callback(text13);
|
|
8638
8752
|
}
|
|
8639
8753
|
this.resolveDrain();
|
|
8640
8754
|
}
|
|
@@ -8701,9 +8815,9 @@ var StreamSmoother = class {
|
|
|
8701
8815
|
const currentSpeed = this.getCurrentSpeed(elapsed);
|
|
8702
8816
|
const charsThisTick = Math.max(1, Math.round(currentSpeed * (TICK_INTERVAL / 1e3)));
|
|
8703
8817
|
const toRelease = Math.min(charsThisTick, this.buffer.length);
|
|
8704
|
-
const
|
|
8818
|
+
const text13 = this.buffer.slice(0, toRelease);
|
|
8705
8819
|
this.buffer = this.buffer.slice(toRelease);
|
|
8706
|
-
this.callback(
|
|
8820
|
+
this.callback(text13);
|
|
8707
8821
|
if (this.buffer.length === 0) {
|
|
8708
8822
|
this.stopTimer();
|
|
8709
8823
|
this.resolveDrain();
|
|
@@ -8907,6 +9021,7 @@ function getToolName(tool) {
|
|
|
8907
9021
|
}
|
|
8908
9022
|
function toolsAfterConfirmation(apiTools, executionResults) {
|
|
8909
9023
|
const members = /* @__PURE__ */ new Set();
|
|
9024
|
+
let keepConfirm = false;
|
|
8910
9025
|
for (const r of executionResults) {
|
|
8911
9026
|
if (r.name !== CONFIRM_TOOL_NAME) continue;
|
|
8912
9027
|
const answer = r.result;
|
|
@@ -8914,11 +9029,12 @@ function toolsAfterConfirmation(apiTools, executionResults) {
|
|
|
8914
9029
|
const setName = CONFIRMED_ACTION_TOOL_SETS.get(answer.action.trim().toLowerCase());
|
|
8915
9030
|
const set = BUILT_IN_TOOL_SETS.find((s) => s.name === setName);
|
|
8916
9031
|
for (const member of set?.members ?? []) members.add(member);
|
|
9032
|
+
if (missingConfirmFields(answer.action, answer.parameters).length > 0) keepConfirm = true;
|
|
8917
9033
|
}
|
|
8918
9034
|
if (!apiTools.some((t) => members.has(getToolName(t) ?? ""))) return void 0;
|
|
8919
9035
|
return apiTools.filter((t) => {
|
|
8920
9036
|
const name = getToolName(t) ?? "";
|
|
8921
|
-
return members.has(name) || name ===
|
|
9037
|
+
return members.has(name) || name === TOOL_SEARCH_TOOL_NAME || keepConfirm && name === CONFIRM_TOOL_NAME;
|
|
8922
9038
|
});
|
|
8923
9039
|
}
|
|
8924
9040
|
var STREAM_RESUMABLE_HEADER = "X-Stream-Resumable";
|
|
@@ -9124,9 +9240,9 @@ async function runToolLoop(options) {
|
|
|
9124
9240
|
messages = await redactBatch(messages);
|
|
9125
9241
|
if (preProcessors?.length) {
|
|
9126
9242
|
try {
|
|
9127
|
-
const
|
|
9128
|
-
if (
|
|
9129
|
-
const embedding = await generateEmbedding(
|
|
9243
|
+
const text13 = extractLastUserText(messages);
|
|
9244
|
+
if (text13.length > 0) {
|
|
9245
|
+
const embedding = await generateEmbedding(text13, {
|
|
9130
9246
|
apiKey: headers?.["X-API-Key"],
|
|
9131
9247
|
getToken: token ? () => Promise.resolve(token) : void 0,
|
|
9132
9248
|
baseUrl
|
|
@@ -9134,7 +9250,7 @@ async function runToolLoop(options) {
|
|
|
9134
9250
|
const results = await Promise.all(
|
|
9135
9251
|
preProcessors.map(async (p) => {
|
|
9136
9252
|
try {
|
|
9137
|
-
return await p({ prompt:
|
|
9253
|
+
return await p({ prompt: text13, embedding, signal: combinedSignal });
|
|
9138
9254
|
} catch (err) {
|
|
9139
9255
|
console.warn("[runToolLoop] pre-processor failed:", err);
|
|
9140
9256
|
return void 0;
|
|
@@ -9293,11 +9409,11 @@ async function runToolLoop(options) {
|
|
|
9293
9409
|
}
|
|
9294
9410
|
});
|
|
9295
9411
|
accumulator = createStreamAccumulator(model || void 0);
|
|
9296
|
-
contentSmoother = new StreamSmoother((
|
|
9297
|
-
if (emitData) emitData(
|
|
9412
|
+
contentSmoother = new StreamSmoother((text13) => {
|
|
9413
|
+
if (emitData) emitData(text13);
|
|
9298
9414
|
}, smoothing);
|
|
9299
|
-
thinkingSmoother = new StreamSmoother((
|
|
9300
|
-
if (emitThinking) emitThinking(
|
|
9415
|
+
thinkingSmoother = new StreamSmoother((text13) => {
|
|
9416
|
+
if (emitThinking) emitThinking(text13);
|
|
9301
9417
|
}, smoothing);
|
|
9302
9418
|
let chunksEmittedDownstream = false;
|
|
9303
9419
|
try {
|
|
@@ -9802,11 +9918,11 @@ Executing tool: ${toolInfo}
|
|
|
9802
9918
|
}
|
|
9803
9919
|
});
|
|
9804
9920
|
currentAccumulator = createStreamAccumulator(model || void 0);
|
|
9805
|
-
contContentSmoother = new StreamSmoother((
|
|
9806
|
-
if (emitData) emitData(
|
|
9921
|
+
contContentSmoother = new StreamSmoother((text13) => {
|
|
9922
|
+
if (emitData) emitData(text13);
|
|
9807
9923
|
}, smoothing);
|
|
9808
|
-
contThinkingSmoother = new StreamSmoother((
|
|
9809
|
-
if (emitThinking) emitThinking(
|
|
9924
|
+
contThinkingSmoother = new StreamSmoother((text13) => {
|
|
9925
|
+
if (emitThinking) emitThinking(text13);
|
|
9810
9926
|
}, smoothing);
|
|
9811
9927
|
let chunksEmittedDownstream = false;
|
|
9812
9928
|
try {
|
|
@@ -10033,11 +10149,11 @@ async function resumeStream(options) {
|
|
|
10033
10149
|
} = options;
|
|
10034
10150
|
const strategy = getStrategy(handle.apiType);
|
|
10035
10151
|
const accumulator = createStreamAccumulator(handle.model || void 0);
|
|
10036
|
-
const contentSmoother = new StreamSmoother((
|
|
10037
|
-
if (onData) onData(
|
|
10152
|
+
const contentSmoother = new StreamSmoother((text13) => {
|
|
10153
|
+
if (onData) onData(text13);
|
|
10038
10154
|
}, smoothing);
|
|
10039
|
-
const thinkingSmoother = new StreamSmoother((
|
|
10040
|
-
if (onThinking) onThinking(
|
|
10155
|
+
const thinkingSmoother = new StreamSmoother((text13) => {
|
|
10156
|
+
if (onThinking) onThinking(text13);
|
|
10041
10157
|
}, smoothing);
|
|
10042
10158
|
const idleController = new AbortController();
|
|
10043
10159
|
let watchdog;
|
|
@@ -10278,19 +10394,19 @@ function createWebSearchPreProcessor(options = {}) {
|
|
|
10278
10394
|
|
|
10279
10395
|
// src/lib/db/appFiles/models.ts
|
|
10280
10396
|
import { Model as Model2 } from "@nozbe/watermelondb";
|
|
10281
|
-
import { date, readonly, text } from "@nozbe/watermelondb/decorators";
|
|
10397
|
+
import { date, readonly, text as text2 } from "@nozbe/watermelondb/decorators";
|
|
10282
10398
|
var AppFile = class extends Model2 {
|
|
10283
10399
|
};
|
|
10284
10400
|
AppFile.table = "app_files";
|
|
10285
10401
|
AppFile.associations = {};
|
|
10286
10402
|
__decorateClass([
|
|
10287
|
-
|
|
10403
|
+
text2("conversation_id")
|
|
10288
10404
|
], AppFile.prototype, "conversationId", 2);
|
|
10289
10405
|
__decorateClass([
|
|
10290
|
-
|
|
10406
|
+
text2("path")
|
|
10291
10407
|
], AppFile.prototype, "path", 2);
|
|
10292
10408
|
__decorateClass([
|
|
10293
|
-
|
|
10409
|
+
text2("content")
|
|
10294
10410
|
], AppFile.prototype, "content", 2);
|
|
10295
10411
|
__decorateClass([
|
|
10296
10412
|
readonly,
|
|
@@ -10444,7 +10560,7 @@ async function decryptConversationTitle(encryptedTitle, address) {
|
|
|
10444
10560
|
|
|
10445
10561
|
// src/lib/db/chat/models.ts
|
|
10446
10562
|
import { Model as Model3 } from "@nozbe/watermelondb";
|
|
10447
|
-
import { date as date2, field, json, text as
|
|
10563
|
+
import { date as date2, field, json, text as text3 } from "@nozbe/watermelondb/decorators";
|
|
10448
10564
|
var Message = class extends Model3 {
|
|
10449
10565
|
};
|
|
10450
10566
|
Message.table = "history";
|
|
@@ -10456,19 +10572,19 @@ __decorateClass([
|
|
|
10456
10572
|
field("message_id")
|
|
10457
10573
|
], Message.prototype, "messageId", 2);
|
|
10458
10574
|
__decorateClass([
|
|
10459
|
-
|
|
10575
|
+
text3("conversation_id")
|
|
10460
10576
|
], Message.prototype, "conversationId", 2);
|
|
10461
10577
|
__decorateClass([
|
|
10462
|
-
|
|
10578
|
+
text3("role")
|
|
10463
10579
|
], Message.prototype, "role", 2);
|
|
10464
10580
|
__decorateClass([
|
|
10465
|
-
|
|
10581
|
+
text3("content")
|
|
10466
10582
|
], Message.prototype, "content", 2);
|
|
10467
10583
|
__decorateClass([
|
|
10468
|
-
|
|
10584
|
+
text3("model")
|
|
10469
10585
|
], Message.prototype, "model", 2);
|
|
10470
10586
|
__decorateClass([
|
|
10471
|
-
|
|
10587
|
+
text3("image_model")
|
|
10472
10588
|
], Message.prototype, "imageModel", 2);
|
|
10473
10589
|
__decorateClass([
|
|
10474
10590
|
json("files", (raw) => raw)
|
|
@@ -10486,7 +10602,7 @@ __decorateClass([
|
|
|
10486
10602
|
json("vector", (raw) => raw)
|
|
10487
10603
|
], Message.prototype, "vector", 2);
|
|
10488
10604
|
__decorateClass([
|
|
10489
|
-
|
|
10605
|
+
text3("embedding_model")
|
|
10490
10606
|
], Message.prototype, "embeddingModel", 2);
|
|
10491
10607
|
__decorateClass([
|
|
10492
10608
|
json("chunks", (raw) => raw)
|
|
@@ -10504,25 +10620,25 @@ __decorateClass([
|
|
|
10504
10620
|
field("was_stopped")
|
|
10505
10621
|
], Message.prototype, "wasStopped", 2);
|
|
10506
10622
|
__decorateClass([
|
|
10507
|
-
|
|
10623
|
+
text3("error")
|
|
10508
10624
|
], Message.prototype, "error", 2);
|
|
10509
10625
|
__decorateClass([
|
|
10510
10626
|
json("thought_process", (raw) => raw)
|
|
10511
10627
|
], Message.prototype, "thoughtProcess", 2);
|
|
10512
10628
|
__decorateClass([
|
|
10513
|
-
|
|
10629
|
+
text3("thinking")
|
|
10514
10630
|
], Message.prototype, "thinking", 2);
|
|
10515
10631
|
__decorateClass([
|
|
10516
|
-
|
|
10632
|
+
text3("parent_message_id")
|
|
10517
10633
|
], Message.prototype, "parentMessageId", 2);
|
|
10518
10634
|
__decorateClass([
|
|
10519
|
-
|
|
10635
|
+
text3("feedback")
|
|
10520
10636
|
], Message.prototype, "feedback", 2);
|
|
10521
10637
|
__decorateClass([
|
|
10522
10638
|
json("tool_call_events", (raw) => raw)
|
|
10523
10639
|
], Message.prototype, "toolCallEvents", 2);
|
|
10524
10640
|
__decorateClass([
|
|
10525
|
-
|
|
10641
|
+
text3("origin")
|
|
10526
10642
|
], Message.prototype, "origin", 2);
|
|
10527
10643
|
var Conversation = class extends Model3 {
|
|
10528
10644
|
};
|
|
@@ -10532,13 +10648,13 @@ Conversation.associations = {
|
|
|
10532
10648
|
projects: { type: "belongs_to", key: "project_id" }
|
|
10533
10649
|
};
|
|
10534
10650
|
__decorateClass([
|
|
10535
|
-
|
|
10651
|
+
text3("conversation_id")
|
|
10536
10652
|
], Conversation.prototype, "conversationId", 2);
|
|
10537
10653
|
__decorateClass([
|
|
10538
|
-
|
|
10654
|
+
text3("title")
|
|
10539
10655
|
], Conversation.prototype, "title", 2);
|
|
10540
10656
|
__decorateClass([
|
|
10541
|
-
|
|
10657
|
+
text3("project_id")
|
|
10542
10658
|
], Conversation.prototype, "projectId", 2);
|
|
10543
10659
|
__decorateClass([
|
|
10544
10660
|
date2("created_at")
|
|
@@ -10559,13 +10675,13 @@ ConversationSummary.associations = {
|
|
|
10559
10675
|
conversations: { type: "belongs_to", key: "conversation_id" }
|
|
10560
10676
|
};
|
|
10561
10677
|
__decorateClass([
|
|
10562
|
-
|
|
10678
|
+
text3("conversation_id")
|
|
10563
10679
|
], ConversationSummary.prototype, "conversationId", 2);
|
|
10564
10680
|
__decorateClass([
|
|
10565
|
-
|
|
10681
|
+
text3("summary")
|
|
10566
10682
|
], ConversationSummary.prototype, "summary", 2);
|
|
10567
10683
|
__decorateClass([
|
|
10568
|
-
|
|
10684
|
+
text3("summarized_up_to")
|
|
10569
10685
|
], ConversationSummary.prototype, "summarizedUpTo", 2);
|
|
10570
10686
|
__decorateClass([
|
|
10571
10687
|
field("token_count")
|
|
@@ -10734,16 +10850,16 @@ async function deleteConversationSummaryOp(ctx, conversationId) {
|
|
|
10734
10850
|
|
|
10735
10851
|
// src/lib/db/conversationMemory/models.ts
|
|
10736
10852
|
import { Model as Model4 } from "@nozbe/watermelondb";
|
|
10737
|
-
import { date as date3, field as field2, readonly as readonly2, text as
|
|
10853
|
+
import { date as date3, field as field2, readonly as readonly2, text as text4 } from "@nozbe/watermelondb/decorators";
|
|
10738
10854
|
var ConversationMemory = class extends Model4 {
|
|
10739
10855
|
};
|
|
10740
10856
|
ConversationMemory.table = "conversation_memory";
|
|
10741
10857
|
ConversationMemory.associations = {};
|
|
10742
10858
|
__decorateClass([
|
|
10743
|
-
|
|
10859
|
+
text4("conversation_id")
|
|
10744
10860
|
], ConversationMemory.prototype, "conversationId", 2);
|
|
10745
10861
|
__decorateClass([
|
|
10746
|
-
|
|
10862
|
+
text4("memory_id")
|
|
10747
10863
|
], ConversationMemory.prototype, "memoryId", 2);
|
|
10748
10864
|
__decorateClass([
|
|
10749
10865
|
field2("score")
|
|
@@ -10813,12 +10929,12 @@ async function clearConversationMemoriesOp(ctx, conversationId) {
|
|
|
10813
10929
|
|
|
10814
10930
|
// src/lib/db/entities/models.ts
|
|
10815
10931
|
import { Model as Model5 } from "@nozbe/watermelondb";
|
|
10816
|
-
import { date as date4, field as field3, readonly as readonly3, text as
|
|
10932
|
+
import { date as date4, field as field3, readonly as readonly3, text as text5 } from "@nozbe/watermelondb/decorators";
|
|
10817
10933
|
var Entity = class extends Model5 {
|
|
10818
10934
|
};
|
|
10819
10935
|
Entity.table = "entity";
|
|
10820
10936
|
__decorateClass([
|
|
10821
|
-
|
|
10937
|
+
text5("canonical_name")
|
|
10822
10938
|
], Entity.prototype, "canonicalName", 2);
|
|
10823
10939
|
__decorateClass([
|
|
10824
10940
|
field3("kind")
|
|
@@ -10834,10 +10950,10 @@ var MemoryEntity = class extends Model5 {
|
|
|
10834
10950
|
};
|
|
10835
10951
|
MemoryEntity.table = "memory_entity";
|
|
10836
10952
|
__decorateClass([
|
|
10837
|
-
|
|
10953
|
+
text5("memory_id")
|
|
10838
10954
|
], MemoryEntity.prototype, "memoryId", 2);
|
|
10839
10955
|
__decorateClass([
|
|
10840
|
-
|
|
10956
|
+
text5("entity_id")
|
|
10841
10957
|
], MemoryEntity.prototype, "entityId", 2);
|
|
10842
10958
|
__decorateClass([
|
|
10843
10959
|
field3("user_id")
|
|
@@ -11245,7 +11361,7 @@ import {
|
|
|
11245
11361
|
|
|
11246
11362
|
// src/lib/db/media/models.ts
|
|
11247
11363
|
import { Model as Model6 } from "@nozbe/watermelondb";
|
|
11248
|
-
import { date as date5, field as field4, json as json2, readonly as readonly4, text as
|
|
11364
|
+
import { date as date5, field as field4, json as json2, readonly as readonly4, text as text6 } from "@nozbe/watermelondb/decorators";
|
|
11249
11365
|
var Media = class extends Model6 {
|
|
11250
11366
|
};
|
|
11251
11367
|
Media.table = "media";
|
|
@@ -11254,37 +11370,37 @@ Media.associations = {
|
|
|
11254
11370
|
conversations: { type: "belongs_to", key: "conversation_id" }
|
|
11255
11371
|
};
|
|
11256
11372
|
__decorateClass([
|
|
11257
|
-
|
|
11373
|
+
text6("media_id")
|
|
11258
11374
|
], Media.prototype, "mediaId", 2);
|
|
11259
11375
|
__decorateClass([
|
|
11260
|
-
|
|
11376
|
+
text6("wallet_address")
|
|
11261
11377
|
], Media.prototype, "walletAddress", 2);
|
|
11262
11378
|
__decorateClass([
|
|
11263
|
-
|
|
11379
|
+
text6("message_id")
|
|
11264
11380
|
], Media.prototype, "messageId", 2);
|
|
11265
11381
|
__decorateClass([
|
|
11266
|
-
|
|
11382
|
+
text6("conversation_id")
|
|
11267
11383
|
], Media.prototype, "conversationId", 2);
|
|
11268
11384
|
__decorateClass([
|
|
11269
|
-
|
|
11385
|
+
text6("name")
|
|
11270
11386
|
], Media.prototype, "name", 2);
|
|
11271
11387
|
__decorateClass([
|
|
11272
|
-
|
|
11388
|
+
text6("mime_type")
|
|
11273
11389
|
], Media.prototype, "mimeType", 2);
|
|
11274
11390
|
__decorateClass([
|
|
11275
|
-
|
|
11391
|
+
text6("media_type")
|
|
11276
11392
|
], Media.prototype, "mediaType", 2);
|
|
11277
11393
|
__decorateClass([
|
|
11278
11394
|
field4("size")
|
|
11279
11395
|
], Media.prototype, "size", 2);
|
|
11280
11396
|
__decorateClass([
|
|
11281
|
-
|
|
11397
|
+
text6("role")
|
|
11282
11398
|
], Media.prototype, "role", 2);
|
|
11283
11399
|
__decorateClass([
|
|
11284
|
-
|
|
11400
|
+
text6("model")
|
|
11285
11401
|
], Media.prototype, "model", 2);
|
|
11286
11402
|
__decorateClass([
|
|
11287
|
-
|
|
11403
|
+
text6("source_url")
|
|
11288
11404
|
], Media.prototype, "sourceUrl", 2);
|
|
11289
11405
|
__decorateClass([
|
|
11290
11406
|
json2("dimensions", (raw) => raw)
|
|
@@ -11308,15 +11424,15 @@ __decorateClass([
|
|
|
11308
11424
|
|
|
11309
11425
|
// src/lib/db/memoryVault/models.ts
|
|
11310
11426
|
import { Model as Model7 } from "@nozbe/watermelondb";
|
|
11311
|
-
import { date as date6, field as field5, readonly as readonly5, text as
|
|
11427
|
+
import { date as date6, field as field5, readonly as readonly5, text as text7 } from "@nozbe/watermelondb/decorators";
|
|
11312
11428
|
var VaultMemory = class extends Model7 {
|
|
11313
11429
|
};
|
|
11314
11430
|
VaultMemory.table = "memory_vault";
|
|
11315
11431
|
__decorateClass([
|
|
11316
|
-
|
|
11432
|
+
text7("content")
|
|
11317
11433
|
], VaultMemory.prototype, "content", 2);
|
|
11318
11434
|
__decorateClass([
|
|
11319
|
-
|
|
11435
|
+
text7("scope")
|
|
11320
11436
|
], VaultMemory.prototype, "scope", 2);
|
|
11321
11437
|
__decorateClass([
|
|
11322
11438
|
field5("kind")
|
|
@@ -11418,7 +11534,7 @@ __decorateClass([
|
|
|
11418
11534
|
|
|
11419
11535
|
// src/lib/db/project/models.ts
|
|
11420
11536
|
import { Model as Model8 } from "@nozbe/watermelondb";
|
|
11421
|
-
import { date as date7, field as field6, text as
|
|
11537
|
+
import { date as date7, field as field6, text as text8 } from "@nozbe/watermelondb/decorators";
|
|
11422
11538
|
var Project = class extends Model8 {
|
|
11423
11539
|
};
|
|
11424
11540
|
Project.table = "projects";
|
|
@@ -11426,10 +11542,10 @@ Project.associations = {
|
|
|
11426
11542
|
conversations: { type: "has_many", foreignKey: "project_id" }
|
|
11427
11543
|
};
|
|
11428
11544
|
__decorateClass([
|
|
11429
|
-
|
|
11545
|
+
text8("project_id")
|
|
11430
11546
|
], Project.prototype, "projectId", 2);
|
|
11431
11547
|
__decorateClass([
|
|
11432
|
-
|
|
11548
|
+
text8("name")
|
|
11433
11549
|
], Project.prototype, "name", 2);
|
|
11434
11550
|
__decorateClass([
|
|
11435
11551
|
date7("created_at")
|
|
@@ -11443,29 +11559,29 @@ __decorateClass([
|
|
|
11443
11559
|
|
|
11444
11560
|
// src/lib/db/savedTools/models.ts
|
|
11445
11561
|
import { Model as Model9 } from "@nozbe/watermelondb";
|
|
11446
|
-
import { date as date8, field as field7, json as json3, readonly as readonly6, text as
|
|
11562
|
+
import { date as date8, field as field7, json as json3, readonly as readonly6, text as text9 } from "@nozbe/watermelondb/decorators";
|
|
11447
11563
|
var sanitizeParameters = (raw) => raw ?? {};
|
|
11448
11564
|
var SavedTool = class extends Model9 {
|
|
11449
11565
|
};
|
|
11450
11566
|
SavedTool.table = "saved_tools";
|
|
11451
11567
|
SavedTool.associations = {};
|
|
11452
11568
|
__decorateClass([
|
|
11453
|
-
|
|
11569
|
+
text9("name")
|
|
11454
11570
|
], SavedTool.prototype, "name", 2);
|
|
11455
11571
|
__decorateClass([
|
|
11456
|
-
|
|
11572
|
+
text9("display_name")
|
|
11457
11573
|
], SavedTool.prototype, "displayName", 2);
|
|
11458
11574
|
__decorateClass([
|
|
11459
|
-
|
|
11575
|
+
text9("description")
|
|
11460
11576
|
], SavedTool.prototype, "description", 2);
|
|
11461
11577
|
__decorateClass([
|
|
11462
11578
|
json3("parameters", sanitizeParameters)
|
|
11463
11579
|
], SavedTool.prototype, "parameters", 2);
|
|
11464
11580
|
__decorateClass([
|
|
11465
|
-
|
|
11581
|
+
text9("html")
|
|
11466
11582
|
], SavedTool.prototype, "html", 2);
|
|
11467
11583
|
__decorateClass([
|
|
11468
|
-
|
|
11584
|
+
text9("conversation_id")
|
|
11469
11585
|
], SavedTool.prototype, "conversationId", 2);
|
|
11470
11586
|
__decorateClass([
|
|
11471
11587
|
readonly6,
|
|
@@ -11480,40 +11596,40 @@ __decorateClass([
|
|
|
11480
11596
|
|
|
11481
11597
|
// src/lib/db/settings/models.ts
|
|
11482
11598
|
import { Model as Model10 } from "@nozbe/watermelondb";
|
|
11483
|
-
import { text as
|
|
11599
|
+
import { text as text10 } from "@nozbe/watermelondb/decorators";
|
|
11484
11600
|
var ModelPreference = class extends Model10 {
|
|
11485
11601
|
};
|
|
11486
11602
|
ModelPreference.table = "modelPreferences";
|
|
11487
11603
|
__decorateClass([
|
|
11488
|
-
|
|
11604
|
+
text10("wallet_address")
|
|
11489
11605
|
], ModelPreference.prototype, "walletAddress", 2);
|
|
11490
11606
|
__decorateClass([
|
|
11491
|
-
|
|
11607
|
+
text10("models")
|
|
11492
11608
|
], ModelPreference.prototype, "models", 2);
|
|
11493
11609
|
|
|
11494
11610
|
// src/lib/db/userPreferences/models.ts
|
|
11495
11611
|
import { Model as Model11 } from "@nozbe/watermelondb";
|
|
11496
|
-
import { field as field8, text as
|
|
11612
|
+
import { field as field8, text as text11 } from "@nozbe/watermelondb/decorators";
|
|
11497
11613
|
var UserPreference = class extends Model11 {
|
|
11498
11614
|
};
|
|
11499
11615
|
UserPreference.table = "userPreferences";
|
|
11500
11616
|
__decorateClass([
|
|
11501
|
-
|
|
11617
|
+
text11("wallet_address")
|
|
11502
11618
|
], UserPreference.prototype, "walletAddress", 2);
|
|
11503
11619
|
__decorateClass([
|
|
11504
|
-
|
|
11620
|
+
text11("nickname")
|
|
11505
11621
|
], UserPreference.prototype, "nickname", 2);
|
|
11506
11622
|
__decorateClass([
|
|
11507
|
-
|
|
11623
|
+
text11("occupation")
|
|
11508
11624
|
], UserPreference.prototype, "occupation", 2);
|
|
11509
11625
|
__decorateClass([
|
|
11510
|
-
|
|
11626
|
+
text11("description")
|
|
11511
11627
|
], UserPreference.prototype, "description", 2);
|
|
11512
11628
|
__decorateClass([
|
|
11513
|
-
|
|
11629
|
+
text11("models")
|
|
11514
11630
|
], UserPreference.prototype, "models", 2);
|
|
11515
11631
|
__decorateClass([
|
|
11516
|
-
|
|
11632
|
+
text11("personality")
|
|
11517
11633
|
], UserPreference.prototype, "personality", 2);
|
|
11518
11634
|
__decorateClass([
|
|
11519
11635
|
field8("created_at")
|
|
@@ -11524,15 +11640,15 @@ __decorateClass([
|
|
|
11524
11640
|
|
|
11525
11641
|
// src/lib/db/vaultFolders/models.ts
|
|
11526
11642
|
import { Model as Model12 } from "@nozbe/watermelondb";
|
|
11527
|
-
import { date as date9, field as field9, readonly as readonly7, text as
|
|
11643
|
+
import { date as date9, field as field9, readonly as readonly7, text as text12 } from "@nozbe/watermelondb/decorators";
|
|
11528
11644
|
var VaultFolder = class extends Model12 {
|
|
11529
11645
|
};
|
|
11530
11646
|
VaultFolder.table = "vault_folders";
|
|
11531
11647
|
__decorateClass([
|
|
11532
|
-
|
|
11648
|
+
text12("name")
|
|
11533
11649
|
], VaultFolder.prototype, "name", 2);
|
|
11534
11650
|
__decorateClass([
|
|
11535
|
-
|
|
11651
|
+
text12("scope")
|
|
11536
11652
|
], VaultFolder.prototype, "scope", 2);
|
|
11537
11653
|
__decorateClass([
|
|
11538
11654
|
readonly7,
|
|
@@ -11548,7 +11664,7 @@ __decorateClass([
|
|
|
11548
11664
|
field9("is_system")
|
|
11549
11665
|
], VaultFolder.prototype, "isSystem", 2);
|
|
11550
11666
|
__decorateClass([
|
|
11551
|
-
|
|
11667
|
+
text12("context")
|
|
11552
11668
|
], VaultFolder.prototype, "context", 2);
|
|
11553
11669
|
|
|
11554
11670
|
// src/lib/db/schema.ts
|
|
@@ -12863,8 +12979,8 @@ var WatermelonChatStorageAdapter = class {
|
|
|
12863
12979
|
updateMessageEmbedding(uniqueId, vector, embeddingModel) {
|
|
12864
12980
|
return updateMessageEmbeddingOp(this.ctx, uniqueId, vector, embeddingModel);
|
|
12865
12981
|
}
|
|
12866
|
-
updateMessageChunks(uniqueId,
|
|
12867
|
-
return updateMessageChunksOp(this.ctx, uniqueId,
|
|
12982
|
+
updateMessageChunks(uniqueId, chunks2, embeddingModel) {
|
|
12983
|
+
return updateMessageChunksOp(this.ctx, uniqueId, chunks2, embeddingModel);
|
|
12868
12984
|
}
|
|
12869
12985
|
updateMessageError(uniqueId, error) {
|
|
12870
12986
|
return updateMessageErrorOp(this.ctx, uniqueId, error);
|
|
@@ -16144,7 +16260,7 @@ Which item numbers should be flagged?`,
|
|
|
16144
16260
|
if (parsed === null) return empty;
|
|
16145
16261
|
return { flagged: parseFlagged(parsed, scope.length) };
|
|
16146
16262
|
}
|
|
16147
|
-
function parseFlagged(parsed,
|
|
16263
|
+
function parseFlagged(parsed, count2) {
|
|
16148
16264
|
const out = /* @__PURE__ */ new Set();
|
|
16149
16265
|
if (typeof parsed !== "object" || parsed === null) return out;
|
|
16150
16266
|
const list = parsed.poisoned;
|
|
@@ -16152,7 +16268,7 @@ function parseFlagged(parsed, count) {
|
|
|
16152
16268
|
for (const raw of list) {
|
|
16153
16269
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
16154
16270
|
if (!Number.isInteger(n)) continue;
|
|
16155
|
-
if (n >= 1 && n <=
|
|
16271
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
16156
16272
|
}
|
|
16157
16273
|
return out;
|
|
16158
16274
|
}
|
|
@@ -16638,8 +16754,8 @@ var STOPWORDS = /* @__PURE__ */ new Set([
|
|
|
16638
16754
|
"user",
|
|
16639
16755
|
"users"
|
|
16640
16756
|
]);
|
|
16641
|
-
function tokenize(
|
|
16642
|
-
const m =
|
|
16757
|
+
function tokenize(text13) {
|
|
16758
|
+
const m = text13.toLowerCase().match(TOKEN_RE);
|
|
16643
16759
|
if (!m) return [];
|
|
16644
16760
|
return m.filter((t) => !STOPWORDS.has(t));
|
|
16645
16761
|
}
|
|
@@ -18163,14 +18279,14 @@ async function retainWithPersistence(content, ctx, options = {}) {
|
|
|
18163
18279
|
);
|
|
18164
18280
|
}
|
|
18165
18281
|
if (options.consolidateOptions) {
|
|
18166
|
-
const
|
|
18167
|
-
if (
|
|
18168
|
-
if ("done" in
|
|
18169
|
-
if ("create" in
|
|
18282
|
+
const outcome2 = await tryConsolidate(trimmed, ctx, options, prepared);
|
|
18283
|
+
if (outcome2) {
|
|
18284
|
+
if ("done" in outcome2) return outcome2.done;
|
|
18285
|
+
if ("create" in outcome2) {
|
|
18170
18286
|
consolidationDecidedCreate = true;
|
|
18171
18287
|
} else {
|
|
18172
|
-
supersedeTargetIds =
|
|
18173
|
-
supersedeContent =
|
|
18288
|
+
supersedeTargetIds = outcome2.supersede;
|
|
18289
|
+
supersedeContent = outcome2.content;
|
|
18174
18290
|
}
|
|
18175
18291
|
}
|
|
18176
18292
|
}
|
|
@@ -18836,12 +18952,12 @@ async function extractAndRetain(messages, retainCtx, options) {
|
|
|
18836
18952
|
if (failedWrites > 0) {
|
|
18837
18953
|
log.warn(`[memory/extract] ${failedWrites} of ${filtered.length} candidates failed to retain`);
|
|
18838
18954
|
}
|
|
18839
|
-
const
|
|
18955
|
+
const outcome2 = exhaustedEmpty ? "empty-after-retry" : filtered.length > 0 ? "extracted" : droppedAfterRedaction ? "dropped-after-redaction" : "no-facts";
|
|
18840
18956
|
return {
|
|
18841
18957
|
candidates: succeededCandidates,
|
|
18842
18958
|
results,
|
|
18843
18959
|
failedCount: failedWrites,
|
|
18844
|
-
outcome,
|
|
18960
|
+
outcome: outcome2,
|
|
18845
18961
|
quarantined: quarantinedInfo,
|
|
18846
18962
|
funnel: {
|
|
18847
18963
|
rawCandidateCount,
|
|
@@ -19071,7 +19187,7 @@ function createAutoExtractor(options) {
|
|
|
19071
19187
|
...options.retainCtx,
|
|
19072
19188
|
embeddingOptions: {
|
|
19073
19189
|
...options.retainCtx.embeddingOptions,
|
|
19074
|
-
maskInput: (
|
|
19190
|
+
maskInput: (text13) => piiRedactor.maskText(text13)
|
|
19075
19191
|
}
|
|
19076
19192
|
} : options.retainCtx;
|
|
19077
19193
|
function processTurn(messages, conversationId) {
|
|
@@ -19104,7 +19220,7 @@ function createAutoExtractor(options) {
|
|
|
19104
19220
|
const t0 = Date.now();
|
|
19105
19221
|
void (async () => {
|
|
19106
19222
|
try {
|
|
19107
|
-
const { candidates, results, failedCount, outcome, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
19223
|
+
const { candidates, results, failedCount, outcome: outcome2, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
|
|
19108
19224
|
extract,
|
|
19109
19225
|
...options.minConfidence !== void 0 && { minConfidence: options.minConfidence },
|
|
19110
19226
|
...options.entityCtx !== void 0 && { entityCtx: options.entityCtx },
|
|
@@ -19121,7 +19237,7 @@ function createAutoExtractor(options) {
|
|
|
19121
19237
|
onQuarantined: (info) => options.onMemoryQuarantined?.({ ...info, conversationId })
|
|
19122
19238
|
}
|
|
19123
19239
|
});
|
|
19124
|
-
if (
|
|
19240
|
+
if (outcome2 !== "empty-after-retry" && failedCount === 0) {
|
|
19125
19241
|
const advancedTo = window2[window2.length - 1].id;
|
|
19126
19242
|
stateFor(conversationId).watermark = advancedTo;
|
|
19127
19243
|
persistCursor(conversationId, messages, advancedTo, contiguous);
|
|
@@ -19140,7 +19256,7 @@ function createAutoExtractor(options) {
|
|
|
19140
19256
|
failedCount,
|
|
19141
19257
|
durationMs: Date.now() - t0,
|
|
19142
19258
|
conversationId,
|
|
19143
|
-
outcome,
|
|
19259
|
+
outcome: outcome2,
|
|
19144
19260
|
funnel,
|
|
19145
19261
|
timings,
|
|
19146
19262
|
model,
|
|
@@ -20802,12 +20918,12 @@ ${JSON.stringify(
|
|
|
20802
20918
|
function parseAnswer(body, base, parseSchema) {
|
|
20803
20919
|
if (typeof body !== "object" || body === null) return base;
|
|
20804
20920
|
const obj = body;
|
|
20805
|
-
const
|
|
20921
|
+
const text13 = extractCompletionContent(obj) ?? "";
|
|
20806
20922
|
const usage = obj.usage;
|
|
20807
20923
|
let structuredOutput;
|
|
20808
|
-
if (parseSchema &&
|
|
20924
|
+
if (parseSchema && text13) {
|
|
20809
20925
|
try {
|
|
20810
|
-
structuredOutput = JSON.parse(extractJsonCandidate(
|
|
20926
|
+
structuredOutput = JSON.parse(extractJsonCandidate(text13));
|
|
20811
20927
|
} catch (err) {
|
|
20812
20928
|
getLogger().warn("[memory/reflect] structured output was not valid JSON", {
|
|
20813
20929
|
err: err instanceof Error ? err.message : String(err)
|
|
@@ -20817,7 +20933,7 @@ function parseAnswer(body, base, parseSchema) {
|
|
|
20817
20933
|
const promptTokens = usage?.prompt_tokens ?? usage?.input_tokens ?? 0;
|
|
20818
20934
|
const completionTokens = usage?.completion_tokens ?? usage?.output_tokens ?? 0;
|
|
20819
20935
|
return {
|
|
20820
|
-
text:
|
|
20936
|
+
text: text13,
|
|
20821
20937
|
...structuredOutput !== void 0 && { structuredOutput },
|
|
20822
20938
|
basedOn: base.basedOn,
|
|
20823
20939
|
usage: {
|
|
@@ -21169,6 +21285,65 @@ function createLocalMemoryStore(options) {
|
|
|
21169
21285
|
};
|
|
21170
21286
|
}
|
|
21171
21287
|
|
|
21288
|
+
// src/lib/memory/store/memoryKeys.ts
|
|
21289
|
+
var KEY_ID_DOMAIN = "anuma-private-memory-key-id-v1";
|
|
21290
|
+
var MemoryKeyError = class extends Error {
|
|
21291
|
+
constructor(message) {
|
|
21292
|
+
super(message);
|
|
21293
|
+
this.name = "MemoryKeyError";
|
|
21294
|
+
}
|
|
21295
|
+
};
|
|
21296
|
+
async function importAesKey(hex) {
|
|
21297
|
+
return crypto.subtle.importKey(
|
|
21298
|
+
"raw",
|
|
21299
|
+
hexToBytes(hex).buffer,
|
|
21300
|
+
{ name: "AES-GCM" },
|
|
21301
|
+
false,
|
|
21302
|
+
["encrypt", "decrypt"]
|
|
21303
|
+
);
|
|
21304
|
+
}
|
|
21305
|
+
async function deriveMemoryKeyRing(signatureHex) {
|
|
21306
|
+
const v3Hex = await deriveKeyFromSignatureV3(signatureHex);
|
|
21307
|
+
const digest = await crypto.subtle.digest(
|
|
21308
|
+
"SHA-256",
|
|
21309
|
+
new TextEncoder().encode(`${KEY_ID_DOMAIN}:${v3Hex}`)
|
|
21310
|
+
);
|
|
21311
|
+
const keyId = "v3:" + Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
21312
|
+
return {
|
|
21313
|
+
keyId,
|
|
21314
|
+
v3: await importAesKey(v3Hex),
|
|
21315
|
+
v2: await importAesKey(await deriveKeyFromSignature(signatureHex))
|
|
21316
|
+
};
|
|
21317
|
+
}
|
|
21318
|
+
async function decryptWith(value, rings) {
|
|
21319
|
+
const version = value.startsWith("enc:v3:") ? "v3" : "v2";
|
|
21320
|
+
for (const ring of rings) {
|
|
21321
|
+
try {
|
|
21322
|
+
return await decryptDataWithKey(value.slice(`enc:${version}:`.length), ring[version]);
|
|
21323
|
+
} catch {
|
|
21324
|
+
continue;
|
|
21325
|
+
}
|
|
21326
|
+
}
|
|
21327
|
+
throw new MemoryKeyError(`No supplied key decrypts this enc:${version} field`);
|
|
21328
|
+
}
|
|
21329
|
+
function memoryCipher(canonical) {
|
|
21330
|
+
return {
|
|
21331
|
+
encrypt: async (plaintext) => `enc:v3:${await encryptDataWithKey(plaintext, canonical.v3)}`,
|
|
21332
|
+
decrypt: async (ciphertext) => {
|
|
21333
|
+
if (!ciphertext.startsWith("enc:v3:") || !isEncrypted(ciphertext))
|
|
21334
|
+
throw new MemoryKeyError("Remote memory content must be enc:v3 ciphertext");
|
|
21335
|
+
return decryptWith(ciphertext, [canonical]);
|
|
21336
|
+
}
|
|
21337
|
+
};
|
|
21338
|
+
}
|
|
21339
|
+
async function reencryptMemoryField(value, canonical, fallbacks = []) {
|
|
21340
|
+
const { encrypt } = memoryCipher(canonical);
|
|
21341
|
+
if (!value.startsWith("enc:")) return encrypt(value);
|
|
21342
|
+
if (!isEncrypted(value))
|
|
21343
|
+
throw new MemoryKeyError("Field has an encryption prefix but an invalid payload");
|
|
21344
|
+
return encrypt(await decryptWith(value, [canonical, ...fallbacks]));
|
|
21345
|
+
}
|
|
21346
|
+
|
|
21172
21347
|
// src/lib/memory/store/remotePersistence.ts
|
|
21173
21348
|
var RemoteMemoryError = class extends Error {
|
|
21174
21349
|
constructor(message, status, code) {
|
|
@@ -21221,6 +21396,30 @@ var candidateListLimits = [
|
|
|
21221
21396
|
["memory_ids", 1e3],
|
|
21222
21397
|
["force_ids", 100]
|
|
21223
21398
|
];
|
|
21399
|
+
var queryListLimits = [
|
|
21400
|
+
["scopes", 20],
|
|
21401
|
+
["fact_types", 20],
|
|
21402
|
+
["visibility", 20],
|
|
21403
|
+
["memory_ids", 1e3],
|
|
21404
|
+
["topics", 100]
|
|
21405
|
+
];
|
|
21406
|
+
var queryFields = [
|
|
21407
|
+
"include_deleted",
|
|
21408
|
+
"include_archived",
|
|
21409
|
+
"include_quarantined",
|
|
21410
|
+
"include_superseded",
|
|
21411
|
+
"archived_only",
|
|
21412
|
+
"scopes",
|
|
21413
|
+
"fact_types",
|
|
21414
|
+
"visibility",
|
|
21415
|
+
"memory_ids",
|
|
21416
|
+
"topics",
|
|
21417
|
+
"updated_after",
|
|
21418
|
+
"order",
|
|
21419
|
+
"cursor",
|
|
21420
|
+
"limit",
|
|
21421
|
+
"include_embeddings"
|
|
21422
|
+
];
|
|
21224
21423
|
function record(value) {
|
|
21225
21424
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
21226
21425
|
}
|
|
@@ -21555,6 +21754,35 @@ async function createRemoteMemoryPersistence(options) {
|
|
|
21555
21754
|
throw new Error("Invalid nearby batch response");
|
|
21556
21755
|
return Promise.all(result.items.map((item, i) => decodeCommitted(item, prepared[i])));
|
|
21557
21756
|
},
|
|
21757
|
+
query: async (queryOptions = {}) => {
|
|
21758
|
+
const { signal, ...query } = queryOptions;
|
|
21759
|
+
if (query.limit !== void 0 && (!Number.isInteger(query.limit) || query.limit < 1 || query.limit > 200))
|
|
21760
|
+
throw new Error("Page limit must be 1\u2013200");
|
|
21761
|
+
for (const [key, max] of queryListLimits) {
|
|
21762
|
+
const values = query[key];
|
|
21763
|
+
if (values && values.length > max)
|
|
21764
|
+
throw new Error(`Query ${key} accepts at most ${max} entries (got ${values.length})`);
|
|
21765
|
+
}
|
|
21766
|
+
const page = await request(
|
|
21767
|
+
"/memories/query",
|
|
21768
|
+
{
|
|
21769
|
+
method: "POST",
|
|
21770
|
+
body: JSON.stringify(
|
|
21771
|
+
Object.fromEntries(
|
|
21772
|
+
queryFields.filter((key) => query[key] !== void 0).map((key) => [key, query[key]])
|
|
21773
|
+
)
|
|
21774
|
+
)
|
|
21775
|
+
},
|
|
21776
|
+
signal
|
|
21777
|
+
);
|
|
21778
|
+
if (!record(page) || !Array.isArray(page.items) || page.next_cursor !== void 0 && typeof page.next_cursor !== "string" || page.changes_cursor !== void 0 && typeof page.changes_cursor !== "string")
|
|
21779
|
+
throw new Error("Invalid nearby private-memory page");
|
|
21780
|
+
return {
|
|
21781
|
+
...await decodeAll(page.items),
|
|
21782
|
+
...page.next_cursor !== void 0 && { next_cursor: page.next_cursor },
|
|
21783
|
+
...page.changes_cursor !== void 0 && { changes_cursor: page.changes_cursor }
|
|
21784
|
+
};
|
|
21785
|
+
},
|
|
21558
21786
|
candidateSet,
|
|
21559
21787
|
candidates: async (embedding, candidateOptions = {}) => decodeAll((await fetchCandidates(embedding, candidateOptions, false)).items)
|
|
21560
21788
|
};
|
|
@@ -21905,10 +22133,10 @@ function createRemoteMemoryPipeline(options) {
|
|
|
21905
22133
|
factSource: {
|
|
21906
22134
|
graphRanking: options.graphRanking,
|
|
21907
22135
|
temporalRanking: options.temporalRanking,
|
|
21908
|
-
search: async (
|
|
21909
|
-
const prepared = await prepare(
|
|
22136
|
+
search: async (text13, searchOptions) => {
|
|
22137
|
+
const prepared = await prepare(text13, searchOptions);
|
|
21910
22138
|
const ranked = await rankPreparedVaultCandidates(
|
|
21911
|
-
|
|
22139
|
+
text13,
|
|
21912
22140
|
prepared,
|
|
21913
22141
|
embeddingOptions,
|
|
21914
22142
|
searchOptions
|
|
@@ -21943,6 +22171,489 @@ function createRemoteMemoryPipeline(options) {
|
|
|
21943
22171
|
};
|
|
21944
22172
|
}
|
|
21945
22173
|
|
|
22174
|
+
// src/lib/memory/store/remoteStore.ts
|
|
22175
|
+
import { v7 as uuidv76 } from "uuid";
|
|
22176
|
+
function relevant(change, options) {
|
|
22177
|
+
return options.includeDeleted ? change === "membership" : change !== "embedding" || !!options.embeddings;
|
|
22178
|
+
}
|
|
22179
|
+
function safely(onChange) {
|
|
22180
|
+
try {
|
|
22181
|
+
onChange();
|
|
22182
|
+
} catch (error) {
|
|
22183
|
+
getLogger().warn("[memory/remote-store] Subscriber threw:", error);
|
|
22184
|
+
}
|
|
22185
|
+
}
|
|
22186
|
+
var MAX_BATCH = 50;
|
|
22187
|
+
var MAX_QUERY_IDS = 1e3;
|
|
22188
|
+
var MAX_QUERY_TOPICS = 100;
|
|
22189
|
+
var MAX_QUERY_FILTER = 20;
|
|
22190
|
+
var RemoteMemoryPartialCreateError = class extends Error {
|
|
22191
|
+
constructor(created, cause) {
|
|
22192
|
+
super(`createMany stored ${created.length} memories before a batch failed`);
|
|
22193
|
+
this.created = created;
|
|
22194
|
+
this.cause = cause;
|
|
22195
|
+
this.name = "RemoteMemoryPartialCreateError";
|
|
22196
|
+
}
|
|
22197
|
+
};
|
|
22198
|
+
function warnFailed(failed) {
|
|
22199
|
+
if (failed.length)
|
|
22200
|
+
getLogger().warn(
|
|
22201
|
+
`[memory/remote-store] Skipping ${failed.length} undecryptable row(s)`,
|
|
22202
|
+
failed.map((failure) => failure.memory_id)
|
|
22203
|
+
);
|
|
22204
|
+
}
|
|
22205
|
+
function bounded(filters, key) {
|
|
22206
|
+
const values = filters[key];
|
|
22207
|
+
if (!values || values.length <= MAX_QUERY_FILTER) return [filters];
|
|
22208
|
+
return chunks(values, MAX_QUERY_FILTER).map((chunk) => ({ ...filters, [key]: chunk }));
|
|
22209
|
+
}
|
|
22210
|
+
function chunks(values, size) {
|
|
22211
|
+
const out = [];
|
|
22212
|
+
for (let i = 0; i < values.length; i += size) out.push(values.slice(i, i + size));
|
|
22213
|
+
return out;
|
|
22214
|
+
}
|
|
22215
|
+
function stateFilters(options) {
|
|
22216
|
+
return {
|
|
22217
|
+
include_deleted: options.includeDeleted,
|
|
22218
|
+
include_archived: options.includeArchived,
|
|
22219
|
+
include_quarantined: options.includeQuarantined,
|
|
22220
|
+
include_superseded: options.includeSuperseded
|
|
22221
|
+
};
|
|
22222
|
+
}
|
|
22223
|
+
function hidden(memory, options) {
|
|
22224
|
+
if (memory.trust_tier === "quarantined") return true;
|
|
22225
|
+
if (options.includeDeleted) return false;
|
|
22226
|
+
return !!memory.is_deleted || memory.archived_at !== void 0 && memory.archived_at !== null || !!memory.superseded_by;
|
|
22227
|
+
}
|
|
22228
|
+
function subscriptionKey({ memory, version }, options) {
|
|
22229
|
+
if (hidden(memory, options)) return void 0;
|
|
22230
|
+
if (options.includeDeleted) return String(!!memory.is_deleted);
|
|
22231
|
+
return JSON.stringify([
|
|
22232
|
+
options.embeddings ? version : null,
|
|
22233
|
+
memory.content,
|
|
22234
|
+
memory.scope,
|
|
22235
|
+
memory.updated_at,
|
|
22236
|
+
memory.fact_type,
|
|
22237
|
+
memory.event_time_start,
|
|
22238
|
+
memory.event_time_end,
|
|
22239
|
+
memory.event_time_kind,
|
|
22240
|
+
memory.trust_tier,
|
|
22241
|
+
memory.visibility,
|
|
22242
|
+
memory.published_at,
|
|
22243
|
+
memory.geohash,
|
|
22244
|
+
memory.topics,
|
|
22245
|
+
memory.topics_user_managed,
|
|
22246
|
+
memory.media,
|
|
22247
|
+
memory.source
|
|
22248
|
+
]);
|
|
22249
|
+
}
|
|
22250
|
+
function topicInputs(topics, source) {
|
|
22251
|
+
return topics.flatMap((topic) => {
|
|
22252
|
+
const name = (typeof topic === "string" ? topic : topic.name).trim();
|
|
22253
|
+
const kind = typeof topic === "string" ? void 0 : topic.kind;
|
|
22254
|
+
return name ? [{ name, ...kind && { kind }, source }] : [];
|
|
22255
|
+
});
|
|
22256
|
+
}
|
|
22257
|
+
function mergeTopics(existing, added) {
|
|
22258
|
+
const byName = /* @__PURE__ */ new Map();
|
|
22259
|
+
for (const topic of [...existing, ...added]) {
|
|
22260
|
+
const key = normalizeEntityName(topic.name);
|
|
22261
|
+
if (!byName.has(key)) byName.set(key, topic);
|
|
22262
|
+
}
|
|
22263
|
+
return [...byName.values()];
|
|
22264
|
+
}
|
|
22265
|
+
function canonicalTopics(row) {
|
|
22266
|
+
return new Set((parseTopics(row.topics) ?? []).map((topic) => normalizeEntityName(topic.name)));
|
|
22267
|
+
}
|
|
22268
|
+
function createRemoteMemoryStore(options) {
|
|
22269
|
+
const { persistence, embeddingOptions } = options;
|
|
22270
|
+
const model = embeddingOptions.model ?? DEFAULT_API_EMBEDDING_MODEL;
|
|
22271
|
+
const pollIntervalMs = options.pollIntervalMs ?? 6e4;
|
|
22272
|
+
const pipeline = createRemoteMemoryPipeline(options);
|
|
22273
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
22274
|
+
const seen = /* @__PURE__ */ new Map();
|
|
22275
|
+
let timer;
|
|
22276
|
+
const notify = (change, records = []) => {
|
|
22277
|
+
if (timer) for (const record2 of records) seen.set(record2.memory.memory_id, record2);
|
|
22278
|
+
for (const subscriber of [...subscribers])
|
|
22279
|
+
if (relevant(change, subscriber.options)) safely(subscriber.onChange);
|
|
22280
|
+
};
|
|
22281
|
+
const enumerate = async (filters, max = Infinity) => {
|
|
22282
|
+
const records = [];
|
|
22283
|
+
let cursor2;
|
|
22284
|
+
do {
|
|
22285
|
+
const page = await persistence.query({
|
|
22286
|
+
...filters,
|
|
22287
|
+
limit: Math.min(200, Math.max(1, max - records.length)),
|
|
22288
|
+
...cursor2 && { cursor: cursor2 }
|
|
22289
|
+
});
|
|
22290
|
+
warnFailed(page.failed);
|
|
22291
|
+
records.push(...page.items);
|
|
22292
|
+
cursor2 = page.next_cursor;
|
|
22293
|
+
} while (cursor2 && records.length < max);
|
|
22294
|
+
return records.slice(0, max);
|
|
22295
|
+
};
|
|
22296
|
+
const enumerateIds = async (ids, filters) => (await Promise.all(
|
|
22297
|
+
chunks([...new Set(ids)], MAX_QUERY_IDS).map(
|
|
22298
|
+
(memory_ids) => enumerate({ ...filters, memory_ids })
|
|
22299
|
+
)
|
|
22300
|
+
)).flat();
|
|
22301
|
+
const queues = /* @__PURE__ */ new Map();
|
|
22302
|
+
const serialized = (id, task) => {
|
|
22303
|
+
const run = (queues.get(id) ?? Promise.resolve()).then(task, task);
|
|
22304
|
+
const settled = run.catch(() => void 0);
|
|
22305
|
+
queues.set(id, settled);
|
|
22306
|
+
void settled.then(() => {
|
|
22307
|
+
if (queues.get(id) === settled) queues.delete(id);
|
|
22308
|
+
});
|
|
22309
|
+
return run;
|
|
22310
|
+
};
|
|
22311
|
+
const live = async (id) => {
|
|
22312
|
+
const record2 = await persistence.get(id);
|
|
22313
|
+
return record2 && !record2.memory.is_deleted ? record2 : null;
|
|
22314
|
+
};
|
|
22315
|
+
const mutate = async (id, change, edit) => serialized(id, async () => {
|
|
22316
|
+
const record2 = await live(id);
|
|
22317
|
+
if (!record2) return null;
|
|
22318
|
+
const next = edit(structuredClone(record2.memory));
|
|
22319
|
+
if (!next) return null;
|
|
22320
|
+
const saved = await persistence.put(next, record2);
|
|
22321
|
+
notify(change, [saved]);
|
|
22322
|
+
return saved;
|
|
22323
|
+
});
|
|
22324
|
+
const embedInBackground = ({ memory: { memory_id: id, content } }) => {
|
|
22325
|
+
generateEmbedding(content, embeddingOptions).then(
|
|
22326
|
+
(vector) => serialized(id, async () => {
|
|
22327
|
+
const current = await live(id);
|
|
22328
|
+
if (!current || current.memory.content !== content || current.memory.embedding?.length)
|
|
22329
|
+
return;
|
|
22330
|
+
const saved = await persistence.put(
|
|
22331
|
+
{ ...current.memory, embedding: storedVector(vector), embedding_model: model },
|
|
22332
|
+
current
|
|
22333
|
+
);
|
|
22334
|
+
notify("embedding", [saved]);
|
|
22335
|
+
})
|
|
22336
|
+
).catch((error) => {
|
|
22337
|
+
getLogger().warn("[memory/remote-store] Failed to embed memory:", error);
|
|
22338
|
+
});
|
|
22339
|
+
};
|
|
22340
|
+
const newRow = (input) => {
|
|
22341
|
+
const now = Date.now();
|
|
22342
|
+
const scope = input.scope ?? "private";
|
|
22343
|
+
return {
|
|
22344
|
+
memory_id: uuidv76(),
|
|
22345
|
+
content: input.content,
|
|
22346
|
+
scope,
|
|
22347
|
+
level: levelFromScope(scope),
|
|
22348
|
+
created_at: now,
|
|
22349
|
+
updated_at: now,
|
|
22350
|
+
is_deleted: false,
|
|
22351
|
+
...input.embedding !== void 0 && {
|
|
22352
|
+
embedding: storedVector(JSON.parse(input.embedding)),
|
|
22353
|
+
embedding_model: input.embeddingModel ?? model
|
|
22354
|
+
},
|
|
22355
|
+
proof_count: 1,
|
|
22356
|
+
source: "manual",
|
|
22357
|
+
...input.eventTime && {
|
|
22358
|
+
event_time_start: input.eventTime.start ?? void 0,
|
|
22359
|
+
event_time_end: input.eventTime.end ?? void 0,
|
|
22360
|
+
event_time_kind: input.eventTime.kind ?? void 0
|
|
22361
|
+
},
|
|
22362
|
+
fact_type: input.factType,
|
|
22363
|
+
geohash: input.geohash,
|
|
22364
|
+
visibility: "private",
|
|
22365
|
+
twin_opt_in: false
|
|
22366
|
+
};
|
|
22367
|
+
};
|
|
22368
|
+
const created = (records, inputs) => {
|
|
22369
|
+
records.forEach((record2, i) => {
|
|
22370
|
+
if (inputs[i].embedding === void 0) embedInBackground(record2);
|
|
22371
|
+
});
|
|
22372
|
+
notify("membership", records);
|
|
22373
|
+
return records.map((record2) => stored(record2.memory));
|
|
22374
|
+
};
|
|
22375
|
+
const asStored = (record2) => record2 ? stored(record2.memory) : null;
|
|
22376
|
+
const everyState = {
|
|
22377
|
+
include_deleted: true,
|
|
22378
|
+
include_archived: true,
|
|
22379
|
+
include_quarantined: true,
|
|
22380
|
+
include_superseded: true
|
|
22381
|
+
};
|
|
22382
|
+
const changesSince = async (cursor2, pending2) => {
|
|
22383
|
+
const records = [];
|
|
22384
|
+
const failed = /* @__PURE__ */ new Set();
|
|
22385
|
+
const collect = (page) => {
|
|
22386
|
+
warnFailed(page.failed);
|
|
22387
|
+
records.push(...page.items);
|
|
22388
|
+
for (const failure of page.failed) failed.add(failure.memory_id);
|
|
22389
|
+
};
|
|
22390
|
+
let resume = cursor2;
|
|
22391
|
+
let next;
|
|
22392
|
+
do {
|
|
22393
|
+
const page = await persistence.query({
|
|
22394
|
+
...everyState,
|
|
22395
|
+
order: "changed",
|
|
22396
|
+
limit: 200,
|
|
22397
|
+
...(next ?? resume) && { cursor: next ?? resume }
|
|
22398
|
+
});
|
|
22399
|
+
collect(page);
|
|
22400
|
+
resume = page.changes_cursor ?? resume;
|
|
22401
|
+
next = page.next_cursor;
|
|
22402
|
+
} while (next);
|
|
22403
|
+
for (const memory_ids of chunks([...pending2], MAX_QUERY_IDS)) {
|
|
22404
|
+
let retry;
|
|
22405
|
+
do {
|
|
22406
|
+
const page = await persistence.query({
|
|
22407
|
+
...everyState,
|
|
22408
|
+
memory_ids,
|
|
22409
|
+
limit: 200,
|
|
22410
|
+
...retry && { cursor: retry }
|
|
22411
|
+
});
|
|
22412
|
+
collect(page);
|
|
22413
|
+
retry = page.next_cursor;
|
|
22414
|
+
} while (retry);
|
|
22415
|
+
}
|
|
22416
|
+
return { records, resume, failed };
|
|
22417
|
+
};
|
|
22418
|
+
let generation = 0;
|
|
22419
|
+
let ready = false;
|
|
22420
|
+
let cursor;
|
|
22421
|
+
let pending = /* @__PURE__ */ new Set();
|
|
22422
|
+
let polling = false;
|
|
22423
|
+
const poll = () => {
|
|
22424
|
+
if (polling) return;
|
|
22425
|
+
polling = true;
|
|
22426
|
+
const current = generation;
|
|
22427
|
+
changesSince(cursor, pending).then(({ records, resume, failed }) => {
|
|
22428
|
+
if (current !== generation) return;
|
|
22429
|
+
const changed = /* @__PURE__ */ new Set();
|
|
22430
|
+
for (const record2 of records) {
|
|
22431
|
+
const id = record2.memory.memory_id;
|
|
22432
|
+
const previous = seen.get(id);
|
|
22433
|
+
seen.set(id, record2);
|
|
22434
|
+
if (!ready) continue;
|
|
22435
|
+
for (const subscriber of subscribers) {
|
|
22436
|
+
const before = previous && subscriptionKey(previous, subscriber.options);
|
|
22437
|
+
if (before !== subscriptionKey(record2, subscriber.options)) changed.add(subscriber);
|
|
22438
|
+
}
|
|
22439
|
+
}
|
|
22440
|
+
ready = true;
|
|
22441
|
+
cursor = resume;
|
|
22442
|
+
pending = failed;
|
|
22443
|
+
for (const subscriber of changed)
|
|
22444
|
+
if (subscribers.has(subscriber)) safely(subscriber.onChange);
|
|
22445
|
+
}).catch((error) => {
|
|
22446
|
+
getLogger().warn("[memory/remote-store] Subscription poll failed:", error);
|
|
22447
|
+
}).finally(() => {
|
|
22448
|
+
polling = false;
|
|
22449
|
+
});
|
|
22450
|
+
};
|
|
22451
|
+
return {
|
|
22452
|
+
list: async (listOptions = {}) => {
|
|
22453
|
+
const order = listOptions.since ? "updated" : "created";
|
|
22454
|
+
const filters = {
|
|
22455
|
+
...stateFilters(listOptions),
|
|
22456
|
+
include_embeddings: true,
|
|
22457
|
+
order,
|
|
22458
|
+
...listOptions.scopes?.length && { scopes: listOptions.scopes },
|
|
22459
|
+
...listOptions.factTypes?.length && { fact_types: listOptions.factTypes },
|
|
22460
|
+
...listOptions.visibility?.length && { visibility: listOptions.visibility },
|
|
22461
|
+
...listOptions.since && { updated_after: listOptions.since.getTime() }
|
|
22462
|
+
};
|
|
22463
|
+
const max = listOptions.limit && listOptions.limit > 0 ? listOptions.limit : Infinity;
|
|
22464
|
+
const variants = bounded(filters, "scopes").flatMap((f) => bounded(f, "fact_types"));
|
|
22465
|
+
if (!listOptions.memoryIds && variants.length === 1)
|
|
22466
|
+
return (await enumerate(filters, max)).map((r) => stored(r.memory));
|
|
22467
|
+
const fetched = await Promise.all(
|
|
22468
|
+
variants.map(
|
|
22469
|
+
(variant) => listOptions.memoryIds ? enumerateIds(listOptions.memoryIds, variant) : enumerate(variant, max)
|
|
22470
|
+
)
|
|
22471
|
+
);
|
|
22472
|
+
const rows = [...new Map(fetched.flat().map((r) => [r.memory.memory_id, r])).values()].map((record2) => stored(record2.memory)).sort(
|
|
22473
|
+
(a, b) => order === "updated" ? b.updatedAt.getTime() - a.updatedAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1) : b.createdAt.getTime() - a.createdAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1)
|
|
22474
|
+
);
|
|
22475
|
+
return rows.slice(0, max);
|
|
22476
|
+
},
|
|
22477
|
+
get: async (id) => asStored(await live(id)),
|
|
22478
|
+
listArchived: async () => (await enumerate({ archived_only: true, order: "archived", include_embeddings: true })).map(
|
|
22479
|
+
(record2) => stored(record2.memory)
|
|
22480
|
+
),
|
|
22481
|
+
memoriesByTopics: async (names) => {
|
|
22482
|
+
const wanted = new Set(names.map(normalizeEntityName).filter(Boolean));
|
|
22483
|
+
const out = /* @__PURE__ */ new Map();
|
|
22484
|
+
const pages = await Promise.all(
|
|
22485
|
+
chunks([...wanted], MAX_QUERY_TOPICS).map((topics) => enumerate({ topics }))
|
|
22486
|
+
);
|
|
22487
|
+
for (const { memory } of pages.flat()) {
|
|
22488
|
+
const matched = [...canonicalTopics(memory)].filter((name) => wanted.has(name));
|
|
22489
|
+
if (matched.length) out.set(memory.memory_id, new Set(matched));
|
|
22490
|
+
}
|
|
22491
|
+
return out;
|
|
22492
|
+
},
|
|
22493
|
+
topicsByMemories: async (memoryIds) => {
|
|
22494
|
+
const out = /* @__PURE__ */ new Map();
|
|
22495
|
+
for (const { memory } of await enumerateIds(memoryIds, {
|
|
22496
|
+
include_archived: true,
|
|
22497
|
+
include_superseded: true,
|
|
22498
|
+
include_quarantined: true
|
|
22499
|
+
})) {
|
|
22500
|
+
const topics = canonicalTopics(memory);
|
|
22501
|
+
if (topics.size) out.set(memory.memory_id, topics);
|
|
22502
|
+
}
|
|
22503
|
+
return out;
|
|
22504
|
+
},
|
|
22505
|
+
create: async (input) => {
|
|
22506
|
+
const record2 = await persistence.put(newRow(input), 0);
|
|
22507
|
+
return created([record2], [input])[0];
|
|
22508
|
+
},
|
|
22509
|
+
createMany: async (inputs) => {
|
|
22510
|
+
const out = [];
|
|
22511
|
+
for (const batch of chunks(inputs, MAX_BATCH)) {
|
|
22512
|
+
let records;
|
|
22513
|
+
try {
|
|
22514
|
+
records = await persistence.putMany(
|
|
22515
|
+
batch.map((input) => ({ memory: newRow(input), expectedVersion: 0 }))
|
|
22516
|
+
);
|
|
22517
|
+
} catch (error) {
|
|
22518
|
+
if (out.length === 0) throw error;
|
|
22519
|
+
throw new RemoteMemoryPartialCreateError(out, error);
|
|
22520
|
+
}
|
|
22521
|
+
out.push(...created(records, batch));
|
|
22522
|
+
}
|
|
22523
|
+
return out;
|
|
22524
|
+
},
|
|
22525
|
+
update: async (id, patch) => {
|
|
22526
|
+
const saved = await mutate(id, "edit", (memory) => {
|
|
22527
|
+
if (memory.superseded_by) return null;
|
|
22528
|
+
memory.content = patch.content;
|
|
22529
|
+
memory.updated_at = Date.now();
|
|
22530
|
+
if (patch.scope !== void 0) {
|
|
22531
|
+
memory.level = levelForScopeChange(
|
|
22532
|
+
{ level: memory.level, scope: memory.scope },
|
|
22533
|
+
patch.scope
|
|
22534
|
+
);
|
|
22535
|
+
memory.scope = patch.scope;
|
|
22536
|
+
}
|
|
22537
|
+
if (patch.factType !== void 0) memory.fact_type = patch.factType ?? void 0;
|
|
22538
|
+
if (patch.eventTime !== void 0) {
|
|
22539
|
+
memory.event_time_start = patch.eventTime?.start ?? void 0;
|
|
22540
|
+
memory.event_time_end = patch.eventTime?.end ?? void 0;
|
|
22541
|
+
memory.event_time_kind = patch.eventTime?.kind ?? void 0;
|
|
22542
|
+
}
|
|
22543
|
+
if (patch.embedding === void 0 || patch.embedding === null) {
|
|
22544
|
+
memory.embedding = [];
|
|
22545
|
+
delete memory.embedding_model;
|
|
22546
|
+
} else {
|
|
22547
|
+
memory.embedding = storedVector(JSON.parse(patch.embedding));
|
|
22548
|
+
memory.embedding_model = patch.embeddingModel ?? model;
|
|
22549
|
+
}
|
|
22550
|
+
return memory;
|
|
22551
|
+
});
|
|
22552
|
+
if (saved && patch.embedding === void 0) embedInBackground(saved);
|
|
22553
|
+
return asStored(saved);
|
|
22554
|
+
},
|
|
22555
|
+
delete: async (id) => !!await mutate(id, "membership", (memory) => ({ ...memory, is_deleted: true })),
|
|
22556
|
+
supersede: async (id, supersededById) => {
|
|
22557
|
+
if (id === supersededById) return false;
|
|
22558
|
+
const [first, second] = [id, supersededById].sort();
|
|
22559
|
+
return serialized(
|
|
22560
|
+
first,
|
|
22561
|
+
() => serialized(second, async () => {
|
|
22562
|
+
const [old, next] = await Promise.all([live(id), live(supersededById)]);
|
|
22563
|
+
if (!old || !next || old.memory.superseded_by || next.memory.superseded_by) return false;
|
|
22564
|
+
if (old.memory.kind !== void 0 && old.memory.kind !== null) return false;
|
|
22565
|
+
const saved = await persistence.putMany([
|
|
22566
|
+
{
|
|
22567
|
+
memory: { ...old.memory, superseded_by: supersededById, superseded_at: Date.now() },
|
|
22568
|
+
expectedVersion: old
|
|
22569
|
+
},
|
|
22570
|
+
{ memory: next.memory, expectedVersion: next }
|
|
22571
|
+
]);
|
|
22572
|
+
notify("membership", saved);
|
|
22573
|
+
return true;
|
|
22574
|
+
})
|
|
22575
|
+
);
|
|
22576
|
+
},
|
|
22577
|
+
archive: async (id) => !!await mutate(
|
|
22578
|
+
id,
|
|
22579
|
+
"edit",
|
|
22580
|
+
(memory) => memory.archived_at === void 0 || memory.archived_at === null ? { ...memory, archived_at: Date.now() } : null
|
|
22581
|
+
),
|
|
22582
|
+
restore: (id) => serialized(id, async () => {
|
|
22583
|
+
const record2 = await live(id);
|
|
22584
|
+
if (!record2) return false;
|
|
22585
|
+
if (record2.memory.archived_at === void 0 || record2.memory.archived_at === null)
|
|
22586
|
+
return true;
|
|
22587
|
+
const { archived_at: _archivedAt, ...memory } = record2.memory;
|
|
22588
|
+
notify("edit", [await persistence.put(memory, record2)]);
|
|
22589
|
+
return true;
|
|
22590
|
+
}),
|
|
22591
|
+
setTopics: async (memoryId, topics) => asStored(
|
|
22592
|
+
await mutate(memoryId, "edit", (memory) => ({
|
|
22593
|
+
...memory,
|
|
22594
|
+
topics: serializeTopics(mergeTopics([], topicInputs(topics, "user"))),
|
|
22595
|
+
topics_user_managed: true,
|
|
22596
|
+
topics_updated_at: Date.now()
|
|
22597
|
+
}))
|
|
22598
|
+
),
|
|
22599
|
+
addTopics: async (memoryId, topics) => {
|
|
22600
|
+
const added = topicInputs(topics, "auto");
|
|
22601
|
+
const saved = await mutate(memoryId, "edit", (memory) => ({
|
|
22602
|
+
...memory,
|
|
22603
|
+
topics: serializeTopics(mergeTopics(parseTopics(memory.topics) ?? [], added)),
|
|
22604
|
+
topics_updated_at: Date.now()
|
|
22605
|
+
}));
|
|
22606
|
+
if (!saved) return [];
|
|
22607
|
+
const now = /* @__PURE__ */ new Date();
|
|
22608
|
+
return mergeTopics([], added).map(
|
|
22609
|
+
(topic) => ({
|
|
22610
|
+
uniqueId: normalizeEntityName(topic.name),
|
|
22611
|
+
canonicalName: normalizeEntityName(topic.name),
|
|
22612
|
+
kind: topic.kind ?? null,
|
|
22613
|
+
createdAt: now,
|
|
22614
|
+
updatedAt: now
|
|
22615
|
+
})
|
|
22616
|
+
);
|
|
22617
|
+
},
|
|
22618
|
+
setVisibility: async (id, visibility, visibilityOptions) => asStored(
|
|
22619
|
+
await mutate(id, "edit", (memory) => {
|
|
22620
|
+
memory.visibility = visibility;
|
|
22621
|
+
if (visibility === "private") delete memory.published_at;
|
|
22622
|
+
else memory.published_at ?? (memory.published_at = Date.now());
|
|
22623
|
+
if (visibilityOptions?.twinOptIn !== void 0)
|
|
22624
|
+
memory.twin_opt_in = visibilityOptions.twinOptIn;
|
|
22625
|
+
return memory;
|
|
22626
|
+
})
|
|
22627
|
+
),
|
|
22628
|
+
recall: (query, recallOptions) => pipeline.recall(query, recallOptions),
|
|
22629
|
+
retain: async (content, retainOptions) => {
|
|
22630
|
+
const result = await pipeline.retain(content, retainOptions);
|
|
22631
|
+
if (result.action === "create" || result.action === "supersede") notify("membership");
|
|
22632
|
+
else if (result.action === "update" || result.action === "merge") notify("edit");
|
|
22633
|
+
return result;
|
|
22634
|
+
},
|
|
22635
|
+
subscribe: (onChange, subscribeOptions = {}) => {
|
|
22636
|
+
const subscriber = { onChange, options: subscribeOptions };
|
|
22637
|
+
subscribers.add(subscriber);
|
|
22638
|
+
if (pollIntervalMs > 0 && !timer) {
|
|
22639
|
+
timer = setInterval(poll, pollIntervalMs);
|
|
22640
|
+
poll();
|
|
22641
|
+
}
|
|
22642
|
+
return () => {
|
|
22643
|
+
subscribers.delete(subscriber);
|
|
22644
|
+
if (subscribers.size || !timer) return;
|
|
22645
|
+
clearInterval(timer);
|
|
22646
|
+
timer = void 0;
|
|
22647
|
+
generation++;
|
|
22648
|
+
seen.clear();
|
|
22649
|
+
ready = false;
|
|
22650
|
+
cursor = void 0;
|
|
22651
|
+
pending = /* @__PURE__ */ new Set();
|
|
22652
|
+
};
|
|
22653
|
+
}
|
|
22654
|
+
};
|
|
22655
|
+
}
|
|
22656
|
+
|
|
21946
22657
|
// src/lib/memory/synthesizeProfile.ts
|
|
21947
22658
|
var DEFAULT_SYNTHESIS_MODEL = "inclusionai/ling-2.6-flash";
|
|
21948
22659
|
var DEFAULT_FACET_RECALL_LIMIT = 20;
|
|
@@ -22313,8 +23024,8 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
22313
23024
|
memories
|
|
22314
23025
|
});
|
|
22315
23026
|
const noEvidence = result.basedOn.memoryIds.length === 0;
|
|
22316
|
-
const { text:
|
|
22317
|
-
if (!
|
|
23027
|
+
const { text: text13, legitimateEmpty } = extractFacetText(result.structuredOutput);
|
|
23028
|
+
if (!text13 && !legitimateEmpty && !noEvidence) {
|
|
22318
23029
|
getLogger().warn(
|
|
22319
23030
|
"[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
|
|
22320
23031
|
{ facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
|
|
@@ -22324,12 +23035,12 @@ async function synthesizeFacet(facet, ctx, options, prior) {
|
|
|
22324
23035
|
const section = {
|
|
22325
23036
|
key: facet.key,
|
|
22326
23037
|
label: facet.label,
|
|
22327
|
-
text:
|
|
23038
|
+
text: text13,
|
|
22328
23039
|
sourceMemoryIds: result.basedOn.memoryIds,
|
|
22329
23040
|
generatedAt: Date.now()
|
|
22330
23041
|
};
|
|
22331
|
-
if (options.redactor &&
|
|
22332
|
-
const redacted = await options.redactor.redactTextAsync(
|
|
23042
|
+
if (options.redactor && text13) {
|
|
23043
|
+
const redacted = await options.redactor.redactTextAsync(text13);
|
|
22333
23044
|
section.text = redacted.text;
|
|
22334
23045
|
}
|
|
22335
23046
|
if (!legitimateEmpty && !noEvidence) {
|
|
@@ -22842,10 +23553,10 @@ function createDurableAutoExtractor(options) {
|
|
|
22842
23553
|
const counted = error instanceof BatchFailureError || error instanceof LockedSourcesError && error.persistentIds.length > 0;
|
|
22843
23554
|
if (!counted) return false;
|
|
22844
23555
|
const prior = sessionFailures.get(job.id);
|
|
22845
|
-
const
|
|
22846
|
-
sessionFailures.set(job.id, { head, count });
|
|
23556
|
+
const count2 = prior?.head === head ? prior.count + 1 : 1;
|
|
23557
|
+
sessionFailures.set(job.id, { head, count: count2 });
|
|
22847
23558
|
const terminal = error instanceof BatchFailureError && error.terminal;
|
|
22848
|
-
if (!terminal &&
|
|
23559
|
+
if (!terminal && count2 < MAX_ATTEMPTS) return false;
|
|
22849
23560
|
skippedThisSession.add(job.id);
|
|
22850
23561
|
const now = clock();
|
|
22851
23562
|
const lastCounted = failedAtOf(job, head);
|
|
@@ -23149,7 +23860,7 @@ async function verifyFactSupport(items, options) {
|
|
|
23149
23860
|
}
|
|
23150
23861
|
const maxEvidenceChars = Math.max(1, options.maxEvidenceChars ?? DEFAULT_MAX_EVIDENCE_CHARS);
|
|
23151
23862
|
const redactor = resolvePiiRedactor(options.piiRedaction ?? true);
|
|
23152
|
-
const safe = async (
|
|
23863
|
+
const safe = async (text13) => redactor ? (await redactor.redactTextAsync(text13)).text : text13;
|
|
23153
23864
|
let truncatedCount = 0;
|
|
23154
23865
|
const parts = [];
|
|
23155
23866
|
for (const [i, item] of items.entries()) {
|
|
@@ -23206,7 +23917,7 @@ Which item numbers are supported?`,
|
|
|
23206
23917
|
}
|
|
23207
23918
|
return supported;
|
|
23208
23919
|
}
|
|
23209
|
-
function parseSupported(parsed,
|
|
23920
|
+
function parseSupported(parsed, count2) {
|
|
23210
23921
|
if (typeof parsed !== "object" || parsed === null) return null;
|
|
23211
23922
|
const list = parsed.supported;
|
|
23212
23923
|
if (!Array.isArray(list)) return null;
|
|
@@ -23214,7 +23925,7 @@ function parseSupported(parsed, count) {
|
|
|
23214
23925
|
for (const raw of list) {
|
|
23215
23926
|
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
23216
23927
|
if (!Number.isInteger(n)) continue;
|
|
23217
|
-
if (n >= 1 && n <=
|
|
23928
|
+
if (n >= 1 && n <= count2) out.add(n - 1);
|
|
23218
23929
|
}
|
|
23219
23930
|
return out;
|
|
23220
23931
|
}
|
|
@@ -23265,7 +23976,7 @@ async function verifyMemoriesForPublish(memories, sources, options) {
|
|
|
23265
23976
|
);
|
|
23266
23977
|
const pending = [];
|
|
23267
23978
|
for (const { index, uniqueId, content, ids } of withinBudget) {
|
|
23268
|
-
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((
|
|
23979
|
+
const evidence = ids.map((id) => resolved.get(id) ?? null).filter((text13) => text13 !== null);
|
|
23269
23980
|
const dropped = ids.length - evidence.length;
|
|
23270
23981
|
if (ids.some((id) => unreadable.has(id))) {
|
|
23271
23982
|
results[index] = {
|
|
@@ -23768,22 +24479,22 @@ function normalizeManualFactType(value) {
|
|
|
23768
24479
|
function isSharedScope(scope) {
|
|
23769
24480
|
return scope === "shared";
|
|
23770
24481
|
}
|
|
23771
|
-
async function notifyWritten(options, input,
|
|
24482
|
+
async function notifyWritten(options, input, outcome2) {
|
|
23772
24483
|
try {
|
|
23773
|
-
await options?.onWritten?.({ input, outcome });
|
|
24484
|
+
await options?.onWritten?.({ input, outcome: outcome2 });
|
|
23774
24485
|
} catch {
|
|
23775
24486
|
}
|
|
23776
24487
|
}
|
|
23777
|
-
function describeWriteOutcome(
|
|
23778
|
-
switch (
|
|
24488
|
+
function describeWriteOutcome(outcome2) {
|
|
24489
|
+
switch (outcome2.action) {
|
|
23779
24490
|
case "create":
|
|
23780
|
-
return `Memory saved successfully (ID: ${
|
|
24491
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}).`;
|
|
23781
24492
|
case "update":
|
|
23782
24493
|
case "supersede":
|
|
23783
|
-
return `Memory saved successfully (ID: ${
|
|
24494
|
+
return `Memory saved successfully (ID: ${outcome2.memoryId}); it replaces an earlier version of this fact.`;
|
|
23784
24495
|
case "merge":
|
|
23785
24496
|
case "skip":
|
|
23786
|
-
return `The vault already holds this fact (ID: ${
|
|
24497
|
+
return `The vault already holds this fact (ID: ${outcome2.memoryId}); it was noted as re-observed. Nothing new was created \u2014 do not save it again.`;
|
|
23787
24498
|
case "suppressed":
|
|
23788
24499
|
return "Not saved: this matches a memory the user previously deleted. Do not re-save it.";
|
|
23789
24500
|
}
|
|
@@ -23889,9 +24600,9 @@ function createMemoryVaultTool(vaultCtx, options, embeddingOptions, cache) {
|
|
|
23889
24600
|
...folderId !== void 0 && { folderId },
|
|
23890
24601
|
...factType !== void 0 && { factType }
|
|
23891
24602
|
};
|
|
23892
|
-
const
|
|
23893
|
-
await notifyWritten(options, input,
|
|
23894
|
-
return describeWriteOutcome(
|
|
24603
|
+
const outcome2 = await options.write(input);
|
|
24604
|
+
await notifyWritten(options, input, outcome2);
|
|
24605
|
+
return describeWriteOutcome(outcome2);
|
|
23895
24606
|
}
|
|
23896
24607
|
const created = await createVaultMemoryOp(vaultCtx, {
|
|
23897
24608
|
content,
|
|
@@ -24180,10 +24891,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
24180
24891
|
function lineHeightMm(fontSizePt) {
|
|
24181
24892
|
return ptToMm(fontSizePt) * lineHeight;
|
|
24182
24893
|
}
|
|
24183
|
-
function renderWrappedText(
|
|
24894
|
+
function renderWrappedText(text13, x, maxW, fontSizePt, fontStyle = "normal", fontFamily = "Helvetica") {
|
|
24184
24895
|
doc.setFont(fontFamily, fontStyle);
|
|
24185
24896
|
doc.setFontSize(fontSizePt);
|
|
24186
|
-
const lines = doc.splitTextToSize(
|
|
24897
|
+
const lines = doc.splitTextToSize(text13, maxW);
|
|
24187
24898
|
const lh = lineHeightMm(fontSizePt);
|
|
24188
24899
|
for (const line of lines) {
|
|
24189
24900
|
ensureSpace(lh);
|
|
@@ -24265,10 +24976,10 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
24265
24976
|
const lh = lineHeightMm(opts.fontSize);
|
|
24266
24977
|
for (let i = 0; i < items.length; i++) {
|
|
24267
24978
|
const prefix = ordered ? `${(listToken.start || 1) + i}. ` : "\u2022 ";
|
|
24268
|
-
const
|
|
24979
|
+
const text13 = tokensToPlainText(items[i].tokens);
|
|
24269
24980
|
ensureSpace(lh);
|
|
24270
24981
|
doc.text(prefix, opts.margins.left, cursorY);
|
|
24271
|
-
const listLines = doc.splitTextToSize(
|
|
24982
|
+
const listLines = doc.splitTextToSize(text13, itemW);
|
|
24272
24983
|
for (const line of listLines) {
|
|
24273
24984
|
ensureSpace(lh);
|
|
24274
24985
|
doc.text(line, indentX, cursorY);
|
|
@@ -24280,12 +24991,12 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
24280
24991
|
}
|
|
24281
24992
|
case "blockquote": {
|
|
24282
24993
|
const bqToken = token;
|
|
24283
|
-
const
|
|
24994
|
+
const text13 = tokensToPlainText(bqToken.tokens ?? []);
|
|
24284
24995
|
const indentX = opts.margins.left + SPACING.QUOTE_INDENT;
|
|
24285
24996
|
const quoteW = cw - SPACING.QUOTE_INSET;
|
|
24286
24997
|
doc.setFont("Helvetica", "italic");
|
|
24287
24998
|
doc.setFontSize(opts.fontSize);
|
|
24288
|
-
const bqLines = doc.splitTextToSize(
|
|
24999
|
+
const bqLines = doc.splitTextToSize(text13, quoteW);
|
|
24289
25000
|
const lh = lineHeightMm(opts.fontSize);
|
|
24290
25001
|
const blockH = bqLines.length * lh;
|
|
24291
25002
|
ensureSpace(Math.min(blockH, 20));
|
|
@@ -24321,8 +25032,8 @@ async function exportMarkdownToPdf(markdown, options) {
|
|
|
24321
25032
|
doc.setFont("Helvetica", fontStyle);
|
|
24322
25033
|
doc.setFontSize(tableFontSize);
|
|
24323
25034
|
const cellLines = cells.map((cell) => {
|
|
24324
|
-
const
|
|
24325
|
-
return doc.splitTextToSize(
|
|
25035
|
+
const text13 = tokensToPlainText(cell.tokens);
|
|
25036
|
+
return doc.splitTextToSize(text13, cellContentW);
|
|
24326
25037
|
});
|
|
24327
25038
|
const maxLines = Math.max(1, ...cellLines.map((l) => l.length));
|
|
24328
25039
|
ensureSpace(maxLines * lh + SPACING.SM);
|
|
@@ -24549,13 +25260,13 @@ async function withPdfDocument(pdfDataUrl, fn) {
|
|
|
24549
25260
|
}
|
|
24550
25261
|
}
|
|
24551
25262
|
function joinPdfTextItems(items) {
|
|
24552
|
-
let
|
|
25263
|
+
let text13 = "";
|
|
24553
25264
|
for (const item of items) {
|
|
24554
25265
|
if (!("str" in item)) continue;
|
|
24555
25266
|
const { str, hasEOL } = item;
|
|
24556
|
-
|
|
25267
|
+
text13 += str + (hasEOL ? "\n" : " ");
|
|
24557
25268
|
}
|
|
24558
|
-
return
|
|
25269
|
+
return text13.replace(/[ \t]+\n/g, "\n").trim();
|
|
24559
25270
|
}
|
|
24560
25271
|
function computeRenderScale(width, height) {
|
|
24561
25272
|
const longest = Math.max(width, height);
|
|
@@ -24575,7 +25286,7 @@ async function extractPdfPageTexts(pdfDataUrl) {
|
|
|
24575
25286
|
}
|
|
24576
25287
|
async function extractTextFromPdf(pdfDataUrl) {
|
|
24577
25288
|
const pageTexts = await extractPdfPageTexts(pdfDataUrl);
|
|
24578
|
-
return pageTexts.filter((
|
|
25289
|
+
return pageTexts.filter((text13) => text13.trim()).join("\n\n");
|
|
24579
25290
|
}
|
|
24580
25291
|
async function renderPdfPages(pdfDataUrl, maxPages, pageNumbers) {
|
|
24581
25292
|
return withPdfDocument(pdfDataUrl, async (pdf) => {
|
|
@@ -24617,8 +25328,8 @@ var MAX_IMAGE_PAGES = 20;
|
|
|
24617
25328
|
var MIN_PAGE_TEXT_CHARS = 20;
|
|
24618
25329
|
function selectPdfImagePages(pageTexts, maxImagePages = MAX_IMAGE_PAGES) {
|
|
24619
25330
|
const needImage = [];
|
|
24620
|
-
pageTexts.forEach((
|
|
24621
|
-
if (
|
|
25331
|
+
pageTexts.forEach((text13, index) => {
|
|
25332
|
+
if (text13.trim().length < MIN_PAGE_TEXT_CHARS) needImage.push(index + 1);
|
|
24622
25333
|
});
|
|
24623
25334
|
const limit = Math.max(0, maxImagePages);
|
|
24624
25335
|
return { rendered: needImage.slice(0, limit), omitted: needImage.slice(limit) };
|
|
@@ -24677,10 +25388,10 @@ var PdfProcessor = class {
|
|
|
24677
25388
|
textError
|
|
24678
25389
|
);
|
|
24679
25390
|
}
|
|
24680
|
-
const
|
|
25391
|
+
const text13 = (pageTexts ?? []).filter((t) => t.trim()).join("\n\n");
|
|
24681
25392
|
const { rendered, omitted } = pageTexts ? selectPdfImagePages(pageTexts) : { rendered: [], omitted: [] };
|
|
24682
25393
|
if (pageTexts && rendered.length === 0 && omitted.length === 0) {
|
|
24683
|
-
return
|
|
25394
|
+
return text13.trim() ? { extractedText: text13, format: "plain" } : null;
|
|
24684
25395
|
}
|
|
24685
25396
|
let renderedPages;
|
|
24686
25397
|
let pageCount = pageTexts?.length;
|
|
@@ -24693,7 +25404,7 @@ var PdfProcessor = class {
|
|
|
24693
25404
|
pageCount = result.pageCount;
|
|
24694
25405
|
}
|
|
24695
25406
|
} catch (imageError) {
|
|
24696
|
-
if (!
|
|
25407
|
+
if (!text13.trim()) {
|
|
24697
25408
|
logger.error("[PdfProcessor] Image conversion also failed:", imageError);
|
|
24698
25409
|
throw imageError;
|
|
24699
25410
|
}
|
|
@@ -24705,7 +25416,7 @@ var PdfProcessor = class {
|
|
|
24705
25416
|
const included = new Set(imagePages);
|
|
24706
25417
|
const needImage = pageTexts ? [...rendered, ...omitted] : Array.from({ length: pageCount ?? 0 }, (_, i) => i + 1);
|
|
24707
25418
|
const omittedPages = needImage.filter((n) => !included.has(n)).sort((a, b) => a - b);
|
|
24708
|
-
if (images.length === 0 && !
|
|
25419
|
+
if (images.length === 0 && !text13.trim()) {
|
|
24709
25420
|
logger.warn("[PdfProcessor] Image conversion also returned empty");
|
|
24710
25421
|
return null;
|
|
24711
25422
|
}
|
|
@@ -24714,9 +25425,9 @@ var PdfProcessor = class {
|
|
|
24714
25425
|
);
|
|
24715
25426
|
const imageNote = buildPdfImageNote(file.name, imagePages, omittedPages, pageCount);
|
|
24716
25427
|
return {
|
|
24717
|
-
extractedText:
|
|
25428
|
+
extractedText: text13.trim() ? `${imageNote}
|
|
24718
25429
|
|
|
24719
|
-
${
|
|
25430
|
+
${text13}` : imageNote,
|
|
24720
25431
|
format: "plain",
|
|
24721
25432
|
imageDataUrls: images.length > 0 ? images : void 0,
|
|
24722
25433
|
metadata: {
|
|
@@ -24878,16 +25589,16 @@ var TextProcessor = class {
|
|
|
24878
25589
|
async process(file) {
|
|
24879
25590
|
try {
|
|
24880
25591
|
const arrayBuffer = await dataUrlToArrayBuffer(file.dataUrl);
|
|
24881
|
-
const
|
|
24882
|
-
if (!
|
|
25592
|
+
const text13 = decodeText(new Uint8Array(arrayBuffer));
|
|
25593
|
+
if (!text13.trim()) {
|
|
24883
25594
|
return null;
|
|
24884
25595
|
}
|
|
24885
25596
|
return {
|
|
24886
|
-
extractedText:
|
|
25597
|
+
extractedText: text13,
|
|
24887
25598
|
format: this.resolveFormat(file),
|
|
24888
25599
|
metadata: {
|
|
24889
25600
|
byteLength: arrayBuffer.byteLength,
|
|
24890
|
-
characterCount:
|
|
25601
|
+
characterCount: text13.length
|
|
24891
25602
|
}
|
|
24892
25603
|
};
|
|
24893
25604
|
} catch (error) {
|
|
@@ -24948,8 +25659,8 @@ var WordProcessor = class {
|
|
|
24948
25659
|
/**
|
|
24949
25660
|
* Count words in text
|
|
24950
25661
|
*/
|
|
24951
|
-
countWords(
|
|
24952
|
-
return
|
|
25662
|
+
countWords(text13) {
|
|
25663
|
+
return text13.split(/\s+/).filter((w) => w.length > 0).length;
|
|
24953
25664
|
}
|
|
24954
25665
|
};
|
|
24955
25666
|
|
|
@@ -25186,13 +25897,13 @@ function truncationMarker2(kept, total, fileName) {
|
|
|
25186
25897
|
return `
|
|
25187
25898
|
[truncated: showing the first ${kept} of ${total} characters of ${fileName}]`;
|
|
25188
25899
|
}
|
|
25189
|
-
function truncateText(
|
|
25190
|
-
if (
|
|
25900
|
+
function truncateText(text13, limit, fileName) {
|
|
25901
|
+
if (text13.length <= limit) return { text: text13, truncated: false };
|
|
25191
25902
|
let end = Math.max(0, limit);
|
|
25192
|
-
const code =
|
|
25903
|
+
const code = text13.charCodeAt(end - 1);
|
|
25193
25904
|
if (end > 0 && code >= 55296 && code <= 56319) end--;
|
|
25194
25905
|
return {
|
|
25195
|
-
text: `${
|
|
25906
|
+
text: `${text13.slice(0, end)}${truncationMarker2(end, text13.length, fileName)}`,
|
|
25196
25907
|
truncated: true
|
|
25197
25908
|
};
|
|
25198
25909
|
}
|
|
@@ -25356,13 +26067,13 @@ async function preprocessFiles(files, options = {}) {
|
|
|
25356
26067
|
Math.max(0, MAX_TOTAL_IMAGES - allImageUrls.length)
|
|
25357
26068
|
);
|
|
25358
26069
|
allImageUrls.push(...images.slice(0, keptImages));
|
|
25359
|
-
const
|
|
25360
|
-
const fitsWhole =
|
|
25361
|
-
const limit = fitsWhole ?
|
|
26070
|
+
const text13 = rewriteImageNote(result, file.name, keptImages);
|
|
26071
|
+
const fitsWhole = text13.length <= Math.min(maxExtractedCharsPerFile, remaining);
|
|
26072
|
+
const limit = fitsWhole ? text13.length : Math.min(
|
|
25362
26073
|
maxExtractedCharsPerFile,
|
|
25363
|
-
remaining - truncationMarker2(
|
|
26074
|
+
remaining - truncationMarker2(text13.length, text13.length, file.name).length
|
|
25364
26075
|
);
|
|
25365
|
-
const capped = truncateText(
|
|
26076
|
+
const capped = truncateText(text13, Math.max(0, limit), file.name);
|
|
25366
26077
|
const formattedContent = formatExtractedContent(file.name, capped.text, result.format);
|
|
25367
26078
|
totalChars += separatorLength + formattedContent.length;
|
|
25368
26079
|
extractedTexts.push(formattedContent);
|
|
@@ -25604,11 +26315,11 @@ function createGetAuthenticatedUserTool(getAccessToken, requestAccess) {
|
|
|
25604
26315
|
};
|
|
25605
26316
|
}
|
|
25606
26317
|
var MAX_RESPONSE_SIZE = 1e5;
|
|
25607
|
-
function truncate(
|
|
25608
|
-
if (
|
|
25609
|
-
return
|
|
26318
|
+
function truncate(text13, maxLen) {
|
|
26319
|
+
if (text13.length <= maxLen) return text13;
|
|
26320
|
+
return text13.slice(0, maxLen) + `
|
|
25610
26321
|
|
|
25611
|
-
... (truncated, ${
|
|
26322
|
+
... (truncated, ${text13.length - maxLen} characters omitted)`;
|
|
25612
26323
|
}
|
|
25613
26324
|
function createGitHubApiTool(getAccessToken, requestAccess) {
|
|
25614
26325
|
return {
|
|
@@ -25656,16 +26367,16 @@ IMPORTANT: For write operations (POST, PUT, PATCH, DELETE), always confirm with
|
|
|
25656
26367
|
method,
|
|
25657
26368
|
body: body ? JSON.stringify(body) : void 0
|
|
25658
26369
|
});
|
|
25659
|
-
const
|
|
26370
|
+
const text13 = await resp.text();
|
|
25660
26371
|
if (!resp.ok) {
|
|
25661
|
-
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(
|
|
26372
|
+
return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(text13, 500)}`;
|
|
25662
26373
|
}
|
|
25663
26374
|
try {
|
|
25664
|
-
const data = JSON.parse(
|
|
26375
|
+
const data = JSON.parse(text13);
|
|
25665
26376
|
const json4 = JSON.stringify(data);
|
|
25666
26377
|
return truncate(json4, MAX_RESPONSE_SIZE);
|
|
25667
26378
|
} catch {
|
|
25668
|
-
return truncate(
|
|
26379
|
+
return truncate(text13, MAX_RESPONSE_SIZE);
|
|
25669
26380
|
}
|
|
25670
26381
|
} catch (err) {
|
|
25671
26382
|
if (err instanceof DOMException && err.name === "AbortError") {
|
|
@@ -26327,10 +27038,10 @@ function formatObjectAttr(obj) {
|
|
|
26327
27038
|
});
|
|
26328
27039
|
return `{ ${entries.join(", ")} }`;
|
|
26329
27040
|
}
|
|
26330
|
-
function isSafeJsxText(
|
|
26331
|
-
if (/[<>{}&]/.test(
|
|
26332
|
-
if (/\n/.test(
|
|
26333
|
-
if (/^\s|\s$/.test(
|
|
27041
|
+
function isSafeJsxText(text13) {
|
|
27042
|
+
if (/[<>{}&]/.test(text13)) return false;
|
|
27043
|
+
if (/\n/.test(text13)) return false;
|
|
27044
|
+
if (/^\s|\s$/.test(text13)) return false;
|
|
26334
27045
|
return true;
|
|
26335
27046
|
}
|
|
26336
27047
|
function getId(node) {
|
|
@@ -29914,9 +30625,9 @@ New lines of conversation:
|
|
|
29914
30625
|
{new_lines}
|
|
29915
30626
|
|
|
29916
30627
|
New summary:`;
|
|
29917
|
-
function estimateTokens(
|
|
29918
|
-
if (!
|
|
29919
|
-
return Math.ceil(
|
|
30628
|
+
function estimateTokens(text13) {
|
|
30629
|
+
if (!text13) return 0;
|
|
30630
|
+
return Math.ceil(text13.length / 4);
|
|
29920
30631
|
}
|
|
29921
30632
|
var PER_MESSAGE_OVERHEAD_TOKENS = 4;
|
|
29922
30633
|
var MAX_MESSAGES_PER_SUMMARIZATION = 20;
|
|
@@ -29976,14 +30687,14 @@ function splitMessagesAtThreshold(messages, tokenThreshold, minWindowMessages) {
|
|
|
29976
30687
|
}
|
|
29977
30688
|
async function redactSummaryPrompt(prompt, redactor, onPiiRedacted) {
|
|
29978
30689
|
if (!redactor) return prompt;
|
|
29979
|
-
const { text:
|
|
30690
|
+
const { text: text13, matches } = await redactor.redactTextAsync(prompt);
|
|
29980
30691
|
if (matches.length > 0 && onPiiRedacted) {
|
|
29981
30692
|
try {
|
|
29982
30693
|
onPiiRedacted(matches);
|
|
29983
30694
|
} catch {
|
|
29984
30695
|
}
|
|
29985
30696
|
}
|
|
29986
|
-
return
|
|
30697
|
+
return text13;
|
|
29987
30698
|
}
|
|
29988
30699
|
async function progressiveSummarize(options) {
|
|
29989
30700
|
const {
|
|
@@ -30296,14 +31007,14 @@ var MaskScopedEmbeddingCache = class extends Map {
|
|
|
30296
31007
|
this.inner = inner;
|
|
30297
31008
|
this.masked = masked;
|
|
30298
31009
|
}
|
|
30299
|
-
key(
|
|
30300
|
-
return `${this.masked ? "m" : "r"}:${
|
|
31010
|
+
key(text13) {
|
|
31011
|
+
return `${this.masked ? "m" : "r"}:${text13}`;
|
|
30301
31012
|
}
|
|
30302
|
-
get(
|
|
30303
|
-
return this.inner.get(this.key(
|
|
31013
|
+
get(text13) {
|
|
31014
|
+
return this.inner.get(this.key(text13));
|
|
30304
31015
|
}
|
|
30305
|
-
set(
|
|
30306
|
-
this.inner.set(this.key(
|
|
31016
|
+
set(text13, value) {
|
|
31017
|
+
this.inner.set(this.key(text13), value);
|
|
30307
31018
|
return this;
|
|
30308
31019
|
}
|
|
30309
31020
|
};
|
|
@@ -30953,11 +31664,11 @@ function useChatStorage(options) {
|
|
|
30953
31664
|
[piiRedaction, currentConversationId]
|
|
30954
31665
|
);
|
|
30955
31666
|
const maskForEmbedding = useCallback5(
|
|
30956
|
-
(
|
|
31667
|
+
(text13) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text13) : text13,
|
|
30957
31668
|
[resolvedPiiRedaction]
|
|
30958
31669
|
);
|
|
30959
31670
|
const maskEmbeddingInput = useMemo4(
|
|
30960
|
-
() => isPiiRedactor(resolvedPiiRedaction) ? (
|
|
31671
|
+
() => isPiiRedactor(resolvedPiiRedaction) ? (text13) => resolvedPiiRedaction.maskText(text13) : void 0,
|
|
30961
31672
|
[resolvedPiiRedaction]
|
|
30962
31673
|
);
|
|
30963
31674
|
const vaultEmbeddingOptions = useMemo4(
|
|
@@ -31688,7 +32399,7 @@ function useChatStorage(options) {
|
|
|
31688
32399
|
return {
|
|
31689
32400
|
callRedactor: redactor,
|
|
31690
32401
|
callPiiRedaction: forInnerSend,
|
|
31691
|
-
maskForCall: (
|
|
32402
|
+
maskForCall: (text13) => redactor ? redactor.maskText(text13) : text13
|
|
31692
32403
|
};
|
|
31693
32404
|
};
|
|
31694
32405
|
const resolveThoughtProcess = () => finalizeThoughtProcess(getThoughtProcess?.() || thoughtProcess);
|
|
@@ -34029,13 +34740,13 @@ function useOCR() {
|
|
|
34029
34740
|
const result = await Tesseract.recognize(image, language);
|
|
34030
34741
|
pageTexts.push(result.data.text);
|
|
34031
34742
|
}
|
|
34032
|
-
const
|
|
34033
|
-
if (!
|
|
34743
|
+
const text13 = pageTexts.join("\n\n");
|
|
34744
|
+
if (!text13.trim()) {
|
|
34034
34745
|
getLogger().warn(`No text found in OCR source ${filename || "unknown"}`);
|
|
34035
34746
|
return null;
|
|
34036
34747
|
}
|
|
34037
34748
|
return `[Context from OCR attachment ${filename || "unknown"}]:
|
|
34038
|
-
${
|
|
34749
|
+
${text13}`;
|
|
34039
34750
|
} catch (err) {
|
|
34040
34751
|
getLogger().error(`Failed to process OCR for ${file.filename || "unknown"}:`, err);
|
|
34041
34752
|
return null;
|
|
@@ -34078,13 +34789,13 @@ function usePdf() {
|
|
|
34078
34789
|
const contexts = await Promise.all(
|
|
34079
34790
|
pdfFiles.map(async (file) => {
|
|
34080
34791
|
try {
|
|
34081
|
-
const
|
|
34082
|
-
if (!
|
|
34792
|
+
const text13 = await extractTextFromPdf(file.url);
|
|
34793
|
+
if (!text13.trim()) {
|
|
34083
34794
|
getLogger().warn(`No text found in PDF ${file.filename}`);
|
|
34084
34795
|
return null;
|
|
34085
34796
|
}
|
|
34086
34797
|
return `[Context from PDF attachment ${file.filename}]:
|
|
34087
|
-
${
|
|
34798
|
+
${text13}`;
|
|
34088
34799
|
} catch (err) {
|
|
34089
34800
|
getLogger().error(`Failed to process PDF ${file.filename}:`, err);
|
|
34090
34801
|
return null;
|
|
@@ -35614,14 +36325,14 @@ function useVoice(options) {
|
|
|
35614
36325
|
recognition.interimResults = false;
|
|
35615
36326
|
recognition.lang = options?.language ?? "";
|
|
35616
36327
|
recognition.onresult = (event) => {
|
|
35617
|
-
let
|
|
36328
|
+
let text13 = "";
|
|
35618
36329
|
for (let i = 0; i < event.results.length; i++) {
|
|
35619
36330
|
const result = event.results[i];
|
|
35620
36331
|
if (result && result.isFinal && result[0]) {
|
|
35621
|
-
|
|
36332
|
+
text13 += result[0].transcript + " ";
|
|
35622
36333
|
}
|
|
35623
36334
|
}
|
|
35624
|
-
nativeTextRef.current =
|
|
36335
|
+
nativeTextRef.current = text13.trim();
|
|
35625
36336
|
};
|
|
35626
36337
|
recognition.onerror = (event) => {
|
|
35627
36338
|
if (event.error !== "aborted" && event.error !== "no-speech") {
|
|
@@ -35924,6 +36635,7 @@ export {
|
|
|
35924
36635
|
MEMORY_KINDS,
|
|
35925
36636
|
MEMORY_LEVELS,
|
|
35926
36637
|
MemoryEntity as MemoryEntityModel,
|
|
36638
|
+
MemoryKeyError,
|
|
35927
36639
|
MemoryLevelError,
|
|
35928
36640
|
NEVER_TTL_MS,
|
|
35929
36641
|
NODE_BUDGET,
|
|
@@ -35938,6 +36650,7 @@ export {
|
|
|
35938
36650
|
RECALL_MAX_LIMIT,
|
|
35939
36651
|
RECALL_TOOL_NAME,
|
|
35940
36652
|
RemoteMemoryError,
|
|
36653
|
+
RemoteMemoryPartialCreateError,
|
|
35941
36654
|
RerankerUnavailableError,
|
|
35942
36655
|
SDK_SCHEMA_VERSION,
|
|
35943
36656
|
SERVER_TOOL_DEPENDENCY_SETS,
|
|
@@ -36031,6 +36744,7 @@ export {
|
|
|
36031
36744
|
createRecallTool,
|
|
36032
36745
|
createRemoteMemoryPersistence,
|
|
36033
36746
|
createRemoteMemoryPipeline,
|
|
36747
|
+
createRemoteMemoryStore,
|
|
36034
36748
|
createSavedToolOp,
|
|
36035
36749
|
createServerToolsFilter,
|
|
36036
36750
|
createStockPricePreProcessor,
|
|
@@ -36062,6 +36776,7 @@ export {
|
|
|
36062
36776
|
deleteVaultMemoryOp,
|
|
36063
36777
|
dequantizeEmbedding,
|
|
36064
36778
|
deriveKeyFromSignatureBytes,
|
|
36779
|
+
deriveMemoryKeyRing,
|
|
36065
36780
|
eagerEmbedContent,
|
|
36066
36781
|
embedAllMessages,
|
|
36067
36782
|
embedMessage,
|
|
@@ -36081,6 +36796,7 @@ export {
|
|
|
36081
36796
|
extractFacts,
|
|
36082
36797
|
extractFileIds,
|
|
36083
36798
|
extractMCPImageUrls,
|
|
36799
|
+
extractReservationReceipts,
|
|
36084
36800
|
fileExists,
|
|
36085
36801
|
findById,
|
|
36086
36802
|
findMatchingTools,
|
|
@@ -36201,6 +36917,7 @@ export {
|
|
|
36201
36917
|
linkMemoryEntitiesOp,
|
|
36202
36918
|
maskScopedEmbeddingCache,
|
|
36203
36919
|
mediaToStored,
|
|
36920
|
+
memoryCipher,
|
|
36204
36921
|
migrateCalendarToken,
|
|
36205
36922
|
migrateDisplayResult,
|
|
36206
36923
|
migrateDriveToken,
|
|
@@ -36222,6 +36939,7 @@ export {
|
|
|
36222
36939
|
rankProfileCandidates,
|
|
36223
36940
|
readEncryptedFile,
|
|
36224
36941
|
recall,
|
|
36942
|
+
reencryptMemoryField,
|
|
36225
36943
|
reflect,
|
|
36226
36944
|
refreshCalendarToken,
|
|
36227
36945
|
refreshDriveToken,
|