@@ -7508,7 +7508,101 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
7508
7508
if (type == 'ask') {
7509
7509
if (isEnter) {
7510
7510
const user_query = StringUtil.trim(vAskAI.value);
7511
- const uuid = crypto.randomUUID();
7511
+ function onMessage(item) {
7512
+ var data2 = item == null ? null : item.data
7513
+ if (data2 == null || item.type != 'chunk') {
7514
+ return;
7515
+ }
7516
+
7517
+ var answer = StringUtil.trim(typeof data2 == 'string' ? data2 : (data instanceof Array ? data2.join() : JSON.stringify(data2)));
7518
+ App.view = 'markdown';
7519
+ vOutput.value += answer;
7520
+ markdownToHTML(vOutput.value)
7521
+ }
7522
+
7523
+ function queryResult() {
7524
+ App.request(true, REQUEST_TYPE_GET, REQUEST_TYPE_PARAM, 'https://api.devin.ai/ada/query/' + App.uuid, {}, {}, function (url, res, err) {
7525
+ // App.onResponse(url, res, err)
7526
+ var data = res.data || {}
7527
+ // var isOk = JSONResponse.isSuccess(data)
7528
+
7529
+ var msg = ''; // isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
7530
+ if (err != null) {
7531
+ msg += '\nerr: ' + err.message
7532
+ vOutput.value = err.message
7533
+ App.view = 'error';
7534
+ return
7535
+ }
7536
+
7537
+ var queries = data.queries || []
7538
+ var last = queries[queries.length - 1] || {}
7539
+ var query = last.user_query || user_query
7540
+ var response = last.response || []
7541
+ var answer = '#### ' + query + '\n<br/>';
7542
+ for (var i = 0; i < response.length; i ++) {
7543
+ // onMessage(response[i])
7544
+ var item = response[i];
7545
+ var data2 = item == null ? null : item.data;
7546
+ if (data2 == null || item.type != 'chunk') {
7547
+ continue;
7548
+ }
7549
+
7550
+ answer += '\n' + StringUtil.trim(typeof data2 == 'string' ? data2 : (data2 instanceof Array ? data2.join() : JSON.stringify(data2)));
7551
+ }
7552
+
7553
+ App.view = 'markdown';
7554
+ vOutput.value = answer;
7555
+ markdownToHTML(answer); // vOutput.value)
7556
+ })
7557
+ }
7558
+
7559
+ function askAI() {
7560
+ vOutput.value = '#### ' + user_query + '\n<br/>';
7561
+ App.loadingCount ++;
7562
+ const ws = new WebSocket('wss://api.devin.ai/ada/ws/query/' + App.uuid);
7563
+
7564
+ // 连接成功
7565
+ ws.onopen = () => {
7566
+ console.log('WebSocket connected');
7567
+ // 这里通常不需要主动发送内容,除非协议需要
7568
+ };
7569
+
7570
+ // 收到消息
7571
+ ws.onmessage = (event) => {
7572
+ try {
7573
+ const data = JSON.parse(event.data);
7574
+ console.log('Message:', data);
7575
+ onMessage(data)
7576
+
7577
+ if (data.type === 'chunk') {
7578
+ console.log('Chunk Data:', data.data);
7579
+ }
7580
+ } catch (err) {
7581
+ console.error('Failed to parse message:', event.data);
7582
+ }
7583
+ };
7584
+
7585
+ // 连接关闭
7586
+ ws.onclose = () => {
7587
+ console.log('WebSocket closed');
7588
+ App.loadingCount --;
7589
+ queryResult();
7590
+ };
7591
+
7592
+ // 错误处理
7593
+ ws.onerror = (err) => {
7594
+ console.error('WebSocket error:', err);
7595
+ queryResult();
7596
+ };
7597
+
7598
+ }
7599
+
7600
+ if (StringUtil.isNotEmpty(this.uuid, true)) {
7601
+ askAI();
7602
+ return;
7603
+ }
7604
+
7605
+ this.uuid = crypto.randomUUID();
7512
7606
this.request(true, REQUEST_TYPE_POST, REQUEST_TYPE_JSON, 'https://api.devin.ai/ada/query', {
7513
7607
"engine_id": "multihop",
7514
7608
"user_query": "<relevant_context>This query was sent from the wiki page: Overview.</relevant_context>" + user_query,
@@ -7517,51 +7611,23 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
7517
7611
"Tencent/APIJSON"
7518
7612
],
7519
7613
"additional_context": "",
7520
- "query_id": uuid,
7614
+ "query_id": this. uuid,
7521
7615
"use_notes": false,
7522
7616
"generate_summary": false
7523
7617
}, {}, function (url, res, err) {
7524
7618
App.onResponse(url, res, err)
7525
7619
var data = res.data || {}
7526
- var isOk = JSONResponse.isSuccess(data)
7620
+ // var isOk = JSONResponse.isSuccess(data)
7527
7621
7528
- var msg = isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
7622
+ var msg = ''; // isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
7529
7623
if (err != null) {
7530
- msg += '\nerr: ' + err.msg
7531
- vOutput.value = err.msg
7532
- this .view = 'error';
7624
+ msg += '\nerr: ' + err.message
7625
+ vOutput.value = err.message
7626
+ App .view = 'error';
7533
7627
return
7534
7628
}
7535
7629
7536
- App.request(true, REQUEST_TYPE_GET, REQUEST_TYPE_PARAM, 'https://api.devin.ai/ada/query/' + uuid, {}, {}, function (url, res, err) {
7537
- App.onResponse(url, res, err)
7538
- var data = res.data || {}
7539
- var isOk = JSONResponse.isSuccess(data)
7540
-
7541
- var msg = isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
7542
- if (err != null) {
7543
- msg += '\nerr: ' + err.msg
7544
- vOutput.value = err.msg
7545
- this.view = 'error';
7546
- return
7547
- }
7548
-
7549
- var queries = data.queries || []
7550
- var last = queries[queries.length - 1]
7551
- var query = last.user_query || user_query
7552
- var response = last.response || []
7553
- var answer = '### Ask\n' + query + '\n### Answer\n';
7554
- for (var i = 0; i < response.length; i ++) {
7555
- var item = response[i] || {};
7556
- if (item.type != 'file_contents') {
7557
- continue;
7558
- }
7559
- answer += '\n' + StringUtil.trim(typeof data == 'string' ? data : (data instanceof Array ? data.join() : JSON.stringify(data)));
7560
- }
7561
-
7562
- vOutput.value += answer;
7563
- App.view = 'markdown';
7564
- })
7630
+ askAI();
7565
7631
})
7566
7632
}
7567
7633
return
@@ -8005,7 +8071,7 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
8005
8071
}
8006
8072
break;
8007
8073
case CodeUtil.LANGUAGE_C_SHARP:
8008
- s += '\n#### <= Unity3D-C\#: 键值对用 {"key", value}' +
8074
+ s += '\n#### <= Unity3D-C\\ #: 键值对用 {"key", value}' +
8009
8075
'\n ```csharp \n'
8010
8076
+ CodeUtil.parseCSharpRequest(null, parseJSON(rq), 0)
8011
8077
+ '\n ``` \n注:对象 {} 用 new JObject{{"key", value}},数组 [] 用 new JArray{value0, value1}\n';
@@ -13116,7 +13182,8 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
13116
13182
// alert(event.key) 小写字母 i 而不是 KeyI
13117
13183
13118
13184
var target = event.target;
13119
- if (target == vSearch || target == vTestCaseSearch || target == vCaseGroupSearch || target == vChainGroupSearch || target == vChainGroupAdd || target == vChainAdd) {
13185
+ if (target == vAskAI || target == vSearch || target == vTestCaseSearch || target == vCaseGroupSearch
13186
+ || target == vChainGroupSearch || target == vChainGroupAdd || target == vChainAdd) {
13120
13187
return
13121
13188
}
13122
13189
0 commit comments