plugin-git-manager 1.2.3 → 1.2.4
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/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/dist/client/326.03f7202ae14b60ae.js +10 -0
- package/dist/client/434.afb45fa69887568e.js +10 -0
- package/dist/client/878.f99a81c2e6b4f602.js +10 -0
- package/dist/client/index.js +1 -1
- package/dist/client-v2/326.42b7b53651ffab3a.js +10 -0
- package/dist/client-v2/434.e65de282926677d6.js +10 -0
- package/dist/client-v2/878.06d6d1fe4fdb05f8.js +10 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/externalVersion.js +7 -6
- package/package.json +41 -37
- package/src/client-v2/index.tsx +1 -0
- package/src/client-v2/plugin.tsx +32 -0
- package/dist/client/228.7588a0707cb3694a.js +0 -10
- package/dist/client/597.1698c0124e2f95ce.js +0 -10
- package/dist/client/906.bea20db91f34f5e6.js +0 -10
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is part of the NocoBase (R) project.
|
|
3
|
-
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
-
* Authors: NocoBase Team.
|
|
5
|
-
*
|
|
6
|
-
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
-
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";(self.webpackChunkplugin_git_manager=self.webpackChunkplugin_git_manager||[]).push([["597"],{500:function(e,t,n){n.r(t),n.d(t,{GitManagerSettings:function(){return e3}});var r=n(156),l=n.n(r),a=n(721),o=n(482),i=n(630),c=n(772),u=n(618);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function m(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){d(a,r,l,o,i,"next",e)}function i(e){d(a,r,l,o,i,"throw",e)}o(void 0)})}}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function f(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var g=a.Typography.Text,v=a.Input.Search,b=a.theme.useToken,E={ts:l().createElement(o.CodeOutlined,{style:{color:"#3178c6"}}),tsx:l().createElement(o.CodeOutlined,{style:{color:"#3178c6"}}),js:l().createElement(o.CodeOutlined,{style:{color:"#f7df1e"}}),jsx:l().createElement(o.CodeOutlined,{style:{color:"#f7df1e"}}),json:l().createElement(o.CodeOutlined,{style:{color:"#5b5b5b"}}),md:l().createElement(o.FileMarkdownOutlined,{style:{color:"#083fa1"}}),html:l().createElement(o.Html5Outlined,{style:{color:"#e34c26"}}),css:l().createElement(o.FileTextOutlined,{style:{color:"#563d7c"}}),py:l().createElement(o.CodeOutlined,{style:{color:"#3572A5"}}),png:l().createElement(o.FileImageOutlined,{style:{color:"#a85e32"}}),jpg:l().createElement(o.FileImageOutlined,{style:{color:"#a85e32"}}),svg:l().createElement(o.FileImageOutlined,{style:{color:"#ffb13b"}})},w=function(){var e,t,n,s=(0,u.N)(),d=b().token,w=(0,c.useAPIClient)(),S=(0,i.E)(),k=S.selectedRepo,C=S.branches,x=S.currentBranch,I=S.refreshBranches,A=y((0,r.useState)([]),2),T=A[0],O=A[1],R=y((0,r.useState)(!1),2),z=R[0],B=R[1],P=y((0,r.useState)(null),2),F=P[0],M=P[1],j=y((0,r.useState)(null),2),D=j[0],L=j[1],q=y((0,r.useState)("HEAD"),2),N=q[0],U=q[1],H=y((0,r.useState)(""),2),W=H[0],_=H[1],G=y((0,r.useState)(""),2),$=G[0],K=G[1],V=y((0,r.useState)(!1),2),J=V[0],Q=V[1],X=(0,r.useCallback)(m(function(){var e,t,n,r,a=arguments;return h(this,function(i){switch(i.label){case 0:if(e=a.length>0&&void 0!==a[0]?a[0]:"",t=a.length>1&&void 0!==a[1]?a[1]:N,!k)return[2,[]];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,w.request({url:"gitManager:fileTree",params:{repositoryId:k.id,ref:t,treePath:e}})];case 2:return[2,(Array.isArray(r=(null==(n=i.sent().data)?void 0:n.data)||n||[])?r:Array.isArray(null==r?void 0:r.data)?r.data:[]).map(function(e){return{key:e.path,title:l().createElement(g,{style:{fontSize:13}},e.name,"blob"===e.type&&e.size>0&&l().createElement(g,{type:"secondary",style:{fontSize:11,marginLeft:8}},e.size>1024?"".concat((e.size/1024).toFixed(1),"KB"):"".concat(e.size,"B"))),icon:function(e,t){if("tree"!==t){var n;return E[(null==(n=e.split(".").pop())?void 0:n.toLowerCase())||""]||l().createElement(o.FileOutlined,null)}}(e.name,e.type),isLeaf:"blob"===e.type,filePath:e.path,fileType:e.type}})];case 3:return console.warn("Failed to load file tree:",i.sent()),[2,[]];case 4:return[2]}})}),[w,k,N]),Y=(0,r.useCallback)(m(function(){return h(this,function(e){switch(e.label){case 0:B(!0),e.label=1;case 1:return e.trys.push([1,,3,4]),[4,X("",N)];case 2:return O(e.sent()),[3,4];case 3:return B(!1),[7];case 4:return[2]}})}),[X,N]);(0,r.useEffect)(function(){(null==k?void 0:k.status)==="connected"?(I(),M(null),L(null)):O([])},[k]),(0,r.useEffect)(function(){x&&"HEAD"===N&&U(x)},[x]),(0,r.useEffect)(function(){(null==k?void 0:k.status)==="connected"&&Y()},[N,k]);var Z=(e=m(function(e){var t;return h(this,function(n){switch(n.label){case 0:if(e.children)return[2];return[4,X(e.filePath,N)];case 1:return t=n.sent(),O(function(n){return function e(t,n,r){return t.map(function(t){return t.key===n?f(p({},t),{children:r}):t.children?f(p({},t),{children:e(t.children,n,r)}):t})}(n,e.key,t)}),[2]}})}),function(t){return e.apply(this,arguments)}),ee=(t=m(function(e,t){var n,r,l,a;return h(this,function(e){switch(e.label){case 0:if(!(n=t.node).isLeaf)return[2];Q(!0),L(n.filePath),e.label=1;case 1:return e.trys.push([1,3,4,5]),[4,w.request({url:"gitManager:fileContent",params:{repositoryId:k.id,ref:N,filePath:n.filePath}})];case 2:return M((null==(a=(null==(l=e.sent().data)||null==(r=l.data)?void 0:r.data)||(null==l?void 0:l.data))?void 0:a.content)||""),[3,5];case 3:return e.sent(),M("// Failed to load file content"),[3,5];case 4:return Q(!1),[7];case 5:return[2]}})}),function(e,n){return t.apply(this,arguments)}),et=(0,r.useRef)();if((0,r.useEffect)(function(){return et.current=setTimeout(function(){return K(W)},300),function(){return clearTimeout(et.current)}},[W]),!k)return l().createElement(a.Empty,{description:s("No repository selected")});if("connected"!==k.status)return l().createElement(a.Empty,{description:s("Repository not cloned yet")});var en=$?function e(t,n){return t.map(function(t){if(t.children){var r=e(t.children,n);if(r.length>0)return f(p({},t),{children:r})}return(t.filePath||"").toLowerCase().includes(n)?t:null}).filter(Boolean)}(T,$.toLowerCase()):T;return l().createElement("div",{style:{display:"flex",height:"calc(100vh - 280px)",gap:0}},l().createElement("div",{style:{width:320,minWidth:280,borderRight:"1px solid ".concat(d.colorBorderSecondary),display:"flex",flexDirection:"column",background:d.colorBgContainer}},l().createElement("div",{style:{padding:"8px 12px",borderBottom:"1px solid ".concat(d.colorBorderSecondary)}},l().createElement(a.Space,{direction:"vertical",style:{width:"100%"},size:6},l().createElement(a.Select,{size:"small",style:{width:"100%"},value:N,onChange:function(e){U(e),M(null),L(null)},options:C.map(function(e){return{label:e,value:e}}),placeholder:"Branch"}),l().createElement(v,{size:"small",placeholder:"Filter files...",allowClear:!0,onChange:function(e){return _(e.target.value)}}))),l().createElement("div",{style:{flex:1,overflow:"auto",padding:"4px 0"}},z?l().createElement("div",{style:{textAlign:"center",padding:40}},l().createElement(a.Spin,null)):l().createElement(a.Tree,{showIcon:!0,treeData:en,loadData:Z,onSelect:ee,selectedKeys:D?[D]:[],style:{fontSize:13},blockNode:!0}))),l().createElement("div",{style:{flex:1,display:"flex",flexDirection:"column",background:d.colorBgLayout}},D?l().createElement(l().Fragment,null,l().createElement("div",{style:{padding:"6px 16px",borderBottom:"1px solid ".concat(d.colorBorderSecondary),background:d.colorBgContainer,display:"flex",alignItems:"center",gap:8}},l().createElement(a.Breadcrumb,{items:D.split("/").map(function(e,t,n){return{title:t===n.length-1?l().createElement(g,{strong:!0},e):e}})}),l().createElement(g,{type:"secondary",style:{marginLeft:"auto",fontSize:12}},{ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",json:"json",md:"markdown",html:"html",css:"css",scss:"scss",py:"python",sh:"bash",yml:"yaml",yaml:"yaml",sql:"sql",xml:"xml",java:"java",go:"go",rs:"rust",rb:"ruby"}[(null==(n=D.split(".").pop())?void 0:n.toLowerCase())||""]||"text")),l().createElement("div",{style:{flex:1,overflow:"auto"}},J?l().createElement("div",{style:{textAlign:"center",padding:40}},l().createElement(a.Spin,null)):l().createElement("pre",{style:{margin:0,padding:16,fontSize:13,lineHeight:1.6,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace",whiteSpace:"pre-wrap",wordBreak:"break-all",background:d.colorBgContainer,minHeight:"100%"}},(F||"").split("\n").map(function(e,t){return l().createElement("div",{key:t,style:{display:"flex"}},l().createElement("span",{style:{display:"inline-block",width:50,textAlign:"right",paddingRight:16,color:d.colorTextQuaternary,userSelect:"none",flexShrink:0}},t+1),l().createElement("span",{style:{flex:1}},e||" "))})))):l().createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"}},l().createElement(g,{type:"secondary"},"Select a file to view its content"))))},S=n(645);function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function x(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){C(a,r,l,o,i,"next",e)}function i(e){C(a,r,l,o,i,"throw",e)}o(void 0)})}}function I(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||A(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(e,t){if(e){if("string"==typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return k(e,t)}}function T(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var O=function(e){var t,n,i,s,d=e.target,m=e.size,p=e.type,f=e.onTriggered,y=(0,u.N)(),h=(0,c.useAPIClient)(),g=(null==(i=S.useAIConfigRepository)?void 0:i.call(S))||{},v=((null==(s=S.useChatBoxActions)?void 0:s.call(S))||{}).triggerTask,b=I((0,r.useState)(!1),2),E=b[0],w=b[1],C=I((0,r.useState)([]),2),O=C[0],R=C[1],z=I((0,r.useState)(!1),2),B=z[0],P=z[1],F=I((0,r.useState)(!1),2),M=F[0],j=F[1],D=I((0,r.useState)(null),2),L=D[0],q=D[1],N=I(a.Form.useForm(),1)[0],U=(0,r.useCallback)(function(){var e=!1,t={repositoryId:d.repositoryId,targetType:d.type};return"mr"===d.type&&(t.mrIid=d.mrIid),"commit"===d.type&&(t.commitSha=d.commitSha),"branch"===d.type&&(t.branch=d.branch),h.request({url:"gitCodeReviews:list",params:{pageSize:1,sort:["-id"],filter:t}}).then(function(t){if(!e){var n;q(((null==t||null==(n=t.data)?void 0:n.data)||[])[0]||null)}}).catch(function(){}),function(){e=!0}},[h,d]);(0,r.useEffect)(function(){return U()},[U]);var H=(0,r.useCallback)(x(function(){var e,t;return T(this,function(n){switch(n.label){case 0:return[4,h.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,$or:[{repositoryId:d.repositoryId},{repositoryId:null}]}}})];case 1:return R(t=(null==(e=n.sent().data)?void 0:e.data)||[]),[2,t]}})}),[h,d.repositoryId]),W=(0,r.useCallback)(function(e){var t,n=e.find(function(e){return e.repositoryId===d.repositoryId});return null!=(t=null!=n?n:e[0])?t:null},[d.repositoryId]);(0,r.useEffect)(function(){if(E){var e=!1;return H().then(function(t){if(!e){var n=W(t);(null==n?void 0:n.id)&&N.setFieldValue("flowId",n.id)}}).catch(function(){}),function(){e=!0}}},[E,H,W,N]);var _=(t=x(function(){var e,t,n,r,l,o,i,c,u,s,m;return T(this,function(p){switch(p.label){case 0:return p.trys.push([0,3,4,5]),[4,N.validateFields()];case 1:return n=p.sent(),P(!0),r={repositoryId:d.repositoryId,targetType:d.type,flowId:n.flowId,extraInstructions:n.extraInstructions||void 0},"mr"===d.type&&(r.mrIid=d.mrIid),"commit"===d.type&&(r.commitSha=d.commitSha),"branch"===d.type&&(r.branch=d.branch),[4,h.request({url:"gitManager:triggerReview",method:"post",data:r})];case 2:return o=null==(l=p.sent())||null==(t=l.data)||null==(e=t.data)?void 0:e.reviewId,a.message.success(y("Review started")),w(!1),N.resetFields(),U(),null==f||f(o),[3,5];case 3:if(null==(i=p.sent())?void 0:i.errorFields)return[2];return a.message.error((null==i||null==(m=i.response)||null==(s=m.data)||null==(u=s.errors)||null==(c=u[0])?void 0:c.message)||(null==i?void 0:i.message)||y("Failed to trigger review")),[3,5];case 4:return P(!1),[7];case 5:return[2]}})}),function(){return t.apply(this,arguments)}),G=function(){var e=d.title||K();return"mr"===d.type?{type:"git-merge-request",uid:"".concat(d.repositoryId,":").concat(d.mrIid),title:e,content:{repositoryId:d.repositoryId,mrIid:d.mrIid,title:e}}:"commit"===d.type?{type:"git-commit",uid:"".concat(d.repositoryId,":").concat(d.commitSha),title:e,content:{repositoryId:d.repositoryId,commitSha:d.commitSha,title:e}}:{type:"git-repository",uid:String(d.repositoryId),title:e,content:{repositoryId:d.repositoryId,branch:d.branch,title:e}}},$=(n=x(function(){var e,t,n,r,l,o;return T(this,function(i){switch(i.label){case 0:if(!v||!(null==g?void 0:g.getAIEmployees))return a.message.warning(y("AI plugin is not available")),[2];j(!0),i.label=1;case 1:if(i.trys.push([1,9,10,11]),!O.length)return[3,2];return t=O,[3,4];case 2:return[4,H()];case 3:t=i.sent(),i.label=4;case 4:if(!(null==(n=W(t))?void 0:n.aiEmployeeUsername))return a.message.warning(y("No matching flow available")),[2];if(!(null==(e=g.aiEmployees)?void 0:e.length))return[3,5];return r=g.aiEmployees,[3,7];case 5:return[4,g.getAIEmployees()];case 6:r=i.sent(),i.label=7;case 7:if(!(l=r.find(function(e){return e.username===n.aiEmployeeUsername})))return a.message.warning(y("AI employee not found")),[2];return[4,v({aiEmployee:l,tasks:[{title:"".concat(n.name,": ").concat(K()),message:{user:"mr"===d.type?"Please review merge request !".concat(d.mrIid," (").concat(d.title||"untitled","). Use the attached Git merge request context and the available git tools when you need more detail."):"commit"===d.type?"Please review commit ".concat(d.commitSha," (").concat(d.title||"untitled","). Use the attached Git commit context and the available git tools when you need more detail."):"Please help me inspect branch ".concat(d.branch,". Use the attached Git repository context and the available git tools when you need more detail."),system:n.instructions||void 0,workContext:[G()]},model:n.llmService&&n.model?{llmService:n.llmService,model:n.model}:null,autoSend:!1}]})];case 8:return i.sent(),[3,11];case 9:return o=i.sent(),a.message.error((null==o?void 0:o.message)||y("Failed to open AI chat")),[3,11];case 10:return j(!1),[7];case 11:return[2]}})}),function(){return n.apply(this,arguments)}),K=function(){return"mr"===d.type?"MR !".concat(d.mrIid):"commit"===d.type?"Commit ".concat(String(d.commitSha).slice(0,7)):"Branch ".concat(d.branch)},V=L&&L.headSha&&L.latestSha&&L.headSha!==L.latestSha,J=!!L&&"pending"!==L.status,Q=J?V?y("Re-review (new commits)"):y("Re-run review"):y("Code Review"),X=J?o.ReloadOutlined:o.RobotOutlined,Y=(0,r.useMemo)(function(){var e;return[{key:"run",icon:l().createElement(o.ThunderboltOutlined,null),label:J?y("Re-run automated review"):y("Run automated review"),onClick:function(){return w(!0)}}].concat(function(e){if(Array.isArray(e))return k(e)}(e=L?[{key:"view",icon:l().createElement(o.RobotOutlined,null),label:y("Status: ".concat(L.status))+" - "+y("View in Review History tab"),onClick:function(){a.message.info(y('Please switch to the "Review History" tab to see the details.'))}}]:[])||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||A(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[{key:"chat",icon:l().createElement(o.MessageOutlined,null),label:y("Ask AI Employee"),onClick:$,disabled:M}])},[J,L,M,$]);return l().createElement(l().Fragment,null,l().createElement(a.Dropdown,{menu:{items:Y},placement:"bottomRight",trigger:["click"]},l().createElement(a.Button,{size:void 0===m?"small":m,type:V?"primary":void 0===p?"default":p,icon:l().createElement(X,null),danger:!!V,loading:M},Q)),l().createElement(a.Modal,{title:l().createElement(a.Space,null,l().createElement(o.RobotOutlined,null),l().createElement("span",null,J?y("Re-run code review"):y("Run code review")),l().createElement("span",{style:{color:"#999",fontSize:12,fontWeight:400}},K())),open:E,onCancel:function(){return w(!1)},onOk:_,okText:J?y("Re-run"):y("Start Review"),confirmLoading:B,destroyOnClose:!0},J&&l().createElement(a.Alert,{type:V?"warning":"info",showIcon:!0,style:{marginBottom:12},message:V?y("New commits detected since last review. Re-running will overwrite the existing review."):y("A review already exists for this target. Re-running will overwrite it."),description:l().createElement(a.Space,{size:8,wrap:!0,style:{fontSize:12}},(null==L?void 0:L.headSha)&&l().createElement("span",null,y("Reviewed at"),":\xa0",l().createElement(a.Tag,{style:{fontFamily:"monospace"}},String(L.headSha).slice(0,7))),V&&(null==L?void 0:L.latestSha)&&l().createElement("span",null,y("Latest"),":\xa0",l().createElement(a.Tag,{color:"orange",style:{fontFamily:"monospace"}},String(L.latestSha).slice(0,7))))}),l().createElement(a.Form,{form:N,layout:"vertical"},l().createElement(a.Form.Item,{name:"flowId",label:y("Review Flow"),rules:[{required:!0,message:y("Please select a review flow")}],extra:0===O.length?l().createElement(a.Tooltip,{title:y("Create a review flow in the Review Flows tab first")},l().createElement("span",{style:{color:"#faad14"}},y("No enabled flow found for this repository"))):null},l().createElement(a.Select,{options:O.map(function(e){return{value:e.id,label:"".concat(e.name).concat(e.aiEmployeeUsername?" — @".concat(e.aiEmployeeUsername):"").concat(null==e.repositoryId?" (".concat(y("global"),")"):"")}}),placeholder:y("Select a review flow")})),l().createElement(a.Form.Item,{name:"extraInstructions",label:y("Extra instructions (optional)")},l().createElement(a.Input.TextArea,{rows:4,placeholder:y("e.g. Focus on security issues in authentication")})))))};function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function z(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function B(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){z(a,r,l,o,i,"next",e)}function i(e){z(a,r,l,o,i,"throw",e)}o(void 0)})}}function P(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return R(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return R(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var M=a.Typography.Text,j=a.theme.useToken,D={A:{color:"green",icon:l().createElement(o.PlusCircleOutlined,null),label:"Added"},M:{color:"blue",icon:l().createElement(o.EditOutlined,null),label:"Modified"},D:{color:"red",icon:l().createElement(o.DeleteOutlined,null),label:"Deleted"},R:{color:"orange",icon:l().createElement(o.EditOutlined,null),label:"Renamed"}},L=function(){var e,t,n,s,d=(0,u.N)(),m=j().token,p=(0,c.useAPIClient)(),f=(0,i.E)(),y=f.selectedRepo,h=f.branches,g=f.currentBranch,v=P((0,r.useState)([]),2),b=v[0],E=v[1],w=P((0,r.useState)(!1),2),S=w[0],k=w[1],C=P((0,r.useState)(null),2),x=C[0],I=C[1],A=P((0,r.useState)(null),2),T=A[0],R=A[1],z=P((0,r.useState)(!1),2),L=z[0],U=z[1],H=P((0,r.useState)(null),2),W=H[0],_=H[1],G=P((0,r.useState)(null),2),$=G[0],K=G[1],V=P((0,r.useState)(""),2),J=V[0],Q=V[1],X=(0,r.useCallback)(B(function(){var e,t,n;return F(this,function(r){switch(r.label){case 0:if(!y)return[2];k(!0),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,p.request({url:"gitManager:log",params:{repositoryId:y.id,maxCount:100}})];case 2:return E((null==(n=(null==(t=r.sent().data)||null==(e=t.data)?void 0:e.data)||(null==t?void 0:t.data))?void 0:n.all)||[]),[3,5];case 3:return console.warn("Failed to load commit history:",r.sent()),E([]),[3,5];case 4:return k(!1),[7];case 5:return[2]}})}),[p,y]);(0,r.useEffect)(function(){(null==y?void 0:y.status)==="connected"?X():E([])},[y]);var Y=b.filter(function(e){var t=J.trim().toLowerCase();return!t||String(e.message||e.subject||e.body||"").toLowerCase().includes(t)}),Z=(e=B(function(e){var t,n;return F(this,function(r){switch(r.label){case 0:I(e),U(!0),_(null),K(null),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,p.request({url:"gitManager:commitDetail",params:{repositoryId:y.id,commitHash:e.hash}})];case 2:return R((null==(n=r.sent().data)||null==(t=n.data)?void 0:t.data)||(null==n?void 0:n.data)),[3,5];case 3:return r.sent(),R(null),[3,5];case 4:return U(!1),[7];case 5:return[2]}})}),function(t){return e.apply(this,arguments)}),ee=(t=B(function(e,t){var n,r;return F(this,function(l){switch(l.label){case 0:K(t),l.label=1;case 1:return l.trys.push([1,3,,4]),[4,p.request({url:"gitManager:diff",params:{repositoryId:y.id,commitHash:e,file:t}})];case 2:return _((null==(r=l.sent().data)||null==(n=r.data)?void 0:n.data)||(null==r?void 0:r.data)||""),[3,4];case 3:return l.sent(),_("// Failed to load diff"),[3,4];case 4:return[2]}})}),function(e,n){return t.apply(this,arguments)});if(!y)return l().createElement(a.Empty,{description:d("No repository selected")});if("connected"!==y.status)return l().createElement(a.Empty,{description:d("Repository not cloned yet")});var et=[{title:"",key:"graph",width:40,render:function(e,t,n){return l().createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",height:"100%"}},l().createElement("div",{style:{width:10,height:10,borderRadius:"50%",background:0===n?m.colorPrimary:m.colorBorder,border:"2px solid ".concat(0===n?m.colorPrimary:m.colorBorder),zIndex:1}}))}},{title:d("Message"),dataIndex:"message",key:"message",render:function(e,t){return l().createElement("div",null,l().createElement(M,{strong:!0,style:{fontSize:13}},e),l().createElement("div",{style:{marginTop:2}},l().createElement(M,{type:"secondary",style:{fontSize:12}},l().createElement(o.UserOutlined,{style:{marginRight:4}}),t.author_name,l().createElement("span",{style:{margin:"0 8px"}},"\xb7"),l().createElement(o.ClockCircleOutlined,{style:{marginRight:4}}),N(t.date))))}},{title:"Hash",dataIndex:"hash",key:"hash",width:100,render:function(e){return l().createElement(M,{code:!0,copyable:!0,style:{fontSize:12}},null==e?void 0:e.substring(0,7))}},{title:"",key:"action",width:80,render:function(e,t){return l().createElement(a.Button,{size:"small",icon:l().createElement(o.DiffOutlined,null),onClick:function(){return Z(t)}},"Detail")}}];return l().createElement("div",null,l().createElement("div",{style:{marginBottom:12,display:"flex",alignItems:"center",gap:12}},l().createElement(o.BranchesOutlined,null),l().createElement(a.Select,{size:"small",style:{width:200},value:g,options:h.map(function(e){return{label:e,value:e}}),disabled:!0}),l().createElement(a.Input.Search,{allowClear:!0,size:"small",style:{width:280},placeholder:d("Search commit title or message"),value:J,onChange:function(e){return Q(e.target.value)}}),l().createElement(M,{type:"secondary"},Y.length," commits")),S?l().createElement(a.Spin,null):l().createElement(a.Table,{dataSource:Y,columns:et,rowKey:"hash",size:"small",pagination:{pageSize:30,showSizeChanger:!0},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return Z(e)}}}}),l().createElement(a.Drawer,{title:x?l().createElement("div",null,l().createElement(M,{strong:!0},x.message),l().createElement("div",null,l().createElement(M,{type:"secondary",style:{fontSize:12}},null==(n=x.hash)?void 0:n.substring(0,7)," \xb7 ",x.author_name," \xb7 ",N(x.date)))):"Commit Detail",open:!!x,onClose:function(){I(null),R(null),_(null),K(null)},width:800,extra:x&&y?l().createElement(O,{target:{type:"commit",repositoryId:y.id,commitSha:x.hash,title:x.message},size:"small"}):null},L?l().createElement(a.Spin,null):T?l().createElement("div",null,l().createElement(M,{strong:!0},"Changed Files (",(null==(s=T.files)?void 0:s.length)||0,")"),l().createElement(a.List,{size:"small",style:{marginTop:8},dataSource:T.files||[],renderItem:function(e){var t=D[e.status]||D.M,n=$===e.file;return l().createElement(a.List.Item,{style:{cursor:"pointer",background:n?m.colorPrimaryBg:void 0,padding:"6px 12px",borderRadius:4},onClick:function(){return ee(x.hash,e.file)}},l().createElement(a.Space,null,l().createElement(a.Tag,{color:t.color,style:{minWidth:70,textAlign:"center"}},t.icon," ",t.label),l().createElement(M,{style:{fontSize:13}},e.file)))}}),null!==W&&l().createElement("div",{style:{marginTop:16}},l().createElement(M,{strong:!0,style:{display:"block",marginBottom:8}},l().createElement(o.FileTextOutlined,null)," ",$),l().createElement(q,{content:W}))):null))},q=(0,r.memo)(function(e){var t=e.content,n=j().token,r=t.split("\n");return l().createElement("div",{style:{fontFamily:"'JetBrains Mono', 'Fira Code', Consolas, monospace",fontSize:12,lineHeight:1.5,border:"1px solid ".concat(n.colorBorderSecondary),borderRadius:6,overflow:"auto",maxHeight:500}},r.map(function(e,t){var r="transparent",a=n.colorText;return e.startsWith("+")&&!e.startsWith("+++")?(r="rgba(46, 160, 67, 0.12)",a="#2ea043"):e.startsWith("-")&&!e.startsWith("---")?(r="rgba(248, 81, 73, 0.12)",a="#f85149"):e.startsWith("@@")?(r="rgba(56, 139, 253, 0.08)",a="#388bfd"):(e.startsWith("diff")||e.startsWith("index"))&&(a=n.colorTextSecondary),l().createElement("div",{key:t,style:{padding:"0 12px",background:r,color:a,whiteSpace:"pre",minHeight:20}},l().createElement("span",{style:{display:"inline-block",width:40,color:n.colorTextQuaternary,userSelect:"none",textAlign:"right",marginRight:12}},t+1),e)}))});function N(e){if(!e)return"";var t=new Date(e),n=new Date().getTime()-t.getTime(),r=n/36e5;return r<1?"".concat(Math.round(n/6e4),"m ago"):r<24?"".concat(Math.round(r),"h ago"):r<168?"".concat(Math.round(r/24),"d ago"):t.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function H(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function W(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){H(a,r,l,o,i,"next",e)}function i(e){H(a,r,l,o,i,"throw",e)}o(void 0)})}}function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return U(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var $=a.Typography.Text;a.Typography.Paragraph,a.Typography.Title;var K=a.theme.useToken,V={opened:{color:"blue",icon:l().createElement(o.MergeOutlined,null),label:"Open"},merged:{color:"purple",icon:l().createElement(o.CheckCircleOutlined,null),label:"Merged"},closed:{color:"red",icon:l().createElement(o.CloseCircleOutlined,null),label:"Closed"}},J=function(){var e,t,n,s=(0,u.N)(),d=K().token,m=(0,c.useAPIClient)(),p=(0,i.E)().selectedRepo,f=_((0,r.useState)([]),2),y=f[0],h=f[1],g=_((0,r.useState)(!1),2),v=g[0],b=g[1],E=_((0,r.useState)("opened"),2),w=E[0],S=E[1],k=_((0,r.useState)(""),2),C=k[0],x=k[1],I=_((0,r.useState)({page:1,perPage:20,total:0,totalPages:0}),2),A=I[0],T=I[1],R=_((0,r.useState)(null),2),z=R[0],B=R[1],P=_((0,r.useState)(null),2),F=P[0],M=P[1],j=_((0,r.useState)(!1),2),D=j[0],L=j[1],q=_((0,r.useState)([]),2),N=q[0],U=q[1],H=_((0,r.useState)(!1),2);H[0],H[1];var J=(0,r.useCallback)(W(function(){var e,t,n,r=arguments;return G(this,function(l){switch(l.label){case 0:if(e=r.length>0&&void 0!==r[0]?r[0]:1,!p)return[2];b(!0),l.label=1;case 1:return l.trys.push([1,3,4,5]),[4,m.request({url:"gitManager:mergeRequests",params:{repositoryId:p.id,state:w,search:C||void 0,page:e,perPage:20}})];case 2:return h((null==(n=(null==(t=l.sent().data)?void 0:t.data)||t)?void 0:n.data)||[]),(null==n?void 0:n.pagination)&&T(n.pagination),[3,5];case 3:return l.sent(),h([]),[3,5];case 4:return b(!1),[7];case 5:return[2]}})}),[m,p,w,C]);(0,r.useEffect)(function(){(null==p?void 0:p.status)==="connected"?J(1):h([])},[p,w]);var X=(e=W(function(e){var t,n,r,l,a,o,i,c,u,s;return G(this,function(d){switch(d.label){case 0:B(e),L(!0),U([]),d.label=1;case 1:return d.trys.push([1,3,4,5]),[4,Promise.all([m.request({url:"gitManager:mergeRequestDetail",params:{repositoryId:p.id,mrIid:e.iid}}),m.request({url:"gitManager:mergeRequestNotes",params:{repositoryId:p.id,mrIid:e.iid}})])];case 2:return c=(i=_.apply(void 0,[d.sent(),2]))[0],u=i[1],M((null==c||null==(n=c.data)||null==(t=n.data)?void 0:t.data)||(null==c||null==(r=c.data)?void 0:r.data)),U(Array.isArray(s=(null==u||null==(a=u.data)||null==(l=a.data)?void 0:l.data)||(null==u||null==(o=u.data)?void 0:o.data))?s:[]),[3,5];case 3:return d.sent(),M(null),[3,5];case 4:return L(!1),[7];case 5:return[2]}})}),function(t){return e.apply(this,arguments)});if(!p)return l().createElement(a.Empty,{description:s("No repository selected")});if("connected"!==p.status)return l().createElement(a.Empty,{description:s("Repository not cloned yet")});var ee=[{title:"",key:"state_icon",width:40,render:function(e,t){var n=V[t.state]||V.opened;return l().createElement(a.Tooltip,{title:n.label},l().createElement("span",{style:{color:d["color".concat("blue"===n.color?"Primary":"purple"===n.color?"PurpleText":"Error")]||n.color,fontSize:16}},n.icon))}},{title:s("Title"),key:"title",render:function(e,t){var n,r;return l().createElement("div",null,l().createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},t.draft&&l().createElement(a.Tag,{color:"default",style:{fontSize:11,lineHeight:"16px"}},"DRAFT"),l().createElement($,{strong:!0,style:{fontSize:13}},t.title),t.hasConflicts&&l().createElement(a.Tooltip,{title:s("Has conflicts")},l().createElement(o.ExclamationCircleOutlined,{style:{color:d.colorWarning}}))),l().createElement("div",{style:{marginTop:2}},l().createElement($,{type:"secondary",style:{fontSize:12}},"!",t.iid,l().createElement("span",{style:{margin:"0 6px"}},"\xb7"),l().createElement(o.UserOutlined,{style:{marginRight:3}}),(null==(n=t.author)?void 0:n.name)||(null==(r=t.author)?void 0:r.username)||"Unknown",l().createElement("span",{style:{margin:"0 6px"}},"\xb7"),l().createElement(o.ClockCircleOutlined,{style:{marginRight:3}}),et(t.updatedAt))))}},{title:"",key:"branches",width:250,render:function(e,t){return l().createElement("div",{style:{fontSize:12}},l().createElement(a.Tag,{color:"blue",style:{fontSize:11}},l().createElement(o.BranchesOutlined,null)," ",t.sourceBranch),l().createElement("span",{style:{margin:"0 4px",color:d.colorTextSecondary}},"→"),l().createElement(a.Tag,{color:"green",style:{fontSize:11}},l().createElement(o.BranchesOutlined,null)," ",t.targetBranch))}},{title:"",key:"labels",width:180,render:function(e,t){var n;return l().createElement(a.Space,{size:2,wrap:!0},(t.labels||[]).slice(0,3).map(function(e){return l().createElement(a.Tag,{key:e,style:{fontSize:11}},e)}),(null==(n=t.labels)?void 0:n.length)>3&&l().createElement($,{type:"secondary",style:{fontSize:11}},"+",t.labels.length-3))}},{title:"",key:"meta",width:120,render:function(e,t){var n;return l().createElement(a.Space,{size:12},t.userNotesCount>0&&l().createElement(a.Tooltip,{title:"".concat(t.userNotesCount," comments")},l().createElement(a.Badge,{count:t.userNotesCount,size:"small",color:d.colorTextSecondary},l().createElement(o.CommentOutlined,{style:{fontSize:14,color:d.colorTextSecondary}}))),(null==(n=t.assignees)?void 0:n.length)>0&&l().createElement(a.Avatar.Group,{size:"small",max:{count:2}},t.assignees.map(function(e){var t;return l().createElement(a.Tooltip,{key:e.username,title:e.name},l().createElement(a.Avatar,{size:"small",src:e.avatarUrl},null==(t=e.name)?void 0:t[0]))})))}},{title:"",key:"actions",width:160,render:function(e,t){return l().createElement(a.Space,{onClick:function(e){return e.stopPropagation()}},l().createElement(O,{target:{type:"mr",repositoryId:p.id,mrIid:t.iid,title:t.title},size:"small"}),l().createElement(a.Tooltip,{title:s("View Details")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.FileTextOutlined,null),onClick:function(e){e.stopPropagation(),X(t)}})),l().createElement(a.Tooltip,{title:s("Open in GitLab")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.ExportOutlined,null),onClick:function(e){e.stopPropagation(),window.open(t.webUrl,"_blank")}})))}}];return l().createElement("div",null,l().createElement("div",{style:{marginBottom:12,display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"}},l().createElement(a.Select,{size:"small",style:{width:140},value:w,onChange:function(e){return S(e)},options:[{label:"\uD83D\uDFE2 ".concat(s("Open")),value:"opened"},{label:"\uD83D\uDFE3 ".concat(s("Merged")),value:"merged"},{label:"\uD83D\uDD34 ".concat(s("Closed")),value:"closed"},{label:"\uD83D\uDCCB ".concat(s("All")),value:"all"}]}),l().createElement(a.Input.Search,{size:"small",style:{width:260},placeholder:s("Search merge requests..."),value:C,onChange:function(e){return x(e.target.value)},onSearch:function(){J(1)},allowClear:!0}),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:function(){return J(1)}},s("Refresh")),l().createElement($,{type:"secondary",style:{fontSize:12}},null!=A.total?"".concat(A.total," ").concat(s("total")):"")),v?l().createElement(a.Spin,null):l().createElement(a.Table,{dataSource:y,columns:ee,rowKey:"iid",size:"small",pagination:{current:A.page,pageSize:A.perPage,total:A.total||void 0,onChange:function(e){return J(e)},showSizeChanger:!1},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return X(e)}}}}),l().createElement(a.Drawer,{title:z?l().createElement("div",null,l().createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},(t=V[z.state]||V.opened,l().createElement(a.Tag,{color:t.color},t.icon," ",t.label)),z.draft&&l().createElement(a.Tag,null,"DRAFT"),l().createElement($,{strong:!0,style:{fontSize:15}},"!",z.iid)),l().createElement($,{strong:!0,style:{fontSize:16,display:"block",marginTop:4}},z.title)):s("Merge Request"),open:!!z,onClose:function(){B(null),M(null),U([])},width:900,extra:z&&l().createElement(a.Space,null,l().createElement(O,{target:{type:"mr",repositoryId:p.id,mrIid:z.iid,title:z.title},size:"small"}),l().createElement(a.Button,{type:"link",icon:l().createElement(o.ExportOutlined,null),onClick:function(){return window.open(z.webUrl,"_blank")}},s("Open in GitLab")))},D?l().createElement(a.Spin,null):F?l().createElement(a.Tabs,{defaultActiveKey:"overview",items:[{key:"overview",label:s("Overview"),children:l().createElement(Q,{mr:F})},{key:"changes",label:"".concat(s("Changes")," (").concat((null==(n=F.changes)?void 0:n.length)||0,")"),children:l().createElement(Y,{changes:F.changes||[]})},{key:"comments",label:l().createElement(a.Badge,{count:N.length,size:"small",offset:[6,0]},s("Comments")),children:l().createElement(Z,{notes:N})}]}):null))},Q=function(e){var t,n,r,i,c=e.mr,s=(0,u.N)(),d=K().token;return l().createElement("div",null,l().createElement("div",{style:{padding:"12px 16px",background:d.colorBgLayout,borderRadius:8,marginBottom:16,display:"flex",alignItems:"center",gap:8}},l().createElement(a.Tag,{color:"blue"},l().createElement(o.BranchesOutlined,null)," ",c.sourceBranch),l().createElement("span",{style:{color:d.colorTextSecondary,fontSize:16}},"→"),l().createElement(a.Tag,{color:"green"},l().createElement(o.BranchesOutlined,null)," ",c.targetBranch),c.hasConflicts&&l().createElement(a.Tag,{color:"warning",icon:l().createElement(o.ExclamationCircleOutlined,null)},s("Has conflicts"))),c.description&&l().createElement("div",{style:{marginBottom:16}},l().createElement($,{strong:!0},s("Description")),l().createElement("div",{style:{marginTop:8,padding:"12px 16px",background:d.colorBgLayout,borderRadius:8,whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:13,lineHeight:1.6}},c.description)),l().createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px 24px",fontSize:13}},l().createElement(X,{label:s("Author"),value:c.author&&l().createElement(a.Space,{size:6},l().createElement(a.Avatar,{size:"small",src:c.author.avatarUrl},null==(t=c.author.name)?void 0:t[0]),l().createElement($,null,c.author.name),l().createElement($,{type:"secondary"},"@",c.author.username))}),l().createElement(X,{label:s("Assignees"),value:(null==(n=c.assignees)?void 0:n.length)>0?l().createElement(a.Space,{size:4,wrap:!0},c.assignees.map(function(e){var t;return l().createElement(a.Tooltip,{key:e.username,title:e.name},l().createElement(a.Tag,{icon:l().createElement(a.Avatar,{size:14,src:e.avatarUrl},null==(t=e.name)?void 0:t[0])},e.name))})):l().createElement($,{type:"secondary"},"—")}),l().createElement(X,{label:s("Reviewers"),value:(null==(r=c.reviewers)?void 0:r.length)>0?l().createElement(a.Space,{size:4,wrap:!0},c.reviewers.map(function(e){return l().createElement(a.Tag,{key:e.username},e.name)})):l().createElement($,{type:"secondary"},"—")}),l().createElement(X,{label:s("Labels"),value:(null==(i=c.labels)?void 0:i.length)>0?l().createElement(a.Space,{size:4,wrap:!0},c.labels.map(function(e){return l().createElement(a.Tag,{key:e},e)})):l().createElement($,{type:"secondary"},"—")}),l().createElement(X,{label:s("Created"),value:l().createElement($,null,en(c.createdAt))}),l().createElement(X,{label:s("Updated"),value:l().createElement($,null,en(c.updatedAt))}),c.mergedBy&&l().createElement(X,{label:s("Merged by"),value:l().createElement($,null,c.mergedBy.name," — ",en(c.mergedAt))}),c.closedBy&&l().createElement(X,{label:s("Closed by"),value:l().createElement($,null,c.closedBy.name," — ",en(c.closedAt))})))},X=function(e){var t=e.label,n=e.value;return l().createElement("div",null,l().createElement($,{type:"secondary",style:{fontSize:12,display:"block",marginBottom:2}},t),l().createElement("div",null,n))},Y=function(e){var t=e.changes,n=K().token,o=(0,u.N)(),i=_((0,r.useState)(null),2),c=i[0],s=i[1];return t.length?l().createElement("div",null,t.map(function(e,t){var r=e.newPath||e.oldPath,o=c===r,i=null;return i=e.newFile?l().createElement(a.Tag,{color:"green"},"NEW"):e.deletedFile?l().createElement(a.Tag,{color:"red"},"DEL"):e.renamedFile?l().createElement(a.Tag,{color:"orange"},"RENAMED"):l().createElement(a.Tag,{color:"blue"},"MOD"),l().createElement("div",{key:t,style:{marginBottom:8}},l().createElement("div",{style:{padding:"6px 12px",background:o?n.colorPrimaryBg:n.colorBgLayout,borderRadius:6,cursor:"pointer",display:"flex",alignItems:"center",gap:8},onClick:function(){return s(o?null:r)}},i,l().createElement($,{style:{fontSize:13,fontFamily:"monospace"}},r),e.renamedFile&&e.oldPath!==e.newPath&&l().createElement($,{type:"secondary",style:{fontSize:11}},"(← ",e.oldPath,")")),o&&e.diff&&l().createElement(ee,{content:e.diff}))})):l().createElement(a.Empty,{description:o("No changes")})},Z=function(e){var t=e.notes,n=K().token,r=(0,u.N)();return t.length?l().createElement("div",null,t.map(function(e){var t,o,i,c,u;return l().createElement("div",{key:e.id,style:{padding:"12px 16px",marginBottom:12,background:n.colorBgLayout,borderRadius:8,borderLeft:"3px solid ".concat(e.resolved?n.colorSuccess:n.colorBorderSecondary)}},l().createElement("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8}},l().createElement(a.Avatar,{size:"small",src:null==(t=e.author)?void 0:t.avatarUrl},null==(i=e.author)||null==(o=i.name)?void 0:o[0]),l().createElement($,{strong:!0,style:{fontSize:13}},null==(c=e.author)?void 0:c.name),l().createElement($,{type:"secondary",style:{fontSize:12}},"@",null==(u=e.author)?void 0:u.username),l().createElement($,{type:"secondary",style:{fontSize:11,marginLeft:"auto"}},et(e.createdAt)),e.resolvable&&l().createElement(a.Tag,{color:e.resolved?"success":"default",style:{fontSize:11}},e.resolved?r("Resolved"):r("Unresolved"))),l().createElement("div",{style:{whiteSpace:"pre-wrap",wordBreak:"break-word",fontSize:13,lineHeight:1.6}},e.body))})):l().createElement(a.Empty,{description:r("No comments")})},ee=(0,r.memo)(function(e){var t=e.content,n=K().token,r=t.split("\n");return l().createElement("div",{style:{fontFamily:"'JetBrains Mono', 'Fira Code', Consolas, monospace",fontSize:12,lineHeight:1.5,border:"1px solid ".concat(n.colorBorderSecondary),borderRadius:6,overflow:"auto",maxHeight:400,margin:"4px 0"}},r.map(function(e,t){var r="transparent",a=n.colorText;return e.startsWith("+")&&!e.startsWith("+++")?(r="rgba(46, 160, 67, 0.12)",a="#2ea043"):e.startsWith("-")&&!e.startsWith("---")?(r="rgba(248, 81, 73, 0.12)",a="#f85149"):e.startsWith("@@")?(r="rgba(56, 139, 253, 0.08)",a="#388bfd"):(e.startsWith("diff")||e.startsWith("index"))&&(a=n.colorTextSecondary),l().createElement("div",{key:t,style:{padding:"0 12px",background:r,color:a,whiteSpace:"pre",minHeight:20}},l().createElement("span",{style:{display:"inline-block",width:40,color:n.colorTextQuaternary,userSelect:"none",textAlign:"right",marginRight:12}},t+1),e)}))});function et(e){if(!e)return"";var t=new Date(e),n=new Date().getTime()-t.getTime(),r=n/36e5;return r<1?"".concat(Math.round(n/6e4),"m ago"):r<24?"".concat(Math.round(r),"h ago"):r<168?"".concat(Math.round(r/24),"d ago"):t.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}function en(e){return e?new Date(e).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function er(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function el(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function ea(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){el(a,r,l,o,i,"next",e)}function i(e){el(a,r,l,o,i,"throw",e)}o(void 0)})}}function eo(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||ec(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ei(e){return function(e){if(Array.isArray(e))return er(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ec(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ec(e,t){if(e){if("string"==typeof e)return er(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return er(e,t)}}function eu(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var es=a.Typography.Text,ed=a.theme.useToken,em={not_added:{color:"green",icon:l().createElement(o.FileAddOutlined,null),label:"New"},modified:{color:"blue",icon:l().createElement(o.EditOutlined,null),label:"Modified"},deleted:{color:"red",icon:l().createElement(o.DeleteOutlined,null),label:"Deleted"},renamed:{color:"orange",icon:l().createElement(o.EditOutlined,null),label:"Renamed"},conflicted:{color:"red",icon:l().createElement(o.WarningOutlined,null),label:"Conflict"},created:{color:"green",icon:l().createElement(o.FileAddOutlined,null),label:"Created"}},ep=function(){var e,t,n,s,d,m,p,f=(0,u.N)(),y=ed().token,h=(0,c.useAPIClient)(),g=(0,i.E)(),v=g.selectedRepo,b=g.refreshRepos,E=eo((0,r.useState)(null),2),w=E[0],S=E[1],k=eo((0,r.useState)(null),2),C=k[0],x=k[1],I=eo((0,r.useState)(null),2),A=I[0],T=I[1],O=(0,r.useCallback)(ea(function(){var e,t;return eu(this,function(n){switch(n.label){case 0:if(!v||"connected"!==v.status)return x(null),[2];S("status"),n.label=1;case 1:return n.trys.push([1,3,4,5]),[4,h.request({url:"gitManager:status",method:"post",params:{repositoryId:v.id}})];case 2:return x((null==(t=n.sent().data)||null==(e=t.data)?void 0:e.data)||(null==t?void 0:t.data)),[3,5];case 3:return console.warn("Failed to load git status:",n.sent()),x(null),[3,5];case 4:return S(null),[7];case 5:return[2]}})}),[h,v]);(0,r.useEffect)(function(){O()},[O]);var R=(0,r.useCallback)((e=ea(function(e){var t,n,r,l,o,i,c,u,s;return eu(this,function(d){switch(d.label){case 0:if(!v)return[2];S(e),T(null),d.label=1;case 1:return d.trys.push([1,6,7,8]),[4,h.request({url:"gitManager:".concat(e),method:"post",params:{repositoryId:v.id}})];case 2:if(n=d.sent().data,T({action:e,success:!0,message:f("{{action}} completed successfully",{action:e})}),a.message.success(f("{{action}} completed",{action:e})),r=(null==n||null==(t=n.data)?void 0:t.data)||(null==n?void 0:n.data),"status"===e&&x(r),"fetch"!==e&&"pull"!==e)return[3,4];return[4,O()];case 3:d.sent(),d.label=4;case 4:return[4,b()];case 5:return d.sent(),[3,8];case 6:return s=(null==(l=d.sent())||null==(u=l.response)||null==(c=u.data)||null==(i=c.errors)||null==(o=i[0])?void 0:o.message)||f("{{action}} failed",{action:e}),T({action:e,success:!1,message:s}),a.message.error(s),[3,8];case 7:return S(null),[7];case 8:return[2]}})}),function(t){return e.apply(this,arguments)}),[h,v,b,O]);if(!v)return l().createElement(a.Empty,{description:f("No repository selected")});if("connected"!==v.status)return l().createElement(a.Empty,{description:f("Repository not cloned yet")});var z=C?ei((null==(t=C.not_added)?void 0:t.map(function(e){return{file:e,status:"not_added"}}))||[]).concat(ei((null==(n=C.modified)?void 0:n.map(function(e){return{file:e,status:"modified"}}))||[]),ei((null==(s=C.deleted)?void 0:s.map(function(e){return{file:e,status:"deleted"}}))||[]),ei((null==(d=C.renamed)?void 0:d.map(function(e){return{file:"string"==typeof e?e:e.to,status:"renamed"}}))||[]),ei((null==(m=C.conflicted)?void 0:m.map(function(e){return{file:e,status:"conflicted"}}))||[]),ei((null==(p=C.created)?void 0:p.map(function(e){return{file:e,status:"created"}}))||[])):[];return l().createElement("div",null,l().createElement(a.Space,{size:"middle",wrap:!0,style:{marginBottom:24}},l().createElement(a.Button,{size:"large",icon:l().createElement(o.SyncOutlined,null),loading:"fetch"===w,onClick:function(){return R("fetch")}},f("Fetch")),l().createElement(a.Button,{size:"large",type:"primary",icon:l().createElement(o.CloudDownloadOutlined,null),loading:"pull"===w,onClick:function(){return R("pull")}},f("Pull")),l().createElement(a.Button,{size:"large",icon:l().createElement(o.BranchesOutlined,null),loading:"status"===w,onClick:O},f("Status"))),A&&l().createElement(a.Card,{size:"small",style:{marginBottom:16,borderColor:A.success?y.colorSuccessBorder:y.colorErrorBorder}},l().createElement(a.Space,null,A.success?l().createElement(o.CheckCircleOutlined,{style:{color:y.colorSuccess}}):l().createElement(o.WarningOutlined,{style:{color:y.colorError}}),l().createElement(es,{strong:!0},A.action),l().createElement(es,null,A.message))),C&&l().createElement(a.Card,{title:f("Working Directory Status"),size:"small"},l().createElement(a.Descriptions,{column:3,size:"small",style:{marginBottom:16}},l().createElement(a.Descriptions.Item,{label:"Branch"},l().createElement(a.Tag,{icon:l().createElement(o.BranchesOutlined,null),color:"blue"},C.current)),l().createElement(a.Descriptions.Item,{label:"Tracking"},l().createElement(es,null,C.tracking||"N/A")),l().createElement(a.Descriptions.Item,{label:"Changes"},l().createElement(a.Space,null,C.ahead>0&&l().createElement(a.Badge,{count:"".concat(C.ahead," ahead"),style:{backgroundColor:y.colorPrimary}}),C.behind>0&&l().createElement(a.Badge,{count:"".concat(C.behind," behind"),style:{backgroundColor:y.colorWarning}}),0===C.ahead&&0===C.behind&&l().createElement(a.Tag,{color:"green",icon:l().createElement(o.CheckCircleOutlined,null)},"Up to date")))),z.length>0?l().createElement(l().Fragment,null,l().createElement(es,{strong:!0,style:{display:"block",marginBottom:8}},z.length," changed file(s)"),l().createElement(a.List,{size:"small",dataSource:z,renderItem:function(e){var t=em[e.status]||{color:"default",icon:l().createElement(o.QuestionCircleOutlined,null),label:e.status};return l().createElement(a.List.Item,{style:{padding:"4px 0"}},l().createElement(a.Space,null,l().createElement(a.Tag,{color:t.color,style:{minWidth:80,textAlign:"center"}},t.icon," ",t.label),l().createElement(es,{code:!0,style:{fontSize:13}},e.file)))}})):l().createElement(es,{type:"secondary"},"Working directory clean")))};function ef(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ey(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ef(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ef(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var eh=function(e){var t=e.value,n=e.onChange,o=e.allowClear,i=e.size,u=e.style,s=e.placeholder,d=(0,c.useAPIClient)(),m=ey((0,r.useState)([]),2),p=m[0],f=m[1],y=ey((0,r.useState)(!1),2),h=y[0],g=y[1];return(0,r.useEffect)(function(){var e=!1;return g(!0),d.request({url:"aiEmployees:listByUser"}).then(function(t){if(!e){var n,r=(null==t||null==(n=t.data)?void 0:n.data)||[];f(Array.isArray(r)?r:[])}}).catch(function(){}).finally(function(){e||g(!1)}),function(){e=!0}},[d]),l().createElement(a.Select,{value:t,onChange:n,allowClear:void 0===o||o,loading:h,size:i,style:u,placeholder:s||"Select AI employee",options:p.map(function(e){return{value:e.username,label:"".concat(e.nickname||e.username," (@").concat(e.username,")")}}),showSearch:!0,optionFilterProp:"label"})};function eg(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ev(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return eg(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eg(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var eb=function(e){var t=e.value,n=e.onChange,o=e.allowClear,i=e.size,u=e.style,s=e.placeholder,d=(0,c.useAPIClient)(),m=ev((0,r.useState)([]),2),p=m[0],f=m[1],y=ev((0,r.useState)(!1),2),h=y[0],g=y[1];return(0,r.useEffect)(function(){var e=!1;return g(!0),d.request({url:"ai:listAllEnabledModels"}).then(function(t){if(!e){var n,r=(null==t||null==(n=t.data)?void 0:n.data)||[];f(Array.isArray(r)?r:[])}}).catch(function(){}).finally(function(){e||g(!1)}),function(){e=!0}},[d]),l().createElement(a.Select,{value:t,onChange:n,allowClear:void 0===o||o,loading:h,size:i,style:u,placeholder:s||"Select LLM Service",options:p.map(function(e){return{value:e.llmService,label:e.llmServiceTitle||e.llmService}}),showSearch:!0,optionFilterProp:"label"})};function eE(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ew(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return eE(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eE(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var eS=function(e){var t=e.llmService,n=e.value,o=e.onChange,i=e.allowClear,u=e.size,s=e.style,d=e.placeholder,m=(0,c.useAPIClient)(),p=ew((0,r.useState)([]),2),f=p[0],y=p[1],h=ew((0,r.useState)(!1),2),g=h[0],v=h[1];return(0,r.useEffect)(function(){var e=!1;return t?(v(!0),m.request({url:"ai:listModels",params:{llmService:t}}).then(function(t){if(!e){var n,r=(null==t||null==(n=t.data)?void 0:n.data)||[];y(Array.isArray(r)?r:[])}}).catch(function(){e||y([])}).finally(function(){e||v(!1)}),function(){e=!0}):void y([])},[m,t]),l().createElement(a.Select,{value:n,onChange:o,allowClear:void 0===i||i,loading:g,size:u,style:s,placeholder:d||"Select LLM Model",options:f.map(function(e){return{value:e.id,label:e.id}}),showSearch:!0,optionFilterProp:"label",disabled:!t})};function ek(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function eC(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function ex(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){eC(a,r,l,o,i,"next",e)}function i(e){eC(a,r,l,o,i,"throw",e)}o(void 0)})}}function eI(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ek(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ek(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eA(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var eT={manual:"Manual",onMergeRequestCreated:"On MR Created",both:"Both"},eO={auto:"Auto",manual:"Manual",disabled:"Disabled"},eR=function(){var e,t,n=(0,u.N)(),s=(0,c.useAPIClient)(),d=(0,i.E)().repos,m=eI((0,r.useState)([]),2),p=m[0],f=m[1],y=eI((0,r.useState)(!1),2),h=y[0],g=y[1],v=eI((0,r.useState)(null),2),b=v[0],E=v[1],w=eI((0,r.useState)(!1),2),S=w[0],k=w[1],C=eI(a.Form.useForm(),1)[0],x=(0,r.useCallback)(ex(function(){var e;return eA(this,function(t){switch(t.label){case 0:g(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,s.request({url:"gitReviewFlows:list",params:{pageSize:100}})];case 2:return f((null==(e=t.sent().data)?void 0:e.data)||[]),[3,4];case 3:return g(!1),[7];case 4:return[2]}})}),[s]);(0,r.useEffect)(function(){x()},[x]);var I=(e=ex(function(){var e,t,r,l,o,i;return eA(this,function(c){switch(c.label){case 0:return c.trys.push([0,6,,7]),[4,C.validateFields()];case 1:if((void 0===(e=c.sent()).repositoryId||""===e.repositoryId)&&(e.repositoryId=null),!(null==b?void 0:b.id))return[3,3];return[4,s.request({url:"gitReviewFlows:update",method:"post",params:{filterByTk:b.id},data:e})];case 2:return c.sent(),a.message.success(n("Flow updated")),[3,5];case 3:return[4,s.request({url:"gitReviewFlows:create",method:"post",data:e})];case 4:c.sent(),a.message.success(n("Flow created")),c.label=5;case 5:return k(!1),E(null),C.resetFields(),x(),[3,7];case 6:if(null==(t=c.sent())?void 0:t.errorFields)return[2];return a.message.error((null==t||null==(i=t.response)||null==(o=i.data)||null==(l=o.errors)||null==(r=l[0])?void 0:r.message)||(null==t?void 0:t.message)||n("Failed to save")),[3,7];case 7:return[2]}})}),function(){return e.apply(this,arguments)}),A=(t=ex(function(e){var t;return eA(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,s.request({url:"gitReviewFlows:destroy",method:"post",params:{filterByTk:e}})];case 1:return r.sent(),a.message.success(n("Flow deleted")),x(),[3,3];case 2:return t=r.sent(),a.message.error((null==t?void 0:t.message)||n("Failed to delete")),[3,3];case 3:return[2]}})}),function(e){return t.apply(this,arguments)}),T=function(e){E(e),C.setFieldsValue(e),k(!0)},O=[{title:n("Name"),dataIndex:"name",render:function(e,t){return l().createElement(a.Space,null,l().createElement("span",{style:{fontWeight:500}},e),!t.enabled&&l().createElement(a.Tag,{color:"default"},n("Disabled")))}},{title:n("Repository"),dataIndex:"repositoryId",render:function(e){if(null==e)return l().createElement(a.Tag,{color:"purple"},n("Global"));var t=d.find(function(t){return t.id===e});return t?l().createElement(a.Space,{size:4},l().createElement(o.BranchesOutlined,null),t.name):"#".concat(e)}},{title:n("AI Employee"),dataIndex:"aiEmployeeUsername",render:function(e){return e?l().createElement(a.Tag,{color:"blue"},"@",e):l().createElement("span",{style:{color:"#999"}},"—")}},{title:n("Trigger"),dataIndex:"triggerMode",render:function(e){return l().createElement(a.Tag,null,n(eT[e]||e))}},{title:n("Post"),dataIndex:"postMode",render:function(e){return l().createElement(a.Tag,{color:"auto"===e?"green":"manual"===e?"orange":"default"},n(eO[e]||e))}},{title:"",key:"actions",width:100,render:function(e,t){return l().createElement(a.Space,null,l().createElement(a.Tooltip,{title:n("Edit")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.EditOutlined,null),onClick:function(){return T(t)}})),l().createElement(a.Popconfirm,{title:n("Delete this flow?"),onConfirm:function(){return A(t.id)}},l().createElement(a.Button,{size:"small",danger:!0,icon:l().createElement(o.DeleteOutlined,null)})))}}];return l().createElement("div",null,l().createElement("div",{style:{marginBottom:12,display:"flex",justifyContent:"space-between"}},l().createElement(a.Button,{type:"primary",icon:l().createElement(o.PlusOutlined,null),onClick:function(){E(null),C.resetFields(),C.setFieldsValue({enabled:!0,triggerMode:"manual",postMode:"manual",instructions:"Please review the code changes with a focus on:\n1. Best Practices & Style:\n - C#/VB.NET: Follow standard naming conventions (PascalCase for methods/properties, camelCase for fields). Ensure proper use of async/await (avoid .Result/.Wait()). Use LINQ efficiently.\n - JS/TS: Use strict equality (===), prefer const/let. Ensure TypeScript types are explicit and avoid 'any'.\n2. Performance: Watch out for N+1 queries, unnecessary loops, and memory leaks.\n3. Security: Identify potential SQL injections, XSS vulnerabilities, and improper data validation.\n4. Maintainability: Check for readability, SOLID principles, and DRY. Ensure meaningful naming.\n5. Error Handling: Verify that exceptions are properly caught, handled, and logged."}),k(!0)}},n("Add Review Flow")),l().createElement(a.Button,{onClick:x,loading:h},n("Refresh"))),l().createElement(a.Table,{size:"small",rowKey:"id",loading:h,dataSource:p,columns:O,locale:{emptyText:l().createElement(a.Empty,{description:n("No review flows yet")})},pagination:{pageSize:20}}),l().createElement(a.Modal,{title:(null==b?void 0:b.id)?n("Edit Review Flow"):n("Add Review Flow"),open:S,onCancel:function(){k(!1),E(null),C.resetFields()},onOk:I,width:640,destroyOnClose:!0},l().createElement(a.Form,{form:C,layout:"vertical"},l().createElement(a.Form.Item,{name:"name",label:n("Name"),rules:[{required:!0}]},l().createElement(a.Input,{placeholder:n("e.g. Default review flow")})),l().createElement(a.Form.Item,{name:"repositoryId",label:n("Repository"),extra:n("Leave empty to apply to all repositories")},l().createElement(a.Select,{allowClear:!0,placeholder:n("All repositories (global)"),options:d.map(function(e){return{value:e.id,label:e.name}})})),l().createElement(a.Form.Item,{name:"aiEmployeeUsername",label:n("AI Employee"),rules:[{required:!0}]},l().createElement(eh,{placeholder:n("Select an AI employee")})),l().createElement(a.Space.Compact,{style:{width:"100%"}},l().createElement(a.Form.Item,{name:"llmService",label:n("LLM Service (optional)"),style:{flex:1,marginRight:8}},l().createElement(eb,{placeholder:n("Override flow LLM service")})),l().createElement(a.Form.Item,{noStyle:!0,shouldUpdate:function(e,t){return e.llmService!==t.llmService}},function(e){var t=(0,e.getFieldValue)("llmService");return l().createElement(a.Form.Item,{name:"model",label:n("Model (optional)"),style:{flex:1}},t?l().createElement(eS,{llmService:t,placeholder:n("Override LLM model")}):l().createElement(a.Input,{placeholder:n("Select an LLM service first"),disabled:!0}))})),l().createElement(a.Form.Item,{name:"triggerMode",label:n("Trigger Mode"),rules:[{required:!0}],extra:n("Auto modes require enabling Auto Review on the repository")},l().createElement(a.Select,{options:[{value:"manual",label:n("Manual")},{value:"onMergeRequestCreated",label:n("On Merge Request Created")},{value:"both",label:n("Both")}]})),l().createElement(a.Form.Item,{name:"postMode",label:n("Post Mode"),rules:[{required:!0}]},l().createElement(a.Select,{options:[{value:"auto",label:n("Auto post to MR")},{value:"manual",label:n("Manual approval before posting")},{value:"disabled",label:n("Do not post")}]})),l().createElement(a.Form.Item,{name:"branchFilter",label:n("Branch Filter (regex, optional)")},l().createElement(a.Input,{placeholder:"^(feature|hotfix)/.*$"})),l().createElement(a.Form.Item,{name:"instructions",label:n("Additional Instructions (optional)")},l().createElement(a.Input.TextArea,{rows:8,placeholder:n("Extra guidance appended to every review prompt")})),l().createElement(a.Form.Item,{name:"enabled",label:n("Enabled"),valuePropName:"checked"},l().createElement(a.Switch,null)))))},ez=n(457),eB=a.theme.useToken,eP=function(e){var t=e.content,n=e.maxHeight,r=eB().token;return t?l().createElement("div",{style:{fontSize:13,lineHeight:1.65,color:r.colorText,maxHeight:n,overflow:n?"auto":void 0}},l().createElement(ez.UG,{components:{code:function(e){var t,n,a=e.inline,o=e.children,i=function(e,t){if(null==e)return{};var n,r,l=function(e,t){if(null==e)return{};var n,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}(e,["inline","children"]),c=String(o).replace(/\n$/,"");return a?l().createElement("code",(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},i),n=n={style:{background:r.colorBgLayout,padding:"1px 6px",borderRadius:4,fontSize:12,fontFamily:"'JetBrains Mono', 'Fira Code', Consolas, monospace"}},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t),c):l().createElement("pre",{style:{background:r.colorBgLayout,padding:"10px 14px",borderRadius:6,overflowX:"auto",fontSize:12,fontFamily:"'JetBrains Mono', 'Fira Code', Consolas, monospace"}},l().createElement("code",null,c))},blockquote:function(e){var t=e.children;return l().createElement("blockquote",{style:{borderLeft:"3px solid ".concat(r.colorBorder),paddingLeft:12,color:r.colorTextSecondary,margin:"8px 0"}},t)}}},t)):null};function eF(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function eM(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function ej(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){eM(a,r,l,o,i,"next",e)}function i(e){eM(a,r,l,o,i,"throw",e)}o(void 0)})}}function eD(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return eF(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eF(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eL(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var eq=a.Typography.Text;a.Typography.Title,a.Typography.Paragraph;var eN=a.theme.useToken,eU={pending:"default",running:"blue",completed:"green",failed:"red"},eH={pending_approval:"orange",approved:"cyan",posted:"green",post_failed:"red",skipped:"default",rejected:"red"},eW=function(e){var t,n,s,d=e.initialFilter,m=(0,u.N)();eN().token;var p=(0,c.useAPIClient)(),f=(0,i.E)().repos,y=eD((0,r.useState)([]),2),h=y[0],g=y[1],v=eD((0,r.useState)(!1),2),b=v[0],E=v[1],w=eD((0,r.useState)("all"),2),S=w[0],k=w[1],C=eD((0,r.useState)("pending_approval"===(void 0===d?"all":d)?"pending_approval":"all"),2),x=C[0],I=C[1],A=eD((0,r.useState)("all"),2),T=A[0],O=A[1],R=eD((0,r.useState)(null),2),z=R[0],B=R[1],P=eD((0,r.useState)(!1),2),F=P[0],M=P[1],j=eD((0,r.useState)(""),2),D=j[0],L=j[1],q=(0,r.useCallback)(ej(function(){var e,t;return eL(this,function(n){switch(n.label){case 0:E(!0),n.label=1;case 1:return n.trys.push([1,,3,4]),e={},"all"!==S&&(e.status=S),"all"!==x&&(e.postStatus=x),"all"!==T&&(e.triggeredBy=T),[4,p.request({url:"gitCodeReviews:list",params:{pageSize:50,sort:["-id"],filter:Object.keys(e).length?e:void 0}})];case 2:return g((null==(t=n.sent().data)?void 0:t.data)||[]),[3,4];case 3:return E(!1),[7];case 4:return[2]}})}),[p,S,x,T]);(0,r.useEffect)(function(){q()},[q]),(0,r.useEffect)(function(){if(h.some(function(e){return"running"===e.status||"pending"===e.status})){var e=setInterval(q,4e3);return function(){return clearInterval(e)}}},[h,q]);var N=(0,r.useCallback)((t=ej(function(e){var t,n;return eL(this,function(r){switch(r.label){case 0:return[4,p.request({url:"gitCodeReviews:get",params:{filterByTk:e}})];case 1:return(n=null==(t=r.sent().data)?void 0:t.data)&&(g(function(t){return t.map(function(t){return t.id===e?n:t})}),(null==z?void 0:z.id)===e&&B(n)),[2]}})}),function(e){return t.apply(this,arguments)}),[p,z]),U=(n=ej(function(e){var t,n,r,l,o;return eL(this,function(i){switch(i.label){case 0:if(!z)return[2];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,p.request({url:"gitManager:reviewApprovePost",method:"post",data:{reviewId:z.id,editedMarkdown:e}})];case 2:return i.sent(),a.message.success(m("Review posted to merge request")),M(!1),N(z.id),q(),[3,4];case 3:return t=i.sent(),a.message.error((null==t||null==(o=t.response)||null==(l=o.data)||null==(r=l.errors)||null==(n=r[0])?void 0:n.message)||(null==t?void 0:t.message)||m("Failed to post review")),[3,4];case 4:return[2]}})}),function(e){return n.apply(this,arguments)}),H=(s=ej(function(){var e;return eL(this,function(t){switch(t.label){case 0:if(!z)return[2];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,p.request({url:"gitManager:reviewReject",method:"post",data:{reviewId:z.id}})];case 2:return t.sent(),a.message.success(m("Review rejected")),N(z.id),q(),[3,4];case 3:return e=t.sent(),a.message.error((null==e?void 0:e.message)||m("Failed to reject")),[3,4];case 4:return[2]}})}),function(){return s.apply(this,arguments)}),W=(0,r.useMemo)(function(){var e={};return f.forEach(function(t){return e[t.id]=t}),e},[f]),_=[{title:m("Target"),key:"target",render:function(e,t){var n=W[t.repositoryId],r=(null==n?void 0:n.name)||"#".concat(t.repositoryId);return"mr"===t.targetType?l().createElement(a.Space,{size:4},l().createElement(eq,{strong:!0},r),l().createElement(eq,{type:"secondary"},"!",t.mrIid)):"commit"===t.targetType?l().createElement(a.Space,{size:4},l().createElement(eq,{strong:!0},r),l().createElement(eq,{type:"secondary",style:{fontFamily:"monospace"}},String(t.commitSha||"").slice(0,7))):l().createElement(a.Space,{size:4},l().createElement(eq,{strong:!0},r),l().createElement(eq,{type:"secondary"},t.branch))}},{title:m("Type"),dataIndex:"targetType",width:80,render:function(e){return l().createElement(a.Tag,null,m(e.toUpperCase()))}},{title:m("Status"),dataIndex:"status",width:120,render:function(e){var t=eU[e]||"default",n="running"===e?l().createElement(o.ClockCircleOutlined,{spin:!0}):null;return l().createElement(a.Tag,{color:t,icon:n},m(e))}},{title:m("Post Status"),dataIndex:"postStatus",width:140,render:function(e){return l().createElement(a.Tag,{color:eH[e]||"default"},m(e))}},{title:m("Commit"),key:"sha",width:140,render:function(e,t){var n=t.headSha,r=t.latestSha;return n?l().createElement(a.Space,{size:4},l().createElement(a.Tag,{style:{fontFamily:"monospace",fontSize:11}},String(n).slice(0,7)),n&&r&&n!==r&&l().createElement(a.Tooltip,{title:"".concat(m("New commits"),": ").concat(String(r).slice(0,7))},l().createElement(a.Tag,{color:"orange",style:{fontSize:11}},m("new")))):l().createElement(eq,{type:"secondary"},"—")}},{title:m("Trigger"),dataIndex:"triggeredBy",width:90,render:function(e){return l().createElement(a.Tag,{color:"poll"===e?"geekblue":"default",style:{fontSize:11}},"poll"===e?m("Polling"):m("Manual"))}},{title:m("Duration"),dataIndex:"durationMs",width:90,render:function(e){return e?"".concat((e/1e3).toFixed(1),"s"):"—"}},{title:m("Created"),dataIndex:"createdAt",width:160,render:function(e){return e?new Date(e).toLocaleString():""}},{title:"",key:"actions",width:60,render:function(e,t){return l().createElement(a.Tooltip,{title:m("View")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.FileTextOutlined,null),onClick:function(){B(t),M(!1),L(t.reviewMarkdown||"")}}))}}];return l().createElement("div",null,l().createElement(a.Space,{style:{marginBottom:12},wrap:!0},l().createElement(a.Select,{size:"small",style:{width:140},value:S,onChange:k,options:[{value:"all",label:m("All statuses")},{value:"pending",label:m("pending")},{value:"running",label:m("running")},{value:"completed",label:m("completed")},{value:"failed",label:m("failed")}]}),l().createElement(a.Select,{size:"small",style:{width:180},value:x,onChange:I,options:[{value:"all",label:m("All post statuses")},{value:"pending_approval",label:m("pending_approval")},{value:"approved",label:m("approved")},{value:"posted",label:m("posted")},{value:"post_failed",label:m("post_failed")},{value:"skipped",label:m("skipped")},{value:"rejected",label:m("rejected")}]}),l().createElement(a.Select,{size:"small",style:{width:130},value:T,onChange:O,options:[{value:"all",label:m("All triggers")},{value:"manual",label:m("Manual")},{value:"poll",label:m("Polling")}]}),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:q},m("Refresh"))),l().createElement(a.Table,{size:"small",rowKey:"id",loading:b,dataSource:h,columns:_,locale:{emptyText:l().createElement(a.Empty,{description:m("No reviews yet")})},pagination:{pageSize:20},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){B(e),M(!1),L(e.reviewMarkdown||"")}}}}),l().createElement(a.Drawer,{title:z?l().createElement(a.Space,null,l().createElement(o.RobotOutlined,null),l().createElement("span",null,m("Code Review")),l().createElement(a.Tag,{color:eU[z.status]},m(z.status)),l().createElement(a.Tag,{color:eH[z.postStatus]},m(z.postStatus))):m("Code Review"),open:!!z,onClose:function(){B(null),M(!1)},width:840,extra:z&&l().createElement(a.Space,null,l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:function(){return N(z.id)}},m("Refresh")),"mr"===z.targetType&&l().createElement(a.Button,{size:"small",icon:l().createElement(o.ExportOutlined,null),onClick:function(){var e,t=W[z.repositoryId],n=null==t||null==(e=t.repoUrl)?void 0:e.replace(/\.git$/,"");n&&z.mrIid&&window.open("".concat(n,"/-/merge_requests/").concat(z.mrIid),"_blank")}},m("Open MR")))},z&&l().createElement(e_,{review:z,editing:F,editedMarkdown:D,onEdit:function(){return M(!0)},onCancelEdit:function(){M(!1),L(z.reviewMarkdown||"")},onChangeMarkdown:L,onApprove:U,onReject:H})))},e_=function(e){var t=e.review,n=e.editing,r=e.editedMarkdown,i=e.onEdit,c=e.onCancelEdit,s=e.onChangeMarkdown,d=e.onApprove,m=e.onReject,p=(0,u.N)(),f=eN().token,y="completed"===t.status&&"mr"===t.targetType&&("pending_approval"===t.postStatus||"approved"===t.postStatus||"post_failed"===t.postStatus);return l().createElement("div",null,"running"===t.status&&l().createElement(a.Alert,{type:"info",showIcon:!0,message:p("Review in progress…"),description:p("The AI employee is analyzing the code. This page will refresh automatically."),style:{marginBottom:16}}),"failed"===t.status&&l().createElement(a.Alert,{type:"error",showIcon:!0,message:p("Review failed"),description:l().createElement("pre",{style:{whiteSpace:"pre-wrap",margin:0}},t.error),style:{marginBottom:16}}),"completed"===t.status&&"post_failed"===t.postStatus&&t.error&&l().createElement(a.Alert,{type:"error",showIcon:!0,message:p("Post Failed"),description:l().createElement("pre",{style:{whiteSpace:"pre-wrap",margin:0}},t.error),style:{marginBottom:16}}),y&&l().createElement(a.Space,{style:{marginBottom:16},wrap:!0},n?l().createElement(l().Fragment,null,l().createElement(a.Button,{type:"primary",icon:l().createElement(o.CheckOutlined,null),onClick:function(){return d(r)}},p("Save & Post")),l().createElement(a.Button,{onClick:c},p("Cancel"))):l().createElement(l().Fragment,null,l().createElement(a.Button,{type:"primary",icon:l().createElement(o.CheckOutlined,null),onClick:function(){return d(t.reviewMarkdown)}},p("Approve & Post")),l().createElement(a.Button,{icon:l().createElement(o.EditOutlined,null),onClick:i},p("Edit & Post")),l().createElement(a.Popconfirm,{title:p("Reject this review?"),onConfirm:m},l().createElement(a.Button,{danger:!0,icon:l().createElement(o.CloseOutlined,null)},p("Reject"))))),l().createElement(a.Tabs,{defaultActiveKey:"content",items:[{key:"content",label:p("Review Content"),children:n?l().createElement(a.Input.TextArea,{value:r,onChange:function(e){return s(e.target.value)},autoSize:{minRows:16,maxRows:40},style:{fontFamily:"'JetBrains Mono', 'Fira Code', Consolas, monospace",fontSize:13}}):t.reviewMarkdown?l().createElement("div",{style:{background:f.colorBgLayout,padding:16,borderRadius:8,maxHeight:"70vh",overflowY:"auto"}},l().createElement(eP,{content:t.reviewMarkdown})):l().createElement(a.Empty,{description:p("No content yet")})},{key:"metadata",label:p("Metadata"),children:l().createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px 16px",fontSize:13}},l().createElement(eG,{label:p("Status"),value:t.status}),l().createElement(eG,{label:p("Post Status"),value:t.postStatus}),l().createElement(eG,{label:p("Trigger Type"),value:t.targetType}),l().createElement(eG,{label:p("Triggered By"),value:t.triggeredBy}),l().createElement(eG,{label:p("Reviewed SHA"),value:t.headSha||"—"}),l().createElement(eG,{label:p("Latest SHA"),value:t.latestSha||"—"}),l().createElement(eG,{label:p("Started At"),value:t.startedAt&&new Date(t.startedAt).toLocaleString()}),l().createElement(eG,{label:p("Finished At"),value:t.finishedAt&&new Date(t.finishedAt).toLocaleString()}),l().createElement(eG,{label:p("Duration"),value:t.durationMs?"".concat((t.durationMs/1e3).toFixed(1),"s"):"—"}),l().createElement(eG,{label:p("Posted Note ID"),value:t.postedNoteId||"—"}),l().createElement(eG,{label:p("Approved By"),value:t.approvedBy||"—"}),l().createElement(eG,{label:p("Approved At"),value:t.approvedAt&&new Date(t.approvedAt).toLocaleString()}),l().createElement(eG,{label:p("Session ID"),value:t.sessionId||"—"}),l().createElement(eG,{label:p("Flow ID"),value:t.flowId||"—"}))}]}))},eG=function(e){var t=e.label,n=e.value;return l().createElement("div",null,l().createElement(eq,{type:"secondary",style:{fontSize:12,display:"block"}},t),l().createElement("div",{style:{wordBreak:"break-all"}},n||"—"))};function e$(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function eK(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function eV(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){eK(a,r,l,o,i,"next",e)}function i(e){eK(a,r,l,o,i,"throw",e)}o(void 0)})}}function eJ(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return e$(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e$(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eQ(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var eX=a.Typography.Text,eY=a.theme.useToken,eZ=function(){var e,t,n=(0,u.N)();eY().token;var s=(0,c.useAPIClient)(),d=(0,i.E)(),m=d.repos,p=d.refreshRepos,f=eJ((0,r.useState)(null),2),y=f[0],h=f[1],g=eJ((0,r.useState)(!1),2),v=g[0],b=g[1],E=eJ((0,r.useState)(null),2),w=E[0],S=E[1],k=eJ((0,r.useState)([]),2),C=k[0],x=k[1],I=(0,r.useCallback)(eV(function(){var e,t,n,r;return eQ(this,function(l){switch(l.label){case 0:b(!0),l.label=1;case 1:return l.trys.push([1,,4,5]),[4,Promise.all([s.request({url:"gitManager:pollerStatus"}),s.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,triggerMode:{$in:["onMergeRequestCreated","both"]}}}})])];case 2:return n=(t=eJ.apply(void 0,[l.sent(),2]))[0].data,r=t[1],h((null==n?void 0:n.data)||null),x((null==r||null==(e=r.data)?void 0:e.data)||[]),[4,p()];case 3:return l.sent(),[3,5];case 4:return b(!1),[7];case 5:return[2]}})}),[s,p]);(0,r.useEffect)(function(){I()},[I]);var A=(e=eV(function(){var e,t,r,l,o,i,c,u,d;return eQ(this,function(m){switch(m.label){case 0:S("all"),m.label=1;case 1:return m.trys.push([1,3,4,5]),[4,s.request({url:"gitManager:pollNow",method:"post"})];case 2:return t=(null==(e=m.sent().data)?void 0:e.data)||{},a.message.success(n("Polled {{scanned}} MRs, triggered {{triggered}} reviews",{scanned:null!=(r=t.scanned)?r:0,triggered:null!=(l=t.triggered)?l:0})),I(),[3,5];case 3:return o=m.sent(),a.message.error((null==o||null==(d=o.response)||null==(u=d.data)||null==(c=u.errors)||null==(i=c[0])?void 0:i.message)||(null==o?void 0:o.message)||n("Failed")),[3,5];case 4:return S(null),[7];case 5:return[2]}})}),function(){return e.apply(this,arguments)}),T=(t=eV(function(e){var t,r,l,o,i,c,u,d,m;return eQ(this,function(p){switch(p.label){case 0:S(e),p.label=1;case 1:return p.trys.push([1,3,4,5]),[4,s.request({url:"gitManager:pollNow",method:"post",data:{repositoryId:e}})];case 2:return r=(null==(t=p.sent().data)?void 0:t.data)||{},a.message.success(n("Polled {{scanned}} MRs, triggered {{triggered}} reviews",{scanned:null!=(l=r.scanned)?l:0,triggered:null!=(o=r.triggered)?o:0})),I(),[3,5];case 3:return i=p.sent(),a.message.error((null==i||null==(m=i.response)||null==(d=m.data)||null==(u=d.errors)||null==(c=u[0])?void 0:c.message)||(null==i?void 0:i.message)||n("Failed")),[3,5];case 4:return S(null),[7];case 5:return[2]}})}),function(e){return t.apply(this,arguments)}),O=m.filter(function(e){return e.autoReview});return l().createElement("div",null,l().createElement(a.Card,{size:"small",style:{marginBottom:16},title:l().createElement(a.Space,null,l().createElement(o.ClockCircleOutlined,null),n("Polling Status")),extra:l().createElement(a.Space,null,l().createElement(a.Button,{size:"small",type:"primary",icon:l().createElement(o.ThunderboltOutlined,null),onClick:A,loading:"all"===w,disabled:0===O.length},n("Poll Now (All)")),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:I,loading:v},n("Refresh")))},l().createElement(a.Space,{direction:"vertical",size:4,style:{width:"100%"}},l().createElement(a.Space,null,l().createElement(eX,{type:"secondary"},n("Background poller"),":"),l().createElement(a.Tag,{color:(null==y?void 0:y.running)?"green":"default"},(null==y?void 0:y.running)?n("Running"):n("Stopped")),(null==y?void 0:y.polling)&&l().createElement(a.Tag,{color:"blue"},n("Polling now…"))),l().createElement(a.Space,null,l().createElement(eX,{type:"secondary"},n("Interval"),":"),l().createElement(eX,null,(null==y?void 0:y.intervalSec)?"".concat(y.intervalSec,"s"):"—")),l().createElement(a.Space,null,l().createElement(eX,{type:"secondary"},n("Last tick"),":"),l().createElement(eX,null,(null==y?void 0:y.lastTickAt)?new Date(y.lastTickAt).toLocaleString():n("Never"))),(null==y?void 0:y.lastError)&&l().createElement(a.Space,null,l().createElement(eX,{type:"secondary"},n("Last error"),":"),l().createElement(eX,{type:"danger",style:{fontSize:12}},y.lastError)))),l().createElement(a.Card,{size:"small",title:l().createElement(a.Space,null,l().createElement(o.RobotOutlined,null),n("Auto-Review Repositories")),extra:l().createElement(eX,{type:"secondary",style:{fontSize:12}},n("Toggle Auto Review on the Repositories tab to enable polling"))},0===O.length?l().createElement(a.Empty,{description:n("No repositories have Auto Review enabled")}):l().createElement(a.Table,{size:"small",rowKey:"id",dataSource:O,pagination:!1,columns:[{title:n("Repository Name"),dataIndex:"name"},{title:n("Primary Auto Flow"),dataIndex:"autoReviewFlowId",width:220,render:function(e,t){var r=C.find(function(t){return Number(t.id)===Number(e)}),o=C.find(function(e){return e.repositoryId===t.id||null==e.repositoryId});return r?l().createElement(a.Tag,{color:"blue"},r.name):o?l().createElement(a.Tag,{color:"default"},n("Fallback"),": ",o.name):l().createElement(a.Tag,{color:"red"},n("No matching flow available"))}},{title:n("Last Polled At"),dataIndex:"lastPolledAt",width:200,render:function(e){return e?new Date(e).toLocaleString():n("Never")}},{title:"",key:"actions",width:120,render:function(e,t){return l().createElement(a.Tooltip,{title:n("Poll this repository now")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.ThunderboltOutlined,null),onClick:function(){return T(t.id)},loading:w===t.id},n("Poll Now")))}}]})))},e0=a.Typography.Text,e1=a.theme.useToken,e2=function(){var e=(0,u.N)(),t=e1().token,n=(0,i.E)(),c=n.repos,s=n.selectedRepo,d=n.setSelectedRepo,m=n.refreshRepos;return(0,r.useEffect)(function(){m()},[]),l().createElement("div",{style:{height:"100%"}},l().createElement("div",{style:{padding:"12px 0",marginBottom:16,display:"flex",alignItems:"center",gap:12,borderBottom:"1px solid ".concat(t.colorBorderSecondary)}},l().createElement(o.DatabaseOutlined,{style:{fontSize:16}}),l().createElement(e0,{strong:!0},"Repository:"),l().createElement(a.Select,{style:{minWidth:250},placeholder:e("Select a repository"),value:null==s?void 0:s.id,onChange:function(e){d(c.find(function(t){return t.id===e})||null)},options:c.map(function(t){return{label:l().createElement(a.Space,null,t.name,l().createElement(a.Tag,{color:"connected"===t.status?"green":"default",style:{fontSize:11}},"connected"===t.status?e("Connected"):e("Disconnected"))),value:t.id}}),allowClear:!0,onClear:function(){return d(null)}}),s&&l().createElement(e0,{type:"secondary",style:{fontSize:12}},s.repoUrl)),l().createElement(a.Tabs,{type:"card",defaultActiveKey:"explorer",destroyInactiveTabPane:!0,items:[{key:"explorer",label:l().createElement("span",null,l().createElement(o.FolderOutlined,null)," ",e("File Explorer")),children:l().createElement(w,null)},{key:"history",label:l().createElement("span",null,l().createElement(o.HistoryOutlined,null)," ",e("History")),children:l().createElement(L,null)},{key:"merge-requests",label:l().createElement("span",null,l().createElement(o.MergeOutlined,null)," ",e("Merge Requests")),children:l().createElement(J,null)},{key:"operations",label:l().createElement("span",null,l().createElement(o.ToolOutlined,null)," ",e("Operations")),children:l().createElement(ep,null)},{key:"review-flows",label:l().createElement("span",null,l().createElement(o.RobotOutlined,null)," ",e("Review Flows")),children:l().createElement(eR,null)},{key:"review-history",label:l().createElement("span",null,l().createElement(o.AuditOutlined,null)," ",e("Review History")),children:l().createElement(eW,null)},{key:"polling",label:l().createElement("span",null,l().createElement(o.ClockCircleOutlined,null)," ",e("Polling")),children:l().createElement(eZ,null)}]}))},e3=function(){return l().createElement(i.Z,null,l().createElement(e2,null))}},630:function(e,t,n){n.d(t,{E:function(){return m},Z:function(){return p}});var r=n(156),l=n.n(r),a=n(772);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e,t,n,r,l,a,o){try{var i=e[a](o),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,l)}function c(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){i(a,r,l,o,c,"next",e)}function c(e){i(a,r,l,o,c,"throw",e)}o(void 0)})}}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var a=[],o=!0,i=!1;try{for(l=l.call(e);!(o=(n=l.next()).done)&&(a.push(n.value),!t||a.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){var n,r,l,a,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var d=(0,r.createContext)(null);function m(){return(0,r.useContext)(d)}var p=function(e){var t=e.children,n=(0,a.useAPIClient)(),o=u((0,r.useState)([]),2),i=o[0],m=o[1],p=u((0,r.useState)(null),2),f=p[0],y=p[1],h=u((0,r.useState)(!1),2),g=h[0],v=h[1],b=u((0,r.useState)([]),2),E=b[0],w=b[1],S=u((0,r.useState)(""),2),k=S[0],C=S[1],x=(0,r.useRef)(f);x.current=f;var I=(0,r.useCallback)(c(function(){var e,t,r,l;return s(this,function(a){switch(a.label){case 0:if(!(e=x.current)||"connected"!==e.status)return w([]),C(""),[2];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,n.request({url:"gitManager:branches",params:{repositoryId:e.id}})];case 2:return(l=(null==(r=a.sent().data)||null==(t=r.data)?void 0:t.data)||(null==r?void 0:r.data))&&(w(l.all||[]),C(l.current||"")),[3,4];case 3:return a.sent(),w([]),C(""),[3,4];case 4:return[2]}})}),[n]),A=(0,r.useCallback)(c(function(){var e,t,r,l;return s(this,function(a){switch(a.label){case 0:v(!0),a.label=1;case 1:return a.trys.push([1,,3,4]),[4,n.request({url:"gitRepositories:list",params:{pageSize:100}})];case 2:return m(t=(null==(e=a.sent().data)?void 0:e.data)||[]),(r=x.current)&&(l=t.find(function(e){return e.id===r.id}))&&y(l),[3,4];case 3:return v(!1),[7];case 4:return[2]}})}),[n]);return l().createElement(d.Provider,{value:{repos:i,selectedRepo:f,loading:g,branches:E,currentBranch:k,setSelectedRepo:y,refreshRepos:A,refreshBranches:I}},t)}},618:function(e,t,n){n.d(t,{N:function(){return l}});var r=n(772);function l(){var e=(0,r.useApp)();return function(t,n){return e.i18n.t(t,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:["plugin-git-manager","client"]},n))}}}}]);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is part of the NocoBase (R) project.
|
|
3
|
-
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
-
* Authors: NocoBase Team.
|
|
5
|
-
*
|
|
6
|
-
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
-
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
"use strict";(self.webpackChunkplugin_git_manager=self.webpackChunkplugin_git_manager||[]).push([["906"],{275:function(e,t,r){r.r(t),r.d(t,{RepositoryConfig:function(){return y}});var n=r(156),a=r.n(n),l=r(721),o=r(482),u=r(772),i=r(630),c=r(618);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function d(e,t,r,n,a,l,o){try{var u=e[l](o),i=u.value}catch(e){r(e);return}u.done?t(i):Promise.resolve(i).then(n,a)}function f(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var l=e.apply(t,r);function o(e){d(l,n,a,o,u,"next",e)}function u(e){d(l,n,a,o,u,"throw",e)}o(void 0)})}}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,u=!1;try{for(a=a.call(e);!(o=(r=a.next()).done)&&(l.push(r.value),!t||l.length!==t);o=!0);}catch(e){u=!0,n=e}finally{try{o||null==a.return||a.return()}finally{if(u)throw n}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){var r,n,a,l,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return l={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function u(l){return function(u){var i=[l,u];if(r)throw TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(a=2&i[0]?n.return:i[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,i[1])).done)return a;switch(n=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){o.label=i[1];break}if(6===i[0]&&o.label<a[1]){o.label=a[1],a=i;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(i);break}a[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],n=0}finally{r=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}}var y=function(){var e,t,r,s=(0,c.N)(),d=(0,u.useAPIClient)(),y=(0,i.E)(),h=y.repos,b=y.refreshRepos,v=y.selectedRepo,g=y.setSelectedRepo,w=p((0,n.useState)(!1),2),E=w[0],S=w[1],R=p((0,n.useState)(null),2),I=R[0],O=R[1],k=p(l.Form.useForm(),1)[0],P=p((0,n.useState)(null),2),C=P[0],F=P[1],j=p((0,n.useState)([]),2),x=j[0],A=j[1],B=(0,n.useCallback)(f(function(){var e;return m(this,function(t){switch(t.label){case 0:return[4,d.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,triggerMode:{$in:["onMergeRequestCreated","both"]}}}})];case 1:return A((null==(e=t.sent().data)?void 0:e.data)||[]),[2]}})}),[d]);(0,n.useEffect)(function(){B().catch(function(){})},[B]);var q=function(e){return x.filter(function(t){return t.repositoryId===e||null==t.repositoryId}).map(function(e){return{value:e.id,label:"".concat(e.name).concat(null==e.repositoryId?" (".concat(s("global"),")"):"")}})},T=(e=f(function(){var e,t;return m(this,function(r){switch(r.label){case 0:return[4,k.validateFields()];case 1:e=r.sent(),I&&(!e.pat||"••••••••"===e.pat)&&delete e.pat,r.label=2;case 2:if(r.trys.push([2,8,,9]),!I)return[3,4];return[4,d.request({url:"gitRepositories:update",method:"post",params:{filterByTk:I.id},data:e})];case 3:return r.sent(),l.message.success(s("Repository updated")),[3,6];case 4:return[4,d.request({url:"gitRepositories:create",method:"post",data:e})];case 5:r.sent(),l.message.success(s("Repository added")),r.label=6;case 6:return S(!1),O(null),k.resetFields(),[4,b()];case 7:return r.sent(),[3,9];case 8:return t=r.sent(),l.message.error((null==t?void 0:t.message)||s("Failed to save")),[3,9];case 9:return[2]}})}),function(){return e.apply(this,arguments)}),D=(t=f(function(e){return m(this,function(t){switch(t.label){case 0:return[4,d.request({url:"gitRepositories:destroy",method:"post",params:{filterByTk:e}})];case 1:return t.sent(),(null==v?void 0:v.id)===e&&g(null),l.message.success(s("Deleted")),[4,b()];case 2:return t.sent(),[2]}})}),function(e){return t.apply(this,arguments)}),z=(r=f(function(e){var t,r,n,a,o;return m(this,function(u){switch(u.label){case 0:F("clone-".concat(e.id)),u.label=1;case 1:return u.trys.push([1,4,5,6]),[4,d.request({url:"gitManager:clone",method:"post",params:{repositoryId:e.id}})];case 2:return u.sent(),l.message.success(s("Clone successful")),[4,b()];case 3:return u.sent(),[3,6];case 4:return t=u.sent(),l.message.error((null==t||null==(o=t.response)||null==(a=o.data)||null==(n=a.errors)||null==(r=n[0])?void 0:r.message)||s("Clone failed")),[3,6];case 5:return F(null),[7];case 6:return[2]}})}),function(e){return r.apply(this,arguments)}),U=[{title:s("Repository Name"),dataIndex:"name",key:"name",render:function(e,t){return a().createElement("a",{onClick:function(){return g(t)}},e)}},{title:s("Repository URL"),dataIndex:"repoUrl",key:"repoUrl",ellipsis:!0},{title:s("Local Path"),dataIndex:"localPath",key:"localPath",ellipsis:!0},{title:s("Default Branch"),dataIndex:"defaultBranch",key:"defaultBranch",width:120},{title:a().createElement(l.Tooltip,{title:s("Auto-poll new merge requests every 5 minutes")},a().createElement(l.Space,{size:4},a().createElement(o.RobotOutlined,null),s("Auto Review"))),dataIndex:"autoReview",key:"autoReview",width:110,render:function(e,t){var r;return a().createElement(l.Switch,{size:"small",checked:!!e,onChange:(r=f(function(e){var r,n,a,o;return m(this,function(u){switch(u.label){case 0:return u.trys.push([0,3,,4]),n=q(t.id),[4,d.request({url:"gitRepositories:update",method:"post",params:{filterByTk:t.id},data:{autoReview:e,autoReviewFlowId:e&&!t.autoReviewFlowId?null!=(a=null==(r=n[0])?void 0:r.value)?a:null:t.autoReviewFlowId}})];case 1:return u.sent(),[4,b()];case 2:return u.sent(),[3,4];case 3:return o=u.sent(),l.message.error((null==o?void 0:o.message)||s("Failed to save")),[3,4];case 4:return[2]}})}),function(e){return r.apply(this,arguments)})})}},{title:s("Primary Auto Flow"),dataIndex:"autoReviewFlowId",key:"autoReviewFlowId",width:220,render:function(e,t){var r,n=q(t.id);return a().createElement(l.Select,{allowClear:!0,size:"small",style:{width:"100%"},disabled:!t.autoReview,placeholder:s("Select a flow"),value:e||void 0,options:n,notFoundContent:s("No matching flow available"),onChange:(r=f(function(e){var r;return m(this,function(n){switch(n.label){case 0:return n.trys.push([0,3,,4]),[4,d.request({url:"gitRepositories:update",method:"post",params:{filterByTk:t.id},data:{autoReviewFlowId:e||null}})];case 1:return n.sent(),[4,b()];case 2:return n.sent(),[3,4];case 3:return r=n.sent(),l.message.error((null==r?void 0:r.message)||s("Failed to save")),[3,4];case 4:return[2]}})}),function(e){return r.apply(this,arguments)})})}},{title:s("Status"),dataIndex:"status",key:"status",width:120,render:function(e){var t={connected:{color:"green",label:s("Connected")},error:{color:"red",label:s("Error")}}[e]||{color:"default",label:s("Disconnected")};return a().createElement(l.Tag,{color:t.color},t.label)}},{title:"",key:"actions",width:200,render:function(e,t){return a().createElement(l.Space,{size:"small"},"connected"!==t.status&&a().createElement(l.Button,{size:"small",icon:a().createElement(o.LinkOutlined,null),loading:C==="clone-".concat(t.id),onClick:function(){return z(t)}},s("Clone")),a().createElement(l.Button,{size:"small",onClick:function(){var e,r;O(t),k.setFieldsValue((e=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({},t),r=r={pat:""},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}),e)),S(!0)}},s("Edit")),a().createElement(l.Popconfirm,{title:s("Delete this repository?"),onConfirm:function(){return D(t.id)}},a().createElement(l.Button,{size:"small",danger:!0,icon:a().createElement(o.DeleteOutlined,null)})))}}];return a().createElement("div",null,a().createElement("div",{style:{marginBottom:16}},a().createElement(l.Button,{type:"primary",icon:a().createElement(o.PlusOutlined,null),onClick:function(){O(null),k.resetFields(),S(!0)}},s("Add Repository"))),a().createElement(l.Table,{dataSource:h,columns:U,rowKey:"id",size:"small",pagination:!1,rowClassName:function(e){return(null==v?void 0:v.id)===e.id?"ant-table-row-selected":""}}),a().createElement(l.Modal,{title:I?s("Edit Repository"):s("Add Repository"),open:E,onOk:T,onCancel:function(){S(!1),O(null)},width:520},a().createElement(l.Form,{form:k,layout:"vertical",initialValues:{defaultBranch:"main"}},a().createElement(l.Form.Item,{name:"name",label:s("Repository Name"),rules:[{required:!0}]},a().createElement(l.Input,{placeholder:"my-project"})),a().createElement(l.Form.Item,{name:"repoUrl",label:s("Repository URL"),rules:[{required:!0}]},a().createElement(l.Input,{placeholder:"https://gitlab.com/user/repo.git"})),a().createElement(l.Form.Item,{name:"username",label:s("Username"),rules:[{required:!0}],extra:s("GitLab username for PAT authentication")},a().createElement(l.Input,{placeholder:"gitlab-username"})),a().createElement(l.Form.Item,{name:"localPath",label:s("Local Path"),rules:[{required:!0}]},a().createElement(l.Input,{placeholder:"my-project"})),a().createElement(l.Form.Item,{name:"pat",label:s("Personal Access Token"),rules:I?[]:[{required:!0}]},a().createElement(l.Input.Password,{placeholder:I?"Leave empty to keep current":"ghp_xxxx..."})),a().createElement(l.Form.Item,{name:"defaultBranch",label:s("Default Branch")},a().createElement(l.Input,{placeholder:"main"})),a().createElement(l.Form.Item,{name:"autoReviewFlowId",label:s("Primary Auto Review Flow"),extra:s("Only flows with automatic trigger modes are shown")},a().createElement(l.Select,{allowClear:!0,placeholder:s("Select a flow"),options:q(null==I?void 0:I.id),notFoundContent:s("No matching flow available")})))))}},630:function(e,t,r){r.d(t,{E:function(){return f},Z:function(){return p}});var n=r(156),a=r.n(n),l=r(772);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e,t,r,n,a,l,o){try{var u=e[l](o),i=u.value}catch(e){r(e);return}u.done?t(i):Promise.resolve(i).then(n,a)}function i(e){return function(){var t=this,r=arguments;return new Promise(function(n,a){var l=e.apply(t,r);function o(e){u(l,n,a,o,i,"next",e)}function i(e){u(l,n,a,o,i,"throw",e)}o(void 0)})}}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,u=!1;try{for(a=a.call(e);!(o=(r=a.next()).done)&&(l.push(r.value),!t||l.length!==t);o=!0);}catch(e){u=!0,n=e}finally{try{o||null==a.return||a.return()}finally{if(u)throw n}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){var r,n,a,l,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return l={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(l[Symbol.iterator]=function(){return this}),l;function u(l){return function(u){var i=[l,u];if(r)throw TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(a=2&i[0]?n.return:i[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,i[1])).done)return a;switch(n=0,a&&(i=[2&i[0],a.value]),i[0]){case 0:case 1:a=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){o.label=i[1];break}if(6===i[0]&&o.label<a[1]){o.label=a[1],a=i;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(i);break}a[2]&&o.ops.pop(),o.trys.pop();continue}i=t.call(e,o)}catch(e){i=[6,e],n=0}finally{r=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}}var d=(0,n.createContext)(null);function f(){return(0,n.useContext)(d)}var p=function(e){var t=e.children,r=(0,l.useAPIClient)(),o=c((0,n.useState)([]),2),u=o[0],f=o[1],p=c((0,n.useState)(null),2),m=p[0],y=p[1],h=c((0,n.useState)(!1),2),b=h[0],v=h[1],g=c((0,n.useState)([]),2),w=g[0],E=g[1],S=c((0,n.useState)(""),2),R=S[0],I=S[1],O=(0,n.useRef)(m);O.current=m;var k=(0,n.useCallback)(i(function(){var e,t,n,a;return s(this,function(l){switch(l.label){case 0:if(!(e=O.current)||"connected"!==e.status)return E([]),I(""),[2];l.label=1;case 1:return l.trys.push([1,3,,4]),[4,r.request({url:"gitManager:branches",params:{repositoryId:e.id}})];case 2:return(a=(null==(n=l.sent().data)||null==(t=n.data)?void 0:t.data)||(null==n?void 0:n.data))&&(E(a.all||[]),I(a.current||"")),[3,4];case 3:return l.sent(),E([]),I(""),[3,4];case 4:return[2]}})}),[r]),P=(0,n.useCallback)(i(function(){var e,t,n,a;return s(this,function(l){switch(l.label){case 0:v(!0),l.label=1;case 1:return l.trys.push([1,,3,4]),[4,r.request({url:"gitRepositories:list",params:{pageSize:100}})];case 2:return f(t=(null==(e=l.sent().data)?void 0:e.data)||[]),(n=O.current)&&(a=t.find(function(e){return e.id===n.id}))&&y(a),[3,4];case 3:return v(!1),[7];case 4:return[2]}})}),[r]);return a().createElement(d.Provider,{value:{repos:u,selectedRepo:m,loading:b,branches:w,currentBranch:R,setSelectedRepo:y,refreshRepos:P,refreshBranches:k}},t)}},618:function(e,t,r){r.d(t,{N:function(){return a}});var n=r(772);function a(){var e=(0,n.useApp)();return function(t,r){return e.i18n.t(t,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({ns:["plugin-git-manager","client"]},r))}}}}]);
|