@absolutejs/absolute 0.19.0-beta.432 → 0.19.0-beta.434

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 (38) hide show
  1. package/dist/ai/index.js +95 -1
  2. package/dist/ai/index.js.map +5 -4
  3. package/dist/ai-client/react/ai/index.js +252 -10
  4. package/dist/angular/index.js +7 -3
  5. package/dist/angular/index.js.map +3 -3
  6. package/dist/angular/server.js +2 -2
  7. package/dist/angular/server.js.map +1 -1
  8. package/dist/build.js +2 -2
  9. package/dist/build.js.map +1 -1
  10. package/dist/client/index.js +6 -2
  11. package/dist/client/index.js.map +3 -3
  12. package/dist/index.js +7 -3
  13. package/dist/index.js.map +3 -3
  14. package/dist/react/ai/index.js +253 -11
  15. package/dist/react/ai/index.js.map +11 -7
  16. package/dist/react/index.js +6 -2
  17. package/dist/react/index.js.map +3 -3
  18. package/dist/src/ai/client/actions.d.ts +1 -1
  19. package/dist/src/ai/index.d.ts +2 -2
  20. package/dist/src/ai/rag/index.d.ts +1 -0
  21. package/dist/src/ai/rag/presentation.d.ts +10 -0
  22. package/dist/src/ai/rag/types.d.ts +1 -1
  23. package/dist/src/react/ai/index.d.ts +3 -0
  24. package/dist/src/react/ai/useRAG.d.ts +64 -0
  25. package/dist/src/react/ai/useRAGCitations.d.ts +7 -0
  26. package/dist/src/react/ai/useRAGIngest.d.ts +8 -2
  27. package/dist/src/react/ai/useRAGSearch.d.ts +3 -0
  28. package/dist/src/react/ai/useRAGSources.d.ts +8 -0
  29. package/dist/src/react/ai/useRAGStatus.d.ts +1 -0
  30. package/dist/src/react/ai/useRAGStream.d.ts +9 -1
  31. package/dist/svelte/index.js +6 -2
  32. package/dist/svelte/index.js.map +3 -3
  33. package/dist/types/ai.d.ts +20 -0
  34. package/dist/vue/components/index.js +20 -3
  35. package/dist/vue/components/index.js.map +3 -3
  36. package/dist/vue/index.js +27 -6
  37. package/dist/vue/index.js.map +4 -4
  38. package/package.json +1 -1
package/dist/ai/index.js CHANGED
@@ -2912,6 +2912,95 @@ var ragChat = (config) => {
2912
2912
  return { ok: true };
2913
2913
  }).use(htmxRoutes());
2914
2914
  };
