@absolutejs/absolute 0.19.0-beta.604 → 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.
Files changed (45) hide show
  1. package/dist/ai/client/index.js +186 -6
  2. package/dist/ai/client/index.js.map +4 -4
  3. package/dist/ai/client/ui.js +190 -6
  4. package/dist/ai/client/ui.js.map +4 -4
  5. package/dist/ai/index.js +289 -36
  6. package/dist/ai/index.js.map +7 -7
  7. package/dist/ai/rag/quality.js +17 -6
  8. package/dist/ai/rag/quality.js.map +3 -3
  9. package/dist/ai/rag/ui.js +190 -6
  10. package/dist/ai/rag/ui.js.map +4 -4
  11. package/dist/ai-client/angular/ai/index.js +185 -5
  12. package/dist/ai-client/react/ai/index.js +200 -6
  13. package/dist/ai-client/vue/ai/index.js +289 -97
  14. package/dist/angular/ai/index.js +186 -6
  15. package/dist/angular/ai/index.js.map +4 -4
  16. package/dist/angular/index.js +2 -2
  17. package/dist/angular/index.js.map +1 -1
  18. package/dist/angular/server.js +2 -2
  19. package/dist/angular/server.js.map +1 -1
  20. package/dist/build.js +2 -2
  21. package/dist/build.js.map +1 -1
  22. package/dist/index.js +2 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/react/ai/index.js +201 -7
  25. package/dist/react/ai/index.js.map +6 -6
  26. package/dist/src/ai/client/ui.d.ts +1 -1
  27. package/dist/src/ai/rag/index.d.ts +1 -1
  28. package/dist/src/ai/rag/presentation.d.ts +7 -1
  29. package/dist/src/ai/rag/ui.d.ts +1 -1
  30. package/dist/src/react/ai/useRAG.d.ts +5 -0
  31. package/dist/src/react/ai/useRAGChunkPreview.d.ts +4 -0
  32. package/dist/src/react/ai/useRAGSources.d.ts +1 -0
  33. package/dist/src/svelte/ai/createRAG.d.ts +5 -0
  34. package/dist/src/svelte/ai/createRAGChunkPreview.d.ts +4 -0
  35. package/dist/src/svelte/ai/createRAGSources.d.ts +1 -0
  36. package/dist/src/vue/ai/useRAG.d.ts +65 -0
  37. package/dist/src/vue/ai/useRAGChunkPreview.d.ts +34 -0
  38. package/dist/src/vue/ai/useRAGSearch.d.ts +30 -0
  39. package/dist/src/vue/ai/useRAGSources.d.ts +1 -0
  40. package/dist/svelte/ai/index.js +247 -53
  41. package/dist/svelte/ai/index.js.map +6 -6
  42. package/dist/types/ai.d.ts +60 -0
  43. package/dist/vue/ai/index.js +253 -59
  44. package/dist/vue/ai/index.js.map +6 -6
  45. package/package.json +1 -1
@@ -243,6 +243,11 @@ var buildContextLabel = (metadata) => {
243
243
  if (speaker) {
244
244
  return `Speaker ${speaker}`;
245
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
+ }
246
251
  return;
247
252
  };
