@vibe-forge/client 0.8.4 → 0.9.0
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/assets/{arc-DCuZPvAs.js → arc-D9HxM0yv.js} +1 -1
- package/dist/assets/{blockDiagram-c4efeb88-C39d7-Bu.js → blockDiagram-c4efeb88-C_pTeiD4.js} +1 -1
- package/dist/assets/{c4Diagram-c83219d4-jWPBJdeq.js → c4Diagram-c83219d4-_oYrCrLr.js} +1 -1
- package/dist/assets/channel-Di8KkPU4.js +1 -0
- package/dist/assets/{classDiagram-beda092f-Bo7Yvv2T.js → classDiagram-beda092f-9dnkgPhR.js} +1 -1
- package/dist/assets/{classDiagram-v2-2358418a-DfoCP9XM.js → classDiagram-v2-2358418a-BUIeZpdO.js} +1 -1
- package/dist/assets/clone-B065n6L-.js +1 -0
- package/dist/assets/{createText-1719965b-8_Ez5rxh.js → createText-1719965b-DuRFplcD.js} +1 -1
- package/dist/assets/{edges-96097737-BEegO-R-.js → edges-96097737-CTpq6Ih_.js} +1 -1
- package/dist/assets/{erDiagram-0228fc6a-derRgkLz.js → erDiagram-0228fc6a-CWFgdO1E.js} +1 -1
- package/dist/assets/{flowDb-c6c81e3f-ChtOxgsJ.js → flowDb-c6c81e3f-8Vdx29oZ.js} +1 -1
- package/dist/assets/{flowDiagram-50d868cf-Bm4ufmmA.js → flowDiagram-50d868cf-6S9wOVNl.js} +1 -1
- package/dist/assets/flowDiagram-v2-4f6560a1-nj-oVLPK.js +1 -0
- package/dist/assets/{flowchart-elk-definition-6af322e1-BRYLO-BL.js → flowchart-elk-definition-6af322e1-DVcZ-ZBQ.js} +1 -1
- package/dist/assets/{ganttDiagram-a2739b55-CbP6dzRO.js → ganttDiagram-a2739b55-DY1QSl-x.js} +1 -1
- package/dist/assets/{gitGraphDiagram-82fe8481-Du44v02s.js → gitGraphDiagram-82fe8481-BP08OBKL.js} +1 -1
- package/dist/assets/{graph-0_VzJX6O.js → graph-D8GCszcN.js} +1 -1
- package/dist/assets/{index-5325376f-DLP7F7of.js → index-5325376f-OOoAXU1u.js} +1 -1
- package/dist/assets/{index-sE8VA1N7.css → index-BZe1Qtye.css} +1 -1
- package/dist/assets/{index-C1O04Df8.js → index-DV3eI2aD.js} +60 -60
- package/dist/assets/{infoDiagram-8eee0895-DY19rRl6.js → infoDiagram-8eee0895-BHgkXjhJ.js} +1 -1
- package/dist/assets/{journeyDiagram-c64418c1-4Asnwc86.js → journeyDiagram-c64418c1-BljInElp.js} +1 -1
- package/dist/assets/{layout-BILp7GjD.js → layout-Cw-SwAFD.js} +1 -1
- package/dist/assets/{line-D0Xqr8mi.js → line-Q-uZLuUr.js} +1 -1
- package/dist/assets/{linear-LpL8RZsq.js → linear-BahOnNn3.js} +1 -1
- package/dist/assets/{mermaid.core-Bk0Y_0sz.js → mermaid.core-BR0Qh3Rd.js} +4 -4
- package/dist/assets/{mindmap-definition-8da855dc-eCAgn5kY.js → mindmap-definition-8da855dc-Brq2OJUZ.js} +1 -1
- package/dist/assets/{pieDiagram-a8764435-BeGFFS1p.js → pieDiagram-a8764435-uhYdiXro.js} +1 -1
- package/dist/assets/{quadrantDiagram-1e28029f-tLqbYOHC.js → quadrantDiagram-1e28029f-TwqtEe7e.js} +1 -1
- package/dist/assets/{requirementDiagram-08caed73-DCverr_g.js → requirementDiagram-08caed73-DSXnPRDS.js} +1 -1
- package/dist/assets/{sankeyDiagram-a04cb91d-DidhF5PL.js → sankeyDiagram-a04cb91d-EADpJeAn.js} +1 -1
- package/dist/assets/{sequenceDiagram-c5b8d532-CEKaiwTo.js → sequenceDiagram-c5b8d532-C8qXvt9z.js} +1 -1
- package/dist/assets/{stateDiagram-1ecb1508-Cj9ZY7RH.js → stateDiagram-1ecb1508-5W0ghy_S.js} +1 -1
- package/dist/assets/{stateDiagram-v2-c2b004d7-Gsmps-dk.js → stateDiagram-v2-c2b004d7-BfwOQJw4.js} +1 -1
- package/dist/assets/{styles-b4e223ce-D7E8Th0j.js → styles-b4e223ce-EkKH_ULb.js} +1 -1
- package/dist/assets/{styles-ca3715f6-tTC26Jsm.js → styles-ca3715f6-DwhrtqlU.js} +1 -1
- package/dist/assets/{styles-d45a18b0-Bf6oqNdR.js → styles-d45a18b0-yqL8KH6x.js} +1 -1
- package/dist/assets/{svgDrawCommon-b86b1483-BxKi01m2.js → svgDrawCommon-b86b1483--5VjnjhC.js} +1 -1
- package/dist/assets/{timeline-definition-faaaa080-D6PePEip.js → timeline-definition-faaaa080-CWOTwik9.js} +1 -1
- package/dist/assets/{xychartDiagram-f5964ef8-BuP4qfXm.js → xychartDiagram-f5964ef8-CZg47H1t.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +10 -10
- package/src/components/chat/sender/Sender.scss +134 -0
- package/src/components/chat/sender/Sender.tsx +75 -33
- package/src/components/chat/sender/interaction-request.ts +5 -0
- package/src/hooks/chat/interaction-state.ts +37 -0
- package/src/hooks/chat/use-chat-session-messages.ts +11 -4
- package/src/resources/locales/en.json +11 -0
- package/src/resources/locales/zh.json +11 -0
- package/dist/assets/channel-bLjHfx-Q.js +0 -1
- package/dist/assets/clone-upfY39Je.js +0 -1
- package/dist/assets/flowDiagram-v2-4f6560a1-F66FzZTY.js +0 -1
package/dist/assets/{xychartDiagram-f5964ef8-BuP4qfXm.js → xychartDiagram-f5964ef8-CZg47H1t.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as zt,a as Ft,v as wt,x as Nt,b as Xt,c as Yt,l as St,aH as Ht,e as $t,z as Ut,ap as ot,aJ as Ct,aL as qt,aY as jt,i as Gt}from"./mermaid.core-
|
|
1
|
+
import{s as zt,a as Ft,v as wt,x as Nt,b as Xt,c as Yt,l as St,aH as Ht,e as $t,z as Ut,ap as ot,aJ as Ct,aL as qt,aY as jt,i as Gt}from"./mermaid.core-BR0Qh3Rd.js";import{a as Qt}from"./createText-1719965b-DuRFplcD.js";import"./index-DV3eI2aD.js";import{i as Kt}from"./init-Gi6I4Gst.js";import{o as Jt}from"./ordinal-Cboi1Yqb.js";import{l as ft}from"./linear-BahOnNn3.js";import{l as pt}from"./line-Q-uZLuUr.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";function Zt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s<n;)o[s]=e+s*i;return o}function st(){var e=Jt().unknown(void 0),t=e.domain,i=e.range,s=0,n=1,o,c,f=!1,d=0,R=0,_=.5;delete e.unknown;function A(){var m=t().length,T=n<s,S=T?n:s,P=T?s:n;o=(P-S)/Math.max(1,m-d+R*2),f&&(o=Math.floor(o)),S+=(P-S-o*(m-d))*_,c=o*(1-d),f&&(S=Math.round(S),c=Math.round(c));var p=Zt(m).map(function(C){return S+o*C});return i(T?p.reverse():p)}return e.domain=function(m){return arguments.length?(t(m),A()):t()},e.range=function(m){return arguments.length?([s,n]=m,s=+s,n=+n,A()):[s,n]},e.rangeRound=function(m){return[s,n]=m,s=+s,n=+n,f=!0,A()},e.bandwidth=function(){return c},e.step=function(){return o},e.round=function(m){return arguments.length?(f=!!m,A()):f},e.padding=function(m){return arguments.length?(d=Math.min(1,R=+m),A()):d},e.paddingInner=function(m){return arguments.length?(d=Math.min(1,m),A()):d},e.paddingOuter=function(m){return arguments.length?(R=+m,A()):R},e.align=function(m){return arguments.length?(_=Math.max(0,Math.min(1,m)),A()):_},e.copy=function(){return st(t(),[s,n]).round(f).paddingInner(d).paddingOuter(R).align(_)},Kt.apply(A(),arguments)}var nt=function(){var e=function(V,r,l,u){for(l=l||{},u=V.length;u--;l[V[u]]=r);return l},t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],n=[1,5],o=[1,6],c=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],d=[1,25],R=[1,26],_=[1,28],A=[1,29],m=[1,30],T=[1,31],S=[1,32],P=[1,33],p=[1,34],C=[1,35],h=[1,36],L=[1,37],z=[1,43],lt=[1,42],ct=[1,47],$=[1,50],w=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],v=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],ut=[1,64],K={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(r,l,u,g,b,a,F){var x=a.length-1;switch(b){case 5:g.setOrientation(a[x]);break;case 9:g.setDiagramTitle(a[x].text.trim());break;case 12:g.setLineData({text:"",type:"text"},a[x]);break;case 13:g.setLineData(a[x-1],a[x]);break;case 14:g.setBarData({text:"",type:"text"},a[x]);break;case 15:g.setBarData(a[x-1],a[x]);break;case 16:this.$=a[x].trim(),g.setAccTitle(this.$);break;case 17:case 18:this.$=a[x].trim(),g.setAccDescription(this.$);break;case 19:this.$=a[x-1];break;case 20:this.$=[Number(a[x-2]),...a[x]];break;case 21:this.$=[Number(a[x])];break;case 22:g.setXAxisTitle(a[x]);break;case 23:g.setXAxisTitle(a[x-1]);break;case 24:g.setXAxisTitle({type:"text",text:""});break;case 25:g.setXAxisBand(a[x]);break;case 26:g.setXAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 27:this.$=a[x-1];break;case 28:this.$=[a[x-2],...a[x]];break;case 29:this.$=[a[x]];break;case 30:g.setYAxisTitle(a[x]);break;case 31:g.setYAxisTitle(a[x-1]);break;case 32:g.setYAxisTitle({type:"text",text:""});break;case 33:g.setYAxisRangeData(Number(a[x-2]),Number(a[x]));break;case 37:this.$={text:a[x],type:"text"};break;case 38:this.$={text:a[x],type:"text"};break;case 39:this.$={text:a[x],type:"markdown"};break;case 40:this.$=a[x];break;case 41:this.$=a[x-1]+""+a[x];break}},table:[e(t,i,{3:1,4:2,7:4,5:s,34:n,35:o,36:c}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:n,35:o,36:c}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:o,36:c}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:n,35:o,36:c}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:n,35:o,36:c}),{11:23,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:39,13:38,24:z,27:lt,29:40,30:41,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:45,15:44,27:ct,33:46,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:49,17:48,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{11:52,17:51,24:$,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},{20:[1,53]},{22:[1,54]},e(w,[2,18]),{1:[2,2]},e(w,[2,8]),e(w,[2,9]),e(Q,[2,37],{40:55,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L}),e(Q,[2,38]),e(Q,[2,39]),e(v,[2,40]),e(v,[2,42]),e(v,[2,43]),e(v,[2,44]),e(v,[2,45]),e(v,[2,46]),e(v,[2,47]),e(v,[2,48]),e(v,[2,49]),e(v,[2,50]),e(v,[2,51]),e(w,[2,10]),e(w,[2,22],{30:41,29:56,24:z,27:lt}),e(w,[2,24]),e(w,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,11]),e(w,[2,30],{33:60,27:ct}),e(w,[2,32]),{31:[1,61]},e(w,[2,12]),{17:62,24:$},{25:63,27:ut},e(w,[2,14]),{17:65,24:$},e(w,[2,16]),e(w,[2,17]),e(v,[2,41]),e(w,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(w,[2,31]),{27:[1,69]},e(w,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(w,[2,15]),e(w,[2,26]),e(w,[2,27]),{11:59,32:72,37:24,38:d,39:R,40:27,41:_,42:A,43:m,44:T,45:S,46:P,47:p,48:C,49:h,50:L},e(w,[2,33]),e(w,[2,19]),{25:73,27:ut},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(r,l){if(l.recoverable)this.trace(r);else{var u=new Error(r);throw u.hash=l,u}},parse:function(r){var l=this,u=[0],g=[],b=[null],a=[],F=this.table,x="",U=0,gt=0,Vt=2,xt=1,Bt=a.slice.call(arguments,1),k=Object.create(this.lexer),B={yy:{}};for(var Z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Z)&&(B.yy[Z]=this.yy[Z]);k.setInput(r,B.yy),B.yy.lexer=k,B.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`:
|
|
2
2
|
`+k.showPosition()+`
|
|
3
3
|
Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":et="Parse error on line "+(U+1)+": Unexpected "+(D==xt?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(et,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:tt,expected:j})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+D);switch(E[0]){case 1:u.push(D),b.push(k.yytext),a.push(k.yylloc),u.push(E[1]),D=null,gt=k.yyleng,x=k.yytext,U=k.yylineno,tt=k.yylloc;break;case 2:if(M=this.productions_[E[1]][1],O.$=b[b.length-M],O._$={first_line:a[a.length-(M||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(M||1)].first_column,last_column:a[a.length-1].last_column},Wt&&(O._$.range=[a[a.length-(M||1)].range[0],a[a.length-1].range[1]]),it=this.performAction.apply(O,[x,gt,U,B.yy,E[1],b,a].concat(Bt)),typeof it<"u")return it;M&&(u=u.slice(0,-1*M*2),b=b.slice(0,-1*M),a=a.slice(0,-1*M)),u.push(this.productions_[E[1]][0]),b.push(O.$),a.push(O._$),dt=F[u[u.length-2]][u[u.length-1]],u.push(dt);break;case 3:return!0}}return!0}},It=function(){var V={EOF:1,parseError:function(l,u){if(this.yy.parser)this.yy.parser.parseError(l,u);else throw new Error(l)},setInput:function(r,l){return this.yy=l||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var l=r.length,u=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===g.length?this.yylloc.first_column:0)+g[g.length-u.length].length-u[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
package/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" href="./favicon.svg" type="image/svg+xml" />
|
|
7
7
|
<title>Vibe Forge Web</title>
|
|
8
|
-
<script type="module" crossorigin src="/__VF_PROJECT_AI_CLIENT_BASE__/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/__VF_PROJECT_AI_CLIENT_BASE__/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/__VF_PROJECT_AI_CLIENT_BASE__/assets/index-DV3eI2aD.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/__VF_PROJECT_AI_CLIENT_BASE__/assets/index-BZe1Qtye.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-forge/client",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.0",
|
|
5
5
|
"imports": {
|
|
6
6
|
"#~/*": [
|
|
7
7
|
"./src/*",
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
"swr": "^2.2.5",
|
|
37
37
|
"vite": "^5.4.8",
|
|
38
38
|
"zod": "^3.24.1",
|
|
39
|
-
"@vibe-forge/
|
|
40
|
-
"@vibe-forge/
|
|
41
|
-
"@vibe-forge/adapter-
|
|
42
|
-
"@vibe-forge/
|
|
43
|
-
"@vibe-forge/
|
|
44
|
-
"@vibe-forge/plugin-chrome-devtools": "^0.
|
|
45
|
-
"@vibe-forge/
|
|
46
|
-
"@vibe-forge/
|
|
47
|
-
"@vibe-forge/
|
|
39
|
+
"@vibe-forge/channel-lark": "^0.9.0",
|
|
40
|
+
"@vibe-forge/core": "^0.9.0",
|
|
41
|
+
"@vibe-forge/adapter-claude-code": "^0.9.0",
|
|
42
|
+
"@vibe-forge/adapter-codex": "^0.9.0",
|
|
43
|
+
"@vibe-forge/adapter-opencode": "^0.9.0",
|
|
44
|
+
"@vibe-forge/plugin-chrome-devtools": "^0.9.0",
|
|
45
|
+
"@vibe-forge/types": "^0.9.0",
|
|
46
|
+
"@vibe-forge/utils": "^0.9.0",
|
|
47
|
+
"@vibe-forge/register": "^0.9.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/react": "^18.3.12",
|
|
@@ -4,6 +4,140 @@
|
|
|
4
4
|
background-color: var(--bg-color);
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
.chat-input-wrapper--permission {
|
|
8
|
+
.interaction-panel {
|
|
9
|
+
max-height: none;
|
|
10
|
+
overflow-y: visible;
|
|
11
|
+
margin-bottom: 0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.interaction-panel {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
max-height: 260px;
|
|
19
|
+
overflow-y: auto;
|
|
20
|
+
margin-bottom: 10px;
|
|
21
|
+
gap: 10px;
|
|
22
|
+
padding: 10px;
|
|
23
|
+
border: 1px solid rgba(217, 119, 6, .18);
|
|
24
|
+
border-radius: 12px;
|
|
25
|
+
background:
|
|
26
|
+
linear-gradient(180deg, rgba(255, 251, 235, .9), rgba(255, 255, 255, .96));
|
|
27
|
+
|
|
28
|
+
&__badge {
|
|
29
|
+
display: inline-flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
gap: 6px;
|
|
32
|
+
align-self: flex-start;
|
|
33
|
+
padding: 4px 10px;
|
|
34
|
+
border-radius: 999px;
|
|
35
|
+
background: rgba(245, 158, 11, .12);
|
|
36
|
+
color: #b45309;
|
|
37
|
+
font-size: 12px;
|
|
38
|
+
font-weight: 600;
|
|
39
|
+
|
|
40
|
+
.material-symbols-rounded {
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&__context {
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
gap: 8px;
|
|
49
|
+
padding: 10px;
|
|
50
|
+
border-radius: 10px;
|
|
51
|
+
background: rgba(255, 255, 255, .72);
|
|
52
|
+
border: 1px solid rgba(217, 119, 6, .12);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&__meta {
|
|
56
|
+
display: grid;
|
|
57
|
+
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
|
58
|
+
gap: 8px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&__meta-item {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
gap: 4px;
|
|
65
|
+
|
|
66
|
+
code {
|
|
67
|
+
width: fit-content;
|
|
68
|
+
max-width: 100%;
|
|
69
|
+
padding: 2px 8px;
|
|
70
|
+
border-radius: 999px;
|
|
71
|
+
background: rgba(15, 23, 42, .06);
|
|
72
|
+
color: var(--text-color);
|
|
73
|
+
font-size: 12px;
|
|
74
|
+
overflow-wrap: anywhere;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
&__meta-label,
|
|
79
|
+
&__section-title {
|
|
80
|
+
color: var(--sub-text-color, #6b7280);
|
|
81
|
+
font-size: 12px;
|
|
82
|
+
font-weight: 600;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&__section {
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: 6px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&__chips {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-wrap: wrap;
|
|
94
|
+
gap: 6px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&__chip {
|
|
98
|
+
padding: 3px 8px;
|
|
99
|
+
border-radius: 999px;
|
|
100
|
+
background: rgba(191, 219, 254, .45);
|
|
101
|
+
color: #1d4ed8;
|
|
102
|
+
font-size: 12px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
&__reasons {
|
|
106
|
+
display: flex;
|
|
107
|
+
flex-direction: column;
|
|
108
|
+
gap: 4px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&__reason {
|
|
112
|
+
color: var(--text-color);
|
|
113
|
+
font-size: 12px;
|
|
114
|
+
line-height: 1.5;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
&__option.ant-btn {
|
|
118
|
+
height: auto;
|
|
119
|
+
text-align: left;
|
|
120
|
+
display: block;
|
|
121
|
+
padding: 8px 12px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&__option-label {
|
|
125
|
+
font-weight: 500;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
&__option-description {
|
|
129
|
+
margin-top: 4px;
|
|
130
|
+
color: var(--placeholder-color, #9ca3af);
|
|
131
|
+
font-size: 12px;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.interaction-question {
|
|
136
|
+
font-weight: 700;
|
|
137
|
+
color: var(--text-color);
|
|
138
|
+
line-height: 1.5;
|
|
139
|
+
}
|
|
140
|
+
|
|
7
141
|
.chat-input-container {
|
|
8
142
|
position: relative;
|
|
9
143
|
display: flex;
|
|
@@ -13,6 +13,7 @@ import type { SessionInfo } from '@vibe-forge/types'
|
|
|
13
13
|
import { isShortcutMatch } from '../../../utils/shortcutUtils'
|
|
14
14
|
import type { CompletionItem } from './CompletionMenu'
|
|
15
15
|
import { CompletionMenu } from './CompletionMenu'
|
|
16
|
+
import { shouldHideSenderForInteraction } from './interaction-request'
|
|
16
17
|
import { ThinkingStatus } from './ThinkingStatus'
|
|
17
18
|
|
|
18
19
|
const { TextArea } = Input
|
|
@@ -590,38 +591,75 @@ export function Sender({
|
|
|
590
591
|
}
|
|
591
592
|
}
|
|
592
593
|
|
|
594
|
+
const permissionContext = interactionRequest?.payload.kind === 'permission'
|
|
595
|
+
? interactionRequest.payload.permissionContext
|
|
596
|
+
: undefined
|
|
597
|
+
const hideSender = shouldHideSenderForInteraction(interactionRequest)
|
|
598
|
+
const deniedTools = permissionContext?.deniedTools?.filter(tool => tool.trim() !== '') ?? []
|
|
599
|
+
const reasons = permissionContext?.reasons?.filter(reason => reason.trim() !== '') ?? []
|
|
600
|
+
|
|
593
601
|
return (
|
|
594
|
-
<div className='chat-input-wrapper'>
|
|
602
|
+
<div className={`chat-input-wrapper ${hideSender ? 'chat-input-wrapper--permission' : ''}`.trim()}>
|
|
595
603
|
{isThinking && <ThinkingStatus />}
|
|
596
604
|
{interactionRequest != null && (
|
|
597
|
-
<div
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
gap: '8px',
|
|
606
|
-
padding: '8px',
|
|
607
|
-
border: '1px solid var(--border-color)',
|
|
608
|
-
borderRadius: '8px',
|
|
609
|
-
backgroundColor: 'var(--bg-color)'
|
|
610
|
-
}}
|
|
611
|
-
>
|
|
612
|
-
<div className='interaction-question' style={{ fontWeight: 'bold' }}>
|
|
605
|
+
<div className='interaction-panel'>
|
|
606
|
+
{permissionContext != null && (
|
|
607
|
+
<div className='interaction-panel__badge'>
|
|
608
|
+
<span className='material-symbols-rounded'>lock</span>
|
|
609
|
+
<span>{t('chat.permissionRequestBadge')}</span>
|
|
610
|
+
</div>
|
|
611
|
+
)}
|
|
612
|
+
<div className='interaction-question'>
|
|
613
613
|
{interactionRequest.payload.question}
|
|
614
614
|
</div>
|
|
615
|
+
{permissionContext != null && (
|
|
616
|
+
<div className='interaction-panel__context'>
|
|
617
|
+
<div className='interaction-panel__meta'>
|
|
618
|
+
{permissionContext.currentMode != null && permissionContext.currentMode !== '' && (
|
|
619
|
+
<div className='interaction-panel__meta-item'>
|
|
620
|
+
<span className='interaction-panel__meta-label'>{t('chat.permissionCurrentMode')}</span>
|
|
621
|
+
<code>{permissionContext.currentMode}</code>
|
|
622
|
+
</div>
|
|
623
|
+
)}
|
|
624
|
+
{permissionContext.suggestedMode != null && permissionContext.suggestedMode !== '' && (
|
|
625
|
+
<div className='interaction-panel__meta-item'>
|
|
626
|
+
<span className='interaction-panel__meta-label'>{t('chat.permissionSuggestedMode')}</span>
|
|
627
|
+
<code>{permissionContext.suggestedMode}</code>
|
|
628
|
+
</div>
|
|
629
|
+
)}
|
|
630
|
+
</div>
|
|
631
|
+
{deniedTools.length > 0 && (
|
|
632
|
+
<div className='interaction-panel__section'>
|
|
633
|
+
<div className='interaction-panel__section-title'>{t('chat.permissionDeniedTools')}</div>
|
|
634
|
+
<div className='interaction-panel__chips'>
|
|
635
|
+
{deniedTools.map(tool => (
|
|
636
|
+
<code key={tool} className='interaction-panel__chip'>{tool}</code>
|
|
637
|
+
))}
|
|
638
|
+
</div>
|
|
639
|
+
</div>
|
|
640
|
+
)}
|
|
641
|
+
{reasons.length > 0 && (
|
|
642
|
+
<div className='interaction-panel__section'>
|
|
643
|
+
<div className='interaction-panel__section-title'>{t('chat.permissionReasons')}</div>
|
|
644
|
+
<div className='interaction-panel__reasons'>
|
|
645
|
+
{reasons.map(reason => (
|
|
646
|
+
<div key={reason} className='interaction-panel__reason'>{reason}</div>
|
|
647
|
+
))}
|
|
648
|
+
</div>
|
|
649
|
+
</div>
|
|
650
|
+
)}
|
|
651
|
+
</div>
|
|
652
|
+
)}
|
|
615
653
|
{interactionRequest.payload.options?.map((option: NonNullable<AskUserQuestionParams['options']>[number]) => (
|
|
616
654
|
<Button
|
|
617
|
-
key={option.label}
|
|
655
|
+
key={option.value ?? option.label}
|
|
618
656
|
block
|
|
619
|
-
|
|
620
|
-
onClick={() => onInteractionResponse?.(interactionRequest.id, option.label)}
|
|
657
|
+
className='interaction-panel__option'
|
|
658
|
+
onClick={() => onInteractionResponse?.(interactionRequest.id, option.value ?? option.label)}
|
|
621
659
|
>
|
|
622
|
-
<div
|
|
660
|
+
<div className='interaction-panel__option-label'>{option.label}</div>
|
|
623
661
|
{option.description && (
|
|
624
|
-
<div
|
|
662
|
+
<div className='interaction-panel__option-description'>
|
|
625
663
|
{option.description}
|
|
626
664
|
</div>
|
|
627
665
|
)}
|
|
@@ -629,7 +667,8 @@ export function Sender({
|
|
|
629
667
|
))}
|
|
630
668
|
</div>
|
|
631
669
|
)}
|
|
632
|
-
|
|
670
|
+
{!hideSender && (
|
|
671
|
+
<div className='chat-input-container'>
|
|
633
672
|
{connectionError && connectionError.trim() !== '' && (
|
|
634
673
|
<div className='connection-error-banner'>
|
|
635
674
|
<div className='connection-error-content'>
|
|
@@ -692,28 +731,28 @@ export function Sender({
|
|
|
692
731
|
className='file-input-hidden'
|
|
693
732
|
/>
|
|
694
733
|
<div className='toolbar-left'>
|
|
695
|
-
<Tooltip title='
|
|
734
|
+
<Tooltip title={t('chat.tooltipSlashCommands')}>
|
|
696
735
|
<span>
|
|
697
736
|
<div className='toolbar-btn' onClick={() => handleTriggerClick('/')}>
|
|
698
737
|
<span className='material-symbols-rounded'>terminal</span>
|
|
699
738
|
</div>
|
|
700
739
|
</span>
|
|
701
740
|
</Tooltip>
|
|
702
|
-
<Tooltip title='
|
|
741
|
+
<Tooltip title={t('chat.tooltipMentionAgents')}>
|
|
703
742
|
<span>
|
|
704
743
|
<div className='toolbar-btn' onClick={() => handleTriggerClick('@')}>
|
|
705
744
|
<span className='material-symbols-rounded'>smart_toy</span>
|
|
706
745
|
</div>
|
|
707
746
|
</span>
|
|
708
747
|
</Tooltip>
|
|
709
|
-
<Tooltip title='
|
|
748
|
+
<Tooltip title={t('chat.tooltipInjectContext')}>
|
|
710
749
|
<span>
|
|
711
750
|
<div className='toolbar-btn' onClick={() => handleTriggerClick('#')}>
|
|
712
751
|
<span className='material-symbols-rounded'>description</span>
|
|
713
752
|
</div>
|
|
714
753
|
</span>
|
|
715
754
|
</Tooltip>
|
|
716
|
-
<Tooltip title='
|
|
755
|
+
<Tooltip title={t('chat.tooltipUploadImages')}>
|
|
717
756
|
<span>
|
|
718
757
|
<div className='toolbar-btn' onClick={handleImageUpload}>
|
|
719
758
|
<span className='material-symbols-rounded'>image</span>
|
|
@@ -850,7 +889,7 @@ export function Sender({
|
|
|
850
889
|
allowClear={false}
|
|
851
890
|
disabled={modelUnavailable || isThinking}
|
|
852
891
|
onChange={(value) => onEffortChange(value)}
|
|
853
|
-
placeholder='
|
|
892
|
+
placeholder={t('chat.effortSelectPlaceholder')}
|
|
854
893
|
optionLabelProp='label'
|
|
855
894
|
popupMatchSelectWidth={false}
|
|
856
895
|
/>
|
|
@@ -865,7 +904,7 @@ export function Sender({
|
|
|
865
904
|
allowClear={false}
|
|
866
905
|
disabled={modelUnavailable || isThinking}
|
|
867
906
|
onChange={(value) => onPermissionModeChange(value)}
|
|
868
|
-
placeholder='
|
|
907
|
+
placeholder={t('chat.permissionModeSelectPlaceholder')}
|
|
869
908
|
optionLabelProp='label'
|
|
870
909
|
popupMatchSelectWidth={false}
|
|
871
910
|
/>
|
|
@@ -882,10 +921,13 @@ export function Sender({
|
|
|
882
921
|
</div>
|
|
883
922
|
</div>
|
|
884
923
|
</div>
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
924
|
+
</div>
|
|
925
|
+
)}
|
|
926
|
+
{!hideSender && (
|
|
927
|
+
<div className='chat-input-hint'>
|
|
928
|
+
{t('chat.hint')}
|
|
929
|
+
</div>
|
|
930
|
+
)}
|
|
889
931
|
</div>
|
|
890
932
|
)
|
|
891
933
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { AskUserQuestionParams, Session, WSEvent } from '@vibe-forge/core'
|
|
2
|
+
|
|
3
|
+
export interface InteractionRequestState {
|
|
4
|
+
id: string
|
|
5
|
+
payload: AskUserQuestionParams
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const applyInteractionStateEvent = (
|
|
9
|
+
currentInteraction: InteractionRequestState | null,
|
|
10
|
+
data: WSEvent
|
|
11
|
+
) => {
|
|
12
|
+
if (data.type === 'interaction_request') {
|
|
13
|
+
return { id: data.id, payload: data.payload }
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (data.type === 'interaction_response') {
|
|
17
|
+
return currentInteraction?.id === data.id || currentInteraction == null
|
|
18
|
+
? null
|
|
19
|
+
: currentInteraction
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (data.type === 'session_updated') {
|
|
23
|
+
const session = data.session as Session | { id: string; isDeleted: boolean }
|
|
24
|
+
if ('isDeleted' in session) {
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
if (session.status !== 'waiting_input') {
|
|
28
|
+
return null
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (data.type === 'error' && data.data != null && typeof data.data === 'object' && 'fatal' in data.data) {
|
|
33
|
+
return (data.data as { fatal?: boolean }).fatal !== false ? null : currentInteraction
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return currentInteraction
|
|
37
|
+
}
|
|
@@ -6,6 +6,7 @@ import { getSessionMessages } from '#~/api.js'
|
|
|
6
6
|
import { connectionManager } from '#~/connectionManager.js'
|
|
7
7
|
import type { AskUserQuestionParams, ChatMessage, Session, WSEvent } from '@vibe-forge/core'
|
|
8
8
|
import type { SessionInfo } from '@vibe-forge/types'
|
|
9
|
+
import { applyInteractionStateEvent } from './interaction-state'
|
|
9
10
|
import type { ChatEffort } from './use-chat-effort'
|
|
10
11
|
import type { PermissionMode } from './use-chat-permission-mode'
|
|
11
12
|
|
|
@@ -64,6 +65,7 @@ export function useChatSessionMessages({
|
|
|
64
65
|
const lastConnectedPermissionModeRef = useRef<string | undefined>(undefined)
|
|
65
66
|
const lastConnectedAdapterRef = useRef<string | undefined>(undefined)
|
|
66
67
|
const expectedCloseRef = useRef(false)
|
|
68
|
+
const interactionRequestRef = useRef<{ id: string; payload: AskUserQuestionParams } | null>(null)
|
|
67
69
|
|
|
68
70
|
const retryConnection = useCallback(() => {
|
|
69
71
|
if (session?.id == null || session.id === '') return
|
|
@@ -79,6 +81,7 @@ export function useChatSessionMessages({
|
|
|
79
81
|
setIsReady(false)
|
|
80
82
|
setConnectionError(null)
|
|
81
83
|
setInteractionRequest(null)
|
|
84
|
+
interactionRequestRef.current = null
|
|
82
85
|
isInitialLoadRef.current = true
|
|
83
86
|
|
|
84
87
|
if (session?.id == null || session.id === '') {
|
|
@@ -109,9 +112,8 @@ export function useChatSessionMessages({
|
|
|
109
112
|
}, false)
|
|
110
113
|
}
|
|
111
114
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
+
interactionRequestRef.current = res.interaction ?? null
|
|
116
|
+
setInteractionRequest(interactionRequestRef.current)
|
|
115
117
|
|
|
116
118
|
let currentMessages: ChatMessage[] = []
|
|
117
119
|
let currentSessionInfo: SessionInfo | null = null
|
|
@@ -207,6 +209,11 @@ export function useChatSessionMessages({
|
|
|
207
209
|
},
|
|
208
210
|
onMessage(data: WSEvent) {
|
|
209
211
|
if (isDisposed) return
|
|
212
|
+
const nextInteraction = applyInteractionStateEvent(interactionRequestRef.current, data)
|
|
213
|
+
if (nextInteraction !== interactionRequestRef.current) {
|
|
214
|
+
interactionRequestRef.current = nextInteraction
|
|
215
|
+
setInteractionRequest(nextInteraction)
|
|
216
|
+
}
|
|
210
217
|
if (data.type === 'error') {
|
|
211
218
|
setConnectionError(data.data?.message ?? data.message ?? 'Unknown error')
|
|
212
219
|
return
|
|
@@ -269,7 +276,7 @@ export function useChatSessionMessages({
|
|
|
269
276
|
}
|
|
270
277
|
|
|
271
278
|
if (data.type === 'interaction_request') {
|
|
272
|
-
|
|
279
|
+
return
|
|
273
280
|
}
|
|
274
281
|
},
|
|
275
282
|
onError() {
|
|
@@ -310,6 +310,17 @@
|
|
|
310
310
|
"connectionError": "WebSocket connection failed. Check the server and try again.",
|
|
311
311
|
"connectionClosed": "WebSocket connection closed. Try reconnecting.",
|
|
312
312
|
"retryConnection": "Retry",
|
|
313
|
+
"permissionRequestBadge": "Permission request",
|
|
314
|
+
"permissionCurrentMode": "Current mode",
|
|
315
|
+
"permissionSuggestedMode": "Suggested mode",
|
|
316
|
+
"permissionDeniedTools": "Restricted tools",
|
|
317
|
+
"permissionReasons": "Reasons",
|
|
318
|
+
"tooltipSlashCommands": "Slash commands",
|
|
319
|
+
"tooltipMentionAgents": "Mention agents",
|
|
320
|
+
"tooltipInjectContext": "Inject context",
|
|
321
|
+
"tooltipUploadImages": "Upload images",
|
|
322
|
+
"effortSelectPlaceholder": "Effort",
|
|
323
|
+
"permissionModeSelectPlaceholder": "Permission mode",
|
|
313
324
|
"assetWarningsTitle": "Compatibility notes",
|
|
314
325
|
"assetWarningsCount": "{{count}} asset warnings",
|
|
315
326
|
"assetWarningsMore": "+{{count}} more",
|
|
@@ -311,6 +311,17 @@
|
|
|
311
311
|
"connectionError": "WebSocket 连接失败,请检查服务状态后重试",
|
|
312
312
|
"connectionClosed": "WebSocket 连接已关闭,请重试",
|
|
313
313
|
"retryConnection": "重试连接",
|
|
314
|
+
"permissionRequestBadge": "权限请求",
|
|
315
|
+
"permissionCurrentMode": "当前模式",
|
|
316
|
+
"permissionSuggestedMode": "建议模式",
|
|
317
|
+
"permissionDeniedTools": "受限工具",
|
|
318
|
+
"permissionReasons": "原因",
|
|
319
|
+
"tooltipSlashCommands": "快捷指令",
|
|
320
|
+
"tooltipMentionAgents": "提及代理",
|
|
321
|
+
"tooltipInjectContext": "注入上下文",
|
|
322
|
+
"tooltipUploadImages": "上传图片",
|
|
323
|
+
"effortSelectPlaceholder": "推理强度",
|
|
324
|
+
"permissionModeSelectPlaceholder": "权限模式",
|
|
314
325
|
"assetWarningsTitle": "兼容性提示",
|
|
315
326
|
"assetWarningsCount": "{{count}} 个资产告警",
|
|
316
327
|
"assetWarningsMore": "还有 {{count}} 条",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{al as o,am as n}from"./mermaid.core-Bk0Y_0sz.js";const l=(a,r)=>o.lang.round(n.parse(a)[r]);export{l as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as r}from"./graph-0_VzJX6O.js";var a=4;function n(o){return r(o,a)}export{n as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as o,p as e}from"./flowDb-c6c81e3f-ChtOxgsJ.js";import{f as a,g as t}from"./styles-d45a18b0-Bf6oqNdR.js";import{ar as i}from"./mermaid.core-Bk0Y_0sz.js";import"./graph-0_VzJX6O.js";import"./layout-BILp7GjD.js";import"./index-C1O04Df8.js";import"./index-5325376f-DLP7F7of.js";import"./clone-upfY39Je.js";import"./edges-96097737-BEegO-R-.js";import"./createText-1719965b-8_Ez5rxh.js";import"./line-D0Xqr8mi.js";import"./array-BKyUJesY.js";import"./path-CbwjOpE9.js";import"./channel-bLjHfx-Q.js";const n={parser:e,db:o,renderer:t,styles:a,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,i({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{n as diagram};
|