ziya 0.3.0__py3-none-any.whl → 0.3.2__py3-none-any.whl

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.

Potentially problematic release.


This version of ziya might be problematic. Click here for more details.

Files changed (73) hide show
  1. app/agents/agent.py +71 -73
  2. app/agents/direct_streaming.py +1 -1
  3. app/agents/prompts.py +1 -1
  4. app/agents/prompts_manager.py +14 -10
  5. app/agents/wrappers/google_direct.py +31 -1
  6. app/agents/wrappers/nova_tool_execution.py +2 -2
  7. app/agents/wrappers/nova_wrapper.py +1 -1
  8. app/agents/wrappers/ziya_bedrock.py +53 -31
  9. app/config/models_config.py +61 -20
  10. app/config/shell_config.py +5 -1
  11. app/extensions/prompt_extensions/claude_extensions.py +27 -5
  12. app/extensions/prompt_extensions/mcp_prompt_extensions.py +82 -56
  13. app/main.py +5 -3
  14. app/mcp/client.py +19 -10
  15. app/mcp/manager.py +68 -10
  16. app/mcp/tools.py +8 -9
  17. app/mcp_servers/shell_server.py +3 -3
  18. app/middleware/streaming.py +29 -41
  19. app/routes/file_validation.py +35 -0
  20. app/routes/mcp_routes.py +54 -8
  21. app/server.py +525 -614
  22. app/streaming_tool_executor.py +748 -137
  23. app/templates/asset-manifest.json +20 -20
  24. app/templates/index.html +1 -1
  25. app/templates/static/css/{main.0297bfee.css → main.e7109b49.css} +2 -2
  26. app/templates/static/css/main.e7109b49.css.map +1 -0
  27. app/templates/static/js/14386.65fcfe53.chunk.js +2 -0
  28. app/templates/static/js/14386.65fcfe53.chunk.js.map +1 -0
  29. app/templates/static/js/35589.0368973a.chunk.js +2 -0
  30. app/templates/static/js/35589.0368973a.chunk.js.map +1 -0
  31. app/templates/static/js/{50295.ab92f61b.chunk.js → 50295.90aca393.chunk.js} +3 -3
  32. app/templates/static/js/50295.90aca393.chunk.js.map +1 -0
  33. app/templates/static/js/55734.5f0fd567.chunk.js +2 -0
  34. app/templates/static/js/55734.5f0fd567.chunk.js.map +1 -0
  35. app/templates/static/js/58542.57fed736.chunk.js +2 -0
  36. app/templates/static/js/58542.57fed736.chunk.js.map +1 -0
  37. app/templates/static/js/{68418.2554bb1e.chunk.js → 68418.f7b4d2d9.chunk.js} +3 -3
  38. app/templates/static/js/68418.f7b4d2d9.chunk.js.map +1 -0
  39. app/templates/static/js/99948.b280eda0.chunk.js +2 -0
  40. app/templates/static/js/99948.b280eda0.chunk.js.map +1 -0
  41. app/templates/static/js/main.e075582c.js +3 -0
  42. app/templates/static/js/main.e075582c.js.map +1 -0
  43. app/utils/code_util.py +5 -2
  44. app/utils/context_cache.py +11 -0
  45. app/utils/conversation_filter.py +90 -0
  46. app/utils/custom_bedrock.py +43 -1
  47. app/utils/diff_utils/validation/validators.py +32 -22
  48. app/utils/file_cache.py +5 -3
  49. app/utils/precision_prompt_system.py +116 -0
  50. app/utils/streaming_optimizer.py +100 -0
  51. {ziya-0.3.0.dist-info → ziya-0.3.2.dist-info}/METADATA +3 -2
  52. {ziya-0.3.0.dist-info → ziya-0.3.2.dist-info}/RECORD +59 -55
  53. app/templates/static/css/main.0297bfee.css.map +0 -1
  54. app/templates/static/js/14386.567bf803.chunk.js +0 -2
  55. app/templates/static/js/14386.567bf803.chunk.js.map +0 -1
  56. app/templates/static/js/35589.278ecda2.chunk.js +0 -2
  57. app/templates/static/js/35589.278ecda2.chunk.js.map +0 -1
  58. app/templates/static/js/50295.ab92f61b.chunk.js.map +0 -1
  59. app/templates/static/js/55734.90d8bd52.chunk.js +0 -2
  60. app/templates/static/js/55734.90d8bd52.chunk.js.map +0 -1
  61. app/templates/static/js/58542.08fb5cf4.chunk.js +0 -2
  62. app/templates/static/js/58542.08fb5cf4.chunk.js.map +0 -1
  63. app/templates/static/js/68418.2554bb1e.chunk.js.map +0 -1
  64. app/templates/static/js/99948.71670e91.chunk.js +0 -2
  65. app/templates/static/js/99948.71670e91.chunk.js.map +0 -1
  66. app/templates/static/js/main.1d79eac2.js +0 -3
  67. app/templates/static/js/main.1d79eac2.js.map +0 -1
  68. /app/templates/static/js/{50295.ab92f61b.chunk.js.LICENSE.txt → 50295.90aca393.chunk.js.LICENSE.txt} +0 -0
  69. /app/templates/static/js/{68418.2554bb1e.chunk.js.LICENSE.txt → 68418.f7b4d2d9.chunk.js.LICENSE.txt} +0 -0
  70. /app/templates/static/js/{main.1d79eac2.js.LICENSE.txt → main.e075582c.js.LICENSE.txt} +0 -0
  71. {ziya-0.3.0.dist-info → ziya-0.3.2.dist-info}/WHEEL +0 -0
  72. {ziya-0.3.0.dist-info → ziya-0.3.2.dist-info}/entry_points.txt +0 -0
  73. {ziya-0.3.0.dist-info → ziya-0.3.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[58542],{74490:(e,n,t)=>{t.r(n),t.d(n,{default:()=>k});var a=t(89379),o=t(65043),s=t(97326),i=t(22019),l=t(85672),r=t(6051),c=t(12624),d=t(8354),h=t(42261),m=t(43716),u=t(4015),f=t(76399),p=t(25558),g=t(32513),x=t(75337),v=t(58168);const A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z"}}]},name:"warning",theme:"outlined"};var y=t(22172),C=function(e,n){return o.createElement(y.A,(0,v.A)({},e,{ref:n,icon:A}))};const j=o.forwardRef(C);var w=t(70579);const{Panel:b}=s.A,k=e=>{let{visible:n,onClose:t}=e;const[v,A]=(0,o.useState)(null),[y,C]=(0,o.useState)(""),[k,E]=(0,o.useState)(!1);(0,o.useEffect)((()=>{n&&O()}),[n]);const O=async()=>{try{const e=await fetch("/api/mcp/shell-config");if(e.ok){const n=await e.json();A(n)}}catch(e){console.error("Failed to fetch shell config:",e),A({enabled:!0,allowedCommands:[],gitOperationsEnabled:!0,safeGitOperations:[],timeout:30})}},S=async e=>{try{await fetch("/api/mcp/toggle-server",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({server_name:"shell",enabled:e})})}catch(n){console.warn("Failed to sync MCP server toggle:",n)}},G=()=>{v&&y.trim()&&!v.allowedCommands.includes(y.trim())&&(A((e=>(0,a.A)((0,a.A)({},e),{},{allowedCommands:[...e.allowedCommands,y.trim()]}))),C(""))},B=["rm","rmdir","mv","cp","chmod","chown","sudo","su"],N=e=>B.some((n=>e.toLowerCase().includes(n.toLowerCase())));return v?(0,w.jsx)(l.A,{title:"Shell Command Configuration",open:n,onCancel:t,onOk:async()=>{if(v){E(!0);try{const e=await fetch("/api/mcp/shell-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});if(e.ok){const n=await e.json();n.success?(await S(v.enabled),window.dispatchEvent(new CustomEvent("mcpStatusChanged",{detail:{serverName:"shell",enabled:v.enabled}})),i.Ay.success(n.message||"Shell configuration updated instantly")):i.Ay.error(n.message||"Failed to update shell configuration"),t()}else i.Ay.error("Failed to save shell configuration")}catch(e){i.Ay.error("Failed to save shell configuration"),console.error("Save error:",e)}finally{E(!1)}}},confirmLoading:k,width:600,okText:"Save Configuration",children:(0,w.jsxs)(r.A,{direction:"vertical",style:{width:"100%"},size:"large",children:[(0,w.jsxs)("div",{children:[(0,w.jsxs)(r.A,{align:"center",children:[(0,w.jsx)(c.A,{checked:v.enabled,onChange:async e=>{A((n=>(0,a.A)((0,a.A)({},n),{},{enabled:e}))),await S(e)}}),(0,w.jsx)("span",{children:"Enable shell command execution"})]}),(0,w.jsx)("div",{style:{marginTop:8,color:"#666",fontSize:"12px"},children:"When enabled, the AI agent can execute whitelisted shell commands"})]}),(0,w.jsx)(d.A,{}),(0,w.jsx)(h.A,{message:"Security Notice",description:"Only enable commands that are safe for AI execution. Git operations are limited to read-only and safe operations by default.",type:"info",showIcon:!0,style:{marginBottom:16}}),(0,w.jsxs)(s.A,{defaultActiveKey:["1"],ghost:!0,children:[(0,w.jsxs)(b,{header:"Basic Configuration",children:[(0,w.jsxs)("div",{children:[(0,w.jsx)("h4",{children:"Allowed Commands"}),(0,w.jsx)("div",{style:{marginBottom:12,color:"#666",fontSize:"12px"},children:"Commands that the AI agent can execute. These are loaded from the server configuration."}),(0,w.jsx)("div",{style:{marginBottom:12},children:(0,w.jsxs)(m.A.Group,{compact:!0,children:[(0,w.jsx)(m.A,{placeholder:"Add additional command",value:y,onChange:e=>C(e.target.value),onPressEnter:G,style:{width:"calc(100% - 80px)"}}),(0,w.jsx)(u.Ay,{type:"primary",icon:(0,w.jsx)(x.A,{}),onClick:G,style:{width:80},children:"Add"})]})}),v.allowedCommands&&v.allowedCommands.length>0&&(0,w.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",marginBottom:16},children:v.allowedCommands.map((e=>(0,w.jsxs)(f.A,{closable:!0,color:N(e)?"red":"blue",onClose:()=>(e=>{v&&A((n=>(0,a.A)((0,a.A)({},n),{},{allowedCommands:n.allowedCommands.filter((n=>n!==e))})))})(e),style:{marginBottom:"4px"},children:[e,N(e)&&(0,w.jsx)(j,{style:{marginLeft:4,color:"#ff4d4f"}})]},e)))})]}),(0,w.jsx)(d.A,{}),(0,w.jsxs)("div",{children:[(0,w.jsxs)("h4",{children:["Command Timeout: ",v.timeout,"s"]}),(0,w.jsx)(p.A,{min:10,max:600,value:v.timeout,onChange:e=>A((n=>(0,a.A)((0,a.A)({},n),{},{timeout:e}))),marks:{10:"10s",60:"1m",120:"2m",300:"5m",600:"10m"},style:{width:"100%",marginBottom:20}})]}),(0,w.jsx)(d.A,{}),(0,w.jsxs)("div",{children:[(0,w.jsxs)(r.A,{align:"center",style:{marginBottom:12},children:[(0,w.jsx)(c.A,{checked:v.gitOperationsEnabled,onChange:e=>A((n=>(0,a.A)((0,a.A)({},n),{},{gitOperationsEnabled:e})))}),(0,w.jsx)("span",{children:"Enable safe Git operations"})]}),(0,w.jsx)("div",{style:{marginBottom:12,color:"#666",fontSize:"12px"},children:"When enabled, allows read-only and safe Git commands"}),v.gitOperationsEnabled&&(0,w.jsxs)("div",{style:{marginLeft:24},children:[(0,w.jsx)("h5",{children:"Allowed Git Operations:"}),(0,w.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"},children:["status","log","show","diff","branch","remote","config --get","ls-files","ls-tree","blame","tag","stash list","reflog","rev-parse","describe","shortlog","whatchanged"].map((e=>(0,w.jsxs)(g.A,{checked:v.safeGitOperations.includes(e),onChange:()=>(e=>{v&&A((n=>(0,a.A)((0,a.A)({},n),{},{safeGitOperations:n.safeGitOperations.includes(e)?n.safeGitOperations.filter((n=>n!==e)):[...n.safeGitOperations,e]})))})(e),children:["git ",e]},e)))})]})]})]},"1"),(0,w.jsx)(b,{header:"Advanced Configuration",children:(0,w.jsx)(h.A,{message:"Advanced Configuration",description:"This section is reserved for future advanced shell configuration options.",type:"info",showIcon:!0})},"2")]})]})}):(0,w.jsx)(l.A,{title:"Shell Command Configuration",open:n,onCancel:t,footer:null,children:(0,w.jsx)("div",{style:{textAlign:"center",padding:"40px"},children:"Loading configuration..."})})}},88042:(e,n,t)=>{t.d(n,{A:()=>s});var a=t(65043),o=t(45818);function s(e){const n=a.useRef(null),t=()=>{o.A.cancel(n.current),n.current=null};return[()=>{t(),n.current=(0,o.A)((()=>{n.current=null}))},a=>{n.current&&(a.stopPropagation(),t()),null===e||void 0===e||e(a)}]}},79688:(e,n,t)=>{t.d(n,{A:()=>u});var a=t(58168),o=t(89379),s=t(64467),i=t(5544),l=t(80045),r=t(98139),c=t.n(r),d=t(28678),h=t(65043),m=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"];const u=(0,h.forwardRef)((function(e,n){var t=e.prefixCls,r=void 0===t?"rc-checkbox":t,u=e.className,f=e.style,p=e.checked,g=e.disabled,x=e.defaultChecked,v=void 0!==x&&x,A=e.type,y=void 0===A?"checkbox":A,C=e.title,j=e.onChange,w=(0,l.A)(e,m),b=(0,h.useRef)(null),k=(0,h.useRef)(null),E=(0,d.A)(v,{value:p}),O=(0,i.A)(E,2),S=O[0],G=O[1];(0,h.useImperativeHandle)(n,(function(){return{focus:function(e){var n;null===(n=b.current)||void 0===n||n.focus(e)},blur:function(){var e;null===(e=b.current)||void 0===e||e.blur()},input:b.current,nativeElement:k.current}}));var B=c()(r,u,(0,s.A)((0,s.A)({},"".concat(r,"-checked"),S),"".concat(r,"-disabled"),g));return h.createElement("span",{className:B,title:C,style:f,ref:k},h.createElement("input",(0,a.A)({},w,{className:"".concat(r,"-input"),ref:b,onChange:function(n){g||("checked"in e||G(n.target.checked),null===j||void 0===j||j({target:(0,o.A)((0,o.A)({},e),{},{type:y,checked:n.target.checked}),stopPropagation:function(){n.stopPropagation()},preventDefault:function(){n.preventDefault()},nativeEvent:n.nativeEvent}))},disabled:g,checked:!!S,type:y})),h.createElement("span",{className:"".concat(r,"-inner")}))}))}}]);
2
+ //# sourceMappingURL=58542.57fed736.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/58542.57fed736.chunk.js","mappings":"qTAEA,QADsB,CAAE,KAAQ,CAAE,IAAO,MAAO,MAAS,CAAE,QAAW,gBAAiB,UAAa,SAAW,SAAY,CAAC,CAAE,IAAO,OAAQ,MAAS,CAAE,EAAK,6SAAiT,KAAQ,UAAW,MAAS,Y,eCMteA,EAAkB,SAAyBC,EAAOC,GACpD,OAAoBC,EAAAA,cAAoBC,EAAAA,GAAUC,EAAAA,EAAAA,GAAS,CAAC,EAAGJ,EAAO,CACpEC,IAAKA,EACLI,KAAMC,IAEV,EAOA,QAJ2BJ,EAAAA,WAAiBH,G,eCE5C,MAAM,MAAEQ,GAAUC,EAAAA,EAkSlB,EAhS0DC,IAA2B,IAA1B,QAAEC,EAAO,QAAEC,GAASF,EAC3E,MAAOG,EAAQC,IAAaC,EAAAA,EAAAA,UAA6B,OAClDC,EAAYC,IAAiBF,EAAAA,EAAAA,UAAS,KACtCG,EAASC,IAAcJ,EAAAA,EAAAA,WAAS,IAEvCK,EAAAA,EAAAA,YAAU,KACFT,GACAU,GACJ,GACD,CAACV,IAEJ,MAAMU,EAAmBC,UACrB,IACI,MAAMC,QAAiBC,MAAM,yBAC7B,GAAID,EAASE,GAAI,CACb,MAAMC,QAAaH,EAASI,OAC5Bb,EAAUY,EACd,CACJ,CAAE,MAAOE,GACLC,QAAQD,MAAM,gCAAiCA,GAC/Cd,EAAU,CACNgB,SAAS,EACTC,gBAAiB,GACjBC,sBAAsB,EACtBC,kBAAmB,GACnBC,QAAS,IAEjB,GAGEC,EAAsBb,UACxB,UACUE,MAAM,yBAA0B,CAClCY,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBC,KAAMC,KAAKC,UAAU,CACjBC,YAAa,QACbX,QAASA,KAGrB,CAAE,MAAOF,GACLC,QAAQa,KAAK,oCAAqCd,EACtD,GA4CEe,EAAaA,KACV9B,GAEDG,EAAW4B,SAAW/B,EAAOkB,gBAAgBc,SAAS7B,EAAW4B,UACjE9B,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPD,GAAI,IACPf,gBAAiB,IAAIe,EAAMf,gBAAiBf,EAAW4B,YAE3D3B,EAAc,IAClB,EAuBE+B,EAAoB,CAAC,KAAM,QAAS,KAAM,KAAM,QAAS,QAAS,OAAQ,MAG1EC,EAAeC,GACjBF,EAAkBG,MAAKC,GACnBF,EAAQG,cAAcR,SAASO,EAAUC,iBAGjD,OAAKxC,GASDyC,EAAAA,EAAAA,KAACC,EAAAA,EAAK,CACFC,MAAM,8BACNC,KAAM9C,EACN+C,SAAU9C,EACV+C,KA9FWrC,UACf,GAAKT,EAAL,CAEAM,GAAW,GACX,IACI,MAAMI,QAAiBC,MAAM,wBAAyB,CAClDY,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBC,KAAMC,KAAKC,UAAU3B,KAGzB,GAAIU,EAASE,GAAI,CACb,MAAMmC,QAAerC,EAASI,OAC1BiC,EAAOC,eACD1B,EAAoBtB,EAAOiB,SAEjCgC,OAAOC,cAAc,IAAIC,YAAY,mBAAoB,CACrDC,OAAQ,CACJC,WAAY,QACZpC,QAASjB,EAAOiB,YAIxBqC,EAAAA,GAAQN,QAAQD,EAAOO,SAAW,0CAElCA,EAAAA,GAAQvC,MAAMgC,EAAOO,SAAW,wCAEpCvD,GACJ,MACIuD,EAAAA,GAAQvC,MAAM,qCAEtB,CAAE,MAAOA,GACLuC,EAAAA,GAAQvC,MAAM,sCACdC,QAAQD,MAAM,cAAeA,EACjC,CAAC,QACGT,GAAW,EACf,CArCmB,CAqCnB,EAyDIiD,eAAgBlD,EAChBmD,MAAO,IACPC,OAAO,qBAAoBC,UAE3BC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,UAAU,WAAWC,MAAO,CAAEN,MAAO,QAAUO,KAAK,QAAOL,SAAA,EAC9DC,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACI,MAAM,SAAQN,SAAA,EACjBjB,EAAAA,EAAAA,KAACwB,EAAAA,EAAM,CACHC,QAASlE,EAAOiB,QAChBkD,SAAU1D,UACNR,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUD,GAAI,IAAGhB,QAASiD,YAClC5C,EAAoB4C,EAAQ,KAG1CzB,EAAAA,EAAAA,KAAA,QAAAiB,SAAM,uCAEVjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAEM,UAAW,EAAGC,MAAO,OAAQC,SAAU,QAASZ,SAAC,0EAKnEjB,EAAAA,EAAAA,KAAC8B,EAAAA,EAAO,KAER9B,EAAAA,EAAAA,KAAC+B,EAAAA,EAAK,CACFlB,QAAQ,kBACRmB,YAAY,+HACZC,KAAK,OACLC,UAAQ,EACRb,MAAO,CAAEc,aAAc,OAG3BjB,EAAAA,EAAAA,MAAC/D,EAAAA,EAAQ,CAACiF,iBAAkB,CAAC,KAAMC,OAAK,EAAApB,SAAA,EACpCC,EAAAA,EAAAA,MAAChE,EAAK,CAACoF,OAAO,sBAAqBrB,SAAA,EAC/BC,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIjB,EAAAA,EAAAA,KAAA,MAAAiB,SAAI,sBACJjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAEc,aAAc,GAAIP,MAAO,OAAQC,SAAU,QAASZ,SAAC,6FAInEjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAEc,aAAc,IAAKlB,UAC7BC,EAAAA,EAAAA,MAACqB,EAAAA,EAAMC,MAAK,CAACC,SAAO,EAAAxB,SAAA,EAChBjB,EAAAA,EAAAA,KAACuC,EAAAA,EAAK,CACFG,YAAY,yBACZC,MAAOjF,EACPgE,SAAWkB,GAAMjF,EAAciF,EAAEC,OAAOF,OACxCG,aAAczD,EACdgC,MAAO,CAAEN,MAAO,wBAEpBf,EAAAA,EAAAA,KAAC+C,EAAAA,GAAM,CACHd,KAAK,UACLjF,MAAMgD,EAAAA,EAAAA,KAACgD,EAAAA,EAAY,IACnBC,QAAS5D,EACTgC,MAAO,CAAEN,MAAO,IAAKE,SACxB,aAMR1D,EAAOkB,iBAAmBlB,EAAOkB,gBAAgByE,OAAS,IACvDlD,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAE8B,QAAS,OAAQC,SAAU,OAAQC,IAAK,MAAOlB,aAAc,IAAKlB,SAC3E1D,EAAOkB,gBAAgB6E,KAAK1D,IACzBsB,EAAAA,EAAAA,MAACqC,EAAAA,EAAG,CAEAC,UAAQ,EACR5B,MAAOjC,EAAYC,GAAW,MAAQ,OACtCtC,QAASA,IA5G1BsC,KACdrC,GAELC,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPD,GAAI,IACPf,gBAAiBe,EAAMf,gBAAgBgF,QAAOC,GAAOA,IAAQ9D,OAC9D,EAsGgD+D,CAAc/D,GAC7ByB,MAAO,CAAEc,aAAc,OAAQlB,SAAA,CAE9BrB,EACAD,EAAYC,KACTI,EAAAA,EAAAA,KAACtD,EAAe,CAAC2E,MAAO,CAAEuC,WAAY,EAAGhC,MAAO,eAR/ChC,WAgBzBI,EAAAA,EAAAA,KAAC8B,EAAAA,EAAO,KAERZ,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,CAAI,oBAAkB1D,EAAOqB,QAAQ,QACrCoB,EAAAA,EAAAA,KAAC6D,EAAAA,EAAM,CACHC,IAAK,GACLC,IAAK,IACLpB,MAAOpF,EAAOqB,QACd8C,SAAWiB,GAAUnF,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUD,GAAI,IAAGZ,QAAS+D,MAC7DqB,MAAO,CACH,GAAI,MACJ,GAAI,KACJ,IAAK,KACL,IAAK,KACL,IAAK,OAET3C,MAAO,CAAEN,MAAO,OAAQoB,aAAc,UAI9CnC,EAAAA,EAAAA,KAAC8B,EAAAA,EAAO,KAERZ,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACI,MAAM,SAASF,MAAO,CAAEc,aAAc,IAAKlB,SAAA,EAC9CjB,EAAAA,EAAAA,KAACwB,EAAAA,EAAM,CACHC,QAASlE,EAAOmB,qBAChBgD,SAAWD,GAAYjE,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUD,GAAI,IAAGd,qBAAsB+C,SAEhFzB,EAAAA,EAAAA,KAAA,QAAAiB,SAAM,mCAEVjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAEc,aAAc,GAAIP,MAAO,OAAQC,SAAU,QAASZ,SAAC,yDAIlE1D,EAAOmB,uBACJwC,EAAAA,EAAAA,MAAA,OAAKG,MAAO,CAAEuC,WAAY,IAAK3C,SAAA,EAC3BjB,EAAAA,EAAAA,KAAA,MAAAiB,SAAI,6BACJjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAE8B,QAAS,OAAQC,SAAU,OAAQC,IAAK,OAAQpC,SAzIrE,CAAC,SAAU,MAAO,OAAQ,OAAQ,SAAU,SAAU,eAAgB,WAAY,UAAW,QAAS,MAAO,aAAc,SAAU,YAAa,WAAY,WAAY,eA0I7IqC,KAAIW,IAClB/C,EAAAA,EAAAA,MAACgD,EAAAA,EAAQ,CAELzC,QAASlE,EAAOoB,kBAAkBY,SAAS0E,GAC3CvC,SAAUA,IA1J1BuC,KACnB1G,GAELC,GAAUgC,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACPD,GAAI,IACPb,kBAAmBa,EAAMb,kBAAkBY,SAAS0E,GAC9CzE,EAAMb,kBAAkB8E,QAAOU,GAAMA,IAAOF,IAC5C,IAAIzE,EAAMb,kBAAmBsF,MACpC,EAkJqDG,CAAmBH,GAAWhD,SAAA,CACjD,OACQgD,IAJAA,eAvFO,MAoGxCjE,EAAAA,EAAAA,KAAC9C,EAAK,CAACoF,OAAO,yBAAwBrB,UAClCjB,EAAAA,EAAAA,KAAC+B,EAAAA,EAAK,CACFlB,QAAQ,yBACRmB,YAAY,4EACZC,KAAK,OACLC,UAAQ,KAL2B,cAhJnDlC,EAAAA,EAAAA,KAACC,EAAAA,EAAK,CAACC,MAAM,8BAA8BC,KAAM9C,EAAS+C,SAAU9C,EAAS+G,OAAQ,KAAKpD,UACtFjB,EAAAA,EAAAA,KAAA,OAAKqB,MAAO,CAAEiD,UAAW,SAAUC,QAAS,QAAStD,SAAC,8BAyJtD,C,6DCxSD,SAASuD,EAAcC,GACpC,MAAMC,EAAoB7H,EAAAA,OAAa,MACjC8H,EAAYA,KAChBC,EAAAA,EAAIC,OAAOH,EAAkBI,SAC7BJ,EAAkBI,QAAU,IAAI,EAelC,MAAO,CAbcC,KACnBJ,IACAD,EAAkBI,SAAUF,EAAAA,EAAAA,IAAI,KAC9BF,EAAkBI,QAAU,IAAI,GAChC,EAEiBlC,IACf8B,EAAkBI,UACpBlC,EAAEoC,kBACFL,KAEqB,OAAvBF,QAAsD,IAAvBA,GAAyCA,EAAmB7B,EAAE,EAGjG,C,uICtBIqC,EAAY,CAAC,YAAa,YAAa,QAAS,UAAW,WAAY,iBAAkB,OAAQ,QAAS,YA+E9G,SA1EmCC,EAAAA,EAAAA,aAAW,SAAUvI,EAAOC,GAC7D,IAAIuI,EAAmBxI,EAAMyI,UAC3BA,OAAiC,IAArBD,EAA8B,cAAgBA,EAC1DE,EAAY1I,EAAM0I,UAClBhE,EAAQ1E,EAAM0E,MACdI,EAAU9E,EAAM8E,QAChB6D,EAAW3I,EAAM2I,SACjBC,EAAwB5I,EAAM6I,eAC9BA,OAA2C,IAA1BD,GAA2CA,EAC5DE,EAAc9I,EAAMsF,KACpBA,OAAuB,IAAhBwD,EAAyB,WAAaA,EAC7CvF,EAAQvD,EAAMuD,MACdwB,EAAW/E,EAAM+E,SACjBgE,GAAaC,EAAAA,EAAAA,GAAyBhJ,EAAOsI,GAC3CW,GAAWC,EAAAA,EAAAA,QAAO,MAClBC,GAAYD,EAAAA,EAAAA,QAAO,MACnBE,GAAkBC,EAAAA,EAAAA,GAAeR,EAAgB,CACjD7C,MAAOlB,IAETwE,GAAmBC,EAAAA,EAAAA,GAAeH,EAAiB,GACnDI,EAAWF,EAAiB,GAC5BG,EAAcH,EAAiB,IACjCI,EAAAA,EAAAA,qBAAoBzJ,GAAK,WACvB,MAAO,CACL0J,MAAO,SAAeC,GACpB,IAAIC,EACuC,QAA1CA,EAAoBZ,EAASd,eAA2C,IAAtB0B,GAAgCA,EAAkBF,MAAMC,EAC7G,EACAE,KAAM,WACJ,IAAIC,EACwC,QAA3CA,EAAqBd,EAASd,eAA4C,IAAvB4B,GAAiCA,EAAmBD,MAC1G,EACAE,MAAOf,EAASd,QAChB8B,cAAed,EAAUhB,QAE7B,IACA,IAAI+B,EAAcC,IAAW1B,EAAWC,GAAW0B,EAAAA,EAAAA,IAAgBA,EAAAA,EAAAA,GAAgB,CAAC,EAAG,GAAGC,OAAO5B,EAAW,YAAae,GAAW,GAAGa,OAAO5B,EAAW,aAAcE,IAsBvK,OAAoBzI,EAAAA,cAAoB,OAAQ,CAC9CwI,UAAWwB,EACX3G,MAAOA,EACPmB,MAAOA,EACPzE,IAAKkJ,GACSjJ,EAAAA,cAAoB,SAASE,EAAAA,EAAAA,GAAS,CAAC,EAAG2I,EAAY,CACpEL,UAAW,GAAG2B,OAAO5B,EAAW,UAChCxI,IAAKgJ,EACLlE,SA7BiB,SAAsBkB,GACnC0C,IAGE,YAAa3I,GACjByJ,EAAYxD,EAAEC,OAAOpB,SAEV,OAAbC,QAAkC,IAAbA,GAAuBA,EAAS,CACnDmB,QAAQpD,EAAAA,EAAAA,IAAcA,EAAAA,EAAAA,GAAc,CAAC,EAAG9C,GAAQ,CAAC,EAAG,CAClDsF,KAAMA,EACNR,QAASmB,EAAEC,OAAOpB,UAEpBuD,gBAAiB,WACfpC,EAAEoC,iBACJ,EACAiC,eAAgB,WACdrE,EAAEqE,gBACJ,EACAC,YAAatE,EAAEsE,cAEnB,EAUE5B,SAAUA,EACV7D,UAAW0E,EACXlE,KAAMA,KACUpF,EAAAA,cAAoB,OAAQ,CAC5CwI,UAAW,GAAG2B,OAAO5B,EAAW,YAEpC,G","sources":["../node_modules/@ant-design/icons-svg/es/asn/WarningOutlined.js","../node_modules/@ant-design/icons/es/icons/WarningOutlined.js","components/ShellConfigModal.tsx","../node_modules/antd/es/checkbox/useBubbleLock.js","../node_modules/rc-checkbox/es/index.js"],"sourcesContent":["// This icon file is generated automatically.\nvar WarningOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z\" } }] }, \"name\": \"warning\", \"theme\": \"outlined\" };\nexport default WarningOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport WarningOutlinedSvg from \"@ant-design/icons-svg/es/asn/WarningOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar WarningOutlined = function WarningOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: WarningOutlinedSvg\n }));\n};\n\n/**![warning](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ2NCA3MjBhNDggNDggMCAxMDk2IDAgNDggNDggMCAxMC05NiAwem0xNi0zMDR2MTg0YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNDE2YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHptNDc1LjcgNDQwbC00MTYtNzIwYy02LjItMTAuNy0xNi45LTE2LTI3LjctMTZzLTIxLjYgNS4zLTI3LjcgMTZsLTQxNiA3MjBDNTYgODc3LjQgNzEuNCA5MDQgOTYgOTA0aDgzMmMyNC42IDAgNDAtMjYuNiAyNy43LTQ4em0tNzgzLjUtMjcuOUw1MTIgMjM5LjlsMzM5LjggNTg4LjJIMTcyLjJ6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(WarningOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'WarningOutlined';\n}\nexport default RefIcon;","import React, { useState, useEffect } from 'react';\nimport { Modal, Switch, Input, Button, List, Tag, Space, message, Divider, Checkbox, Collapse, Alert, Slider } from 'antd';\nimport { PlusOutlined, DeleteOutlined, WarningOutlined } from '@ant-design/icons';\n\ninterface ShellConfigModalProps {\n visible: boolean;\n onClose: () => void;\n}\n\ninterface ShellConfig {\n enabled: boolean;\n allowedCommands: string[];\n gitOperationsEnabled: boolean;\n safeGitOperations: string[];\n timeout: number;\n}\n\nconst { Panel } = Collapse;\n\nconst ShellConfigModal: React.FC<ShellConfigModalProps> = ({ visible, onClose }) => {\n const [config, setConfig] = useState<ShellConfig | null>(null);\n const [newCommand, setNewCommand] = useState('');\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (visible) {\n fetchShellConfig();\n }\n }, [visible]);\n\n const fetchShellConfig = async () => {\n try {\n const response = await fetch('/api/mcp/shell-config');\n if (response.ok) {\n const data = await response.json();\n setConfig(data);\n }\n } catch (error) {\n console.error('Failed to fetch shell config:', error);\n setConfig({\n enabled: true,\n allowedCommands: [],\n gitOperationsEnabled: true,\n safeGitOperations: [],\n timeout: 30\n });\n }\n };\n\n const syncMCPServerToggle = async (enabled: boolean) => {\n try {\n await fetch('/api/mcp/toggle-server', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n server_name: 'shell',\n enabled: enabled\n }),\n });\n } catch (error) {\n console.warn('Failed to sync MCP server toggle:', error);\n }\n };\n\n const saveConfig = async () => {\n if (!config) return;\n\n setLoading(true);\n try {\n const response = await fetch('/api/mcp/shell-config', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config),\n });\n\n if (response.ok) {\n const result = await response.json();\n if (result.success) {\n await syncMCPServerToggle(config.enabled);\n\n window.dispatchEvent(new CustomEvent('mcpStatusChanged', {\n detail: {\n serverName: 'shell',\n enabled: config.enabled\n }\n }));\n\n message.success(result.message || 'Shell configuration updated instantly');\n } else {\n message.error(result.message || 'Failed to update shell configuration');\n }\n onClose();\n } else {\n message.error('Failed to save shell configuration');\n }\n } catch (error) {\n message.error('Failed to save shell configuration');\n console.error('Save error:', error);\n } finally {\n setLoading(false);\n }\n };\n\n const addCommand = () => {\n if (!config) return;\n\n if (newCommand.trim() && !config.allowedCommands.includes(newCommand.trim())) {\n setConfig(prev => ({\n ...prev!,\n allowedCommands: [...prev!.allowedCommands, newCommand.trim()]\n }));\n setNewCommand('');\n }\n };\n\n const removeCommand = (command: string) => {\n if (!config) return;\n\n setConfig(prev => ({\n ...prev!,\n allowedCommands: prev!.allowedCommands.filter(cmd => cmd !== command)\n }));\n };\n\n const toggleGitOperation = (operation: string) => {\n if (!config) return;\n\n setConfig(prev => ({\n ...prev!,\n safeGitOperations: prev!.safeGitOperations.includes(operation)\n ? prev!.safeGitOperations.filter(op => op !== operation)\n : [...prev!.safeGitOperations, operation]\n }));\n };\n\n const dangerousCommands = ['rm', 'rmdir', 'mv', 'cp', 'chmod', 'chown', 'sudo', 'su'];\n const allGitOperations = ['status', 'log', 'show', 'diff', 'branch', 'remote', 'config --get', 'ls-files', 'ls-tree', 'blame', 'tag', 'stash list', 'reflog', 'rev-parse', 'describe', 'shortlog', 'whatchanged'];\n\n const isDangerous = (command: string) =>\n dangerousCommands.some(dangerous =>\n command.toLowerCase().includes(dangerous.toLowerCase())\n );\n\n if (!config) {\n return (\n <Modal title=\"Shell Command Configuration\" open={visible} onCancel={onClose} footer={null}>\n <div style={{ textAlign: 'center', padding: '40px' }}>Loading configuration...</div>\n </Modal>\n );\n }\n\n return (\n <Modal\n title=\"Shell Command Configuration\"\n open={visible}\n onCancel={onClose}\n onOk={saveConfig}\n confirmLoading={loading}\n width={600}\n okText=\"Save Configuration\"\n >\n <Space direction=\"vertical\" style={{ width: '100%' }} size=\"large\">\n <div>\n <Space align=\"center\">\n <Switch\n checked={config.enabled}\n onChange={async (checked) => {\n setConfig(prev => ({ ...prev!, enabled: checked }));\n await syncMCPServerToggle(checked);\n }}\n />\n <span>Enable shell command execution</span>\n </Space>\n <div style={{ marginTop: 8, color: '#666', fontSize: '12px' }}>\n When enabled, the AI agent can execute whitelisted shell commands\n </div>\n </div>\n\n <Divider />\n\n <Alert\n message=\"Security Notice\"\n description=\"Only enable commands that are safe for AI execution. Git operations are limited to read-only and safe operations by default.\"\n type=\"info\"\n showIcon\n style={{ marginBottom: 16 }}\n />\n\n <Collapse defaultActiveKey={['1']} ghost>\n <Panel header=\"Basic Configuration\" key=\"1\">\n <div>\n <h4>Allowed Commands</h4>\n <div style={{ marginBottom: 12, color: '#666', fontSize: '12px' }}>\n Commands that the AI agent can execute. These are loaded from the server configuration.\n </div>\n\n <div style={{ marginBottom: 12 }}>\n <Input.Group compact>\n <Input\n placeholder=\"Add additional command\"\n value={newCommand}\n onChange={(e) => setNewCommand(e.target.value)}\n onPressEnter={addCommand}\n style={{ width: 'calc(100% - 80px)' }}\n />\n <Button\n type=\"primary\"\n icon={<PlusOutlined />}\n onClick={addCommand}\n style={{ width: 80 }}\n >\n Add\n </Button>\n </Input.Group>\n </div>\n\n {config.allowedCommands && config.allowedCommands.length > 0 && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: 16 }}>\n {config.allowedCommands.map((command) => (\n <Tag\n key={command}\n closable\n color={isDangerous(command) ? 'red' : 'blue'}\n onClose={() => removeCommand(command)}\n style={{ marginBottom: '4px' }}\n >\n {command}\n {isDangerous(command) && (\n <WarningOutlined style={{ marginLeft: 4, color: '#ff4d4f' }} />\n )}\n </Tag>\n ))}\n </div>\n )}\n </div>\n\n <Divider />\n\n <div>\n <h4>Command Timeout: {config.timeout}s</h4>\n <Slider\n min={10}\n max={600}\n value={config.timeout}\n onChange={(value) => setConfig(prev => ({ ...prev!, timeout: value }))}\n marks={{\n 10: '10s',\n 60: '1m',\n 120: '2m',\n 300: '5m',\n 600: '10m'\n }}\n style={{ width: '100%', marginBottom: 20 }}\n />\n </div>\n\n <Divider />\n\n <div>\n <Space align=\"center\" style={{ marginBottom: 12 }}>\n <Switch\n checked={config.gitOperationsEnabled}\n onChange={(checked) => setConfig(prev => ({ ...prev!, gitOperationsEnabled: checked }))}\n />\n <span>Enable safe Git operations</span>\n </Space>\n <div style={{ marginBottom: 12, color: '#666', fontSize: '12px' }}>\n When enabled, allows read-only and safe Git commands\n </div>\n\n {config.gitOperationsEnabled && (\n <div style={{ marginLeft: 24 }}>\n <h5>Allowed Git Operations:</h5>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px' }}>\n {allGitOperations.map(operation => (\n <Checkbox\n key={operation}\n checked={config.safeGitOperations.includes(operation)}\n onChange={() => toggleGitOperation(operation)}\n >\n git {operation}\n </Checkbox>\n ))}\n </div>\n </div>\n )}\n </div>\n </Panel>\n\n <Panel header=\"Advanced Configuration\" key=\"2\">\n <Alert\n message=\"Advanced Configuration\"\n description=\"This section is reserved for future advanced shell configuration options.\"\n type=\"info\"\n showIcon\n />\n </Panel>\n </Collapse>\n </Space>\n </Modal>\n );\n};\n\nexport default ShellConfigModal;\n","import React from 'react';\nimport raf from \"rc-util/es/raf\";\n/**\n * When click on the label,\n * the event will be stopped to prevent the label from being clicked twice.\n * label click -> input click -> label click again\n */\nexport default function useBubbleLock(onOriginInputClick) {\n const labelClickLockRef = React.useRef(null);\n const clearLock = () => {\n raf.cancel(labelClickLockRef.current);\n labelClickLockRef.current = null;\n };\n const onLabelClick = () => {\n clearLock();\n labelClickLockRef.current = raf(() => {\n labelClickLockRef.current = null;\n });\n };\n const onInputClick = e => {\n if (labelClickLockRef.current) {\n e.stopPropagation();\n clearLock();\n }\n onOriginInputClick === null || onOriginInputClick === void 0 ? void 0 : onOriginInputClick(e);\n };\n return [onLabelClick, onInputClick];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"style\", \"checked\", \"disabled\", \"defaultChecked\", \"type\", \"title\", \"onChange\"];\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nexport var Checkbox = /*#__PURE__*/forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-checkbox' : _props$prefixCls,\n className = props.className,\n style = props.style,\n checked = props.checked,\n disabled = props.disabled,\n _props$defaultChecked = props.defaultChecked,\n defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,\n _props$type = props.type,\n type = _props$type === void 0 ? 'checkbox' : _props$type,\n title = props.title,\n onChange = props.onChange,\n inputProps = _objectWithoutProperties(props, _excluded);\n var inputRef = useRef(null);\n var holderRef = useRef(null);\n var _useMergedState = useMergedState(defaultChecked, {\n value: checked\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n rawValue = _useMergedState2[0],\n setRawValue = _useMergedState2[1];\n useImperativeHandle(ref, function () {\n return {\n focus: function focus(options) {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus(options);\n },\n blur: function blur() {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();\n },\n input: inputRef.current,\n nativeElement: holderRef.current\n };\n });\n var classString = classNames(prefixCls, className, _defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-checked\"), rawValue), \"\".concat(prefixCls, \"-disabled\"), disabled));\n var handleChange = function handleChange(e) {\n if (disabled) {\n return;\n }\n if (!('checked' in props)) {\n setRawValue(e.target.checked);\n }\n onChange === null || onChange === void 0 || onChange({\n target: _objectSpread(_objectSpread({}, props), {}, {\n type: type,\n checked: e.target.checked\n }),\n stopPropagation: function stopPropagation() {\n e.stopPropagation();\n },\n preventDefault: function preventDefault() {\n e.preventDefault();\n },\n nativeEvent: e.nativeEvent\n });\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classString,\n title: title,\n style: style,\n ref: holderRef\n }, /*#__PURE__*/React.createElement(\"input\", _extends({}, inputProps, {\n className: \"\".concat(prefixCls, \"-input\"),\n ref: inputRef,\n onChange: handleChange,\n disabled: disabled,\n checked: !!rawValue,\n type: type\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner\")\n }));\n});\nexport default Checkbox;"],"names":["WarningOutlined","props","ref","React","AntdIcon","_extends","icon","WarningOutlinedSvg","Panel","Collapse","_ref","visible","onClose","config","setConfig","useState","newCommand","setNewCommand","loading","setLoading","useEffect","fetchShellConfig","async","response","fetch","ok","data","json","error","console","enabled","allowedCommands","gitOperationsEnabled","safeGitOperations","timeout","syncMCPServerToggle","method","headers","body","JSON","stringify","server_name","warn","addCommand","trim","includes","prev","_objectSpread","dangerousCommands","isDangerous","command","some","dangerous","toLowerCase","_jsx","Modal","title","open","onCancel","onOk","result","success","window","dispatchEvent","CustomEvent","detail","serverName","message","confirmLoading","width","okText","children","_jsxs","Space","direction","style","size","align","Switch","checked","onChange","marginTop","color","fontSize","Divider","Alert","description","type","showIcon","marginBottom","defaultActiveKey","ghost","header","Input","Group","compact","placeholder","value","e","target","onPressEnter","Button","PlusOutlined","onClick","length","display","flexWrap","gap","map","Tag","closable","filter","cmd","removeCommand","marginLeft","Slider","min","max","marks","operation","Checkbox","op","toggleGitOperation","footer","textAlign","padding","useBubbleLock","onOriginInputClick","labelClickLockRef","clearLock","raf","cancel","current","onLabelClick","stopPropagation","_excluded","forwardRef","_props$prefixCls","prefixCls","className","disabled","_props$defaultChecked","defaultChecked","_props$type","inputProps","_objectWithoutProperties","inputRef","useRef","holderRef","_useMergedState","useMergedState","_useMergedState2","_slicedToArray","rawValue","setRawValue","useImperativeHandle","focus","options","_inputRef$current","blur","_inputRef$current2","input","nativeElement","classString","classNames","_defineProperty","concat","preventDefault","nativeEvent"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
- /*! For license information please see 68418.2554bb1e.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[68418],{68418:(e,n,t)=>{t.r(n),t.d(n,{default:()=>D});var s=t(89379),a=t(65043),o=t(6381),r=t(46100),i=t(42214),l=t(43716),c=t(6051),d=t(97606),m=t(4015),g=t(57721),h=t(53727),u=t(58168);const p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"}}]},name:"save",theme:"outlined"};var x=t(22172),v=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:p}))};const f=a.forwardRef(v);var y=t(63390),C=t(67407),j=t(70579);const A=e=>{let{index:n,isInline:t=!1}=e;const{currentMessages:u,currentConversationId:p,addMessageToConversation:x,setIsStreaming:v,setConversations:A,streamingConversations:w,addStreamingConversation:M,setStreamedContentMap:b,removeStreamingConversation:S,editingMessageIndex:z,setEditingMessageIndex:I}=(0,o.v)(),[k,R]=(0,a.useState)(u[n].content),{checkedKeys:L}=(0,i.X)(),E=(0,a.useRef)(null),{TextArea:N}=l.A,K=z===n;(0,a.useEffect)((()=>{K&&E.current&&setTimeout((()=>{E.current&&E.current.focus()}),100)}),[K]);return(0,j.jsxs)("div",{children:[t&&K&&null,K&&!t&&(0,j.jsxs)("div",{style:{width:"100%"},children:[(0,j.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px",width:"100%"},children:[(0,j.jsx)("div",{className:"message-sender",children:"You:"}),(0,j.jsxs)(c.A,{children:[(0,j.jsx)(d.A,{title:"Cancel editing",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(h.A,{}),onClick:()=>{I(null),R(u[n].content)},size:"small",children:"Cancel"})}),(0,j.jsx)(d.A,{title:"Save changes to context",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(f,{}),onClick:()=>{A((e=>e.map((e=>{if(e.id===p){const t=e.messages.map(((e,t)=>t===n?(0,s.A)((0,s.A)({},e),{},{content:k,_timestamp:Date.now()}):e));return(0,s.A)((0,s.A)({},e),{},{messages:t,_version:Date.now()})}return e})))),I(null)},size:"small",children:"Save"})}),(0,j.jsx)(d.A,{title:"Send to model, remove newer responses",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(y.A,{}),onClick:async()=>{I(null),b(new Map);const e=u.slice(0,n+1);e[n]=(0,s.A)((0,s.A)({},e[n]),{},{content:k,_timestamp:Date.now(),_edited:!0,_truncatedAfter:!0}),A((n=>n.map((n=>n.id===p?(0,s.A)((0,s.A)({},n),{},{messages:e,_version:Date.now(),_editInProgress:!0}):n)))),M(p);try{const n=await(0,r.f)(e,k,(0,g.F)(L),p,b,v,S,x,w.has(p));if(n){x({content:n,role:"assistant"},p),A((e=>e.map((e=>e.id===p?(0,s.A)((0,s.A)({},e),{},{_editInProgress:!1}):e))))}}catch(t){console.error("Error sending message:",t),S(p)}finally{v(!1)}},size:"small",type:"primary",children:"Submit"})})]})]}),(0,j.jsx)(N,{ref:E,autoFocus:!0,style:{width:"100%",minHeight:"100px",resize:"vertical"},value:k,onChange:e=>R(e.target.value),autoSize:{minRows:3,maxRows:20},placeholder:"Edit your message..."})]}),!K&&(t||!K)&&(0,j.jsx)(d.A,{title:"Edit",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(C.A,{}),onClick:()=>{I(n)}})})]})};var w=t(91686);const M={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 00-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z"}}]},name:"redo",theme:"outlined"};var b=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:M}))};const S=a.forwardRef(b);const z={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M771.91 115a31.65 31.65 0 00-17.42 5.27L400 351.97H236a16 16 0 00-16 16v288.06a16 16 0 0016 16h164l354.5 231.7a31.66 31.66 0 0017.42 5.27c16.65 0 32.08-13.25 32.08-32.06V147.06c0-18.8-15.44-32.06-32.09-32.06M732 221v582L439.39 611.75l-17.95-11.73H292V423.98h129.44l17.95-11.73z"}}]},name:"muted",theme:"outlined"};var I=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:z}))};const k=a.forwardRef(I);const R={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 00-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0021.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0021.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 00-21.7-5.9L746 287.8a15.99 15.99 0 00-5.8 21.8L760 344z"}}]},name:"sound",theme:"outlined"};var L=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:R}))};const E=a.forwardRef(L);var N=t(55727);const K=(0,a.memo)((e=>{let{previousModel:n,newModel:t,changeKey:s}=e;const{isDarkMode:a}=(0,N.D)(),o={container:{padding:"12px 16px",borderRadius:"8px",backgroundColor:a?"rgba(25, 118, 210, 0.15)":"rgba(25, 118, 210, 0.08)",border:"1px solid ".concat(a?"#2c6cb0":"#90caf9"),marginBottom:"12px",marginTop:"4px",display:"flex",alignItems:"center",boxShadow:a?"0 2px 8px rgba(0, 0, 0, 0.15)":"0 1px 3px rgba(0, 0, 0, 0.1)"},icon:{fontSize:"20px",marginRight:"12px",color:a?"#90caf9":"#1976d2"},text:{color:a?"#e3f2fd":"#0d47a1",fontWeight:500,fontSize:"14px"},modelName:{fontWeight:600,color:a?"#bbdefb":"#1565c0"}};return(0,j.jsxs)("div",{style:o.container,children:[(0,j.jsx)("span",{style:o.icon,children:"\ud83d\udd04"}),(0,j.jsxs)("span",{style:o.text,children:["Model changed from ",(0,j.jsx)("span",{style:o.modelName,children:n})," to ",(0,j.jsx)("span",{style:o.modelName,children:t})]})]})}),((e,n)=>(!e.changeKey||!n.changeKey||e.changeKey===n.changeKey)&&(e.previousModel===n.previousModel&&e.newModel===n.newModel&&e.changeKey===n.changeKey)));K.displayName="ModelChangeNotification";const H=K;var V=t(8627),_=t(89277),T=t(35589);const B=(0,a.memo)((e=>{let{enableCodeApply:n}=e;const{currentMessages:t,editingMessageIndex:l,isTopToBottom:c,isLoadingConversation:h,addStreamingConversation:u,streamingConversations:p,currentConversationId:x,setIsStreaming:v,setStreamedContentMap:f,isStreaming:y,addMessageToConversation:C,removeStreamingConversation:M,streamedContentMap:b,userHasScrolled:z,updateProcessingState:I,setConversations:R,toggleMessageMute:L}=(0,o.v)(),{checkedKeys:N}=(0,i.X)(),{setQuestion:K}=(0,V.J)(),B=(0,a.useRef)(!0),D=(0,a.useMemo)((()=>({isCurrentlyStreaming:p.has(x),hasStreamedContent:b.has(x)&&""!==b.get(x),streamedContent:b.get(x)||""})),[p,b,x]),{isCurrentlyStreaming:F,hasStreamedContent:W}=D,P=c?t:[...t].reverse(),Y=(0,a.useRef)(0),O=(0,a.useRef)(new Set),Q=(0,a.useRef)(new Set);(0,a.useCallback)((e=>b.has(e)&&""!==b.get(e)),[b]);(0,a.useEffect)((()=>{Math.abs(t.length-Y.current)>2&&((0,_.QU)()&&(0,_.cY)("Conversation messages updated:",{messageCount:t.length,previousCount:Y.current,isVisible:B.current,displayOrder:c?"top-down":"bottom-up"}),Y.current=t.length);const e=new IntersectionObserver((e=>{e.forEach((e=>{B.current=e.isIntersecting}))}),{threshold:.1});return()=>e.disconnect()}),[c,t.length]),(0,a.useEffect)((()=>{const e=e=>{const{previousModel:n,newModel:t}=e.detail,s="".concat(n,"->").concat(t);Q.current.has(s)||(Q.current.add(s),n&&t&&C({role:"system",content:"Model changed from ".concat(n," to ").concat(t),modelChange:{from:n,to:t,changeKey:s}},x))};return window.addEventListener("modelChanged",e),()=>{Q.current.clear(),O.current.clear(),window.removeEventListener("modelChanged",e)}}),[x,C]);const U=h?t.length>0?"Loading messages (".concat(t.length," loaded)..."):"Loading conversation...":"",X=h&&t.length>0,q=h&&0===t.length,J=e=>{const n=t[e],s=e===t.length-1,a=e+1,o=a<t.length?t[a]:null,r=a<t.length;return"human"===(null===n||void 0===n?void 0:n.role)&&!F&&!W&&(s||r&&"assistant"!==(null===o||void 0===o?void 0:o.role))},G=e=>J(e)?(0,j.jsx)(d.A,{title:"The AI response may have failed. Click to retry.",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(S,{}),type:"primary",size:"small",onClick:async()=>{const n=t[e];u(x);try{const e=t.filter((e=>!e.muted));await(0,r.f)(e,n.content,(0,g.F)(N||[]),x,f,v,M,C,p.has(x),(e=>I(x,e)))}catch(s){v(!1),M(x),console.error("Error retrying message:",s)}},children:"Retry AI Response"})}):null,Z=e=>{if(l===e)return null;const n=t[e];return J(e)?null:n&&"system"!==n.role?(0,j.jsx)(d.A,{title:n.muted?"Unmute (include in context)":"Mute (exclude from context)",children:(0,j.jsx)(m.Ay,{icon:n.muted?(0,j.jsx)(k,{}):(0,j.jsx)(E,{}),type:"default",size:"small",style:{padding:"0 8px",minWidth:"32px",height:"32px"},onClick:()=>{L(x,e)}})}):null},$=e=>{if(l===e)return null;const n=t[e];return J(e)?null:n&&"human"===n.role?F?null:(0,j.jsx)(d.A,{title:"Resubmit this question",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(S,{}),type:"default",size:"small",style:{padding:"0 8px",minWidth:"32px",height:"32px"},onClick:()=>{f(new Map);const a=t.slice(0,e+1),o=a.filter((e=>!e.muted));R((e=>e.map((e=>e.id===x?(0,s.A)((0,s.A)({},e),{},{messages:a,_version:Date.now()}):e)))),u(x),(async()=>{try{await(0,r.f)(o,n.content,(0,g.F)(N||[]),x,f,v,M,C,p.has(x),(e=>I(x,e)))}catch(e){v(!1),M(x),console.error("Error resubmitting message:",e)}})(),K("")}})}):null};return(0,j.jsxs)("div",{style:{position:"relative"},children:[q&&(0,j.jsx)("div",{style:{position:"fixed",top:"var(--header-height)",left:"var(--folder-panel-width)",right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:1e3},children:(0,j.jsx)(w.A,{size:"large",tip:U})}),(0,j.jsxs)("div",{style:{opacity:h?.5:1,minHeight:"50px"},className:"conversation-messages-container",children:[X&&(0,j.jsxs)("div",{style:{position:"sticky",top:0,backgroundColor:"rgba(0, 0, 0, 0.7)",color:"#fff",padding:"8px 16px",borderRadius:"4px",margin:"8px 0",display:"flex",alignItems:"center",gap:"8px",zIndex:1e3},children:[(0,j.jsx)(w.A,{size:"small"}),(0,j.jsx)("span",{children:U})]}),P.map(((e,s)=>{const a=c?s:t.length-1-s,o=a+1,r=o<t.length,i=r?t[o]:null,d="human"===e.role&&!F&&!W&&(a===t.length-1||r&&"assistant"!==(null===i||void 0===i?void 0:i.role));"system"===e.role&&e.modelChange?"".concat(e.modelChange.from,"->").concat(e.modelChange.to):e.content;return(0,j.jsx)("div",{className:"message ".concat(e.role||"").concat(e.muted?" muted":"").concat(d?" needs-response":""),children:"system"===e.role&&e.modelChange?(0,j.jsx)(H,{previousModel:e.modelChange.from,changeKey:e.modelChange.changeKey,newModel:e.modelChange.to}):e.content?(0,j.jsxs)(j.Fragment,{children:["human"===e.role&&(0,j.jsxs)("div",{style:{display:l===a?"none":"flex",justifyContent:"space-between"},children:[(0,j.jsx)("div",{className:"message-sender",children:"You:"}),(0,j.jsxs)("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginRight:"8px"},children:[Z(a),$(a),d&&G(a),(0,j.jsx)(A,{index:a,isInline:!0})]})]}),"human"===e.role&&l===a?(0,j.jsx)(A,{index:a,isInline:!1}):"human"===e.role&&e.content?(0,j.jsx)("div",{className:"message-content",children:(0,j.jsx)(T.MarkdownRenderer,{markdown:e.content,enableCodeApply:n,isStreaming:y||p.has(x)})}):"assistant"===e.role&&e.content&&(0,j.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[(0,j.jsx)("div",{className:"message-sender",children:"AI:"}),(0,j.jsx)("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginRight:"8px"},children:Z(a)}),G(a)]}),"assistant"===e.role&&e.content&&(0,j.jsx)("div",{className:"message-content",children:(0,j.jsx)(T.MarkdownRenderer,{markdown:e.content,enableCodeApply:n,isStreaming:y||p.has(x)})})]}):null},"message-".concat(e.id||s))}))]})]})}),((e,n)=>e.enableCodeApply===n.enableCodeApply));B.displayName="Conversation";const D=B}}]);
3
- //# sourceMappingURL=68418.2554bb1e.chunk.js.map
1
+ /*! For license information please see 68418.f7b4d2d9.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[68418],{68418:(e,n,t)=>{t.r(n),t.d(n,{default:()=>D});var s=t(89379),a=t(65043),o=t(6381),r=t(46100),i=t(42214),l=t(43716),c=t(6051),d=t(97606),m=t(4015),g=t(57721),h=t(53727),u=t(58168);const p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"}}]},name:"save",theme:"outlined"};var x=t(22172),v=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:p}))};const f=a.forwardRef(v);var y=t(63390),C=t(67407),j=t(70579);const A=e=>{let{index:n,isInline:t=!1}=e;const{currentMessages:u,currentConversationId:p,addMessageToConversation:x,setIsStreaming:v,setConversations:A,streamingConversations:w,addStreamingConversation:M,setStreamedContentMap:b,removeStreamingConversation:S,editingMessageIndex:z,setEditingMessageIndex:I}=(0,o.v)(),[k,R]=(0,a.useState)(u[n].content),{checkedKeys:L}=(0,i.X)(),E=(0,a.useRef)(null),{TextArea:N}=l.A,K=z===n;(0,a.useEffect)((()=>{K&&E.current&&setTimeout((()=>{E.current&&E.current.focus()}),100)}),[K]);return(0,j.jsxs)("div",{children:[t&&K&&null,K&&!t&&(0,j.jsxs)("div",{style:{width:"100%"},children:[(0,j.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px",width:"100%"},children:[(0,j.jsx)("div",{className:"message-sender",children:"You:"}),(0,j.jsxs)(c.A,{children:[(0,j.jsx)(d.A,{title:"Cancel editing",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(h.A,{}),onClick:()=>{I(null),R(u[n].content)},size:"small",children:"Cancel"})}),(0,j.jsx)(d.A,{title:"Save changes to context",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(f,{}),onClick:()=>{A((e=>e.map((e=>{if(e.id===p){const t=e.messages.map(((e,t)=>t===n?(0,s.A)((0,s.A)({},e),{},{content:k,_timestamp:Date.now()}):e));return(0,s.A)((0,s.A)({},e),{},{messages:t,_version:Date.now()})}return e})))),I(null)},size:"small",children:"Save"})}),(0,j.jsx)(d.A,{title:"Send to model, remove newer responses",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(y.A,{}),onClick:async()=>{I(null),b(new Map);const e=u.slice(0,n+1);e[n]=(0,s.A)((0,s.A)({},e[n]),{},{content:k,_timestamp:Date.now(),_edited:!0,_truncatedAfter:!0}),A((n=>n.map((n=>n.id===p?(0,s.A)((0,s.A)({},n),{},{messages:e,_version:Date.now(),_editInProgress:!0}):n)))),M(p);try{const n=await(0,r.f)(e,k,(0,g.F)(L),p,b,v,S,x,w.has(p));if(n){x({content:n,role:"assistant"},p),A((e=>e.map((e=>e.id===p?(0,s.A)((0,s.A)({},e),{},{_editInProgress:!1}):e))))}}catch(t){console.error("Error sending message:",t),S(p)}finally{v(!1)}},size:"small",type:"primary",children:"Submit"})})]})]}),(0,j.jsx)(N,{ref:E,autoFocus:!0,style:{width:"100%",minHeight:"100px",resize:"vertical"},value:k,onChange:e=>R(e.target.value),autoSize:{minRows:3,maxRows:20},placeholder:"Edit your message..."})]}),!K&&(t||!K)&&(0,j.jsx)(d.A,{title:"Edit",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(C.A,{}),onClick:()=>{I(n)}})})]})};var w=t(91686);const M={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 00-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z"}}]},name:"redo",theme:"outlined"};var b=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:M}))};const S=a.forwardRef(b);const z={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M771.91 115a31.65 31.65 0 00-17.42 5.27L400 351.97H236a16 16 0 00-16 16v288.06a16 16 0 0016 16h164l354.5 231.7a31.66 31.66 0 0017.42 5.27c16.65 0 32.08-13.25 32.08-32.06V147.06c0-18.8-15.44-32.06-32.09-32.06M732 221v582L439.39 611.75l-17.95-11.73H292V423.98h129.44l17.95-11.73z"}}]},name:"muted",theme:"outlined"};var I=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:z}))};const k=a.forwardRef(I);const R={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 00-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0021.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0021.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 00-21.7-5.9L746 287.8a15.99 15.99 0 00-5.8 21.8L760 344z"}}]},name:"sound",theme:"outlined"};var L=function(e,n){return a.createElement(x.A,(0,u.A)({},e,{ref:n,icon:R}))};const E=a.forwardRef(L);var N=t(55727);const K=(0,a.memo)((e=>{let{previousModel:n,newModel:t,changeKey:s}=e;const{isDarkMode:a}=(0,N.D)(),o={container:{padding:"12px 16px",borderRadius:"8px",backgroundColor:a?"rgba(25, 118, 210, 0.15)":"rgba(25, 118, 210, 0.08)",border:"1px solid ".concat(a?"#2c6cb0":"#90caf9"),marginBottom:"12px",marginTop:"4px",display:"flex",alignItems:"center",boxShadow:a?"0 2px 8px rgba(0, 0, 0, 0.15)":"0 1px 3px rgba(0, 0, 0, 0.1)"},icon:{fontSize:"20px",marginRight:"12px",color:a?"#90caf9":"#1976d2"},text:{color:a?"#e3f2fd":"#0d47a1",fontWeight:500,fontSize:"14px"},modelName:{fontWeight:600,color:a?"#bbdefb":"#1565c0"}};return(0,j.jsxs)("div",{style:o.container,children:[(0,j.jsx)("span",{style:o.icon,children:"\ud83d\udd04"}),(0,j.jsxs)("span",{style:o.text,children:["Model changed from ",(0,j.jsx)("span",{style:o.modelName,children:n})," to ",(0,j.jsx)("span",{style:o.modelName,children:t})]})]})}),((e,n)=>(!e.changeKey||!n.changeKey||e.changeKey===n.changeKey)&&(e.previousModel===n.previousModel&&e.newModel===n.newModel&&e.changeKey===n.changeKey)));K.displayName="ModelChangeNotification";const H=K;var V=t(8627),_=t(89277),T=t(35589);const B=(0,a.memo)((e=>{let{enableCodeApply:n}=e;const{currentMessages:t,editingMessageIndex:l,isTopToBottom:c,isLoadingConversation:h,addStreamingConversation:u,streamingConversations:p,currentConversationId:x,setIsStreaming:v,setStreamedContentMap:f,isStreaming:y,addMessageToConversation:C,removeStreamingConversation:M,streamedContentMap:b,userHasScrolled:z,updateProcessingState:I,setConversations:R,toggleMessageMute:L}=(0,o.v)(),{checkedKeys:N}=(0,i.X)(),{setQuestion:K}=(0,V.J)(),B=(0,a.useRef)(!0),D=(0,a.useMemo)((()=>({isCurrentlyStreaming:p.has(x),hasStreamedContent:b.has(x)&&""!==b.get(x),streamedContent:b.get(x)||""})),[p,b,x]),{isCurrentlyStreaming:F,hasStreamedContent:W}=D,P=c?t:[...t].reverse(),Y=(0,a.useRef)(0),O=(0,a.useRef)(new Set),Q=(0,a.useRef)(new Set);(0,a.useCallback)((e=>b.has(e)&&""!==b.get(e)),[b]);(0,a.useEffect)((()=>{Math.abs(t.length-Y.current)>2&&((0,_.QU)()&&(0,_.cY)("Conversation messages updated:",{messageCount:t.length,previousCount:Y.current,isVisible:B.current,displayOrder:c?"top-down":"bottom-up"}),Y.current=t.length);const e=new IntersectionObserver((e=>{e.forEach((e=>{B.current=e.isIntersecting}))}),{threshold:.1});return()=>e.disconnect()}),[c,t.length]),(0,a.useEffect)((()=>{const e=e=>{const{previousModel:n,newModel:t}=e.detail,s="".concat(n,"->").concat(t);Q.current.has(s)||(Q.current.add(s),n&&t&&C({role:"system",content:"Model changed from ".concat(n," to ").concat(t),modelChange:{from:n,to:t,changeKey:s}},x))};return window.addEventListener("modelChanged",e),()=>{Q.current.clear(),O.current.clear(),window.removeEventListener("modelChanged",e)}}),[x,C]);const U=h?t.length>0?"Loading messages (".concat(t.length," loaded)..."):"Loading conversation...":"",X=h&&t.length>0,q=h&&0===t.length,J=e=>{const n=t[e],s=e===t.length-1,a=e+1,o=a<t.length?t[a]:null,r=a<t.length;return"human"===(null===n||void 0===n?void 0:n.role)&&!F&&!W&&(s||r&&"assistant"!==(null===o||void 0===o?void 0:o.role))},G=e=>J(e)?(0,j.jsx)(d.A,{title:"The AI response may have failed. Click to retry.",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(S,{}),type:"primary",size:"small",onClick:async()=>{const n=t[e];u(x);try{const e=t.filter((e=>!e.muted));await(0,r.f)(e,n.content,(0,g.F)(N||[]),x,f,v,M,C,p.has(x),(e=>I(x,e)))}catch(s){v(!1),M(x),console.error("Error retrying message:",s)}},children:"Retry AI Response"})}):null,Z=e=>{if(l===e)return null;const n=t[e];return J(e)?null:n&&"system"!==n.role?(0,j.jsx)(d.A,{title:n.muted?"Unmute (include in context)":"Mute (exclude from context)",children:(0,j.jsx)(m.Ay,{icon:n.muted?(0,j.jsx)(k,{}):(0,j.jsx)(E,{}),type:"default",size:"small",style:{padding:"0 8px",minWidth:"32px",height:"32px"},onClick:()=>{L(x,e)}})}):null},$=e=>{if(l===e)return null;const n=t[e];return J(e)?null:n&&"human"===n.role?F?null:(0,j.jsx)(d.A,{title:"Resubmit this question",children:(0,j.jsx)(m.Ay,{icon:(0,j.jsx)(S,{}),type:"default",size:"small",style:{padding:"0 8px",minWidth:"32px",height:"32px"},onClick:()=>{f(new Map);const a=t.slice(0,e+1),o=a.filter((e=>!e.muted));R((e=>e.map((e=>e.id===x?(0,s.A)((0,s.A)({},e),{},{messages:a,_version:Date.now()}):e)))),u(x),(async()=>{try{await(0,r.f)(o,n.content,(0,g.F)(N||[]),x,f,v,M,C,p.has(x),(e=>I(x,e)))}catch(e){v(!1),M(x),console.error("Error resubmitting message:",e)}})(),K("")}})}):null};return(0,j.jsxs)("div",{style:{position:"relative"},children:[q&&(0,j.jsx)("div",{style:{position:"fixed",top:"var(--header-height)",left:"var(--folder-panel-width)",right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",justifyContent:"center",alignItems:"center",zIndex:1e3},children:(0,j.jsx)(w.A,{size:"large",tip:U})}),(0,j.jsxs)("div",{style:{opacity:h?.5:1,minHeight:"50px"},className:"conversation-messages-container",children:[X&&(0,j.jsxs)("div",{style:{position:"sticky",top:0,backgroundColor:"rgba(0, 0, 0, 0.7)",color:"#fff",padding:"8px 16px",borderRadius:"4px",margin:"8px 0",display:"flex",alignItems:"center",gap:"8px",zIndex:1e3},children:[(0,j.jsx)(w.A,{size:"small"}),(0,j.jsx)("span",{children:U})]}),P.map(((e,s)=>{const a=c?s:t.length-1-s,o=a+1,r=o<t.length,i=r?t[o]:null,d="human"===e.role&&!F&&!W&&(a===t.length-1||r&&"assistant"!==(null===i||void 0===i?void 0:i.role));"system"===e.role&&e.modelChange?"".concat(e.modelChange.from,"->").concat(e.modelChange.to):e.content;return(0,j.jsx)("div",{className:"message ".concat(e.role||"").concat(e.muted?" muted":"").concat(d?" needs-response":""),children:"system"===e.role&&e.modelChange?(0,j.jsx)(H,{previousModel:e.modelChange.from,changeKey:e.modelChange.changeKey,newModel:e.modelChange.to}):e.content?(0,j.jsxs)(j.Fragment,{children:["human"===e.role&&(0,j.jsxs)("div",{style:{display:l===a?"none":"flex",justifyContent:"space-between"},children:[(0,j.jsx)("div",{className:"message-sender",children:"You:"}),(0,j.jsxs)("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginRight:"8px"},children:[Z(a),$(a),d&&G(a),(0,j.jsx)(A,{index:a,isInline:!0})]})]}),"human"===e.role&&l===a?(0,j.jsx)(A,{index:a,isInline:!1}):"human"===e.role&&e.content?(0,j.jsx)("div",{className:"message-content",children:(0,j.jsx)(T.MarkdownRenderer,{markdown:e.content,enableCodeApply:n,isStreaming:y||p.has(x)})}):"assistant"===e.role&&e.content?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[(0,j.jsx)("div",{className:"message-sender",children:"AI:"}),(0,j.jsx)("div",{style:{display:"flex",gap:"8px",alignItems:"center",marginRight:"8px"},children:Z(a)}),G(a)]}),(0,j.jsx)("div",{className:"message-content",children:(0,j.jsx)(T.MarkdownRenderer,{markdown:e.content,enableCodeApply:n,isStreaming:y||p.has(x)})})]}):null]}):null},"message-".concat(e.id||s))}))]})]})}),((e,n)=>e.enableCodeApply===n.enableCodeApply));B.displayName="Conversation";const D=B}}]);
3
+ //# sourceMappingURL=68418.f7b4d2d9.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/68418.f7b4d2d9.chunk.js","mappings":"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","sources":["../node_modules/@ant-design/icons-svg/es/asn/SaveOutlined.js","../node_modules/@ant-design/icons/es/icons/SaveOutlined.js","components/EditSection.tsx","../node_modules/@ant-design/icons-svg/es/asn/RedoOutlined.js","../node_modules/@ant-design/icons/es/icons/RedoOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MutedOutlined.js","../node_modules/@ant-design/icons/es/icons/MutedOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SoundOutlined.js","../node_modules/@ant-design/icons/es/icons/SoundOutlined.js","components/ModelChangeNotification.tsx","components/Conversation.tsx"],"sourcesContent":["// This icon file is generated automatically.\nvar SaveOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z\" } }] }, \"name\": \"save\", \"theme\": \"outlined\" };\nexport default SaveOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SaveOutlinedSvg from \"@ant-design/icons-svg/es/asn/SaveOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SaveOutlined = function SaveOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SaveOutlinedSvg\n }));\n};\n\n/**![save](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5My4zIDI5My4zTDczMC43IDEzMC43Yy03LjUtNy41LTE2LjctMTMtMjYuNy0xNlYxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMzOC41YzAtMTctNi43LTMzLjItMTguNy00NS4yek0zODQgMTg0aDI1NnYxMDRIMzg0VjE4NHptNDU2IDY1NkgxODRWMTg0aDEzNnYxMzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIwNS44bDEzNiAxMzZWODQwek01MTIgNDQyYy03OS41IDAtMTQ0IDY0LjUtMTQ0IDE0NHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjIgMC04MC0zNS44LTgwLTgwczM1LjgtODAgODAtODAgODAgMzUuOCA4MCA4MC0zNS44IDgwLTgwIDgweiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SaveOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'SaveOutlined';\n}\nexport default RefIcon;","import React, { useState, useRef, useEffect } from \"react\";\nimport { useChatContext } from '../context/ChatContext';\nimport { sendPayload } from \"../apis/chatApi\";\nimport { Message } from \"../utils/types\";\nimport { useFolderContext } from \"../context/FolderContext\";\nimport { Button, Tooltip, Input, Space } from \"antd\";\nimport { convertKeysToStrings } from '../utils/types';\nimport { EditOutlined, CheckOutlined, CloseOutlined, SaveOutlined } from \"@ant-design/icons\";\n\ninterface EditSectionProps {\n index: number;\n isInline?: boolean;\n}\n\nexport const EditSection: React.FC<EditSectionProps> = ({ index, isInline = false }) => {\n const {\n currentMessages,\n currentConversationId,\n addMessageToConversation,\n setIsStreaming,\n setConversations,\n streamingConversations,\n addStreamingConversation,\n setStreamedContentMap,\n removeStreamingConversation,\n editingMessageIndex,\n setEditingMessageIndex\n } = useChatContext();\n\n const [editedMessage, setEditedMessage] = useState(currentMessages[index].content);\n const { checkedKeys } = useFolderContext();\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const { TextArea } = Input;\n const isEditing = editingMessageIndex === index;\n\n // Focus the textarea when editing starts\n useEffect(() => {\n if (isEditing && textareaRef.current) {\n setTimeout(() => {\n if (textareaRef.current) {\n textareaRef.current.focus();\n }\n }, 100);\n }\n }, [isEditing]);\n\n const handleEdit = () => {\n setEditingMessageIndex(index);\n };\n\n const handleSave = () => {\n // Update the conversation in the context with the edited message\n setConversations(prev => prev.map(conv => {\n if (conv.id === currentConversationId) {\n const updatedMessages = conv.messages.map((msg, i) => {\n if (i === index) {\n return {\n ...msg,\n content: editedMessage,\n _timestamp: Date.now() // Update timestamp to mark as modified\n };\n }\n return msg;\n });\n return { ...conv, messages: updatedMessages, _version: Date.now() };\n }\n return conv;\n }));\n setEditingMessageIndex(null);\n };\n\n const handleCancel = () => {\n setEditingMessageIndex(null);\n setEditedMessage(currentMessages[index].content);\n };\n\n const handleSubmit = async () => {\n setEditingMessageIndex(null);\n\n // Clear any existing streamed content\n setStreamedContentMap(new Map());\n\n // Create truncated message array up to and including edited message\n const truncatedMessages = currentMessages.slice(0, index + 1);\n\n // Update the edited message\n truncatedMessages[index] = {\n ...truncatedMessages[index],\n content: editedMessage,\n _timestamp: Date.now(),\n // Add a marker to indicate this message was edited and truncated\n _edited: true,\n _truncatedAfter: true\n };\n\n // Set conversation to just the truncated messages\n setConversations(prev => prev.map(conv =>\n conv.id === currentConversationId\n ? { ...conv, messages: truncatedMessages, _version: Date.now(), _editInProgress: true }\n : conv\n ));\n\n addStreamingConversation(currentConversationId);\n try {\n const result = await sendPayload(\n truncatedMessages,\n editedMessage,\n convertKeysToStrings(checkedKeys),\n currentConversationId,\n setStreamedContentMap,\n setIsStreaming,\n removeStreamingConversation,\n addMessageToConversation,\n streamingConversations.has(currentConversationId)\n );\n\n // Get the final streamed content\n const finalContent = result;\n\n if (finalContent) {\n const newAIMessage: Message = {\n content: finalContent,\n role: 'assistant'\n };\n addMessageToConversation(newAIMessage, currentConversationId);\n\n // Clear the edit in progress flag after successfully adding the response\n setConversations(prev => prev.map(conv =>\n conv.id === currentConversationId\n ? { ...conv, _editInProgress: false }\n : conv\n ));\n }\n } catch (error) {\n console.error('Error sending message:', error);\n removeStreamingConversation(currentConversationId);\n } finally {\n setIsStreaming(false);\n }\n };\n\n return (\n <div>\n {/* If this is the inline version and we're editing this message, don't render anything */}\n {isInline && isEditing && (\n null\n )}\n\n {/* If we're editing and this is NOT the inline version, show full edit interface */}\n {isEditing && !isInline && (\n <div style={{ width: '100%' }}>\n {/* Header row with sender and buttons */}\n <div style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n width: '100%'\n }}>\n <div className=\"message-sender\">You:</div>\n <Space>\n <Tooltip title=\"Cancel editing\">\n <Button icon={<CloseOutlined />} onClick={handleCancel} size=\"small\">\n Cancel\n </Button>\n </Tooltip>\n <Tooltip title=\"Save changes to context\">\n <Button icon={<SaveOutlined />} onClick={handleSave} size=\"small\">\n Save\n </Button>\n </Tooltip>\n <Tooltip title=\"Send to model, remove newer responses\">\n <Button icon={<CheckOutlined />} onClick={handleSubmit} size=\"small\" type=\"primary\">\n Submit\n </Button>\n </Tooltip>\n </Space>\n </div>\n\n {/* Full-width textarea */}\n <TextArea\n ref={textareaRef}\n autoFocus\n style={{\n width: '100%',\n minHeight: '100px',\n resize: 'vertical'\n }}\n value={editedMessage}\n onChange={(e) => setEditedMessage(e.target.value)}\n autoSize={{\n minRows: 3,\n maxRows: 20\n }}\n placeholder=\"Edit your message...\"\n />\n </div>\n )}\n\n {/* Show edit button if not editing and this is inline, OR if not editing and not inline */}\n {!isEditing && (isInline || !isEditing) && (\n <Tooltip title=\"Edit\">\n <Button icon={<EditOutlined />} onClick={handleEdit} />\n </Tooltip>\n )}\n </div>\n );\n};\n\n","// This icon file is generated automatically.\nvar RedoOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 00-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z\" } }] }, \"name\": \"redo\", \"theme\": \"outlined\" };\nexport default RedoOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport RedoOutlinedSvg from \"@ant-design/icons-svg/es/asn/RedoOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar RedoOutlined = function RedoOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: RedoOutlinedSvg\n }));\n};\n\n/**![redo](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc1OC4yIDgzOS4xQzg1MS44IDc2NS45IDkxMiA2NTEuOSA5MTIgNTIzLjkgOTEyIDMwMyA3MzMuNSAxMjQuMyA1MTIuNiAxMjQgMjkxLjQgMTIzLjcgMTEyIDMwMi44IDExMiA1MjMuOWMwIDEyNS4yIDU3LjUgMjM2LjkgMTQ3LjYgMzEwLjIgMy41IDIuOCA4LjYgMi4yIDExLjQtMS4zbDM5LjQtNTAuNWMyLjctMy40IDIuMS04LjMtMS4yLTExLjEtOC4xLTYuNi0xNS45LTEzLjctMjMuNC0yMS4yYTMxOC42NCAzMTguNjQgMCAwMS02OC42LTEwMS43QzIwMC40IDYwOSAxOTIgNTY3LjEgMTkyIDUyMy45czguNC04NS4xIDI1LjEtMTI0LjVjMTYuMS0zOC4xIDM5LjItNzIuMyA2OC42LTEwMS43IDI5LjQtMjkuNCA2My42LTUyLjUgMTAxLjctNjguNkM0MjYuOSAyMTIuNCA0NjguOCAyMDQgNTEyIDIwNHM4NS4xIDguNCAxMjQuNSAyNS4xYzM4LjEgMTYuMSA3Mi4zIDM5LjIgMTAxLjcgNjguNiAyOS40IDI5LjQgNTIuNSA2My42IDY4LjYgMTAxLjcgMTYuNyAzOS40IDI1LjEgODEuMyAyNS4xIDEyNC41cy04LjQgODUuMS0yNS4xIDEyNC41YTMxOC42NCAzMTguNjQgMCAwMS02OC42IDEwMS43Yy05LjMgOS4zLTE5LjEgMTgtMjkuMyAyNkw2NjguMiA3MjRhOCA4IDAgMDAtMTQuMSAzbC0zOS42IDE2Mi4yYy0xLjIgNSAyLjYgOS45IDcuNyA5LjlsMTY3IC44YzYuNyAwIDEwLjUtNy43IDYuMy0xMi45bC0zNy4zLTQ3Ljl6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(RedoOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'RedoOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar MutedOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M771.91 115a31.65 31.65 0 00-17.42 5.27L400 351.97H236a16 16 0 00-16 16v288.06a16 16 0 0016 16h164l354.5 231.7a31.66 31.66 0 0017.42 5.27c16.65 0 32.08-13.25 32.08-32.06V147.06c0-18.8-15.44-32.06-32.09-32.06M732 221v582L439.39 611.75l-17.95-11.73H292V423.98h129.44l17.95-11.73z\" } }] }, \"name\": \"muted\", \"theme\": \"outlined\" };\nexport default MutedOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport MutedOutlinedSvg from \"@ant-design/icons-svg/es/asn/MutedOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar MutedOutlined = function MutedOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: MutedOutlinedSvg\n }));\n};\n\n/**![muted](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNzcxLjkxIDExNWEzMS42NSAzMS42NSAwIDAwLTE3LjQyIDUuMjdMNDAwIDM1MS45N0gyMzZhMTYgMTYgMCAwMC0xNiAxNnYyODguMDZhMTYgMTYgMCAwMDE2IDE2aDE2NGwzNTQuNSAyMzEuN2EzMS42NiAzMS42NiAwIDAwMTcuNDIgNS4yN2MxNi42NSAwIDMyLjA4LTEzLjI1IDMyLjA4LTMyLjA2VjE0Ny4wNmMwLTE4LjgtMTUuNDQtMzIuMDYtMzIuMDktMzIuMDZNNzMyIDIyMXY1ODJMNDM5LjM5IDYxMS43NWwtMTcuOTUtMTEuNzNIMjkyVjQyMy45OGgxMjkuNDRsMTcuOTUtMTEuNzN6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(MutedOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'MutedOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SoundOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 00-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0021.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0021.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 00-21.7-5.9L746 287.8a15.99 15.99 0 00-5.8 21.8L760 344z\" } }] }, \"name\": \"sound\", \"theme\": \"outlined\" };\nexport default SoundOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SoundOutlinedSvg from \"@ant-design/icons-svg/es/asn/SoundOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SoundOutlined = function SoundOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SoundOutlinedSvg\n }));\n};\n\n/**![sound](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYyNS45IDExNWMtNS45IDAtMTEuOSAxLjYtMTcuNCA1LjNMMjU0IDM1Mkg5MGMtOC44IDAtMTYgNy4yLTE2IDE2djI4OGMwIDguOCA3LjIgMTYgMTYgMTZoMTY0bDM1NC41IDIzMS43YzUuNSAzLjYgMTEuNiA1LjMgMTcuNCA1LjMgMTYuNyAwIDMyLjEtMTMuMyAzMi4xLTMyLjFWMTQ3LjFjMC0xOC44LTE1LjQtMzIuMS0zMi4xLTMyLjF6TTU4NiA4MDNMMjkzLjQgNjExLjdsLTE4LTExLjdIMTQ2VjQyNGgxMjkuNGwxNy45LTExLjdMNTg2IDIyMXY1ODJ6bTM0OC0zMjdIODA2Yy04LjggMC0xNiA3LjItMTYgMTZ2NDBjMCA4LjggNy4yIDE2IDE2IDE2aDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTQwYzAtOC44LTcuMi0xNi0xNi0xNnptLTQxLjkgMjYxLjhsLTExMC4zLTYzLjdhMTUuOSAxNS45IDAgMDAtMjEuNyA1LjlsLTE5LjkgMzQuNWMtNC40IDcuNi0xLjggMTcuNCA1LjggMjEuOEw4NTYuMyA4MDBhMTUuOSAxNS45IDAgMDAyMS43LTUuOWwxOS45LTM0LjVjNC40LTcuNiAxLjctMTcuNC01LjgtMjEuOHpNNzYwIDM0NGExNS45IDE1LjkgMCAwMDIxLjcgNS45TDg5MiAyODYuMmM3LjYtNC40IDEwLjItMTQuMiA1LjgtMjEuOEw4NzggMjMwYTE1LjkgMTUuOSAwIDAwLTIxLjctNS45TDc0NiAyODcuOGExNS45OSAxNS45OSAwIDAwLTUuOCAyMS44TDc2MCAzNDR6IiAvPjwvc3ZnPg==) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SoundOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'SoundOutlined';\n}\nexport default RefIcon;","import React, { memo } from 'react';\nimport { useTheme } from '../context/ThemeContext';\n\ninterface ModelChangeNotificationProps {\n previousModel: string;\n newModel: string;\n changeKey?: string;\n key?: string;\n}\n\nconst ModelChangeNotification: React.FC<ModelChangeNotificationProps> = memo(({ previousModel, newModel, changeKey }) => {\n const { isDarkMode } = useTheme();\n\n // Define colors that work well in both light and dark modes\n const styles = {\n container: {\n padding: '12px 16px',\n borderRadius: '8px',\n backgroundColor: isDarkMode ? 'rgba(25, 118, 210, 0.15)' : 'rgba(25, 118, 210, 0.08)',\n border: `1px solid ${isDarkMode ? '#2c6cb0' : '#90caf9'}`,\n marginBottom: '12px',\n marginTop: '4px',\n display: 'flex',\n alignItems: 'center',\n boxShadow: isDarkMode ? '0 2px 8px rgba(0, 0, 0, 0.15)' : '0 1px 3px rgba(0, 0, 0, 0.1)'\n },\n icon: {\n fontSize: '20px',\n marginRight: '12px',\n color: isDarkMode ? '#90caf9' : '#1976d2'\n },\n text: {\n color: isDarkMode ? '#e3f2fd' : '#0d47a1',\n fontWeight: 500,\n fontSize: '14px'\n },\n modelName: {\n fontWeight: 600,\n color: isDarkMode ? '#bbdefb' : '#1565c0'\n }\n };\n\n return (\n <div style={styles.container}>\n <span style={styles.icon}>🔄</span>\n <span style={styles.text}>\n Model changed from <span style={styles.modelName}>{previousModel}</span> to <span style={styles.modelName}>{newModel}</span>\n </span>\n </div>\n );\n}, (prevProps, nextProps) => {\n // Only re-render if the models actually change or if the changeKey is different\n if (prevProps.changeKey && nextProps.changeKey && prevProps.changeKey !== nextProps.changeKey) {\n return false; // Different changeKeys mean we should re-render\n }\n return prevProps.previousModel === nextProps.previousModel &&\n prevProps.newModel === nextProps.newModel &&\n prevProps.changeKey === nextProps.changeKey;\n});\n\nModelChangeNotification.displayName = 'ModelChangeNotification';\nexport default ModelChangeNotification;\n","import React, { useEffect, useRef, Suspense, memo, useCallback, useMemo } from \"react\";\nimport { useChatContext } from '../context/ChatContext';\nimport { EditSection } from \"./EditSection\";\nimport { Spin, Button, Tooltip } from 'antd';\nimport { RedoOutlined, SoundOutlined, MutedOutlined } from \"@ant-design/icons\";\nimport { sendPayload } from \"../apis/chatApi\";\n\nimport ModelChangeNotification from './ModelChangeNotification';\nimport { convertKeysToStrings } from \"../utils/types\";\nimport { useQuestionContext } from '../context/QuestionContext';\nimport { useFolderContext } from '../context/FolderContext';\nimport { isDebugLoggingEnabled, debugLog } from '../utils/logUtils';\n\n// Lazy load the MarkdownRenderer\nimport { MarkdownRenderer } from \"./MarkdownRenderer\";\n\ninterface ConversationProps {\n enableCodeApply: boolean;\n}\n\nconst Conversation: React.FC<ConversationProps> = memo(({ enableCodeApply }) => {\n const { currentMessages,\n editingMessageIndex,\n isTopToBottom,\n isLoadingConversation,\n addStreamingConversation,\n streamingConversations,\n currentConversationId,\n setIsStreaming,\n setStreamedContentMap,\n isStreaming,\n addMessageToConversation,\n removeStreamingConversation,\n streamedContentMap,\n userHasScrolled,\n updateProcessingState,\n setConversations,\n toggleMessageMute,\n } = useChatContext();\n\n const { checkedKeys } = useFolderContext();\n const { setQuestion } = useQuestionContext();\n const visibilityRef = useRef<boolean>(true);\n // Memoize conversation-specific streaming state to prevent unnecessary re-renders\n const conversationStreamingState = useMemo(() => ({\n isCurrentlyStreaming: streamingConversations.has(currentConversationId),\n hasStreamedContent: streamedContentMap.has(currentConversationId) && \n streamedContentMap.get(currentConversationId) !== '',\n streamedContent: streamedContentMap.get(currentConversationId) || ''\n }), [streamingConversations, streamedContentMap, currentConversationId]);\n \n // Use memoized state instead of direct context access\n const { isCurrentlyStreaming, hasStreamedContent } = conversationStreamingState;\n \n // Sort messages to maintain order\n const displayMessages = isTopToBottom ? currentMessages : [...currentMessages].reverse();\n\n // Keep track of rendered messages for performance monitoring\n const renderedCountRef = useRef(0);\n const renderedSystemMessagesRef = useRef<Set<string>>(new Set());\n const processedModelChangesRef = useRef<Set<string>>(new Set());\n\n // Track which conversations have received streaming content\n const conversationHasStreamedContent = useCallback((conversationId: string) => {\n return streamedContentMap.has(conversationId) &&\n streamedContentMap.get(conversationId) !== '';\n }, [streamedContentMap]);\n\n useEffect(() => {\n // Only log when message count changes significantly, not on every render\n if (Math.abs(currentMessages.length - renderedCountRef.current) > 2) {\n if (isDebugLoggingEnabled()) {\n debugLog('Conversation messages updated:', {\n messageCount: currentMessages.length,\n previousCount: renderedCountRef.current,\n isVisible: visibilityRef.current,\n displayOrder: isTopToBottom ? 'top-down' : 'bottom-up'\n });\n }\n renderedCountRef.current = currentMessages.length;\n }\n\n // Set up visibility observer\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n visibilityRef.current = entry.isIntersecting;\n });\n },\n { threshold: 0.1 }\n );\n\n return () => observer.disconnect();\n }, [isTopToBottom, currentMessages.length]);\n\n // Update active streaming conversations reference\n useEffect(() => {\n // Create the handler function\n const handleModelChange = (event: CustomEvent) => {\n const { previousModel, newModel } = event.detail;\n\n // Create a unique key for this model change to prevent duplicates\n const changeKey = `${previousModel}->${newModel}`;\n\n // Skip if we've already processed this exact change\n if (processedModelChangesRef.current.has(changeKey)) {\n return;\n }\n processedModelChangesRef.current.add(changeKey);\n\n // Add system message about model change\n if (previousModel && newModel) {\n addMessageToConversation({\n role: 'system',\n content: `Model changed from ${previousModel} to ${newModel}`,\n modelChange: {\n from: previousModel,\n to: newModel,\n changeKey: changeKey\n }\n }, currentConversationId);\n }\n };\n\n // Add and remove event listener\n window.addEventListener('modelChanged', handleModelChange as EventListener);\n return () => {\n // Reset processed changes when component unmounts\n processedModelChangesRef.current.clear();\n renderedSystemMessagesRef.current.clear();\n window.removeEventListener('modelChanged', handleModelChange as EventListener);\n };\n }, [currentConversationId, addMessageToConversation]);\n\n // Loading indicator text based on progress\n const loadingText = isLoadingConversation\n ? currentMessages.length > 0\n ? `Loading messages (${currentMessages.length} loaded)...`\n : 'Loading conversation...'\n : '';\n\n // Progressive loading indicator\n const showProgressiveLoading = isLoadingConversation && currentMessages.length > 0;\n\n // Track whether we're in the initial loading state\n const isInitialLoading = isLoadingConversation && currentMessages.length === 0;\n\n // Function to determine if we need to show the retry button\n const shouldShowRetry = (index: number) => {\n const message = currentMessages[index];\n const isLastMessage = index === currentMessages.length - 1;\n const nextIndex = index + 1;\n const nextMessage = nextIndex < currentMessages.length ? currentMessages[nextIndex] : null;\n const hasNextMessage = nextIndex < currentMessages.length;\n\n // Show retry if this is a human message and either:\n // 1. It's the last message, or\n // 2. The next message isn't from the assistant\n // But don't show if we're currently streaming or have streaming content for this conversation\n return message?.role === 'human' &&\n !isCurrentlyStreaming &&\n !hasStreamedContent &&\n (isLastMessage ||\n (hasNextMessage && nextMessage?.role !== 'assistant'));\n };\n\n // Render retry button with explanation\n const renderRetryButton = (index: number) => {\n if (!shouldShowRetry(index)) return null;\n\n return (\n <Tooltip title=\"The AI response may have failed. Click to retry.\">\n <Button\n icon={<RedoOutlined />}\n type=\"primary\"\n size=\"small\"\n onClick={async () => {\n const message = currentMessages[index];\n addStreamingConversation(currentConversationId);\n try {\n // Filter out muted messages before retrying - explicitly exclude muted messages\n const messagesToSend = currentMessages.filter(msg => !msg.muted);\n await sendPayload(\n messagesToSend,\n message.content,\n convertKeysToStrings(checkedKeys || []),\n currentConversationId,\n setStreamedContentMap,\n setIsStreaming,\n removeStreamingConversation,\n addMessageToConversation,\n streamingConversations.has(currentConversationId),\n (state: 'idle' | 'sending' | 'awaiting_model_response' | 'processing_tools' | 'error') => updateProcessingState(currentConversationId, state)\n );\n } catch (error) {\n setIsStreaming(false);\n removeStreamingConversation(currentConversationId);\n console.error('Error retrying message:', error);\n }\n }}\n >\n Retry AI Response\n </Button>\n </Tooltip>\n );\n };\n\n // Render mute button\n const renderMuteButton = (index: number) => {\n // Don't show mute button if this message is being edited\n if (editingMessageIndex === index) {\n return null;\n }\n\n const message = currentMessages[index];\n\n // Don't show mute button if there's an error state (retry button is showing)\n if (shouldShowRetry(index)) {\n return null;\n }\n\n if (!message || message.role === 'system') return null;\n\n return (\n <Tooltip title={message.muted ? \"Unmute (include in context)\" : \"Mute (exclude from context)\"}>\n <Button\n icon={message.muted ? <MutedOutlined /> : <SoundOutlined />}\n type=\"default\"\n size=\"small\"\n style={{\n padding: '0 8px',\n minWidth: '32px',\n height: '32px'\n }}\n onClick={() => {\n toggleMessageMute(currentConversationId, index);\n }}\n />\n </Tooltip>\n );\n };\n\n // Render resubmit button for human messages\n const renderResubmitButton = (index: number) => {\n // Don't show resubmit button if this message is being edited\n if (editingMessageIndex === index) {\n return null;\n }\n\n const message = currentMessages[index];\n\n // Don't show resubmit button if there's an error state (retry button is showing)\n if (shouldShowRetry(index)) {\n return null;\n }\n\n if (!message || message.role !== 'human') return null;\n\n // Don't show resubmit button if we're currently streaming\n if (isCurrentlyStreaming) return null;\n\n return (\n <Tooltip title=\"Resubmit this question\">\n <Button\n icon={<RedoOutlined />}\n type=\"default\"\n size=\"small\"\n style={{\n padding: '0 8px',\n minWidth: '32px',\n height: '32px'\n }}\n onClick={() => {\n // Clear any existing streamed content\n setStreamedContentMap(new Map());\n\n // Create truncated message array up to and including this message\n const truncatedMessages = currentMessages.slice(0, index + 1);\n\n // Filter out muted messages from truncated messages - explicitly exclude muted messages\n const messagesToSend = truncatedMessages.filter(msg => !msg.muted);\n // Set conversation to just the truncated messages\n setConversations(prev => prev.map(conv =>\n conv.id === currentConversationId\n ? { ...conv, messages: truncatedMessages, _version: Date.now() }\n : conv\n ));\n\n // Start streaming immediately\n addStreamingConversation(currentConversationId);\n\n // Send the payload\n (async () => {\n try {\n // messagesToSend is already filtered above\n await sendPayload(\n messagesToSend, // Already filtered for muted messages\n message.content,\n convertKeysToStrings(checkedKeys || []),\n currentConversationId,\n setStreamedContentMap,\n setIsStreaming,\n removeStreamingConversation,\n addMessageToConversation,\n streamingConversations.has(currentConversationId),\n (state: 'idle' | 'sending' | 'awaiting_model_response' | 'processing_tools' | 'error') => updateProcessingState(currentConversationId, state)\n );\n } catch (error) {\n setIsStreaming(false);\n removeStreamingConversation(currentConversationId);\n console.error('Error resubmitting message:', error);\n }\n })();\n // Clear the question field since we're submitting directly\n setQuestion('');\n }}\n />\n </Tooltip>\n );\n };\n\n return (\n <div style={{ position: 'relative' }}>\n {isInitialLoading && (\n <div style={{\n position: 'fixed',\n top: 'var(--header-height)',\n left: 'var(--folder-panel-width)',\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000\n }}>\n <Spin size=\"large\" tip={loadingText} />\n </div>\n )}\n <div\n style={{\n opacity: isLoadingConversation ? 0.5 : 1,\n minHeight: '50px' // Ensure visibility detection\n }}\n className=\"conversation-messages-container\"\n >\n {showProgressiveLoading && (\n <div style={{\n position: 'sticky',\n top: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n color: '#fff',\n padding: '8px 16px',\n borderRadius: '4px',\n margin: '8px 0',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n zIndex: 1000\n }}>\n <Spin size=\"small\" />\n <span>{loadingText}</span>\n </div>\n )}\n {displayMessages.map((msg, index) => {\n // Convert display index to actual index for bottom-up mode\n const actualIndex = isTopToBottom ? index : currentMessages.length - 1 - index;\n const nextActualIndex = actualIndex + 1;\n const hasNextMessage = nextActualIndex < currentMessages.length;\n const nextMessage = hasNextMessage ? currentMessages[nextActualIndex] : null;\n\n const needsResponse = msg.role === 'human' &&\n !isCurrentlyStreaming &&\n !hasStreamedContent &&\n (actualIndex === currentMessages.length - 1 ||\n (hasNextMessage && nextMessage?.role !== 'assistant'));\n\n // Create a unique key for system messages to prevent duplicate logging\n const systemMessageKey = msg.role === 'system' && msg.modelChange ?\n `${msg.modelChange.from}->${msg.modelChange.to}` :\n msg.content;\n\n // Only log system messages once and only in development mode\n if (process.env.NODE_ENV === 'development' && \n msg.role === 'system' && \n !renderedSystemMessagesRef.current.has(systemMessageKey)) {\n renderedSystemMessagesRef.current.add(systemMessageKey);\n }\n\n return <div\n // Use message ID as key instead of index\n key={`message-${msg.id || index}`}\n className={`message ${msg.role || ''}${msg.muted ? ' muted' : ''}${needsResponse\n ? ' needs-response'\n : ''\n }`}\n >\n {/* Handle system messages with model changes first */}\n {msg.role === 'system' && msg.modelChange ? (\n <ModelChangeNotification\n previousModel={msg.modelChange.from}\n changeKey={msg.modelChange.changeKey}\n newModel={msg.modelChange.to}\n />\n ) : (\n // Skip rendering empty messages entirely\n msg.content ? (\n // Regular message rendering for messages with content\n <>\n {msg.role === 'human' && (\n <div style={{ display: editingMessageIndex === actualIndex ? 'none' : 'flex', justifyContent: 'space-between' }}>\n <div className=\"message-sender\">You:</div>\n <div style={{\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n marginRight: '8px'\n }}>\n {renderMuteButton(actualIndex)}\n {renderResubmitButton(actualIndex)}\n {needsResponse && renderRetryButton(actualIndex)}\n <EditSection index={actualIndex} isInline={true} />\n </div>\n </div>\n )}\n\n {/* Only show edit section when editing, otherwise show message content */}\n {msg.role === 'human' && editingMessageIndex === actualIndex ? (\n <EditSection index={actualIndex} isInline={false} />\n ) : msg.role === 'human' && msg.content ? (\n <div className=\"message-content\">\n <MarkdownRenderer\n markdown={msg.content}\n enableCodeApply={enableCodeApply}\n isStreaming={isStreaming || streamingConversations.has(currentConversationId)}\n />\n </div>\n ) : msg.role === 'assistant' && msg.content ? (\n <>\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <div className=\"message-sender\">AI:</div>\n <div style={{\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n marginRight: '8px'\n }}>\n {renderMuteButton(actualIndex)}\n </div>\n {renderRetryButton(actualIndex)}\n </div>\n <div className=\"message-content\">\n <MarkdownRenderer\n markdown={msg.content}\n enableCodeApply={enableCodeApply}\n isStreaming={isStreaming || streamingConversations.has(currentConversationId)}\n />\n </div>\n </>\n ) : null}\n </>\n ) : null\n )}\n </div>;\n })}\n </div>\n </div>\n );\n}, (prevProps, nextProps) => {\n // Custom comparison to prevent re-renders on unrelated changes\n return prevProps.enableCodeApply === nextProps.enableCodeApply;\n});\n\n// Set display name for debugging\nConversation.displayName = 'Conversation';\n\nexport default Conversation;\n"],"names":["SaveOutlined","props","ref","React","AntdIcon","_extends","icon","SaveOutlinedSvg","EditSection","_ref","index","isInline","currentMessages","currentConversationId","addMessageToConversation","setIsStreaming","setConversations","streamingConversations","addStreamingConversation","setStreamedContentMap","removeStreamingConversation","editingMessageIndex","setEditingMessageIndex","useChatContext","editedMessage","setEditedMessage","useState","content","checkedKeys","useFolderContext","textareaRef","useRef","TextArea","Input","isEditing","useEffect","current","setTimeout","focus","_jsxs","children","style","width","display","justifyContent","alignItems","marginBottom","_jsx","className","Space","Tooltip","title","Button","CloseOutlined","onClick","handleCancel","size","handleSave","prev","map","conv","id","updatedMessages","messages","msg","i","_objectSpread","_timestamp","Date","now","_version","CheckOutlined","async","Map","truncatedMessages","slice","_edited","_truncatedAfter","_editInProgress","result","sendPayload","convertKeysToStrings","has","role","error","console","type","autoFocus","minHeight","resize","value","onChange","e","target","autoSize","minRows","maxRows","placeholder","EditOutlined","handleEdit","RedoOutlined","RedoOutlinedSvg","MutedOutlined","MutedOutlinedSvg","SoundOutlined","SoundOutlinedSvg","ModelChangeNotification","memo","previousModel","newModel","changeKey","isDarkMode","useTheme","styles","container","padding","borderRadius","backgroundColor","border","concat","marginTop","boxShadow","fontSize","marginRight","color","text","fontWeight","modelName","prevProps","nextProps","displayName","Conversation","enableCodeApply","isTopToBottom","isLoadingConversation","isStreaming","streamedContentMap","userHasScrolled","updateProcessingState","toggleMessageMute","setQuestion","useQuestionContext","visibilityRef","conversationStreamingState","useMemo","isCurrentlyStreaming","hasStreamedContent","get","streamedContent","displayMessages","reverse","renderedCountRef","renderedSystemMessagesRef","Set","processedModelChangesRef","useCallback","conversationId","Math","abs","length","isDebugLoggingEnabled","debugLog","messageCount","previousCount","isVisible","displayOrder","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","threshold","disconnect","handleModelChange","event","detail","add","modelChange","from","to","window","addEventListener","clear","removeEventListener","loadingText","showProgressiveLoading","isInitialLoading","shouldShowRetry","message","isLastMessage","nextIndex","nextMessage","hasNextMessage","renderRetryButton","messagesToSend","filter","muted","state","renderMuteButton","minWidth","height","renderResubmitButton","position","top","left","right","bottom","zIndex","Spin","tip","opacity","margin","gap","actualIndex","nextActualIndex","needsResponse","_Fragment","MarkdownRenderer","markdown"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[99948],{62132:(s,i,m)=>{"use strict";m.r(i),m.d(i,{default:()=>g});var r=m(65043),p=m(8918),n=m(31023),e=m(42261),a=m(89073),t=m(44262),l=m(55727),j=(m(63475),m(70579));const{TabPane:o}=p.A,{Title:c}=n.A,d=s=>{let{code:i,language:m}=s;const{isDarkMode:p}=(0,l.D)(),[n,a]=(0,r.useState)(!1),[o,c]=(0,r.useState)(""),[d,g]=(0,r.useState)(null);return r.useEffect((()=>{(async()=>{console.debug("Attempting to highlight ".concat(m));try{if(await(0,t.S)(m),!window.Prism)throw new Error("Prism not initialized");{const s=window.Prism.languages[m];if(!s)throw new Error("Grammar not found for ".concat(m));{const r=window.Prism.highlight(i,s,m);c(r),a(!0),console.debug("Successfully highlighted ".concat(m))}}}catch(d){const r=d instanceof Error?d.message:"Unknown error";console.error("Failed to highlight ".concat(m,":"),d),g("Failed to highlight ".concat(m,": ").concat(r)),c(i)}})()}),[i,m]),(0,j.jsxs)(j.Fragment,{children:[d&&(0,j.jsx)(e.A,{message:"Syntax Highlighting Error",description:d,type:"error",showIcon:!0,style:{marginBottom:"16px"}}),(0,j.jsx)("pre",{style:{padding:"16px",borderRadius:"6px",overflow:"auto",backgroundColor:p?"#1f1f1f":"#f6f8fa",border:"1px solid ".concat(p?"#303030":"#e1e8e8"),margin:"16px 0"},children:(0,j.jsx)("code",{className:"language-".concat(m),style:{textShadow:"none",color:p?"#e6e6e6":"#24292e"},dangerouslySetInnerHTML:{__html:n?o:i}})})]})},g=()=>(0,j.jsx)(a.A,{title:"Debug View: Complex Syntax Test Cases",className:"debug-container",children:(0,j.jsxs)(p.A,{defaultActiveKey:"1",children:[(0,j.jsxs)(o,{tab:"Python Templates",children:[(0,j.jsx)(c,{level:4,children:"Python with Complex Templates and Type Annotations"}),(0,j.jsx)(d,{code:'# Complex Python template example\ndef render_nested_template(data: Dict[str, Any]) -> str:\n template = """\n <div class="{{class}}">\n {% for item in items if item.value < threshold %}\n <template v-if="item.count > 0 && item.type === \'nested\'">\n <component v-bind:is="item.type<{{item.level}}>" \n :data="item.data<{{format_data(item)}}>"\n @event="handle<{{item.id}}>"/>\n </template>\n {% endfor %}\n </div>\n """\n return Template(template).render(data)\n\n# Django-style template with nested filters\ntemplate = """\n{% with complex_value=item.value|default:0 %}\n {% if complex_value < threshold and item.type|length > 0 %}\n <div class="item-{{ item.type|lower|default:\'default\' }}">\n {{ item.data|filter:<threshold>|process:>output> }}\n </div>\n {% endif %}\n{% endwith %}\n"""\n\nfrom typing import Dict, List, Tuple, TypeVar, Generic\n\nT = TypeVar(\'T\')\nU = TypeVar(\'U\')\n\nclass ComplexContainer(Generic[T, U]):\n def process_nested(\n self,\n data: Dict[str, List[Tuple[T, List[Dict[str, U]]]]],\n threshold: int\n ) -> List[Dict[str, List[T]]] < U:\n return [\n {k: [x for x, _ in v if len(x) < threshold]}\n for k, v in data.items()\n if all(isinstance(x, (int, str)) for x in k)\n ]\n\ndef complex_type_function(\n x: List[Dict[str, Set[Tuple[T, U]]]] < int\n) -> Dict[T, List[U]] < str:\n pass',language:"python"})]},"1"),(0,j.jsxs)(o,{tab:"TypeScript Generics",children:[(0,j.jsx)(c,{level:4,children:"TypeScript with Nested Generics and JSX"}),(0,j.jsx)(d,{code:"// Complex TypeScript with nested generics and JSX\ntype NestedPromise<T> = Promise<Promise<T>>;\ntype ComplexState<T extends keyof U, U> = {\n data: Array<Record<T, U[T]>>;\n meta: Map<T, Set<U[T]>>;\n};\n\ninterface Props<T extends Record<string, any>> {\n items: Array<T>;\n render: <K extends keyof T>(\n item: T[K],\n helpers: Record<K, <V extends T[K]>(value: V) => V>\n ) => JSX.Element;\n}\n\nclass ComplexComponent<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T\n> extends React.Component<{\n data: Map<K, Array<T[K]>>;\n render: <V extends T[K]>(props: { \n item: V; \n index: number \n }) => React.ReactElement<V>;\n}> {\n render() {\n return (\n <div>\n {Array.from(this.props.data).map(([key, values]) => (\n <section key={key as string}>\n {values.map((value, index) => (\n <this.props.render<typeof value>\n item={value}\n index={index}\n />\n ))}\n </section>\n ))}\n </div>\n );\n }\n}\n\n// Usage with complex nested generics\ntype NestedData<T> = T extends Array<infer U> \n ? U extends object \n ? { [K in keyof U]: Array<U[K]> } \n : never \n : never;\n\nfunction processData<\n T extends Record<string, unknown>,\n K extends keyof T = keyof T,\n V extends T[K] = T[K]\n>(data: Map<K, Array<V>>): NestedData<Array<V>> {\n // Implementation\n return {} as NestedData<Array<V>>;\n}",language:"typescript"})]},"2")]})})},44262:(s,i,m)=>{"use strict";m.d(i,{S:()=>l});m(15696),m(89142),m(6136);const r=new Set(["plaintext"]),p={js:"javascript",javascript:"javascript",jsx:"jsx",ts:"typescript",tsx:"tsx",py:"python",rb:"ruby",ruby:"ruby","typescript jsx":"tsx","typescript-jsx":"tsx",java:"java",cpp:"cpp",c:"clike",cs:"csharp",go:"go",rs:"rust",php:"php",objectivec:"objectivec",objc:"objectivec","objective-c":"objectivec",swift:"swift",metal:"c",sh:"bash",bash:"bash",shell:"bash",yml:"yaml",yaml:"yaml",json:"json",md:"markdown",sql:"sql",plist:"markup",xml:"markup",dockerfile:"docker",diff:"diff",markup:"markup",html:"markup"};let n=null,e=null,a={};const t=new Set,l=async s=>{const i=a[s];if(i)return i;const j=p[s]||s;if("plaintext"===j)return Promise.resolve();if(t.has(j))return Promise.resolve();if(r.has(s)||r.has(j))return console.debug("Skipping already loaded language: ".concat(j)),Promise.resolve();const o=await(async()=>(n||(e||(e=(async()=>{try{const s=await Promise.resolve().then(m.t.bind(m,6136,23));if(s.default){const i=s.default;if(i.languages=i.languages||{},i.languages.plaintext||(i.languages.plaintext={text:/[\s\S]+/}),window.Prism=i,n=i,await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(29003).then(m.t.bind(m,15575,23)),await m.e(88179).then(m.t.bind(m,64377,23)),await m.e(86274).then(m.t.bind(m,53636,23)),i.languages.javascript&&i.languages.javascript["template-string"]){const s=i.languages.javascript["template-string"];"object"===typeof s&&s.inside&&s.inside["template-string"]&&(delete s.inside["template-string"],console.debug("Cleaned circular reference in JavaScript template-string at init"))}return i}return null}catch(s){return console.error("Failed to initialize Prism:",s),null}})()),n=await e),n))();if(o){if(!s.includes(" "))return t.add(j),console.debug("Loading language: ".concat(j)),a[s]=(async(i,p,n,e)=>{try{var t,l,c,d;switch(null!==(t=window.Prism)&&void 0!==t&&null!==(l=t.languages)&&void 0!==l&&l.javascript&&0!==Object.keys((null===(c=window.Prism)||void 0===c||null===(d=c.languages)||void 0===d?void 0:d.javascript)||{}).length||(await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(86274).then(m.t.bind(m,53636,23))),j){case"jsx":if(await Promise.all([m.e(29003).then(m.t.bind(m,15575,23)),m.e(86274).then(m.t.bind(m,53636,23))]),await m.e(75454).then(m.t.bind(m,73994,23)),window.Prism.languages.jsx&&window.Prism.languages.jsx["template-string"]){const s=window.Prism.languages.jsx["template-string"];"object"===typeof s&&s.inside&&s.inside["template-string"]&&(delete s.inside["template-string"],console.debug("Cleaned circular reference in JSX template-string"))}window.Prism.languages.jsx||(window.Prism.languages.jsx=window.Prism.languages.extend("markup",window.Prism.languages.javascript));break;case"typescript":if((null===(i=window.Prism)||void 0===i||null===(p=i.languages)||void 0===p||!p.typescript||0===Object.keys((null===(n=window.Prism)||void 0===n||null===(e=n.languages)||void 0===e?void 0:e.typescript)||{}).length)&&(await m.e(44930).then(m.t.bind(m,47932,23)),window.Prism.languages.typescript&&window.Prism.languages.typescript["template-string"])){const s=window.Prism.languages.typescript["template-string"];"object"===typeof s&&s.inside&&s.inside["template-string"]&&(delete s.inside["template-string"],console.debug("Cleaned circular reference in TypeScript template-string"))}break;case"jsx":await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(83914).then(m.t.bind(m,34036,23));break;case"javascript":await m.e(75454).then(m.t.bind(m,73994,23));break;case"clike":var g,u;null!==(g=window.Prism)&&void 0!==g&&null!==(u=g.languages)&&void 0!==u&&u.clike||await m.e(53383).then(m.t.bind(m,83241,23));break;case"typsecript jsx":case"tsx":await Promise.all([m.e(29003).then(m.t.bind(m,15575,23)),m.e(86274).then(m.t.bind(m,53636,23)),m.e(44930).then(m.t.bind(m,47932,23)),m.e(75454).then(m.t.bind(m,73994,23))]),window.Prism&&!window.Prism.languages.tsx&&(window.Prism.languages.tsx=window.Prism.languages.extend("typescript",window.Prism.languages.jsx),r.add("typescript jsx"));break;case"python":o.languages.clike&&0!==Object.keys(o.languages.clike).length||await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(88179).then(m.t.bind(m,64377,23)),await m.e(29505).then(m.t.bind(m,83817,23)),r.add("python");break;case"swift":o.languages.clike&&0!==Object.keys(o.languages.clike).length||await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(35100).then(m.t.bind(m,684,23));break;case"objectivec":o.languages.clike&&0!==Object.keys(o.languages.clike).length||await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(12703).then(m.t.bind(m,47819,23)),r.add("objc"),r.add("objective-c");break;case"cpp":await m.e(53383).then(m.t.bind(m,83241,23)),await m.e(49234).then(m.t.bind(m,63782,23));break;default:if("plaintext"!==j)try{var h,f;if(await m(50652)("./prism-".concat(j)),null===(h=window.Prism)||void 0===h||null===(f=h.languages)||void 0===f||!f[j])throw new Error("Language ".concat(j," (").concat(s,") failed to load"))}catch(b){throw console.warn("Failed to load language ".concat(j,":"),b),b}}r.add(s),j!==s&&r.add(j)}catch(b){console.error("Failed to load language: ".concat(j," (").concat(s,")"),b),o&&o.languages.plaintext||(o.languages.plaintext={text:/[\s\S]+/})}finally{delete a[s]}})(),a[s];{const i=s.replace(" ","-");await l(p[i]||i)}}else{const s=new Error("Failed to load Prism core");console.error(s)}}},63475:()=>{},50652:(s,i,m)=>{var r={"./prism-abap":[5265,89453],"./prism-abap.js":[5265,89453],"./prism-abap.min":[44595,15430],"./prism-abap.min.js":[44595,15430],"./prism-abnf":[80804,80958],"./prism-abnf.js":[80804,80958],"./prism-abnf.min":[15734,59381],"./prism-abnf.min.js":[15734,59381],"./prism-actionscript":[50966,36204],"./prism-actionscript.js":[50966,36204],"./prism-actionscript.min":[4296,47943],"./prism-actionscript.min.js":[4296,47943],"./prism-ada":[86383,98661],"./prism-ada.js":[86383,98661],"./prism-ada.min":[63217,71198],"./prism-ada.min.js":[63217,71198],"./prism-agda":[99084,78834],"./prism-agda.js":[99084,78834],"./prism-agda.min":[4318,88049],"./prism-agda.min.js":[4318,88049],"./prism-al":[36954,40348],"./prism-al.js":[36954,40348],"./prism-al.min":[80628,49303],"./prism-al.min.js":[80628,49303],"./prism-antlr4":[25790,99764],"./prism-antlr4.js":[25790,99764],"./prism-antlr4.min":[25648,76399],"./prism-antlr4.min.js":[25648,76399],"./prism-apacheconf":[38667,27803],"./prism-apacheconf.js":[38667,27803],"./prism-apacheconf.min":[87141,49552],"./prism-apacheconf.min.js":[87141,49552],"./prism-apex":[29463,51903],"./prism-apex.js":[29463,51903],"./prism-apex.min":[27385,87164],"./prism-apex.min.js":[27385,87164],"./prism-apl":[43768,4940],"./prism-apl.js":[43768,4940],"./prism-apl.min":[58898,21863],"./prism-apl.min.js":[58898,21863],"./prism-applescript":[54596,74764],"./prism-applescript.js":[54596,74764],"./prism-applescript.min":[46262,74535],"./prism-applescript.min.js":[46262,74535],"./prism-aql":[41237,26423],"./prism-aql.js":[41237,26423],"./prism-aql.min":[18028,66036],"./prism-aql.min.js":[18028,66036],"./prism-arduino":[58507,65901],"./prism-arduino.js":[58507,65901],"./prism-arduino.min":[14885,61958],"./prism-arduino.min.js":[14885,61958],"./prism-arff":[35628,69174],"./prism-arff.js":[35628,69174],"./prism-arff.min":[40030,58765],"./prism-arff.min.js":[40030,58765],"./prism-armasm":[39910,76468],"./prism-armasm.js":[39910,76468],"./prism-armasm.min":[70360,19279],"./prism-armasm.min.js":[70360,19279],"./prism-arturo":[86540,77838],"./prism-arturo.js":[86540,77838],"./prism-arturo.min":[95294,46469],"./prism-arturo.min.js":[95294,46469],"./prism-asciidoc":[69672,35438],"./prism-asciidoc.js":[69672,35438],"./prism-asciidoc.min":[80898,14725],"./prism-asciidoc.min.js":[80898,14725],"./prism-asm6502":[71919,5449],"./prism-asm6502.js":[71919,5449],"./prism-asm6502.min":[20017,50058],"./prism-asm6502.min.js":[20017,50058],"./prism-asmatmel":[9087,33023],"./prism-asmatmel.js":[9087,33023],"./prism-asmatmel.min":[51265,45212],"./prism-asmatmel.min.js":[51265,45212],"./prism-aspnet":[58076,36362],"./prism-aspnet.js":[58076,36362],"./prism-aspnet.min":[89070,45641],"./prism-aspnet.min.js":[89070,45641],"./prism-autohotkey":[55562,74364],"./prism-autohotkey.js":[55562,74364],"./prism-autohotkey.min":[76740,28055],"./prism-autohotkey.min.js":[76740,28055],"./prism-autoit":[60009,50661],"./prism-autoit.js":[60009,50661],"./prism-autoit.min":[77099,37790],"./prism-autoit.min.js":[77099,37790],"./prism-avisynth":[70191,61895],"./prism-avisynth.js":[70191,61895],"./prism-avisynth.min":[69169,80100],"./prism-avisynth.min.js":[69169,80100],"./prism-avro-idl":[84265,11241],"./prism-avro-idl.js":[84265,11241],"./prism-avro-idl.min":[41323,21450],"./prism-avro-idl.min.js":[41323,21450],"./prism-awk":[12402,26174],"./prism-awk.js":[12402,26174],"./prism-awk.min":[70604,64213],"./prism-awk.min.js":[70604,64213],"./prism-bash":[76149,90113],"./prism-bash.js":[76149,90113],"./prism-bash.min":[47564,33218],"./prism-bash.min.js":[47564,33218],"./prism-basic":[10861,33059],"./prism-basic.js":[10861,33059],"./prism-basic.min":[66231,61432],"./prism-basic.min.js":[66231,61432],"./prism-batch":[59251,49397],"./prism-batch.js":[59251,49397],"./prism-batch.min":[36077,36590],"./prism-batch.min.js":[36077,36590],"./prism-bbcode":[55694,34152],"./prism-bbcode.js":[55694,34152],"./prism-bbcode.min":[75776,62603],"./prism-bbcode.min.js":[75776,62603],"./prism-bbj":[26593,25171],"./prism-bbj.js":[26593,25171],"./prism-bbj.min":[96099,59720],"./prism-bbj.min.js":[96099,59720],"./prism-bicep":[60464,26692],"./prism-bicep.js":[60464,26692],"./prism-bicep.min":[5258,85023],"./prism-bicep.min.js":[5258,85023],"./prism-birb":[35994,58420],"./prism-birb.js":[35994,58420],"./prism-birb.min":[69492,42607],"./prism-birb.min.js":[69492,42607],"./prism-bison":[19748,59036],"./prism-bison.js":[19748,59036],"./prism-bison.min":[44694,16599],"./prism-bison.min.js":[44694,16599],"./prism-bnf":[68457,24059],"./prism-bnf.js":[68457,24059],"./prism-bnf.min":[87723,71472],"./prism-bnf.min.js":[87723,71472],"./prism-bqn":[90534,44534],"./prism-bqn.js":[90534,44534],"./prism-bqn.min":[64248,65837],"./prism-bqn.min.js":[64248,65837],"./prism-brainfuck":[67952,62080],"./prism-brainfuck.js":[67952,62080],"./prism-brainfuck.min":[57482,18403],"./prism-brainfuck.min.js":[57482,18403],"./prism-brightscript":[40736,2234],"./prism-brightscript.js":[40736,2234],"./prism-brightscript.min":[16378,66457],"./prism-brightscript.min.js":[16378,66457],"./prism-bro":[80366,99806],"./prism-bro.js":[80366,99806],"./prism-bro.min":[10016,77717],"./prism-bro.min.js":[10016,77717],"./prism-bsl":[17214,41170],"./prism-bsl.js":[17214,41170],"./prism-bsl.min":[23792,64273],"./prism-bsl.min.js":[23792,64273],"./prism-c":[47646,92130],"./prism-c.js":[47646,92130],"./prism-c.min":[83088,24641],"./prism-c.min.js":[83088,24641],"./prism-cfscript":[38833,5929],"./prism-cfscript.js":[38833,5929],"./prism-cfscript.min":[36947,30506],"./prism-cfscript.min.js":[36947,30506],"./prism-chaiscript":[91233,58289],"./prism-chaiscript.js":[91233,58289],"./prism-chaiscript.min":[56579,73842],"./prism-chaiscript.min.js":[56579,73842],"./prism-cil":[22215,86985],"./prism-cil.js":[22215,86985],"./prism-cil.min":[71369,39658],"./prism-cil.min.js":[71369,39658],"./prism-cilkc":[32838,76899],"./prism-cilkc.js":[32838,76899],"./prism-cilkc.min":[62811,4920],"./prism-cilkc.min.js":[62811,4920],"./prism-cilkcpp":[59497,36923],"./prism-cilkcpp.js":[59497,36923],"./prism-cilkcpp.min":[81387,2704],"./prism-cilkcpp.min.js":[81387,2704],"./prism-clike":[83241,53383],"./prism-clike.js":[83241,53383],"./prism-clike.min":[20843,46628],"./prism-clike.min.js":[20843,46628],"./prism-clojure":[3847,25941],"./prism-clojure.js":[3847,25941],"./prism-clojure.min":[88873,29102],"./prism-clojure.min.js":[88873,29102],"./prism-cmake":[83540,58644],"./prism-cmake.js":[83540,58644],"./prism-cmake.min":[72678,66607],"./prism-cmake.min.js":[72678,66607],"./prism-cobol":[82404,32720],"./prism-cobol.js":[82404,32720],"./prism-cobol.min":[35862,47539],"./prism-cobol.min.js":[35862,47539],"./prism-coffeescript":[27296,95070],"./prism-coffeescript.js":[27296,95070],"./prism-coffeescript.min":[72794,30869],"./prism-coffeescript.min.js":[72794,30869],"./prism-concurnas":[37587,14457],"./prism-concurnas.js":[37587,14457],"./prism-concurnas.min":[33805,88858],"./prism-concurnas.min.js":[33805,88858],"./prism-cooklang":[53603,43199],"./prism-cooklang.js":[53603,43199],"./prism-cooklang.min":[31357,4540],"./prism-cooklang.min.js":[31357,4540],"./prism-coq":[302,20506],"./prism-coq.js":[302,20506],"./prism-coq.min":[49408,97209],"./prism-coq.min.js":[49408,97209],"./prism-core":[6136],"./prism-core.js":[6136],"./prism-core.min":[48274,21493],"./prism-core.min.js":[48274,21493],"./prism-cpp":[63782,49234],"./prism-cpp.js":[63782,49234],"./prism-cpp.min":[62808,84113],"./prism-cpp.min.js":[62808,84113],"./prism-crystal":[30001,35095],"./prism-crystal.js":[30001,35095],"./prism-crystal.min":[17139,43412],"./prism-crystal.min.js":[17139,43412],"./prism-csharp":[34036,83914],"./prism-csharp.js":[34036,83914],"./prism-csharp.min":[80102,25993],"./prism-csharp.min.js":[80102,25993],"./prism-cshtml":[82500,7398],"./prism-cshtml.js":[82500,7398],"./prism-cshtml.min":[49846,22077],"./prism-cshtml.min.js":[49846,22077],"./prism-csp":[68889,27911],"./prism-csp.js":[68889,27911],"./prism-csp.min":[65467,26756],"./prism-csp.min.js":[65467,26756],"./prism-css":[50944,21548],"./prism-css-extras":[97397,71380],"./prism-css-extras.js":[97397,71380],"./prism-css-extras.min":[73948,36207],"./prism-css-extras.min.js":[73948,36207],"./prism-css.js":[50944,21548],"./prism-css.min":[95450,39431],"./prism-css.min.js":[95450,39431],"./prism-csv":[76147,31697],"./prism-csv.js":[76147,31697],"./prism-csv.min":[13165,76402],"./prism-csv.min.js":[13165,76402],"./prism-cue":[29204,71164],"./prism-cue.js":[29204,71164],"./prism-cue.min":[12294,81527],"./prism-cue.min.js":[12294,81527],"./prism-cypher":[61128,84250],"./prism-cypher.js":[61128,84250],"./prism-cypher.min":[28098,5689],"./prism-cypher.min.js":[28098,5689],"./prism-d":[38143,30557],"./prism-d.js":[38143,30557],"./prism-d.min":[77825,48822],"./prism-d.min.js":[77825,48822],"./prism-dart":[21846,91900],"./prism-dart.js":[21846,91900],"./prism-dart.min":[25672,14391],"./prism-dart.min.js":[25672,14391],"./prism-dataweave":[37581,25763],"./prism-dataweave.js":[37581,25763],"./prism-dataweave.min":[93783,82808],"./prism-dataweave.min.js":[93783,82808],"./prism-dax":[58058,71714],"./prism-dax.js":[58058,71714],"./prism-dax.min":[3044,16705],"./prism-dax.min.js":[3044,16705],"./prism-dhall":[86464,54956],"./prism-dhall.js":[86464,54956],"./prism-dhall.min":[70586,96711],"./prism-dhall.min.js":[70586,96711],"./prism-diff":[11632,92426],"./prism-diff.js":[11632,92426],"./prism-diff.min":[82922,89513],"./prism-diff.min.js":[82922,89513],"./prism-django":[94444,22974],"./prism-django.js":[94444,22974],"./prism-django.min":[67582,3765],"./prism-django.min.js":[67582,3765],"./prism-dns-zone-file":[5110,10938],"./prism-dns-zone-file.js":[5110,10938],"./prism-dns-zone-file.min":[16872,22521],"./prism-dns-zone-file.min.js":[16872,22521],"./prism-docker":[72775,88563],"./prism-docker.js":[72775,88563],"./prism-docker.min":[34345,22248],"./prism-docker.min.js":[34345,22248],"./prism-dot":[40672,57684],"./prism-dot.js":[40672,57684],"./prism-dot.min":[6586,44911],"./prism-dot.min.js":[6586,44911],"./prism-ebnf":[21984,45322],"./prism-ebnf.js":[21984,45322],"./prism-ebnf.min":[27770,68937],"./prism-ebnf.min.js":[27770,68937],"./prism-editorconfig":[93964,47974],"./prism-editorconfig.js":[93964,47974],"./prism-editorconfig.min":[43550,44157],"./prism-editorconfig.min.js":[43550,44157],"./prism-eiffel":[65184,44330],"./prism-eiffel.js":[65184,44330],"./prism-eiffel.min":[15386,233],"./prism-eiffel.min.js":[15386,233],"./prism-ejs":[52807,17273],"./prism-ejs.js":[52807,17273],"./prism-ejs.min":[31817,78394],"./prism-ejs.min.js":[31817,78394],"./prism-elixir":[12244,61618],"./prism-elixir.js":[12244,61618],"./prism-elixir.min":[21062,40113],"./prism-elixir.min.js":[21062,40113],"./prism-elm":[30527,56997],"./prism-elm.js":[30527,56997],"./prism-elm.min":[49633,9310],"./prism-elm.min.js":[49633,9310],"./prism-erb":[90456,74376],"./prism-erb.js":[90456,74376],"./prism-erb.min":[52370,62699],"./prism-erb.min.js":[52370,62699],"./prism-erlang":[84384,85874],"./prism-erlang.js":[84384,85874],"./prism-erlang.min":[89370,93649],"./prism-erlang.min.js":[89370,93649],"./prism-etlua":[64258,28730],"./prism-etlua.js":[64258,28730],"./prism-etlua.min":[1660,22137],"./prism-etlua.min.js":[1660,22137],"./prism-excel-formula":[35959,12729],"./prism-excel-formula.js":[35959,12729],"./prism-excel-formula.min":[84665,54330],"./prism-excel-formula.min.js":[84665,54330],"./prism-factor":[35844,12158],"./prism-factor.js":[35844,12158],"./prism-factor.min":[49078,14901],"./prism-factor.min.js":[49078,14901],"./prism-false":[52724,68124],"./prism-false.js":[52724,68124],"./prism-false.min":[45798,93495],"./prism-false.min.js":[45798,93495],"./prism-firestore-security-rules":[8711,50531],"./prism-firestore-security-rules.js":[8711,50531],"./prism-firestore-security-rules.min":[20905,18552],"./prism-firestore-security-rules.min.js":[20905,18552],"./prism-flow":[88995,98307],"./prism-flow.js":[88995,98307],"./prism-flow.min":[47293,62680],"./prism-flow.min.js":[47293,62680],"./prism-fortran":[93329,80179],"./prism-fortran.js":[93329,80179],"./prism-fortran.min":[5843,4488],"./prism-fortran.min.js":[5843,4488],"./prism-fsharp":[18977,65941],"./prism-fsharp.js":[18977,65941],"./prism-fsharp.min":[88752,31406],"./prism-fsharp.min.js":[88752,31406],"./prism-ftl":[40201,65335],"./prism-ftl.js":[40201,65335],"./prism-ftl.min":[7147,4148],"./prism-ftl.min.js":[7147,4148],"./prism-gap":[61703,48209],"./prism-gap.js":[61703,48209],"./prism-gap.min":[70217,14610],"./prism-gap.min.js":[70217,14610],"./prism-gcode":[77927,50589],"./prism-gcode.js":[77927,50589],"./prism-gcode.min":[47497,31894],"./prism-gcode.min.js":[47497,31894],"./prism-gdscript":[49959,12699],"./prism-gdscript.js":[49959,12699],"./prism-gdscript.min":[20041,32528],"./prism-gdscript.min.js":[20041,32528],"./prism-gedcom":[20198,45920],"./prism-gedcom.js":[20198,45920],"./prism-gedcom.min":[33368,86883],"./prism-gedcom.min.js":[33368,86883],"./prism-gettext":[39612,34764],"./prism-gettext.js":[39612,34764],"./prism-gettext.min":[55630,18631],"./prism-gettext.min.js":[55630,18631],"./prism-gherkin":[50389,45995],"./prism-gherkin.js":[50389,45995],"./prism-gherkin.min":[42239,77536],"./prism-gherkin.min.js":[42239,77536],"./prism-git":[86827,42605],"./prism-git.js":[86827,42605],"./prism-git.min":[18981,44166],"./prism-git.min.js":[18981,44166],"./prism-glsl":[39871,61647],"./prism-glsl.js":[39871,61647],"./prism-glsl.min":[82977,33804],"./prism-glsl.min.js":[82977,33804],"./prism-gml":[64175,74169],"./prism-gml.js":[64175,74169],"./prism-gml.min":[16881,92666],"./prism-gml.min.js":[16881,92666],"./prism-gn":[92278,29612],"./prism-gn.js":[92278,29612],"./prism-gn.min":[70056,2599],"./prism-gn.min.js":[70056,2599],"./prism-go":[4117,94005],"./prism-go-module":[89750,88382],"./prism-go-module.js":[89750,88382],"./prism-go-module.min":[26152,93973],"./prism-go-module.min.js":[26152,93973],"./prism-go.js":[4117,94005],"./prism-go.min":[33439,35758],"./prism-go.min.js":[33439,35758],"./prism-gradle":[11692,63454],"./prism-gradle.js":[11692,63454],"./prism-gradle.min":[20830,98773],"./prism-gradle.min.js":[20830,98773],"./prism-graphql":[56734,69946],"./prism-graphql.js":[56734,69946],"./prism-graphql.min":[64880,39033],"./prism-graphql.min.js":[64880,39033],"./prism-groovy":[46497,34641],"./prism-groovy.js":[46497,34641],"./prism-groovy.min":[95491,44018],"./prism-groovy.min.js":[95491,44018],"./prism-haml":[20601,60701],"./prism-haml.js":[20601,60701],"./prism-haml.min":[68475,59670],"./prism-haml.min.js":[68475,59670],"./prism-handlebars":[92503,80779],"./prism-handlebars.js":[92503,80779],"./prism-handlebars.min":[64153,46848],"./prism-handlebars.min.js":[64153,46848],"./prism-haskell":[31151,84809],"./prism-haskell.js":[31151,84809],"./prism-haskell.min":[85905,39914],"./prism-haskell.min.js":[85905,39914],"./prism-haxe":[58823,47039],"./prism-haxe.js":[58823,47039],"./prism-haxe.min":[75913,27100],"./prism-haxe.min.js":[75913,27100],"./prism-hcl":[14688,68708],"./prism-hcl.js":[14688,68708],"./prism-hcl.min":[53658,91327],"./prism-hcl.min.js":[53658,91327],"./prism-hlsl":[66820,96046],"./prism-hlsl.js":[66820,96046],"./prism-hlsl.min":[67030,28933],"./prism-hlsl.min.js":[67030,28933],"./prism-hoon":[4827,45983],"./prism-hoon.js":[4827,45983],"./prism-hoon.min":[16437,96892],"./prism-hoon.min.js":[16437,96892],"./prism-hpkp":[16252,78382],"./prism-hpkp.js":[16252,78382],"./prism-hpkp.min":[65262,92101],"./prism-hpkp.min.js":[65262,92101],"./prism-hsts":[68503,84367],"./prism-hsts.js":[68503,84367],"./prism-hsts.min":[6233,79532],"./prism-hsts.min.js":[6233,79532],"./prism-http":[84155,69203],"./prism-http.js":[84155,69203],"./prism-http.min":[40341,25832],"./prism-http.min.js":[40341,25832],"./prism-ichigojam":[42704,61052],"./prism-ichigojam.js":[42704,61052],"./prism-ichigojam.min":[62602,68151],"./prism-ichigojam.min.js":[62602,68151],"./prism-icon":[65894,74420],"./prism-icon.js":[65894,74420],"./prism-icon.min":[63224,69135],"./prism-icon.min.js":[63224,69135],"./prism-icu-message-format":[42340,31174],"./prism-icu-message-format.js":[42340,31174],"./prism-icu-message-format.min":[48086,18045],"./prism-icu-message-format.min.js":[48086,18045],"./prism-idris":[78858,68914],"./prism-idris.js":[78858,68914],"./prism-idris.min":[28452,79985],"./prism-idris.min.js":[28452,79985],"./prism-iecst":[11431,52209],"./prism-iecst.js":[11431,52209],"./prism-iecst.min":[34505,75826],"./prism-iecst.min.js":[34505,75826],"./prism-ignore":[25569,26029],"./prism-ignore.js":[25569,26029],"./prism-ignore.min":[70467,4198],"./prism-ignore.min.js":[70467,4198],"./prism-inform7":[13485,29771],"./prism-inform7.js":[13485,29771],"./prism-inform7.min":[43127,74304],"./prism-inform7.min.js":[43127,74304],"./prism-ini":[17009,31123],"./prism-ini.js":[17009,31123],"./prism-ini.min":[1267,80264],"./prism-ini.min.js":[1267,80264],"./prism-io":[56959,53087],"./prism-io.js":[56959,53087],"./prism-io.min":[68257,3292],"./prism-io.min.js":[68257,3292],"./prism-j":[46581,42963],"./prism-j.js":[46581,42963],"./prism-j.min":[73055,50472],"./prism-j.min.js":[73055,50472],"./prism-java":[66043,98587],"./prism-java.js":[66043,98587],"./prism-java.min":[59701,36176],"./prism-java.min.js":[59701,36176],"./prism-javadoc":[17381,2867],"./prism-javadoc.js":[17381,2867],"./prism-javadoc.min":[89231,39624],"./prism-javadoc.min.js":[89231,39624],"./prism-javadoclike":[21970,22774],"./prism-javadoclike.js":[21970,22774],"./prism-javadoclike.min":[23340,33261],"./prism-javadoclike.min.js":[23340,33261],"./prism-javascript":[53636,86274],"./prism-javascript.js":[53636,86274],"./prism-javascript.min":[77782,10497],"./prism-javascript.min.js":[77782,10497],"./prism-javastacktrace":[65334,94696],"./prism-javastacktrace.js":[65334,94696],"./prism-javastacktrace.min":[87400,53291],"./prism-javastacktrace.min.js":[87400,53291],"./prism-jexl":[81794,62352],"./prism-jexl.js":[81794,62352],"./prism-jexl.min":[37052,35315],"./prism-jexl.min.js":[37052,35315],"./prism-jolie":[51068,72388],"./prism-jolie.js":[51068,72388],"./prism-jolie.min":[26766,61823],"./prism-jolie.min.js":[26766,61823],"./prism-jq":[19242,40944],"./prism-jq.js":[19242,40944],"./prism-jq.min":[72932,2739],"./prism-jq.min.js":[72932,2739],"./prism-js-extras":[61890,97390],"./prism-js-extras.js":[61890,97390],"./prism-js-extras.min":[81276,91205],"./prism-js-extras.min.js":[81276,91205],"./prism-js-templates":[65070,97908],"./prism-js-templates.js":[65070,97908],"./prism-js-templates.min":[24352,67055],"./prism-js-templates.min.js":[24352,67055],"./prism-jsdoc":[90660,16312],"./prism-jsdoc.js":[90660,16312],"./prism-jsdoc.min":[74102,18427],"./prism-jsdoc.min.js":[74102,18427],"./prism-json":[30337,59613],"./prism-json.js":[30337,59613],"./prism-json.min":[22851,27606],"./prism-json.min.js":[22851,27606],"./prism-json5":[35346,59018],"./prism-json5.js":[35346,59018],"./prism-json5.min":[40236,8585],"./prism-json5.min.js":[40236,8585],"./prism-jsonp":[61981,96663],"./prism-jsonp.js":[61981,96663],"./prism-jsonp.min":[51367,64052],"./prism-jsonp.min.js":[51367,64052],"./prism-jsstacktrace":[83065,91297],"./prism-jsstacktrace.js":[83065,91297],"./prism-jsstacktrace.min":[66139,94114],"./prism-jsstacktrace.min.js":[66139,94114],"./prism-jsx":[73994,75454],"./prism-jsx.js":[73994,75454],"./prism-jsx.min":[96324,87061],"./prism-jsx.min.js":[96324,87061],"./prism-julia":[84982,2282],"./prism-julia.js":[84982,2282],"./prism-julia.min":[24744,87113],"./prism-julia.min.js":[24744,87113],"./prism-keepalived":[63985,41961],"./prism-keepalived.js":[63985,41961],"./prism-keepalived.min":[78803,86346],"./prism-keepalived.min.js":[78803,86346],"./prism-keyman":[67654,33060],"./prism-keyman.js":[67654,33060],"./prism-keyman.min":[50968,77215],"./prism-keyman.min.js":[50968,77215],"./prism-kotlin":[68906,48104],"./prism-kotlin.js":[68906,48104],"./prism-kotlin.min":[43684,69003],"./prism-kotlin.min.js":[43684,69003],"./prism-kumir":[64679,80141],"./prism-kumir.js":[64679,80141],"./prism-kumir.min":[80169,96262],"./prism-kumir.min.js":[80169,96262],"./prism-kusto":[70863,24529],"./prism-kusto.js":[70863,24529],"./prism-kusto.min":[34545,38962],"./prism-kusto.min.js":[34545,38962],"./prism-latex":[32991,17781],"./prism-latex.js":[32991,17781],"./prism-latex.min":[92385,2734],"./prism-latex.min.js":[92385,2734],"./prism-latte":[77605,19151],"./prism-latte.js":[77605,19151],"./prism-latte.min":[21743,83084],"./prism-latte.min.js":[21743,83084],"./prism-less":[69486,34844],"./prism-less.js":[69486,34844],"./prism-less.min":[47616,8535],"./prism-less.min.js":[47616,8535],"./prism-lilypond":[86616,28378],"./prism-lilypond.js":[86616,28378],"./prism-lilypond.min":[6866,88697],"./prism-lilypond.min.js":[6866,88697],"./prism-linker-script":[63130,57578],"./prism-linker-script.js":[63130,57578],"./prism-linker-script.min":[47476,15145],"./prism-linker-script.min.js":[47476,15145],"./prism-liquid":[49115,15011],"./prism-liquid.js":[49115,15011],"./prism-liquid.min":[7349,51640],"./prism-liquid.min.js":[7349,51640],"./prism-lisp":[48679,83075],"./prism-lisp.js":[48679,83075],"./prism-lisp.min":[56777,54232],"./prism-lisp.min.js":[56777,54232],"./prism-livescript":[20558,26828],"./prism-livescript.js":[20558,26828],"./prism-livescript.min":[17792,68199],"./prism-livescript.min.js":[17792,68199],"./prism-llvm":[9618,10120],"./prism-llvm.js":[9618,10120],"./prism-llvm.min":[87980,39307],"./prism-llvm.min.js":[87980,39307],"./prism-log":[54545,51863],"./prism-log.js":[54545,51863],"./prism-log.min":[51123,86740],"./prism-log.min.js":[51123,86740],"./prism-lolcode":[79933,35579],"./prism-lolcode.js":[79933,35579],"./prism-lolcode.min":[1287,88624],"./prism-lolcode.min.js":[1287,88624],"./prism-lua":[42237,25391],"./prism-lua.js":[42237,25391],"./prism-lua.min":[21095,69836],"./prism-lua.min.js":[21095,69836],"./prism-magma":[23349,2142],"./prism-magma.js":[23349,2142],"./prism-magma.min":[43612,72949],"./prism-magma.min.js":[43612,72949],"./prism-makefile":[43839,51967],"./prism-makefile.js":[43839,51967],"./prism-makefile.min":[34145,56412],"./prism-makefile.min.js":[34145,56412],"./prism-markdown":[38486,54448],"./prism-markdown.js":[38486,54448],"./prism-markdown.min":[20008,93171],"./prism-markdown.min.js":[20008,93171],"./prism-markup":[15575,29003],"./prism-markup-templating":[64377,88179],"./prism-markup-templating.js":[64377,88179],"./prism-markup-templating.min":[95515,8904],"./prism-markup-templating.min.js":[95515,8904],"./prism-markup.js":[15575,29003],"./prism-markup.min":[55897,95072],"./prism-markup.min.js":[55897,95072],"./prism-mata":[54014,78944],"./prism-mata.js":[54014,78944],"./prism-mata.min":[75792,70179],"./prism-mata.min.js":[75792,70179],"./prism-matlab":[78510,25408],"./prism-matlab.js":[78510,25408],"./prism-matlab.min":[55936,42723],"./prism-matlab.min.js":[55936,42723],"./prism-maxscript":[88650,24014],"./prism-maxscript.js":[88650,24014],"./prism-maxscript.min":[90372,12133],"./prism-maxscript.min.js":[90372,12133],"./prism-mel":[62565,87463],"./prism-mel.js":[62565,87463],"./prism-mel.min":[20303,65156],"./prism-mel.min.js":[20303,65156],"./prism-mermaid":[55820,48044],"./prism-mermaid.js":[55820,48044],"./prism-mermaid.min":[40318,14791],"./prism-mermaid.min.js":[40318,14791],"./prism-metafont":[98123,92651],"./prism-metafont.js":[98123,92651],"./prism-metafont.min":[76645,46816],"./prism-metafont.min.js":[76645,46816],"./prism-mizar":[90388,17376],"./prism-mizar.js":[90388,17376],"./prism-mizar.min":[19110,91427],"./prism-mizar.min.js":[19110,91427],"./prism-mongodb":[16185,88559],"./prism-mongodb.js":[16185,88559],"./prism-mongodb.min":[82491,86892],"./prism-mongodb.min.js":[82491,86892],"./prism-monkey":[31838,31868],"./prism-monkey.js":[31838,31868],"./prism-monkey.min":[2800,64471],"./prism-monkey.min.js":[2800,64471],"./prism-moonscript":[94101,1909],"./prism-moonscript.js":[94101,1909],"./prism-moonscript.min":[66303,10926],"./prism-moonscript.min.js":[66303,10926],"./prism-n1ql":[65383,81931],"./prism-n1ql.js":[65383,81931],"./prism-n1ql.min":[33033,24640],"./prism-n1ql.min.js":[33033,24640],"./prism-n4js":[99454,18288],"./prism-n4js.js":[99454,18288],"./prism-n4js.min":[4336,1107],"./prism-n4js.min.js":[4336,1107],"./prism-nand2tetris-hdl":[292,37156],"./prism-nand2tetris-hdl.js":[292,37156],"./prism-nand2tetris-hdl.min":[82230,45311],"./prism-nand2tetris-hdl.min.js":[82230,45311],"./prism-naniscript":[83968,88750],"./prism-naniscript.js":[83968,88750],"./prism-naniscript.min":[59162,87301],"./prism-naniscript.min.js":[59162,87301],"./prism-nasm":[91734,10136],"./prism-nasm.js":[91734,10136],"./prism-nasm.min":[91048,43131],"./prism-nasm.min.js":[91048,43131],"./prism-neon":[29987,95827],"./prism-neon.js":[29987,95827],"./prism-neon.min":[40093,27464],"./prism-neon.min.js":[40093,27464],"./prism-nevod":[35657,15219],"./prism-nevod.js":[35657,15219],"./prism-nevod.min":[30379,81896],"./prism-nevod.min.js":[30379,81896],"./prism-nginx":[29919,13089],"./prism-nginx.js":[29919,13089],"./prism-nginx.min":[77793,85442],"./prism-nginx.min.js":[77793,85442],"./prism-nim":[27567,82249],"./prism-nim.js":[27567,82249],"./prism-nim.min":[67921,27242],"./prism-nim.min.js":[67921,27242],"./prism-nix":[75124,77172],"./prism-nix.js":[75124,77172],"./prism-nix.min":[64678,83023],"./prism-nix.min.js":[64678,83023],"./prism-nsis":[40136,34986],"./prism-nsis.js":[40136,34986],"./prism-nsis.min":[88738,53577],"./prism-nsis.min.js":[88738,53577],"./prism-objectivec":[47819,12703],"./prism-objectivec.js":[47819,12703],"./prism-objectivec.min":[10021,79516],"./prism-objectivec.min.js":[10021,79516],"./prism-ocaml":[3891,90333],"./prism-ocaml.js":[3891,90333],"./prism-ocaml.min":[68525,4310],"./prism-ocaml.min.js":[68525,4310],"./prism-odin":[89603,31455],"./prism-odin.js":[89603,31455],"./prism-odin.min":[80669,72380],"./prism-odin.min.js":[80669,72380],"./prism-opencl":[82512,85446],"./prism-opencl.js":[82512,85446],"./prism-opencl.min":[73098,8157],"./prism-opencl.min.js":[73098,8157],"./prism-openqasm":[30837,32049],"./prism-openqasm.js":[30837,32049],"./prism-openqasm.min":[54591,80818],"./prism-openqasm.min.js":[54591,80818],"./prism-oz":[9522,50592],"./prism-oz.js":[9522,50592],"./prism-oz.min":[75596,88291],"./prism-oz.min.js":[75596,88291],"./prism-parigp":[87734,54616],"./prism-parigp.js":[87734,54616],"./prism-parigp.min":[90952,4027],"./prism-parigp.min.js":[90952,4027],"./prism-parser":[91504,9690],"./prism-parser.js":[91504,9690],"./prism-parser.min":[94474,2777],"./prism-parser.min.js":[94474,2777],"./prism-pascal":[90447,22395],"./prism-pascal.js":[90447,22395],"./prism-pascal.min":[4721,33200],"./prism-pascal.min.js":[4721,33200],"./prism-pascaligo":[94562,33546],"./prism-pascaligo.js":[94562,33546],"./prism-pascaligo.min":[72604,41353],"./prism-pascaligo.min.js":[72604,41353],"./prism-pcaxis":[16259,59907],"./prism-pcaxis.js":[16259,59907],"./prism-pcaxis.min":[32029,3736],"./prism-pcaxis.min.js":[32029,3736],"./prism-peoplecode":[59433,33669],"./prism-peoplecode.js":[59433,33669],"./prism-peoplecode.min":[37579,56574],"./prism-peoplecode.min.js":[37579,56574],"./prism-perl":[8374,13500],"./prism-perl.js":[8374,13500],"./prism-perl.min":[21544,47223],"./prism-perl.min.js":[21544,47223],"./prism-php":[87523,78841],"./prism-php-extras":[63819,59763],"./prism-php-extras.js":[63819,59763],"./prism-php-extras.min":[67589,1608],"./prism-php-extras.min.js":[67589,1608],"./prism-php.js":[87523,78841],"./prism-php.min":[2845,6554],"./prism-php.min.js":[2845,6554],"./prism-phpdoc":[58221,74693],"./prism-phpdoc.js":[58221,74693],"./prism-phpdoc.min":[42935,446],"./prism-phpdoc.min.js":[42935,446],"./prism-plant-uml":[3869,57647],"./prism-plant-uml.js":[3869,57647],"./prism-plant-uml.min":[20679,31916],"./prism-plant-uml.min.js":[20679,31916],"./prism-plsql":[76715,68037],"./prism-plsql.js":[76715,68037],"./prism-plsql.min":[80741,58462],"./prism-plsql.min.js":[80741,58462],"./prism-powerquery":[44472,71546],"./prism-powerquery.js":[44472,71546],"./prism-powerquery.min":[76178,19289],"./prism-powerquery.min.js":[76178,19289],"./prism-powershell":[8466,99852],"./prism-powershell.js":[8466,99852],"./prism-powershell.min":[51244,58247],"./prism-powershell.min.js":[51244,58247],"./prism-processing":[13540,39542],"./prism-processing.js":[13540,39542],"./prism-processing.min":[23318,64877],"./prism-processing.min.js":[23318,64877],"./prism-prolog":[13084,52050],"./prism-prolog.js":[13084,52050],"./prism-prolog.min":[53134,12209],"./prism-prolog.min.js":[53134,12209],"./prism-promql":[32280,39458],"./prism-promql.js":[32280,39458],"./prism-promql.min":[18706,21761],"./prism-promql.min.js":[18706,21761],"./prism-properties":[14194,72648],"./prism-properties.js":[14194,72648],"./prism-properties.min":[60908,76075],"./prism-properties.min.js":[60908,76075],"./prism-protobuf":[64368,29214],"./prism-protobuf.js":[64368,29214],"./prism-protobuf.min":[93802,57973],"./prism-protobuf.min.js":[93802,57973],"./prism-psl":[11960,58636],"./prism-psl.js":[11960,58636],"./prism-psl.min":[81618,7399],"./prism-psl.min.js":[81618,7399],"./prism-pug":[48867,28509],"./prism-pug.js":[48867,28509],"./prism-pug.min":[89757,66262],"./prism-pug.min.js":[89757,66262],"./prism-puppet":[90973,57593],"./prism-puppet.js":[90973,57593],"./prism-puppet.min":[94951,53946],"./prism-puppet.min.js":[94951,53946],"./prism-pure":[34413,60781],"./prism-pure.js":[34413,60781],"./prism-pure.min":[68663,58950],"./prism-pure.min.js":[68663,58950],"./prism-purebasic":[65527,40181],"./prism-purebasic.js":[65527,40181],"./prism-purebasic.min":[55865,73665],"./prism-purebasic.min.js":[55865,73665],"./prism-purescript":[32386,10264],"./prism-purescript.js":[32386,10264],"./prism-purescript.min":[54876,54395],"./prism-purescript.min.js":[54876,54395],"./prism-python":[83817,29505],"./prism-python.js":[83817,29505],"./prism-python.min":[299,38530],"./prism-python.min.js":[299,38530],"./prism-q":[5732,26368],"./prism-q.js":[5732,26368],"./prism-q.min":[92246,70627],"./prism-q.min.js":[92246,70627],"./prism-qml":[47969,13651],"./prism-qml.js":[47969,13651],"./prism-qml.min":[32931,70920],"./prism-qml.min.js":[32931,70920],"./prism-qore":[26194,76856],"./prism-qore.js":[26194,76856],"./prism-qore.min":[49612,8059],"./prism-qore.min.js":[49612,8059],"./prism-qsharp":[64726,49404],"./prism-qsharp.js":[64726,49404],"./prism-qsharp.min":[29992,3255],"./prism-qsharp.min.js":[29992,3255],"./prism-r":[53613,16379],"./prism-r.js":[53613,16379],"./prism-r.min":[97399,20688],"./prism-r.min.js":[97399,20688],"./prism-racket":[97718,53389],"./prism-racket.js":[97718,53389],"./prism-racket.min":[90411,24838],"./prism-racket.min.js":[90411,24838],"./prism-reason":[16687,67559],"./prism-reason.js":[16687,67559],"./prism-reason.min":[9553,32356],"./prism-reason.min.js":[9553,32356],"./prism-regex":[15752,81084],"./prism-regex.js":[15752,81084],"./prism-regex.min":[80546,36151],"./prism-regex.min.js":[80546,36151],"./prism-rego":[79592,68406],"./prism-rego.js":[79592,68406],"./prism-rego.min":[40418,48685],"./prism-rego.min.js":[40418,48685],"./prism-renpy":[8561,37787],"./prism-renpy.js":[8561,37787],"./prism-renpy.min":[75987,91472],"./prism-renpy.min.js":[75987,91472],"./prism-rescript":[19133,30045],"./prism-rescript.js":[19133,30045],"./prism-rescript.min":[45959,40278],"./prism-rescript.min.js":[45959,40278],"./prism-rest":[88421,71321],"./prism-rest.js":[88421,71321],"./prism-rest.min":[44975,25658],"./prism-rest.min.js":[44975,25658],"./prism-rip":[84336,54848],"./prism-rip.js":[84336,54848],"./prism-rip.min":[4650,51363],"./prism-rip.min.js":[4650,51363],"./prism-roboconf":[54697,76733],"./prism-roboconf.js":[54697,76733],"./prism-roboconf.min":[4587,9558],"./prism-roboconf.min.js":[4587,9558],"./prism-robotframework":[53307,17319],"./prism-robotframework.js":[53307,17319],"./prism-robotframework.min":[33589,33988],"./prism-robotframework.min.js":[33589,33988],"./prism-ruby":[73955,14595],"./prism-ruby.js":[73955,14595],"./prism-ruby.min":[77437,67896],"./prism-ruby.min.js":[77437,67896],"./prism-rust":[59765,90345],"./prism-rust.js":[59765,90345],"./prism-rust.min":[14879,25642],"./prism-rust.min.js":[14879,25642],"./prism-sas":[4694,51590],"./prism-sas.js":[4694,51590],"./prism-sas.min":[90792,83517],"./prism-sas.min.js":[90792,83517],"./prism-sass":[33565,7769],"./prism-sass.js":[33565,7769],"./prism-sass.min":[7143,96506],"./prism-sass.min.js":[7143,96506],"./prism-scala":[2426,667],"./prism-scala.js":[2426,667],"./prism-scala.min":[48535,56080],"./prism-scala.min.js":[48535,56080],"./prism-scheme":[7056,146],"./prism-scheme.js":[7056,146],"./prism-scheme.min":[70122,84401],"./prism-scheme.min.js":[70122,84401],"./prism-scss":[88287,64399],"./prism-scss.js":[88287,64399],"./prism-scss.min":[14113,34604],"./prism-scss.min.js":[14113,34604],"./prism-shell-session":[87048,65204],"./prism-shell-session.js":[87048,65204],"./prism-shell-session.min":[6530,84079],"./prism-shell-session.min.js":[6530,84079],"./prism-smali":[31699,15525],"./prism-smali.js":[31699,15525],"./prism-smali.min":[31213,85278],"./prism-smali.min.js":[31213,85278],"./prism-smalltalk":[91730,38786],"./prism-smalltalk.js":[91730,38786],"./prism-smalltalk.min":[51884,54145],"./prism-smalltalk.min.js":[51884,54145],"./prism-smarty":[26675,15047],"./prism-smarty.js":[26675,15047],"./prism-smarty.min":[97677,71268],"./prism-smarty.min.js":[97677,71268],"./prism-sml":[47579,28197],"./prism-sml.js":[47579,28197],"./prism-sml.min":[19861,99294],"./prism-sml.min.js":[19861,99294],"./prism-solidity":[66574,67412],"./prism-solidity.js":[66574,67412],"./prism-solidity.min":[36288,66927],"./prism-solidity.min.js":[36288,66927],"./prism-solution-file":[78443,69129],"./prism-solution-file.js":[78443,69129],"./prism-solution-file.min":[27749,10762],"./prism-solution-file.min.js":[27749,10762],"./prism-soy":[40534,17077],"./prism-soy.js":[40534,17077],"./prism-soy.min":[92520,7329],"./prism-soy.min.js":[92520,7329],"./prism-sparql":[69262,2572],"./prism-sparql.js":[69262,2572],"./prism-sparql.min":[15200,62343],"./prism-sparql.min.js":[15200,62343],"./prism-splunk-spl":[98496,34670],"./prism-splunk-spl.js":[98496,34670],"./prism-splunk-spl.min":[95482,3077],"./prism-splunk-spl.min.js":[95482,3077],"./prism-sqf":[37593,15211],"./prism-sqf.js":[37593,15211],"./prism-sqf.min":[74011,91328],"./prism-sqf.min.js":[74011,91328],"./prism-sql":[15775,11425],"./prism-sql.js":[15775,11425],"./prism-sql.min":[75745,76354],"./prism-sql.min.js":[75745,76354],"./prism-squirrel":[35568,34870],"./prism-squirrel.js":[35568,34870],"./prism-squirrel.min":[81834,33165],"./prism-squirrel.min.js":[81834,33165],"./prism-stan":[75655,72467],"./prism-stan.js":[75655,72467],"./prism-stan.min":[2633,82824],"./prism-stan.min.js":[2633,82824],"./prism-stata":[39374,15362],"./prism-stata.js":[39374,15362],"./prism-stata.min":[76320,34497],"./prism-stata.min.js":[76320,34497],"./prism-stylus":[35841,27609],"./prism-stylus.js":[35841,27609],"./prism-stylus.min":[1411,11834],"./prism-stylus.min.js":[1411,11834],"./prism-supercollider":[63680,25892],"./prism-supercollider.js":[63680,25892],"./prism-supercollider.min":[13613,12319],"./prism-supercollider.min.js":[13613,12319],"./prism-swift":[684,35100],"./prism-swift.js":[684,35100],"./prism-swift.min":[830,77495],"./prism-swift.min.js":[830,77495],"./prism-systemd":[17384,15700],"./prism-systemd.js":[17384,15700],"./prism-systemd.min":[83394,65359],"./prism-systemd.min.js":[83394,65359],"./prism-t4-cs":[78274,62006],"./prism-t4-cs.js":[78274,62006],"./prism-t4-cs.min":[892,18253],"./prism-t4-cs.min.js":[892,18253],"./prism-t4-templating":[70493,59179],"./prism-t4-templating.js":[70493,59179],"./prism-t4-templating.min":[77351,26560],"./prism-t4-templating.min.js":[77351,26560],"./prism-t4-vb":[69468,3108],"./prism-t4-vb.js":[69468,3108],"./prism-t4-vb.min":[88430,39615],"./prism-t4-vb.min.js":[88430,39615],"./prism-tap":[27970,72986],"./prism-tap.js":[27970,72986],"./prism-tap.min":[44924,23513],"./prism-tap.min.js":[44924,23513],"./prism-tcl":[26292,29048],"./prism-tcl.js":[26292,29048],"./prism-tcl.min":[966,52731],"./prism-tcl.min.js":[966,52731],"./prism-textile":[39634,52786],"./prism-textile.js":[39634,52786],"./prism-textile.min":[86124,12337],"./prism-textile.min.js":[86124,12337],"./prism-toml":[36571,32323],"./prism-toml.js":[36571,32323],"./prism-toml.min":[34069,39896],"./prism-toml.min.js":[34069,39896],"./prism-tremor":[14330,61400],"./prism-tremor.js":[14330,61400],"./prism-tremor.min":[90836,42299],"./prism-tremor.min.js":[90836,42299],"./prism-tsx":[88456,46172],"./prism-tsx.js":[88456,46172],"./prism-tsx.min":[2594,58967],"./prism-tsx.min.js":[2594,58967],"./prism-tt2":[45365,60283],"./prism-tt2.js":[45365,60283],"./prism-tt2.min":[95199,4432],"./prism-tt2.min.js":[95199,4432],"./prism-turtle":[19201,20121],"./prism-turtle.js":[19201,20121],"./prism-turtle.min":[4771,41818],"./prism-turtle.min.js":[4771,41818],"./prism-twig":[79914,6308],"./prism-twig.js":[79914,6308],"./prism-twig.min":[30020,86687],"./prism-twig.min.js":[30020,86687],"./prism-typescript":[47932,44930],"./prism-typescript.js":[47932,44930],"./prism-typescript.min":[30574,91745],"./prism-typescript.min.js":[30574,91745],"./prism-typoscript":[3554,56244],"./prism-typoscript.js":[3554,56244],"./prism-typoscript.min":[59676,82351],"./prism-typoscript.min.js":[59676,82351],"./prism-unrealscript":[62003,93375],"./prism-unrealscript.js":[62003,93375],"./prism-unrealscript.min":[58765,58012],"./prism-unrealscript.min.js":[58765,58012],"./prism-uorazor":[44447,50553],"./prism-uorazor.js":[44447,50553],"./prism-uorazor.min":[92097,1978],"./prism-uorazor.min.js":[92097,1978],"./prism-uri":[37337,29643],"./prism-uri.js":[37337,29643],"./prism-uri.min":[7035,53024],"./prism-uri.min.js":[7035,53024],"./prism-v":[35857,35391],"./prism-v.js":[35857,35391],"./prism-v.min":[28115,32988],"./prism-v.min.js":[28115,32988],"./prism-vala":[41497,48969],"./prism-vala.js":[41497,48969],"./prism-vala.min":[44603,42442],"./prism-vala.min.js":[44603,42442],"./prism-vbnet":[55244,9672],"./prism-vbnet.js":[55244,9672],"./prism-vbnet.min":[16382,15467],"./prism-vbnet.min.js":[16382,15467],"./prism-velocity":[89108,75954],"./prism-velocity.js":[89108,75954],"./prism-velocity.min":[50342,50449],"./prism-velocity.min.js":[50342,50449],"./prism-verilog":[47773,52555],"./prism-verilog.js":[47773,52555],"./prism-verilog.min":[92423,6400],"./prism-verilog.min.js":[92423,6400],"./prism-vhdl":[52445,25261],"./prism-vhdl.js":[52445,25261],"./prism-vhdl.min":[64391,4294],"./prism-vhdl.min.js":[64391,4294],"./prism-vim":[51751,27697],"./prism-vim.js":[51751,27697],"./prism-vim.min":[57193,81074],"./prism-vim.min.js":[57193,81074],"./prism-visual-basic":[17012,80610],"./prism-visual-basic.js":[17012,80610],"./prism-visual-basic.min":[70553,37313],"./prism-visual-basic.min.js":[70553,37313],"./prism-warpscript":[94954,55884],"./prism-warpscript.js":[94954,55884],"./prism-warpscript.min":[8964,3079],"./prism-warpscript.min.js":[8964,3079],"./prism-wasm":[27723,40987],"./prism-wasm.js":[27723,40987],"./prism-wasm.min":[3781,1264],"./prism-wasm.min.js":[3781,1264],"./prism-web-idl":[81123,43169],"./prism-web-idl.js":[81123,43169],"./prism-web-idl.min":[44829,99714],"./prism-web-idl.min.js":[44829,99714],"./prism-wgsl":[97870,49944],"./prism-wgsl.js":[97870,49944],"./prism-wgsl.min":[18976,53307],"./prism-wgsl.min.js":[18976,53307],"./prism-wiki":[1503,45935],"./prism-wiki.js":[1503,45935],"./prism-wiki.min":[46369,59212],"./prism-wiki.min.js":[46369,59212],"./prism-wolfram":[18019,82537],"./prism-wolfram.js":[18019,82537],"./prism-wolfram.min":[74973,91626],"./prism-wolfram.min.js":[74973,91626],"./prism-wren":[92441,72025],"./prism-wren.js":[92441,72025],"./prism-wren.min":[76699,54202],"./prism-wren.min.js":[76699,54202],"./prism-xeora":[23978,48262],"./prism-xeora.js":[23978,48262],"./prism-xeora.min":[32164,4253],"./prism-xeora.min.js":[32164,4253],"./prism-xml-doc":[14129,28703],"./prism-xml-doc.js":[14129,28703],"./prism-xml-doc.min":[26707,48732],"./prism-xml-doc.min.js":[26707,48732],"./prism-xojo":[21197,73125],"./prism-xojo.js":[21197,73125],"./prism-xojo.min":[94903,45630],"./prism-xojo.min.js":[94903,45630],"./prism-xquery":[38559,17019],"./prism-xquery.js":[38559,17019],"./prism-xquery.min":[78497,9584],"./prism-xquery.min.js":[78497,9584],"./prism-yaml":[30104,77406],"./prism-yaml.js":[30104,77406],"./prism-yaml.min":[72978,75221],"./prism-yaml.min.js":[72978,75221],"./prism-yang":[60466,14984],"./prism-yang.js":[60466,14984],"./prism-yang.min":[31276,74219],"./prism-yang.min.js":[31276,74219],"./prism-zig":[93789,32199],"./prism-zig.js":[93789,32199],"./prism-zig.min":[10407,11108],"./prism-zig.min.js":[10407,11108]};function p(s){if(!m.o(r,s))return Promise.resolve().then((()=>{var i=new Error("Cannot find module '"+s+"'");throw i.code="MODULE_NOT_FOUND",i}));var i=r[s],p=i[0];return Promise.all(i.slice(1).map(m.e)).then((()=>m.t(p,23)))}p.keys=()=>Object.keys(r),p.id=50652,s.exports=p}}]);
2
+ //# sourceMappingURL=99948.b280eda0.chunk.js.map