@absolutejs/absolute 0.19.0-beta.513 → 0.19.0-beta.515
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/ai/index.js +155 -30
- package/dist/ai/index.js.map +3 -3
- package/package.json +1 -1
package/dist/ai/index.js
CHANGED
|
@@ -4974,6 +4974,123 @@ var summarizeRAGRerankerComparison = (entries) => {
|
|
|
4974
4974
|
var summarizeRAGRetrievalComparison = (entries) => summarizeEvaluationResponseComparison(entries, "retrievalId");
|
|
4975
4975
|
|
|
4976
4976
|
// src/ai/rag/types.ts
|
|
4977
|
+
var getContextNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
4978
|
+
var getContextString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
4979
|
+
var formatMediaTimestamp = (value) => {
|
|
4980
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
4981
|
+
return;
|
|
4982
|
+
}
|
|
4983
|
+
const totalSeconds = Math.floor(value / 1000);
|
|
4984
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
4985
|
+
const seconds = totalSeconds % 60;
|
|
4986
|
+
const milliseconds = Math.floor(value % 1000);
|
|
4987
|
+
return `${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}.${String(milliseconds).padStart(3, "0")}`;
|
|
4988
|
+
};
|
|
4989
|
+
var buildRAGContextLocatorLabel = (metadata, source, title) => {
|
|
4990
|
+
if (!metadata) {
|
|
4991
|
+
return;
|
|
4992
|
+
}
|
|
4993
|
+
const page = getContextNumber(metadata.page) ?? getContextNumber(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
4994
|
+
if (page) {
|
|
4995
|
+
return `Page ${page}`;
|
|
4996
|
+
}
|
|
4997
|
+
const sheet = getContextString(metadata.sheetName) ?? (Array.isArray(metadata.sheetNames) ? getContextString(metadata.sheetNames[0]) : undefined);
|
|
4998
|
+
if (sheet) {
|
|
4999
|
+
return `Sheet ${sheet}`;
|
|
5000
|
+
}
|
|
5001
|
+
const slide = getContextNumber(metadata.slide) ?? getContextNumber(metadata.slideNumber) ?? (typeof metadata.slideIndex === "number" ? metadata.slideIndex + 1 : undefined);
|
|
5002
|
+
if (slide) {
|
|
5003
|
+
return `Slide ${slide}`;
|
|
5004
|
+
}
|
|
5005
|
+
const archiveEntry = getContextString(metadata.archiveEntryPath) ?? getContextString(metadata.entryPath);
|
|
5006
|
+
if (archiveEntry) {
|
|
5007
|
+
return `Archive entry ${archiveEntry}`;
|
|
5008
|
+
}
|
|
5009
|
+
const emailKind = getContextString(metadata.emailKind);
|
|
5010
|
+
if (emailKind === "attachment") {
|
|
5011
|
+
const attachmentName = getContextString(metadata.attachmentName) ?? source?.split("/").at(-1) ?? title?.split(" \xB7 ").at(-1);
|
|
5012
|
+
return attachmentName ? `Attachment ${attachmentName}` : "Attachment";
|
|
5013
|
+
}
|
|
5014
|
+
const mediaStart = formatMediaTimestamp(metadata.startMs);
|
|
5015
|
+
const mediaEnd = formatMediaTimestamp(metadata.endMs);
|
|
5016
|
+
if (mediaStart && mediaEnd) {
|
|
5017
|
+
return `Timestamp ${mediaStart} - ${mediaEnd}`;
|
|
5018
|
+
}
|
|
5019
|
+
if (mediaStart) {
|
|
5020
|
+
return `Timestamp ${mediaStart}`;
|
|
5021
|
+
}
|
|
5022
|
+
return;
|
|
5023
|
+
};
|
|
5024
|
+
var buildRAGContextProvenanceLabel = (metadata) => {
|
|
5025
|
+
if (!metadata) {
|
|
5026
|
+
return;
|
|
5027
|
+
}
|
|
5028
|
+
const pdfTextMode = getContextString(metadata.pdfTextMode);
|
|
5029
|
+
const ocrEngine = getContextString(metadata.ocrEngine);
|
|
5030
|
+
const mediaKind = getContextString(metadata.mediaKind);
|
|
5031
|
+
const transcriptSource = getContextString(metadata.transcriptSource);
|
|
5032
|
+
const threadTopic = getContextString(metadata.threadTopic);
|
|
5033
|
+
const from = getContextString(metadata.from);
|
|
5034
|
+
const speaker = getContextString(metadata.speaker);
|
|
5035
|
+
const labels = [
|
|
5036
|
+
pdfTextMode ? `PDF ${pdfTextMode}` : "",
|
|
5037
|
+
ocrEngine ? `OCR ${ocrEngine}` : "",
|
|
5038
|
+
mediaKind ? `Media ${mediaKind}` : "",
|
|
5039
|
+
transcriptSource ? `Transcript ${transcriptSource}` : "",
|
|
5040
|
+
threadTopic ? `Thread ${threadTopic}` : "",
|
|
5041
|
+
speaker ? `Speaker ${speaker}` : "",
|
|
5042
|
+
from ? `Sender ${from}` : ""
|
|
5043
|
+
].filter((value) => value.length > 0);
|
|
5044
|
+
return labels.length > 0 ? labels.join(" \xB7 ") : undefined;
|
|
5045
|
+
};
|
|
5046
|
+
var buildRAGContextCitationGuidance = (hits) => {
|
|
5047
|
+
const needsPageGuidance = hits.some((hit) => {
|
|
5048
|
+
const metadata = hit.metadata;
|
|
5049
|
+
if (!metadata) {
|
|
5050
|
+
return false;
|
|
5051
|
+
}
|
|
5052
|
+
return getContextNumber(metadata.page) !== undefined || getContextNumber(metadata.pageNumber) !== undefined || typeof metadata.pageIndex === "number";
|
|
5053
|
+
});
|
|
5054
|
+
const needsSheetGuidance = hits.some((hit) => {
|
|
5055
|
+
const metadata = hit.metadata;
|
|
5056
|
+
if (!metadata) {
|
|
5057
|
+
return false;
|
|
5058
|
+
}
|
|
5059
|
+
return getContextString(metadata.sheetName) !== undefined || Array.isArray(metadata.sheetNames) && getContextString(metadata.sheetNames[0]) !== undefined;
|
|
5060
|
+
});
|
|
5061
|
+
const needsSlideGuidance = hits.some((hit) => {
|
|
5062
|
+
const metadata = hit.metadata;
|
|
5063
|
+
if (!metadata) {
|
|
5064
|
+
return false;
|
|
5065
|
+
}
|
|
5066
|
+
return getContextNumber(metadata.slide) !== undefined || getContextNumber(metadata.slideNumber) !== undefined || typeof metadata.slideIndex === "number";
|
|
5067
|
+
});
|
|
5068
|
+
const needsTimestampGuidance = hits.some((hit) => {
|
|
5069
|
+
const metadata = hit.metadata;
|
|
5070
|
+
if (!metadata) {
|
|
5071
|
+
return false;
|
|
5072
|
+
}
|
|
5073
|
+
return typeof metadata.startMs === "number" || typeof metadata.endMs === "number";
|
|
5074
|
+
});
|
|
5075
|
+
const needsAttachmentGuidance = hits.some((hit) => getContextString(hit.metadata?.emailKind) === "attachment");
|
|
5076
|
+
const needsThreadGuidance = hits.some((hit) => getContextString(hit.metadata?.threadTopic) !== undefined || getContextString(hit.metadata?.from) !== undefined);
|
|
5077
|
+
const needsArchiveGuidance = hits.some((hit) => {
|
|
5078
|
+
const metadata = hit.metadata;
|
|
5079
|
+
return getContextString(metadata?.archiveEntryPath) !== undefined || getContextString(metadata?.entryPath) !== undefined;
|
|
5080
|
+
});
|
|
5081
|
+
const guidanceLines = [
|
|
5082
|
+
"When you use retrieved context, cite it inline with [1], [2]. Prefer the most specific evidence available and preserve page, sheet, slide, timestamp, attachment, archive entry, or thread cues when the context provides them.",
|
|
5083
|
+
needsPageGuidance ? "For PDF evidence, keep the cited page number in the answer when the context includes one." : "",
|
|
5084
|
+
needsSheetGuidance ? "For spreadsheet evidence, name the worksheet when the context identifies a sheet." : "",
|
|
5085
|
+
needsSlideGuidance ? "For presentation evidence, keep the slide number in the answer when the context provides it." : "",
|
|
5086
|
+
needsTimestampGuidance ? "For media evidence, preserve the cited timestamp range in the answer." : "",
|
|
5087
|
+
needsAttachmentGuidance ? "For email attachment evidence, distinguish the attachment from the parent message." : "",
|
|
5088
|
+
needsThreadGuidance ? "For email message evidence, preserve sender or thread cues when they matter to the claim." : "",
|
|
5089
|
+
needsArchiveGuidance ? "For archive evidence, identify the archive entry path instead of only naming the outer archive." : ""
|
|
5090
|
+
].filter((value) => value.length > 0);
|
|
5091
|
+
return guidanceLines.join(`
|
|
5092
|
+
`);
|
|
5093
|
+
};
|
|
4977
5094
|
var buildRAGContext = (hits) => {
|
|
4978
5095
|
if (hits.length === 0) {
|
|
4979
5096
|
return "";
|
|
@@ -4981,15 +5098,23 @@ var buildRAGContext = (hits) => {
|
|
|
4981
5098
|
const sourceLines = hits.map((hit, index) => {
|
|
4982
5099
|
const source = hit.source ? ` (${hit.source})` : "";
|
|
4983
5100
|
const title = hit.title ? ` ${hit.title}` : "";
|
|
4984
|
-
|
|
4985
|
-
|
|
5101
|
+
const locatorLabel = buildRAGContextLocatorLabel(hit.metadata, hit.source, hit.title);
|
|
5102
|
+
const provenanceLabel = buildRAGContextProvenanceLabel(hit.metadata);
|
|
5103
|
+
const evidenceLines = [
|
|
5104
|
+
`[${index + 1}]${title}${source}`,
|
|
5105
|
+
locatorLabel ? `Location: ${locatorLabel}` : "",
|
|
5106
|
+
provenanceLabel ? `Provenance: ${provenanceLabel}` : "",
|
|
5107
|
+
hit.chunkText.trim()
|
|
5108
|
+
].filter((value) => value.length > 0);
|
|
5109
|
+
return evidenceLines.join(`
|
|
5110
|
+
`);
|
|
4986
5111
|
});
|
|
4987
5112
|
return `Use the following context for this question:
|
|
4988
5113
|
${sourceLines.join(`
|
|
4989
5114
|
|
|
4990
5115
|
`)}
|
|
4991
5116
|
|
|
4992
|
-
|
|
5117
|
+
${buildRAGContextCitationGuidance(hits)}`;
|
|
4993
5118
|
};
|
|
4994
5119
|
|
|
4995
5120
|
// src/ai/rag/chat.ts
|
|
@@ -7318,8 +7443,8 @@ ${tag} OK`) || chunk.startsWith(`${tag} OK`));
|
|
|
7318
7443
|
// src/ai/rag/presentation.ts
|
|
7319
7444
|
var buildSourceGroupKey = (source) => source.source ?? source.title ?? source.chunkId;
|
|
7320
7445
|
var buildSourceLabel = (source) => source.source ?? source.title ?? source.chunkId;
|
|
7321
|
-
var
|
|
7322
|
-
var
|
|
7446
|
+
var getContextNumber2 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
7447
|
+
var getContextString2 = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
7323
7448
|
var formatTimestampLabel = (value) => {
|
|
7324
7449
|
const timestamp = typeof value === "number" && Number.isFinite(value) ? value : typeof value === "string" ? Date.parse(value) : Number.NaN;
|
|
7325
7450
|
if (!Number.isFinite(timestamp)) {
|
|
@@ -7330,7 +7455,7 @@ var formatTimestampLabel = (value) => {
|
|
|
7330
7455
|
timeStyle: "short"
|
|
7331
7456
|
});
|
|
7332
7457
|
};
|
|
7333
|
-
var
|
|
7458
|
+
var formatMediaTimestamp2 = (value) => {
|
|
7334
7459
|
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
7335
7460
|
return;
|
|
7336
7461
|
}
|
|
@@ -7355,35 +7480,35 @@ var buildContextLabel = (metadata) => {
|
|
|
7355
7480
|
if (!metadata) {
|
|
7356
7481
|
return;
|
|
7357
7482
|
}
|
|
7358
|
-
const emailKind =
|
|
7483
|
+
const emailKind = getContextString2(metadata.emailKind);
|
|
7359
7484
|
if (emailKind === "attachment") {
|
|
7360
7485
|
return "Attachment evidence";
|
|
7361
7486
|
}
|
|
7362
7487
|
if (emailKind === "message") {
|
|
7363
|
-
const from =
|
|
7488
|
+
const from = getContextString2(metadata.from);
|
|
7364
7489
|
return from ? `Message from ${from}` : "Message evidence";
|
|
7365
7490
|
}
|
|
7366
|
-
const page =
|
|
7491
|
+
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
7367
7492
|
if (page) {
|
|
7368
7493
|
return `Page ${page}`;
|
|
7369
7494
|
}
|
|
7370
|
-
const sheet =
|
|
7495
|
+
const sheet = getContextString2(metadata.sheetName) ?? (Array.isArray(metadata.sheetNames) ? getContextString2(metadata.sheetNames[0]) : undefined);
|
|
7371
7496
|
if (sheet) {
|
|
7372
7497
|
return `Sheet ${sheet}`;
|
|
7373
7498
|
}
|
|
7374
|
-
const slide =
|
|
7499
|
+
const slide = getContextNumber2(metadata.slide) ?? getContextNumber2(metadata.slideNumber) ?? (typeof metadata.slideIndex === "number" ? metadata.slideIndex + 1 : undefined);
|
|
7375
7500
|
if (slide) {
|
|
7376
7501
|
return `Slide ${slide}`;
|
|
7377
7502
|
}
|
|
7378
|
-
const archiveEntry =
|
|
7503
|
+
const archiveEntry = getContextString2(metadata.archiveEntryPath) ?? getContextString2(metadata.entryPath);
|
|
7379
7504
|
if (archiveEntry) {
|
|
7380
7505
|
return `Archive entry ${archiveEntry}`;
|
|
7381
7506
|
}
|
|
7382
|
-
const threadTopic =
|
|
7507
|
+
const threadTopic = getContextString2(metadata.threadTopic);
|
|
7383
7508
|
if (threadTopic) {
|
|
7384
7509
|
return `Thread ${threadTopic}`;
|
|
7385
7510
|
}
|
|
7386
|
-
const speaker =
|
|
7511
|
+
const speaker = getContextString2(metadata.speaker);
|
|
7387
7512
|
if (speaker) {
|
|
7388
7513
|
return `Speaker ${speaker}`;
|
|
7389
7514
|
}
|
|
@@ -7393,29 +7518,29 @@ var buildLocatorLabel = (metadata, source, title) => {
|
|
|
7393
7518
|
if (!metadata) {
|
|
7394
7519
|
return;
|
|
7395
7520
|
}
|
|
7396
|
-
const page =
|
|
7521
|
+
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
7397
7522
|
if (page) {
|
|
7398
7523
|
return `Page ${page}`;
|
|
7399
7524
|
}
|
|
7400
|
-
const sheet =
|
|
7525
|
+
const sheet = getContextString2(metadata.sheetName) ?? (Array.isArray(metadata.sheetNames) ? getContextString2(metadata.sheetNames[0]) : undefined);
|
|
7401
7526
|
if (sheet) {
|
|
7402
7527
|
return `Sheet ${sheet}`;
|
|
7403
7528
|
}
|
|
7404
|
-
const slide =
|
|
7529
|
+
const slide = getContextNumber2(metadata.slide) ?? getContextNumber2(metadata.slideNumber) ?? (typeof metadata.slideIndex === "number" ? metadata.slideIndex + 1 : undefined);
|
|
7405
7530
|
if (slide) {
|
|
7406
7531
|
return `Slide ${slide}`;
|
|
7407
7532
|
}
|
|
7408
|
-
const archiveEntry =
|
|
7533
|
+
const archiveEntry = getContextString2(metadata.archiveEntryPath) ?? getContextString2(metadata.entryPath);
|
|
7409
7534
|
if (archiveEntry) {
|
|
7410
7535
|
return `Archive entry ${archiveEntry}`;
|
|
7411
7536
|
}
|
|
7412
|
-
const emailKind =
|
|
7537
|
+
const emailKind = getContextString2(metadata.emailKind);
|
|
7413
7538
|
if (emailKind === "attachment") {
|
|
7414
|
-
const attachmentName =
|
|
7539
|
+
const attachmentName = getContextString2(metadata.attachmentName) ?? getAttachmentName(source, title);
|
|
7415
7540
|
return attachmentName ? `Attachment ${attachmentName}` : "Attachment";
|
|
7416
7541
|
}
|
|
7417
|
-
const mediaStart =
|
|
7418
|
-
const mediaEnd =
|
|
7542
|
+
const mediaStart = formatMediaTimestamp2(metadata.startMs);
|
|
7543
|
+
const mediaEnd = formatMediaTimestamp2(metadata.endMs);
|
|
7419
7544
|
if (mediaStart && mediaEnd) {
|
|
7420
7545
|
return `Timestamp ${mediaStart} - ${mediaEnd}`;
|
|
7421
7546
|
}
|
|
@@ -7428,14 +7553,14 @@ var buildProvenanceLabel = (metadata) => {
|
|
|
7428
7553
|
if (!metadata) {
|
|
7429
7554
|
return;
|
|
7430
7555
|
}
|
|
7431
|
-
const threadTopic =
|
|
7432
|
-
const from =
|
|
7556
|
+
const threadTopic = getContextString2(metadata.threadTopic);
|
|
7557
|
+
const from = getContextString2(metadata.from);
|
|
7433
7558
|
const sentAt = formatTimestampLabel(metadata.sentAt) ?? formatTimestampLabel(metadata.receivedAt);
|
|
7434
|
-
const speaker =
|
|
7435
|
-
const mediaKind =
|
|
7436
|
-
const transcriptSource =
|
|
7437
|
-
const pdfTextMode =
|
|
7438
|
-
const ocrEngine =
|
|
7559
|
+
const speaker = getContextString2(metadata.speaker);
|
|
7560
|
+
const mediaKind = getContextString2(metadata.mediaKind);
|
|
7561
|
+
const transcriptSource = getContextString2(metadata.transcriptSource);
|
|
7562
|
+
const pdfTextMode = getContextString2(metadata.pdfTextMode);
|
|
7563
|
+
const ocrEngine = getContextString2(metadata.ocrEngine);
|
|
7439
7564
|
const labels = [
|
|
7440
7565
|
pdfTextMode ? `PDF ${pdfTextMode}` : "",
|
|
7441
7566
|
ocrEngine ? `OCR ${ocrEngine}` : "",
|
|
@@ -10420,5 +10545,5 @@ export {
|
|
|
10420
10545
|
aiChat
|
|
10421
10546
|
};
|
|
10422
10547
|
|
|
10423
|
-
//# debugId=
|
|
10548
|
+
//# debugId=80D809BE3389E86564756E2164756E21
|
|
10424
10549
|
//# sourceMappingURL=index.js.map
|