@absolutejs/absolute 0.19.0-beta.603 → 0.19.0-beta.605
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 +244 -10
- package/dist/ai/client/index.js.map +4 -4
- package/dist/ai/client/ui.js +248 -10
- package/dist/ai/client/ui.js.map +4 -4
- package/dist/ai/index.js +1003 -110
- package/dist/ai/index.js.map +8 -8
- package/dist/ai/rag/quality.js +27 -6
- package/dist/ai/rag/quality.js.map +3 -3
- package/dist/ai/rag/ui.js +248 -10
- package/dist/ai/rag/ui.js.map +4 -4
- package/dist/ai-client/angular/ai/index.js +243 -9
- package/dist/ai-client/react/ai/index.js +258 -10
- package/dist/ai-client/vue/ai/index.js +347 -101
- package/dist/angular/ai/index.js +244 -10
- package/dist/angular/ai/index.js.map +4 -4
- package/dist/react/ai/index.js +259 -11
- package/dist/react/ai/index.js.map +6 -6
- package/dist/src/ai/client/ui.d.ts +1 -1
- package/dist/src/ai/rag/index.d.ts +1 -1
- package/dist/src/ai/rag/presentation.d.ts +12 -1
- package/dist/src/ai/rag/ui.d.ts +1 -1
- package/dist/src/react/ai/useRAG.d.ts +5 -0
- package/dist/src/react/ai/useRAGChunkPreview.d.ts +4 -0
- package/dist/src/react/ai/useRAGSources.d.ts +1 -0
- package/dist/src/svelte/ai/createRAG.d.ts +5 -0
- package/dist/src/svelte/ai/createRAGChunkPreview.d.ts +4 -0
- package/dist/src/svelte/ai/createRAGSources.d.ts +1 -0
- package/dist/src/vue/ai/useRAG.d.ts +125 -0
- package/dist/src/vue/ai/useRAGChunkPreview.d.ts +54 -0
- package/dist/src/vue/ai/useRAGDocuments.d.ts +20 -0
- package/dist/src/vue/ai/useRAGIndexAdmin.d.ts +10 -0
- package/dist/src/vue/ai/useRAGSearch.d.ts +40 -0
- package/dist/src/vue/ai/useRAGSources.d.ts +1 -0
- package/dist/svelte/ai/index.js +305 -57
- package/dist/svelte/ai/index.js.map +6 -6
- package/dist/types/ai.d.ts +102 -1
- package/dist/vue/ai/index.js +311 -63
- package/dist/vue/ai/index.js.map +6 -6
- package/package.json +1 -1
package/dist/vue/ai/index.js
CHANGED
|
@@ -216,6 +216,10 @@ var buildContextLabel = (metadata) => {
|
|
|
216
216
|
return from ? `Message from ${from}` : "Message evidence";
|
|
217
217
|
}
|
|
218
218
|
const page = getContextNumber(metadata.page) ?? getContextNumber(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
219
|
+
const region = getContextNumber(metadata.regionNumber) ?? (typeof metadata.regionIndex === "number" ? metadata.regionIndex + 1 : undefined);
|
|
220
|
+
if (page && region) {
|
|
221
|
+
return `Page ${page} region ${region}`;
|
|
222
|
+
}
|
|
219
223
|
if (page) {
|
|
220
224
|
return `Page ${page}`;
|
|
221
225
|
}
|
|
@@ -239,6 +243,11 @@ var buildContextLabel = (metadata) => {
|
|
|
239
243
|
if (speaker) {
|
|
240
244
|
return `Speaker ${speaker}`;
|
|
241
245
|
}
|
|
246
|
+
const sectionPath = Array.isArray(metadata.sectionPath) ? metadata.sectionPath.map((value) => getContextString(value)).filter((value) => typeof value === "string") : [];
|
|
247
|
+
const sectionTitle = getContextString(metadata.sectionTitle) ?? sectionPath.at(-1);
|
|
248
|
+
if (sectionTitle) {
|
|
249
|
+
return `Section ${sectionTitle}`;
|
|
250
|
+
}
|
|
242
251
|
return;
|
|
243
252
|
};
|
|
244
253
|
var formatMediaTimestamp = (value) => {
|
|
@@ -256,6 +265,10 @@ var buildLocatorLabel = (metadata, source, title) => {
|
|
|
256
265
|
return;
|
|
257
266
|
}
|
|
258
267
|
const page = getContextNumber(metadata.page) ?? getContextNumber(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
268
|
+
const region = getContextNumber(metadata.regionNumber) ?? (typeof metadata.regionIndex === "number" ? metadata.regionIndex + 1 : undefined);
|
|
269
|
+
if (page && region) {
|
|
270
|
+
return `Page ${page} \xB7 Region ${region}`;
|
|
271
|
+
}
|
|
259
272
|
if (page) {
|
|
260
273
|
return `Page ${page}`;
|
|
261
274
|
}
|
|
@@ -284,6 +297,10 @@ var buildLocatorLabel = (metadata, source, title) => {
|
|
|
284
297
|
if (mediaStart) {
|
|
285
298
|
return `Timestamp ${mediaStart}`;
|
|
286
299
|
}
|
|
300
|
+
const sectionPath = Array.isArray(metadata.sectionPath) ? metadata.sectionPath.map((value) => getContextString(value)).filter((value) => typeof value === "string") : [];
|
|
301
|
+
if (sectionPath.length > 0) {
|
|
302
|
+
return `Section ${sectionPath.join(" > ")}`;
|
|
303
|
+
}
|
|
287
304
|
return;
|
|
288
305
|
};
|
|
289
306
|
var formatTimestampLabel = (value) => {
|
|
@@ -308,9 +325,11 @@ var buildProvenanceLabel = (metadata) => {
|
|
|
308
325
|
const transcriptSource = getContextString(metadata.transcriptSource);
|
|
309
326
|
const pdfTextMode = getContextString(metadata.pdfTextMode);
|
|
310
327
|
const ocrEngine = getContextString(metadata.ocrEngine);
|
|
328
|
+
const ocrConfidence = getContextNumber(metadata.ocrRegionConfidence) ?? getContextNumber(metadata.ocrConfidence);
|
|
311
329
|
const labels = [
|
|
312
330
|
pdfTextMode ? `PDF ${pdfTextMode}` : "",
|
|
313
331
|
ocrEngine ? `OCR ${ocrEngine}` : "",
|
|
332
|
+
typeof ocrConfidence === "number" ? `Confidence ${ocrConfidence.toFixed(2)}` : "",
|
|
314
333
|
mediaKind ? `Media ${mediaKind}` : "",
|
|
315
334
|
transcriptSource ? `Transcript ${transcriptSource}` : "",
|
|
316
335
|
threadTopic ? `Thread ${threadTopic}` : "",
|
|
@@ -331,8 +350,10 @@ var buildExcerpt = (text, maxLength = 160) => {
|
|
|
331
350
|
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 ");
|
|
332
351
|
var buildGroundingReferenceEvidenceSummary = (reference) => [
|
|
333
352
|
reference.source ?? reference.title ?? reference.chunkId,
|
|
353
|
+
reference.locatorLabel,
|
|
354
|
+
reference.contextLabel,
|
|
334
355
|
reference.provenanceLabel
|
|
335
|
-
].filter((value) => Boolean(value && value.length > 0)).join(" \xB7 ");
|
|
356
|
+
].filter((value) => Boolean(value && value.length > 0)).filter((value, index, values) => values.findIndex((entry) => entry === value) === index).join(" \xB7 ");
|
|
336
357
|
var buildGroundedAnswerCitationDetail = (reference) => ({
|
|
337
358
|
contextLabel: reference.contextLabel,
|
|
338
359
|
evidenceLabel: buildGroundingReferenceEvidenceLabel(reference),
|
|
@@ -356,12 +377,12 @@ var buildRAGCitations = (sources) => {
|
|
|
356
377
|
continue;
|
|
357
378
|
unique.set(key, {
|
|
358
379
|
chunkId: source.chunkId,
|
|
359
|
-
contextLabel: buildContextLabel(source.metadata),
|
|
380
|
+
contextLabel: source.labels?.contextLabel ?? buildContextLabel(source.metadata),
|
|
360
381
|
key,
|
|
361
382
|
label: buildSourceLabel(source),
|
|
362
|
-
locatorLabel: buildLocatorLabel(source.metadata, source.source, source.title),
|
|
383
|
+
locatorLabel: source.labels?.locatorLabel ?? buildLocatorLabel(source.metadata, source.source, source.title),
|
|
363
384
|
metadata: source.metadata,
|
|
364
|
-
provenanceLabel: buildProvenanceLabel(source.metadata),
|
|
385
|
+
provenanceLabel: source.labels?.provenanceLabel ?? buildProvenanceLabel(source.metadata),
|
|
365
386
|
score: source.score,
|
|
366
387
|
source: source.source,
|
|
367
388
|
text: source.text,
|
|
@@ -431,7 +452,7 @@ var buildRAGGroundingReferences = (sources) => {
|
|
|
431
452
|
const citationReferenceMap = buildRAGCitationReferenceMap(citations);
|
|
432
453
|
return citations.map((citation) => ({
|
|
433
454
|
chunkId: citation.chunkId,
|
|
434
|
-
contextLabel: buildContextLabel(citation.metadata),
|
|
455
|
+
contextLabel: citation.contextLabel ?? buildContextLabel(citation.metadata),
|
|
435
456
|
excerpt: buildExcerpt(citation.text),
|
|
436
457
|
label: citation.label,
|
|
437
458
|
locatorLabel: citation.locatorLabel ?? buildLocatorLabel(citation.metadata, citation.source, citation.title),
|
|
@@ -3977,6 +3998,10 @@ var buildContextLabel2 = (metadata) => {
|
|
|
3977
3998
|
return from ? `Message from ${from}` : "Message evidence";
|
|
3978
3999
|
}
|
|
3979
4000
|
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
4001
|
+
const region = getContextNumber2(metadata.regionNumber) ?? (typeof metadata.regionIndex === "number" ? metadata.regionIndex + 1 : undefined);
|
|
4002
|
+
if (page && region) {
|
|
4003
|
+
return `Page ${page} region ${region}`;
|
|
4004
|
+
}
|
|
3980
4005
|
if (page) {
|
|
3981
4006
|
return `Page ${page}`;
|
|
3982
4007
|
}
|
|
@@ -4000,6 +4025,11 @@ var buildContextLabel2 = (metadata) => {
|
|
|
4000
4025
|
if (speaker) {
|
|
4001
4026
|
return `Speaker ${speaker}`;
|
|
4002
4027
|
}
|
|
4028
|
+
const sectionPath = Array.isArray(metadata.sectionPath) ? metadata.sectionPath.map((value) => getContextString2(value)).filter((value) => typeof value === "string") : [];
|
|
4029
|
+
const sectionTitle = getContextString2(metadata.sectionTitle) ?? sectionPath.at(-1);
|
|
4030
|
+
if (sectionTitle) {
|
|
4031
|
+
return `Section ${sectionTitle}`;
|
|
4032
|
+
}
|
|
4003
4033
|
return;
|
|
4004
4034
|
};
|
|
4005
4035
|
var buildLocatorLabel2 = (metadata, source, title) => {
|
|
@@ -4007,6 +4037,10 @@ var buildLocatorLabel2 = (metadata, source, title) => {
|
|
|
4007
4037
|
return;
|
|
4008
4038
|
}
|
|
4009
4039
|
const page = getContextNumber2(metadata.page) ?? getContextNumber2(metadata.pageNumber) ?? (typeof metadata.pageIndex === "number" ? metadata.pageIndex + 1 : undefined);
|
|
4040
|
+
const region = getContextNumber2(metadata.regionNumber) ?? (typeof metadata.regionIndex === "number" ? metadata.regionIndex + 1 : undefined);
|
|
4041
|
+
if (page && region) {
|
|
4042
|
+
return `Page ${page} \xB7 Region ${region}`;
|
|
4043
|
+
}
|
|
4010
4044
|
if (page) {
|
|
4011
4045
|
return `Page ${page}`;
|
|
4012
4046
|
}
|
|
@@ -4035,6 +4069,10 @@ var buildLocatorLabel2 = (metadata, source, title) => {
|
|
|
4035
4069
|
if (mediaStart) {
|
|
4036
4070
|
return `Timestamp ${mediaStart}`;
|
|
4037
4071
|
}
|
|
4072
|
+
const sectionPath = Array.isArray(metadata.sectionPath) ? metadata.sectionPath.map((value) => getContextString2(value)).filter((value) => typeof value === "string") : [];
|
|
4073
|
+
if (sectionPath.length > 0) {
|
|
4074
|
+
return `Section ${sectionPath.join(" > ")}`;
|
|
4075
|
+
}
|
|
4038
4076
|
return;
|
|
4039
4077
|
};
|
|
4040
4078
|
var buildProvenanceLabel2 = (metadata) => {
|
|
@@ -4049,9 +4087,11 @@ var buildProvenanceLabel2 = (metadata) => {
|
|
|
4049
4087
|
const transcriptSource = getContextString2(metadata.transcriptSource);
|
|
4050
4088
|
const pdfTextMode = getContextString2(metadata.pdfTextMode);
|
|
4051
4089
|
const ocrEngine = getContextString2(metadata.ocrEngine);
|
|
4090
|
+
const ocrConfidence = getContextNumber2(metadata.ocrRegionConfidence) ?? getContextNumber2(metadata.ocrConfidence);
|
|
4052
4091
|
const labels = [
|
|
4053
4092
|
pdfTextMode ? `PDF ${pdfTextMode}` : "",
|
|
4054
4093
|
ocrEngine ? `OCR ${ocrEngine}` : "",
|
|
4094
|
+
typeof ocrConfidence === "number" ? `Confidence ${ocrConfidence.toFixed(2)}` : "",
|
|
4055
4095
|
mediaKind ? `Media ${mediaKind}` : "",
|
|
4056
4096
|
transcriptSource ? `Transcript ${transcriptSource}` : "",
|
|
4057
4097
|
threadTopic ? `Thread ${threadTopic}` : "",
|
|
@@ -4061,6 +4101,50 @@ var buildProvenanceLabel2 = (metadata) => {
|
|
|
4061
4101
|
].filter((value) => value.length > 0);
|
|
4062
4102
|
return labels.length > 0 ? labels.join(" \xB7 ") : undefined;
|
|
4063
4103
|
};
|
|
4104
|
+
var buildRAGSourceLabels = ({
|
|
4105
|
+
metadata,
|
|
4106
|
+
source,
|
|
4107
|
+
title
|
|
4108
|
+
}) => {
|
|
4109
|
+
const contextLabel = buildContextLabel2(metadata);
|
|
4110
|
+
const locatorLabel = buildLocatorLabel2(metadata, source, title);
|
|
4111
|
+
const provenanceLabel = buildProvenanceLabel2(metadata);
|
|
4112
|
+
if (!contextLabel && !locatorLabel && !provenanceLabel) {
|
|
4113
|
+
return;
|
|
4114
|
+
}
|
|
4115
|
+
return {
|
|
4116
|
+
contextLabel,
|
|
4117
|
+
locatorLabel,
|
|
4118
|
+
provenanceLabel
|
|
4119
|
+
};
|
|
4120
|
+
};
|
|
4121
|
+
var buildRAGChunkStructure = (metadata) => {
|
|
4122
|
+
if (!metadata) {
|
|
4123
|
+
return;
|
|
4124
|
+
}
|
|
4125
|
+
const sectionPath = Array.isArray(metadata.sectionPath) ? metadata.sectionPath.filter((value) => typeof value === "string" && value.trim().length > 0) : undefined;
|
|
4126
|
+
const sectionKind = metadata.sectionKind === "markdown_heading" || metadata.sectionKind === "html_heading" ? metadata.sectionKind : undefined;
|
|
4127
|
+
const section = {
|
|
4128
|
+
depth: getContextNumber2(metadata.sectionDepth),
|
|
4129
|
+
kind: sectionKind,
|
|
4130
|
+
path: sectionPath && sectionPath.length > 0 ? sectionPath : undefined,
|
|
4131
|
+
title: getContextString2(metadata.sectionTitle)
|
|
4132
|
+
};
|
|
4133
|
+
const sequence = {
|
|
4134
|
+
nextChunkId: getContextString2(metadata.nextChunkId),
|
|
4135
|
+
previousChunkId: getContextString2(metadata.previousChunkId),
|
|
4136
|
+
sectionChunkCount: getContextNumber2(metadata.sectionChunkCount),
|
|
4137
|
+
sectionChunkId: getContextString2(metadata.sectionChunkId),
|
|
4138
|
+
sectionChunkIndex: getContextNumber2(metadata.sectionChunkIndex)
|
|
4139
|
+
};
|
|
4140
|
+
if (!section.title && (!section.path || section.path.length === 0) && typeof section.depth !== "number" && !section.kind && !sequence.nextChunkId && !sequence.previousChunkId && typeof sequence.sectionChunkCount !== "number" && !sequence.sectionChunkId && typeof sequence.sectionChunkIndex !== "number") {
|
|
4141
|
+
return;
|
|
4142
|
+
}
|
|
4143
|
+
return {
|
|
4144
|
+
section: section.title || section.path && section.path.length > 0 || typeof section.depth === "number" || section.kind ? section : undefined,
|
|
4145
|
+
sequence: sequence.nextChunkId || sequence.previousChunkId || typeof sequence.sectionChunkCount === "number" || sequence.sectionChunkId || typeof sequence.sectionChunkIndex === "number" ? sequence : undefined
|
|
4146
|
+
};
|
|
4147
|
+
};
|
|
4064
4148
|
var buildExcerpt2 = (text, maxLength = 160) => {
|
|
4065
4149
|
const normalized = text.replaceAll(/\s+/g, " ").trim();
|
|
4066
4150
|
if (normalized.length <= maxLength) {
|
|
@@ -4068,6 +4152,136 @@ var buildExcerpt2 = (text, maxLength = 160) => {
|
|
|
4068
4152
|
}
|
|
4069
4153
|
return `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}\u2026`;
|
|
4070
4154
|
};
|
|
4155
|
+
var buildRAGChunkGraph = (chunks) => {
|
|
4156
|
+
const nodes = [];
|
|
4157
|
+
const edges = [];
|
|
4158
|
+
const edgeKeys = new Set;
|
|
4159
|
+
const sections = new Map;
|
|
4160
|
+
for (const chunk of chunks) {
|
|
4161
|
+
const labels = chunk.labels ?? buildRAGSourceLabels({
|
|
4162
|
+
metadata: chunk.metadata,
|
|
4163
|
+
source: chunk.source,
|
|
4164
|
+
title: chunk.title
|
|
4165
|
+
});
|
|
4166
|
+
const structure = chunk.structure ?? buildRAGChunkStructure(chunk.metadata);
|
|
4167
|
+
nodes.push({
|
|
4168
|
+
chunkId: chunk.chunkId,
|
|
4169
|
+
contextLabel: labels?.contextLabel,
|
|
4170
|
+
label: chunk.source ?? chunk.title ?? chunk.chunkId,
|
|
4171
|
+
locatorLabel: labels?.locatorLabel,
|
|
4172
|
+
provenanceLabel: labels?.provenanceLabel,
|
|
4173
|
+
score: chunk.score,
|
|
4174
|
+
source: chunk.source,
|
|
4175
|
+
structure,
|
|
4176
|
+
title: chunk.title
|
|
4177
|
+
});
|
|
4178
|
+
const previousChunkId = structure?.sequence?.previousChunkId;
|
|
4179
|
+
if (previousChunkId) {
|
|
4180
|
+
const key = `previous:${previousChunkId}:${chunk.chunkId}`;
|
|
4181
|
+
if (!edgeKeys.has(key)) {
|
|
4182
|
+
edgeKeys.add(key);
|
|
4183
|
+
edges.push({
|
|
4184
|
+
fromChunkId: previousChunkId,
|
|
4185
|
+
relation: "previous",
|
|
4186
|
+
toChunkId: chunk.chunkId
|
|
4187
|
+
});
|
|
4188
|
+
}
|
|
4189
|
+
}
|
|
4190
|
+
const nextChunkId = structure?.sequence?.nextChunkId;
|
|
4191
|
+
if (nextChunkId) {
|
|
4192
|
+
const key = `next:${chunk.chunkId}:${nextChunkId}`;
|
|
4193
|
+
if (!edgeKeys.has(key)) {
|
|
4194
|
+
edgeKeys.add(key);
|
|
4195
|
+
edges.push({
|
|
4196
|
+
fromChunkId: chunk.chunkId,
|
|
4197
|
+
relation: "next",
|
|
4198
|
+
toChunkId: nextChunkId
|
|
4199
|
+
});
|
|
4200
|
+
}
|
|
4201
|
+
}
|
|
4202
|
+
const sectionId = structure?.sequence?.sectionChunkId;
|
|
4203
|
+
if (sectionId) {
|
|
4204
|
+
const existing = sections.get(sectionId);
|
|
4205
|
+
if (!existing) {
|
|
4206
|
+
sections.set(sectionId, {
|
|
4207
|
+
chunkCount: structure.sequence?.sectionChunkCount ?? 1,
|
|
4208
|
+
chunkIds: [chunk.chunkId],
|
|
4209
|
+
depth: structure.section?.depth,
|
|
4210
|
+
id: sectionId,
|
|
4211
|
+
kind: structure.section?.kind,
|
|
4212
|
+
path: structure.section?.path,
|
|
4213
|
+
title: structure.section?.title
|
|
4214
|
+
});
|
|
4215
|
+
continue;
|
|
4216
|
+
}
|
|
4217
|
+
if (!existing.chunkIds.includes(chunk.chunkId)) {
|
|
4218
|
+
existing.chunkIds.push(chunk.chunkId);
|
|
4219
|
+
}
|
|
4220
|
+
existing.chunkCount = Math.max(existing.chunkCount, structure.sequence?.sectionChunkCount ?? existing.chunkCount);
|
|
4221
|
+
}
|
|
4222
|
+
}
|
|
4223
|
+
for (const section of sections.values()) {
|
|
4224
|
+
section.chunkIds.sort((left, right) => {
|
|
4225
|
+
const leftNode = nodes.find((node) => node.chunkId === left);
|
|
4226
|
+
const rightNode = nodes.find((node) => node.chunkId === right);
|
|
4227
|
+
const leftIndex = leftNode?.structure?.sequence?.sectionChunkIndex ?? Number.MAX_SAFE_INTEGER;
|
|
4228
|
+
const rightIndex = rightNode?.structure?.sequence?.sectionChunkIndex ?? Number.MAX_SAFE_INTEGER;
|
|
4229
|
+
if (leftIndex !== rightIndex) {
|
|
4230
|
+
return leftIndex - rightIndex;
|
|
4231
|
+
}
|
|
4232
|
+
return left.localeCompare(right);
|
|
4233
|
+
});
|
|
4234
|
+
}
|
|
4235
|
+
nodes.sort((left, right) => {
|
|
4236
|
+
const leftSection = left.structure?.sequence?.sectionChunkIndex ?? Number.MAX_SAFE_INTEGER;
|
|
4237
|
+
const rightSection = right.structure?.sequence?.sectionChunkIndex ?? Number.MAX_SAFE_INTEGER;
|
|
4238
|
+
if (leftSection !== rightSection) {
|
|
4239
|
+
return leftSection - rightSection;
|
|
4240
|
+
}
|
|
4241
|
+
const leftScore = left.score ?? Number.NEGATIVE_INFINITY;
|
|
4242
|
+
const rightScore = right.score ?? Number.NEGATIVE_INFINITY;
|
|
4243
|
+
if (leftScore !== rightScore) {
|
|
4244
|
+
return rightScore - leftScore;
|
|
4245
|
+
}
|
|
4246
|
+
return left.label.localeCompare(right.label);
|
|
4247
|
+
});
|
|
4248
|
+
return {
|
|
4249
|
+
edges,
|
|
4250
|
+
nodes,
|
|
4251
|
+
sections: [...sections.values()].sort((left, right) => (left.title ?? left.id).localeCompare(right.title ?? right.id))
|
|
4252
|
+
};
|
|
4253
|
+
};
|
|
4254
|
+
var buildRAGChunkPreviewGraph = (preview) => buildRAGChunkGraph(preview.chunks.map((chunk) => ({
|
|
4255
|
+
chunkId: chunk.chunkId,
|
|
4256
|
+
labels: chunk.labels,
|
|
4257
|
+
metadata: chunk.metadata,
|
|
4258
|
+
source: chunk.source ?? preview.document.source,
|
|
4259
|
+
structure: chunk.structure,
|
|
4260
|
+
title: chunk.title ?? preview.document.title
|
|
4261
|
+
})));
|
|
4262
|
+
var buildRAGChunkPreviewNavigation = (preview, activeChunkId) => buildRAGChunkGraphNavigation(buildRAGChunkPreviewGraph(preview), activeChunkId);
|
|
4263
|
+
var buildRAGChunkGraphNavigation = (graph, activeChunkId) => {
|
|
4264
|
+
if (graph.nodes.length === 0) {
|
|
4265
|
+
return {
|
|
4266
|
+
activeChunkId,
|
|
4267
|
+
sectionNodes: []
|
|
4268
|
+
};
|
|
4269
|
+
}
|
|
4270
|
+
const activeNode = (activeChunkId ? graph.nodes.find((node) => node.chunkId === activeChunkId) : undefined) ?? graph.nodes[0];
|
|
4271
|
+
const resolvedActiveChunkId = activeNode?.chunkId;
|
|
4272
|
+
const previousNode = activeNode?.structure?.sequence?.previousChunkId ? graph.nodes.find((node) => node.chunkId === activeNode.structure?.sequence?.previousChunkId) : undefined;
|
|
4273
|
+
const nextNode = activeNode?.structure?.sequence?.nextChunkId ? graph.nodes.find((node) => node.chunkId === activeNode.structure?.sequence?.nextChunkId) : undefined;
|
|
4274
|
+
const section = activeNode?.structure?.sequence?.sectionChunkId ? graph.sections.find((entry) => entry.id === activeNode.structure?.sequence?.sectionChunkId) : undefined;
|
|
4275
|
+
const sectionNodes = section ? section.chunkIds.map((chunkId) => graph.nodes.find((node) => node.chunkId === chunkId)).filter((node) => Boolean(node)) : activeNode ? [activeNode] : [];
|
|
4276
|
+
return {
|
|
4277
|
+
activeChunkId: resolvedActiveChunkId,
|
|
4278
|
+
activeNode,
|
|
4279
|
+
nextNode,
|
|
4280
|
+
previousNode,
|
|
4281
|
+
section,
|
|
4282
|
+
sectionNodes
|
|
4283
|
+
};
|
|
4284
|
+
};
|
|
4071
4285
|
var buildRAGRetrievedState = (messages) => {
|
|
4072
4286
|
const message = getLatestRetrievedMessage(messages);
|
|
4073
4287
|
if (!message) {
|
|
@@ -4102,13 +4316,14 @@ var buildRAGSourceSummaries = (sources) => {
|
|
|
4102
4316
|
citationNumbers: groupCitations.map((citation) => citationReferenceMap[citation.chunkId] ?? 0),
|
|
4103
4317
|
citations: groupCitations,
|
|
4104
4318
|
chunkIds: group.chunks.map((chunk) => chunk.chunkId),
|
|
4105
|
-
contextLabel: buildContextLabel2(leadChunk?.metadata),
|
|
4319
|
+
contextLabel: leadChunk?.labels?.contextLabel ?? buildContextLabel2(leadChunk?.metadata),
|
|
4106
4320
|
count: group.count,
|
|
4107
4321
|
excerpt: buildExcerpt2(leadChunk?.text ?? ""),
|
|
4108
4322
|
key: group.key,
|
|
4109
4323
|
label: group.label,
|
|
4110
|
-
locatorLabel: buildLocatorLabel2(leadChunk?.metadata, leadChunk?.source, leadChunk?.title),
|
|
4111
|
-
provenanceLabel: buildProvenanceLabel2(leadChunk?.metadata),
|
|
4324
|
+
locatorLabel: leadChunk?.labels?.locatorLabel ?? buildLocatorLabel2(leadChunk?.metadata, leadChunk?.source, leadChunk?.title),
|
|
4325
|
+
provenanceLabel: leadChunk?.labels?.provenanceLabel ?? buildProvenanceLabel2(leadChunk?.metadata),
|
|
4326
|
+
structure: leadChunk?.structure ?? buildRAGChunkStructure(leadChunk?.metadata),
|
|
4112
4327
|
source: group.source,
|
|
4113
4328
|
title: group.title
|
|
4114
4329
|
};
|
|
@@ -4232,6 +4447,12 @@ var buildSourceGroup = (source, key) => ({
|
|
|
4232
4447
|
count: 1,
|
|
4233
4448
|
key,
|
|
4234
4449
|
label: buildSourceLabel2(source),
|
|
4450
|
+
labels: source.labels ?? buildRAGSourceLabels({
|
|
4451
|
+
metadata: source.metadata,
|
|
4452
|
+
source: source.source,
|
|
4453
|
+
title: source.title
|
|
4454
|
+
}),
|
|
4455
|
+
structure: source.structure ?? buildRAGChunkStructure(source.metadata),
|
|
4235
4456
|
source: source.source,
|
|
4236
4457
|
title: source.title
|
|
4237
4458
|
});
|
|
@@ -4242,7 +4463,20 @@ var updateSourceGroup = (groups, source) => {
|
|
|
4242
4463
|
groups.set(key, buildSourceGroup(source, key));
|
|
4243
4464
|
return;
|
|
4244
4465
|
}
|
|
4245
|
-
|
|
4466
|
+
if (source.score > existing.bestScore) {
|
|
4467
|
+
existing.bestScore = source.score;
|
|
4468
|
+
existing.label = buildSourceLabel2(source);
|
|
4469
|
+
existing.labels = source.labels ?? buildRAGSourceLabels({
|
|
4470
|
+
metadata: source.metadata,
|
|
4471
|
+
source: source.source,
|
|
4472
|
+
title: source.title
|
|
4473
|
+
});
|
|
4474
|
+
existing.structure = source.structure ?? buildRAGChunkStructure(source.metadata);
|
|
4475
|
+
existing.source = source.source;
|
|
4476
|
+
existing.title = source.title;
|
|
4477
|
+
} else {
|
|
4478
|
+
existing.bestScore = Math.max(existing.bestScore, source.score);
|
|
4479
|
+
}
|
|
4246
4480
|
existing.count += 1;
|
|
4247
4481
|
existing.chunks.push(source);
|
|
4248
4482
|
};
|
|
@@ -5454,7 +5688,7 @@ var useAIStream = (path, conversationId) => {
|
|
|
5454
5688
|
};
|
|
5455
5689
|
};
|
|
5456
5690
|
// src/vue/ai/useRAGChunkPreview.ts
|
|
5457
|
-
import { ref as ref2 } from "vue";
|
|
5691
|
+
import { computed, ref as ref2 } from "vue";
|
|
5458
5692
|
|
|
5459
5693
|
// src/ai/client/ragClient.ts
|
|
5460
5694
|
init_constants();
|
|
@@ -6532,8 +6766,11 @@ var createRAGClient = (options) => {
|
|
|
6532
6766
|
var useRAGChunkPreview = (path) => {
|
|
6533
6767
|
const client = createRAGClient({ path });
|
|
6534
6768
|
const preview = ref2(null);
|
|
6769
|
+
const activeChunkId = ref2(null);
|
|
6535
6770
|
const error = ref2(null);
|
|
6536
6771
|
const isLoading = ref2(false);
|
|
6772
|
+
const chunkGraph = computed(() => preview.value ? buildRAGChunkPreviewGraph(preview.value) : null);
|
|
6773
|
+
const navigation = computed(() => preview.value ? buildRAGChunkPreviewNavigation(preview.value, activeChunkId.value ?? undefined) : null);
|
|
6537
6774
|
const inspect = async (id) => {
|
|
6538
6775
|
isLoading.value = true;
|
|
6539
6776
|
error.value = null;
|
|
@@ -6543,6 +6780,7 @@ var useRAGChunkPreview = (path) => {
|
|
|
6543
6780
|
throw new Error(response.error);
|
|
6544
6781
|
}
|
|
6545
6782
|
preview.value = response;
|
|
6783
|
+
activeChunkId.value = response.chunks[0]?.chunkId ?? null;
|
|
6546
6784
|
return response;
|
|
6547
6785
|
} catch (caught) {
|
|
6548
6786
|
error.value = caught instanceof Error ? caught.message : String(caught);
|
|
@@ -6554,27 +6792,35 @@ var useRAGChunkPreview = (path) => {
|
|
|
6554
6792
|
const clear = () => {
|
|
6555
6793
|
error.value = null;
|
|
6556
6794
|
isLoading.value = false;
|
|
6795
|
+
activeChunkId.value = null;
|
|
6557
6796
|
preview.value = null;
|
|
6558
6797
|
};
|
|
6798
|
+
const selectChunk = (id) => {
|
|
6799
|
+
activeChunkId.value = id;
|
|
6800
|
+
};
|
|
6559
6801
|
return {
|
|
6802
|
+
activeChunkId,
|
|
6560
6803
|
clear,
|
|
6804
|
+
chunkGraph,
|
|
6561
6805
|
error,
|
|
6562
6806
|
inspect,
|
|
6563
6807
|
isLoading,
|
|
6564
|
-
|
|
6808
|
+
navigation,
|
|
6809
|
+
preview,
|
|
6810
|
+
selectChunk
|
|
6565
6811
|
};
|
|
6566
6812
|
};
|
|
6567
6813
|
// src/vue/ai/useRAG.ts
|
|
6568
|
-
import { computed as
|
|
6814
|
+
import { computed as computed9 } from "vue";
|
|
6569
6815
|
|
|
6570
6816
|
// src/vue/ai/useRAGCitations.ts
|
|
6571
|
-
import { computed } from "vue";
|
|
6817
|
+
import { computed as computed2 } from "vue";
|
|
6572
6818
|
var useRAGCitations = (sources) => {
|
|
6573
|
-
const citations =
|
|
6574
|
-
const citationReferenceMap =
|
|
6575
|
-
const sourceGroups =
|
|
6576
|
-
const sourceSummaries =
|
|
6577
|
-
const hasCitations =
|
|
6819
|
+
const citations = computed2(() => buildRAGCitations(sources.value));
|
|
6820
|
+
const citationReferenceMap = computed2(() => buildRAGCitationReferenceMap(citations.value));
|
|
6821
|
+
const sourceGroups = computed2(() => buildRAGSourceGroups(sources.value));
|
|
6822
|
+
const sourceSummaries = computed2(() => buildRAGSourceSummaries(sources.value));
|
|
6823
|
+
const hasCitations = computed2(() => citations.value.length > 0);
|
|
6578
6824
|
return {
|
|
6579
6825
|
citationReferenceMap,
|
|
6580
6826
|
citations,
|
|
@@ -6624,7 +6870,7 @@ var useRAGDocuments = (path) => {
|
|
|
6624
6870
|
};
|
|
6625
6871
|
|
|
6626
6872
|
// src/vue/ai/useRAGEvaluate.ts
|
|
6627
|
-
import { computed as
|
|
6873
|
+
import { computed as computed3, ref as ref4 } from "vue";
|
|
6628
6874
|
var useRAGEvaluate = (path) => {
|
|
6629
6875
|
const client = createRAGClient({ path });
|
|
6630
6876
|
const error = ref4(null);
|
|
@@ -6681,7 +6927,7 @@ var useRAGEvaluate = (path) => {
|
|
|
6681
6927
|
const clearRuns = () => {
|
|
6682
6928
|
suiteRuns.value = [];
|
|
6683
6929
|
};
|
|
6684
|
-
const leaderboard =
|
|
6930
|
+
const leaderboard = computed3(() => buildRAGEvaluationLeaderboard(suiteRuns.value));
|
|
6685
6931
|
const reset = () => {
|
|
6686
6932
|
error.value = null;
|
|
6687
6933
|
lastRequest.value = null;
|
|
@@ -6706,14 +6952,14 @@ var useRAGEvaluate = (path) => {
|
|
|
6706
6952
|
};
|
|
6707
6953
|
|
|
6708
6954
|
// src/vue/ai/useRAGGrounding.ts
|
|
6709
|
-
import { computed as
|
|
6955
|
+
import { computed as computed4 } from "vue";
|
|
6710
6956
|
var useRAGGrounding = (content, sources) => {
|
|
6711
|
-
const groundedAnswer =
|
|
6712
|
-
const references =
|
|
6713
|
-
const hasCitations =
|
|
6714
|
-
const hasGrounding =
|
|
6715
|
-
const coverage =
|
|
6716
|
-
const ungroundedReferenceNumbers =
|
|
6957
|
+
const groundedAnswer = computed4(() => buildRAGGroundedAnswer(content.value, sources.value));
|
|
6958
|
+
const references = computed4(() => buildRAGGroundingReferences(sources.value));
|
|
6959
|
+
const hasCitations = computed4(() => groundedAnswer.value.hasCitations);
|
|
6960
|
+
const hasGrounding = computed4(() => references.value.length > 0);
|
|
6961
|
+
const coverage = computed4(() => groundedAnswer.value.coverage);
|
|
6962
|
+
const ungroundedReferenceNumbers = computed4(() => groundedAnswer.value.ungroundedReferenceNumbers);
|
|
6717
6963
|
return {
|
|
6718
6964
|
coverage,
|
|
6719
6965
|
groundedAnswer,
|
|
@@ -7124,16 +7370,18 @@ var useRAGSearch = (path) => {
|
|
|
7124
7370
|
};
|
|
7125
7371
|
|
|
7126
7372
|
// src/vue/ai/useRAGSources.ts
|
|
7127
|
-
import { computed as
|
|
7373
|
+
import { computed as computed5 } from "vue";
|
|
7128
7374
|
var useRAGSources = (messages) => {
|
|
7129
|
-
const latestAssistantMessage =
|
|
7130
|
-
const sources =
|
|
7131
|
-
const sourceGroups =
|
|
7132
|
-
const sourceSummaries =
|
|
7133
|
-
const
|
|
7134
|
-
const
|
|
7375
|
+
const latestAssistantMessage = computed5(() => getLatestAssistantMessage(messages.value));
|
|
7376
|
+
const sources = computed5(() => getLatestRAGSources(messages.value));
|
|
7377
|
+
const sourceGroups = computed5(() => buildRAGSourceGroups(sources.value));
|
|
7378
|
+
const sourceSummaries = computed5(() => buildRAGSourceSummaries(sources.value));
|
|
7379
|
+
const chunkGraph = computed5(() => buildRAGChunkGraph(sources.value));
|
|
7380
|
+
const citationReferenceMap = computed5(() => buildRAGCitationReferenceMap(sourceSummaries.value.flatMap((summary) => summary.citations)));
|
|
7381
|
+
const hasSources = computed5(() => sources.value.length > 0);
|
|
7135
7382
|
return {
|
|
7136
7383
|
citationReferenceMap,
|
|
7384
|
+
chunkGraph,
|
|
7137
7385
|
hasSources,
|
|
7138
7386
|
latestAssistantMessage,
|
|
7139
7387
|
sourceGroups,
|
|
@@ -7189,14 +7437,14 @@ var useRAGStatus = (path, autoLoad = true) => {
|
|
|
7189
7437
|
};
|
|
7190
7438
|
|
|
7191
7439
|
// src/vue/ai/useRAGWorkflow.ts
|
|
7192
|
-
import { computed as
|
|
7440
|
+
import { computed as computed8 } from "vue";
|
|
7193
7441
|
|
|
7194
7442
|
// src/vue/ai/useRAGStream.ts
|
|
7195
|
-
import { computed as
|
|
7443
|
+
import { computed as computed7 } from "vue";
|
|
7196
7444
|
|
|
7197
7445
|
// src/vue/ai/useRAGStreamProgress.ts
|
|
7198
|
-
import { computed as
|
|
7199
|
-
var useRAGStreamProgress = (params) =>
|
|
7446
|
+
import { computed as computed6 } from "vue";
|
|
7447
|
+
var useRAGStreamProgress = (params) => computed6(() => buildRAGStreamProgress({
|
|
7200
7448
|
error: params.error.value,
|
|
7201
7449
|
isStreaming: params.isStreaming.value,
|
|
7202
7450
|
messages: params.messages.value
|
|
@@ -7205,7 +7453,7 @@ var useRAGStreamProgress = (params) => computed5(() => buildRAGStreamProgress({
|
|
|
7205
7453
|
// src/vue/ai/useRAGStream.ts
|
|
7206
7454
|
var useRAGStream = (path, conversationId) => {
|
|
7207
7455
|
const stream = useAIStream(path, conversationId);
|
|
7208
|
-
const workflow =
|
|
7456
|
+
const workflow = computed7(() => buildRAGAnswerWorkflowState({
|
|
7209
7457
|
error: stream.error.value,
|
|
7210
7458
|
isStreaming: stream.isStreaming.value,
|
|
7211
7459
|
messages: stream.messages.value
|
|
@@ -7218,37 +7466,37 @@ var useRAGStream = (path, conversationId) => {
|
|
|
7218
7466
|
const query = (content, attachments) => {
|
|
7219
7467
|
stream.send(content, attachments);
|
|
7220
7468
|
};
|
|
7221
|
-
const hasRetrieved =
|
|
7222
|
-
const isRetrieving =
|
|
7223
|
-
const isRetrieved =
|
|
7224
|
-
const isAnswerStreaming =
|
|
7225
|
-
const isComplete =
|
|
7226
|
-
const hasSources =
|
|
7469
|
+
const hasRetrieved = computed7(() => workflow.value.hasRetrieved);
|
|
7470
|
+
const isRetrieving = computed7(() => workflow.value.isRetrieving);
|
|
7471
|
+
const isRetrieved = computed7(() => workflow.value.isRetrieved);
|
|
7472
|
+
const isAnswerStreaming = computed7(() => workflow.value.isAnswerStreaming);
|
|
7473
|
+
const isComplete = computed7(() => workflow.value.isComplete);
|
|
7474
|
+
const hasSources = computed7(() => workflow.value.hasSources);
|
|
7227
7475
|
return {
|
|
7228
7476
|
...stream,
|
|
7229
|
-
citationReferenceMap:
|
|
7230
|
-
citations:
|
|
7231
|
-
coverage:
|
|
7232
|
-
groundedAnswer:
|
|
7233
|
-
groundingReferences:
|
|
7234
|
-
hasGrounding:
|
|
7477
|
+
citationReferenceMap: computed7(() => workflow.value.citationReferenceMap),
|
|
7478
|
+
citations: computed7(() => workflow.value.citations),
|
|
7479
|
+
coverage: computed7(() => workflow.value.coverage),
|
|
7480
|
+
groundedAnswer: computed7(() => workflow.value.groundedAnswer),
|
|
7481
|
+
groundingReferences: computed7(() => workflow.value.groundingReferences),
|
|
7482
|
+
hasGrounding: computed7(() => workflow.value.hasGrounding),
|
|
7235
7483
|
hasRetrieved,
|
|
7236
7484
|
hasSources,
|
|
7237
7485
|
isAnswerStreaming,
|
|
7238
7486
|
isComplete,
|
|
7239
|
-
isError:
|
|
7487
|
+
isError: computed7(() => workflow.value.isError),
|
|
7240
7488
|
isRetrieved,
|
|
7241
7489
|
isRetrieving,
|
|
7242
|
-
isRunning:
|
|
7243
|
-
latestAssistantMessage:
|
|
7490
|
+
isRunning: computed7(() => workflow.value.isRunning),
|
|
7491
|
+
latestAssistantMessage: computed7(() => workflow.value.latestAssistantMessage),
|
|
7244
7492
|
progress,
|
|
7245
7493
|
query,
|
|
7246
|
-
retrieval:
|
|
7247
|
-
sourceGroups:
|
|
7248
|
-
sourceSummaries:
|
|
7249
|
-
sources:
|
|
7250
|
-
stage:
|
|
7251
|
-
ungroundedReferenceNumbers:
|
|
7494
|
+
retrieval: computed7(() => workflow.value.retrieval),
|
|
7495
|
+
sourceGroups: computed7(() => workflow.value.sourceGroups),
|
|
7496
|
+
sourceSummaries: computed7(() => workflow.value.sourceSummaries),
|
|
7497
|
+
sources: computed7(() => workflow.value.sources),
|
|
7498
|
+
stage: computed7(() => workflow.value.stage),
|
|
7499
|
+
ungroundedReferenceNumbers: computed7(() => workflow.value.ungroundedReferenceNumbers),
|
|
7252
7500
|
workflow
|
|
7253
7501
|
};
|
|
7254
7502
|
};
|
|
@@ -7256,7 +7504,7 @@ var useRAGStream = (path, conversationId) => {
|
|
|
7256
7504
|
// src/vue/ai/useRAGWorkflow.ts
|
|
7257
7505
|
var useRAGWorkflow = (path, conversationId) => {
|
|
7258
7506
|
const stream = useRAGStream(path, conversationId);
|
|
7259
|
-
const state =
|
|
7507
|
+
const state = computed8(() => stream.workflow.value);
|
|
7260
7508
|
return {
|
|
7261
7509
|
...stream,
|
|
7262
7510
|
state
|
|
@@ -7276,7 +7524,7 @@ var useRAG = (path, options = {}) => {
|
|
|
7276
7524
|
const workflow = useRAGWorkflow(options.streamPath ?? path, options.conversationId);
|
|
7277
7525
|
const sources = useRAGSources(workflow.messages);
|
|
7278
7526
|
const citations = useRAGCitations(sources.sources);
|
|
7279
|
-
const grounding = useRAGGrounding(
|
|
7527
|
+
const grounding = useRAGGrounding(computed9(() => workflow.latestAssistantMessage.value?.content ?? ""), sources.sources);
|
|
7280
7528
|
return {
|
|
7281
7529
|
chunkPreview,
|
|
7282
7530
|
citations,
|
|
@@ -7313,5 +7561,5 @@ export {
|
|
|
7313
7561
|
AIStreamKey
|
|
7314
7562
|
};
|
|
7315
7563
|
|
|
7316
|
-
//# debugId=
|
|
7564
|
+
//# debugId=8B2F93A7DA0F41AD64756E2164756E21
|
|
7317
7565
|
//# sourceMappingURL=index.js.map
|