2915
+ // src/ai/rag/presentation.ts
2916
+ var buildSourceGroupKey = (source) => source.source ?? source.title ?? source.chunkId;
2917
+ var buildSourceLabel = (source) => source.source ?? source.title ?? source.chunkId;
2918
+ var getLatestAssistantMessage = (messages) => {
2919
+ for (let index = messages.length - 1;index >= 0; index -= 1) {
2920
+ const message = messages[index];
2921
+ if (message?.role === "assistant") {
2922
+ return message;
2923
+ }
2924
+ }
2925
+ return;
2926
+ };
2927
+ var getLatestRAGSources = (messages) => getLatestAssistantMessage(messages)?.sources ?? [];
2928
+ var buildRAGSourceGroups = (sources) => {
2929
+ const groups = new Map;
2930
+ for (const source of sources) {
2931
+ const key = buildSourceGroupKey(source);
2932
+ const existing = groups.get(key);
2933
+ if (existing) {
2934
+ existing.bestScore = Math.max(existing.bestScore, source.score);
2935
+ existing.count += 1;
2936
+ existing.chunks.push(source);
2937
+ continue;
2938
+ }
2939
+ groups.set(key, {
2940
+ bestScore: source.score,
2941
+ chunks: [source],
2942
+ count: 1,
2943
+ key,
2944
+ label: buildSourceLabel(source),
2945
+ source: source.source,
2946
+ title: source.title
2947
+ });
2948
+ }
2949
+ return [...groups.values()].sort((left, right) => {
2950
+ if (right.bestScore !== left.bestScore) {
2951
+ return right.bestScore - left.bestScore;
2952
+ }
2953
+ return left.label.localeCompare(right.label);
2954
+ });
2955
+ };
2956
+ var buildRAGCitations = (sources) => {
2957
+ const unique = new Map;
2958
+ for (const source of sources) {
2959
+ const key = source.chunkId;
2960
+ const existing = unique.get(key);
2961
+ if (existing && existing.score >= source.score) {
2962
+ continue;
2963
+ }
2964
+ unique.set(key, {
2965
+ chunkId: source.chunkId,
2966
+ key,
2967
+ label: buildSourceLabel(source),
2968
+ metadata: source.metadata,
2969
+ score: source.score,
2970
+ source: source.source,
2971
+ text: source.text,
2972
+ title: source.title
2973
+ });
2974
+ }
2975
+ return [...unique.values()].sort((left, right) => {
2976
+ if (right.score !== left.score) {
2977
+ return right.score - left.score;
2978
+ }
2979
+ return left.label.localeCompare(right.label);
2980
+ });
2981
+ };
2982
+ var resolveRAGStreamStage = ({
2983
+ error,
2984
+ isStreaming,
2985
+ messages
2986
+ }) => {
2987
+ if (error) {
2988
+ return "error";
2989
+ }
2990
+ const assistantMessage = getLatestAssistantMessage(messages);
2991
+ if (!assistantMessage) {
2992
+ return isStreaming ? "submitting" : "idle";
2993
+ }
2994
+ if (!isStreaming) {
2995
+ return "complete";
2996
+ }
2997
+ const hasSources = (assistantMessage.sources?.length ?? 0) > 0;
2998
+ const hasContent = assistantMessage.content.trim().length > 0 || assistantMessage.thinking?.trim().length || (assistantMessage.toolCalls?.length ?? 0) > 0 || (assistantMessage.images?.length ?? 0) > 0;
2999
+ if (hasSources && !hasContent) {
3000
+ return "retrieved";
3001
+ }
3002
+ return "streaming";
3003
+ };
2915
3004
  // src/ai/rag/adapters/utils.ts
2916
3005
  var vectorDimensionDefault = 24;
2917
3006
  var normalizeVector = (vector) => {
@@ -3779,6 +3868,7 @@ export {
3779
3868
  streamAI,
3780
3869
  serializeAIMessage,
3781
3870
  searchDocuments,
3871
+ resolveRAGStreamStage,
3782
3872
  resolveAbsoluteSQLiteVecExtensionPath,
3783
3873
  resolveAbsoluteSQLiteVec,
3784
3874
  ragChat as ragPlugin,
@@ -3800,6 +3890,8 @@ export {
3800
3890
  ingestRAGDocuments,
3801
3891
  ingestDocuments,
3802
3892
  google,
3893
+ getLatestRAGSources,
3894
+ getLatestAssistantMessage,
3803
3895
  generateId,
3804
3896
  gemini,
3805
3897
  deepseek,
@@ -3812,9 +3904,11 @@ export {
3812
3904
  createConversationManager,
3813
3905
  buildRAGUpsertInputFromDocuments,
3814
3906
  buildRAGUpsertInputFromDirectory,
3907
+ buildRAGSourceGroups,
3908
+ buildRAGCitations,
3815
3909
  alibaba,
3816
3910
  aiChat
3817
3911
  };
3818
3912
 
3819
- //# debugId=9FA514D5699A09E064756E2164756E21
3913
+ //# debugId=65B35A7CB744467564756E2164756E21
3820
3914
  //# sourceMappingURL=index.js.map