@@ -7508,7 +7508,101 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
75087508 if (type == 'ask') {
75097509 if (isEnter) {
75107510 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();
75127606 this.request(true, REQUEST_TYPE_POST, REQUEST_TYPE_JSON, 'https://api.devin.ai/ada/query', {
75137607 "engine_id": "multihop",
75147608 "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
75177611 "Tencent/APIJSON"
75187612 ],
75197613 "additional_context": "",
7520- "query_id": uuid,
7614+ "query_id": this. uuid,
75217615 "use_notes": false,
75227616 "generate_summary": false
75237617 }, {}, function (url, res, err) {
75247618 App.onResponse(url, res, err)
75257619 var data = res.data || {}
7526- var isOk = JSONResponse.isSuccess(data)
7620+ // var isOk = JSONResponse.isSuccess(data)
75277621
7528- var msg = isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
7622+ var msg = ''; // isOk ? '' : ('\nmsg: ' + StringUtil.get(data.msg))
75297623 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';
75337627 return
75347628 }
75357629
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();
75657631 })
75667632 }
75677633 return
@@ -8005,7 +8071,7 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
80058071 }
80068072 break;
80078073 case CodeUtil.LANGUAGE_C_SHARP:
8008- s += '\n#### <= Unity3D-C\#: 键值对用 {"key", value}' +
8074+ s += '\n#### <= Unity3D-C\\ #: 键值对用 {"key", value}' +
80098075 '\n ```csharp \n'
80108076 + CodeUtil.parseCSharpRequest(null, parseJSON(rq), 0)
80118077 + '\n ``` \n注:对象 {} 用 new JObject{{"key", value}},数组 [] 用 new JArray{value0, value1}\n';
@@ -13116,7 +13182,8 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
1311613182 // alert(event.key) 小写字母 i 而不是 KeyI
1311713183
1311813184 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) {
1312013187 return
1312113188 }
1312213189
0 commit comments