@absolutejs/absolute 0.19.0-beta.512 → 0.19.0-beta.514
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/client/index.js +22 -2
- package/dist/ai/client/index.js.map +3 -3
- package/dist/ai/index.js +128 -31
- package/dist/ai/index.js.map +4 -4
- package/dist/ai-client/angular/ai/index.js +21 -1
- package/dist/ai-client/react/ai/index.js +21 -1
- package/dist/ai-client/vue/ai/index.js +21 -1
- package/dist/angular/ai/index.js +22 -2
- package/dist/angular/ai/index.js.map +3 -3
- package/dist/angular/index.js +2 -2
- package/dist/angular/index.js.map +1 -1
- package/dist/angular/server.js +2 -2
- package/dist/angular/server.js.map +1 -1
- package/dist/build.js +2 -2
- package/dist/build.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/react/ai/index.js +22 -2
- package/dist/react/ai/index.js.map +3 -3
- package/dist/svelte/ai/index.js +22 -2
- package/dist/svelte/ai/index.js.map +3 -3
- package/dist/types/ai.d.ts +14 -0
- package/dist/vue/ai/index.js +22 -2
- package/dist/vue/ai/index.js.map +3 -3
- package/package.json +1 -1
package/dist/ai/index.js
CHANGED
|
@@ -4974,6 +4974,75 @@ 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
|
+
};
|
|
4977
5046
|
var buildRAGContext = (hits) => {
|
|
4978
5047
|
if (hits.length === 0) {
|
|
4979
5048
|
return "";
|
|
@@ -4981,15 +5050,23 @@ var buildRAGContext = (hits) => {
|
|
|
4981
5050
|
const sourceLines = hits.map((hit, index) => {
|
|
4982
5051
|
const source = hit.source ? ` (${hit.source})` : "";
|
|
4983
5052
|
const title = hit.title ? ` ${hit.title}` : "";
|
|
4984
|
-
|
|
4985
|
-
|
|
5053
|
+
const locatorLabel = buildRAGContextLocatorLabel(hit.metadata, hit.source, hit.title);
|
|
5054
|
+
const provenanceLabel = buildRAGContextProvenanceLabel(hit.metadata);
|
|
5055
|
+
const evidenceLines = [
|
|
5056
|
+
`[${index + 1}]${title}${source}`,
|
|
5057
|
+
locatorLabel ? `Location: ${locatorLabel}` : "",
|
|
5058
|
+
provenanceLabel ? `Provenance: ${provenanceLabel}` : "",
|
|
5059
|
+
hit.chunkText.trim()
|
|
5060
|
+
].filter((value) => value.length > 0);
|
|
5061
|
+
return evidenceLines.join(`
|
|
5062
|
+
`);
|
|
4986
5063
|
});
|
|
4987
5064
|
return `Use the following context for this question:
|
|
4988
5065
|
${sourceLines.join(`
|
|
4989
5066
|
|
|
4990
5067
|
`)}
|
|
4991
5068
|
|
|
4992
|
-
|
|
5069
|
+
When you use retrieved context, cite it inline with [1], [2]. Prefer the most specific evidence available and preserve page, sheet, slide, timestamp, attachment, or thread cues when the context provides them.`;
|
|
4993
5070
|
};
|
|
4994
5071
|
|
|
4995
5072
|
// src/ai/rag/chat.ts
|
|
@@ -7318,8 +7395,8 @@ ${tag} OK`) || chunk.startsWith(`${tag} OK`));
|
|
|
7318
7395
|
// src/ai/rag/presentation.ts
|
|
7319
7396
|
var buildSourceGroupKey = (source) => source.source ?? source.title ?? source.chunkId;
|
|
7320
7397
|
var buildSourceLabel = (source) => source.source ?? source.title ?? source.chunkId;
|
|
7321
|
-
var
|
|
7322
|
-
var
|
|
7398
|
+
var getContextNumber2 = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
7399
|
+
var getContextString2 = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
|
|
7323
7400
|
var formatTimestampLabel = (value) => {
|
|
7324
7401
|
const timestamp = typeof value === "number" && Number.isFinite(value) ? value : typeof value === "string" ? Date.parse(value) : Number.NaN;
|
|
7325
7402
|
if (!Number.isFinite(timestamp)) {
|
|
@@ -7330,7 +7407,7 @@ var formatTimestampLabel = (value) => {
|
|
|
7330
7407
|
timeStyle: "short"
|
|
7331
7408
|
});
|
|
7332
7409
|
};
|
|
7333
|
-
var
|
|
7410
|
+
var formatMediaTimestamp2 = (value) => {
|
|
7334
7411
|
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
7335
7412
|
return;
|
|
7336
7413
|
}
|
|
@@ -7355,35 +7432,35 @@ var buildContextLabel = (metadata) => {
|
|
|
7355
7432
|
if (!metadata) {
|
|
7356
7433
|
return;
|
|
7357
7434
|
}
|
|
7358
|
-
const emailKind =
|
|
7435
|
+
const emailKind = getContextString2(metadata.emailKind);
|
|
7359
7436
|
if (emailKind === "attachment") {
|
|
7360
7437
|
return "Attachment evidence";
|
|
7361
7438
|
}
|
|
7362
7439
|
if (emailKind === "message") {
|
|
7363
|
-
const from =
|
|
7440
|
+
const from = getContextString2(metadata.from);
|
|
7364
7441
|
return from ? `Message from ${from}` : "Message evidence";
|
|
7365
7442
|
}
|
|
7366
|
-
const page =
|
|
7443
|
+
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
7367
7444
|
if (page) {
|
|
7368
7445
|
return `Page ${page}`;
|
|
7369
7446
|
}
|
|
7370
|
-
const sheet =
|
|
7447
|
+
const sheet = getContextString2(metadata.sheetName) ?? (Array.isArray(metadata.sheetNames) ? getContextString2(metadata.sheetNames[0]) : undefined);
|
|
7371
7448
|
if (sheet) {
|
|
7372
7449
|
return `Sheet ${sheet}`;
|
|
7373
7450
|
}
|
|
7374
|
-
const slide =
|
|
7451
|
+
const slide = getContextNumber2(metadata.slide) ?? getContextNumber2(metadata.slideNumber) ?? (typeof metadata.slideIndex === "number" ? metadata.slideIndex + 1 : undefined);
|
|
7375
7452
|
if (slide) {
|
|
7376
7453
|
return `Slide ${slide}`;
|
|
7377
7454
|
}
|
|
7378
|
-
const archiveEntry =
|
|
7455
|
+
const archiveEntry = getContextString2(metadata.archiveEntryPath) ?? getContextString2(metadata.entryPath);
|
|
7379
7456
|
if (archiveEntry) {
|
|
7380
7457
|
return `Archive entry ${archiveEntry}`;
|
|
7381
7458
|
}
|
|
7382
|
-
const threadTopic =
|
|
7459
|
+
const threadTopic = getContextString2(metadata.threadTopic);
|
|
7383
7460
|
if (threadTopic) {
|
|
7384
7461
|
return `Thread ${threadTopic}`;
|
|
7385
7462
|
}
|
|
7386
|
-
const speaker =
|
|
7463
|
+
const speaker = getContextString2(metadata.speaker);
|
|
7387
7464
|
if (speaker) {
|
|
7388
7465
|
return `Speaker ${speaker}`;
|
|
7389
7466
|
}
|
|
@@ -7393,29 +7470,29 @@ var buildLocatorLabel = (metadata, source, title) => {
|
|
|
7393
7470
|
if (!metadata) {
|
|
7394
7471
|
return;
|
|
7395
7472
|
}
|
|
7396
|
-
const page =
|
|
7473
|
+
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
7397
7474
|
if (page) {
|
|
7398
7475
|
return `Page ${page}`;
|
|
7399
7476
|
}
|
|
7400
|
-
const sheet =
|
|
7477
|
+
const sheet = getContextString2(metadata.sheetName) ?? (Array.isArray(metadata.sheetNames) ? getContextString2(metadata.sheetNames[0]) : undefined);
|
|
7401
7478
|
if (sheet) {
|
|
7402
7479
|
return `Sheet ${sheet}`;
|
|
7403
7480
|
}
|
|
7404
|
-
const slide =
|
|
7481
|
+
const slide = getContextNumber2(metadata.slide) ?? getContextNumber2(metadata.slideNumber) ?? (typeof metadata.slideIndex === "number" ? metadata.slideIndex + 1 : undefined);
|
|
7405
7482
|
if (slide) {
|
|
7406
7483
|
return `Slide ${slide}`;
|
|
7407
7484
|
}
|
|
7408
|
-
const archiveEntry =
|
|
7485
|
+
const archiveEntry = getContextString2(metadata.archiveEntryPath) ?? getContextString2(metadata.entryPath);
|
|
7409
7486
|
if (archiveEntry) {
|
|
7410
7487
|
return `Archive entry ${archiveEntry}`;
|
|
7411
7488
|
}
|
|
7412
|
-
const emailKind =
|
|
7489
|
+
const emailKind = getContextString2(metadata.emailKind);
|
|
7413
7490
|
if (emailKind === "attachment") {
|
|
7414
|
-
const attachmentName =
|
|
7491
|
+
const attachmentName = getContextString2(metadata.attachmentName) ?? getAttachmentName(source, title);
|
|
7415
7492
|
return attachmentName ? `Attachment ${attachmentName}` : "Attachment";
|
|
7416
7493
|
}
|
|
7417
|
-
const mediaStart =
|
|
7418
|
-
const mediaEnd =
|
|
7494
|
+
const mediaStart = formatMediaTimestamp2(metadata.startMs);
|
|
7495
|
+
const mediaEnd = formatMediaTimestamp2(metadata.endMs);
|
|
7419
7496
|
if (mediaStart && mediaEnd) {
|
|
7420
7497
|
return `Timestamp ${mediaStart} - ${mediaEnd}`;
|
|
7421
7498
|
}
|
|
@@ -7428,14 +7505,14 @@ var buildProvenanceLabel = (metadata) => {
|
|
|
7428
7505
|
if (!metadata) {
|
|
7429
7506
|
return;
|
|
7430
7507
|
}
|
|
7431
|
-
const threadTopic =
|
|
7432
|
-
const from =
|
|
7508
|
+
const threadTopic = getContextString2(metadata.threadTopic);
|
|
7509
|
+
const from = getContextString2(metadata.from);
|
|
7433
7510
|
const sentAt = formatTimestampLabel(metadata.sentAt) ?? formatTimestampLabel(metadata.receivedAt);
|
|
7434
|
-
const speaker =
|
|
7435
|
-
const mediaKind =
|
|
7436
|
-
const transcriptSource =
|
|
7437
|
-
const pdfTextMode =
|
|
7438
|
-
const ocrEngine =
|
|
7511
|
+
const speaker = getContextString2(metadata.speaker);
|
|
7512
|
+
const mediaKind = getContextString2(metadata.mediaKind);
|
|
7513
|
+
const transcriptSource = getContextString2(metadata.transcriptSource);
|
|
7514
|
+
const pdfTextMode = getContextString2(metadata.pdfTextMode);
|
|
7515
|
+
const ocrEngine = getContextString2(metadata.ocrEngine);
|
|
7439
7516
|
const labels = [
|
|
7440
7517
|
pdfTextMode ? `PDF ${pdfTextMode}` : "",
|
|
7441
7518
|
ocrEngine ? `OCR ${ocrEngine}` : "",
|
|
@@ -7485,6 +7562,23 @@ var buildExcerpt = (text, maxLength = 160) => {
|
|
|
7485
7562
|
}
|
|
7486
7563
|
return `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}\u2026`;
|
|
7487
7564
|
};
|
|
7565
|
+
var buildGroundingReferenceEvidenceLabel = (reference) => [reference.label, reference.locatorLabel, reference.contextLabel].filter((value) => Boolean(value && value.length > 0)).filter((value, index, values) => values.findIndex((entry) => entry === value) === index).join(" \xB7 ");
|
|
7566
|
+
var buildGroundingReferenceEvidenceSummary = (reference) => [
|
|
7567
|
+
reference.source ?? reference.title ?? reference.chunkId,
|
|
7568
|
+
reference.provenanceLabel
|
|
7569
|
+
].filter((value) => Boolean(value && value.length > 0)).join(" \xB7 ");
|
|
7570
|
+
var buildGroundedAnswerCitationDetail = (reference) => ({
|
|
7571
|
+
contextLabel: reference.contextLabel,
|
|
7572
|
+
evidenceLabel: buildGroundingReferenceEvidenceLabel(reference),
|
|
7573
|
+
evidenceSummary: buildGroundingReferenceEvidenceSummary(reference),
|
|
7574
|
+
excerpt: reference.excerpt,
|
|
7575
|
+
label: reference.label,
|
|
7576
|
+
locatorLabel: reference.locatorLabel,
|
|
7577
|
+
number: reference.number,
|
|
7578
|
+
provenanceLabel: reference.provenanceLabel,
|
|
7579
|
+
source: reference.source,
|
|
7580
|
+
title: reference.title
|
|
7581
|
+
});
|
|
7488
7582
|
var buildRAGGroundedAnswer = (content, sources) => {
|
|
7489
7583
|
const references = buildRAGGroundingReferences(sources);
|
|
7490
7584
|
const referenceMap = new Map(references.map((reference) => [reference.number, reference]));
|
|
@@ -7508,11 +7602,14 @@ var buildRAGGroundedAnswer = (content, sources) => {
|
|
|
7508
7602
|
ungroundedReferenceNumbers.add(number);
|
|
7509
7603
|
}
|
|
7510
7604
|
}
|
|
7605
|
+
const unresolvedNumbers = numbers.filter((number) => !referenceMap.has(number));
|
|
7511
7606
|
parts.push({
|
|
7512
7607
|
referenceNumbers: numbers,
|
|
7608
|
+
referenceDetails: resolvedReferences.map(buildGroundedAnswerCitationDetail),
|
|
7513
7609
|
references: resolvedReferences,
|
|
7514
7610
|
text: raw,
|
|
7515
|
-
type: "citation"
|
|
7611
|
+
type: "citation",
|
|
7612
|
+
unresolvedReferenceNumbers: unresolvedNumbers
|
|
7516
7613
|
});
|
|
7517
7614
|
cursor = start + raw.length;
|
|
7518
7615
|
}
|
|
@@ -10400,5 +10497,5 @@ export {
|
|
|
10400
10497
|
aiChat
|
|
10401
10498
|
};
|
|
10402
10499
|
|
|
10403
|
-
//# debugId=
|
|
10500
|
+
//# debugId=B33CC824E07DC89F64756E2164756E21
|
|
10404
10501
|
//# sourceMappingURL=index.js.map
|