1
+
2
+ /**
3
+ * @file
4
+ * @typedef {import('./types.js').ResultData } ResultData
5
+ * @typedef {import('./types.js').EditEvent } EditEvent
6
+ * @typedef {import('./types.js').UpdatedState } UpdatedState
7
+ * @typedef {import('./types.js').InitData } InitData
8
+ * @typedef {import('./types.js').ArgumentMetadata } ArgumentMetadata
9
+ *
10
+ */
11
+
12
+ /**
13
+ * Asynchronously waits for a specified number of milliseconds.
14
+ *
15
+ * @param {number } ms - The number of milliseconds to wait.
16
+ * @returns {Promise<void> } A promise that resolves after the specified delay.
17
+ */
18
+ const delay = async ( ms ) => ( new Promise ( resolve => setTimeout ( resolve , ms ) ) ) ;
19
+
20
+ export const adaptiveRAG = {
21
+ /**
22
+ * @param {HTMLElement } elem
23
+ * @returns {Promise<InitData> }
24
+ */
25
+ callInit : async ( elem ) => {
26
+
27
+ /** @typedef {InitData } */
28
+ const detail = {
29
+ threads : [ [ 'default' , [ ] ] ] ,
30
+ title : 'LangGraph4j : TEST' ,
31
+ args : [
32
+ { name : 'input' , type : 'STRING' , required : true }
33
+ ] ,
34
+ graph : `
35
+ ---
36
+ title: TEST
37
+ ---
38
+ flowchart TD
39
+ start((start))
40
+ stop((stop))
41
+ web_search("web_search")
42
+ retrieve("retrieve")
43
+ grade_documents("grade_documents")
44
+ generate("generate")
45
+ transform_query("transform_query")
46
+ start:::start -->|web_search| web_search:::web_search
47
+ start:::start -->|vectorstore| retrieve:::retrieve
48
+ web_search:::web_search --> generate:::generate
49
+ retrieve:::retrieve --> grade_documents:::grade_documents
50
+ grade_documents:::grade_documents -->|transform_query| transform_query:::transform_query
51
+ grade_documents:::grade_documents -->|generate| generate:::generate
52
+ transform_query:::transform_query --> retrieve:::retrieve
53
+ generate:::generate -->|not supported| generate:::generate
54
+ generate:::generate -->|not useful| transform_query:::transform_query
55
+ generate:::generate -->|useful| stop:::stop
56
+ `
57
+ }
58
+
59
+ await delay ( 1000 ) ;
60
+
61
+ /** @typedef {CustomEvent<InitData> } */
62
+ const event = new CustomEvent ( 'init' , {
63
+ detail,
64
+ bubbles : true ,
65
+ composed : true ,
66
+ cancelable : true
67
+ } ) ;
68
+
69
+
70
+ elem . dispatchEvent ( event ) ;
71
+
72
+ // @ts -ignore
73
+ return detail ;
74
+ } ,
75
+
76
+
77
+ /**
78
+ * @param {HTMLElement } elem
79
+ * @param {string|undefined } selectedThread
80
+ */
81
+ callSubmitAction : async ( elem , selectedThread ) => {
82
+
83
+ const thread = selectedThread
84
+
85
+ const send = async ( /** @type {string } */ nodeId ) => {
86
+
87
+ /** @typedef {ResultData } */
88
+ const detail = [ thread , {
89
+ checkpoint : ( nodeId === 'start' || nodeId === 'stop' ) ? undefined : `checkpoint-${ nodeId } ` ,
90
+ node : nodeId ,
91
+ state : {
92
+ input : "this is input" ,
93
+ property1 : { value : "value1" , valid : true } ,
94
+ property2 : { value : "value2" , children : { elements : [ 1 , 2 , 3 ] } }
95
+ }
96
+ }
97
+ ]
98
+
99
+ /** @typedef {CustomEvent<ResultData> } */
100
+ const event = new CustomEvent ( 'result' , {
101
+ detail,
102
+ bubbles : true ,
103
+ composed : true ,
104
+ cancelable : true
105
+ } ) ;
106
+
107
+ await delay ( 1000 ) ;
108
+ elem . dispatchEvent ( event ) ;
109
+ }
110
+
111
+ await send ( 'start' ) ;
112
+ await send ( 'retrieve' ) ;
113
+ await send ( 'grade_documents' ) ;
114
+ await send ( 'transform_query' ) ;
115
+ await send ( 'retrieve' ) ;
116
+ await send ( 'grade_documents' ) ;
117
+ await send ( 'generate' ) ;
118
+ await send ( 'stop' ) ;
119
+
120
+ }
121
+
122
+ } ;
123
+
124
+ export const imageToDiagram = {
125
+ /**
126
+ * @param {HTMLElement } elem
127
+ * @returns {Promise<InitData> }
128
+ */
129
+ callInit : async ( elem ) => {
130
+
131
+ /** @typedef {InitData } */
132
+ const detail = {
133
+ threads : [ [ 'default' , [ ] ] ] ,
134
+ title : 'LangGraph4j : TEST' ,
135
+ args : [
136
+ { name : 'input' , type : 'IMAGE' , required : true }
137
+ ] ,
138
+ graph : `
139
+ ---
140
+ title: Image to diagram with correction
141
+ ---
142
+ flowchart TD
143
+ __START__((start))
144
+ __END__((stop))
145
+ agent_describer("agent_describer")
146
+ agent_sequence_plantuml("agent_sequence_plantuml")
147
+ agent_generic_plantuml("agent_generic_plantuml")
148
+ subgraph evaluate_result
149
+ ___START__((start)):::___START__
150
+ ___END__((stop)):::___END__
151
+ _evaluate_result("evaluate_result")
152
+ _agent_review("agent_review")
153
+ %% _condition1{"check state"}
154
+ ___START__:::___START__ --> _evaluate_result:::_evaluate_result
155
+ _agent_review:::_agent_review --> _evaluate_result:::_evaluate_result
156
+ %% _evaluate_result:::_evaluate_result --> _condition1:::_condition1
157
+ %% _condition1:::_condition1 -->|ERROR| _agent_review:::_agent_review
158
+ _evaluate_result:::_evaluate_result -->|ERROR| _agent_review:::_agent_review
159
+ %% _condition1:::_condition1 -->|UNKNOWN| ___END__:::___END__
160
+ _evaluate_result:::_evaluate_result -->|UNKNOWN| ___END__:::___END__
161
+ %% _condition1:::_condition1 -->|OK| ___END__:::___END__
162
+ _evaluate_result:::_evaluate_result -->|OK| ___END__:::___END__
163
+ end
164
+ %% condition1{"check state"}
165
+ __START__:::__START__ --> agent_describer:::agent_describer
166
+ %% agent_describer:::agent_describer --> condition1:::condition1
167
+ %% condition1:::condition1 -->|sequence| agent_sequence_plantuml:::agent_sequence_plantuml
168
+ agent_describer:::agent_describer -->|sequence| agent_sequence_plantuml:::agent_sequence_plantuml
169
+ %% condition1:::condition1 -->|generic| agent_generic_plantuml:::agent_generic_plantuml
170
+ agent_describer:::agent_describer -->|generic| agent_generic_plantuml:::agent_generic_plantuml
171
+ agent_sequence_plantuml:::agent_sequence_plantuml --> evaluate_result:::evaluate_result
172
+ agent_generic_plantuml:::agent_generic_plantuml --> evaluate_result:::evaluate_result
173
+ evaluate_result:::evaluate_result --> __END__:::__END__
174
+
175
+ classDef ___START__ fill:black,stroke-width:1px,font-size:xx-small;
176
+ classDef ___END__ fill:black,stroke-width:1px,font-size:xx-small;
177
+ `
178
+ }
179
+
180
+ await delay ( 1000 ) ;
181
+
182
+ /** @typedef {CustomEvent<InitData> } */
183
+ const event = new CustomEvent ( 'init' , {
184
+ detail,
185
+ bubbles : true ,
186
+ composed : true ,
187
+ cancelable : true
188
+ } ) ;
189
+
190
+ elem . dispatchEvent ( event ) ;
191
+
192
+ // @ts -ignore
193
+ return detail
194
+ } ,
195
+
196
+
197
+ /**
198
+ * @param {HTMLElement } elem
199
+ * @param {string|undefined } selectedThread
200
+ */
201
+ callSubmitAction : async ( elem , selectedThread ) => {
202
+
203
+ const thread = selectedThread
204
+
205
+ const send = async ( /** @type {string } */ nodeId ) => {
206
+
207
+ /** @typedef {ResultData } */
208
+ const detail = [ thread , {
209
+ checkpoint : ( nodeId === 'start' || nodeId === 'stop' ) ? undefined : `checkpoint-${ nodeId } ` ,
210
+ node : nodeId ,
211
+ state : {
212
+ input : "this is input" ,
213
+ property1 : { value : "value1" , valid : true } ,
214
+ property2 : { value : "value2" , children : { elements : [ 1 , 2 , 3 ] } }
215
+ }
216
+ } ]
217
+
218
+ /** @typedef {CustomEvent<ResultData> } */
219
+ const event = new CustomEvent ( 'result' , {
220
+ detail,
221
+ bubbles : true ,
222
+ composed : true ,
223
+ cancelable : true
224
+ } ) ;
225
+
226
+ await delay ( 1000 ) ;
227
+ elem . dispatchEvent ( event ) ;
228
+ }
229
+
230
+ await send ( '__START__' ) ;
231
+ await send ( 'agent_describer' ) ;
232
+ await send ( 'agent_generic_plantuml' ) ;
233
+ await send ( '___START__' ) ;
234
+ await send ( '_evaluate_result' ) ;
235
+ await send ( '___END__' ) ;
236
+ await send ( '__END__' ) ;
237
+
238
+ }
239
+
240
+ }
0 commit comments