plugin-git-manager 1.1.9 → 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/187.d5545b7cc8b90bfc.js +10 -0
- package/dist/client/components/RunReviewButton.d.ts +1 -1
- package/dist/client/context/GitManagerContext.d.ts +2 -0
- package/dist/client/index.js +1 -1
- package/dist/externalVersion.js +6 -4
- package/dist/locale/en-US.json +10 -1
- package/dist/locale/vi-VN.json +2 -0
- package/dist/server/actions/git-actions.js +15 -12
- package/dist/server/actions/gitlab-api.js +14 -13
- package/dist/server/actions/review.d.ts +5 -2
- package/dist/server/actions/review.js +184 -37
- package/dist/server/ai-tools.js +2 -0
- package/dist/server/collections/gitCodeReviews.js +1 -0
- package/dist/server/collections/gitRepositories.js +12 -0
- package/dist/server/migrations/20260508000000-add-auto-review-flow-id.d.ts +6 -0
- package/dist/server/migrations/20260508000000-add-auto-review-flow-id.js +57 -0
- package/dist/server/plugin.d.ts +4 -0
- package/dist/server/plugin.js +43 -6
- package/dist/server/poller.js +3 -1
- package/package.json +1 -1
- package/src/client/components/CommitHistory.tsx +21 -3
- package/src/client/components/FileExplorer.tsx +29 -24
- package/src/client/components/GitOperations.tsx +32 -16
- package/src/client/components/PollingStatus.tsx +27 -1
- package/src/client/components/RepositoryConfig.tsx +76 -3
- package/src/client/components/ReviewFlows.tsx +11 -1
- package/src/client/components/ReviewHistory.tsx +14 -1
- package/src/client/components/RunReviewButton.tsx +375 -278
- package/src/client/context/GitManagerContext.tsx +2 -0
- package/src/client/index.tsx +31 -31
- package/src/locale/en-US.json +10 -1
- package/src/locale/vi-VN.json +2 -0
- package/src/server/actions/git-actions.ts +15 -12
- package/src/server/actions/gitlab-api.ts +8 -4
- package/src/server/actions/review.ts +226 -41
- package/src/server/ai-tools.ts +1 -0
- package/src/server/collections/gitCodeReviews.ts +1 -0
- package/src/server/collections/gitRepositories.ts +12 -0
- package/src/server/migrations/20260508000000-add-auto-review-flow-id.ts +29 -0
- package/src/server/plugin.ts +205 -164
- package/src/server/poller.ts +11 -2
- package/dist/client/187.eec7be93247463d7.js +0 -10
|
@@ -0,0 +1,10 @@
|
|
|
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([["187"],{922:function(e,t,n){n.r(t),n.d(t,{GitManagerSettings:function(){return to}});var r=n(156),l=n.n(r),a=n(721),o=n(482),i=n(772);function c(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 u(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 s(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){u(a,r,l,o,i,"next",e)}function i(e){u(a,r,l,o,i,"throw",e)}o(void 0)})}}function d(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 c(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 c(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 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 p=(0,r.createContext)(null);function f(){return(0,r.useContext)(p)}var y=function(e){var t=e.children,n=(0,i.useAPIClient)(),a=d((0,r.useState)([]),2),o=a[0],c=a[1],u=d((0,r.useState)(null),2),f=u[0],y=u[1],h=d((0,r.useState)(!1),2),g=h[0],v=h[1],b=d((0,r.useState)([]),2),E=b[0],w=b[1],S=d((0,r.useState)(""),2),k=S[0],C=S[1],I=(0,r.useRef)(f);I.current=f;var x=(0,r.useCallback)(s(function(){var e,t,r,l;return m(this,function(a){switch(a.label){case 0:if(!(e=I.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]),O=(0,r.useCallback)(s(function(){var e,t,r,l;return m(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 c(t=(null==(e=a.sent().data)?void 0:e.data)||[]),(r=I.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(p.Provider,{value:{repos:o,selectedRepo:f,loading:g,branches:E,currentBranch:k,setSelectedRepo:y,refreshRepos:O,refreshBranches:x}},t)};function h(){var e=(0,i.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))}}function g(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 v(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){v(a,r,l,o,i,"next",e)}function i(e){v(a,r,l,o,i,"throw",e)}o(void 0)})}}function E(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 g(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 g(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 w(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 S=function(){var e,t,n,c=h(),u=(0,i.useAPIClient)(),s=f(),d=s.repos,m=s.refreshRepos,p=s.selectedRepo,y=s.setSelectedRepo,g=E((0,r.useState)(!1),2),v=g[0],S=g[1],k=E((0,r.useState)(null),2),C=k[0],I=k[1],x=E(a.Form.useForm(),1)[0],O=E((0,r.useState)(null),2),A=O[0],T=O[1],R=E((0,r.useState)([]),2),P=R[0],z=R[1],F=(0,r.useCallback)(b(function(){var e;return w(this,function(t){switch(t.label){case 0:return[4,u.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,triggerMode:{$in:["onMergeRequestCreated","both"]}}}})];case 1:return z((null==(e=t.sent().data)?void 0:e.data)||[]),[2]}})}),[u]);(0,r.useEffect)(function(){F().catch(function(){})},[F]);var B=function(e){return P.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(c("global"),")"):"")}})},j=(e=b(function(){var e,t;return w(this,function(n){switch(n.label){case 0:return[4,x.validateFields()];case 1:e=n.sent(),C&&(!e.pat||"••••••••"===e.pat)&&delete e.pat,n.label=2;case 2:if(n.trys.push([2,8,,9]),!C)return[3,4];return[4,u.request({url:"gitRepositories:update",method:"post",params:{filterByTk:C.id},data:e})];case 3:return n.sent(),a.message.success(c("Repository updated")),[3,6];case 4:return[4,u.request({url:"gitRepositories:create",method:"post",data:e})];case 5:n.sent(),a.message.success(c("Repository added")),n.label=6;case 6:return S(!1),I(null),x.resetFields(),[4,m()];case 7:return n.sent(),[3,9];case 8:return t=n.sent(),a.message.error((null==t?void 0:t.message)||c("Failed to save")),[3,9];case 9:return[2]}})}),function(){return e.apply(this,arguments)}),M=(t=b(function(e){return w(this,function(t){switch(t.label){case 0:return[4,u.request({url:"gitRepositories:destroy",method:"post",params:{filterByTk:e}})];case 1:return t.sent(),(null==p?void 0:p.id)===e&&y(null),a.message.success(c("Deleted")),[4,m()];case 2:return t.sent(),[2]}})}),function(e){return t.apply(this,arguments)}),D=(n=b(function(e){var t,n,r,l,o;return w(this,function(i){switch(i.label){case 0:T("clone-".concat(e.id)),i.label=1;case 1:return i.trys.push([1,4,5,6]),[4,u.request({url:"gitManager:clone",method:"post",params:{repositoryId:e.id}})];case 2:return i.sent(),a.message.success(c("Clone successful")),[4,m()];case 3:return i.sent(),[3,6];case 4: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)||c("Clone failed")),[3,6];case 5:return T(null),[7];case 6:return[2]}})}),function(e){return n.apply(this,arguments)}),q=[{title:c("Repository Name"),dataIndex:"name",key:"name",render:function(e,t){return l().createElement("a",{onClick:function(){return y(t)}},e)}},{title:c("Repository URL"),dataIndex:"repoUrl",key:"repoUrl",ellipsis:!0},{title:c("Local Path"),dataIndex:"localPath",key:"localPath",ellipsis:!0},{title:c("Default Branch"),dataIndex:"defaultBranch",key:"defaultBranch",width:120},{title:l().createElement(a.Tooltip,{title:c("Auto-poll new merge requests every 5 minutes")},l().createElement(a.Space,{size:4},l().createElement(o.RobotOutlined,null),c("Auto Review"))),dataIndex:"autoReview",key:"autoReview",width:110,render:function(e,t){var n;return l().createElement(a.Switch,{size:"small",checked:!!e,onChange:(n=b(function(e){var n,r,l,o;return w(this,function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),r=B(t.id),[4,u.request({url:"gitRepositories:update",method:"post",params:{filterByTk:t.id},data:{autoReview:e,autoReviewFlowId:e&&!t.autoReviewFlowId?null!=(l=null==(n=r[0])?void 0:n.value)?l:null:t.autoReviewFlowId}})];case 1:return i.sent(),[4,m()];case 2:return i.sent(),[3,4];case 3:return o=i.sent(),a.message.error((null==o?void 0:o.message)||c("Failed to save")),[3,4];case 4:return[2]}})}),function(e){return n.apply(this,arguments)})})}},{title:c("Primary Auto Flow"),dataIndex:"autoReviewFlowId",key:"autoReviewFlowId",width:220,render:function(e,t){var n,r=B(t.id);return l().createElement(a.Select,{allowClear:!0,size:"small",style:{width:"100%"},disabled:!t.autoReview,placeholder:c("Select a flow"),value:e||void 0,options:r,notFoundContent:c("No matching flow available"),onChange:(n=b(function(e){var n;return w(this,function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,u.request({url:"gitRepositories:update",method:"post",params:{filterByTk:t.id},data:{autoReviewFlowId:e||null}})];case 1:return r.sent(),[4,m()];case 2:return r.sent(),[3,4];case 3:return n=r.sent(),a.message.error((null==n?void 0:n.message)||c("Failed to save")),[3,4];case 4:return[2]}})}),function(e){return n.apply(this,arguments)})})}},{title:c("Status"),dataIndex:"status",key:"status",width:120,render:function(e){var t={connected:{color:"green",label:c("Connected")},error:{color:"red",label:c("Error")}}[e]||{color:"default",label:c("Disconnected")};return l().createElement(a.Tag,{color:t.color},t.label)}},{title:"",key:"actions",width:200,render:function(e,t){return l().createElement(a.Space,{size:"small"},"connected"!==t.status&&l().createElement(a.Button,{size:"small",icon:l().createElement(o.LinkOutlined,null),loading:A==="clone-".concat(t.id),onClick:function(){return D(t)}},c("Clone")),l().createElement(a.Button,{size:"small",onClick:function(){var e,n;I(t),x.setFieldsValue((e=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}({},t),n=n={pat:""},Object.getOwnPropertyDescriptors?Object.defineProperties(e,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(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e)),S(!0)}},c("Edit")),l().createElement(a.Popconfirm,{title:c("Delete this repository?"),onConfirm:function(){return M(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:16}},l().createElement(a.Button,{type:"primary",icon:l().createElement(o.PlusOutlined,null),onClick:function(){I(null),x.resetFields(),S(!0)}},c("Add Repository"))),l().createElement(a.Table,{dataSource:d,columns:q,rowKey:"id",size:"small",pagination:!1,rowClassName:function(e){return(null==p?void 0:p.id)===e.id?"ant-table-row-selected":""}}),l().createElement(a.Modal,{title:C?c("Edit Repository"):c("Add Repository"),open:v,onOk:j,onCancel:function(){S(!1),I(null)},width:520},l().createElement(a.Form,{form:x,layout:"vertical",initialValues:{defaultBranch:"main"}},l().createElement(a.Form.Item,{name:"name",label:c("Repository Name"),rules:[{required:!0}]},l().createElement(a.Input,{placeholder:"my-project"})),l().createElement(a.Form.Item,{name:"repoUrl",label:c("Repository URL"),rules:[{required:!0}]},l().createElement(a.Input,{placeholder:"https://gitlab.com/user/repo.git"})),l().createElement(a.Form.Item,{name:"username",label:c("Username"),rules:[{required:!0}],extra:c("GitLab username for PAT authentication")},l().createElement(a.Input,{placeholder:"gitlab-username"})),l().createElement(a.Form.Item,{name:"localPath",label:c("Local Path"),rules:[{required:!0}]},l().createElement(a.Input,{placeholder:"my-project"})),l().createElement(a.Form.Item,{name:"pat",label:c("Personal Access Token"),rules:C?[]:[{required:!0}]},l().createElement(a.Input.Password,{placeholder:C?"Leave empty to keep current":"ghp_xxxx..."})),l().createElement(a.Form.Item,{name:"defaultBranch",label:c("Default Branch")},l().createElement(a.Input,{placeholder:"main"})),l().createElement(a.Form.Item,{name:"autoReviewFlowId",label:c("Primary Auto Review Flow"),extra:c("Only flows with automatic trigger modes are shown")},l().createElement(a.Select,{allowClear:!0,placeholder:c("Select a flow"),options:B(null==C?void 0:C.id),notFoundContent:c("No matching flow available")})))))};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 I(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 x(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 O(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 A(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 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)}}(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 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 R=a.Typography.Text,P=a.Input.Search,z=a.theme.useToken,F={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"}})},B=function(){var e,t,n,c=h(),u=z().token,s=(0,i.useAPIClient)(),d=f(),m=d.selectedRepo,p=d.branches,y=d.currentBranch,g=d.refreshBranches,v=A((0,r.useState)([]),2),b=v[0],E=v[1],w=A((0,r.useState)(!1),2),S=w[0],k=w[1],C=A((0,r.useState)(null),2),B=C[0],j=C[1],M=A((0,r.useState)(null),2),D=M[0],q=M[1],L=A((0,r.useState)("HEAD"),2),U=L[0],N=L[1],H=A((0,r.useState)(""),2),W=H[0],_=H[1],G=A((0,r.useState)(""),2),$=G[0],K=G[1],V=A((0,r.useState)(!1),2),J=V[0],Q=V[1],X=(0,r.useCallback)(I(function(){var e,t,n,r,a=arguments;return T(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]:U,!m)return[2,[]];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,s.request({url:"gitManager:fileTree",params:{repositoryId:m.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(R,{style:{fontSize:13}},e.name,"blob"===e.type&&e.size>0&&l().createElement(R,{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 F[(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]}})}),[s,m,U]),Y=(0,r.useCallback)(I(function(){return T(this,function(e){switch(e.label){case 0:k(!0),e.label=1;case 1:return e.trys.push([1,,3,4]),[4,X("",U)];case 2:return E(e.sent()),[3,4];case 3:return k(!1),[7];case 4:return[2]}})}),[X,U]);(0,r.useEffect)(function(){(null==m?void 0:m.status)==="connected"?(g(),j(null),q(null)):E([])},[m]),(0,r.useEffect)(function(){y&&"HEAD"===U&&N(y)},[y]),(0,r.useEffect)(function(){(null==m?void 0:m.status)==="connected"&&Y()},[U,m]);var Z=(e=I(function(e){var t;return T(this,function(n){switch(n.label){case 0:if(e.children)return[2];return[4,X(e.filePath,U)];case 1:return t=n.sent(),E(function(n){return function e(t,n,r){return t.map(function(t){return t.key===n?O(x({},t),{children:r}):t.children?O(x({},t),{children:e(t.children,n,r)}):t})}(n,e.key,t)}),[2]}})}),function(t){return e.apply(this,arguments)}),ee=(t=I(function(e,t){var n,r,l,a;return T(this,function(e){switch(e.label){case 0:if(!(n=t.node).isLeaf)return[2];Q(!0),q(n.filePath),e.label=1;case 1:return e.trys.push([1,3,4,5]),[4,s.request({url:"gitManager:fileContent",params:{repositoryId:m.id,ref:U,filePath:n.filePath}})];case 2:return j((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(),j("// 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]),!m)return l().createElement(a.Empty,{description:c("No repository selected")});if("connected"!==m.status)return l().createElement(a.Empty,{description:c("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 O(x({},t),{children:r})}return(t.filePath||"").toLowerCase().includes(n)?t:null}).filter(Boolean)}(b,$.toLowerCase()):b;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(u.colorBorderSecondary),display:"flex",flexDirection:"column",background:u.colorBgContainer}},l().createElement("div",{style:{padding:"8px 12px",borderBottom:"1px solid ".concat(u.colorBorderSecondary)}},l().createElement(a.Space,{direction:"vertical",style:{width:"100%"},size:6},l().createElement(a.Select,{size:"small",style:{width:"100%"},value:U,onChange:function(e){N(e),j(null),q(null)},options:p.map(function(e){return{label:e,value:e}}),placeholder:"Branch"}),l().createElement(P,{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"}},S?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:u.colorBgLayout}},D?l().createElement(l().Fragment,null,l().createElement("div",{style:{padding:"6px 16px",borderBottom:"1px solid ".concat(u.colorBorderSecondary),background:u.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(R,{strong:!0},e):e}})}),l().createElement(R,{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:u.colorBgContainer,minHeight:"100%"}},(B||"").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:u.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(R,{type:"secondary"},"Select a file to view its content"))))},j=n(645);function M(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 q(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 L(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)||U(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 U(e,t){if(e){if("string"==typeof e)return M(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 M(e,t)}}function N(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 H=function(e){var t,n,c,u,s=e.target,d=e.size,m=e.type,p=e.onTriggered,f=h(),y=(0,i.useAPIClient)(),g=(null==(c=j.useAIConfigRepository)?void 0:c.call(j))||{},v=((null==(u=j.useChatBoxActions)?void 0:u.call(j))||{}).triggerTask,b=L((0,r.useState)(!1),2),E=b[0],w=b[1],S=L((0,r.useState)([]),2),k=S[0],C=S[1],I=L((0,r.useState)(!1),2),x=I[0],O=I[1],A=L((0,r.useState)(!1),2),T=A[0],R=A[1],P=L((0,r.useState)(null),2),z=P[0],F=P[1],B=L(a.Form.useForm(),1)[0],D=(0,r.useCallback)(function(){var e=!1,t={repositoryId:s.repositoryId,targetType:s.type};return"mr"===s.type&&(t.mrIid=s.mrIid),"commit"===s.type&&(t.commitSha=s.commitSha),"branch"===s.type&&(t.branch=s.branch),y.request({url:"gitCodeReviews:list",params:{pageSize:1,sort:["-id"],filter:t}}).then(function(t){if(!e){var n;F(((null==t||null==(n=t.data)?void 0:n.data)||[])[0]||null)}}).catch(function(){}),function(){e=!0}},[y,s]);(0,r.useEffect)(function(){return D()},[D]);var H=(0,r.useCallback)(q(function(){var e,t;return N(this,function(n){switch(n.label){case 0:return[4,y.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,$or:[{repositoryId:s.repositoryId},{repositoryId:null}]}}})];case 1:return C(t=(null==(e=n.sent().data)?void 0:e.data)||[]),[2,t]}})}),[y,s.repositoryId]),W=(0,r.useCallback)(function(e){var t,n=e.find(function(e){return e.repositoryId===s.repositoryId});return null!=(t=null!=n?n:e[0])?t:null},[s.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)&&B.setFieldValue("flowId",n.id)}}).catch(function(){}),function(){e=!0}}},[E,H,W,B]);var _=(t=q(function(){var e,t,n,r,l,o,i,c,u,d,m;return N(this,function(h){switch(h.label){case 0:return h.trys.push([0,3,4,5]),[4,B.validateFields()];case 1:return n=h.sent(),O(!0),r={repositoryId:s.repositoryId,targetType:s.type,flowId:n.flowId,extraInstructions:n.extraInstructions||void 0},"mr"===s.type&&(r.mrIid=s.mrIid),"commit"===s.type&&(r.commitSha=s.commitSha),"branch"===s.type&&(r.branch=s.branch),[4,y.request({url:"gitManager:triggerReview",method:"post",data:r})];case 2:return o=null==(l=h.sent())||null==(t=l.data)||null==(e=t.data)?void 0:e.reviewId,a.message.success(f("Review started")),w(!1),B.resetFields(),D(),null==p||p(o),[3,5];case 3:if(null==(i=h.sent())?void 0:i.errorFields)return[2];return 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)||f("Failed to trigger review")),[3,5];case 4:return O(!1),[7];case 5:return[2]}})}),function(){return t.apply(this,arguments)}),G=function(){var e=s.title||K();return"mr"===s.type?{type:"git-merge-request",uid:"".concat(s.repositoryId,":").concat(s.mrIid),title:e,content:{repositoryId:s.repositoryId,mrIid:s.mrIid,title:e}}:"commit"===s.type?{type:"git-commit",uid:"".concat(s.repositoryId,":").concat(s.commitSha),title:e,content:{repositoryId:s.repositoryId,commitSha:s.commitSha,title:e}}:{type:"git-repository",uid:String(s.repositoryId),title:e,content:{repositoryId:s.repositoryId,branch:s.branch,title:e}}},$=(n=q(function(){var e,t,n,r,l,o;return N(this,function(i){switch(i.label){case 0:if(!v||!(null==g?void 0:g.getAIEmployees))return a.message.warning(f("AI plugin is not available")),[2];R(!0),i.label=1;case 1:if(i.trys.push([1,9,10,11]),!k.length)return[3,2];return t=k,[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(f("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(f("AI employee not found")),[2];return[4,v({aiEmployee:l,tasks:[{title:"".concat(n.name,": ").concat(K()),message:{user:"mr"===s.type?"Please review merge request !".concat(s.mrIid," (").concat(s.title||"untitled","). Use the attached Git merge request context and the available git tools when you need more detail."):"commit"===s.type?"Please review commit ".concat(s.commitSha," (").concat(s.title||"untitled","). Use the attached Git commit context and the available git tools when you need more detail."):"Please help me inspect branch ".concat(s.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)||f("Failed to open AI chat")),[3,11];case 10:return R(!1),[7];case 11:return[2]}})}),function(){return n.apply(this,arguments)}),K=function(){return"mr"===s.type?"MR !".concat(s.mrIid):"commit"===s.type?"Commit ".concat(String(s.commitSha).slice(0,7)):"Branch ".concat(s.branch)},V=z&&z.headSha&&z.latestSha&&z.headSha!==z.latestSha,J=!!z&&"pending"!==z.status,Q=J?V?f("Re-review (new commits)"):f("Re-run review"):f("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?f("Re-run automated review"):f("Run automated review"),onClick:function(){return w(!0)}}].concat(function(e){if(Array.isArray(e))return M(e)}(e=z?[{key:"view",icon:l().createElement(o.RobotOutlined,null),label:f("Status: ".concat(z.status))+" - "+f("View in Review History tab"),onClick:function(){a.message.info(f('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)||U(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:f("Ask AI Employee"),onClick:$,disabled:T}])},[J,z,T,$]);return l().createElement(l().Fragment,null,l().createElement(a.Dropdown,{menu:{items:Y},placement:"bottomRight",trigger:["click"]},l().createElement(a.Button,{size:void 0===d?"small":d,type:V?"primary":void 0===m?"default":m,icon:l().createElement(X,null),danger:!!V,loading:T},Q)),l().createElement(a.Modal,{title:l().createElement(a.Space,null,l().createElement(o.RobotOutlined,null),l().createElement("span",null,J?f("Re-run code review"):f("Run code review")),l().createElement("span",{style:{color:"#999",fontSize:12,fontWeight:400}},K())),open:E,onCancel:function(){return w(!1)},onOk:_,okText:J?f("Re-run"):f("Start Review"),confirmLoading:x,destroyOnClose:!0},J&&l().createElement(a.Alert,{type:V?"warning":"info",showIcon:!0,style:{marginBottom:12},message:V?f("New commits detected since last review. Re-running will overwrite the existing review."):f("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==z?void 0:z.headSha)&&l().createElement("span",null,f("Reviewed at"),":\xa0",l().createElement(a.Tag,{style:{fontFamily:"monospace"}},String(z.headSha).slice(0,7))),V&&(null==z?void 0:z.latestSha)&&l().createElement("span",null,f("Latest"),":\xa0",l().createElement(a.Tag,{color:"orange",style:{fontFamily:"monospace"}},String(z.latestSha).slice(0,7))))}),l().createElement(a.Form,{form:B,layout:"vertical"},l().createElement(a.Form.Item,{name:"flowId",label:f("Review Flow"),rules:[{required:!0,message:f("Please select a review flow")}],extra:0===k.length?l().createElement(a.Tooltip,{title:f("Create a review flow in the Review Flows tab first")},l().createElement("span",{style:{color:"#faad14"}},f("No enabled flow found for this repository"))):null},l().createElement(a.Select,{options:k.map(function(e){return{value:e.id,label:"".concat(e.name).concat(e.aiEmployeeUsername?" — @".concat(e.aiEmployeeUsername):"").concat(null==e.repositoryId?" (".concat(f("global"),")"):"")}}),placeholder:f("Select a review flow")})),l().createElement(a.Form.Item,{name:"extraInstructions",label:f("Extra instructions (optional)")},l().createElement(a.Input.TextArea,{rows:4,placeholder:f("e.g. Focus on security issues in authentication")})))))};function W(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 _(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 G(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){_(a,r,l,o,i,"next",e)}function i(e){_(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 W(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 W(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 K(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 V=a.Typography.Text,J=a.theme.useToken,Q={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"}},X=function(){var e,t,n,c,u=h(),s=J().token,d=(0,i.useAPIClient)(),m=f(),p=m.selectedRepo,y=m.branches,g=m.currentBranch,v=$((0,r.useState)([]),2),b=v[0],E=v[1],w=$((0,r.useState)(!1),2),S=w[0],k=w[1],C=$((0,r.useState)(null),2),I=C[0],x=C[1],O=$((0,r.useState)(null),2),A=O[0],T=O[1],R=$((0,r.useState)(!1),2),P=R[0],z=R[1],F=$((0,r.useState)(null),2),B=F[0],j=F[1],M=$((0,r.useState)(null),2),D=M[0],q=M[1],L=$((0,r.useState)(""),2),U=L[0],N=L[1],W=(0,r.useCallback)(G(function(){var e,t,n;return K(this,function(r){switch(r.label){case 0:if(!p)return[2];k(!0),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,d.request({url:"gitManager:log",params:{repositoryId:p.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]}})}),[d,p]);(0,r.useEffect)(function(){(null==p?void 0:p.status)==="connected"?W():E([])},[p]);var _=b.filter(function(e){var t=U.trim().toLowerCase();return!t||String(e.message||e.subject||e.body||"").toLowerCase().includes(t)}),X=(e=G(function(e){var t,n;return K(this,function(r){switch(r.label){case 0:x(e),z(!0),j(null),q(null),r.label=1;case 1:return r.trys.push([1,3,4,5]),[4,d.request({url:"gitManager:commitDetail",params:{repositoryId:p.id,commitHash:e.hash}})];case 2:return T((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(),T(null),[3,5];case 4:return z(!1),[7];case 5:return[2]}})}),function(t){return e.apply(this,arguments)}),ee=(t=G(function(e,t){var n,r;return K(this,function(l){switch(l.label){case 0:q(t),l.label=1;case 1:return l.trys.push([1,3,,4]),[4,d.request({url:"gitManager:diff",params:{repositoryId:p.id,commitHash:e,file:t}})];case 2:return j((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(),j("// Failed to load diff"),[3,4];case 4:return[2]}})}),function(e,n){return t.apply(this,arguments)});if(!p)return l().createElement(a.Empty,{description:u("No repository selected")});if("connected"!==p.status)return l().createElement(a.Empty,{description:u("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?s.colorPrimary:s.colorBorder,border:"2px solid ".concat(0===n?s.colorPrimary:s.colorBorder),zIndex:1}}))}},{title:u("Message"),dataIndex:"message",key:"message",render:function(e,t){return l().createElement("div",null,l().createElement(V,{strong:!0,style:{fontSize:13}},e),l().createElement("div",{style:{marginTop:2}},l().createElement(V,{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}}),Z(t.date))))}},{title:"Hash",dataIndex:"hash",key:"hash",width:100,render:function(e){return l().createElement(V,{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 X(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:y.map(function(e){return{label:e,value:e}}),disabled:!0}),l().createElement(a.Input.Search,{allowClear:!0,size:"small",style:{width:280},placeholder:u("Search commit title or message"),value:U,onChange:function(e){return N(e.target.value)}}),l().createElement(V,{type:"secondary"},_.length," commits")),S?l().createElement(a.Spin,null):l().createElement(a.Table,{dataSource:_,columns:et,rowKey:"hash",size:"small",pagination:{pageSize:30,showSizeChanger:!0},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return X(e)}}}}),l().createElement(a.Drawer,{title:I?l().createElement("div",null,l().createElement(V,{strong:!0},I.message),l().createElement("div",null,l().createElement(V,{type:"secondary",style:{fontSize:12}},null==(n=I.hash)?void 0:n.substring(0,7)," \xb7 ",I.author_name," \xb7 ",Z(I.date)))):"Commit Detail",open:!!I,onClose:function(){x(null),T(null),j(null),q(null)},width:800,extra:I&&p?l().createElement(H,{target:{type:"commit",repositoryId:p.id,commitSha:I.hash,title:I.message},size:"small"}):null},P?l().createElement(a.Spin,null):A?l().createElement("div",null,l().createElement(V,{strong:!0},"Changed Files (",(null==(c=A.files)?void 0:c.length)||0,")"),l().createElement(a.List,{size:"small",style:{marginTop:8},dataSource:A.files||[],renderItem:function(e){var t=Q[e.status]||Q.M,n=D===e.file;return l().createElement(a.List.Item,{style:{cursor:"pointer",background:n?s.colorPrimaryBg:void 0,padding:"6px 12px",borderRadius:4},onClick:function(){return ee(I.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(V,{style:{fontSize:13}},e.file)))}}),null!==B&&l().createElement("div",{style:{marginTop:16}},l().createElement(V,{strong:!0,style:{display:"block",marginBottom:8}},l().createElement(o.FileTextOutlined,null)," ",D),l().createElement(Y,{content:B}))):null))},Y=(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 Z(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 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 et(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 en(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){et(a,r,l,o,i,"next",e)}function i(e){et(a,r,l,o,i,"throw",e)}o(void 0)})}}function er(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.")}()}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 ea=a.Typography.Text;a.Typography.Paragraph,a.Typography.Title;var eo=a.theme.useToken,ei={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"}},ec=function(){var e,t,n,c=h(),u=eo().token,s=(0,i.useAPIClient)(),d=f().selectedRepo,m=er((0,r.useState)([]),2),p=m[0],y=m[1],g=er((0,r.useState)(!1),2),v=g[0],b=g[1],E=er((0,r.useState)("opened"),2),w=E[0],S=E[1],k=er((0,r.useState)(""),2),C=k[0],I=k[1],x=er((0,r.useState)({page:1,perPage:20,total:0,totalPages:0}),2),O=x[0],A=x[1],T=er((0,r.useState)(null),2),R=T[0],P=T[1],z=er((0,r.useState)(null),2),F=z[0],B=z[1],j=er((0,r.useState)(!1),2),M=j[0],D=j[1],q=er((0,r.useState)([]),2),L=q[0],U=q[1],N=er((0,r.useState)(!1),2);N[0],N[1];var W=(0,r.useCallback)(en(function(){var e,t,n,r=arguments;return el(this,function(l){switch(l.label){case 0:if(e=r.length>0&&void 0!==r[0]?r[0]:1,!d)return[2];b(!0),l.label=1;case 1:return l.trys.push([1,3,4,5]),[4,s.request({url:"gitManager:mergeRequests",params:{repositoryId:d.id,state:w,search:C||void 0,page:e,perPage:20}})];case 2:return y((null==(n=(null==(t=l.sent().data)?void 0:t.data)||t)?void 0:n.data)||[]),(null==n?void 0:n.pagination)&&A(n.pagination),[3,5];case 3:return l.sent(),y([]),[3,5];case 4:return b(!1),[7];case 5:return[2]}})}),[s,d,w,C]);(0,r.useEffect)(function(){(null==d?void 0:d.status)==="connected"?W(1):y([])},[d,w]);var _=(e=en(function(e){var t,n,r,l,a,o,i,c,u,m;return el(this,function(p){switch(p.label){case 0:P(e),D(!0),U([]),p.label=1;case 1:return p.trys.push([1,3,4,5]),[4,Promise.all([s.request({url:"gitManager:mergeRequestDetail",params:{repositoryId:d.id,mrIid:e.iid}}),s.request({url:"gitManager:mergeRequestNotes",params:{repositoryId:d.id,mrIid:e.iid}})])];case 2:return c=(i=er.apply(void 0,[p.sent(),2]))[0],u=i[1],B((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(m=(null==u||null==(a=u.data)||null==(l=a.data)?void 0:l.data)||(null==u||null==(o=u.data)?void 0:o.data))?m:[]),[3,5];case 3:return p.sent(),B(null),[3,5];case 4:return D(!1),[7];case 5:return[2]}})}),function(t){return e.apply(this,arguments)});if(!d)return l().createElement(a.Empty,{description:c("No repository selected")});if("connected"!==d.status)return l().createElement(a.Empty,{description:c("Repository not cloned yet")});var G=[{title:"",key:"state_icon",width:40,render:function(e,t){var n=ei[t.state]||ei.opened;return l().createElement(a.Tooltip,{title:n.label},l().createElement("span",{style:{color:u["color".concat("blue"===n.color?"Primary":"purple"===n.color?"PurpleText":"Error")]||n.color,fontSize:16}},n.icon))}},{title:c("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(ea,{strong:!0,style:{fontSize:13}},t.title),t.hasConflicts&&l().createElement(a.Tooltip,{title:c("Has conflicts")},l().createElement(o.ExclamationCircleOutlined,{style:{color:u.colorWarning}}))),l().createElement("div",{style:{marginTop:2}},l().createElement(ea,{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}}),ef(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:u.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(ea,{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:u.colorTextSecondary},l().createElement(o.CommentOutlined,{style:{fontSize:14,color:u.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(H,{target:{type:"mr",repositoryId:d.id,mrIid:t.iid,title:t.title},size:"small"}),l().createElement(a.Tooltip,{title:c("View Details")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.FileTextOutlined,null),onClick:function(e){e.stopPropagation(),_(t)}})),l().createElement(a.Tooltip,{title:c("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(c("Open")),value:"opened"},{label:"\uD83D\uDFE3 ".concat(c("Merged")),value:"merged"},{label:"\uD83D\uDD34 ".concat(c("Closed")),value:"closed"},{label:"\uD83D\uDCCB ".concat(c("All")),value:"all"}]}),l().createElement(a.Input.Search,{size:"small",style:{width:260},placeholder:c("Search merge requests..."),value:C,onChange:function(e){return I(e.target.value)},onSearch:function(){W(1)},allowClear:!0}),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:function(){return W(1)}},c("Refresh")),l().createElement(ea,{type:"secondary",style:{fontSize:12}},null!=O.total?"".concat(O.total," ").concat(c("total")):"")),v?l().createElement(a.Spin,null):l().createElement(a.Table,{dataSource:p,columns:G,rowKey:"iid",size:"small",pagination:{current:O.page,pageSize:O.perPage,total:O.total||void 0,onChange:function(e){return W(e)},showSizeChanger:!1},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){return _(e)}}}}),l().createElement(a.Drawer,{title:R?l().createElement("div",null,l().createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},(t=ei[R.state]||ei.opened,l().createElement(a.Tag,{color:t.color},t.icon," ",t.label)),R.draft&&l().createElement(a.Tag,null,"DRAFT"),l().createElement(ea,{strong:!0,style:{fontSize:15}},"!",R.iid)),l().createElement(ea,{strong:!0,style:{fontSize:16,display:"block",marginTop:4}},R.title)):c("Merge Request"),open:!!R,onClose:function(){P(null),B(null),U([])},width:900,extra:R&&l().createElement(a.Space,null,l().createElement(H,{target:{type:"mr",repositoryId:d.id,mrIid:R.iid,title:R.title},size:"small"}),l().createElement(a.Button,{type:"link",icon:l().createElement(o.ExportOutlined,null),onClick:function(){return window.open(R.webUrl,"_blank")}},c("Open in GitLab")))},M?l().createElement(a.Spin,null):F?l().createElement(a.Tabs,{defaultActiveKey:"overview",items:[{key:"overview",label:c("Overview"),children:l().createElement(eu,{mr:F})},{key:"changes",label:"".concat(c("Changes")," (").concat((null==(n=F.changes)?void 0:n.length)||0,")"),children:l().createElement(ed,{changes:F.changes||[]})},{key:"comments",label:l().createElement(a.Badge,{count:L.length,size:"small",offset:[6,0]},c("Comments")),children:l().createElement(em,{notes:L})}]}):null))},eu=function(e){var t,n,r,i,c=e.mr,u=h(),s=eo().token;return l().createElement("div",null,l().createElement("div",{style:{padding:"12px 16px",background:s.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:s.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)},u("Has conflicts"))),c.description&&l().createElement("div",{style:{marginBottom:16}},l().createElement(ea,{strong:!0},u("Description")),l().createElement("div",{style:{marginTop:8,padding:"12px 16px",background:s.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(es,{label:u("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(ea,null,c.author.name),l().createElement(ea,{type:"secondary"},"@",c.author.username))}),l().createElement(es,{label:u("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(ea,{type:"secondary"},"—")}),l().createElement(es,{label:u("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(ea,{type:"secondary"},"—")}),l().createElement(es,{label:u("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(ea,{type:"secondary"},"—")}),l().createElement(es,{label:u("Created"),value:l().createElement(ea,null,ey(c.createdAt))}),l().createElement(es,{label:u("Updated"),value:l().createElement(ea,null,ey(c.updatedAt))}),c.mergedBy&&l().createElement(es,{label:u("Merged by"),value:l().createElement(ea,null,c.mergedBy.name," — ",ey(c.mergedAt))}),c.closedBy&&l().createElement(es,{label:u("Closed by"),value:l().createElement(ea,null,c.closedBy.name," — ",ey(c.closedAt))})))},es=function(e){var t=e.label,n=e.value;return l().createElement("div",null,l().createElement(ea,{type:"secondary",style:{fontSize:12,display:"block",marginBottom:2}},t),l().createElement("div",null,n))},ed=function(e){var t=e.changes,n=eo().token,o=h(),i=er((0,r.useState)(null),2),c=i[0],u=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 u(o?null:r)}},i,l().createElement(ea,{style:{fontSize:13,fontFamily:"monospace"}},r),e.renamedFile&&e.oldPath!==e.newPath&&l().createElement(ea,{type:"secondary",style:{fontSize:11}},"(← ",e.oldPath,")")),o&&e.diff&&l().createElement(ep,{content:e.diff}))})):l().createElement(a.Empty,{description:o("No changes")})},em=function(e){var t=e.notes,n=eo().token,r=h();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(ea,{strong:!0,style:{fontSize:13}},null==(c=e.author)?void 0:c.name),l().createElement(ea,{type:"secondary",style:{fontSize:12}},"@",null==(u=e.author)?void 0:u.username),l().createElement(ea,{type:"secondary",style:{fontSize:11,marginLeft:"auto"}},ef(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")})},ep=(0,r.memo)(function(e){var t=e.content,n=eo().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 ef(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 ey(e){return e?new Date(e).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):""}function eh(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 eg(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){eg(a,r,l,o,i,"next",e)}function i(e){eg(a,r,l,o,i,"throw",e)}o(void 0)})}}function eb(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)||ew(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 eE(e){return function(e){if(Array.isArray(e))return eh(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ew(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 ew(e,t){if(e){if("string"==typeof e)return eh(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 eh(e,t)}}function eS(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 ek=a.Typography.Text,eC=a.theme.useToken,eI={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"}},ex=function(){var e,t,n,c,u,s,d,m=h(),p=eC().token,y=(0,i.useAPIClient)(),g=f(),v=g.selectedRepo,b=g.refreshRepos,E=eb((0,r.useState)(null),2),w=E[0],S=E[1],k=eb((0,r.useState)(null),2),C=k[0],I=k[1],x=eb((0,r.useState)(null),2),O=x[0],A=x[1],T=(0,r.useCallback)(ev(function(){var e,t;return eS(this,function(n){switch(n.label){case 0:if(!v||"connected"!==v.status)return I(null),[2];S("status"),n.label=1;case 1:return n.trys.push([1,3,4,5]),[4,y.request({url:"gitManager:status",method:"post",params:{repositoryId:v.id}})];case 2:return I((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()),I(null),[3,5];case 4:return S(null),[7];case 5:return[2]}})}),[y,v]);(0,r.useEffect)(function(){T()},[T]);var R=(0,r.useCallback)((e=ev(function(e){var t,n,r,l,o,i,c,u,s;return eS(this,function(d){switch(d.label){case 0:if(!v)return[2];S(e),A(null),d.label=1;case 1:return d.trys.push([1,6,7,8]),[4,y.request({url:"gitManager:".concat(e),method:"post",params:{repositoryId:v.id}})];case 2:if(n=d.sent().data,A({action:e,success:!0,message:m("{{action}} completed successfully",{action:e})}),a.message.success(m("{{action}} completed",{action:e})),r=(null==n||null==(t=n.data)?void 0:t.data)||(null==n?void 0:n.data),"status"===e&&I(r),"fetch"!==e&&"pull"!==e)return[3,4];return[4,T()];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)||m("{{action}} failed",{action:e}),A({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)}),[y,v,b,T]);if(!v)return l().createElement(a.Empty,{description:m("No repository selected")});if("connected"!==v.status)return l().createElement(a.Empty,{description:m("Repository not cloned yet")});var P=C?eE((null==(t=C.not_added)?void 0:t.map(function(e){return{file:e,status:"not_added"}}))||[]).concat(eE((null==(n=C.modified)?void 0:n.map(function(e){return{file:e,status:"modified"}}))||[]),eE((null==(c=C.deleted)?void 0:c.map(function(e){return{file:e,status:"deleted"}}))||[]),eE((null==(u=C.renamed)?void 0:u.map(function(e){return{file:"string"==typeof e?e:e.to,status:"renamed"}}))||[]),eE((null==(s=C.conflicted)?void 0:s.map(function(e){return{file:e,status:"conflicted"}}))||[]),eE((null==(d=C.created)?void 0:d.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")}},m("Fetch")),l().createElement(a.Button,{size:"large",type:"primary",icon:l().createElement(o.CloudDownloadOutlined,null),loading:"pull"===w,onClick:function(){return R("pull")}},m("Pull")),l().createElement(a.Button,{size:"large",icon:l().createElement(o.BranchesOutlined,null),loading:"status"===w,onClick:T},m("Status"))),O&&l().createElement(a.Card,{size:"small",style:{marginBottom:16,borderColor:O.success?p.colorSuccessBorder:p.colorErrorBorder}},l().createElement(a.Space,null,O.success?l().createElement(o.CheckCircleOutlined,{style:{color:p.colorSuccess}}):l().createElement(o.WarningOutlined,{style:{color:p.colorError}}),l().createElement(ek,{strong:!0},O.action),l().createElement(ek,null,O.message))),C&&l().createElement(a.Card,{title:m("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(ek,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:p.colorPrimary}}),C.behind>0&&l().createElement(a.Badge,{count:"".concat(C.behind," behind"),style:{backgroundColor:p.colorWarning}}),0===C.ahead&&0===C.behind&&l().createElement(a.Tag,{color:"green",icon:l().createElement(o.CheckCircleOutlined,null)},"Up to date")))),P.length>0?l().createElement(l().Fragment,null,l().createElement(ek,{strong:!0,style:{display:"block",marginBottom:8}},P.length," changed file(s)"),l().createElement(a.List,{size:"small",dataSource:P,renderItem:function(e){var t=eI[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(ek,{code:!0,style:{fontSize:13}},e.file)))}})):l().createElement(ek,{type:"secondary"},"Working directory clean")))};function eO(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 eA(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 eO(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 eO(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 eT=function(e){var t=e.value,n=e.onChange,o=e.allowClear,c=e.size,u=e.style,s=e.placeholder,d=(0,i.useAPIClient)(),m=eA((0,r.useState)([]),2),p=m[0],f=m[1],y=eA((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:c,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 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 eP(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 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)}}(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 ez=function(e){var t=e.value,n=e.onChange,o=e.allowClear,c=e.size,u=e.style,s=e.placeholder,d=(0,i.useAPIClient)(),m=eP((0,r.useState)([]),2),p=m[0],f=m[1],y=eP((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:c,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 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 eB(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 ej=function(e){var t=e.llmService,n=e.value,o=e.onChange,c=e.allowClear,u=e.size,s=e.style,d=e.placeholder,m=(0,i.useAPIClient)(),p=eB((0,r.useState)([]),2),f=p[0],y=p[1],h=eB((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===c||c,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 eM(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 eD(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 eq(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){eD(a,r,l,o,i,"next",e)}function i(e){eD(a,r,l,o,i,"throw",e)}o(void 0)})}}function eL(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 eM(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 eM(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 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 eN={manual:"Manual",onMergeRequestCreated:"On MR Created",both:"Both"},eH={auto:"Auto",manual:"Manual",disabled:"Disabled"},eW=function(){var e,t,n=h(),c=(0,i.useAPIClient)(),u=f().repos,s=eL((0,r.useState)([]),2),d=s[0],m=s[1],p=eL((0,r.useState)(!1),2),y=p[0],g=p[1],v=eL((0,r.useState)(null),2),b=v[0],E=v[1],w=eL((0,r.useState)(!1),2),S=w[0],k=w[1],C=eL(a.Form.useForm(),1)[0],I=(0,r.useCallback)(eq(function(){var e;return eU(this,function(t){switch(t.label){case 0:g(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,c.request({url:"gitReviewFlows:list",params:{pageSize:100}})];case 2:return m((null==(e=t.sent().data)?void 0:e.data)||[]),[3,4];case 3:return g(!1),[7];case 4:return[2]}})}),[c]);(0,r.useEffect)(function(){I()},[I]);var x=(e=eq(function(){var e,t,r,l,o,i;return eU(this,function(u){switch(u.label){case 0:return u.trys.push([0,6,,7]),[4,C.validateFields()];case 1:if((void 0===(e=u.sent()).repositoryId||""===e.repositoryId)&&(e.repositoryId=null),!(null==b?void 0:b.id))return[3,3];return[4,c.request({url:"gitReviewFlows:update",method:"post",params:{filterByTk:b.id},data:e})];case 2:return u.sent(),a.message.success(n("Flow updated")),[3,5];case 3:return[4,c.request({url:"gitReviewFlows:create",method:"post",data:e})];case 4:u.sent(),a.message.success(n("Flow created")),u.label=5;case 5:return k(!1),E(null),C.resetFields(),I(),[3,7];case 6:if(null==(t=u.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)}),O=(t=eq(function(e){var t;return eU(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,c.request({url:"gitReviewFlows:destroy",method:"post",params:{filterByTk:e}})];case 1:return r.sent(),a.message.success(n("Flow deleted")),I(),[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)}),A=function(e){E(e),C.setFieldsValue(e),k(!0)},T=[{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=u.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(eN[e]||e))}},{title:n("Post"),dataIndex:"postMode",render:function(e){return l().createElement(a.Tag,{color:"auto"===e?"green":"manual"===e?"orange":"default"},n(eH[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 A(t)}})),l().createElement(a.Popconfirm,{title:n("Delete this flow?"),onConfirm:function(){return O(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:I,loading:y},n("Refresh"))),l().createElement(a.Table,{size:"small",rowKey:"id",loading:y,dataSource:d,columns:T,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:x,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:u.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(eT,{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(ez,{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(ej,{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)))))},e_=n(457),eG=a.theme.useToken,e$=function(e){var t=e.content,n=e.maxHeight,r=eG().token;return t?l().createElement("div",{style:{fontSize:13,lineHeight:1.65,color:r.colorText,maxHeight:n,overflow:n?"auto":void 0}},l().createElement(e_.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 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 eV(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){eV(a,r,l,o,i,"next",e)}function i(e){eV(a,r,l,o,i,"throw",e)}o(void 0)})}}function eQ(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 eX(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 eY=a.Typography.Text;a.Typography.Title,a.Typography.Paragraph;var eZ=a.theme.useToken,e0={pending:"default",running:"blue",completed:"green",failed:"red"},e1={pending_approval:"orange",approved:"cyan",posted:"green",post_failed:"red",skipped:"default",rejected:"red"},e2=function(e){var t,n,c,u=e.initialFilter,s=h();eZ().token;var d=(0,i.useAPIClient)(),m=f().repos,p=eQ((0,r.useState)([]),2),y=p[0],g=p[1],v=eQ((0,r.useState)(!1),2),b=v[0],E=v[1],w=eQ((0,r.useState)("all"),2),S=w[0],k=w[1],C=eQ((0,r.useState)("pending_approval"===(void 0===u?"all":u)?"pending_approval":"all"),2),I=C[0],x=C[1],O=eQ((0,r.useState)("all"),2),A=O[0],T=O[1],R=eQ((0,r.useState)(null),2),P=R[0],z=R[1],F=eQ((0,r.useState)(!1),2),B=F[0],j=F[1],M=eQ((0,r.useState)(""),2),D=M[0],q=M[1],L=(0,r.useCallback)(eJ(function(){var e,t;return eX(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"!==I&&(e.postStatus=I),"all"!==A&&(e.triggeredBy=A),[4,d.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]}})}),[d,S,I,A]);(0,r.useEffect)(function(){L()},[L]),(0,r.useEffect)(function(){if(y.some(function(e){return"running"===e.status||"pending"===e.status})){var e=setInterval(L,4e3);return function(){return clearInterval(e)}}},[y,L]);var U=(0,r.useCallback)((t=eJ(function(e){var t,n;return eX(this,function(r){switch(r.label){case 0:return[4,d.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==P?void 0:P.id)===e&&z(n)),[2]}})}),function(e){return t.apply(this,arguments)}),[d,P]),N=(n=eJ(function(e){var t,n,r,l,o;return eX(this,function(i){switch(i.label){case 0:if(!P)return[2];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,d.request({url:"gitManager:reviewApprovePost",method:"post",data:{reviewId:P.id,editedMarkdown:e}})];case 2:return i.sent(),a.message.success(s("Review posted to merge request")),j(!1),U(P.id),L(),[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)||s("Failed to post review")),[3,4];case 4:return[2]}})}),function(e){return n.apply(this,arguments)}),H=(c=eJ(function(){var e;return eX(this,function(t){switch(t.label){case 0:if(!P)return[2];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,d.request({url:"gitManager:reviewReject",method:"post",data:{reviewId:P.id}})];case 2:return t.sent(),a.message.success(s("Review rejected")),U(P.id),L(),[3,4];case 3:return e=t.sent(),a.message.error((null==e?void 0:e.message)||s("Failed to reject")),[3,4];case 4:return[2]}})}),function(){return c.apply(this,arguments)}),W=(0,r.useMemo)(function(){var e={};return m.forEach(function(t){return e[t.id]=t}),e},[m]),_=[{title:s("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(eY,{strong:!0},r),l().createElement(eY,{type:"secondary"},"!",t.mrIid)):"commit"===t.targetType?l().createElement(a.Space,{size:4},l().createElement(eY,{strong:!0},r),l().createElement(eY,{type:"secondary",style:{fontFamily:"monospace"}},String(t.commitSha||"").slice(0,7))):l().createElement(a.Space,{size:4},l().createElement(eY,{strong:!0},r),l().createElement(eY,{type:"secondary"},t.branch))}},{title:s("Type"),dataIndex:"targetType",width:80,render:function(e){return l().createElement(a.Tag,null,s(e.toUpperCase()))}},{title:s("Status"),dataIndex:"status",width:120,render:function(e){var t=e0[e]||"default",n="running"===e?l().createElement(o.ClockCircleOutlined,{spin:!0}):null;return l().createElement(a.Tag,{color:t,icon:n},s(e))}},{title:s("Post Status"),dataIndex:"postStatus",width:140,render:function(e){return l().createElement(a.Tag,{color:e1[e]||"default"},s(e))}},{title:s("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(s("New commits"),": ").concat(String(r).slice(0,7))},l().createElement(a.Tag,{color:"orange",style:{fontSize:11}},s("new")))):l().createElement(eY,{type:"secondary"},"—")}},{title:s("Trigger"),dataIndex:"triggeredBy",width:90,render:function(e){return l().createElement(a.Tag,{color:"poll"===e?"geekblue":"default",style:{fontSize:11}},"poll"===e?s("Polling"):s("Manual"))}},{title:s("Duration"),dataIndex:"durationMs",width:90,render:function(e){return e?"".concat((e/1e3).toFixed(1),"s"):"—"}},{title:s("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:s("View")},l().createElement(a.Button,{size:"small",icon:l().createElement(o.FileTextOutlined,null),onClick:function(){z(t),j(!1),q(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:s("All statuses")},{value:"pending",label:s("pending")},{value:"running",label:s("running")},{value:"completed",label:s("completed")},{value:"failed",label:s("failed")}]}),l().createElement(a.Select,{size:"small",style:{width:180},value:I,onChange:x,options:[{value:"all",label:s("All post statuses")},{value:"pending_approval",label:s("pending_approval")},{value:"approved",label:s("approved")},{value:"posted",label:s("posted")},{value:"post_failed",label:s("post_failed")},{value:"skipped",label:s("skipped")},{value:"rejected",label:s("rejected")}]}),l().createElement(a.Select,{size:"small",style:{width:130},value:A,onChange:T,options:[{value:"all",label:s("All triggers")},{value:"manual",label:s("Manual")},{value:"poll",label:s("Polling")}]}),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:L},s("Refresh"))),l().createElement(a.Table,{size:"small",rowKey:"id",loading:b,dataSource:y,columns:_,locale:{emptyText:l().createElement(a.Empty,{description:s("No reviews yet")})},pagination:{pageSize:20},onRow:function(e){return{style:{cursor:"pointer"},onClick:function(){z(e),j(!1),q(e.reviewMarkdown||"")}}}}),l().createElement(a.Drawer,{title:P?l().createElement(a.Space,null,l().createElement(o.RobotOutlined,null),l().createElement("span",null,s("Code Review")),l().createElement(a.Tag,{color:e0[P.status]},s(P.status)),l().createElement(a.Tag,{color:e1[P.postStatus]},s(P.postStatus))):s("Code Review"),open:!!P,onClose:function(){z(null),j(!1)},width:840,extra:P&&l().createElement(a.Space,null,l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:function(){return U(P.id)}},s("Refresh")),"mr"===P.targetType&&l().createElement(a.Button,{size:"small",icon:l().createElement(o.ExportOutlined,null),onClick:function(){var e,t=W[P.repositoryId],n=null==t||null==(e=t.repoUrl)?void 0:e.replace(/\.git$/,"");n&&P.mrIid&&window.open("".concat(n,"/-/merge_requests/").concat(P.mrIid),"_blank")}},s("Open MR")))},P&&l().createElement(e3,{review:P,editing:B,editedMarkdown:D,onEdit:function(){return j(!0)},onCancelEdit:function(){j(!1),q(P.reviewMarkdown||"")},onChangeMarkdown:q,onApprove:N,onReject:H})))},e3=function(e){var t=e.review,n=e.editing,r=e.editedMarkdown,i=e.onEdit,c=e.onCancelEdit,u=e.onChangeMarkdown,s=e.onApprove,d=e.onReject,m=h(),p=eZ().token,f="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:m("Review in progress…"),description:m("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:m("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:m("Post Failed"),description:l().createElement("pre",{style:{whiteSpace:"pre-wrap",margin:0}},t.error),style:{marginBottom:16}}),f&&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 s(r)}},m("Save & Post")),l().createElement(a.Button,{onClick:c},m("Cancel"))):l().createElement(l().Fragment,null,l().createElement(a.Button,{type:"primary",icon:l().createElement(o.CheckOutlined,null),onClick:function(){return s(t.reviewMarkdown)}},m("Approve & Post")),l().createElement(a.Button,{icon:l().createElement(o.EditOutlined,null),onClick:i},m("Edit & Post")),l().createElement(a.Popconfirm,{title:m("Reject this review?"),onConfirm:d},l().createElement(a.Button,{danger:!0,icon:l().createElement(o.CloseOutlined,null)},m("Reject"))))),l().createElement(a.Tabs,{defaultActiveKey:"content",items:[{key:"content",label:m("Review Content"),children:n?l().createElement(a.Input.TextArea,{value:r,onChange:function(e){return u(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:p.colorBgLayout,padding:16,borderRadius:8,maxHeight:"70vh",overflowY:"auto"}},l().createElement(e$,{content:t.reviewMarkdown})):l().createElement(a.Empty,{description:m("No content yet")})},{key:"metadata",label:m("Metadata"),children:l().createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px 16px",fontSize:13}},l().createElement(e4,{label:m("Status"),value:t.status}),l().createElement(e4,{label:m("Post Status"),value:t.postStatus}),l().createElement(e4,{label:m("Trigger Type"),value:t.targetType}),l().createElement(e4,{label:m("Triggered By"),value:t.triggeredBy}),l().createElement(e4,{label:m("Reviewed SHA"),value:t.headSha||"—"}),l().createElement(e4,{label:m("Latest SHA"),value:t.latestSha||"—"}),l().createElement(e4,{label:m("Started At"),value:t.startedAt&&new Date(t.startedAt).toLocaleString()}),l().createElement(e4,{label:m("Finished At"),value:t.finishedAt&&new Date(t.finishedAt).toLocaleString()}),l().createElement(e4,{label:m("Duration"),value:t.durationMs?"".concat((t.durationMs/1e3).toFixed(1),"s"):"—"}),l().createElement(e4,{label:m("Posted Note ID"),value:t.postedNoteId||"—"}),l().createElement(e4,{label:m("Approved By"),value:t.approvedBy||"—"}),l().createElement(e4,{label:m("Approved At"),value:t.approvedAt&&new Date(t.approvedAt).toLocaleString()}),l().createElement(e4,{label:m("Session ID"),value:t.sessionId||"—"}),l().createElement(e4,{label:m("Flow ID"),value:t.flowId||"—"}))}]}))},e4=function(e){var t=e.label,n=e.value;return l().createElement("div",null,l().createElement(eY,{type:"secondary",style:{fontSize:12,display:"block"}},t),l().createElement("div",{style:{wordBreak:"break-all"}},n||"—"))};function e6(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 e5(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 e8(e){return function(){var t=this,n=arguments;return new Promise(function(r,l){var a=e.apply(t,n);function o(e){e5(a,r,l,o,i,"next",e)}function i(e){e5(a,r,l,o,i,"throw",e)}o(void 0)})}}function e7(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 e6(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 e6(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 e9(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 te=a.Typography.Text,tt=a.theme.useToken,tn=function(){var e,t,n=h();tt().token;var c=(0,i.useAPIClient)(),u=f(),s=u.repos,d=u.refreshRepos,m=e7((0,r.useState)(null),2),p=m[0],y=m[1],g=e7((0,r.useState)(!1),2),v=g[0],b=g[1],E=e7((0,r.useState)(null),2),w=E[0],S=E[1],k=e7((0,r.useState)([]),2),C=k[0],I=k[1],x=(0,r.useCallback)(e8(function(){var e,t,n,r;return e9(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([c.request({url:"gitManager:pollerStatus"}),c.request({url:"gitReviewFlows:list",params:{pageSize:100,filter:{enabled:!0,triggerMode:{$in:["onMergeRequestCreated","both"]}}}})])];case 2:return n=(t=e7.apply(void 0,[l.sent(),2]))[0].data,r=t[1],y((null==n?void 0:n.data)||null),I((null==r||null==(e=r.data)?void 0:e.data)||[]),[4,d()];case 3:return l.sent(),[3,5];case 4:return b(!1),[7];case 5:return[2]}})}),[c,d]);(0,r.useEffect)(function(){x()},[x]);var O=(e=e8(function(){var e,t,r,l,o,i,u,s,d;return e9(this,function(m){switch(m.label){case 0:S("all"),m.label=1;case 1:return m.trys.push([1,3,4,5]),[4,c.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})),x(),[3,5];case 3:return o=m.sent(),a.message.error((null==o||null==(d=o.response)||null==(s=d.data)||null==(u=s.errors)||null==(i=u[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)}),A=(t=e8(function(e){var t,r,l,o,i,u,s,d,m;return e9(this,function(p){switch(p.label){case 0:S(e),p.label=1;case 1:return p.trys.push([1,3,4,5]),[4,c.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})),x(),[3,5];case 3:return i=p.sent(),a.message.error((null==i||null==(m=i.response)||null==(d=m.data)||null==(s=d.errors)||null==(u=s[0])?void 0:u.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)}),T=s.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:O,loading:"all"===w,disabled:0===T.length},n("Poll Now (All)")),l().createElement(a.Button,{size:"small",icon:l().createElement(o.ReloadOutlined,null),onClick:x,loading:v},n("Refresh")))},l().createElement(a.Space,{direction:"vertical",size:4,style:{width:"100%"}},l().createElement(a.Space,null,l().createElement(te,{type:"secondary"},n("Background poller"),":"),l().createElement(a.Tag,{color:(null==p?void 0:p.running)?"green":"default"},(null==p?void 0:p.running)?n("Running"):n("Stopped")),(null==p?void 0:p.polling)&&l().createElement(a.Tag,{color:"blue"},n("Polling now…"))),l().createElement(a.Space,null,l().createElement(te,{type:"secondary"},n("Interval"),":"),l().createElement(te,null,(null==p?void 0:p.intervalSec)?"".concat(p.intervalSec,"s"):"—")),l().createElement(a.Space,null,l().createElement(te,{type:"secondary"},n("Last tick"),":"),l().createElement(te,null,(null==p?void 0:p.lastTickAt)?new Date(p.lastTickAt).toLocaleString():n("Never"))),(null==p?void 0:p.lastError)&&l().createElement(a.Space,null,l().createElement(te,{type:"secondary"},n("Last error"),":"),l().createElement(te,{type:"danger",style:{fontSize:12}},p.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(te,{type:"secondary",style:{fontSize:12}},n("Toggle Auto Review on the Repositories tab to enable polling"))},0===T.length?l().createElement(a.Empty,{description:n("No repositories have Auto Review enabled")}):l().createElement(a.Table,{size:"small",rowKey:"id",dataSource:T,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 A(t.id)},loading:w===t.id},n("Poll Now")))}}]})))},tr=a.Typography.Text,tl=a.theme.useToken,ta=function(){var e=h(),t=tl().token,n=f(),i=n.repos,c=n.selectedRepo,u=n.setSelectedRepo,s=n.refreshRepos;return(0,r.useEffect)(function(){s()},[]),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(tr,{strong:!0},"Repository:"),l().createElement(a.Select,{style:{minWidth:250},placeholder:e("Select a repository"),value:null==c?void 0:c.id,onChange:function(e){u(i.find(function(t){return t.id===e})||null)},options:i.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 u(null)}}),c&&l().createElement(tr,{type:"secondary",style:{fontSize:12}},c.repoUrl)),l().createElement(a.Tabs,{type:"card",defaultActiveKey:"repos",destroyInactiveTabPane:!0,items:[{key:"repos",label:l().createElement("span",null,l().createElement(o.DatabaseOutlined,null)," ",e("Repositories")),children:l().createElement(S,null)},{key:"explorer",label:l().createElement("span",null,l().createElement(o.FolderOutlined,null)," ",e("File Explorer")),children:l().createElement(B,null)},{key:"history",label:l().createElement("span",null,l().createElement(o.HistoryOutlined,null)," ",e("History")),children:l().createElement(X,null)},{key:"merge-requests",label:l().createElement("span",null,l().createElement(o.MergeOutlined,null)," ",e("Merge Requests")),children:l().createElement(ec,null)},{key:"operations",label:l().createElement("span",null,l().createElement(o.ToolOutlined,null)," ",e("Operations")),children:l().createElement(ex,null)},{key:"review-flows",label:l().createElement("span",null,l().createElement(o.RobotOutlined,null)," ",e("Review Flows")),children:l().createElement(eW,null)},{key:"review-history",label:l().createElement("span",null,l().createElement(o.AuditOutlined,null)," ",e("Review History")),children:l().createElement(e2,null)},{key:"polling",label:l().createElement("span",null,l().createElement(o.ClockCircleOutlined,null)," ",e("Polling")),children:l().createElement(tn,null)}]}))},to=function(){return l().createElement(y,null,l().createElement(ta,null))}}}]);
|
|
@@ -19,7 +19,7 @@ type Target = {
|
|
|
19
19
|
* Button that lets the user kick off a code review for a given target.
|
|
20
20
|
* Two paths:
|
|
21
21
|
* - "Run review" → POST gitManager:triggerReview (server-side, async)
|
|
22
|
-
* - "Open chat" → call useChatBoxActions().triggerTask if plugin-ai is loaded,
|
|
22
|
+
* - "Open chat" → call (aiClient as any).useChatBoxActions?.() || {}.triggerTask if plugin-ai is loaded,
|
|
23
23
|
* so the user can chat with the AI employee using the same context.
|
|
24
24
|
*/
|
|
25
25
|
export declare const RunReviewButton: React.FC<{
|
package/dist/client/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("plugin-git-manager",["@nocobase/client","react","@ant-design/icons","antd"],t):"object"==typeof exports?exports["plugin-git-manager"]=t(require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):e["plugin-git-manager"]=t(e["@nocobase/client"],e.react,e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r){return function(){var o,i,u,a,l,c,s={41:function(e){e.exports=function(e,t){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,t),t}},482:function(e){"use strict";e.exports=n},772:function(t){"use strict";t.exports=e},721:function(e){"use strict";e.exports=r},156:function(e){"use strict";e.exports=t}},f={};function p(e){var t=f[e];if(void 0!==t)return t.exports;var n=f[e]={exports:{}};return s[e].call(n.exports,n,n.exports,p),n.exports}p.m=s,p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,{a:t}),t},p.d=function(e,t){for(var n in t)p.o(t,n)&&!p.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},p.f={},p.e=function(e){return Promise.all(Object.keys(p.f).reduce(function(t,n){return p.f[n](e,t),t},[]))},p.u=function(e){return""+e+"."+({187:"eec7be93247463d7",228:"7588a0707cb3694a"})[e]+".js"},p.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o={},i="plugin-git-manager:",p.l=function(e,t,n,r){if(o[e])return void o[e].push(t);if(void 0!==n)for(var u,a,l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var s=l[c];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==i+n){u=s;break}}u||(a=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,p.nc&&u.setAttribute("nonce",p.nc),u.setAttribute("data-webpack",i+n),u.src=e),o[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(d);var r=o[e];if(delete o[e],u.parentNode&&u.parentNode.removeChild(u),r&&r.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),a&&document.head.appendChild(u)},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(u=window.__webpack_public_path__||"/").endsWith("/")||(u+="/"),p.p=u+"static/plugins/plugin-git-manager/dist/client/",a={909:0},p.f.j=function(e,t){var n=p.o(a,e)?a[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=a[e]=[t,r]});t.push(n[2]=r);var o=p.p+p.u(e),i=Error();p.l(o,function(t){if(p.o(a,e)&&(0!==(n=a[e])&&(a[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}},l=function(e,t){var n,r,o=t[0],i=t[1],u=t[2],l=0;if(o.some(function(e){return 0!==a[e]})){for(n in i)p.o(i,n)&&(p.m[n]=i[n]);u&&u(p)}for(e&&e(t);l<o.length;l++)r=o[l],p.o(a,r)&&a[r]&&a[r][0](),a[r]=0},(c=self.webpackChunkplugin_git_manager=self.webpackChunkplugin_git_manager||[]).forEach(l.bind(null,0)),c.push=l.bind(null,c.push.bind(c));var d={};return!function(){"use strict";p.r(d),p.d(d,{PluginGitManagerClient:function(){return j},default:function(){return k}});var e,t,n,r=p(772),o=p(156),i=p.n(o),u=p(721),a=p(482);function l(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,o,i,u){try{var a=e[i](u),l=a.value}catch(e){n(e);return}a.done?t(l):Promise.resolve(l).then(r,o)}function s(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){c(i,r,o,u,a,"next",e)}function a(e){c(i,r,o,u,a,"throw",e)}u(void 0)})}}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],u=!0,a=!1;try{for(o=o.call(e);!(u=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){a=!0,r=e}finally{try{u||null==o.return||o.return()}finally{if(a)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(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 l(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 n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var l=[i,a];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return u.label++,{value:l[1],done:!1};case 5:u.label++,r=l[1],l=[0];continue;case 7:l=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){u=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){u.label=l[1];break}if(6===l[0]&&u.label<o[1]){u.label=o[1],o=l;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(l);break}o[2]&&u.ops.pop(),u.trys.pop();continue}l=t.call(e,u)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var g={name:"git-repository",menu:{icon:i().createElement(a.BranchesOutlined,null),Component:function(){return i().createElement("span",null,"Git Repository")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.BranchesOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"Repo #".concat(null==t?void 0:t.uid)))}},getContent:(e=s(function(e,t){var n,r,o,i;return m(this,function(u){switch(u.label){case 0:return n=t.uid,[4,e.apiClient.request({url:"gitRepositories:get",params:{filterByTk:n}})];case 1:if(!(i=null==(o=u.sent())||null==(r=o.data)?void 0:r.data))return[2,null];return[2,{type:"git-repository",repositoryId:i.id,name:i.name,repoUrl:i.repoUrl,defaultBranch:i.defaultBranch,status:i.status}]}})}),function(t,n){return e.apply(this,arguments)})},y={name:"git-merge-request",menu:{icon:i().createElement(a.MergeOutlined,null),Component:function(){return i().createElement("span",null,"Git Merge Request")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.MergeOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"MR ".concat(null==t?void 0:t.uid)))}},getContent:(t=s(function(e,t){var n,r,o,i,u,a,l,c;return m(this,function(s){switch(s.label){case 0:if(o=(r=f(String(t.uid||"").split(":"),2))[0],i=r[1],u=Number(o),a=Number(i),!u||!a)return[2,null];return[4,e.apiClient.request({url:"gitManager:mergeRequestDetail",params:{repositoryId:u,mrIid:a}})];case 1:return c=null==(l=s.sent())||null==(n=l.data)?void 0:n.data,[2,{type:"git-merge-request",repositoryId:u,mrIid:a,title:null==c?void 0:c.title,sourceBranch:null==c?void 0:c.sourceBranch,targetBranch:null==c?void 0:c.targetBranch,author:null==c?void 0:c.author,changes:null==c?void 0:c.changes,description:null==c?void 0:c.description,webUrl:null==c?void 0:c.webUrl}]}})}),function(e,n){return t.apply(this,arguments)})},b={name:"git-commit",menu:{icon:i().createElement(a.NodeIndexOutlined,null),Component:function(){return i().createElement("span",null,"Git Commit")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.NodeIndexOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"Commit ".concat(null==t?void 0:t.uid)))}},getContent:(n=s(function(e,t){var n,r,o,i,u,a,l;return m(this,function(c){switch(c.label){case 0:if(o=(r=f(String(t.uid||"").split(":"),2))[0],i=r[1],!(u=Number(o))||!i)return[2,null];return[4,e.apiClient.request({url:"gitManager:commitDetail",params:{repositoryId:u,commitHash:i}})];case 1:return l=null==(a=c.sent())||null==(n=a.data)?void 0:n.data,[2,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}({type:"git-commit",repositoryId:u,commitSha:i},l)]}})}),function(e,t){return n.apply(this,arguments)})},h=p(41);function v(e,t,n,r,o,i,u){try{var a=e[i](u),l=a.value}catch(e){n(e);return}a.done?t(l):Promise.resolve(l).then(r,o)}function w(e,t,n){return(w=E()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&_(o,n.prototype),o}).apply(null,arguments)}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function x(e){var t="function"==typeof Map?new Map:void 0;return(x=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return w(e,arguments,O(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_(n,e)})(e)}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(E=function(){return!!e})()}var S=i().lazy(function(){return h("imported_7nc0nn_component",Promise.all([p.e("228"),p.e("187")]).then(p.bind(p,922))).then(function(e){return{default:e.GitManagerSettings}})}),j=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=O(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,E()?Reflect.construct(e,t||[],O(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&_(n,e),t=[{key:"load",value:function(){var e,t=this;return(e=function(){var e;return function(e,t){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var l=[i,a];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return u.label++,{value:l[1],done:!1};case 5:u.label++,r=l[1],l=[0];continue;case 7:l=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){u=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){u.label=l[1];break}if(6===l[0]&&u.label<o[1]){u.label=o[1],o=l;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(l);break}o[2]&&u.ops.pop(),u.trys.pop();continue}l=t.call(e,u)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(n){return t.app.pluginSettingsManager.add("git-manager",{title:t.t("Git Manager"),icon:"BranchesOutlined",Component:S,aclSnippet:"pm.plugin-git-manager"}),(null==(e=t.app.aiManager)?void 0:e.registerWorkContext)&&(e.registerWorkContext("git-repository",g),e.registerWorkContext("git-merge-request",y),e.registerWorkContext("git-commit",b)),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){v(i,r,o,u,a,"next",e)}function a(e){v(i,r,o,u,a,"throw",e)}u(void 0)})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(x(r.Plugin)),k=j}(),d}()});
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@nocobase/plugin-ai/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("plugin-git-manager",["@nocobase/plugin-ai/client","@nocobase/client","react","@ant-design/icons","antd"],t):"object"==typeof exports?exports["plugin-git-manager"]=t(require("@nocobase/plugin-ai/client"),require("@nocobase/client"),require("react"),require("@ant-design/icons"),require("antd")):e["plugin-git-manager"]=t(e["@nocobase/plugin-ai/client"],e["@nocobase/client"],e.react,e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r,o){return function(){var i,u,a,l,c,s,f={41:function(e){e.exports=function(e,t){return"undefined"!=typeof __deoptimization_sideEffect__&&__deoptimization_sideEffect__(e,t),t}},482:function(e){"use strict";e.exports=r},772:function(e){"use strict";e.exports=t},645:function(t){"use strict";t.exports=e},721:function(e){"use strict";e.exports=o},156:function(e){"use strict";e.exports=n}},p={};function d(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return f[e].call(n.exports,n,n.exports,d),n.exports}d.m=f,d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return""+e+"."+({187:"d5545b7cc8b90bfc",228:"7588a0707cb3694a"})[e]+".js"},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i={},u="plugin-git-manager:",d.l=function(e,t,n,r){if(i[e])return void i[e].push(t);if(void 0!==n)for(var o,a,l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var s=l[c];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==u+n){o=s;break}}o||(a=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-webpack",u+n),o.src=e),i[e]=[t];var f=function(t,n){o.onerror=o.onload=null,clearTimeout(p);var r=i[e];if(delete i[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=f.bind(null,o.onerror),o.onload=f.bind(null,o.onload),a&&document.head.appendChild(o)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(a=window.__webpack_public_path__||"/").endsWith("/")||(a+="/"),d.p=a+"static/plugins/plugin-git-manager/dist/client/",l={909:0},d.f.j=function(e,t){var n=d.o(l,e)?l[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=l[e]=[t,r]});t.push(n[2]=r);var o=d.p+d.u(e),i=Error();d.l(o,function(t){if(d.o(l,e)&&(0!==(n=l[e])&&(l[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}},c=function(e,t){var n,r,o=t[0],i=t[1],u=t[2],a=0;if(o.some(function(e){return 0!==l[e]})){for(n in i)d.o(i,n)&&(d.m[n]=i[n]);u&&u(d)}for(e&&e(t);a<o.length;a++)r=o[a],d.o(l,r)&&l[r]&&l[r][0](),l[r]=0},(s=self.webpackChunkplugin_git_manager=self.webpackChunkplugin_git_manager||[]).forEach(c.bind(null,0)),s.push=c.bind(null,s.push.bind(s));var m={};return!function(){"use strict";d.r(m),d.d(m,{PluginGitManagerClient:function(){return j},default:function(){return k}});var e,t,n,r=d(772),o=d(156),i=d.n(o),u=d(721),a=d(482);function l(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,o,i,u){try{var a=e[i](u),l=a.value}catch(e){n(e);return}a.done?t(l):Promise.resolve(l).then(r,o)}function s(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){c(i,r,o,u,a,"next",e)}function a(e){c(i,r,o,u,a,"throw",e)}u(void 0)})}}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],u=!0,a=!1;try{for(o=o.call(e);!(u=(n=o.next()).done)&&(i.push(n.value),!t||i.length!==t);u=!0);}catch(e){a=!0,r=e}finally{try{u||null==o.return||o.return()}finally{if(a)throw r}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(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 l(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 p(e,t){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var l=[i,a];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return u.label++,{value:l[1],done:!1};case 5:u.label++,r=l[1],l=[0];continue;case 7:l=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){u=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){u.label=l[1];break}if(6===l[0]&&u.label<o[1]){u.label=o[1],o=l;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(l);break}o[2]&&u.ops.pop(),u.trys.pop();continue}l=t.call(e,u)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}var g={name:"git-repository",menu:{icon:i().createElement(a.BranchesOutlined,null),Component:function(){return i().createElement("span",null,"Git Repository")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.BranchesOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"Repo #".concat(null==t?void 0:t.uid)))}},getContent:(e=s(function(e,t){var n,r,o,i;return p(this,function(u){switch(u.label){case 0:return n=t.uid,[4,e.apiClient.request({url:"gitRepositories:get",params:{filterByTk:n}})];case 1:if(!(i=null==(o=u.sent())||null==(r=o.data)?void 0:r.data))return[2,null];return[2,{type:"git-repository",repositoryId:i.id,name:i.name,repoUrl:i.repoUrl,defaultBranch:i.defaultBranch,status:i.status}]}})}),function(t,n){return e.apply(this,arguments)})},b={name:"git-merge-request",menu:{icon:i().createElement(a.MergeOutlined,null),Component:function(){return i().createElement("span",null,"Git Merge Request")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.MergeOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"MR ".concat(null==t?void 0:t.uid)))}},getContent:(t=s(function(e,t){var n,r,o,i,u,a,l,c;return p(this,function(s){switch(s.label){case 0:if(o=(r=f(String(t.uid||"").split(":"),2))[0],i=r[1],u=Number(o),a=Number(i),!u||!a)return[2,null];return[4,e.apiClient.request({url:"gitManager:mergeRequestDetail",params:{repositoryId:u,mrIid:a}})];case 1:return c=null==(l=s.sent())||null==(n=l.data)?void 0:n.data,[2,{type:"git-merge-request",repositoryId:u,mrIid:a,title:null==c?void 0:c.title,sourceBranch:null==c?void 0:c.sourceBranch,targetBranch:null==c?void 0:c.targetBranch,author:null==c?void 0:c.author,changes:null==c?void 0:c.changes,description:null==c?void 0:c.description,webUrl:null==c?void 0:c.webUrl}]}})}),function(e,n){return t.apply(this,arguments)})},y={name:"git-commit",menu:{icon:i().createElement(a.NodeIndexOutlined,null),Component:function(){return i().createElement("span",null,"Git Commit")}},tag:{Component:function(e){var t=e.item;return i().createElement(u.Space,{size:4},i().createElement(a.NodeIndexOutlined,null),i().createElement("span",null,(null==t?void 0:t.title)||"Commit ".concat(null==t?void 0:t.uid)))}},getContent:(n=s(function(e,t){var n,r,o,i,u,a,l;return p(this,function(c){switch(c.label){case 0:if(o=(r=f(String(t.uid||"").split(":"),2))[0],i=r[1],!(u=Number(o))||!i)return[2,null];return[4,e.apiClient.request({url:"gitManager:commitDetail",params:{repositoryId:u,commitHash:i}})];case 1:return l=null==(a=c.sent())||null==(n=a.data)?void 0:n.data,[2,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}({type:"git-commit",repositoryId:u,commitSha:i},l)]}})}),function(e,t){return n.apply(this,arguments)})},h=d(41);function v(e,t,n,r,o,i,u){try{var a=e[i](u),l=a.value}catch(e){n(e);return}a.done?t(l):Promise.resolve(l).then(r,o)}function w(e,t,n){return(w=E()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&_(o,n.prototype),o}).apply(null,arguments)}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _(e,t){return(_=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function x(e){var t="function"==typeof Map?new Map:void 0;return(x=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return w(e,arguments,O(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),_(n,e)})(e)}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(E=function(){return!!e})()}var S=i().lazy(function(){return h("imported_7nc0nn_component",Promise.all([d.e("228"),d.e("187")]).then(d.bind(d,922))).then(function(e){return{default:e.GitManagerSettings}})}),j=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return e=n,t=arguments,e=O(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,E()?Reflect.construct(e,t||[],O(this).constructor):e.apply(this,t))}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&_(n,e),t=[{key:"load",value:function(){var e,t=this;return(e=function(){var e;return function(e,t){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var l=[i,a];if(n)throw TypeError("Generator is already executing.");for(;u;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return u.label++,{value:l[1],done:!1};case 5:u.label++,r=l[1],l=[0];continue;case 7:l=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){u=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){u.label=l[1];break}if(6===l[0]&&u.label<o[1]){u.label=o[1],o=l;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(l);break}o[2]&&u.ops.pop(),u.trys.pop();continue}l=t.call(e,u)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(n){return t.app.pluginSettingsManager.add("git-manager",{title:t.t("Git Manager"),icon:"BranchesOutlined",Component:S,aclSnippet:"pm.plugin-git-manager"}),(null==(e=t.app.aiManager)?void 0:e.registerWorkContext)&&(e.registerWorkContext("git-repository",g),e.registerWorkContext("git-merge-request",b),e.registerWorkContext("git-commit",y)),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function u(e){v(i,r,o,u,a,"next",e)}function a(e){v(i,r,o,u,a,"throw",e)}u(void 0)})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(x(r.Plugin)),k=j}(),m}()});
|
package/dist/externalVersion.js
CHANGED
|
@@ -11,9 +11,11 @@ module.exports = {
|
|
|
11
11
|
"react": "18.2.0",
|
|
12
12
|
"antd": "5.24.2",
|
|
13
13
|
"@ant-design/icons": "5.6.1",
|
|
14
|
-
"@nocobase/client": "2.0.
|
|
15
|
-
"@nocobase/server": "2.0.
|
|
14
|
+
"@nocobase/client": "2.0.49",
|
|
15
|
+
"@nocobase/server": "2.0.49",
|
|
16
|
+
"sequelize": "6.35.2",
|
|
16
17
|
"dayjs": "1.11.13",
|
|
17
|
-
"@nocobase/
|
|
18
|
-
"@nocobase/
|
|
18
|
+
"@nocobase/plugin-ai": "2.0.49",
|
|
19
|
+
"@nocobase/actions": "2.0.49",
|
|
20
|
+
"@nocobase/database": "2.0.49"
|
|
19
21
|
};
|
package/dist/locale/en-US.json
CHANGED
|
@@ -125,6 +125,8 @@
|
|
|
125
125
|
"Posted": "Posted",
|
|
126
126
|
"Pending Approval": "Pending Approval",
|
|
127
127
|
"Approved": "Approved",
|
|
128
|
+
"Post Failed": "Post Failed",
|
|
129
|
+
"post_failed": "Post failed",
|
|
128
130
|
"Rejected": "Rejected",
|
|
129
131
|
"Skipped": "Skipped",
|
|
130
132
|
"Running": "Running",
|
|
@@ -177,5 +179,12 @@
|
|
|
177
179
|
"new": "new",
|
|
178
180
|
"Reviewed SHA": "Reviewed SHA",
|
|
179
181
|
"Latest SHA": "Latest SHA",
|
|
180
|
-
"All triggers": "All triggers"
|
|
182
|
+
"All triggers": "All triggers",
|
|
183
|
+
"Search commit title or message": "Search commit title or message",
|
|
184
|
+
"Primary Auto Flow": "Primary Auto Flow",
|
|
185
|
+
"Primary Auto Review Flow": "Primary Auto Review Flow",
|
|
186
|
+
"Only flows with automatic trigger modes are shown": "Only flows with automatic trigger modes are shown",
|
|
187
|
+
"Fallback": "Fallback",
|
|
188
|
+
"AI employee not found": "AI employee not found",
|
|
189
|
+
"Failed to open AI chat": "Failed to open AI chat"
|
|
181
190
|
}
|
package/dist/locale/vi-VN.json
CHANGED
|
@@ -122,7 +122,10 @@ function getAuthUrl(repoUrl, pat, username) {
|
|
|
122
122
|
url.password = pat.trim();
|
|
123
123
|
return url.toString();
|
|
124
124
|
}
|
|
125
|
-
function getGit(localPath) {
|
|
125
|
+
function getGit(ctx, localPath) {
|
|
126
|
+
if (!fs.existsSync(localPath)) {
|
|
127
|
+
ctx.throw(400, "Repository directory does not exist. Please clone the repository first.");
|
|
128
|
+
}
|
|
126
129
|
return (0, import_simple_git.default)(localPath);
|
|
127
130
|
}
|
|
128
131
|
async function getRepo(ctx) {
|
|
@@ -183,7 +186,7 @@ async function pull(ctx, next) {
|
|
|
183
186
|
const pat = (repo.get("pat") || "").trim();
|
|
184
187
|
const repoUrl = (repo.get("repoUrl") || "").trim();
|
|
185
188
|
const username = (repo.get("username") || "").trim();
|
|
186
|
-
const git = getGit(localPath);
|
|
189
|
+
const git = getGit(ctx, localPath);
|
|
187
190
|
const result = await withAuth(git, localPath, repoUrl, pat, () => git.pull(), username);
|
|
188
191
|
ctx.body = { success: true, data: result };
|
|
189
192
|
await next();
|
|
@@ -194,7 +197,7 @@ async function push(ctx, next) {
|
|
|
194
197
|
const pat = (repo.get("pat") || "").trim();
|
|
195
198
|
const repoUrl = (repo.get("repoUrl") || "").trim();
|
|
196
199
|
const username = (repo.get("username") || "").trim();
|
|
197
|
-
const git = getGit(localPath);
|
|
200
|
+
const git = getGit(ctx, localPath);
|
|
198
201
|
const result = await withAuth(git, localPath, repoUrl, pat, () => git.push(), username);
|
|
199
202
|
ctx.body = { success: true, data: result };
|
|
200
203
|
await next();
|
|
@@ -205,7 +208,7 @@ async function fetch(ctx, next) {
|
|
|
205
208
|
const pat = (repo.get("pat") || "").trim();
|
|
206
209
|
const repoUrl = (repo.get("repoUrl") || "").trim();
|
|
207
210
|
const username = (repo.get("username") || "").trim();
|
|
208
|
-
const git = getGit(localPath);
|
|
211
|
+
const git = getGit(ctx, localPath);
|
|
209
212
|
const result = await withAuth(git, localPath, repoUrl, pat, () => git.fetch(), username);
|
|
210
213
|
ctx.body = { success: true, data: result };
|
|
211
214
|
await next();
|
|
@@ -214,7 +217,7 @@ async function diff(ctx, next) {
|
|
|
214
217
|
const repo = await getRepo(ctx);
|
|
215
218
|
const localPath = validateLocalPath(repo.get("localPath"));
|
|
216
219
|
const { file, commitHash, compareHash } = ctx.action.params;
|
|
217
|
-
const git = getGit(localPath);
|
|
220
|
+
const git = getGit(ctx, localPath);
|
|
218
221
|
const args = [];
|
|
219
222
|
if (commitHash && compareHash) {
|
|
220
223
|
args.push(validateRef(commitHash), validateRef(compareHash));
|
|
@@ -232,7 +235,7 @@ async function diff(ctx, next) {
|
|
|
232
235
|
async function status(ctx, next) {
|
|
233
236
|
const repo = await getRepo(ctx);
|
|
234
237
|
const localPath = validateLocalPath(repo.get("localPath"));
|
|
235
|
-
const result = await getGit(localPath).status();
|
|
238
|
+
const result = await getGit(ctx, localPath).status();
|
|
236
239
|
ctx.body = { success: true, data: result };
|
|
237
240
|
await next();
|
|
238
241
|
}
|
|
@@ -246,14 +249,14 @@ async function log(ctx, next) {
|
|
|
246
249
|
if (file.includes("..")) ctx.throw(400, "Invalid file path");
|
|
247
250
|
options.file = file;
|
|
248
251
|
}
|
|
249
|
-
const result = await getGit(localPath).log(options);
|
|
252
|
+
const result = await getGit(ctx, localPath).log(options);
|
|
250
253
|
ctx.body = { success: true, data: result };
|
|
251
254
|
await next();
|
|
252
255
|
}
|
|
253
256
|
async function branches(ctx, next) {
|
|
254
257
|
const repo = await getRepo(ctx);
|
|
255
258
|
const localPath = validateLocalPath(repo.get("localPath"));
|
|
256
|
-
const result = await getGit(localPath).branch();
|
|
259
|
+
const result = await getGit(ctx, localPath).branch();
|
|
257
260
|
ctx.body = { success: true, data: result };
|
|
258
261
|
await next();
|
|
259
262
|
}
|
|
@@ -262,7 +265,7 @@ async function checkout(ctx, next) {
|
|
|
262
265
|
const localPath = validateLocalPath(repo.get("localPath"));
|
|
263
266
|
const { branch } = ctx.action.params;
|
|
264
267
|
validateBranch(branch);
|
|
265
|
-
await getGit(localPath).checkout(branch);
|
|
268
|
+
await getGit(ctx, localPath).checkout(branch);
|
|
266
269
|
ctx.body = { success: true, message: `Switched to branch ${branch}` };
|
|
267
270
|
await next();
|
|
268
271
|
}
|
|
@@ -270,7 +273,7 @@ async function fileTree(ctx, next) {
|
|
|
270
273
|
const repo = await getRepo(ctx);
|
|
271
274
|
const localPath = validateLocalPath(repo.get("localPath"));
|
|
272
275
|
const { ref = "HEAD", treePath = "" } = ctx.action.params;
|
|
273
|
-
const git = getGit(localPath);
|
|
276
|
+
const git = getGit(ctx, localPath);
|
|
274
277
|
validateRef(ref);
|
|
275
278
|
if (treePath && treePath.includes("..")) {
|
|
276
279
|
ctx.throw(400, "Invalid tree path");
|
|
@@ -310,7 +313,7 @@ async function fileContent(ctx, next) {
|
|
|
310
313
|
ctx.throw(400, "Invalid file path");
|
|
311
314
|
}
|
|
312
315
|
validateRef(ref);
|
|
313
|
-
const git = getGit(localPath);
|
|
316
|
+
const git = getGit(ctx, localPath);
|
|
314
317
|
const content = await git.show([`${ref}:${filePath}`]);
|
|
315
318
|
ctx.body = { success: true, data: { content, filePath, ref } };
|
|
316
319
|
await next();
|
|
@@ -322,7 +325,7 @@ async function commitDetail(ctx, next) {
|
|
|
322
325
|
if (!commitHash) {
|
|
323
326
|
ctx.throw(400, "commitHash is required");
|
|
324
327
|
}
|
|
325
|
-
const git = getGit(localPath);
|
|
328
|
+
const git = getGit(ctx, localPath);
|
|
326
329
|
validateRef(commitHash);
|
|
327
330
|
const DELIM_ARG = "%x00";
|
|
328
331
|
const DELIM_OUT = "\0";
|