248
253
  var formatMediaTimestamp = (value) => {
@@ -292,6 +297,10 @@ var buildLocatorLabel = (metadata, source, title) => {
292
297
  if (mediaStart) {
293
298
  return `Timestamp ${mediaStart}`;
294
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
+ }
295
304
  return;
296
305
  };
297
306
  var formatTimestampLabel = (value) => {
@@ -341,8 +350,10 @@ var buildExcerpt = (text, maxLength = 160) => {
341
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 ");
342
351
  var buildGroundingReferenceEvidenceSummary = (reference) => [
343
352
  reference.source ?? reference.title ?? reference.chunkId,
353
+ reference.locatorLabel,
354
+ reference.contextLabel,
344
355
  reference.provenanceLabel
345
- ].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 ");
346
357
  var buildGroundedAnswerCitationDetail = (reference) => ({
347
358
  contextLabel: reference.contextLabel,
348
359
  evidenceLabel: buildGroundingReferenceEvidenceLabel(reference),
@@ -366,12 +377,12 @@ var buildRAGCitations = (sources) => {
366
377
  continue;
367
378
  unique.set(key, {
368
379
  chunkId: source.chunkId,
369
- contextLabel: buildContextLabel(source.metadata),
380
+ contextLabel: source.labels?.contextLabel ?? buildContextLabel(source.metadata),
370
381
  key,
371
382
  label: buildSourceLabel(source),
372
- locatorLabel: buildLocatorLabel(source.metadata, source.source, source.title),
383
+ locatorLabel: source.labels?.locatorLabel ?? buildLocatorLabel(source.metadata, source.source, source.title),
373
384
  metadata: source.metadata,
374
- provenanceLabel: buildProvenanceLabel(source.metadata),
385
+ provenanceLabel: source.labels?.provenanceLabel ?? buildProvenanceLabel(source.metadata),
375
386
  score: source.score,
376
387
  source: source.source,
377
388
  text: source.text,
@@ -441,7 +452,7 @@ var buildRAGGroundingReferences = (sources) => {
441
452
  const citationReferenceMap = buildRAGCitationReferenceMap(citations);
442
453
  return citations.map((citation) => ({
443
454
  chunkId: citation.chunkId,
444
- contextLabel: buildContextLabel(citation.metadata),
455
+ contextLabel: citation.contextLabel ?? buildContextLabel(citation.metadata),
445
456
  excerpt: buildExcerpt(citation.text),
446
457
  label: citation.label,
447
458
  locatorLabel: citation.locatorLabel ?? buildLocatorLabel(citation.metadata, citation.source, citation.title),
@@ -4014,6 +4025,11 @@ var buildContextLabel2 = (metadata) => {
4014
4025
  if (speaker) {
4015
4026
  return `Speaker ${speaker}`;
4016
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
+ }
4017
4033
  return;
4018
4034
  };
4019
4035
  var buildLocatorLabel2 = (metadata, source, title) => {
@@ -4053,6 +4069,10 @@ var buildLocatorLabel2 = (metadata, source, title) => {
4053
4069
  if (mediaStart) {
4054
4070
  return `Timestamp ${mediaStart}`;
4055
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
+ }
4056
4076
  return;
4057
4077
  };
4058
4078
  var buildProvenanceLabel2 = (metadata) => {
@@ -4098,6 +4118,33 @@ var buildRAGSourceLabels = ({
4098
4118
  provenanceLabel
4099
4119
  };
4100
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
+ };
4101
4148
  var buildExcerpt2 = (text, maxLength = 160) => {
4102
4149
  const normalized = text.replaceAll(/\s+/g, " ").trim();
4103
4150
  if (normalized.length <= maxLength) {
@@ -4105,6 +4152,136 @@ var buildExcerpt2 = (text, maxLength = 160) => {
4105
4152
  }
4106
4153
  return `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}\u2026`;
4107
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
+ };
4108
4285
  var buildRAGRetrievedState = (messages) => {
4109
4286
  const message = getLatestRetrievedMessage(messages);
4110
4287
  if (!message) {
@@ -4146,6 +4323,7 @@ var buildRAGSourceSummaries = (sources) => {
4146
4323
  label: group.label,
4147
4324
  locatorLabel: leadChunk?.labels?.locatorLabel ?? buildLocatorLabel2(leadChunk?.metadata, leadChunk?.source, leadChunk?.title),
4148
4325
  provenanceLabel: leadChunk?.labels?.provenanceLabel ?? buildProvenanceLabel2(leadChunk?.metadata),
4326
+ structure: leadChunk?.structure ?? buildRAGChunkStructure(leadChunk?.metadata),
4149
4327
  source: group.source,
4150
4328
  title: group.title
4151
4329
  };
@@ -4274,6 +4452,7 @@ var buildSourceGroup = (source, key) => ({
4274
4452
  source: source.source,
4275
4453
  title: source.title
4276
4454
  }),
4455
+ structure: source.structure ?? buildRAGChunkStructure(source.metadata),
4277
4456
  source: source.source,
4278
4457
  title: source.title
4279
4458
  });
@@ -4292,6 +4471,7 @@ var updateSourceGroup = (groups, source) => {
4292
4471
  source: source.source,
4293
4472
  title: source.title
4294
4473
  });
4474
+ existing.structure = source.structure ?? buildRAGChunkStructure(source.metadata);
4295
4475
  existing.source = source.source;
4296
4476
  existing.title = source.title;
4297
4477
  } else {
@@ -5513,7 +5693,7 @@ var createAIStream = (path, conversationId) => {
5513
5693
  };
5514
5694
  };
5515
5695
  // src/svelte/ai/createRAGChunkPreview.ts
5516
- import { writable } from "svelte/store";
5696
+ import { derived, writable } from "svelte/store";
5517
5697
 
5518
5698
  // src/ai/client/ragClient.ts
5519
5699
  init_constants();
@@ -6591,8 +6771,11 @@ var createRAGClient = (options) => {
6591
6771
  var createRAGChunkPreview = (path) => {
6592
6772
  const client = createRAGClient({ path });
6593
6773
  const preview = writable(null);
6774
+ const activeChunkId = writable(null);
6594
6775
  const error = writable(null);
6595
6776
  const isLoading = writable(false);
6777
+ const chunkGraph = derived(preview, ($preview) => $preview ? buildRAGChunkPreviewGraph($preview) : null);
6778
+ const navigationWithSelection = derived([preview, activeChunkId], ([$preview, $activeChunkId]) => $preview ? buildRAGChunkPreviewNavigation($preview, $activeChunkId ?? undefined) : null);
6596
6779
  const inspect = async (id) => {
6597
6780
  isLoading.set(true);
6598
6781
  error.set(null);
@@ -6602,6 +6785,7 @@ var createRAGChunkPreview = (path) => {
6602
6785
  throw new Error(response.error);
6603
6786
  }
6604
6787
  preview.set(response);
6788
+ activeChunkId.set(response.chunks[0]?.chunkId ?? null);
6605
6789
  return response;
6606
6790
  } catch (caught) {
6607
6791
  error.set(caught instanceof Error ? caught.message : String(caught));
@@ -6613,25 +6797,33 @@ var createRAGChunkPreview = (path) => {
6613
6797
  const clear = () => {
6614
6798
  error.set(null);
6615
6799
  isLoading.set(false);
6800
+ activeChunkId.set(null);
6616
6801
  preview.set(null);
6617
6802
  };
6803
+ const selectChunk = (id) => {
6804
+ activeChunkId.set(id);
6805
+ };
6618
6806
  return {
6807
+ activeChunkId,
6619
6808
  clear,
6809
+ chunkGraph,
6620
6810
  error,
6621
6811
  inspect,
6622
6812
  isLoading,
6623
- preview
6813
+ navigation: navigationWithSelection,
6814
+ preview,
6815
+ selectChunk
6624
6816
  };
6625
6817
  };
6626
6818
 
6627
6819
  // src/svelte/ai/createRAGCitations.ts
6628
- import { derived } from "svelte/store";
6820
+ import { derived as derived2 } from "svelte/store";
6629
6821
  var createRAGCitations = (sources) => {
6630
- const citations = derived(sources, ($sources) => buildRAGCitations($sources));
6631
- const sourceGroups = derived(sources, ($sources) => buildRAGSourceGroups($sources));
6632
- const sourceSummaries = derived(sources, ($sources) => buildRAGSourceSummaries($sources));
6633
- const citationReferenceMap = derived(citations, ($citations) => buildRAGCitationReferenceMap($citations));
6634
- const hasCitations = derived(citations, ($citations) => $citations.length > 0);
6822
+ const citations = derived2(sources, ($sources) => buildRAGCitations($sources));
6823
+ const sourceGroups = derived2(sources, ($sources) => buildRAGSourceGroups($sources));
6824
+ const sourceSummaries = derived2(sources, ($sources) => buildRAGSourceSummaries($sources));
6825
+ const citationReferenceMap = derived2(citations, ($citations) => buildRAGCitationReferenceMap($citations));
6826
+ const hasCitations = derived2(citations, ($citations) => $citations.length > 0);
6635
6827
  return {
6636
6828
  citationReferenceMap,
6637
6829
  citations,
@@ -6681,7 +6873,7 @@ var createRAGDocuments = (path) => {
6681
6873
  };
6682
6874
 
6683
6875
  // src/svelte/ai/createRAGEvaluate.ts
6684
- import { derived as derived2, writable as writable3 } from "svelte/store";
6876
+ import { derived as derived3, writable as writable3 } from "svelte/store";
6685
6877
  var createRAGEvaluate = (path) => {
6686
6878
  const client = createRAGClient({ path });
6687
6879
  const error = writable3(null);
@@ -6738,7 +6930,7 @@ var createRAGEvaluate = (path) => {
6738
6930
  const clearRuns = () => {
6739
6931
  suiteRuns.set([]);
6740
6932
  };
6741
- const leaderboard = derived2(suiteRuns, ($suiteRuns) => buildRAGEvaluationLeaderboard($suiteRuns));
6933
+ const leaderboard = derived3(suiteRuns, ($suiteRuns) => buildRAGEvaluationLeaderboard($suiteRuns));
6742
6934
  const reset = () => {
6743
6935
  error.set(null);
6744
6936
  lastRequest.set(null);
@@ -6763,14 +6955,14 @@ var createRAGEvaluate = (path) => {
6763
6955
  };
6764
6956
 
6765
6957
  // src/svelte/ai/createRAGGrounding.ts
6766
- import { derived as derived3 } from "svelte/store";
6958
+ import { derived as derived4 } from "svelte/store";
6767
6959
  var createRAGGrounding = (content, sources) => {
6768
- const groundedAnswer = derived3([content, sources], ([$content, $sources]) => buildRAGGroundedAnswer($content, $sources));
6769
- const references = derived3(sources, ($sources) => buildRAGGroundingReferences($sources));
6770
- const hasCitations = derived3(groundedAnswer, ($groundedAnswer) => $groundedAnswer.hasCitations);
6771
- const hasGrounding = derived3(references, ($references) => $references.length > 0);
6772
- const coverage = derived3(groundedAnswer, ($groundedAnswer) => $groundedAnswer.coverage);
6773
- const ungroundedReferenceNumbers = derived3(groundedAnswer, ($groundedAnswer) => $groundedAnswer.ungroundedReferenceNumbers);
6960
+ const groundedAnswer = derived4([content, sources], ([$content, $sources]) => buildRAGGroundedAnswer($content, $sources));
6961
+ const references = derived4(sources, ($sources) => buildRAGGroundingReferences($sources));
6962
+ const hasCitations = derived4(groundedAnswer, ($groundedAnswer) => $groundedAnswer.hasCitations);
6963
+ const hasGrounding = derived4(references, ($references) => $references.length > 0);
6964
+ const coverage = derived4(groundedAnswer, ($groundedAnswer) => $groundedAnswer.coverage);
6965
+ const ungroundedReferenceNumbers = derived4(groundedAnswer, ($groundedAnswer) => $groundedAnswer.ungroundedReferenceNumbers);
6774
6966
  return {
6775
6967
  coverage,
6776
6968
  groundedAnswer,
@@ -7179,16 +7371,18 @@ var createRAGSearch = (path) => {
7179
7371
  };
7180
7372
 
7181
7373
  // src/svelte/ai/createRAGSources.ts
7182
- import { derived as derived4 } from "svelte/store";
7374
+ import { derived as derived5 } from "svelte/store";
7183
7375
  var createRAGSources = (messages) => {
7184
- const latestAssistantMessage = derived4(messages, ($messages) => getLatestAssistantMessage($messages));
7185
- const sources = derived4(messages, ($messages) => getLatestRAGSources($messages));
7186
- const sourceGroups = derived4(sources, ($sources) => buildRAGSourceGroups($sources));
7187
- const sourceSummaries = derived4(sources, ($sources) => buildRAGSourceSummaries($sources));
7188
- const citationReferenceMap = derived4(sourceSummaries, ($sourceSummaries) => buildRAGCitationReferenceMap($sourceSummaries.flatMap((summary) => summary.citations)));
7189
- const hasSources = derived4(sources, ($sources) => $sources.length > 0);
7376
+ const latestAssistantMessage = derived5(messages, ($messages) => getLatestAssistantMessage($messages));
7377
+ const sources = derived5(messages, ($messages) => getLatestRAGSources($messages));
7378
+ const sourceGroups = derived5(sources, ($sources) => buildRAGSourceGroups($sources));
7379
+ const sourceSummaries = derived5(sources, ($sources) => buildRAGSourceSummaries($sources));
7380
+ const chunkGraph = derived5(sources, ($sources) => buildRAGChunkGraph($sources));
7381
+ const citationReferenceMap = derived5(sourceSummaries, ($sourceSummaries) => buildRAGCitationReferenceMap($sourceSummaries.flatMap((summary) => summary.citations)));
7382
+ const hasSources = derived5(sources, ($sources) => $sources.length > 0);
7190
7383
  return {
7191
7384
  citationReferenceMap,
7385
+ chunkGraph,
7192
7386
  hasSources,
7193
7387
  latestAssistantMessage,
7194
7388
  sourceGroups,
@@ -7242,14 +7436,14 @@ var createRAGStatus = (path, autoLoad = true) => {
7242
7436
  };
7243
7437
 
7244
7438
  // src/svelte/ai/createRAGWorkflow.ts
7245
- import { derived as derived7 } from "svelte/store";
7439
+ import { derived as derived8 } from "svelte/store";
7246
7440
 
7247
7441
  // src/svelte/ai/createRAGStream.ts
7248
- import { derived as derived6, readable } from "svelte/store";
7442
+ import { derived as derived7, readable } from "svelte/store";
7249
7443
 
7250
7444
  // src/svelte/ai/createRAGStreamProgress.ts
7251
- import { derived as derived5 } from "svelte/store";
7252
- var createRAGStreamProgress = (params) => derived5([params.error, params.isStreaming, params.messages], ([$error, $isStreaming, $messages]) => buildRAGStreamProgress({
7445
+ import { derived as derived6 } from "svelte/store";
7446
+ var createRAGStreamProgress = (params) => derived6([params.error, params.isStreaming, params.messages], ([$error, $isStreaming, $messages]) => buildRAGStreamProgress({
7253
7447
  error: $error,
7254
7448
  isStreaming: $isStreaming,
7255
7449
  messages: $messages
@@ -7270,7 +7464,7 @@ var createRAGStream = (path, conversationId) => {
7270
7464
  set(stream.isStreaming);
7271
7465
  return stream.subscribe(() => set(stream.isStreaming));
7272
7466
  });
7273
- const workflow = derived6([messages, error, isStreaming], ([$messages, $error, $isStreaming]) => buildRAGAnswerWorkflowState({
7467
+ const workflow = derived7([messages, error, isStreaming], ([$messages, $error, $isStreaming]) => buildRAGAnswerWorkflowState({
7274
7468
  error: $error,
7275
7469
  isStreaming: $isStreaming,
7276
7470
  messages: $messages
@@ -7280,21 +7474,21 @@ var createRAGStream = (path, conversationId) => {
7280
7474
  isStreaming,
7281
7475
  messages
7282
7476
  });
7283
- const latestAssistantMessage = derived6(workflow, ($workflow) => $workflow.latestAssistantMessage);
7284
- const sources = derived6(workflow, ($workflow) => $workflow.sources);
7285
- const sourceGroups = derived6(workflow, ($workflow) => $workflow.sourceGroups);
7286
- const citations = derived6(workflow, ($workflow) => $workflow.citations);
7287
- const sourceSummaries = derived6(workflow, ($workflow) => $workflow.sourceSummaries);
7288
- const retrieval = derived6(workflow, ($workflow) => $workflow.retrieval);
7289
- const groundedAnswer = derived6(workflow, ($workflow) => $workflow.groundedAnswer);
7290
- const groundingReferences = derived6(workflow, ($workflow) => $workflow.groundingReferences);
7291
- const stage = derived6(workflow, ($workflow) => $workflow.stage);
7292
- const hasRetrieved = derived6(workflow, ($workflow) => $workflow.hasRetrieved);
7293
- const hasSources = derived6(workflow, ($workflow) => $workflow.hasSources);
7294
- const isRetrieving = derived6(workflow, ($workflow) => $workflow.isRetrieving);
7295
- const isRetrieved = derived6(workflow, ($workflow) => $workflow.isRetrieved);
7296
- const isAnswerStreaming = derived6(workflow, ($workflow) => $workflow.isAnswerStreaming);
7297
- const isComplete = derived6(workflow, ($workflow) => $workflow.isComplete);
7477
+ const latestAssistantMessage = derived7(workflow, ($workflow) => $workflow.latestAssistantMessage);
7478
+ const sources = derived7(workflow, ($workflow) => $workflow.sources);
7479
+ const sourceGroups = derived7(workflow, ($workflow) => $workflow.sourceGroups);
7480
+ const citations = derived7(workflow, ($workflow) => $workflow.citations);
7481
+ const sourceSummaries = derived7(workflow, ($workflow) => $workflow.sourceSummaries);
7482
+ const retrieval = derived7(workflow, ($workflow) => $workflow.retrieval);
7483
+ const groundedAnswer = derived7(workflow, ($workflow) => $workflow.groundedAnswer);
7484
+ const groundingReferences = derived7(workflow, ($workflow) => $workflow.groundingReferences);
7485
+ const stage = derived7(workflow, ($workflow) => $workflow.stage);
7486
+ const hasRetrieved = derived7(workflow, ($workflow) => $workflow.hasRetrieved);
7487
+ const hasSources = derived7(workflow, ($workflow) => $workflow.hasSources);
7488
+ const isRetrieving = derived7(workflow, ($workflow) => $workflow.isRetrieving);
7489
+ const isRetrieved = derived7(workflow, ($workflow) => $workflow.isRetrieved);
7490
+ const isAnswerStreaming = derived7(workflow, ($workflow) => $workflow.isAnswerStreaming);
7491
+ const isComplete = derived7(workflow, ($workflow) => $workflow.isComplete);
7298
7492
  const query = (content, attachments) => {
7299
7493
  stream.send(content, attachments);
7300
7494
  };
@@ -7327,7 +7521,7 @@ var createRAGStream = (path, conversationId) => {
7327
7521
  // src/svelte/ai/createRAGWorkflow.ts
7328
7522
  var createRAGWorkflow = (path, conversationId) => {
7329
7523
  const stream = createRAGStream(path, conversationId);
7330
- const state = derived7(stream.workflow, ($workflow) => $workflow);
7524
+ const state = derived8(stream.workflow, ($workflow) => $workflow);
7331
7525
  return {
7332
7526
  ...stream,
7333
7527
  state
@@ -7335,7 +7529,7 @@ var createRAGWorkflow = (path, conversationId) => {
7335
7529
  };
7336
7530
 
7337
7531
  // src/svelte/ai/createRAG.ts
7338
- import { derived as derived8 } from "svelte/store";
7532
+ import { derived as derived9 } from "svelte/store";
7339
7533
  var createRAG = (path, options = {}) => {
7340
7534
  const search = createRAGSearch(path);
7341
7535
  const ingest = createRAGIngest(path);
@@ -7348,7 +7542,7 @@ var createRAG = (path, options = {}) => {
7348
7542
  const workflow = createRAGWorkflow(options.streamPath ?? path, options.conversationId);
7349
7543
  const sources = createRAGSources(workflow.messages);
7350
7544
  const citations = createRAGCitations(sources.sources);
7351
- const grounding = createRAGGrounding(derived8(workflow.latestAssistantMessage, ($latestAssistantMessage) => $latestAssistantMessage?.content ?? ""), sources.sources);
7545
+ const grounding = createRAGGrounding(derived9(workflow.latestAssistantMessage, ($latestAssistantMessage) => $latestAssistantMessage?.content ?? ""), sources.sources);
7352
7546
  return {
7353
7547
  chunkPreview,
7354
7548
  citations,
@@ -7384,5 +7578,5 @@ export {
7384
7578
  createAIStream
7385
7579
  };
7386
7580
 
7387
- //# debugId=883D3072246460B664756E2164756E21
7581
+ //# debugId=4B08CD73149144C364756E2164756E21
7388
7582
  //# sourceMappingURL=index.js.map