@absolutejs/absolute 0.19.0-beta.441 → 0.19.0-beta.443

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.
@@ -4,6 +4,7 @@ export declare const createAIStream: (path: string, conversationId?: string) =>
4
4
  cancel: () => void;
5
5
  destroy: () => void;
6
6
  send: (content: string, attachments?: AIAttachment[]) => void;
7
+ subscribe(callback: () => void): () => void;
7
8
  readonly error: string | null;
8
9
  readonly isStreaming: boolean;
9
10
  readonly messages: AIMessage[];
@@ -0,0 +1,117 @@
1
+ export type CreateRAGOptions = {
2
+ autoLoadStatus?: boolean;
3
+ conversationId?: string;
4
+ streamPath?: string;
5
+ };
6
+ export declare const createRAG: (path: string, options?: CreateRAGOptions) => {
7
+ citations: {
8
+ citations: import("svelte/store").Readable<import("../..").RAGCitation[]>;
9
+ hasCitations: import("svelte/store").Readable<boolean>;
10
+ sourceGroups: import("svelte/store").Readable<import("../..").RAGSourceGroup[]>;
11
+ };
12
+ chunkPreview: {
13
+ clear: () => void;
14
+ error: import("svelte/store").Writable<string | null>;
15
+ inspect: (id: string) => Promise<{
16
+ ok: true;
17
+ } & import("../..").RAGDocumentChunkPreview>;
18
+ isLoading: import("svelte/store").Writable<boolean>;
19
+ preview: import("svelte/store").Writable<import("../..").RAGDocumentChunkPreview | null>;
20
+ };
21
+ documents: {
22
+ documents: import("svelte/store").Writable<import("../..").RAGIndexedDocument[]>;
23
+ error: import("svelte/store").Writable<string | null>;
24
+ isLoading: import("svelte/store").Writable<boolean>;
25
+ lastResponse: import("svelte/store").Writable<import("../..").RAGDocumentsResponse | null>;
26
+ load: (kind?: string) => Promise<import("../..").RAGDocumentsResponse>;
27
+ reset: () => void;
28
+ };
29
+ ingest: {
30
+ clearIndex: () => Promise<{
31
+ ok: boolean;
32
+ }>;
33
+ error: import("svelte/store").Writable<string | null>;
34
+ ingest: (chunks: import("../..").RAGDocumentChunk[]) => Promise<import("../..").RAGIngestResponse>;
35
+ ingestChunks: (chunks: import("../..").RAGDocumentChunk[]) => Promise<import("../..").RAGIngestResponse>;
36
+ ingestDocuments: (input: import("../..").RAGDocumentIngestInput) => Promise<import("../..").RAGIngestResponse>;
37
+ isIngesting: import("svelte/store").Writable<boolean>;
38
+ lastDocumentCount: import("svelte/store").Writable<number | null>;
39
+ lastIngestCount: import("svelte/store").Writable<number | null>;
40
+ lastResponse: import("svelte/store").Writable<import("../..").RAGIngestResponse | null>;
41
+ reset: () => void;
42
+ };
43
+ index: {
44
+ backends: import("svelte/store").Writable<import("../..").RAGBackendsResponse | null>;
45
+ clearIndex: () => Promise<{
46
+ ok: boolean;
47
+ }>;
48
+ createDocument: (input: {
49
+ id?: string;
50
+ title?: string;
51
+ source?: string;
52
+ text: string;
53
+ format?: import("../..").RAGContentFormat;
54
+ metadata?: Record<string, unknown>;
55
+ chunking?: {
56
+ maxChunkLength?: number;
57
+ chunkOverlap?: number;
58
+ minChunkLength?: number;
59
+ strategy?: import("../..").RAGChunkingStrategy;
60
+ };
61
+ }) => Promise<import("../..").RAGMutationResponse>;
62
+ deleteDocument: (id: string) => Promise<import("../..").RAGMutationResponse>;
63
+ error: import("svelte/store").Writable<string | null>;
64
+ isLoading: import("svelte/store").Writable<boolean>;
65
+ lastMutation: import("svelte/store").Writable<import("../..").RAGMutationResponse | null>;
66
+ loadBackends: () => Promise<import("../..").RAGBackendsResponse>;
67
+ reseed: () => Promise<import("../..").RAGMutationResponse>;
68
+ reset: () => Promise<import("../..").RAGMutationResponse>;
69
+ resetState: () => void;
70
+ };
71
+ search: {
72
+ error: import("svelte/store").Writable<string | null>;
73
+ hasSearched: import("svelte/store").Writable<boolean>;
74
+ isSearching: import("svelte/store").Writable<boolean>;
75
+ lastRequest: import("svelte/store").Writable<import("../..").RAGSearchRequest | null>;
76
+ reset: () => void;
77
+ results: import("svelte/store").Writable<import("../..").RAGSource[]>;
78
+ search: (input: import("../..").RAGSearchRequest) => Promise<import("../..").RAGSource[]>;
79
+ };
80
+ sources: {
81
+ hasSources: import("svelte/store").Readable<boolean>;
82
+ latestAssistantMessage: import("svelte/store").Readable<import("../..").AIMessage | undefined>;
83
+ sourceGroups: import("svelte/store").Readable<import("../..").RAGSourceGroup[]>;
84
+ sources: import("svelte/store").Readable<import("../..").RAGSource[]>;
85
+ };
86
+ status: {
87
+ capabilities: import("svelte/store").Writable<import("../..").RAGBackendCapabilities | undefined>;
88
+ error: import("svelte/store").Writable<string | null>;
89
+ isLoading: import("svelte/store").Writable<boolean>;
90
+ refresh: () => Promise<import("../..").RAGStatusResponse>;
91
+ reset: () => void;
92
+ status: import("svelte/store").Writable<import("../..").RAGVectorStoreStatus | undefined>;
93
+ };
94
+ stream: {
95
+ citations: import("svelte/store").Readable<import("../..").RAGCitation[]>;
96
+ error: import("svelte/store").Readable<string | null>;
97
+ hasRetrieved: import("svelte/store").Readable<boolean>;
98
+ hasSources: import("svelte/store").Readable<boolean>;
99
+ isAnswerStreaming: import("svelte/store").Readable<boolean>;
100
+ isComplete: import("svelte/store").Readable<boolean>;
101
+ isRetrieving: import("svelte/store").Readable<boolean>;
102
+ isStreaming: import("svelte/store").Readable<boolean>;
103
+ latestAssistantMessage: import("svelte/store").Readable<import("../..").AIMessage | undefined>;
104
+ messages: import("svelte/store").Readable<import("../..").AIMessage[]>;
105
+ query: (content: string, attachments?: import("../..").AIAttachment[]) => void;
106
+ retrieval: import("svelte/store").Readable<import("../..").RAGRetrievedState | null>;
107
+ sourceGroups: import("svelte/store").Readable<import("../..").RAGSourceGroup[]>;
108
+ sources: import("svelte/store").Readable<import("../..").RAGSource[]>;
109
+ stage: import("svelte/store").Readable<import("../..").RAGStreamStage>;
110
+ branch: (messageId: string, content: string) => void;
111
+ cancel: () => void;
112
+ destroy: () => void;
113
+ send: (content: string, attachments?: import("../..").AIAttachment[]) => void;
114
+ subscribe(callback: () => void): () => void;
115
+ };
116
+ };
117
+ export type CreateRAGResult = ReturnType<typeof createRAG>;
@@ -0,0 +1,11 @@
1
+ import type { RAGDocumentChunkPreview } from '../../../types/ai';
2
+ export declare const createRAGChunkPreview: (path: string) => {
3
+ clear: () => void;
4
+ error: import("svelte/store").Writable<string | null>;
5
+ inspect: (id: string) => Promise<{
6
+ ok: true;
7
+ } & RAGDocumentChunkPreview>;
8
+ isLoading: import("svelte/store").Writable<boolean>;
9
+ preview: import("svelte/store").Writable<RAGDocumentChunkPreview | null>;
10
+ };
11
+ export type CreateRAGChunkPreviewResult = ReturnType<typeof createRAGChunkPreview>;
@@ -0,0 +1,8 @@
1
+ import { type Readable } from 'svelte/store';
2
+ import type { RAGSource } from '../../../types/ai';
3
+ export declare const createRAGCitations: (sources: Readable<RAGSource[]>) => {
4
+ citations: Readable<import("../..").RAGCitation[]>;
5
+ hasCitations: Readable<boolean>;
6
+ sourceGroups: Readable<import("../..").RAGSourceGroup[]>;
7
+ };
8
+ export type CreateRAGCitationsResult = ReturnType<typeof createRAGCitations>;
@@ -0,0 +1,10 @@
1
+ import type { RAGDocumentsResponse, RAGIndexedDocument } from '../../../types/ai';
2
+ export declare const createRAGDocuments: (path: string) => {
3
+ documents: import("svelte/store").Writable<RAGIndexedDocument[]>;
4
+ error: import("svelte/store").Writable<string | null>;
5
+ isLoading: import("svelte/store").Writable<boolean>;
6
+ lastResponse: import("svelte/store").Writable<RAGDocumentsResponse | null>;
7
+ load: (kind?: string) => Promise<RAGDocumentsResponse>;
8
+ reset: () => void;
9
+ };
10
+ export type CreateRAGDocumentsResult = ReturnType<typeof createRAGDocuments>;
@@ -0,0 +1,30 @@
1
+ import type { RAGBackendsResponse, RAGChunkingStrategy, RAGContentFormat, RAGMutationResponse } from '../../../types/ai';
2
+ export declare const createRAGIndexAdmin: (path: string) => {
3
+ backends: import("svelte/store").Writable<RAGBackendsResponse | null>;
4
+ clearIndex: () => Promise<{
5
+ ok: boolean;
6
+ }>;
7
+ createDocument: (input: {
8
+ id?: string;
9
+ title?: string;
10
+ source?: string;
11
+ text: string;
12
+ format?: RAGContentFormat;
13
+ metadata?: Record<string, unknown>;
14
+ chunking?: {
15
+ maxChunkLength?: number;
16
+ chunkOverlap?: number;
17
+ minChunkLength?: number;
18
+ strategy?: RAGChunkingStrategy;
19
+ };
20
+ }) => Promise<RAGMutationResponse>;
21
+ deleteDocument: (id: string) => Promise<RAGMutationResponse>;
22
+ error: import("svelte/store").Writable<string | null>;
23
+ isLoading: import("svelte/store").Writable<boolean>;
24
+ lastMutation: import("svelte/store").Writable<RAGMutationResponse | null>;
25
+ loadBackends: () => Promise<RAGBackendsResponse>;
26
+ reseed: () => Promise<RAGMutationResponse>;
27
+ reset: () => Promise<RAGMutationResponse>;
28
+ resetState: () => void;
29
+ };
30
+ export type CreateRAGIndexAdminResult = ReturnType<typeof createRAGIndexAdmin>;
@@ -1,7 +1,15 @@
1
- import type { RAGDocumentChunk } from '../../../types/ai';
1
+ import type { RAGDocumentChunk, RAGDocumentIngestInput, RAGIngestResponse } from '../../../types/ai';
2
2
  export declare const createRAGIngest: (path: string) => {
3
+ clearIndex: () => Promise<{
4
+ ok: boolean;
5
+ }>;
3
6
  error: import("svelte/store").Writable<string | null>;
4
- ingest: (chunks: RAGDocumentChunk[]) => Promise<import("../..").RAGIngestResponse>;
7
+ ingest: (chunks: RAGDocumentChunk[]) => Promise<RAGIngestResponse>;
8
+ ingestChunks: (chunks: RAGDocumentChunk[]) => Promise<RAGIngestResponse>;
9
+ ingestDocuments: (input: RAGDocumentIngestInput) => Promise<RAGIngestResponse>;
5
10
  isIngesting: import("svelte/store").Writable<boolean>;
11
+ lastDocumentCount: import("svelte/store").Writable<number | null>;
6
12
  lastIngestCount: import("svelte/store").Writable<number | null>;
13
+ lastResponse: import("svelte/store").Writable<RAGIngestResponse | null>;
14
+ reset: () => void;
7
15
  };
@@ -1,7 +1,10 @@
1
1
  import type { RAGSearchRequest, RAGSource } from '../../../types/ai';
