@yancyyu/openhermit 1.5.11 → 1.6.1

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.
Files changed (68) hide show
  1. package/README.md +65 -63
  2. package/dist-renderer/assets/{ProjectEditorOverlay-C5D83Zxv.js → ProjectEditorOverlay-DrZKGMUE.js} +1 -1
  3. package/dist-renderer/assets/{TeamGraphOverlay-ajzuM1-u.js → TeamGraphOverlay-D0F9r5Fj.js} +1 -1
  4. package/dist-renderer/assets/{_basePickBy-C9H2zmVj.js → _basePickBy-D3hJcHOm.js} +1 -1
  5. package/dist-renderer/assets/{_baseUniq-CpGZGemc.js → _baseUniq-DGaoGuIo.js} +1 -1
  6. package/dist-renderer/assets/{arc-CbGBDw-m.js → arc-BEf0FRUv.js} +1 -1
  7. package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-nuKXUIpb.js → architectureDiagram-VXUJARFQ-CV0ZxlU6.js} +1 -1
  8. package/dist-renderer/assets/{blockDiagram-VD42YOAC-DHUUE7Jc.js → blockDiagram-VD42YOAC-BBgj7JQU.js} +1 -1
  9. package/dist-renderer/assets/{c4Diagram-YG6GDRKO-OILHhqLM.js → c4Diagram-YG6GDRKO-z4ASXsqO.js} +1 -1
  10. package/dist-renderer/assets/channel-BmFF1HZd.js +1 -0
  11. package/dist-renderer/assets/{chunk-4BX2VUAB-dqNpZaQ8.js → chunk-4BX2VUAB-GgD2k-Lr.js} +1 -1
  12. package/dist-renderer/assets/{chunk-55IACEB6-BCoSJQM-.js → chunk-55IACEB6-DtIOM4VP.js} +1 -1
  13. package/dist-renderer/assets/{chunk-B4BG7PRW-BLbg8yVR.js → chunk-B4BG7PRW-vt_YV8kf.js} +1 -1
  14. package/dist-renderer/assets/{chunk-DI55MBZ5-CUUWOs1Q.js → chunk-DI55MBZ5-CkNWOUcb.js} +1 -1
  15. package/dist-renderer/assets/{chunk-FMBD7UC4-D9geTN5P.js → chunk-FMBD7UC4-CfEfRL0J.js} +1 -1
  16. package/dist-renderer/assets/{chunk-QN33PNHL-BGT8-BRX.js → chunk-QN33PNHL-BuVE3RIP.js} +1 -1
  17. package/dist-renderer/assets/{chunk-QZHKN3VN-CC8ebGaM.js → chunk-QZHKN3VN-K_7QwWik.js} +1 -1
  18. package/dist-renderer/assets/{chunk-TZMSLE5B-CajekcT6.js → chunk-TZMSLE5B-DMp8QOiS.js} +1 -1
  19. package/dist-renderer/assets/classDiagram-2ON5EDUG-BcZUsklT.js +1 -0
  20. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-BcZUsklT.js +1 -0
  21. package/dist-renderer/assets/clone-DFAYLyhG.js +1 -0
  22. package/dist-renderer/assets/{cose-bilkent-S5V4N54A-C_x7hSy3.js → cose-bilkent-S5V4N54A-BVY9tzNS.js} +1 -1
  23. package/dist-renderer/assets/{dagre-6UL2VRFP-C4Y1k4DZ.js → dagre-6UL2VRFP--faZMK7S.js} +1 -1
  24. package/dist-renderer/assets/{diagram-PSM6KHXK-oRIeULoh.js → diagram-PSM6KHXK-DmtFeluG.js} +1 -1
  25. package/dist-renderer/assets/{diagram-QEK2KX5R-DwSqw5HF.js → diagram-QEK2KX5R-Bcp7Lb0A.js} +1 -1
  26. package/dist-renderer/assets/{diagram-S2PKOQOG-DqjGYje2.js → diagram-S2PKOQOG-ti_QkBTz.js} +1 -1
  27. package/dist-renderer/assets/{erDiagram-Q2GNP2WA-CEV5bBgg.js → erDiagram-Q2GNP2WA-BDEvbMUF.js} +1 -1
  28. package/dist-renderer/assets/{flowDiagram-NV44I4VS-BQQkrRyu.js → flowDiagram-NV44I4VS-kcRZb1MY.js} +1 -1
  29. package/dist-renderer/assets/{ganttDiagram-JELNMOA3-CLy4WR1G.js → ganttDiagram-JELNMOA3-DqTbb3Zl.js} +1 -1
  30. package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-6W3ioQu_.js → gitGraphDiagram-V2S2FVAM-AldFx-Oq.js} +1 -1
  31. package/dist-renderer/assets/{graph-BnLKQvhH.js → graph-DoTH18rj.js} +1 -1
  32. package/dist-renderer/assets/{index-BufvLVIl.js → index-BUfRAXh0.js} +1 -1
  33. package/dist-renderer/assets/{index-C1xShqKH.js → index-CPvx8mQq.js} +1 -1
  34. package/dist-renderer/assets/{index-BRuhNKyU.js → index-CRzo33Zq.js} +304 -304
  35. package/dist-renderer/assets/{index-zIOLLI7O.js → index-CcbnCZI-.js} +1 -1
  36. package/dist-renderer/assets/{index-B8lKqPVq.js → index-Ci3TO_JU.js} +1 -1
  37. package/dist-renderer/assets/{index-B4aiRxoU.js → index-DkKHJirK.js} +1 -1
  38. package/dist-renderer/assets/{infoDiagram-HS3SLOUP-BoBweEEY.js → infoDiagram-HS3SLOUP-CZ8BxA5O.js} +1 -1
  39. package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DLL0V5oP.js → journeyDiagram-XKPGCS4Q-DFap5MzN.js} +1 -1
  40. package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-HsFtEDG3.js → kanban-definition-3W4ZIXB7-eL0Btbev.js} +1 -1
  41. package/dist-renderer/assets/{layout-ClIooAAq.js → layout-DVFi6Pff.js} +1 -1
  42. package/dist-renderer/assets/{linear-r3RJcj8y.js → linear-CcYzZckM.js} +1 -1
  43. package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-BA_P1U4V.js → mindmap-definition-VGOIOE7T-YdwndBk4.js} +1 -1
  44. package/dist-renderer/assets/{pieDiagram-ADFJNKIX-CzPAfkTB.js → pieDiagram-ADFJNKIX-C2bgVxYV.js} +1 -1
  45. package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-PvdPWzFJ.js → quadrantDiagram-AYHSOK5B-DyiRJVZc.js} +1 -1
  46. package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-CHqIL_Od.js → requirementDiagram-UZGBJVZJ-9dKf2vDK.js} +1 -1
  47. package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-ConzpACM.js → sankeyDiagram-TZEHDZUN-DM0P_yL1.js} +1 -1
  48. package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-Zryq4oxP.js → sequenceDiagram-WL72ISMW-BBGTN3ZY.js} +1 -1
  49. package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-BA9V7NHF.js → stateDiagram-FKZM4ZOC-Bg5q7FLR.js} +1 -1
  50. package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-CGnaujD-.js → stateDiagram-v2-4FDKWEC3-BEe_MxUA.js} +1 -1
  51. package/dist-renderer/assets/{timeline-definition-IT6M3QCI-DPs2ZjMm.js → timeline-definition-IT6M3QCI-CFHreXGq.js} +1 -1
  52. package/dist-renderer/assets/{treemap-GDKQZRPO-B0lzrLxb.js → treemap-GDKQZRPO-CHC-_z92.js} +1 -1
  53. package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-CINGmMxX.js → xychartDiagram-PRI3JC2R-BtaW7FFn.js} +1 -1
  54. package/dist-renderer/index.html +1 -1
  55. package/package.json +1 -1
  56. package/src/main/server.ts +44 -4
  57. package/src/renderer/api/httpClient.ts +2 -2
  58. package/src/renderer/components/dashboard/CliStatusBanner.tsx +1 -1
  59. package/src/renderer/components/runtime/ProviderRuntimeSettingsDialog.tsx +1 -3
  60. package/src/renderer/components/settings/sections/CliStatusSection.tsx +6 -1
  61. package/src/renderer/components/team/TeamDetailView.tsx +14 -1
  62. package/src/renderer/components/team/TeamListView.tsx +14 -1
  63. package/src/renderer/store/slices/teamSlice.ts +15 -2
  64. package/src/shared/types/api.ts +1 -1
  65. package/dist-renderer/assets/channel-DpUKLLrj.js +0 -1
  66. package/dist-renderer/assets/classDiagram-2ON5EDUG-LL85aSlz.js +0 -1
  67. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-LL85aSlz.js +0 -1
  68. package/dist-renderer/assets/clone-BHWsFzFA.js +0 -1
