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.
Files changed (42) hide show
  1. package/dist/client/187.d5545b7cc8b90bfc.js +10 -0
  2. package/dist/client/components/RunReviewButton.d.ts +1 -1
  3. package/dist/client/context/GitManagerContext.d.ts +2 -0
  4. package/dist/client/index.js +1 -1
  5. package/dist/externalVersion.js +6 -4
  6. package/dist/locale/en-US.json +10 -1
  7. package/dist/locale/vi-VN.json +2 -0
  8. package/dist/server/actions/git-actions.js +15 -12
  9. package/dist/server/actions/gitlab-api.js +14 -13
  10. package/dist/server/actions/review.d.ts +5 -2
  11. package/dist/server/actions/review.js +184 -37
  12. package/dist/server/ai-tools.js +2 -0
  13. package/dist/server/collections/gitCodeReviews.js +1 -0
  14. package/dist/server/collections/gitRepositories.js +12 -0
  15. package/dist/server/migrations/20260508000000-add-auto-review-flow-id.d.ts +6 -0
  16. package/dist/server/migrations/20260508000000-add-auto-review-flow-id.js +57 -0
  17. package/dist/server/plugin.d.ts +4 -0
  18. package/dist/server/plugin.js +43 -6
  19. package/dist/server/poller.js +3 -1
  20. package/package.json +1 -1
  21. package/src/client/components/CommitHistory.tsx +21 -3
  22. package/src/client/components/FileExplorer.tsx +29 -24
  23. package/src/client/components/GitOperations.tsx +32 -16
  24. package/src/client/components/PollingStatus.tsx +27 -1
  25. package/src/client/components/RepositoryConfig.tsx +76 -3
  26. package/src/client/components/ReviewFlows.tsx +11 -1
  27. package/src/client/components/ReviewHistory.tsx +14 -1
  28. package/src/client/components/RunReviewButton.tsx +375 -278
  29. package/src/client/context/GitManagerContext.tsx +2 -0
  30. package/src/client/index.tsx +31 -31
  31. package/src/locale/en-US.json +10 -1
  32. package/src/locale/vi-VN.json +2 -0
  33. package/src/server/actions/git-actions.ts +15 -12
  34. package/src/server/actions/gitlab-api.ts +8 -4
  35. package/src/server/actions/review.ts +226 -41
  36. package/src/server/ai-tools.ts +1 -0
  37. package/src/server/collections/gitCodeReviews.ts +1 -0
  38. package/src/server/collections/gitRepositories.ts +12 -0
  39. package/src/server/migrations/20260508000000-add-auto-review-flow-id.ts +29 -0
  40. package/src/server/plugin.ts +205 -164
  41. package/src/server/poller.ts +11 -2
  42. 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<{
@@ -6,6 +6,8 @@ interface Repository {
6
6
  localPath: string;
7
7
  defaultBranch: string;
8
8
  status: string;
9
+ autoReview?: boolean;
10
+ autoReviewFlowId?: number | null;
9
11
  }
10
12
  interface GitManagerContextType {
11
13
  repos: Repository[];
@@ -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}()});
@@ -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.47",
15
- "@nocobase/server": "2.0.47",
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/actions": "2.0.47",
18
- "@nocobase/database": "2.0.47"
18
+ "@nocobase/plugin-ai": "2.0.49",
19
+ "@nocobase/actions": "2.0.49",
20
+ "@nocobase/database": "2.0.49"
19
21
  };
@@ -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
  }
@@ -125,6 +125,8 @@
125
125
  "Posted": "Đã đăng",
126
126
  "Pending Approval": "Chờ duyệt",
127
127
  "Approved": "Đã duyệt",
128
+ "Post Failed": "Đăng thất bại",
129
+ "post_failed": "Đăng thất bại",
128
130
  "Rejected": "Đã từ chối",
129
131
  "Skipped": "Đã bỏ qua",
130
132
  "Running": "Đang chạy",
@@ -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";