2
2
  export declare const createRAGSearch: (path: string) => {
3
3
  error: import("svelte/store").Writable<string | null>;
4
+ hasSearched: import("svelte/store").Writable<boolean>;
4
5
  isSearching: import("svelte/store").Writable<boolean>;
6
+ lastRequest: import("svelte/store").Writable<RAGSearchRequest | null>;
7
+ reset: () => void;
5
8
  results: import("svelte/store").Writable<RAGSource[]>;
6
9
  search: (input: RAGSearchRequest) => Promise<RAGSource[]>;
7
10
  };
@@ -0,0 +1,9 @@
1
+ import { type Readable } from 'svelte/store';
2
+ import type { AIMessage } from '../../../types/ai';
3
+ export declare const createRAGSources: (messages: Readable<AIMessage[]>) => {
4
+ hasSources: Readable<boolean>;
5
+ latestAssistantMessage: Readable<AIMessage | undefined>;
6
+ sourceGroups: Readable<import("../..").RAGSourceGroup[]>;
7
+ sources: Readable<import("../..").RAGSource[]>;
8
+ };
9
+ export type CreateRAGSourcesResult = ReturnType<typeof createRAGSources>;
@@ -4,5 +4,6 @@ export declare const createRAGStatus: (path: string, autoLoad?: boolean) => {
4
4
  error: import("svelte/store").Writable<string | null>;
5
5
  isLoading: import("svelte/store").Writable<boolean>;
6
6
  refresh: () => Promise<import("../..").RAGStatusResponse>;
7
+ reset: () => void;
7
8
  status: import("svelte/store").Writable<RAGVectorStoreStatus | undefined>;
8
9
  };
@@ -1 +1,24 @@
1
- export { createAIStream as createRAGStream } from './createAIStream';
1
+ import type { AIAttachment } from '../../../types/ai';
2
+ export declare const createRAGStream: (path: string, conversationId?: string) => {
3
+ citations: import("svelte/store").Readable<import("../..").RAGCitation[]>;
4
+ error: import("svelte/store").Readable<string | null>;
5
+ hasRetrieved: import("svelte/store").Readable<boolean>;
6
+ hasSources: import("svelte/store").Readable<boolean>;
7
+ isAnswerStreaming: import("svelte/store").Readable<boolean>;
8
+ isComplete: import("svelte/store").Readable<boolean>;
9
+ isRetrieving: import("svelte/store").Readable<boolean>;
10
+ isStreaming: import("svelte/store").Readable<boolean>;
11
+ latestAssistantMessage: import("svelte/store").Readable<import("../..").AIMessage | undefined>;
12
+ messages: import("svelte/store").Readable<import("../..").AIMessage[]>;
13
+ query: (content: string, attachments?: AIAttachment[]) => void;
14
+ retrieval: import("svelte/store").Readable<import("../..").RAGRetrievedState | null>;
15
+ sourceGroups: import("svelte/store").Readable<import("../..").RAGSourceGroup[]>;
16
+ sources: import("svelte/store").Readable<import("../..").RAGSource[]>;
17
+ stage: import("svelte/store").Readable<import("../..").RAGStreamStage>;
18
+ branch: (messageId: string, content: string) => void;
19
+ cancel: () => void;
20
+ destroy: () => void;
21
+ send: (content: string, attachments?: AIAttachment[]) => void;
22
+ subscribe(callback: () => void): () => void;
23
+ };
24
+ export type CreateRAGStreamResult = ReturnType<typeof createRAGStream>;
@@ -1,5 +1,11 @@
1
1
  export { createAIStream } from './createAIStream';
2
+ export { createRAG } from './createRAG';
3
+ export { createRAGChunkPreview } from './createRAGChunkPreview';
4
+ export { createRAGCitations } from './createRAGCitations';
5
+ export { createRAGDocuments } from './createRAGDocuments';
2
6
  export { createRAGIngest } from './createRAGIngest';
7
+ export { createRAGIndexAdmin } from './createRAGIndexAdmin';
3
8
  export { createRAGSearch } from './createRAGSearch';
9
+ export { createRAGSources } from './createRAGSources';
4
10
  export { createRAGStatus } from './createRAGStatus';
5
11
  export { createRAGStream } from './createRAGStream';