@@ -1,4 +1,4 @@
1
- import{_ as a,A as ei,B as si,Z as Lt,Y as ni,C as ai,D as ri,I as Et,ae as oi,J as hi,a3 as li,ab as xt,aa as It,ac as ci,av as ui,N as gi,b7 as xi,aD as Tt}from"./index-BRuhNKyU.js";import{i as di}from"./init-Gi6I4Gst.js";import{o as fi}from"./ordinal-Cboi1Yqb.js";import{l as Dt}from"./linear-r3RJcj8y.js";import"./splashScene-C8lWNnm4.js";import"./defaultLocale-DX6XiGOO.js";function pi(t,i,e){t=+t,i=+i,e=(n=arguments.length)<2?(i=t,t=0,1):n<3?1:+e;for(var s=-1,n=Math.max(0,Math.ceil((i-t)/e))|0,x=new Array(n);++s<n;)x[s]=t+s*e;return x}function ht(){var t=fi().unknown(void 0),i=t.domain,e=t.range,s=0,n=1,x,g,m=!1,S=0,D=0,v=.5;delete t.unknown;function w(){var y=i().length,E=n<s,T=E?n:s,P=E?s:n;x=(P-T)/Math.max(1,y-S+D*2),m&&(x=Math.floor(x)),T+=(P-T-x*(y-S))*v,g=x*(1-S),m&&(T=Math.round(T),g=Math.round(g));var I=pi(y).map(function(p){return T+x*p});return e(E?I.reverse():I)}return t.domain=function(y){return arguments.length?(i(y),w()):i()},t.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,w()):[s,n]},t.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,m=!0,w()},t.bandwidth=function(){return g},t.step=function(){return x},t.round=function(y){return arguments.length?(m=!!y,w()):m},t.padding=function(y){return arguments.length?(S=Math.min(1,D=+y),w()):S},t.paddingInner=function(y){return arguments.length?(S=Math.min(1,y),w()):S},t.paddingOuter=function(y){return arguments.length?(D=+y,w()):D},t.align=function(y){return arguments.length?(v=Math.max(0,Math.min(1,y)),w()):v},t.copy=function(){return ht(i(),[s,n]).round(m).paddingInner(S).paddingOuter(D).align(v)},di.apply(w(),arguments)}var lt=function(){var t=a(function(O,o,c,u){for(c=c||{},u=O.length;u--;c[O[u]]=o);return c},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],n=[1,5],x=[1,6],g=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],S=[1,25],D=[1,26],v=[1,28],w=[1,29],y=[1,30],E=[1,31],T=[1,32],P=[1,33],I=[1,34],p=[1,35],_=[1,36],l=[1,37],W=[1,43],z=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],L=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],C=[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],k=[1,64],$={trace:a(function(){},"trace"),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:a(function(o,c,u,d,A,r,j){var f=r.length-1;switch(A){case 5:d.setOrientation(r[f]);break;case 9:d.setDiagramTitle(r[f].text.trim());break;case 12:d.setLineData({text:"",type:"text"},r[f]);break;case 13:d.setLineData(r[f-1],r[f]);break;case 14:d.setBarData({text:"",type:"text"},r[f]);break;case 15:d.setBarData(r[f-1],r[f]);break;case 16:this.$=r[f].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=r[f].trim(),d.setAccDescription(this.$);break;case 19:this.$=r[f-1];break;case 20:this.$=[Number(r[f-2]),...r[f]];break;case 21:this.$=[Number(r[f])];break;case 22:d.setXAxisTitle(r[f]);break;case 23:d.setXAxisTitle(r[f-1]);break;case 24:d.setXAxisTitle({type:"text",text:""});break;case 25:d.setXAxisBand(r[f]);break;case 26:d.setXAxisRangeData(Number(r[f-2]),Number(r[f]));break;case 27:this.$=r[f-1];break;case 28:this.$=[r[f-2],...r[f]];break;case 29:this.$=[r[f]];break;case 30:d.setYAxisTitle(r[f]);break;case 31:d.setYAxisTitle(r[f-1]);break;case 32:d.setYAxisTitle({type:"text",text:""});break;case 33:d.setYAxisRangeData(Number(r[f-2]),Number(r[f]));break;case 37:this.$={text:r[f],type:"text"};break;case 38:this.$={text:r[f],type:"text"};break;case 39:this.$={text:r[f],type:"markdown"};break;case 40:this.$=r[f];break;case 41:this.$=r[f-1]+""+r[f];break}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:n,35:x,36:g}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:n,35:x,36:g}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:x,36:g}),{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]},t(m,[2,34]),t(m,[2,35]),t(m,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:n,35:x,36:g}),{1:[2,3]},t(m,[2,5]),t(i,[2,7],{4:22,34:n,35:x,36:g}),{11:23,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:39,13:38,24:W,27:z,29:40,30:41,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:45,15:44,27:U,33:46,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:49,17:48,24:X,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:52,17:51,24:X,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{20:[1,53]},{22:[1,54]},t(h,[2,18]),{1:[2,2]},t(h,[2,8]),t(h,[2,9]),t(L,[2,37],{40:55,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l}),t(L,[2,38]),t(L,[2,39]),t(C,[2,40]),t(C,[2,42]),t(C,[2,43]),t(C,[2,44]),t(C,[2,45]),t(C,[2,46]),t(C,[2,47]),t(C,[2,48]),t(C,[2,49]),t(C,[2,50]),t(C,[2,51]),t(h,[2,10]),t(h,[2,22],{30:41,29:56,24:W,27:z}),t(h,[2,24]),t(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},t(h,[2,11]),t(h,[2,30],{33:60,27:U}),t(h,[2,32]),{31:[1,61]},t(h,[2,12]),{17:62,24:X},{25:63,27:k},t(h,[2,14]),{17:65,24:X},t(h,[2,16]),t(h,[2,17]),t(C,[2,41]),t(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(h,[2,31]),{27:[1,69]},t(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(h,[2,15]),t(h,[2,26]),t(h,[2,27]),{11:59,32:72,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},t(h,[2,33]),t(h,[2,19]),{25:73,27:k},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(o,c){if(c.recoverable)this.trace(o);else{var u=new Error(o);throw u.hash=c,u}},"parseError"),parse:a(function(o){var c=this,u=[0],d=[],A=[null],r=[],j=this.table,f="",J=0,St=0,Zt=2,_t=1,Jt=r.slice.call(arguments,1),R=Object.create(this.lexer),Y={yy:{}};for(var nt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,nt)&&(Y.yy[nt]=this.yy[nt]);R.setInput(o,Y.yy),Y.yy.lexer=R,Y.yy.parser=this,typeof R.yylloc>"u"&&(R.yylloc={});var at=R.yylloc;r.push(at);var ti=R.options&&R.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ii(V){u.length=u.length-2*V,A.length=A.length-V,r.length=r.length-V}a(ii,"popStack");function kt(){var V;return V=d.pop()||R.lex()||_t,typeof V!="number"&&(V instanceof Array&&(d=V,V=d.pop()),V=c.symbols_[V]||V),V}a(kt,"lex");for(var M,H,B,rt,q={},tt,F,Rt,it;;){if(H=u[u.length-1],this.defaultActions[H]?B=this.defaultActions[H]:((M===null||typeof M>"u")&&(M=kt()),B=j[H]&&j[H][M]),typeof B>"u"||!B.length||!B[0]){var ot="";it=[];for(tt in j[H])this.terminals_[tt]&&tt>Zt&&it.push("'"+this.terminals_[tt]+"'");R.showPosition?ot="Parse error on line "+(J+1)+`:
1
+ import{_ as a,A as ei,B as si,Z as Lt,Y as ni,C as ai,D as ri,I as Et,ae as oi,J as hi,a3 as li,ab as xt,aa as It,ac as ci,av as ui,N as gi,b7 as xi,aD as Tt}from"./index-CRzo33Zq.js";import{i as di}from"./init-Gi6I4Gst.js";import{o as fi}from"./ordinal-Cboi1Yqb.js";import{l as Dt}from"./linear-CcYzZckM.js";import"./splashScene-C8lWNnm4.js";import"./defaultLocale-DX6XiGOO.js";function pi(t,i,e){t=+t,i=+i,e=(n=arguments.length)<2?(i=t,t=0,1):n<3?1:+e;for(var s=-1,n=Math.max(0,Math.ceil((i-t)/e))|0,x=new Array(n);++s<n;)x[s]=t+s*e;return x}function ht(){var t=fi().unknown(void 0),i=t.domain,e=t.range,s=0,n=1,x,g,m=!1,S=0,D=0,v=.5;delete t.unknown;function w(){var y=i().length,E=n<s,T=E?n:s,P=E?s:n;x=(P-T)/Math.max(1,y-S+D*2),m&&(x=Math.floor(x)),T+=(P-T-x*(y-S))*v,g=x*(1-S),m&&(T=Math.round(T),g=Math.round(g));var I=pi(y).map(function(p){return T+x*p});return e(E?I.reverse():I)}return t.domain=function(y){return arguments.length?(i(y),w()):i()},t.range=function(y){return arguments.length?([s,n]=y,s=+s,n=+n,w()):[s,n]},t.rangeRound=function(y){return[s,n]=y,s=+s,n=+n,m=!0,w()},t.bandwidth=function(){return g},t.step=function(){return x},t.round=function(y){return arguments.length?(m=!!y,w()):m},t.padding=function(y){return arguments.length?(S=Math.min(1,D=+y),w()):S},t.paddingInner=function(y){return arguments.length?(S=Math.min(1,y),w()):S},t.paddingOuter=function(y){return arguments.length?(D=+y,w()):D},t.align=function(y){return arguments.length?(v=Math.max(0,Math.min(1,y)),w()):v},t.copy=function(){return ht(i(),[s,n]).round(m).paddingInner(S).paddingOuter(D).align(v)},di.apply(w(),arguments)}var lt=function(){var t=a(function(O,o,c,u){for(c=c||{},u=O.length;u--;c[O[u]]=o);return c},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],n=[1,5],x=[1,6],g=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],S=[1,25],D=[1,26],v=[1,28],w=[1,29],y=[1,30],E=[1,31],T=[1,32],P=[1,33],I=[1,34],p=[1,35],_=[1,36],l=[1,37],W=[1,43],z=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],L=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],C=[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],k=[1,64],$={trace:a(function(){},"trace"),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:a(function(o,c,u,d,A,r,j){var f=r.length-1;switch(A){case 5:d.setOrientation(r[f]);break;case 9:d.setDiagramTitle(r[f].text.trim());break;case 12:d.setLineData({text:"",type:"text"},r[f]);break;case 13:d.setLineData(r[f-1],r[f]);break;case 14:d.setBarData({text:"",type:"text"},r[f]);break;case 15:d.setBarData(r[f-1],r[f]);break;case 16:this.$=r[f].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=r[f].trim(),d.setAccDescription(this.$);break;case 19:this.$=r[f-1];break;case 20:this.$=[Number(r[f-2]),...r[f]];break;case 21:this.$=[Number(r[f])];break;case 22:d.setXAxisTitle(r[f]);break;case 23:d.setXAxisTitle(r[f-1]);break;case 24:d.setXAxisTitle({type:"text",text:""});break;case 25:d.setXAxisBand(r[f]);break;case 26:d.setXAxisRangeData(Number(r[f-2]),Number(r[f]));break;case 27:this.$=r[f-1];break;case 28:this.$=[r[f-2],...r[f]];break;case 29:this.$=[r[f]];break;case 30:d.setYAxisTitle(r[f]);break;case 31:d.setYAxisTitle(r[f-1]);break;case 32:d.setYAxisTitle({type:"text",text:""});break;case 33:d.setYAxisRangeData(Number(r[f-2]),Number(r[f]));break;case 37:this.$={text:r[f],type:"text"};break;case 38:this.$={text:r[f],type:"text"};break;case 39:this.$={text:r[f],type:"markdown"};break;case 40:this.$=r[f];break;case 41:this.$=r[f-1]+""+r[f];break}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:n,35:x,36:g}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:n,35:x,36:g}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:n,35:x,36:g}),{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]},t(m,[2,34]),t(m,[2,35]),t(m,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:n,35:x,36:g}),{1:[2,3]},t(m,[2,5]),t(i,[2,7],{4:22,34:n,35:x,36:g}),{11:23,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:39,13:38,24:W,27:z,29:40,30:41,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:45,15:44,27:U,33:46,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:49,17:48,24:X,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{11:52,17:51,24:X,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},{20:[1,53]},{22:[1,54]},t(h,[2,18]),{1:[2,2]},t(h,[2,8]),t(h,[2,9]),t(L,[2,37],{40:55,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l}),t(L,[2,38]),t(L,[2,39]),t(C,[2,40]),t(C,[2,42]),t(C,[2,43]),t(C,[2,44]),t(C,[2,45]),t(C,[2,46]),t(C,[2,47]),t(C,[2,48]),t(C,[2,49]),t(C,[2,50]),t(C,[2,51]),t(h,[2,10]),t(h,[2,22],{30:41,29:56,24:W,27:z}),t(h,[2,24]),t(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},t(h,[2,11]),t(h,[2,30],{33:60,27:U}),t(h,[2,32]),{31:[1,61]},t(h,[2,12]),{17:62,24:X},{25:63,27:k},t(h,[2,14]),{17:65,24:X},t(h,[2,16]),t(h,[2,17]),t(C,[2,41]),t(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(h,[2,31]),{27:[1,69]},t(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(h,[2,15]),t(h,[2,26]),t(h,[2,27]),{11:59,32:72,37:24,38:S,39:D,40:27,41:v,42:w,43:y,44:E,45:T,46:P,47:I,48:p,49:_,50:l},t(h,[2,33]),t(h,[2,19]),{25:73,27:k},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:a(function(o,c){if(c.recoverable)this.trace(o);else{var u=new Error(o);throw u.hash=c,u}},"parseError"),parse:a(function(o){var c=this,u=[0],d=[],A=[null],r=[],j=this.table,f="",J=0,St=0,Zt=2,_t=1,Jt=r.slice.call(arguments,1),R=Object.create(this.lexer),Y={yy:{}};for(var nt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,nt)&&(Y.yy[nt]=this.yy[nt]);R.setInput(o,Y.yy),Y.yy.lexer=R,Y.yy.parser=this,typeof R.yylloc>"u"&&(R.yylloc={});var at=R.yylloc;r.push(at);var ti=R.options&&R.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ii(V){u.length=u.length-2*V,A.length=A.length-V,r.length=r.length-V}a(ii,"popStack");function kt(){var V;return V=d.pop()||R.lex()||_t,typeof V!="number"&&(V instanceof Array&&(d=V,V=d.pop()),V=c.symbols_[V]||V),V}a(kt,"lex");for(var M,H,B,rt,q={},tt,F,Rt,it;;){if(H=u[u.length-1],this.defaultActions[H]?B=this.defaultActions[H]:((M===null||typeof M>"u")&&(M=kt()),B=j[H]&&j[H][M]),typeof B>"u"||!B.length||!B[0]){var ot="";it=[];for(tt in j[H])this.terminals_[tt]&&tt>Zt&&it.push("'"+this.terminals_[tt]+"'");R.showPosition?ot="Parse error on line "+(J+1)+`:
2
2
  `+R.showPosition()+`
3
3
  Expecting `+it.join(", ")+", got '"+(this.terminals_[M]||M)+"'":ot="Parse error on line "+(J+1)+": Unexpected "+(M==_t?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(ot,{text:R.match,token:this.terminals_[M]||M,line:R.yylineno,loc:at,expected:it})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+M);switch(B[0]){case 1:u.push(M),A.push(R.yytext),r.push(R.yylloc),u.push(B[1]),M=null,St=R.yyleng,f=R.yytext,J=R.yylineno,at=R.yylloc;break;case 2:if(F=this.productions_[B[1]][1],q.$=A[A.length-F],q._$={first_line:r[r.length-(F||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(F||1)].first_column,last_column:r[r.length-1].last_column},ti&&(q._$.range=[r[r.length-(F||1)].range[0],r[r.length-1].range[1]]),rt=this.performAction.apply(q,[f,St,J,Y.yy,B[1],A,r].concat(Jt)),typeof rt<"u")return rt;F&&(u=u.slice(0,-1*F*2),A=A.slice(0,-1*F),r=r.slice(0,-1*F)),u.push(this.productions_[B[1]][0]),A.push(q.$),r.push(q._$),Rt=j[u[u.length-2]][u[u.length-1]],u.push(Rt);break;case 3:return!0}}return!0},"parse")},Ct=function(){var O={EOF:1,parseError:a(function(c,u){if(this.yy.parser)this.yy.parser.parseError(c,u);else throw new Error(c)},"parseError"),setInput:a(function(o,c){return this.yy=c||this.yy||{},this._input=o,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},"setInput"),input:a(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var c=o.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:a(function(o){var c=o.length,u=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var d=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 A=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===d.length?this.yylloc.first_column:0)+d[d.length-u.length].length-u[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(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},"reject"),less:a(function(o){this.unput(this.match.slice(o))},"less"),pastInput:a(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var o=this.pastInput(),c=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
@@ -353,7 +353,7 @@
353
353
  } catch (e) {}
354
354
  })();
355
355
  </script>
356
- <script type="module" crossorigin src="/assets/index-BRuhNKyU.js"></script>
356
+ <script type="module" crossorigin src="/assets/index-CRzo33Zq.js"></script>
357
357
  <link rel="modulepreload" crossorigin href="/assets/splashScene-C8lWNnm4.js">
358
358
  <link rel="stylesheet" crossorigin href="/assets/index-CaG9mf8s.css">
359
359
  </head>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yancyyu/openhermit",
3
3
  "type": "module",
4
- "version": "1.5.11",
4
+ "version": "1.6.1",
5
5
  "description": "openHermit: team-oriented agent management workbench atop cc-connect.",
6
6
  "license": "AGPL-3.0",
7
7
  "author": {
@@ -701,7 +701,7 @@ app.post('/api/cc-reload', async () => {
701
701
  app.get('/api/teams', async () => {
702
702
  try {
703
703
  const projects = await cc.listProjects();
704
- return await Promise.all(
704
+ const summaries = await Promise.all(
705
705
  projects.map(async (p) => {
706
706
  // platforms 从 listProjects 返回的是 string[],有 platform 即认为在线
707
707
  const isOnline = Array.isArray(p.platforms) && p.platforms.length > 0;
@@ -760,6 +760,7 @@ app.get('/api/teams', async () => {
760
760
  };
761
761
  })
762
762
  );
763
+ return summaries.filter((team) => team.pendingDelete !== true);
763
764
  } catch {
764
765
  return [];
765
766
  }
@@ -1028,19 +1029,30 @@ app.delete<{ Params: { name: string }; Querystring: { deleteFiles?: string } }>(
1028
1029
  async (request, reply) => {
1029
1030
  const teamName = request.params.name;
1030
1031
  try {
1032
+ let restartRequired = false;
1031
1033
  try {
1032
1034
  const result = await cc.deleteProject(teamName);
1035
+ restartRequired = result.restart_required === true;
1033
1036
  await svc.updateTeam(teamName, {
1034
1037
  pendingDelete: true,
1035
- restartRequired: result.restart_required === true,
1038
+ restartRequired,
1036
1039
  });
1037
1040
  } catch (err) {
1038
1041
  request.log.warn({ err, teamName }, 'delete cc-connect project failed or project missing');
1042
+ try {
1043
+ await svc.updateTeam(teamName, {
1044
+ pendingDelete: true,
1045
+ restartRequired: true,
1046
+ });
1047
+ restartRequired = true;
1048
+ } catch {
1049
+ // Local metadata may already be gone; keep deletion best-effort.
1050
+ }
1039
1051
  }
1040
1052
  if (request.query.deleteFiles === 'true') {
1041
1053
  await svc.deleteTeam(teamName, { deleteFiles: true });
1042
1054
  }
1043
- return { ok: true, restartRequired: true };
1055
+ return { ok: true, restartRequired };
1044
1056
  } catch (err) {
1045
1057
  return reply.code(500).send(reply500(err));
1046
1058
  }
@@ -3001,7 +3013,25 @@ app.get<{ Params: { name: string } }>('/api/teams/:name/lead-context', async ()
3001
3013
  app.get<{ Params: { name: string } }>('/api/teams/:name/sessions', async (request) => {
3002
3014
  try {
3003
3015
  const sessions = await cc.listSessions(request.params.name);
3004
- return sessions.map((s) => ({
3016
+ const sessionsByKey = new Map<string, (typeof sessions)[number]>();
3017
+ const sessionScore = (session: (typeof sessions)[number]): number => {
3018
+ const updatedAt = Date.parse(session.updated_at);
3019
+ return (
3020
+ (session.live ? 1_000_000_000_000_000 : 0) +
3021
+ (session.active ? 1_000_000_000_000 : 0) +
3022
+ (session.history_count ?? 0) * 1_000_000 +
3023
+ (session.agent_type ? 10_000 : 0) +
3024
+ (Number.isFinite(updatedAt) ? updatedAt / 1_000_000 : 0)
3025
+ );
3026
+ };
3027
+ for (const session of sessions) {
3028
+ const existing = sessionsByKey.get(session.session_key);
3029
+ if (!existing || sessionScore(session) > sessionScore(existing)) {
3030
+ sessionsByKey.set(session.session_key, session);
3031
+ }
3032
+ }
3033
+
3034
+ return [...sessionsByKey.values()].map((s) => ({
3005
3035
  id: s.id,
3006
3036
  title: s.user_name || s.chat_name || s.name || s.session_key,
3007
3037
  projectId: request.params.name,
@@ -3850,6 +3880,16 @@ app.get('/api/extensions/mcp/browse', async () => ({
3850
3880
  app.setNotFoundHandler((request, reply) => {
3851
3881
  const u = request.url;
3852
3882
  if (!u.startsWith('/api/')) {
3883
+ const pathname = u.split('?')[0] ?? '/';
3884
+ const hasFileExtension = /\.[^/]+$/.test(pathname);
3885
+ const indexPath = path.join(STATIC_DIR, 'index.html');
3886
+ if (
3887
+ (request.method === 'GET' || request.method === 'HEAD') &&
3888
+ !hasFileExtension &&
3889
+ _existsSync2(indexPath)
3890
+ ) {
3891
+ return reply.type('text/html; charset=utf-8').send(readFileSync(indexPath, 'utf-8'));
3892
+ }
3853
3893
  return reply.code(404).type('text/plain').send('not found');
3854
3894
  }
3855
3895
 
@@ -1114,8 +1114,8 @@ export class HttpAPIClient implements ElectronAPI {
1114
1114
  const path = `/api/teams/${encodeURIComponent(teamName)}/claude-logs`;
1115
1115
  return this.get<TeamClaudeLogsResponse>(qs ? `${path}?${qs}` : path);
1116
1116
  },
1117
- deleteTeam: async (teamName: string): Promise<void> => {
1118
- await this.del(`/api/teams/${encodeURIComponent(teamName)}`);
1117
+ deleteTeam: async (teamName: string): Promise<{ restartRequired?: boolean }> => {
1118
+ return this.del<{ restartRequired?: boolean }>(`/api/teams/${encodeURIComponent(teamName)}`);
1119
1119
  },
1120
1120
  restoreTeam: async (teamName: string): Promise<void> => {
1121
1121
  await this.post(`/api/teams/${encodeURIComponent(teamName)}/restore`);
@@ -1301,7 +1301,7 @@ export const CliStatusBanner = (): React.JSX.Element | null => {
1301
1301
  providerStatusLoading={cliProviderStatusLoading}
1302
1302
  disabled={isBusy || cliStatusLoading || !renderCliStatus.binaryPath}
1303
1303
  onSelectBackend={handleProviderBackendChange}
1304
- onRefreshProvider={(providerId) => fetchCliProviderStatus(providerId)}
1304
+ onRefreshProvider={handleProviderRefresh}
1305
1305
  onRequestLogin={(providerId) => setProviderTerminal({ providerId, action: 'login' })}
1306
1306
  />
1307
1307
  </>
@@ -59,7 +59,6 @@ export const ProviderRuntimeSettingsDialog = ({
59
59
  open,
60
60
  onOpenChange,
61
61
  initialProviderId,
62
- onRefreshProvider,
63
62
  }: Props): React.JSX.Element => {
64
63
  const agentType = AGENT_TYPE_BY_CLI_PROVIDER[initialProviderId];
65
64
  const harnessLabel = CLI_PROVIDER_LABELS[initialProviderId] ?? initialProviderId;
@@ -84,14 +83,13 @@ export const ProviderRuntimeSettingsDialog = ({
84
83
  try {
85
84
  const result = await providersApi.list();
86
85
  setProviders(result.providers ?? []);
87
- await onRefreshProvider?.(initialProviderId);
88
86
  } catch (err) {
89
87
  setError(err instanceof Error ? err.message : '加载 Provider 失败');
90
88
  setProviders([]);
91
89
  } finally {
92
90
  setLoading(false);
93
91
  }
94
- }, [initialProviderId, onRefreshProvider]);
92
+ }, []);
95
93
 
96
94
  useEffect(() => {
97
95
  if (open) {
@@ -273,6 +273,11 @@ export const CliStatusSection = ({
273
273
  setManageDialogOpen(true);
274
274
  }, []);
275
275
 
276
+ const handleProviderRefresh = useCallback(
277
+ (providerId: CliProviderId) => fetchCliProviderStatus(providerId),
278
+ [fetchCliProviderStatus]
279
+ );
280
+
276
281
  const handleHarnessManage = useCallback(
277
282
  (agentType: CcAgentType) => {
278
283
  const providerId = CLI_PROVIDER_BY_AGENT_TYPE[agentType];
@@ -677,7 +682,7 @@ export const CliStatusSection = ({
677
682
  providerStatusLoading={cliProviderStatusLoading}
678
683
  disabled={isBusy || cliStatusLoading}
679
684
  onSelectBackend={handleRuntimeBackendChange}
680
- onRefreshProvider={(providerId) => fetchCliProviderStatus(providerId)}
685
+ onRefreshProvider={handleProviderRefresh}
681
686
  onRequestLogin={(providerId) => setProviderTerminal({ providerId, action: 'login' })}
682
687
  />
683
688
  <GenericHarnessProviderDialog
@@ -1927,7 +1927,20 @@ export const TeamDetailView = ({
1927
1927
  setDeleteConfirmOpen(false);
1928
1928
  void (async () => {
1929
1929
  try {
1930
- await deleteTeam(teamName);
1930
+ const result = await deleteTeam(teamName);
1931
+ if (result.restartRequired) {
1932
+ const shouldRestart = await confirm({
1933
+ title: '需要重启 cc-connect',
1934
+ message:
1935
+ '已调用 cc-connect 删除团队配置。cc-connect 需要重启后才会真正移除该团队并停止相关运行时。',
1936
+ confirmLabel: '立即重启',
1937
+ cancelLabel: '稍后重启',
1938
+ variant: 'danger',
1939
+ });
1940
+ if (shouldRestart) {
1941
+ await api.ccSettings.restart();
1942
+ }
1943
+ }
1931
1944
  if (tabId) closeTab(tabId);
1932
1945
  openTeamsTab();
1933
1946
  } catch {
@@ -539,7 +539,20 @@ export const TeamListView = (): React.JSX.Element => {
539
539
  });
540
540
  if (confirmed) {
541
541
  try {
542
- await deleteTeam(teamName);
542
+ const result = await deleteTeam(teamName);
543
+ if (result.restartRequired) {
544
+ const shouldRestart = await confirm({
545
+ title: '需要重启 cc-connect',
546
+ message:
547
+ '已调用 cc-connect 删除团队配置。cc-connect 需要重启后才会真正移除该团队并停止相关运行时。',
548
+ confirmLabel: '立即重启',
549
+ cancelLabel: '稍后重启',
550
+ variant: 'danger',
551
+ });
552
+ if (shouldRestart) {
553
+ await api.ccSettings.restart();
554
+ }
555
+ }
543
556
  } catch {
544
557
  // error via store
545
558
  }
@@ -2151,7 +2151,7 @@ export interface TeamSlice {
2151
2151
  softDeleteTask: (teamName: string, taskId: string) => Promise<void>;
2152
2152
  restoreTask: (teamName: string, taskId: string) => Promise<void>;
2153
2153
  fetchDeletedTasks: (teamName: string) => Promise<void>;
2154
- deleteTeam: (teamName: string) => Promise<void>;
2154
+ deleteTeam: (teamName: string) => Promise<{ restartRequired?: boolean }>;
2155
2155
  restoreTeam: (teamName: string) => Promise<void>;
2156
2156
  permanentlyDeleteTeam: (teamName: string) => Promise<void>;
2157
2157
  createTeam: (request: TeamCreateRequest) => Promise<string>;
@@ -4290,9 +4290,22 @@ export const createTeamSlice: StateCreator<AppState, [], [], TeamSlice> = (set,
4290
4290
  },
4291
4291
 
4292
4292
  deleteTeam: async (teamName: string) => {
4293
- await unwrapIpc('team:deleteTeam', () => api.teams.deleteTeam(teamName));
4293
+ const result = await unwrapIpc('team:deleteTeam', () => api.teams.deleteTeam(teamName));
4294
+ invalidateTeamLocalStateEpoch(teamName);
4295
+ clearPendingReplyRefreshTimer(teamName);
4296
+ clearPendingReplyRefreshWaits(teamName);
4297
+ clearTeamScopedTransientState(teamName);
4298
+ set((state) => ({
4299
+ ...collectTeamScopedStateRemovals(state, teamName),
4300
+ teams: state.teams.filter((team) => team.teamName !== teamName),
4301
+ selectedTeam: state.selectedTeam?.teamName === teamName ? null : state.selectedTeam,
4302
+ selectedTeamName: state.selectedTeamName === teamName ? null : state.selectedTeamName,
4303
+ selectedTeamError: state.selectedTeamName === teamName ? null : state.selectedTeamError,
4304
+ selectedTeamLoading: state.selectedTeamName === teamName ? false : state.selectedTeamLoading,
4305
+ }));
4294
4306
  await get().fetchTeams();
4295
4307
  await get().fetchAllTasks();
4308
+ return result;
4296
4309
  },
4297
4310
 
4298
4311
  restoreTeam: async (teamName: string) => {
@@ -529,7 +529,7 @@ export interface TeamsAPI {
529
529
  setToolActivityTracking: (teamName: string, enabled: boolean) => Promise<void>;
530
530
  setTaskLogStreamTracking: (teamName: string, enabled: boolean) => Promise<void>;
531
531
  getClaudeLogs: (teamName: string, query?: TeamClaudeLogsQuery) => Promise<TeamClaudeLogsResponse>;
532
- deleteTeam: (teamName: string) => Promise<void>;
532
+ deleteTeam: (teamName: string) => Promise<{ restartRequired?: boolean }>;
533
533
  restoreTeam: (teamName: string) => Promise<void>;
534
534
  permanentlyDeleteTeam: (teamName: string) => Promise<void>;
535
535
  getSavedRequest: (teamName: string) => Promise<TeamCreateRequest | null>;
@@ -1 +0,0 @@
1
- import{a6 as o,a7 as n}from"./index-BRuhNKyU.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BLbg8yVR.js";import{_ as i}from"./index-BRuhNKyU.js";import"./chunk-FMBD7UC4-D9geTN5P.js";import"./chunk-55IACEB6-BCoSJQM-.js";import"./chunk-QN33PNHL-BGT8-BRX.js";import"./splashScene-C8lWNnm4.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BLbg8yVR.js";import{_ as i}from"./index-BRuhNKyU.js";import"./chunk-FMBD7UC4-D9geTN5P.js";import"./chunk-55IACEB6-BCoSJQM-.js";import"./chunk-QN33PNHL-BGT8-BRX.js";import"./splashScene-C8lWNnm4.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseUniq-CpGZGemc.js";var e=4;function a(o){return r(o,e)}export{a as c};