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
@@ -1,2 +0,0 @@
1
- "use strict";(self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[58542],{74490:(e,n,t)=>{t.r(n),t.d(n,{default:()=>b});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),u=t(43716),m=t(4015),f=t(76399),p=t(32513),g=t(75337),v=t(58168);const x={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 A=t(22172),y=function(e,n){return o.createElement(A.A,(0,v.A)({},e,{ref:n,icon:x}))};const C=o.forwardRef(y);var j=t(70579);const{Panel:w}=s.A,b=e=>{let{visible:n,onClose:t}=e;const[v,x]=(0,o.useState)(null),[A,y]=(0,o.useState)(""),[b,k]=(0,o.useState)(!1);(0,o.useEffect)((()=>{n&&E()}),[n]);const E=async()=>{try{const e=await fetch("/api/mcp/shell-config");if(e.ok){const n=await e.json();x(n)}}catch(e){console.error("Failed to fetch shell config:",e),x({enabled:!0,allowedCommands:[],gitOperationsEnabled:!0,safeGitOperations:[],timeout:10})}},O=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)}},S=()=>{v&&A.trim()&&!v.allowedCommands.includes(A.trim())&&(x((e=>(0,a.A)((0,a.A)({},e),{},{allowedCommands:[...e.allowedCommands,A.trim()]}))),y(""))},G=["rm","rmdir","mv","cp","chmod","chown","sudo","su"],B=e=>G.some((n=>e.toLowerCase().includes(n.toLowerCase())));return v?(0,j.jsx)(l.A,{title:"Shell Command Configuration",open:n,onCancel:t,onOk:async()=>{if(v){k(!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 O(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{k(!1)}}},confirmLoading:b,width:600,okText:"Save Configuration",children:(0,j.jsxs)(r.A,{direction:"vertical",style:{width:"100%"},size:"large",children:[(0,j.jsxs)("div",{children:[(0,j.jsxs)(r.A,{align:"center",children:[(0,j.jsx)(c.A,{checked:v.enabled,onChange:async e=>{x((n=>(0,a.A)((0,a.A)({},n),{},{enabled:e}))),await O(e)}}),(0,j.jsx)("span",{children:"Enable shell command execution"})]}),(0,j.jsx)("div",{style:{marginTop:8,color:"#666",fontSize:"12px"},children:"When enabled, the AI agent can execute whitelisted shell commands"})]}),(0,j.jsx)(d.A,{}),(0,j.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,j.jsxs)(s.A,{defaultActiveKey:["1"],ghost:!0,children:[(0,j.jsxs)(w,{header:"Basic Configuration",children:[(0,j.jsxs)("div",{children:[(0,j.jsx)("h4",{children:"Allowed Commands"}),(0,j.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,j.jsx)("div",{style:{marginBottom:12},children:(0,j.jsxs)(u.A.Group,{compact:!0,children:[(0,j.jsx)(u.A,{placeholder:"Add additional command",value:A,onChange:e=>y(e.target.value),onPressEnter:S,style:{width:"calc(100% - 80px)"}}),(0,j.jsx)(m.Ay,{type:"primary",icon:(0,j.jsx)(g.A,{}),onClick:S,style:{width:80},children:"Add"})]})}),v.allowedCommands&&v.allowedCommands.length>0&&(0,j.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",marginBottom:16},children:v.allowedCommands.map((e=>(0,j.jsxs)(f.A,{closable:!0,color:B(e)?"red":"blue",onClose:()=>(e=>{v&&x((n=>(0,a.A)((0,a.A)({},n),{},{allowedCommands:n.allowedCommands.filter((n=>n!==e))})))})(e),style:{marginBottom:"4px"},children:[e,B(e)&&(0,j.jsx)(C,{style:{marginLeft:4,color:"#ff4d4f"}})]},e)))})]}),(0,j.jsx)(d.A,{}),(0,j.jsxs)("div",{children:[(0,j.jsx)("h4",{children:"Command Timeout"}),(0,j.jsx)(u.A,{type:"number",value:v.timeout,onChange:e=>x((n=>(0,a.A)((0,a.A)({},n),{},{timeout:parseInt(e.target.value)||10}))),suffix:"seconds",style:{width:150}})]}),(0,j.jsx)(d.A,{}),(0,j.jsxs)("div",{children:[(0,j.jsxs)(r.A,{align:"center",style:{marginBottom:12},children:[(0,j.jsx)(c.A,{checked:v.gitOperationsEnabled,onChange:e=>x((n=>(0,a.A)((0,a.A)({},n),{},{gitOperationsEnabled:e})))}),(0,j.jsx)("span",{children:"Enable safe Git operations"})]}),(0,j.jsx)("div",{style:{marginBottom:12,color:"#666",fontSize:"12px"},children:"When enabled, allows read-only and safe Git commands"}),v.gitOperationsEnabled&&(0,j.jsxs)("div",{style:{marginLeft:24},children:[(0,j.jsx)("h5",{children:"Allowed Git Operations:"}),(0,j.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,j.jsxs)(p.A,{checked:v.safeGitOperations.includes(e),onChange:()=>(e=>{v&&x((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,j.jsx)(w,{header:"Advanced Configuration",children:(0,j.jsx)(h.A,{message:"Advanced Configuration",description:"This section is reserved for future advanced shell configuration options.",type:"info",showIcon:!0})},"2")]})]})}):(0,j.jsx)(l.A,{title:"Shell Command Configuration",open:n,onCancel:t,footer:null,children:(0,j.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:()=>m});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),u=["prefixCls","className","style","checked","disabled","defaultChecked","type","title","onChange"];const m=(0,h.forwardRef)((function(e,n){var t=e.prefixCls,r=void 0===t?"rc-checkbox":t,m=e.className,f=e.style,p=e.checked,g=e.disabled,v=e.defaultChecked,x=void 0!==v&&v,A=e.type,y=void 0===A?"checkbox":A,C=e.title,j=e.onChange,w=(0,l.A)(e,u),b=(0,h.useRef)(null),k=(0,h.useRef)(null),E=(0,d.A)(x,{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,m,(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.08fb5cf4.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static/js/58542.08fb5cf4.chunk.js","mappings":"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","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 } 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: 10\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</h4>\n <Input\n type=\"number\"\n value={config.timeout}\n onChange={(e) => setConfig(prev => ({ ...prev!, timeout: parseInt(e.target.value) || 10 }))}\n suffix=\"seconds\"\n style={{ width: 150 }}\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","parseInt","suffix","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 +0,0 @@
1
- {"version":3,"file":"static/js/68418.2554bb1e.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 <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 )}\n\n {/* Only show message content for assistant messages or non-editing human messages */}\n {msg.role === 'assistant' && 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 )}\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":""}
@@ -1,2 +0,0 @@
1
- (self.webpackChunkfrontend=self.webpackChunkfrontend||[]).push([[99948],{62132:(s,i,m)=>{"use strict";m.r(i),m.d(i,{default:()=>u});var r=m(65043),p=m(8918),n=m(31023),e=m(42261),a=m(89073),t=m(44262),j=m(55727),l=(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,j.D)(),[n,a]=(0,r.useState)(!1),[o,c]=(0,r.useState)(""),[d,u]=(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),u("Failed to highlight ".concat(m,": ").concat(r)),c(i)}})()}),[i,m]),(0,l.jsxs)(l.Fragment,{children:[d&&(0,l.jsx)(e.A,{message:"Syntax Highlighting Error",description:d,type:"error",showIcon:!0,style:{marginBottom:"16px"}}),(0,l.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,l.jsx)("code",{className:"language-".concat(m),style:{textShadow:"none",color:p?"#e6e6e6":"#24292e"},dangerouslySetInnerHTML:{__html:n?o:i}})})]})},u=()=>(0,l.jsx)(a.A,{title:"Debug View: Complex Syntax Test Cases",className:"debug-container",children:(0,l.jsxs)(p.A,{defaultActiveKey:"1",children:[(0,l.jsxs)(o,{tab:"Python Templates",children:[(0,l.jsx)(c,{level:4,children:"Python with Complex Templates and Type Annotations"}),(0,l.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,l.jsxs)(o,{tab:"TypeScript Generics",children:[(0,l.jsx)(c,{level:4,children:"TypeScript with Nested Generics and JSX"}),(0,l.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:()=>j});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,j=async s=>{const i=a[s];if(i)return i;const l=p[s]||s;if("plaintext"===l)return Promise.resolve();if(t.has(l))return Promise.resolve();if(r.has(s)||r.has(l))return console.debug("Skipping already loaded language: ".concat(l)),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;return 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}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(l),console.debug("Loading language: ".concat(l)),a[s]=(async(i,p,n,e)=>{try{var t,j,c,d;switch(null!==(t=window.Prism)&&void 0!==t&&null!==(j=t.languages)&&void 0!==j&&j.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))),l){case"jsx":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=window.Prism.languages.extend("markup",window.Prism.languages.javascript));break;case"typescript":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));break;case"csharp":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 u,g;null!==(u=window.Prism)&&void 0!==u&&null!==(g=u.languages)&&void 0!==g&&g.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"!==l)try{var h,f;if(await m(50652)("./prism-".concat(l)),null===(h=window.Prism)||void 0===h||null===(f=h.languages)||void 0===f||!f[l])throw new Error("Language ".concat(l," (").concat(s,") failed to load"))}catch(b){throw console.warn("Failed to load language ".concat(l,":"),b),b}}r.add(s),l!==s&&r.add(l)}catch(b){console.error("Failed to load language: ".concat(l," (").concat(s,")"),b),o&&o.languages.plaintext||(o.languages.plaintext={text:/[\s\S]+/})}finally{delete a[s]}})(),a[s];{const i=s.replace(" ","-");await j(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.71670e91.chunk.js.map