@@ -648,6 +648,7 @@ var serializeAIMessage = (msg) => JSON.stringify(msg);
648
648
  var createAIStream = (path, conversationId) => {
649
649
  const connection = createAIConnection(path);
650
650
  const store = createAIMessageStore();
651
+ const subscribers = new Set;
651
652
  let currentError = null;
652
653
  let currentIsStreaming = false;
653
654
  let currentMessages = [];
@@ -660,6 +661,7 @@ var createAIStream = (path, conversationId) => {
660
661
  currentError = snapshot.error;
661
662
  currentIsStreaming = snapshot.isStreaming;
662
663
  currentMessages = conversation?.messages ?? [];
664
+ subscribers.forEach((callback) => callback());
663
665
  };
664
666
  const unsubscribeStore = store.subscribe(syncState);
665
667
  const unsubscribeConnection = connection.subscribe((msg) => {
@@ -714,6 +716,12 @@ var createAIStream = (path, conversationId) => {
714
716
  cancel,
715
717
  destroy,
716
718
  send,
719
+ subscribe(callback) {
720
+ subscribers.add(callback);
721
+ return () => {
722
+ subscribers.delete(callback);
723
+ };
724
+ },
717
725
  get error() {
718
726
  return currentError;
719
727
  },
@@ -725,7 +733,7 @@ var createAIStream = (path, conversationId) => {
725
733
  }
726
734
  };
727
735
  };
728
- // src/svelte/ai/createRAGIngest.ts
736
+ // src/svelte/ai/createRAGChunkPreview.ts
729
737
  import { writable } from "svelte/store";
730
738
 
731
739
  // src/ai/client/ragClient.ts
@@ -885,13 +893,221 @@ var createRAGClient = (options) => {
885
893
  };
886
894
  };
887
895
 
896
+ // src/svelte/ai/createRAGChunkPreview.ts
897
+ var createRAGChunkPreview = (path) => {
898
+ const client = createRAGClient({ path });
899
+ const preview = writable(null);
900
+ const error = writable(null);
901
+ const isLoading = writable(false);
902
+ const inspect = async (id) => {
903
+ isLoading.set(true);
904
+ error.set(null);
905
+ try {
906
+ const response = await client.documentChunks(id);
907
+ if (!response.ok) {
908
+ throw new Error(response.error);
909
+ }
910
+ preview.set(response);
911
+ return response;
912
+ } catch (caught) {
913
+ error.set(caught instanceof Error ? caught.message : String(caught));
914
+ throw caught;
915
+ } finally {
916
+ isLoading.set(false);
917
+ }
918
+ };
919
+ const clear = () => {
920
+ error.set(null);
921
+ isLoading.set(false);
922
+ preview.set(null);
923
+ };
924
+ return {
925
+ clear,
926
+ error,
927
+ inspect,
928
+ isLoading,
929
+ preview
930
+ };
931
+ };
932
+
933
+ // src/svelte/ai/createRAGCitations.ts
934
+ import { derived } from "svelte/store";
935
+
936
+ // src/ai/rag/presentation.ts
937
+ var buildSourceGroupKey = (source) => source.source ?? source.title ?? source.chunkId;
938
+ var buildSourceLabel = (source) => source.source ?? source.title ?? source.chunkId;
939
+ var getLatestAssistantMessage = (messages) => {
940
+ for (let index = messages.length - 1;index >= 0; index -= 1) {
941
+ const message = messages[index];
942
+ if (message?.role === "assistant") {
943
+ return message;
944
+ }
945
+ }
946
+ return;
947
+ };
948
+ var getLatestRAGSources = (messages) => getLatestAssistantMessage(messages)?.sources ?? [];
949
+ var getLatestRetrievedMessage = (messages) => {
950
+ for (let index = messages.length - 1;index >= 0; index -= 1) {
951
+ const message = messages[index];
952
+ if (message?.role === "assistant" && (message.sources?.length ?? 0) > 0) {
953
+ return message;
954
+ }
955
+ }
956
+ return;
957
+ };
958
+ var buildRAGSourceGroups = (sources) => {
959
+ const groups = new Map;
960
+ for (const source of sources) {
961
+ const key = buildSourceGroupKey(source);
962
+ const existing = groups.get(key);
963
+ if (existing) {
964
+ existing.bestScore = Math.max(existing.bestScore, source.score);
965
+ existing.count += 1;
966
+ existing.chunks.push(source);
967
+ continue;
968
+ }
969
+ groups.set(key, {
970
+ bestScore: source.score,
971
+ chunks: [source],
972
+ count: 1,
973
+ key,
974
+ label: buildSourceLabel(source),
975
+ source: source.source,
976
+ title: source.title
977
+ });
978
+ }
979
+ return [...groups.values()].sort((left, right) => {
980
+ if (right.bestScore !== left.bestScore) {
981
+ return right.bestScore - left.bestScore;
982
+ }
983
+ return left.label.localeCompare(right.label);
984
+ });
985
+ };
986
+ var buildRAGCitations = (sources) => {
987
+ const unique = new Map;
988
+ for (const source of sources) {
989
+ const key = source.chunkId;
990
+ const existing = unique.get(key);
991
+ if (existing && existing.score >= source.score) {
992
+ continue;
993
+ }
994
+ unique.set(key, {
995
+ chunkId: source.chunkId,
996
+ key,
997
+ label: buildSourceLabel(source),
998
+ metadata: source.metadata,
999
+ score: source.score,
1000
+ source: source.source,
1001
+ text: source.text,
1002
+ title: source.title
1003
+ });
1004
+ }
1005
+ return [...unique.values()].sort((left, right) => {
1006
+ if (right.score !== left.score) {
1007
+ return right.score - left.score;
1008
+ }
1009
+ return left.label.localeCompare(right.label);
1010
+ });
1011
+ };
1012
+ var buildRAGRetrievedState = (messages) => {
1013
+ const message = getLatestRetrievedMessage(messages);
1014
+ if (!message) {
1015
+ return null;
1016
+ }
1017
+ const sources = message.sources ?? [];
1018
+ return {
1019
+ citations: buildRAGCitations(sources),
1020
+ conversationId: message.conversationId,
1021
+ messageId: message.id,
1022
+ retrievedAt: message.retrievedAt,
1023
+ sourceGroups: buildRAGSourceGroups(sources),
1024
+ sources
1025
+ };
1026
+ };
1027
+ var resolveRAGStreamStage = ({
1028
+ error,
1029
+ isStreaming,
1030
+ messages
1031
+ }) => {
1032
+ if (error) {
1033
+ return "error";
1034
+ }
1035
+ const assistantMessage = getLatestAssistantMessage(messages);
1036
+ if (!assistantMessage) {
1037
+ return isStreaming ? "submitting" : "idle";
1038
+ }
1039
+ if (!isStreaming) {
1040
+ return "complete";
1041
+ }
1042
+ const hasSources = (assistantMessage.sources?.length ?? 0) > 0;
1043
+ const hasContent = assistantMessage.content.trim().length > 0 || assistantMessage.thinking?.trim().length || (assistantMessage.toolCalls?.length ?? 0) > 0 || (assistantMessage.images?.length ?? 0) > 0;
1044
+ if (hasSources && !hasContent) {
1045
+ return "retrieved";
1046
+ }
1047
+ return "streaming";
1048
+ };
1049
+
1050
+ // src/svelte/ai/createRAGCitations.ts
1051
+ var createRAGCitations = (sources) => {
1052
+ const citations = derived(sources, ($sources) => buildRAGCitations($sources));
1053
+ const sourceGroups = derived(sources, ($sources) => buildRAGSourceGroups($sources));
1054
+ const hasCitations = derived(citations, ($citations) => $citations.length > 0);
1055
+ return {
1056
+ citations,
1057
+ hasCitations,
1058
+ sourceGroups
1059
+ };
1060
+ };
1061
+
1062
+ // src/svelte/ai/createRAGDocuments.ts
1063
+ import { writable as writable2 } from "svelte/store";
1064
+ var createRAGDocuments = (path) => {
1065
+ const client = createRAGClient({ path });
1066
+ const documents = writable2([]);
1067
+ const error = writable2(null);
1068
+ const isLoading = writable2(false);
1069
+ const lastResponse = writable2(null);
1070
+ const load = async (kind) => {
1071
+ isLoading.set(true);
1072
+ error.set(null);
1073
+ try {
1074
+ const response = await client.documents(kind);
1075
+ documents.set(response.documents);
1076
+ lastResponse.set(response);
1077
+ return response;
1078
+ } catch (caught) {
1079
+ error.set(caught instanceof Error ? caught.message : String(caught));
1080
+ throw caught;
1081
+ } finally {
1082
+ isLoading.set(false);
1083
+ }
1084
+ };
1085
+ const reset = () => {
1086
+ documents.set([]);
1087
+ error.set(null);
1088
+ isLoading.set(false);
1089
+ lastResponse.set(null);
1090
+ };
1091
+ return {
1092
+ documents,
1093
+ error,
1094
+ isLoading,
1095
+ lastResponse,
1096
+ load,
1097
+ reset
1098
+ };
1099
+ };
1100
+
888
1101
  // src/svelte/ai/createRAGIngest.ts
1102
+ import { writable as writable3 } from "svelte/store";
889
1103
  var createRAGIngest = (path) => {
890
1104
  const client = createRAGClient({ path });
891
- const error = writable(null);
892
- const isIngesting = writable(false);
893
- const lastIngestCount = writable(null);
894
- const ingest = async (chunks) => {
1105
+ const error = writable3(null);
1106
+ const isIngesting = writable3(false);
1107
+ const lastIngestCount = writable3(null);
1108
+ const lastDocumentCount = writable3(null);
1109
+ const lastResponse = writable3(null);
1110
+ const ingestChunks = async (chunks) => {
895
1111
  isIngesting.set(true);
896
1112
  error.set(null);
897
1113
  try {
@@ -900,6 +1116,27 @@ var createRAGIngest = (path) => {
900
1116
  throw new Error(response.error ?? "RAG ingest failed");
901
1117
  }
902
1118
  lastIngestCount.set(response.count ?? chunks.length);
1119
+ lastDocumentCount.set(null);
1120
+ lastResponse.set(response);
1121
+ return response;
1122
+ } catch (caught) {
1123
+ error.set(caught instanceof Error ? caught.message : String(caught));
1124
+ throw caught;
1125
+ } finally {
1126
+ isIngesting.set(false);
1127
+ }
1128
+ };
1129
+ const ingestDocuments = async (input) => {
1130
+ isIngesting.set(true);
1131
+ error.set(null);
1132
+ try {
1133
+ const response = await client.ingestDocuments(input);
1134
+ if (!response.ok) {
1135
+ throw new Error(response.error ?? "RAG document ingest failed");
1136
+ }
1137
+ lastDocumentCount.set(response.documentCount ?? input.documents.length);
1138
+ lastIngestCount.set(response.count ?? null);
1139
+ lastResponse.set(response);
903
1140
  return response;
904
1141
  } catch (caught) {
905
1142
  error.set(caught instanceof Error ? caught.message : String(caught));
@@ -908,26 +1145,140 @@ var createRAGIngest = (path) => {
908
1145
  isIngesting.set(false);
909
1146
  }
910
1147
  };
1148
+ const clearIndex = async () => {
1149
+ isIngesting.set(true);
1150
+ error.set(null);
1151
+ try {
1152
+ return await client.clearIndex();
1153
+ } catch (caught) {
1154
+ error.set(caught instanceof Error ? caught.message : String(caught));
1155
+ throw caught;
1156
+ } finally {
1157
+ isIngesting.set(false);
1158
+ }
1159
+ };
1160
+ const reset = () => {
1161
+ error.set(null);
1162
+ isIngesting.set(false);
1163
+ lastDocumentCount.set(null);
1164
+ lastIngestCount.set(null);
1165
+ lastResponse.set(null);
1166
+ };
911
1167
  return {
1168
+ clearIndex,
912
1169
  error,
913
- ingest,
1170
+ ingest: ingestChunks,
1171
+ ingestChunks,
1172
+ ingestDocuments,
914
1173
  isIngesting,
915
- lastIngestCount
1174
+ lastDocumentCount,
1175
+ lastIngestCount,
1176
+ lastResponse,
1177
+ reset
1178
+ };
1179
+ };
1180
+
1181
+ // src/svelte/ai/createRAGIndexAdmin.ts
1182
+ import { writable as writable4 } from "svelte/store";
1183
+ var createRAGIndexAdmin = (path) => {
1184
+ const client = createRAGClient({ path });
1185
+ const isLoading = writable4(false);
1186
+ const error = writable4(null);
1187
+ const lastMutation = writable4(null);
1188
+ const backends = writable4(null);
1189
+ const run = async (operation) => {
1190
+ isLoading.set(true);
1191
+ error.set(null);
1192
+ try {
1193
+ return await operation();
1194
+ } catch (caught) {
1195
+ error.set(caught instanceof Error ? caught.message : String(caught));
1196
+ throw caught;
1197
+ } finally {
1198
+ isLoading.set(false);
1199
+ }
1200
+ };
1201
+ const createDocument = async (input) => run(async () => {
1202
+ const response = await client.createDocument(input);
1203
+ lastMutation.set(response);
1204
+ if (!response.ok) {
1205
+ throw new Error(response.error ?? "Failed to create document");
1206
+ }
1207
+ return response;
1208
+ });
1209
+ const deleteDocument = async (id) => run(async () => {
1210
+ const response = await client.deleteDocument(id);
1211
+ lastMutation.set(response);
1212
+ if (!response.ok) {
1213
+ throw new Error(response.error ?? "Failed to delete document");
1214
+ }
1215
+ return response;
1216
+ });
1217
+ const reseed = async () => run(async () => {
1218
+ const response = await client.reseed();
1219
+ lastMutation.set(response);
1220
+ if (!response.ok) {
1221
+ throw new Error(response.error ?? "Failed to reseed index");
1222
+ }
1223
+ return response;
1224
+ });
1225
+ const reset = async () => run(async () => {
1226
+ const response = await client.reset();
1227
+ lastMutation.set(response);
1228
+ if (!response.ok) {
1229
+ throw new Error(response.error ?? "Failed to reset index");
1230
+ }
1231
+ return response;
1232
+ });
1233
+ const loadBackends = async () => run(async () => {
1234
+ const response = await client.backends();
1235
+ backends.set(response);
1236
+ return response;
1237
+ });
1238
+ const clearIndex = async () => run(async () => {
1239
+ const response = await client.clearIndex();
1240
+ const mutation = { ok: response.ok };
1241
+ lastMutation.set(mutation);
1242
+ return mutation;
1243
+ });
1244
+ const resetState = () => {
1245
+ backends.set(null);
1246
+ error.set(null);
1247
+ isLoading.set(false);
1248
+ lastMutation.set(null);
1249
+ };
1250
+ return {
1251
+ backends,
1252
+ clearIndex,
1253
+ createDocument,
1254
+ deleteDocument,
1255
+ error,
1256
+ isLoading,
1257
+ lastMutation,
1258
+ loadBackends,
1259
+ reseed,
1260
+ reset,
1261
+ resetState
916
1262
  };
917
1263
  };
1264
+
918
1265
  // src/svelte/ai/createRAGSearch.ts
919
- import { writable as writable2 } from "svelte/store";
1266
+ import { writable as writable5 } from "svelte/store";
920
1267
  var createRAGSearch = (path) => {
921
1268
  const client = createRAGClient({ path });
922
- const results = writable2([]);
923
- const error = writable2(null);
924
- const isSearching = writable2(false);
1269
+ const results = writable5([]);
1270
+ const error = writable5(null);
1271
+ const isSearching = writable5(false);
1272
+ const hasSearched = writable5(false);
1273
+ const lastRequest = writable5(null);
925
1274
  const search = async (input) => {
926
1275
  isSearching.set(true);
927
1276
  error.set(null);
1277
+ lastRequest.set(input);
928
1278
  try {
929
1279
  const nextResults = await client.search(input);
930
1280
  results.set(nextResults);
1281
+ hasSearched.set(true);
931
1282
  return nextResults;
932
1283
  } catch (caught) {
933
1284
  error.set(caught instanceof Error ? caught.message : String(caught));
@@ -936,21 +1287,47 @@ var createRAGSearch = (path) => {
936
1287
  isSearching.set(false);
937
1288
  }
938
1289
  };
1290
+ const reset = () => {
1291
+ error.set(null);
1292
+ hasSearched.set(false);
1293
+ isSearching.set(false);
1294
+ lastRequest.set(null);
1295
+ results.set([]);
1296
+ };
939
1297
  return {
940
1298
  error,
1299
+ hasSearched,
941
1300
  isSearching,
1301
+ lastRequest,
1302
+ reset,
942
1303
  results,
943
1304
  search
944
1305
  };
945
1306
  };
1307
+
1308
+ // src/svelte/ai/createRAGSources.ts
1309
+ import { derived as derived2 } from "svelte/store";
1310
+ var createRAGSources = (messages) => {
1311
+ const latestAssistantMessage = derived2(messages, ($messages) => getLatestAssistantMessage($messages));
1312
+ const sources = derived2(messages, ($messages) => getLatestRAGSources($messages));
1313
+ const sourceGroups = derived2(sources, ($sources) => buildRAGSourceGroups($sources));
1314
+ const hasSources = derived2(sources, ($sources) => $sources.length > 0);
1315
+ return {
1316
+ hasSources,
1317
+ latestAssistantMessage,
1318
+ sourceGroups,
1319
+ sources
1320
+ };
1321
+ };
1322
+
946
1323
  // src/svelte/ai/createRAGStatus.ts
947
- import { writable as writable3 } from "svelte/store";
1324
+ import { writable as writable6 } from "svelte/store";
948
1325
  var createRAGStatus = (path, autoLoad = true) => {
949
1326
  const client = createRAGClient({ path });
950
- const status = writable3(undefined);
951
- const capabilities = writable3(undefined);
952
- const error = writable3(null);
953
- const isLoading = writable3(autoLoad);
1327
+ const status = writable6(undefined);
1328
+ const capabilities = writable6(undefined);
1329
+ const error = writable6(null);
1330
+ const isLoading = writable6(autoLoad);
954
1331
  const refresh = async () => {
955
1332
  isLoading.set(true);
956
1333
  error.set(null);
@@ -966,6 +1343,12 @@ var createRAGStatus = (path, autoLoad = true) => {
966
1343
  isLoading.set(false);
967
1344
  }
968
1345
  };
1346
+ const reset = () => {
1347
+ capabilities.set(undefined);
1348
+ error.set(null);
1349
+ isLoading.set(false);
1350
+ status.set(undefined);
1351
+ };
969
1352
  if (autoLoad) {
970
1353
  refresh();
971
1354
  } else {
@@ -976,16 +1359,101 @@ var createRAGStatus = (path, autoLoad = true) => {
976
1359
  error,
977
1360
  isLoading,
978
1361
  refresh,
1362
+ reset,
979
1363
  status
980
1364
  };
981
1365
  };
1366
+
1367
+ // src/svelte/ai/createRAGStream.ts
1368
+ import { derived as derived3, readable } from "svelte/store";
1369
+ var createRAGStream = (path, conversationId) => {
1370
+ const stream = createAIStream(path, conversationId);
1371
+ const messages = readable(stream.messages, (set) => {
1372
+ set(stream.messages);
1373
+ return stream.subscribe(() => set(stream.messages));
1374
+ });
1375
+ const error = readable(stream.error, (set) => {
1376
+ set(stream.error);
1377
+ return stream.subscribe(() => set(stream.error));
1378
+ });
1379
+ const isStreaming = readable(stream.isStreaming, (set) => {
1380
+ set(stream.isStreaming);
1381
+ return stream.subscribe(() => set(stream.isStreaming));
1382
+ });
1383
+ const latestAssistantMessage = derived3(messages, ($messages) => getLatestAssistantMessage($messages));
1384
+ const sources = derived3(messages, ($messages) => getLatestRAGSources($messages));
1385
+ const sourceGroups = derived3(sources, ($sources) => buildRAGSourceGroups($sources));
1386
+ const citations = derived3(sources, ($sources) => buildRAGCitations($sources));
1387
+ const retrieval = derived3(messages, ($messages) => buildRAGRetrievedState($messages));
1388
+ const stage = derived3([messages, error, isStreaming], ([$messages, $error, $isStreaming]) => resolveRAGStreamStage({
1389
+ error: $error,
1390
+ isStreaming: $isStreaming,
1391
+ messages: $messages
1392
+ }));
1393
+ const hasRetrieved = derived3(retrieval, ($retrieval) => ($retrieval?.sources.length ?? 0) > 0);
1394
+ const hasSources = derived3(sources, ($sources) => $sources.length > 0);
1395
+ const isRetrieving = derived3(stage, ($stage) => $stage === "submitting" || $stage === "retrieved");
1396
+ const isAnswerStreaming = derived3(stage, ($stage) => $stage === "streaming");
1397
+ const isComplete = derived3(stage, ($stage) => $stage === "complete");
1398
+ const query = (content, attachments) => {
1399
+ stream.send(content, attachments);
1400
+ };
1401
+ return {
1402
+ ...stream,
1403
+ citations,
1404
+ error,
1405
+ hasRetrieved,
1406
+ hasSources,
1407
+ isAnswerStreaming,
1408
+ isComplete,
1409
+ isRetrieving,
1410
+ isStreaming,
1411
+ latestAssistantMessage,
1412
+ messages,
1413
+ query,
1414
+ retrieval,
1415
+ sourceGroups,
1416
+ sources,
1417
+ stage
1418
+ };
1419
+ };
1420
+
1421
+ // src/svelte/ai/createRAG.ts
1422
+ var createRAG = (path, options = {}) => {
1423
+ const search = createRAGSearch(path);
1424
+ const ingest = createRAGIngest(path);
1425
+ const status = createRAGStatus(path, options.autoLoadStatus ?? true);
1426
+ const documents = createRAGDocuments(path);
1427
+ const chunkPreview = createRAGChunkPreview(path);
1428
+ const index = createRAGIndexAdmin(path);
1429
+ const stream = createRAGStream(options.streamPath ?? path, options.conversationId);
1430
+ const sources = createRAGSources(stream.messages);
1431
+ const citations = createRAGCitations(sources.sources);
1432
+ return {
1433
+ citations,
1434
+ chunkPreview,
1435
+ documents,
1436
+ ingest,
1437
+ index,
1438
+ search,
1439
+ sources,
1440
+ status,
1441
+ stream
1442
+ };
1443
+ };
982
1444
  export {
983
- createAIStream as createRAGStream,
1445
+ createRAGStream,
984
1446
  createRAGStatus,
1447
+ createRAGSources,
985
1448
  createRAGSearch,
986
1449
  createRAGIngest,
1450
+ createRAGIndexAdmin,
1451
+ createRAGDocuments,
1452
+ createRAGCitations,
1453
+ createRAGChunkPreview,
1454
+ createRAG,
987
1455
  createAIStream
988
1456
  };
989
1457
 
990
- //# debugId=11199D7A1007552864756E2164756E21
1458
+ //# debugId=B44067D7D4FBEF1464756E2164756E21
991
1459
  //# sourceMappingURL=index.js.map
@@ -1,19 +1,27 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../types/typeGuards.ts", "../src/ai/client/actions.ts", "../src/ai/client/connection.ts", "../src/ai/client/messageStore.ts", "../src/ai/protocol.ts", "../src/svelte/ai/createAIStream.ts", "../src/svelte/ai/createRAGIngest.ts", "../src/ai/client/ragClient.ts", "../src/svelte/ai/createRAGSearch.ts", "../src/svelte/ai/createRAGStatus.ts"],
3
+ "sources": ["../types/typeGuards.ts", "../src/ai/client/actions.ts", "../src/ai/client/connection.ts", "../src/ai/client/messageStore.ts", "../src/ai/protocol.ts", "../src/svelte/ai/createAIStream.ts", "../src/svelte/ai/createRAGChunkPreview.ts", "../src/ai/client/ragClient.ts", "../src/svelte/ai/createRAGCitations.ts", "../src/ai/rag/presentation.ts", "../src/svelte/ai/createRAGDocuments.ts", "../src/svelte/ai/createRAGIngest.ts", "../src/svelte/ai/createRAGIndexAdmin.ts", "../src/svelte/ai/createRAGSearch.ts", "../src/svelte/ai/createRAGSources.ts", "../src/svelte/ai/createRAGStatus.ts", "../src/svelte/ai/createRAGStream.ts", "../src/svelte/ai/createRAG.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { AIClientMessage, AIServerMessage } from './ai';\nimport type { HMRClientMessage } from './messages';\n\n/* Type guard for AI client messages */\nexport const isValidAIClientMessage = (\n\tdata: unknown\n): data is AIClientMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'message':\n\t\t\treturn 'content' in data && typeof data.content === 'string';\n\t\tcase 'cancel':\n\t\t\treturn (\n\t\t\t\t'conversationId' in data &&\n\t\t\t\ttypeof data.conversationId === 'string'\n\t\t\t);\n\t\tcase 'branch':\n\t\t\treturn (\n\t\t\t\t'messageId' in data &&\n\t\t\t\ttypeof data.messageId === 'string' &&\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'conversationId' in data &&\n\t\t\t\ttypeof data.conversationId === 'string'\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n/* Type guard for AI server messages */\nexport const isValidAIServerMessage = (\n\tdata: unknown\n): data is AIServerMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'chunk':\n\t\t\treturn (\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'thinking':\n\t\t\treturn (\n\t\t\t\t'content' in data &&\n\t\t\t\ttypeof data.content === 'string' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'tool_status':\n\t\t\treturn (\n\t\t\t\t'name' in data &&\n\t\t\t\t'status' in data &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'image':\n\t\t\treturn (\n\t\t\t\t'data' in data &&\n\t\t\t\ttypeof data.data === 'string' &&\n\t\t\t\t'format' in data &&\n\t\t\t\ttypeof data.format === 'string' &&\n\t\t\t\t'isPartial' in data &&\n\t\t\t\ttypeof data.isPartial === 'boolean' &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'conversationId' in data\n\t\t\t);\n\t\tcase 'complete':\n\t\t\treturn 'messageId' in data && 'conversationId' in data;\n\t\tcase 'rag_retrieved':\n\t\t\treturn (\n\t\t\t\t'conversationId' in data &&\n\t\t\t\t'messageId' in data &&\n\t\t\t\t'sources' in data &&\n\t\t\t\tArray.isArray(data.sources)\n\t\t\t);\n\t\tcase 'error':\n\t\t\treturn 'message' in data && typeof data.message === 'string';\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\n/* Type guard for HMR client messages */\nexport const isValidHMRClientMessage = (\n\tdata: unknown\n): data is HMRClientMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'ping':\n\t\t\treturn true;\n\t\tcase 'ready':\n\t\t\treturn true;\n\t\tcase 'request-rebuild':\n\t\t\treturn true;\n\t\tcase 'hydration-error':\n\t\t\treturn true;\n\t\tcase 'hmr-timing':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n",
6
6
  "import type { AIServerMessage } from '../../../types/ai';\n\nexport const serverMessageToAction = (msg: AIServerMessage) => {\n\tswitch (msg.type) {\n\t\tcase 'chunk':\n\t\t\treturn {\n\t\t\t\tcontent: msg.content,\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\ttype: 'chunk' as const\n\t\t\t};\n\t\tcase 'thinking':\n\t\t\treturn {\n\t\t\t\tcontent: msg.content,\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\ttype: 'thinking' as const\n\t\t\t};\n\t\tcase 'tool_status':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tinput: msg.input,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tname: msg.name,\n\t\t\t\tresult: msg.result,\n\t\t\t\tstatus: msg.status,\n\t\t\t\ttype: 'tool_status' as const\n\t\t\t};\n\t\tcase 'image':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tdata: msg.data,\n\t\t\t\tformat: msg.format,\n\t\t\t\timageId: msg.imageId,\n\t\t\t\tisPartial: msg.isPartial,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\trevisedPrompt: msg.revisedPrompt,\n\t\t\t\ttype: 'image' as const\n\t\t\t};\n\t\tcase 'complete':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tdurationMs: msg.durationMs,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tmodel: msg.model,\n\t\t\t\tsources: msg.sources,\n\t\t\t\ttype: 'complete' as const,\n\t\t\t\tusage: msg.usage\n\t\t\t};\n\t\tcase 'rag_retrieved':\n\t\t\treturn {\n\t\t\t\tconversationId: msg.conversationId,\n\t\t\t\tmessageId: msg.messageId,\n\t\t\t\tsources: msg.sources,\n\t\t\t\ttype: 'rag_retrieved' as const\n\t\t\t};\n\t\tcase 'error':\n\t\t\treturn { message: msg.message, type: 'error' as const };\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n",
7
7
  "import type {\n\tAIClientMessage,\n\tAIConnectionOptions,\n\tAIServerMessage\n} from '../../../types/ai';\nimport { isValidAIServerMessage } from '../../../types/typeGuards';\n\nconst WS_OPEN = 1;\nconst WS_NORMAL_CLOSURE = 1000;\nconst WS_CLOSED = 3;\nconst DEFAULT_PING_INTERVAL = 30_000;\nconst RECONNECT_INITIAL_DELAY = 500;\nconst RECONNECT_POLL_INTERVAL = 300;\nconst DEFAULT_MAX_RECONNECT_ATTEMPTS = 60;\n\ntype AIConnectionState = {\n\tisConnected: boolean;\n\tpingInterval: ReturnType<typeof setInterval> | null;\n\treconnectAttempts: number;\n\treconnectTimeout: ReturnType<typeof setTimeout> | null;\n\tws: WebSocket | null;\n};\n\ntype AIConnectionHandle = {\n\tclose: () => void;\n\tgetReadyState: () => number;\n\tsend: (msg: AIClientMessage) => void;\n\tsubscribe: (callback: (msg: AIServerMessage) => void) => () => void;\n};\n\n// eslint-disable-next-line no-empty-function\nconst noop = () => {};\nconst noopUnsubscribe = () => noop;\n\nconst NOOP_CONNECTION: AIConnectionHandle = {\n\tclose: noop,\n\tsend: noop,\n\tsubscribe: noopUnsubscribe,\n\tgetReadyState: () => WS_CLOSED\n};\n\nconst buildWsUrl = (path: string) => {\n\tconst { hostname, port, protocol } = window.location;\n\tconst wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:';\n\tconst portSuffix = port ? `:${port}` : '';\n\n\treturn `${wsProtocol}//${hostname}${portSuffix}${path}`;\n};\n\nconst parseServerMessage = (event: MessageEvent) => {\n\tlet data: unknown;\n\n\ttry {\n\t\tdata = JSON.parse(String(event.data));\n\t} catch {\n\t\treturn null;\n\t}\n\n\tif (\n\t\tdata &&\n\t\ttypeof data === 'object' &&\n\t\t'type' in data &&\n\t\tdata.type === 'pong'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (!isValidAIServerMessage(data)) {\n\t\treturn null;\n\t}\n\n\treturn data;\n};\n\nexport const createAIConnection = (\n\tpath: string,\n\toptions: AIConnectionOptions = {}\n) => {\n\tif (typeof window === 'undefined') {\n\t\treturn NOOP_CONNECTION;\n\t}\n\n\tconst shouldReconnect = options.reconnect !== false;\n\tconst pingInterval = options.pingInterval ?? DEFAULT_PING_INTERVAL;\n\tconst maxReconnectAttempts =\n\t\toptions.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n\tconst listeners = new Set<(msg: AIServerMessage) => void>();\n\n\tconst connState: AIConnectionState = {\n\t\tisConnected: false,\n\t\tpingInterval: null,\n\t\treconnectAttempts: 0,\n\t\treconnectTimeout: null,\n\t\tws: null\n\t};\n\n\tconst clearTimers = () => {\n\t\tif (connState.pingInterval) {\n\t\t\tclearInterval(connState.pingInterval);\n\t\t\tconnState.pingInterval = null;\n\t\t}\n\n\t\tif (connState.reconnectTimeout) {\n\t\t\tclearTimeout(connState.reconnectTimeout);\n\t\t\tconnState.reconnectTimeout = null;\n\t\t}\n\t};\n\n\tconst scheduleReconnect = () => {\n\t\tconnState.reconnectAttempts++;\n\t\tconst delay =\n\t\t\tconnState.reconnectAttempts === 1\n\t\t\t\t? RECONNECT_INITIAL_DELAY\n\t\t\t\t: RECONNECT_POLL_INTERVAL;\n\n\t\tconnState.reconnectTimeout = setTimeout(() => {\n\t\t\tif (connState.reconnectAttempts > maxReconnectAttempts) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconnect();\n\t\t}, delay);\n\t};\n\n\tconst connect = () => {\n\t\tconst url = buildWsUrl(path);\n\t\tconst wsInstance = new WebSocket(url, options.protocols);\n\n\t\twsInstance.onopen = () => {\n\t\t\tconnState.isConnected = true;\n\t\t\tconnState.reconnectAttempts = 0;\n\n\t\t\tconnState.pingInterval = setInterval(() => {\n\t\t\t\tif (\n\t\t\t\t\twsInstance.readyState === WS_OPEN &&\n\t\t\t\t\tconnState.isConnected\n\t\t\t\t) {\n\t\t\t\t\twsInstance.send(JSON.stringify({ type: 'ping' }));\n\t\t\t\t}\n\t\t\t}, pingInterval);\n\t\t};\n\n\t\twsInstance.onmessage = (event: MessageEvent) => {\n\t\t\tconst message = parseServerMessage(event);\n\n\t\t\tif (!message) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlisteners.forEach((listener) => listener(message));\n\t\t};\n\n\t\twsInstance.onclose = (event: CloseEvent) => {\n\t\t\tconnState.isConnected = false;\n\t\t\tclearTimers();\n\n\t\t\tconst shouldAttemptReconnect =\n\t\t\t\tshouldReconnect &&\n\t\t\t\tevent.code !== WS_NORMAL_CLOSURE &&\n\t\t\t\tconnState.reconnectAttempts < maxReconnectAttempts;\n\n\t\t\tif (shouldAttemptReconnect) {\n\t\t\t\tscheduleReconnect();\n\t\t\t}\n\t\t};\n\n\t\twsInstance.onerror = () => {\n\t\t\t// Error is followed by close event, reconnection handled there\n\t\t};\n\n\t\tconnState.ws = wsInstance;\n\t};\n\n\tconst send = (msg: AIClientMessage) => {\n\t\tif (connState.ws?.readyState === WS_OPEN) {\n\t\t\tconnState.ws.send(JSON.stringify(msg));\n\t\t}\n\t};\n\n\tconst subscribe = (callback: (msg: AIServerMessage) => void) => {\n\t\tlisteners.add(callback);\n\n\t\treturn () => {\n\t\t\tlisteners.delete(callback);\n\t\t};\n\t};\n\n\tconst close = () => {\n\t\tclearTimers();\n\n\t\tif (connState.ws) {\n\t\t\tconnState.ws.close(WS_NORMAL_CLOSURE);\n\t\t\tconnState.ws = null;\n\t\t}\n\n\t\tconnState.isConnected = false;\n\t\tlisteners.clear();\n\t};\n\n\tconst getReadyState = () => connState.ws?.readyState ?? WS_CLOSED;\n\n\tconnect();\n\n\treturn { close, getReadyState, send, subscribe };\n};\n",
8
8
  "import type {\n\tAIConversation,\n\tRAGSource,\n\tAIImageData,\n\tAIMessage,\n\tAIStreamState,\n\tAIStoreAction,\n\tAIToolCall\n} from '../../../types/ai';\n\nconst EMPTY_STATE: AIStreamState = {\n\tactiveConversationId: null,\n\tconversations: new Map(),\n\terror: null,\n\tisStreaming: false\n};\n\nconst initialActiveConversationId: string | null = null;\nconst initialError: string | null = null;\n\n// eslint-disable-next-line absolute/no-useless-function -- returns a new instance each call\nconst freshState = () => ({\n\tactiveConversationId: initialActiveConversationId,\n\tconversations: new Map<string, AIConversation>(),\n\terror: initialError,\n\tisStreaming: false\n});\n\nconst findAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string\n) =>\n\tconversation.messages.find(\n\t\t(msg) => msg.id === messageId && msg.role === 'assistant'\n\t);\n\nconst getOrCreate = (state: AIStreamState, conversationId: string) => {\n\tlet conversation = state.conversations.get(conversationId);\n\n\tif (!conversation) {\n\t\tconversation = {\n\t\t\tcreatedAt: Date.now(),\n\t\t\tid: conversationId,\n\t\t\tmessages: []\n\t\t};\n\t\tstate.conversations.set(conversationId, conversation);\n\t}\n\n\treturn conversation;\n};\n\nconst handleSend = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'send' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message: AIMessage = {\n\t\tattachments: action.attachments,\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\trole: 'user',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n\tstate.activeConversationId = action.conversationId;\n\tstate.error = null;\n\tstate.isStreaming = true;\n};\n\nconst handleChunk = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'chunk' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevContent = conversation.messages[existingIdx]?.content ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, content: prevContent + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: action.content,\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst handleThinking = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'thinking' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst existingIdx = conversation.messages.findIndex(\n\t\t(msg) => msg.id === action.messageId && msg.role === 'assistant'\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tconst prevThinking = conversation.messages[existingIdx]?.thinking ?? '';\n\t\tconversation.messages = conversation.messages.map((msg, idx) =>\n\t\t\tidx === existingIdx\n\t\t\t\t? { ...msg, thinking: prevThinking + action.content }\n\t\t\t\t: msg\n\t\t);\n\n\t\treturn;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId: action.conversationId,\n\t\tid: action.messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\tthinking: action.content,\n\t\ttimestamp: Date.now()\n\t};\n\n\tconversation.messages = [...conversation.messages, message];\n};\n\nconst upsertToolCall = (message: AIMessage, toolCall: AIToolCall) => {\n\tif (!message.toolCalls) {\n\t\tmessage.toolCalls = [toolCall];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = message.toolCalls.findIndex(\n\t\t(existing) => existing.name === toolCall.name\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.toolCalls[existingIdx] = toolCall;\n\t} else {\n\t\tmessage.toolCalls = [...message.toolCalls, toolCall];\n\t}\n};\n\nconst getOrCreateAssistantMessage = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst existing = findAssistantMessage(conversation, messageId);\n\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tconst message: AIMessage = {\n\t\tcontent: '',\n\t\tconversationId,\n\t\tid: messageId,\n\t\tisStreaming: true,\n\t\trole: 'assistant',\n\t\ttimestamp: Date.now()\n\t};\n\tconversation.messages = [...conversation.messages, message];\n\n\treturn message;\n};\n\nconst handleRAGRetrieved = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'rag_retrieved' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tmessage.sources = action.sources;\n\tmessage.retrievedAt = Date.now();\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleToolStatus = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'tool_status' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tconst toolCall: AIToolCall = {\n\t\tid: action.messageId,\n\t\tinput: action.input,\n\t\tname: action.name,\n\t\tresult: action.status === 'complete' ? (action.result ?? '') : undefined\n\t};\n\n\tupsertToolCall(message, toolCall);\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markMessageComplete = (\n\tconversation: AIConversation,\n\tmessageId: string,\n\tusage?: { inputTokens: number; outputTokens: number },\n\tdurationMs?: number,\n\tmodel?: string,\n\tsources?: RAGSource[]\n) => {\n\tconversation.messages = conversation.messages.map((msg) =>\n\t\tmsg.id === messageId && msg.role === 'assistant'\n\t\t\t? {\n\t\t\t\t\t...msg,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\tisStreaming: false,\n\t\t\t\t\tmodel,\n\t\t\t\t\tsources: sources ?? msg.sources,\n\t\t\t\t\tusage\n\t\t\t\t}\n\t\t\t: msg\n\t);\n};\n\nconst NOT_FOUND = -1;\n\nconst findExistingImageById = (\n\timages: AIImageData[],\n\timageId: string | undefined\n) => {\n\tif (!imageId) return NOT_FOUND;\n\n\treturn images.findIndex((img) => img.imageId === imageId);\n};\n\nconst findReplaceablePartialIndex = (images: AIImageData[]) => {\n\tconst lastIdx = images.length - 1;\n\n\tif (lastIdx >= 0 && images[lastIdx]?.isPartial) {\n\t\treturn lastIdx;\n\t}\n\n\treturn NOT_FOUND;\n};\n\nconst upsertImage = (message: AIMessage, imageData: AIImageData) => {\n\tif (!message.images) {\n\t\tmessage.images = [imageData];\n\n\t\treturn;\n\t}\n\n\tconst existingIdx = findExistingImageById(\n\t\tmessage.images,\n\t\timageData.imageId\n\t);\n\n\tif (existingIdx >= 0) {\n\t\tmessage.images[existingIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tconst replaceableIdx = findReplaceablePartialIndex(message.images);\n\n\tif (replaceableIdx >= 0) {\n\t\tmessage.images[replaceableIdx] = imageData;\n\n\t\treturn;\n\t}\n\n\tmessage.images = [...message.images, imageData];\n};\n\nconst handleImage = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'image' }\n) => {\n\tconst conversation = getOrCreate(state, action.conversationId);\n\tconst message = getOrCreateAssistantMessage(\n\t\tconversation,\n\t\taction.messageId,\n\t\taction.conversationId\n\t);\n\n\tupsertImage(message, {\n\t\tdata: action.data,\n\t\tformat: action.format,\n\t\timageId: action.imageId,\n\t\tisPartial: action.isPartial,\n\t\trevisedPrompt: action.revisedPrompt\n\t});\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst handleComplete = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'complete' }\n) => {\n\tconst conversation = state.conversations.get(action.conversationId);\n\n\tif (conversation) {\n\t\tmarkMessageComplete(\n\t\t\tconversation,\n\t\t\taction.messageId,\n\t\t\taction.usage,\n\t\t\taction.durationMs,\n\t\t\taction.model,\n\t\t\taction.sources\n\t\t);\n\t}\n\n\tstate.isStreaming = false;\n};\n\nconst markConversationStreamsComplete = (conversation: AIConversation) => {\n\tconst streamingMessages = conversation.messages.filter(\n\t\t(msg) => msg.isStreaming\n\t);\n\n\tif (streamingMessages.length === 0) {\n\t\treturn;\n\t}\n\n\tfor (const msg of streamingMessages) {\n\t\tmsg.isStreaming = false;\n\t}\n\n\tconversation.messages = [...conversation.messages];\n};\n\nconst markAllStreamsComplete = (state: AIStreamState) => {\n\tfor (const [, conversation] of state.conversations) {\n\t\tmarkConversationStreamsComplete(conversation);\n\t}\n};\n\nconst handleBranch = (\n\tstate: AIStreamState,\n\taction: AIStoreAction & { type: 'branch' }\n) => {\n\tconst source = state.conversations.get(action.oldConversationId);\n\n\tif (!source) {\n\t\treturn;\n\t}\n\n\tconst cutoffIndex = source.messages.findIndex(\n\t\t(msg) => msg.id === action.fromMessageId\n\t);\n\n\tif (cutoffIndex < 0) {\n\t\treturn;\n\t}\n\n\tconst branchedMessages = source.messages\n\t\t.slice(0, cutoffIndex + 1)\n\t\t.map((msg) => ({ ...msg, conversationId: action.newConversationId }));\n\n\tconst newConversation: AIConversation = {\n\t\tcreatedAt: Date.now(),\n\t\tid: action.newConversationId,\n\t\tmessages: branchedMessages\n\t};\n\n\tstate.conversations.set(action.newConversationId, newConversation);\n\tstate.activeConversationId = action.newConversationId;\n};\n\nconst applyAction = (state: AIStreamState, action: AIStoreAction) => {\n\tswitch (action.type) {\n\t\tcase 'send':\n\t\t\thandleSend(state, action);\n\t\t\tbreak;\n\t\tcase 'chunk':\n\t\t\thandleChunk(state, action);\n\t\t\tbreak;\n\t\tcase 'thinking':\n\t\t\thandleThinking(state, action);\n\t\t\tbreak;\n\t\tcase 'tool_status':\n\t\t\thandleToolStatus(state, action);\n\t\t\tbreak;\n\t\tcase 'image':\n\t\t\thandleImage(state, action);\n\t\t\tbreak;\n\t\tcase 'complete':\n\t\t\thandleComplete(state, action);\n\t\t\tbreak;\n\t\tcase 'error':\n\t\t\tstate.error = action.message;\n\t\t\tstate.isStreaming = false;\n\t\t\tbreak;\n\t\tcase 'rag_retrieved':\n\t\t\thandleRAGRetrieved(state, action);\n\t\t\tbreak;\n\t\tcase 'cancel':\n\t\t\tstate.isStreaming = false;\n\t\t\tmarkAllStreamsComplete(state);\n\t\t\tbreak;\n\t\tcase 'branch':\n\t\t\thandleBranch(state, action);\n\t\t\tbreak;\n\t\tcase 'set_conversation':\n\t\t\tstate.activeConversationId = action.conversationId;\n\t\t\tbreak;\n\t}\n};\n\nexport const createAIMessageStore = () => {\n\tlet state = freshState();\n\tconst subscribers = new Set<() => void>();\n\n\treturn {\n\t\tdispatch: (action: AIStoreAction) => {\n\t\t\tapplyAction(state, action);\n\t\t\t// New reference so useSyncExternalStore detects the change\n\t\t\tstate = { ...state, conversations: new Map(state.conversations) };\n\t\t\tsubscribers.forEach((callback) => callback());\n\t\t},\n\t\tgetServerSnapshot: () => EMPTY_STATE,\n\t\tgetSnapshot: () => state,\n\t\tsubscribe: (callback: () => void) => {\n\t\t\tsubscribers.add(callback);\n\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(callback);\n\t\t\t};\n\t\t}\n\t};\n};\n",
9
9
  "import type { AIServerMessage } from '../../types/ai';\nimport { isValidAIClientMessage } from '../../types/typeGuards';\n\nexport const generateId = () => crypto.randomUUID();\n\nexport const parseAIMessage = (raw: unknown) => {\n\tif (raw === null || raw === undefined) {\n\t\treturn null;\n\t}\n\n\tlet text: string;\n\n\tif (typeof raw === 'string') {\n\t\ttext = raw;\n\t} else if (raw instanceof ArrayBuffer) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (ArrayBuffer.isView(raw)) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (typeof raw === 'object') {\n\t\tif (isValidAIClientMessage(raw)) {\n\t\t\treturn raw;\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(text);\n\n\t\tif (isValidAIClientMessage(parsed)) {\n\t\t\treturn parsed;\n\t\t}\n\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const serializeAIMessage = (msg: AIServerMessage) => JSON.stringify(msg);\n",
10
- "import type {\n\tAIAttachment,\n\tAIMessage,\n\tAIServerMessage\n} from '../../../types/ai';\nimport { serverMessageToAction } from '../../ai/client/actions';\nimport { createAIConnection } from '../../ai/client/connection';\nimport { createAIMessageStore } from '../../ai/client/messageStore';\nimport { generateId } from '../../ai/protocol';\n\nexport const createAIStream = (path: string, conversationId?: string) => {\n\tconst connection = createAIConnection(path);\n\tconst store = createAIMessageStore();\n\n\tlet currentError: string | null = null;\n\tlet currentIsStreaming = false;\n\tlet currentMessages: AIMessage[] = [];\n\tlet activeConversationId: string | null = conversationId ?? null;\n\n\tconst syncState = () => {\n\t\tconst snapshot = store.getSnapshot();\n\t\tconst convId = activeConversationId ?? snapshot.activeConversationId;\n\t\tconst conversation = convId\n\t\t\t? snapshot.conversations.get(convId)\n\t\t\t: undefined;\n\t\tactiveConversationId = convId ?? snapshot.activeConversationId;\n\t\tcurrentError = snapshot.error;\n\t\tcurrentIsStreaming = snapshot.isStreaming;\n\t\tcurrentMessages = conversation?.messages ?? [];\n\t};\n\n\tconst unsubscribeStore = store.subscribe(syncState);\n\n\tconst unsubscribeConnection = connection.subscribe(\n\t\t(msg: AIServerMessage) => {\n\t\t\tconst action = serverMessageToAction(msg);\n\t\t\tif (action) {\n\t\t\t\tstore.dispatch(action);\n\t\t\t}\n\t\t}\n\t);\n\n\tconst branch = (messageId: string, content: string) => {\n\t\tif (activeConversationId) {\n\t\t\tconnection.send({\n\t\t\t\tcontent,\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\tmessageId,\n\t\t\t\ttype: 'branch'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tif (activeConversationId) {\n\t\t\tstore.dispatch({ type: 'cancel' });\n\t\t\tconnection.send({\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\ttype: 'cancel'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst destroy = () => {\n\t\tunsubscribeStore();\n\t\tunsubscribeConnection();\n\t\tconnection.close();\n\t};\n\n\tconst send = (content: string, attachments?: AIAttachment[]) => {\n\t\tconst convId = activeConversationId ?? generateId();\n\t\tconst msgId = generateId();\n\n\t\tstore.dispatch({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\tmessageId: msgId,\n\t\t\ttype: 'send'\n\t\t});\n\n\t\tconnection.send({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\ttype: 'message'\n\t\t});\n\t};\n\n\treturn {\n\t\tbranch,\n\t\tcancel,\n\t\tdestroy,\n\t\tsend,\n\t\tget error() {\n\t\t\treturn currentError;\n\t\t},\n\t\tget isStreaming() {\n\t\t\treturn currentIsStreaming;\n\t\t},\n\t\tget messages() {\n\t\t\treturn currentMessages;\n\t\t}\n\t};\n};\n",
11
- "import { writable } from 'svelte/store';\nimport type { RAGDocumentChunk } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGIngest = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst error = writable<string | null>(null);\n\tconst isIngesting = writable(false);\n\tconst lastIngestCount = writable<number | null>(null);\n\n\tconst ingest = async (chunks: RAGDocumentChunk[]) => {\n\t\tisIngesting.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.ingest(chunks);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'RAG ingest failed');\n\t\t\t}\n\n\t\t\tlastIngestCount.set(response.count ?? chunks.length);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisIngesting.set(false);\n\t\t}\n\t};\n\n\treturn {\n\t\terror,\n\t\tingest,\n\t\tisIngesting,\n\t\tlastIngestCount\n\t};\n};\n",
10
+ "import type {\n\tAIAttachment,\n\tAIMessage,\n\tAIServerMessage\n} from '../../../types/ai';\nimport { serverMessageToAction } from '../../ai/client/actions';\nimport { createAIConnection } from '../../ai/client/connection';\nimport { createAIMessageStore } from '../../ai/client/messageStore';\nimport { generateId } from '../../ai/protocol';\n\nexport const createAIStream = (path: string, conversationId?: string) => {\n\tconst connection = createAIConnection(path);\n\tconst store = createAIMessageStore();\n\tconst subscribers = new Set<() => void>();\n\n\tlet currentError: string | null = null;\n\tlet currentIsStreaming = false;\n\tlet currentMessages: AIMessage[] = [];\n\tlet activeConversationId: string | null = conversationId ?? null;\n\n\tconst syncState = () => {\n\t\tconst snapshot = store.getSnapshot();\n\t\tconst convId = activeConversationId ?? snapshot.activeConversationId;\n\t\tconst conversation = convId\n\t\t\t? snapshot.conversations.get(convId)\n\t\t\t: undefined;\n\t\tactiveConversationId = convId ?? snapshot.activeConversationId;\n\t\tcurrentError = snapshot.error;\n\t\tcurrentIsStreaming = snapshot.isStreaming;\n\t\tcurrentMessages = conversation?.messages ?? [];\n\t\tsubscribers.forEach((callback) => callback());\n\t};\n\n\tconst unsubscribeStore = store.subscribe(syncState);\n\n\tconst unsubscribeConnection = connection.subscribe(\n\t\t(msg: AIServerMessage) => {\n\t\t\tconst action = serverMessageToAction(msg);\n\t\t\tif (action) {\n\t\t\t\tstore.dispatch(action);\n\t\t\t}\n\t\t}\n\t);\n\n\tconst branch = (messageId: string, content: string) => {\n\t\tif (activeConversationId) {\n\t\t\tconnection.send({\n\t\t\t\tcontent,\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\tmessageId,\n\t\t\t\ttype: 'branch'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tif (activeConversationId) {\n\t\t\tstore.dispatch({ type: 'cancel' });\n\t\t\tconnection.send({\n\t\t\t\tconversationId: activeConversationId,\n\t\t\t\ttype: 'cancel'\n\t\t\t});\n\t\t}\n\t};\n\n\tconst destroy = () => {\n\t\tunsubscribeStore();\n\t\tunsubscribeConnection();\n\t\tconnection.close();\n\t};\n\n\tconst send = (content: string, attachments?: AIAttachment[]) => {\n\t\tconst convId = activeConversationId ?? generateId();\n\t\tconst msgId = generateId();\n\n\t\tstore.dispatch({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\tmessageId: msgId,\n\t\t\ttype: 'send'\n\t\t});\n\n\t\tconnection.send({\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId: convId,\n\t\t\ttype: 'message'\n\t\t});\n\t};\n\n\treturn {\n\t\tbranch,\n\t\tcancel,\n\t\tdestroy,\n\t\tsend,\n\t\tsubscribe(callback: () => void) {\n\t\t\tsubscribers.add(callback);\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(callback);\n\t\t\t};\n\t\t},\n\t\tget error() {\n\t\t\treturn currentError;\n\t\t},\n\t\tget isStreaming() {\n\t\t\treturn currentIsStreaming;\n\t\t},\n\t\tget messages() {\n\t\t\treturn currentMessages;\n\t\t}\n\t};\n};\n",
11
+ "import { writable } from 'svelte/store';\nimport type { RAGDocumentChunkPreview } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGChunkPreview = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst preview = writable<RAGDocumentChunkPreview | null>(null);\n\tconst error = writable<string | null>(null);\n\tconst isLoading = writable(false);\n\n\tconst inspect = async (id: string) => {\n\t\tisLoading.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.documentChunks(id);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error);\n\t\t\t}\n\n\t\t\tpreview.set(response);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisLoading.set(false);\n\t\t}\n\t};\n\n\tconst clear = () => {\n\t\terror.set(null);\n\t\tisLoading.set(false);\n\t\tpreview.set(null);\n\t};\n\n\treturn {\n\t\tclear,\n\t\terror,\n\t\tinspect,\n\t\tisLoading,\n\t\tpreview\n\t};\n};\n\nexport type CreateRAGChunkPreviewResult = ReturnType<typeof createRAGChunkPreview>;\n",
12
12
  "import type {\n\tRAGBackendsResponse,\n\tRAGDocumentChunksResponse,\n\tRAGDocumentIngestInput,\n\tRAGDocumentChunk,\n\tRAGDocumentsResponse,\n\tRAGIngestResponse,\n\tRAGMutationResponse,\n\tRAGSearchRequest,\n\tRAGSource,\n\tRAGStatusResponse\n} from '../../../types/ai';\n\ntype FetchLike = typeof fetch;\n\nexport type RAGClientOptions = {\n\tpath: string;\n\tfetch?: FetchLike;\n};\n\nconst jsonHeaders = {\n\t'Content-Type': 'application/json'\n};\n\nconst normalizeBasePath = (path: string) =>\n\tpath.endsWith('/') ? path.slice(0, -1) : path;\n\nconst parseJson = async <T>(response: Response): Promise<T> => {\n\tconst payload = (await response.json()) as T;\n\treturn payload;\n};\n\nconst toErrorMessage = async (response: Response) => {\n\ttry {\n\t\tconst payload = (await response.json()) as { error?: string };\n\t\tif (typeof payload.error === 'string' && payload.error) {\n\t\t\treturn payload.error;\n\t\t}\n\t} catch {\n\t\t// fall through\n\t}\n\n\treturn `Request failed with status ${response.status}`;\n};\n\nexport const createRAGClient = (options: RAGClientOptions) => {\n\tconst basePath = normalizeBasePath(options.path);\n\tconst fetchImpl = options.fetch ?? fetch;\n\n\treturn {\n\t\tasync ingest(chunks: RAGDocumentChunk[]): Promise<RAGIngestResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify({ chunks }),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\n\t\tasync ingestDocuments(\n\t\t\tinput: RAGDocumentIngestInput\n\t\t): Promise<RAGIngestResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/ingest`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGIngestResponse>(response);\n\t\t},\n\n\t\tasync search(input: RAGSearchRequest): Promise<RAGSource[]> {\n\t\t\tconst response = await fetchImpl(`${basePath}/search`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\tconst payload = await parseJson<{\n\t\t\t\tok: boolean;\n\t\t\t\tresults?: RAGSource[];\n\t\t\t\terror?: string;\n\t\t\t}>(response);\n\n\t\t\tif (!payload.ok) {\n\t\t\t\tthrow new Error(payload.error ?? 'RAG search failed');\n\t\t\t}\n\n\t\t\treturn payload.results ?? [];\n\t\t},\n\n\t\tasync status(): Promise<RAGStatusResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/status`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGStatusResponse>(response);\n\t\t},\n\n\t\tasync documents(kind?: string): Promise<RAGDocumentsResponse> {\n\t\t\tconst query = kind ? `?kind=${encodeURIComponent(kind)}` : '';\n\t\t\tconst response = await fetchImpl(`${basePath}/documents${query}`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentsResponse>(response);\n\t\t},\n\n\t\tasync createDocument(\n\t\t\tinput: RAGDocumentIngestInput['documents'][number]\n\t\t): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/documents`, {\n\t\t\t\tbody: JSON.stringify(input),\n\t\t\t\theaders: jsonHeaders,\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync documentChunks(id: string): Promise<RAGDocumentChunksResponse> {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}/chunks`\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = await toErrorMessage(response);\n\t\t\t\treturn { ok: false, error };\n\t\t\t}\n\n\t\t\treturn parseJson<RAGDocumentChunksResponse>(response);\n\t\t},\n\n\t\tasync deleteDocument(id: string): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(\n\t\t\t\t`${basePath}/documents/${encodeURIComponent(id)}`,\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE'\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync reseed(): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/reseed`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync reset(): Promise<RAGMutationResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/reset`, {\n\t\t\t\tmethod: 'POST'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\terror: await toErrorMessage(response)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn parseJson<RAGMutationResponse>(response);\n\t\t},\n\n\t\tasync backends(): Promise<RAGBackendsResponse> {\n\t\t\tconst response = await fetchImpl(`${basePath}/backends`);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<RAGBackendsResponse>(response);\n\t\t},\n\n\t\tasync clearIndex(): Promise<{ ok: boolean }> {\n\t\t\tconst response = await fetchImpl(`${basePath}/index`, {\n\t\t\t\tmethod: 'DELETE'\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(await toErrorMessage(response));\n\t\t\t}\n\n\t\t\treturn parseJson<{ ok: boolean }>(response);\n\t\t}\n\t};\n};\n\nexport type RAGClient = ReturnType<typeof createRAGClient>;\n",
13
- "import { writable } from 'svelte/store';\nimport type { RAGSearchRequest, RAGSource } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGSearch = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst results = writable<RAGSource[]>([]);\n\tconst error = writable<string | null>(null);\n\tconst isSearching = writable(false);\n\n\tconst search = async (input: RAGSearchRequest) => {\n\t\tisSearching.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst nextResults = await client.search(input);\n\t\t\tresults.set(nextResults);\n\t\t\treturn nextResults;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisSearching.set(false);\n\t\t}\n\t};\n\n\treturn {\n\t\terror,\n\t\tisSearching,\n\t\tresults,\n\t\tsearch\n\t};\n};\n",
14
- "import { writable } from 'svelte/store';\nimport type {\n\tRAGBackendCapabilities,\n\tRAGVectorStoreStatus\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGStatus = (path: string, autoLoad = true) => {\n\tconst client = createRAGClient({ path });\n\tconst status = writable<RAGVectorStoreStatus | undefined>(undefined);\n\tconst capabilities = writable<RAGBackendCapabilities | undefined>(\n\t\tundefined\n\t);\n\tconst error = writable<string | null>(null);\n\tconst isLoading = writable(autoLoad);\n\n\tconst refresh = async () => {\n\t\tisLoading.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.status();\n\t\t\tstatus.set(response.status);\n\t\t\tcapabilities.set(response.capabilities);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisLoading.set(false);\n\t\t}\n\t};\n\n\tif (autoLoad) {\n\t\tvoid refresh();\n\t} else {\n\t\tisLoading.set(false);\n\t}\n\n\treturn {\n\t\tcapabilities,\n\t\terror,\n\t\tisLoading,\n\t\trefresh,\n\t\tstatus\n\t};\n};\n"
13
+ "import { derived, type Readable } from 'svelte/store';\nimport type { RAGSource } from '../../../types/ai';\nimport {\n\tbuildRAGCitations,\n\tbuildRAGSourceGroups\n} from '../../ai/rag/presentation';\n\nexport const createRAGCitations = (sources: Readable<RAGSource[]>) => {\n\tconst citations = derived(sources, ($sources) => buildRAGCitations($sources));\n\tconst sourceGroups = derived(sources, ($sources) =>\n\t\tbuildRAGSourceGroups($sources)\n\t);\n\tconst hasCitations = derived(citations, ($citations) => $citations.length > 0);\n\n\treturn {\n\t\tcitations,\n\t\thasCitations,\n\t\tsourceGroups\n\t};\n};\n\nexport type CreateRAGCitationsResult = ReturnType<typeof createRAGCitations>;\n",
14
+ "import type {\n\tAIMessage,\n\tRAGCitation,\n\tRAGRetrievedState,\n\tRAGSource,\n\tRAGSourceGroup,\n\tRAGStreamStage\n} from '../../../types/ai';\n\nconst buildSourceGroupKey = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nconst buildSourceLabel = (source: RAGSource) =>\n\tsource.source ?? source.title ?? source.chunkId;\n\nexport const getLatestAssistantMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (message?.role === 'assistant') {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nexport const getLatestRAGSources = (messages: AIMessage[]) =>\n\tgetLatestAssistantMessage(messages)?.sources ?? [];\n\nexport const getLatestRetrievedMessage = (messages: AIMessage[]) => {\n\tfor (let index = messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = messages[index];\n\t\tif (message?.role === 'assistant' && (message.sources?.length ?? 0) > 0) {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nexport const buildRAGSourceGroups = (\n\tsources: RAGSource[]\n): RAGSourceGroup[] => {\n\tconst groups = new Map<string, RAGSourceGroup>();\n\n\tfor (const source of sources) {\n\t\tconst key = buildSourceGroupKey(source);\n\t\tconst existing = groups.get(key);\n\n\t\tif (existing) {\n\t\t\texisting.bestScore = Math.max(existing.bestScore, source.score);\n\t\t\texisting.count += 1;\n\t\t\texisting.chunks.push(source);\n\t\t\tcontinue;\n\t\t}\n\n\t\tgroups.set(key, {\n\t\t\tbestScore: source.score,\n\t\t\tchunks: [source],\n\t\t\tcount: 1,\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tsource: source.source,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...groups.values()].sort((left, right) => {\n\t\tif (right.bestScore !== left.bestScore) {\n\t\t\treturn right.bestScore - left.bestScore;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const buildRAGCitations = (sources: RAGSource[]): RAGCitation[] => {\n\tconst unique = new Map<string, RAGCitation>();\n\n\tfor (const source of sources) {\n\t\tconst key = source.chunkId;\n\t\tconst existing = unique.get(key);\n\n\t\tif (existing && existing.score >= source.score) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tunique.set(key, {\n\t\t\tchunkId: source.chunkId,\n\t\t\tkey,\n\t\t\tlabel: buildSourceLabel(source),\n\t\t\tmetadata: source.metadata,\n\t\t\tscore: source.score,\n\t\t\tsource: source.source,\n\t\t\ttext: source.text,\n\t\t\ttitle: source.title\n\t\t});\n\t}\n\n\treturn [...unique.values()].sort((left, right) => {\n\t\tif (right.score !== left.score) {\n\t\t\treturn right.score - left.score;\n\t\t}\n\n\t\treturn left.label.localeCompare(right.label);\n\t});\n};\n\nexport const buildRAGRetrievedState = (\n\tmessages: AIMessage[]\n): RAGRetrievedState | null => {\n\tconst message = getLatestRetrievedMessage(messages);\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst sources = message.sources ?? [];\n\n\treturn {\n\t\tcitations: buildRAGCitations(sources),\n\t\tconversationId: message.conversationId,\n\t\tmessageId: message.id,\n\t\tretrievedAt: message.retrievedAt,\n\t\tsourceGroups: buildRAGSourceGroups(sources),\n\t\tsources\n\t};\n};\n\nexport const resolveRAGStreamStage = ({\n\terror,\n\tisStreaming,\n\tmessages\n}: {\n\terror: string | null;\n\tisStreaming: boolean;\n\tmessages: AIMessage[];\n}): RAGStreamStage => {\n\tif (error) {\n\t\treturn 'error';\n\t}\n\n\tconst assistantMessage = getLatestAssistantMessage(messages);\n\tif (!assistantMessage) {\n\t\treturn isStreaming ? 'submitting' : 'idle';\n\t}\n\n\tif (!isStreaming) {\n\t\treturn 'complete';\n\t}\n\n\tconst hasSources = (assistantMessage.sources?.length ?? 0) > 0;\n\tconst hasContent =\n\t\tassistantMessage.content.trim().length > 0 ||\n\t\tassistantMessage.thinking?.trim().length ||\n\t\t(assistantMessage.toolCalls?.length ?? 0) > 0 ||\n\t\t(assistantMessage.images?.length ?? 0) > 0;\n\n\tif (hasSources && !hasContent) {\n\t\treturn 'retrieved';\n\t}\n\n\treturn 'streaming';\n};\n",
15
+ "import { writable } from 'svelte/store';\nimport type { RAGDocumentsResponse, RAGIndexedDocument } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGDocuments = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst documents = writable<RAGIndexedDocument[]>([]);\n\tconst error = writable<string | null>(null);\n\tconst isLoading = writable(false);\n\tconst lastResponse = writable<RAGDocumentsResponse | null>(null);\n\n\tconst load = async (kind?: string) => {\n\t\tisLoading.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.documents(kind);\n\t\t\tdocuments.set(response.documents);\n\t\t\tlastResponse.set(response);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisLoading.set(false);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\tdocuments.set([]);\n\t\terror.set(null);\n\t\tisLoading.set(false);\n\t\tlastResponse.set(null);\n\t};\n\n\treturn {\n\t\tdocuments,\n\t\terror,\n\t\tisLoading,\n\t\tlastResponse,\n\t\tload,\n\t\treset\n\t};\n};\n\nexport type CreateRAGDocumentsResult = ReturnType<typeof createRAGDocuments>;\n",
16
+ "import { writable } from 'svelte/store';\nimport type {\n\tRAGDocumentChunk,\n\tRAGDocumentIngestInput,\n\tRAGIngestResponse\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGIngest = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst error = writable<string | null>(null);\n\tconst isIngesting = writable(false);\n\tconst lastIngestCount = writable<number | null>(null);\n\tconst lastDocumentCount = writable<number | null>(null);\n\tconst lastResponse = writable<RAGIngestResponse | null>(null);\n\n\tconst ingestChunks = async (chunks: RAGDocumentChunk[]) => {\n\t\tisIngesting.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.ingest(chunks);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'RAG ingest failed');\n\t\t\t}\n\n\t\t\tlastIngestCount.set(response.count ?? chunks.length);\n\t\t\tlastDocumentCount.set(null);\n\t\t\tlastResponse.set(response);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisIngesting.set(false);\n\t\t}\n\t};\n\n\tconst ingestDocuments = async (input: RAGDocumentIngestInput) => {\n\t\tisIngesting.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.ingestDocuments(input);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'RAG document ingest failed');\n\t\t\t}\n\n\t\t\tlastDocumentCount.set(response.documentCount ?? input.documents.length);\n\t\t\tlastIngestCount.set(response.count ?? null);\n\t\t\tlastResponse.set(response);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisIngesting.set(false);\n\t\t}\n\t};\n\n\tconst clearIndex = async () => {\n\t\tisIngesting.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\treturn await client.clearIndex();\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisIngesting.set(false);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\terror.set(null);\n\t\tisIngesting.set(false);\n\t\tlastDocumentCount.set(null);\n\t\tlastIngestCount.set(null);\n\t\tlastResponse.set(null);\n\t};\n\n\treturn {\n\t\tclearIndex,\n\t\terror,\n\t\tingest: ingestChunks,\n\t\tingestChunks,\n\t\tingestDocuments,\n\t\tisIngesting,\n\t\tlastDocumentCount,\n\t\tlastIngestCount,\n\t\tlastResponse,\n\t\treset\n\t};\n};\n",
17
+ "import { writable } from 'svelte/store';\nimport type {\n\tRAGBackendsResponse,\n\tRAGChunkingStrategy,\n\tRAGContentFormat,\n\tRAGMutationResponse\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGIndexAdmin = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst isLoading = writable(false);\n\tconst error = writable<string | null>(null);\n\tconst lastMutation = writable<RAGMutationResponse | null>(null);\n\tconst backends = writable<RAGBackendsResponse | null>(null);\n\n\tconst run = async <T,>(operation: () => Promise<T>) => {\n\t\tisLoading.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\treturn await operation();\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisLoading.set(false);\n\t\t}\n\t};\n\n\tconst createDocument = async (input: {\n\t\tid?: string;\n\t\ttitle?: string;\n\t\tsource?: string;\n\t\ttext: string;\n\t\tformat?: RAGContentFormat;\n\t\tmetadata?: Record<string, unknown>;\n\t\tchunking?: {\n\t\t\tmaxChunkLength?: number;\n\t\t\tchunkOverlap?: number;\n\t\t\tminChunkLength?: number;\n\t\t\tstrategy?: RAGChunkingStrategy;\n\t\t};\n\t}) =>\n\t\trun(async () => {\n\t\t\tconst response = await client.createDocument(input);\n\t\t\tlastMutation.set(response);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'Failed to create document');\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\n\tconst deleteDocument = async (id: string) =>\n\t\trun(async () => {\n\t\t\tconst response = await client.deleteDocument(id);\n\t\t\tlastMutation.set(response);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'Failed to delete document');\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\n\tconst reseed = async () =>\n\t\trun(async () => {\n\t\t\tconst response = await client.reseed();\n\t\t\tlastMutation.set(response);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'Failed to reseed index');\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\n\tconst reset = async () =>\n\t\trun(async () => {\n\t\t\tconst response = await client.reset();\n\t\t\tlastMutation.set(response);\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(response.error ?? 'Failed to reset index');\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\n\tconst loadBackends = async () =>\n\t\trun(async () => {\n\t\t\tconst response = await client.backends();\n\t\t\tbackends.set(response);\n\t\t\treturn response;\n\t\t});\n\n\tconst clearIndex = async () =>\n\t\trun(async () => {\n\t\t\tconst response = await client.clearIndex();\n\t\t\tconst mutation = { ok: response.ok } satisfies RAGMutationResponse;\n\t\t\tlastMutation.set(mutation);\n\t\t\treturn mutation;\n\t\t});\n\n\tconst resetState = () => {\n\t\tbackends.set(null);\n\t\terror.set(null);\n\t\tisLoading.set(false);\n\t\tlastMutation.set(null);\n\t};\n\n\treturn {\n\t\tbackends,\n\t\tclearIndex,\n\t\tcreateDocument,\n\t\tdeleteDocument,\n\t\terror,\n\t\tisLoading,\n\t\tlastMutation,\n\t\tloadBackends,\n\t\treseed,\n\t\treset,\n\t\tresetState\n\t};\n};\n\nexport type CreateRAGIndexAdminResult = ReturnType<typeof createRAGIndexAdmin>;\n",
18
+ "import { writable } from 'svelte/store';\nimport type { RAGSearchRequest, RAGSource } from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGSearch = (path: string) => {\n\tconst client = createRAGClient({ path });\n\tconst results = writable<RAGSource[]>([]);\n\tconst error = writable<string | null>(null);\n\tconst isSearching = writable(false);\n\tconst hasSearched = writable(false);\n\tconst lastRequest = writable<RAGSearchRequest | null>(null);\n\n\tconst search = async (input: RAGSearchRequest) => {\n\t\tisSearching.set(true);\n\t\terror.set(null);\n\t\tlastRequest.set(input);\n\n\t\ttry {\n\t\t\tconst nextResults = await client.search(input);\n\t\t\tresults.set(nextResults);\n\t\t\thasSearched.set(true);\n\t\t\treturn nextResults;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisSearching.set(false);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\terror.set(null);\n\t\thasSearched.set(false);\n\t\tisSearching.set(false);\n\t\tlastRequest.set(null);\n\t\tresults.set([]);\n\t};\n\n\treturn {\n\t\terror,\n\t\thasSearched,\n\t\tisSearching,\n\t\tlastRequest,\n\t\treset,\n\t\tresults,\n\t\tsearch\n\t};\n};\n",
19
+ "import { derived, type Readable } from 'svelte/store';\nimport type { AIMessage } from '../../../types/ai';\nimport {\n\tbuildRAGSourceGroups,\n\tgetLatestAssistantMessage,\n\tgetLatestRAGSources\n} from '../../ai/rag/presentation';\n\nexport const createRAGSources = (messages: Readable<AIMessage[]>) => {\n\tconst latestAssistantMessage = derived(messages, ($messages) =>\n\t\tgetLatestAssistantMessage($messages)\n\t);\n\tconst sources = derived(messages, ($messages) => getLatestRAGSources($messages));\n\tconst sourceGroups = derived(sources, ($sources) =>\n\t\tbuildRAGSourceGroups($sources)\n\t);\n\tconst hasSources = derived(sources, ($sources) => $sources.length > 0);\n\n\treturn {\n\t\thasSources,\n\t\tlatestAssistantMessage,\n\t\tsourceGroups,\n\t\tsources\n\t};\n};\n\nexport type CreateRAGSourcesResult = ReturnType<typeof createRAGSources>;\n",
20
+ "import { writable } from 'svelte/store';\nimport type {\n\tRAGBackendCapabilities,\n\tRAGVectorStoreStatus\n} from '../../../types/ai';\nimport { createRAGClient } from '../../ai/client/ragClient';\n\nexport const createRAGStatus = (path: string, autoLoad = true) => {\n\tconst client = createRAGClient({ path });\n\tconst status = writable<RAGVectorStoreStatus | undefined>(undefined);\n\tconst capabilities = writable<RAGBackendCapabilities | undefined>(\n\t\tundefined\n\t);\n\tconst error = writable<string | null>(null);\n\tconst isLoading = writable(autoLoad);\n\n\tconst refresh = async () => {\n\t\tisLoading.set(true);\n\t\terror.set(null);\n\n\t\ttry {\n\t\t\tconst response = await client.status();\n\t\t\tstatus.set(response.status);\n\t\t\tcapabilities.set(response.capabilities);\n\t\t\treturn response;\n\t\t} catch (caught) {\n\t\t\terror.set(caught instanceof Error ? caught.message : String(caught));\n\t\t\tthrow caught;\n\t\t} finally {\n\t\t\tisLoading.set(false);\n\t\t}\n\t};\n\n\tconst reset = () => {\n\t\tcapabilities.set(undefined);\n\t\terror.set(null);\n\t\tisLoading.set(false);\n\t\tstatus.set(undefined);\n\t};\n\n\tif (autoLoad) {\n\t\tvoid refresh();\n\t} else {\n\t\tisLoading.set(false);\n\t}\n\n\treturn {\n\t\tcapabilities,\n\t\terror,\n\t\tisLoading,\n\t\trefresh,\n\t\treset,\n\t\tstatus\n\t};\n};\n",
21
+ "import { derived, readable } from 'svelte/store';\nimport type { AIAttachment } from '../../../types/ai';\nimport {\n\tbuildRAGRetrievedState,\n\tbuildRAGCitations,\n\tbuildRAGSourceGroups,\n\tgetLatestAssistantMessage,\n\tgetLatestRAGSources,\n\tresolveRAGStreamStage\n} from '../../ai/rag/presentation';\nimport { createAIStream } from './createAIStream';\n\nexport const createRAGStream = (path: string, conversationId?: string) => {\n\tconst stream = createAIStream(path, conversationId);\n\n\tconst messages = readable(stream.messages, (set) => {\n\t\tset(stream.messages);\n\t\treturn stream.subscribe(() => set(stream.messages));\n\t});\n\tconst error = readable(stream.error, (set) => {\n\t\tset(stream.error);\n\t\treturn stream.subscribe(() => set(stream.error));\n\t});\n\tconst isStreaming = readable(stream.isStreaming, (set) => {\n\t\tset(stream.isStreaming);\n\t\treturn stream.subscribe(() => set(stream.isStreaming));\n\t});\n\n\tconst latestAssistantMessage = derived(messages, ($messages) =>\n\t\tgetLatestAssistantMessage($messages)\n\t);\n\tconst sources = derived(messages, ($messages) => getLatestRAGSources($messages));\n\tconst sourceGroups = derived(sources, ($sources) =>\n\t\tbuildRAGSourceGroups($sources)\n\t);\n\tconst citations = derived(sources, ($sources) => buildRAGCitations($sources));\n\tconst retrieval = derived(messages, ($messages) =>\n\t\tbuildRAGRetrievedState($messages)\n\t);\n\tconst stage = derived(\n\t\t[messages, error, isStreaming],\n\t\t([$messages, $error, $isStreaming]) =>\n\t\t\tresolveRAGStreamStage({\n\t\t\t\terror: $error,\n\t\t\t\tisStreaming: $isStreaming,\n\t\t\t\tmessages: $messages\n\t\t\t})\n\t);\n\tconst hasRetrieved = derived(retrieval, ($retrieval) =>\n\t\t($retrieval?.sources.length ?? 0) > 0\n\t);\n\tconst hasSources = derived(sources, ($sources) => $sources.length > 0);\n\tconst isRetrieving = derived(\n\t\tstage,\n\t\t($stage) => $stage === 'submitting' || $stage === 'retrieved'\n\t);\n\tconst isAnswerStreaming = derived(stage, ($stage) => $stage === 'streaming');\n\tconst isComplete = derived(stage, ($stage) => $stage === 'complete');\n\n\tconst query = (content: string, attachments?: AIAttachment[]) => {\n\t\tstream.send(content, attachments);\n\t};\n\n\treturn {\n\t\t...stream,\n\t\tcitations,\n\t\terror,\n\t\thasRetrieved,\n\t\thasSources,\n\t\tisAnswerStreaming,\n\t\tisComplete,\n\t\tisRetrieving,\n\t\tisStreaming,\n\t\tlatestAssistantMessage,\n\t\tmessages,\n\t\tquery,\n\t\tretrieval,\n\t\tsourceGroups,\n\t\tsources,\n\t\tstage\n\t};\n};\n\nexport type CreateRAGStreamResult = ReturnType<typeof createRAGStream>;\n",
22
+ "import { createRAGChunkPreview } from './createRAGChunkPreview';\nimport { createRAGCitations } from './createRAGCitations';\nimport { createRAGDocuments } from './createRAGDocuments';\nimport { createRAGIngest } from './createRAGIngest';\nimport { createRAGIndexAdmin } from './createRAGIndexAdmin';\nimport { createRAGSearch } from './createRAGSearch';\nimport { createRAGSources } from './createRAGSources';\nimport { createRAGStatus } from './createRAGStatus';\nimport { createRAGStream } from './createRAGStream';\n\nexport type CreateRAGOptions = {\n\tautoLoadStatus?: boolean;\n\tconversationId?: string;\n\tstreamPath?: string;\n};\n\nexport const createRAG = (path: string, options: CreateRAGOptions = {}) => {\n\tconst search = createRAGSearch(path);\n\tconst ingest = createRAGIngest(path);\n\tconst status = createRAGStatus(path, options.autoLoadStatus ?? true);\n\tconst documents = createRAGDocuments(path);\n\tconst chunkPreview = createRAGChunkPreview(path);\n\tconst index = createRAGIndexAdmin(path);\n\tconst stream = createRAGStream(options.streamPath ?? path, options.conversationId);\n\tconst sources = createRAGSources(stream.messages);\n\tconst citations = createRAGCitations(sources.sources);\n\n\treturn {\n\t\tcitations,\n\t\tchunkPreview,\n\t\tdocuments,\n\t\tingest,\n\t\tindex,\n\t\tsearch,\n\t\tsources,\n\t\tstatus,\n\t\tstream\n\t};\n};\n\nexport type CreateRAGResult = ReturnType<typeof createRAG>;\n"
15
23
  ],
16
- "mappings": "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",
17
- "debugId": "11199D7A1007552864756E2164756E21",
24
+ "mappings": "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",
25
+ "debugId": "B44067D7D4FBEF1464756E2164756E21",
18
26
  "names": []
19
27
  }
package/package.json CHANGED
@@ -314,5 +314,5 @@
314
314
  "typecheck": "bun run src/cli/index.ts typecheck --config example/absolute.config.ts"
315
315
  },
316
316
  "types": "./dist/src/index.d.ts",
317
- "version": "0.19.0-beta.441"
317
+ "version": "0.19.0-beta.443"
318
318
  }