@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.
- package/dist/src/svelte/ai/createAIStream.d.ts +1 -0
- package/dist/src/svelte/ai/createRAG.d.ts +117 -0
- package/dist/src/svelte/ai/createRAGChunkPreview.d.ts +11 -0
- package/dist/src/svelte/ai/createRAGCitations.d.ts +8 -0
- package/dist/src/svelte/ai/createRAGDocuments.d.ts +10 -0
- package/dist/src/svelte/ai/createRAGIndexAdmin.d.ts +30 -0
- package/dist/src/svelte/ai/createRAGIngest.d.ts +10 -2
- package/dist/src/svelte/ai/createRAGSearch.d.ts +3 -0
- package/dist/src/svelte/ai/createRAGSources.d.ts +9 -0
- package/dist/src/svelte/ai/createRAGStatus.d.ts +1 -0
- package/dist/src/svelte/ai/createRAGStream.d.ts +24 -1
- package/dist/src/svelte/ai/index.d.ts +6 -0
- package/dist/svelte/ai/index.js +486 -18
- package/dist/svelte/ai/index.js.map +15 -7
- package/package.json +1 -1
|
@@ -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<
|
|
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
|
-
|
|
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';
|
package/dist/svelte/ai/index.js
CHANGED
|
@@ -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/
|
|
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 =
|
|
892
|
-
const isIngesting =
|
|
893
|
-
const lastIngestCount =
|
|
894
|
-
const
|
|
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
|
-
|
|
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
|
|
1266
|
+
import { writable as writable5 } from "svelte/store";
|
|
920
1267
|
var createRAGSearch = (path) => {
|
|
921
1268
|
const client = createRAGClient({ path });
|
|
922
|
-
const results =
|
|
923
|
-
const error =
|
|
924
|
-
const isSearching =
|
|
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
|
|
1324
|
+
import { writable as writable6 } from "svelte/store";
|
|
948
1325
|
var createRAGStatus = (path, autoLoad = true) => {
|
|
949
1326
|
const client = createRAGClient({ path });
|
|
950
|
-
const status =
|
|
951
|
-
const capabilities =
|
|
952
|
-
const error =
|
|
953
|
-
const isLoading =
|
|
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
|
-
|
|
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=
|
|
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/
|
|
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 {
|
|
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 {
|
|
14
|
-
"import
|
|
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": "
|
|
24
|
+
"mappings": "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",
|
|
25
|
+
"debugId": "B44067D7D4FBEF1464756E2164756E21",
|
|
18
26
|
"names": []
|
|
19
27
|
}
|
package/package.json
CHANGED