@tea-agent/loop-agent 0.39.0-next.26 → 0.39.0-next.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/AGENTS.md +3 -0
  2. package/CHANGELOG.md +148 -96
  3. package/README.md +8 -4
  4. package/bin/loop-agent.js +7 -3
  5. package/dist/build-stamp.json +3 -3
  6. package/dist/cli/command-definitions.js +16 -5
  7. package/dist/cli/program.js +16 -2
  8. package/dist/cli/update/notifier.js +2 -2
  9. package/dist/cli.js +2 -1
  10. package/dist/commands/init-model-catalog.js +464 -0
  11. package/dist/commands/init-upgrade.js +265 -97
  12. package/dist/commands/init.js +428 -27
  13. package/dist/commands/inspect-next.js +8 -0
  14. package/dist/executors/dag-pi-executor.js +76 -10
  15. package/dist/executors/pi-extension-resolver.js +233 -0
  16. package/dist/executors/pi-sdk-executor.js +79 -2
  17. package/dist/executors/shell-executor.js +50 -6
  18. package/dist/executors/shell-write-guard.js +7 -0
  19. package/dist/shared/operator/capabilities.js +7 -0
  20. package/dist/shared/update/console-notifier.js +100 -0
  21. package/dist/{cli → shared}/update/npm-client.js +41 -8
  22. package/dist/{cli → shared}/update/state.js +41 -13
  23. package/dist/worker/cli.js +31 -1
  24. package/dist/worker/console/chat/routes.js +1 -0
  25. package/dist/worker/console/operator-user-error.js +1 -1
  26. package/dist/worker/console/routes.js +3 -0
  27. package/dist/worker/console/security.js +53 -5
  28. package/dist/worker/console/server.js +10 -4
  29. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-C4kVYweA.js → abnfDiagram-N423BO3Z-DGn9iNrd.js} +1 -1
  30. package/dist/worker/console/static/assets/{arc-Bj2M8iO5.js → arc-Dc0C2Nyv.js} +1 -1
  31. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-CLlXe4-6.js → architectureDiagram-T3A2C74G-COnz_Bhe.js} +1 -1
  32. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-psEp5xH0.js → blockDiagram-VBNYF7ZC-VhIP6vgf.js} +1 -1
  33. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-DeKcOCGJ.js → c4Diagram-5PPSVZJV-D74lpmlb.js} +1 -1
  34. package/dist/worker/console/static/assets/channel-DWcZjWB3.js +1 -0
  35. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-K0C744p1.js → chunk-2GRJ4B5K-BxmiogQE.js} +1 -1
  36. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-xbNw4J9-.js → chunk-2Q5K7J3B-C00Oi-2I.js} +1 -1
  37. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DjLaSDUO.js → chunk-5RXB4S5H-DTrT1Vze.js} +1 -1
  38. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-CtiPlKel.js → chunk-5VM5RSS4-DdKW7-fL.js} +1 -1
  39. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DZtolir7.js → chunk-6Q2QTUOP-D0q1WN6w.js} +1 -1
  40. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-CPcdNeew.js → chunk-GF5L2VYU-DBa14MSI.js} +1 -1
  41. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-NgHc6V37.js → chunk-JWPE2WC7-DkP-pEox.js} +1 -1
  42. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-DQ_T-hg8.js → chunk-KBJHAD2P-lgPogpcX.js} +1 -1
  43. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-DgLsxcVP.js → chunk-RYQCIY6F-D-apZer0.js} +1 -1
  44. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-UrVoM9z1.js → chunk-XXDRQBXY-B1T2yAIe.js} +1 -1
  45. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-IjoI3dqU.js +1 -0
  46. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-IjoI3dqU.js +1 -0
  47. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CLkYvTb3.js → cose-bilkent-JH36ORCC-0P6hi3jF.js} +1 -1
  48. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BwT_xKrE.js → cynefin-VYW2F7L2-CntzMSR8.js} +1 -1
  49. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-Bi9tuzif.js → cynefinDiagram-MW4NZA55-C9zmXJtG.js} +1 -1
  50. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-BCIqkWBV.js → dagre-VZM6K2ZE-DfBCZqZw.js} +1 -1
  51. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Dip6l9_Z.js → diagram-7IWD3JNH-DLp-bhGL.js} +1 -1
  52. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-B-xkh_wK.js → diagram-B4RE2ZJO-BksDcwZm.js} +1 -1
  53. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-DZO0kTt_.js → diagram-LBJQPF4R-Bdag7DYP.js} +1 -1
  54. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-D6ZplNbZ.js → diagram-Q27KOJAE-CoY5uNbk.js} +1 -1
  55. package/dist/worker/console/static/assets/{diagram-UB23O5K3-BPekbhoS.js → diagram-UB23O5K3-KcgrDXHt.js} +1 -1
  56. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-BtmaJpK5.js → ebnfDiagram-BXEA7PRR-CikErwJb.js} +1 -1
  57. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-6DS0Xc44.js → erDiagram-JOGREHBK-DqmwwzvZ.js} +1 -1
  58. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-CihnROSm.js → flowDiagram-UKHOOZJN-35krh9WG.js} +1 -1
  59. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-CZC4zOE2.js → ganttDiagram-PKOTCBZU-CvTF1gJ4.js} +1 -1
  60. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Dq1fhzGN.js → gitGraphDiagram-DS77QQ5N-BiOWWClJ.js} +1 -1
  61. package/dist/worker/console/static/assets/{index-DTZOKgAn.js → index-CqWlWE4l.js} +3 -3
  62. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DlSl4BGx.js → infoDiagram-6WML65LV-Crha5dcA.js} +1 -1
  63. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-snnzFl_U.js → ishikawaDiagram-WSZJBQD7-DEtbscOZ.js} +1 -1
  64. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-BDE7qpMx.js → journeyDiagram-NVQOT4AX-D2YYzx3z.js} +1 -1
  65. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-CD2Ci04G.js → kanban-definition-27J2QSJJ-C7x18ttQ.js} +1 -1
  66. package/dist/worker/console/static/assets/{linear-DdnapKIH.js → linear-CCLZkz45.js} +1 -1
  67. package/dist/worker/console/static/assets/{mermaid.core-BVjAT9b8.js → mermaid.core-Dmy4lSGv.js} +5 -5
  68. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-D0yJk-zA.js → mindmap-definition-FAOFIHXS-CmvIol59.js} +1 -1
  69. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-BVo9tFP-.js → pegDiagram-VL7TDLO6-DVpEdirN.js} +1 -1
  70. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-DnOV-mZ_.js → pieDiagram-7S7Q4E2Y-cKQy456v.js} +1 -1
  71. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CzUJo58i.js → quadrantDiagram-CIZ2JOQS-bx06I38m.js} +1 -1
  72. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-Bvikrolh.js → railroadDiagram-AXF67PYL-BjfIVIJr.js} +1 -1
  73. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-DtaSVCap.js → requirementDiagram-LRYGKXZP-DcuPGbKM.js} +1 -1
  74. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-C2c9A0wW.js → sankeyDiagram-W5VNT64P-DvgVeDoV.js} +1 -1
  75. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-DmXJcU7r.js → sequenceDiagram-SI44F4Z6-DLBG9nm-.js} +1 -1
  76. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-B4GUFW92.js → sizeCapture-X5ZJPWSS-D33L7FBF.js} +1 -1
  77. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-Dsad2MXf.js → stateDiagram-OKZ733FA-hvqD9TpS.js} +1 -1
  78. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-C6MII0D1.js +1 -0
  79. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-DGq48Fbi.js → swimlanes-SLNWSIFB-BtjH81Mz.js} +2 -2
  80. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D_tk0V8D.js +8 -0
  81. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-CSSi6OFf.js → timeline-definition-Z64GVDOM-CJ47Kraf.js} +1 -1
  82. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-BqyzPrWv.js → vennDiagram-T6HMQDX7-COVPl-wh.js} +1 -1
  83. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DlznVb6S.js → wardleyDiagram-T6FBY63Y-CCoQJLUY.js} +1 -1
  84. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CfBcgJ_K.js → xychartDiagram-ELKLHX3M-DTWJvfAd.js} +1 -1
  85. package/dist/worker/console/static/index.html +1 -1
  86. package/dist/worker/console/static-src/operator-chat/mutation-gate.js +1 -1
  87. package/dist/worker/observe/node-input.js +72 -3
  88. package/dist/worker/observe/static/dag-history-labels.js +4 -0
  89. package/dist/worker/observe/static/views/dag-inspector.js +54 -1
  90. package/dist/worker/observe/static/views/session-timeline.js +60 -4
  91. package/dist/workflows/dag/contract-output-registry.js +15 -0
  92. package/dist/workflows/dag/failure-category.js +5 -0
  93. package/dist/workflows/dag/frontend-implementation-contract.js +145 -40
  94. package/dist/workflows/dag/frontend-prewrite-gate.js +87 -135
  95. package/dist/workflows/dag/init-hybrid.js +71 -80
  96. package/dist/workflows/dag/node-execution.js +139 -10
  97. package/dist/workflows/dag/prompt.js +15 -1
  98. package/dist/workflows/dag/retry-policy.js +91 -0
  99. package/dist/workflows/dag/structured-output-repair.js +712 -0
  100. package/dist/workflows/dag/types.js +28 -1
  101. package/dist/workflows/dag/validate.js +39 -1
  102. package/docs/init-surface.manifest.json +5 -0
  103. package/docs/operations/README.md +1 -1
  104. package/docs/templates/agent-dag.schema.json +13 -0
  105. package/docs/templates/init-managed-agents.md +13 -3
  106. package/package.json +5 -1
  107. package/scripts/next-info.mjs +356 -0
  108. package/scripts/next-publish-gate.mjs +238 -0
  109. package/scripts/release-source-binding.mjs +251 -0
  110. package/skills/loop-agent/references/command-reference.md +11 -4
  111. package/dist/worker/console/static/assets/channel-CPF4N7pf.js +0 -1
  112. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C2DwA_Y1.js +0 -1
  113. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C2DwA_Y1.js +0 -1
  114. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-B8FB_cNk.js +0 -1
  115. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CrZYaWfx.js +0 -8
@@ -302,7 +302,7 @@ l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
302
302
  https://github.com/highlightjs/highlight.js/issues/2277`),kn=Re,Gt=Xe),kt===void 0&&(kt=!0);const Qn={code:Gt,language:kn};Oi("before:highlight",Qn);const kr=Qn.result?Qn.result:bn(Qn.language,Qn.code,kt);return kr.code=Qn.code,Oi("after:highlight",kr),kr}function bn(Re,Xe,kt,Gt){const kn=Object.create(null);function Qn(Le,Ge){return Le.keywords[Ge]}function kr(){if(!it.keywords){An.addText(Kt);return}let Le=0;it.keywordPatternRe.lastIndex=0;let Ge=it.keywordPatternRe.exec(Kt),ht="";for(;Ge;){ht+=Kt.substring(Le,Ge.index);const It=$n.case_insensitive?Ge[0].toLowerCase():Ge[0],hn=Qn(it,It);if(hn){const[qr,yl]=hn;if(An.addText(ht),ht="",kn[It]=(kn[It]||0)+1,kn[It]<=xt&&(Xa+=yl),qr.startsWith("_"))ht+=Ge[0];else{const Fo=$n.classNameAliases[qr]||qr;Er(Ge[0],Fo)}}else ht+=Ge[0];Le=it.keywordPatternRe.lastIndex,Ge=it.keywordPatternRe.exec(Kt)}ht+=Kt.substring(Le),An.addText(ht)}function fr(){if(Kt==="")return;let Le=null;if(typeof it.subLanguage=="string"){if(!xe[it.subLanguage]){An.addText(Kt);return}Le=bn(it.subLanguage,Kt,!0,Ho[it.subLanguage]),Ho[it.subLanguage]=Le._top}else Le=dr(Kt,it.subLanguage.length?it.subLanguage:null);it.relevance>0&&(Xa+=Le.relevance),An.__addSublanguage(Le._emitter,Le.language)}function ln(){it.subLanguage!=null?fr():kr(),Kt=""}function Er(Le,Ge){Le!==""&&(An.startScope(Ge),An.addText(Le),An.endScope())}function qo(Le,Ge){let ht=1;const It=Ge.length-1;for(;ht<=It;){if(!Le._emit[ht]){ht++;continue}const hn=$n.classNameAliases[Le[ht]]||Le[ht],qr=Ge[ht];hn?Er(qr,hn):(Kt=qr,kr(),Kt=""),ht++}}function ms(Le,Ge){return Le.scope&&typeof Le.scope=="string"&&An.openNode($n.classNameAliases[Le.scope]||Le.scope),Le.beginScope&&(Le.beginScope._wrap?(Er(Kt,$n.classNameAliases[Le.beginScope._wrap]||Le.beginScope._wrap),Kt=""):Le.beginScope._multi&&(qo(Le.beginScope,Ge),Kt="")),it=Object.create(Le,{parent:{value:it}}),it}function gl(Le,Ge,ht){let It=O(Le.endRe,ht);if(It){if(Le["on:end"]){const hn=new t(Le);Le["on:end"](Ge,hn),hn.isMatchIgnored&&(It=!1)}if(It){for(;Le.endsParent&&Le.parent;)Le=Le.parent;return Le}}if(Le.endsWithParent)return gl(Le.parent,Ge,ht)}function hs(Le){return it.matcher.regexIndex===0?(Kt+=Le[0],1):(Za=!0,0)}function u0(Le){const Ge=Le[0],ht=Le.rule,It=new t(ht),hn=[ht.__beforeBegin,ht["on:begin"]];for(const qr of hn)if(qr&&(qr(Le,It),It.isMatchIgnored))return hs(Ge);return ht.skip?Kt+=Ge:(ht.excludeBegin&&(Kt+=Ge),ln(),!ht.returnBegin&&!ht.excludeBegin&&(Kt=Ge)),ms(ht,Le),ht.returnBegin?0:Ge.length}function mr(Le){const Ge=Le[0],ht=Xe.substring(Le.index),It=gl(it,Le,ht);if(!It)return Ve;const hn=it;it.endScope&&it.endScope._wrap?(ln(),Er(Ge,it.endScope._wrap)):it.endScope&&it.endScope._multi?(ln(),qo(it.endScope,Le)):hn.skip?Kt+=Ge:(hn.returnEnd||hn.excludeEnd||(Kt+=Ge),ln(),hn.excludeEnd&&(Kt=Ge));do it.scope&&An.closeNode(),!it.skip&&!it.subLanguage&&(Xa+=it.relevance),it=it.parent;while(it!==It.parent);return It.starts&&ms(It.starts,Le),hn.returnEnd?0:Ge.length}function bl(){const Le=[];for(let Ge=it;Ge!==$n;Ge=Ge.parent)Ge.scope&&Le.unshift(Ge.scope);Le.forEach(Ge=>An.openNode(Ge))}let Di={};function ps(Le,Ge){const ht=Ge&&Ge[0];if(Kt+=Le,ht==null)return ln(),0;if(Di.type==="begin"&&Ge.type==="end"&&Di.index===Ge.index&&ht===""){if(Kt+=Xe.slice(Ge.index,Ge.index+1),!gt){const It=new Error(`0 width match regex (${Re})`);throw It.languageName=Re,It.badRule=Di.rule,It}return 1}if(Di=Ge,Ge.type==="begin")return u0(Ge);if(Ge.type==="illegal"&&!kt){const It=new Error('Illegal lexeme "'+ht+'" for mode "'+(it.scope||"<unnamed>")+'"');throw It.mode=it,It}else if(Ge.type==="end"){const It=mr(Ge);if(It!==Ve)return It}if(Ge.type==="illegal"&&ht==="")return Ge.index===Xe.length||(Kt+=`
303
303
  `),1;if(vl>1e5&&vl>Ge.index*3)throw new Error("potential infinite loop, way more iterations than matches");return Kt+=ht,ht.length}const $n=ar(Re);if(!$n)throw Fe(ue.replace("{}",Re)),new Error('Unknown language: "'+Re+'"');const Uo=Pt($n);let gs="",it=Gt||Uo;const Ho={},An=new Oe.__emitter(Oe);bl();let Kt="",Xa=0,va=0,vl=0,Za=!1;try{if($n.__emitTokens)$n.__emitTokens(Xe,An);else{for(it.matcher.considerAll();;){vl++,Za?Za=!1:it.matcher.considerAll(),it.matcher.lastIndex=va;const Le=it.matcher.exec(Xe);if(!Le)break;const Ge=Xe.substring(va,Le.index),ht=ps(Ge,Le);va=Le.index+ht}ps(Xe.substring(va))}return An.finalize(),gs=An.toHTML(),{language:Re,value:gs,relevance:Xa,illegal:!1,_emitter:An,_top:it}}catch(Le){if(Le.message&&Le.message.includes("Illegal"))return{language:Re,value:Sn(Xe),illegal:!0,relevance:0,_illegalBy:{message:Le.message,index:va,context:Xe.slice(va-100,va+100),mode:Le.mode,resultSoFar:gs},_emitter:An};if(gt)return{language:Re,value:Sn(Xe),illegal:!1,relevance:0,errorRaised:Le,_emitter:An,_top:it};throw Le}}function Zn(Re){const Xe={value:Sn(Re),illegal:!1,relevance:0,_top:Ee,_emitter:new Oe.__emitter(Oe)};return Xe._emitter.addText(Re),Xe}function dr(Re,Xe){Xe=Xe||Oe.languages||Object.keys(xe);const kt=Zn(Re),Gt=Xe.filter(ar).filter(Va).map(ln=>bn(ln,Re,!1));Gt.unshift(kt);const kn=Gt.sort((ln,Er)=>{if(ln.relevance!==Er.relevance)return Er.relevance-ln.relevance;if(ln.language&&Er.language){if(ar(ln.language).supersetOf===Er.language)return 1;if(ar(Er.language).supersetOf===ln.language)return-1}return 0}),[Qn,kr]=kn,fr=Qn;return fr.secondBest=kr,fr}function Cn(Re,Xe,kt){const Gt=Xe&&je[Xe]||kt;Re.classList.add("hljs"),Re.classList.add(`language-${Gt}`)}function sn(Re){let Xe=null;const kt=jt(Re);if(Ue(kt))return;if(Oi("before:highlightElement",{el:Re,language:kt}),Re.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",Re);return}if(Re.children.length>0&&(Oe.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(Re)),Oe.throwUnescapedHTML))throw new Xn("One of your code blocks includes unescaped HTML.",Re.innerHTML);Xe=Re;const Gt=Xe.textContent,kn=kt?_t(Gt,{language:kt,ignoreIllegals:!0}):dr(Gt);Re.innerHTML=kn.value,Re.dataset.highlighted="yes",Cn(Re,kt,kn.language),Re.result={language:kn.language,re:kn.relevance,relevance:kn.relevance},kn.secondBest&&(Re.secondBest={language:kn.secondBest.language,relevance:kn.secondBest.relevance}),Oi("after:highlightElement",{el:Re,result:kn,text:Gt})}function Wn(Re){Oe=st(Oe,Re)}const Ka=()=>{fs(),he("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function hl(){fs(),he("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Lo=!1;function fs(){function Re(){fs()}if(document.readyState==="loading"){Lo||window.addEventListener("DOMContentLoaded",Re,!1),Lo=!0;return}document.querySelectorAll(Oe.cssSelector).forEach(sn)}function zo(Re,Xe){let kt=null;try{kt=Xe(Z)}catch(Gt){if(Fe("Language definition for '{}' could not be registered.".replace("{}",Re)),gt)Fe(Gt);else throw Gt;kt=Ee}kt.name||(kt.name=Re),xe[Re]=kt,kt.rawDefinition=Xe.bind(null,Z),kt.aliases&&ga(kt.aliases,{languageName:Re})}function Mi(Re){delete xe[Re];for(const Xe of Object.keys(je))je[Xe]===Re&&delete je[Xe]}function pl(){return Object.keys(xe)}function ar(Re){return Re=(Re||"").toLowerCase(),xe[Re]||xe[je[Re]]}function ga(Re,{languageName:Xe}){typeof Re=="string"&&(Re=[Re]),Re.forEach(kt=>{je[kt.toLowerCase()]=Xe})}function Va(Re){const Xe=ar(Re);return Xe&&!Xe.disableAutodetect}function Ya(Re){Re["before:highlightBlock"]&&!Re["before:highlightElement"]&&(Re["before:highlightElement"]=Xe=>{Re["before:highlightBlock"](Object.assign({block:Xe.el},Xe))}),Re["after:highlightBlock"]&&!Re["after:highlightElement"]&&(Re["after:highlightElement"]=Xe=>{Re["after:highlightBlock"](Object.assign({block:Xe.el},Xe))})}function Rn(Re){Ya(Re),et.push(Re)}function Bo(Re){const Xe=et.indexOf(Re);Xe!==-1&&et.splice(Xe,1)}function Oi(Re,Xe){const kt=Re;et.forEach(function(Gt){Gt[kt]&&Gt[kt](Xe)})}function ba(Re){return he("10.7.0","highlightBlock will be removed entirely in v12.0"),he("10.7.0","Please use highlightElement now."),sn(Re)}Object.assign(Z,{highlight:_t,highlightAuto:dr,highlightAll:fs,highlightElement:sn,highlightBlock:ba,configure:Wn,initHighlighting:Ka,initHighlightingOnLoad:hl,registerLanguage:zo,unregisterLanguage:Mi,listLanguages:pl,getLanguage:ar,registerAliases:ga,autoDetection:Va,inherit:st,addPlugin:Rn,removePlugin:Bo}),Z.debugMode=function(){gt=!1},Z.safeMode=function(){gt=!0},Z.versionString=yt,Z.regex={concat:N,lookahead:x,either:C,optional:E,anyNumberOfTimes:y};for(const Re in ze)typeof ze[Re]=="object"&&e(ze[Re]);return Object.assign(Z,ze),Z},Wt=Dt({});return Wt.newInstance=()=>Dt({}),tm=Wt,Wt.HighlightJS=Wt,Wt.default=Wt,tm}var nm,hy;function LA(){if(hy)return nm;hy=1;function e(t){const n=t.regex,a=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s=/[\p{L}0-9._:-]+/u,l={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},d=t.inherit(c,{begin:/\(/,end:/\)/}),m=t.inherit(t.APOS_STRING_MODE,{className:"string"}),h=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),p={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:s,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[l]},{begin:/'/,end:/'/,contains:[l]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[c,h,m,d,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[c,d,h,m]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},l,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[h]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[p],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[p],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(/</,n.lookahead(n.concat(a,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:p}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}return nm=e,nm}var rm,py;function zA(){if(py)return rm;py=1;function e(t){const n=t.regex,a={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[a]}]};Object.assign(a,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});const l={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},c=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),d={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},m={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,a,l]};l.contains.push(m);const h={match:/\\"/},p={className:"string",begin:/'/,end:/'/},b={match:/\\'/},x={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,a]},y=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],E=t.SHEBANG({binary:`(${y.join("|")})`,relevance:10}),N={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},R=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],C=["true","false"],I={match:/(\/[a-z._-]+)+/},O=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],X=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],q=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],A=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:R,literal:C,built_in:[...O,...X,"set","shopt",...q,...A]},contains:[E,t.SHEBANG(),N,x,c,d,I,m,h,p,b,a]}}return rm=e,rm}var am,gy;function BA(){if(gy)return am;gy=1;function e(t){const n=t.regex,a=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",d="("+s+"|"+n.optional(l)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",m={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},p={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},b={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},x={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(p,{className:"string"}),{className:"string",begin:/<.*?>/},a,t.C_BLOCK_COMMENT_MODE]},y={className:"title",begin:n.optional(l)+t.IDENT_RE,relevance:0},E=n.optional(l)+t.IDENT_RE+"\\s*\\(",C={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},I=[x,m,a,t.C_BLOCK_COMMENT_MODE,b,p],O={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:C,contains:I.concat([{begin:/\(/,end:/\)/,keywords:C,contains:I.concat(["self"]),relevance:0}]),relevance:0},X={begin:"("+d+"[\\*&\\s]+)+"+E,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:C,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:C,relevance:0},{begin:E,returnBegin:!0,contains:[t.inherit(y,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:C,relevance:0,contains:[a,t.C_BLOCK_COMMENT_MODE,p,b,m,{begin:/\(/,end:/\)/,keywords:C,relevance:0,contains:["self",a,t.C_BLOCK_COMMENT_MODE,p,b,m]}]},m,a,t.C_BLOCK_COMMENT_MODE,x]};return{name:"C",aliases:["h"],keywords:C,disableAutodetect:!0,illegal:"</",contains:[].concat(O,X,I,[x,{begin:t.IDENT_RE+"::",keywords:C},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:x,strings:p,keywords:C}}}return am=e,am}var im,by;function qA(){if(by)return im;by=1;function e(t){const n=t.regex,a=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="decltype\\(auto\\)",l="[a-zA-Z_]\\w*::",d="(?!struct)("+s+"|"+n.optional(l)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",m={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},p={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},b={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},x={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(p,{className:"string"}),{className:"string",begin:/<.*?>/},a,t.C_BLOCK_COMMENT_MODE]},y={className:"title",begin:n.optional(l)+t.IDENT_RE,relevance:0},E=n.optional(l)+t.IDENT_RE+"\\s*\\(",N=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],R=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],C=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],I=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],q={type:R,keyword:N,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:C},A={className:"function.dispatch",relevance:0,keywords:{_hint:I},begin:n.concat(/\b/,`(?!${N.join("|")})`,t.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},F=[A,x,m,a,t.C_BLOCK_COMMENT_MODE,b,p],J={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:q,contains:F.concat([{begin:/\(/,end:/\)/,keywords:q,contains:F.concat(["self"]),relevance:0}]),relevance:0},W={className:"function",begin:"("+d+"[\\*&\\s]+)+"+E,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:q,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:s,keywords:q,relevance:0},{begin:E,returnBegin:!0,contains:[y],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[p,b]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:q,relevance:0,contains:[a,t.C_BLOCK_COMMENT_MODE,p,b,m,{begin:/\(/,end:/\)/,keywords:q,relevance:0,contains:["self",a,t.C_BLOCK_COMMENT_MODE,p,b,m]}]},m,a,t.C_BLOCK_COMMENT_MODE,x]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:q,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(J,W,A,F,[x,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:q,contains:["self",m]},{begin:t.IDENT_RE+"::",keywords:q},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}return im=e,im}var sm,vy;function UA(){if(vy)return sm;vy=1;function e(t){const n=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],a=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],s=["default","false","null","true"],l=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],c=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],d={keyword:l.concat(c),built_in:n,literal:s},m=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),h={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9'_]+|(\\b[\\d'_]+(\\.[\\d'_]*)?|\\.[\\d'_]+)([eE][-+]?[\\d'_]+)?)"}],relevance:0},p={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},b={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},x=t.inherit(b,{illegal:/\n/}),y={className:"subst",begin:/\{/,end:/\}/,keywords:d},E=t.inherit(y,{illegal:/\n/}),N={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,E]},R={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},y]},C=t.inherit(R,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},E]});y.contains=[R,N,b,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,t.C_BLOCK_COMMENT_MODE],E.contains=[C,N,x,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,h,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const I={variants:[p,R,N,b,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},O={begin:"<",end:">",contains:[{beginKeywords:"in out"},m]},X=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",q={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:d,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},I,h,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},m,O,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[m,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[m,O,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+X+"\\s+)+"+t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:d,contains:[{beginKeywords:a.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,O],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:d,relevance:0,contains:[I,h,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},q]}}return sm=e,sm}var lm,yy;function HA(){if(yy)return lm;yy=1;const e=h=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:h.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:h.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],a=[...t,...n],s=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),l=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),c=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),d=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function m(h){const p=h.regex,b=e(h),x={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},y="and or not only",E=/@-?\w[\w]*(-\w+)*/,N="[a-zA-Z-][a-zA-Z0-9_-]*",R=[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[b.BLOCK_COMMENT,x,b.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+N,relevance:0},b.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+l.join("|")+")"},{begin:":(:)?("+c.join("|")+")"}]},b.CSS_VARIABLE,{className:"attribute",begin:"\\b("+d.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[b.BLOCK_COMMENT,b.HEXCOLOR,b.IMPORTANT,b.CSS_NUMBER_MODE,b.UNICODE_RANGE,...R,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...R,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},b.FUNCTION_DISPATCH]},{begin:p.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:E},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:y,attribute:s.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...R,b.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+a.join("|")+")\\b"}]}}return lm=m,lm}var om,xy;function FA(){if(xy)return om;xy=1;function e(t){const n=t.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},s={begin:"^[-\\*]{3,}",end:"$"},l={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},d={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},m=/[A-Za-z][A-Za-z0-9+.-]*/,h={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,m,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},p={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},x=t.inherit(p,{contains:[]}),y=t.inherit(b,{contains:[]});p.contains.push(y),b.contains.push(x);let E=[a,h];return[p,b,x,y].forEach(I=>{I.contains=I.contains.concat(E)}),E=E.concat(p,b),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:E},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:E}]}]},a,c,p,b,{className:"quote",begin:"^>\\s+",contains:E,end:"$"},l,s,h,d,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}return om=e,om}var cm,wy;function PA(){if(wy)return cm;wy=1;function e(t){const n=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}return cm=e,cm}var um,Sy;function $A(){if(Sy)return um;Sy=1;function e(t){const n=t.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),l=n.concat(s,/(::\w+)*/),d={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},m={className:"doctag",begin:"@[A-Za-z]+"},h={begin:"#<",end:">"},p=[t.COMMENT("#","$",{contains:[m]}),t.COMMENT("^=begin","^=end",{contains:[m],relevance:10}),t.COMMENT("^__END__",t.MATCH_NOTHING_RE)],b={className:"subst",begin:/#\{/,end:/\}/,keywords:d},x={className:"string",contains:[t.BACKSLASH_ESCAPE,b],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,b]})]}]},y="[1-9](_?[0-9])*|0",E="[0-9](_?[0-9])*",N={className:"number",relevance:0,variants:[{begin:`\\b(${y})(\\.(${E}))?([eE][+-]?(${E})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},R={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:d}]},F=[x,{variants:[{match:[/class\s+/,l,/\s+<\s+/,l]},{match:[/\b(class|module)\s+/,l]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:d},{match:[/(include|extend)\s+/,l],scope:{2:"title.class"},keywords:d},{relevance:0,match:[l,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:s,scope:"title.class"},{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[R]},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[x,{begin:a}],relevance:0},N,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:d},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,b],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(h,p),relevance:0}].concat(h,p);b.contains=F,R.contains=F;const U=[{begin:/^\s*=>/,starts:{end:"$",contains:F}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:d,contains:F}}];return p.unshift(h),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:d,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(U).concat(p).concat(F)}}return um=e,um}var dm,ky;function GA(){if(ky)return dm;ky=1;function e(t){const c={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:c,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:c,illegal:/["']/}]}]}}return dm=e,dm}var fm,Ey;function KA(){if(Ey)return fm;Ey=1;function e(t){const n=t.regex,a=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:n.concat(a,n.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}return fm=e,fm}var mm,Ty;function VA(){if(Ty)return mm;Ty=1;function e(t){const n=t.regex,a={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:t.NUMBER_RE}]},s=t.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const l={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},c={className:"literal",begin:/\bon|off|true|false|yes|no\b/},d={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},m={begin:/\[/,end:/\]/,contains:[s,c,l,d,a,"self"],relevance:0},h=/[A-Za-z0-9_-]+/,p=/"(\\"|[^"])*"/,b=/'[^']*'/,x=n.either(h,p,b),y=n.concat(x,"(\\s*\\.\\s*",x,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{begin:y,className:"attr",starts:{end:/$/,contains:[s,m,c,l,d,a]}}]}}return mm=e,mm}var hm,Ny;function YA(){if(Ny)return hm;Ny=1;var e="[0-9](_*[0-9])*",t=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={className:"number",variants:[{begin:`(\\b(${e})((${t})|\\.)?|(${t}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${t})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${t})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function s(c,d,m){return m===-1?"":c.replace(d,h=>s(c,d,m-1))}function l(c){const d=c.regex,m="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",h=m+s("(?:<"+m+"~~~(?:\\s*,\\s*"+m+"~~~)*>)?",/~~~/g,2),E={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},N={className:"meta",begin:"@"+m,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},R={className:"params",begin:/\(/,end:/\)/,keywords:E,relevance:0,contains:[c.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:E,illegal:/<\/|#/,contains:[c.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[c.BACKSLASH_ESCAPE]},c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,m],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[d.concat(/(?!else)/,m),/\s+/,m,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,m],className:{1:"keyword",3:"title.class"},contains:[R,c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+h+"\\s+)",c.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:E,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:E,relevance:0,contains:[N,c.APOS_STRING_MODE,c.QUOTE_STRING_MODE,a,c.C_BLOCK_COMMENT_MODE]},c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE]},a,N]}}return hm=l,hm}var pm,Cy;function XA(){if(Cy)return pm;Cy=1;const e="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],n=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],l=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],d=[].concat(l,a,s);function m(h){const p=h.regex,b=(ae,{after:we})=>{const ge="</"+ae[0].slice(1);return ae.input.indexOf(ge,we)!==-1},x=e,y={begin:"<>",end:"</>"},E=/<[A-Za-z0-9\\._:-]+\s*\/>/,N={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(ae,we)=>{const ge=ae[0].length+ae.index,ze=ae.input[ge];if(ze==="<"||ze===","){we.ignoreMatch();return}ze===">"&&(b(ae,{after:ge})||we.ignoreMatch());let Me;const Se=ae.input.substring(ge);if(Me=Se.match(/^\s*=/)){we.ignoreMatch();return}if((Me=Se.match(/^\s+extends\s+/))&&Me.index===0){we.ignoreMatch();return}}},R={$pattern:e,keyword:t,literal:n,built_in:d,"variable.language":c},C="[0-9](_?[0-9])*",I=`\\.(${C})`,O="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",X={className:"number",variants:[{begin:`(\\b(${O})((${I})|\\.)?|(${I}))[eE][+-]?(${C})\\b`},{begin:`\\b(${O})\\b((${I})\\b|\\.)?|(${I})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},q={className:"subst",begin:"\\$\\{",end:"\\}",keywords:R,contains:[]},A={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[h.BACKSLASH_ESCAPE,q],subLanguage:"xml"}},F={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[h.BACKSLASH_ESCAPE,q],subLanguage:"css"}},J={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[h.BACKSLASH_ESCAPE,q],subLanguage:"graphql"}},W={className:"string",begin:"`",end:"`",contains:[h.BACKSLASH_ESCAPE,q]},U={className:"comment",variants:[h.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:x+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),h.C_BLOCK_COMMENT_MODE,h.C_LINE_COMMENT_MODE]},H=[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE,A,F,J,W,{match:/\$\d+/},X];q.contains=H.concat({begin:/\{/,end:/\}/,keywords:R,contains:["self"].concat(H)});const te=[].concat(U,q.contains),G=te.concat([{begin:/(\s*)\(/,end:/\)/,keywords:R,contains:["self"].concat(te)}]),K={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:R,contains:G},$={variants:[{match:[/class/,/\s+/,x,/\s+/,/extends/,/\s+/,p.concat(x,"(",p.concat(/\./,x),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,x],scope:{1:"keyword",3:"title.class"}}]},ee={relevance:0,match:p.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...s]}},oe={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ce={variants:[{match:[/function/,/\s+/,x,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[K],illegal:/%/},j={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function D(ae){return p.concat("(?!",ae.join("|"),")")}const P={match:p.concat(/\b/,D([...l,"super","import","await"].map(ae=>`${ae}\\s*\\(`)),x,p.lookahead(/\s*\(/)),className:"title.function",relevance:0},_={begin:p.concat(/\./,p.lookahead(p.concat(x,/(?![0-9A-Za-z$_(])/))),end:x,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ne={match:[/get|set/,/\s+/,x,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},K]},de="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+h.UNDERSCORE_IDENT_RE+")\\s*=>",se={match:[/const|var|let/,/\s+/,x,/\s*/,/=\s*/,/(async\s*)?/,p.lookahead(de)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[K]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:R,exports:{PARAMS_CONTAINS:G,CLASS_REFERENCE:ee},illegal:/#(?![$_A-Za-z])/,contains:[h.SHEBANG({label:"shebang",binary:"node",relevance:5}),oe,h.APOS_STRING_MODE,h.QUOTE_STRING_MODE,A,F,J,W,U,{match:/\$\d+/},X,ee,{scope:"attr",match:x+p.lookahead(":"),relevance:0},se,{begin:"("+h.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[U,h.REGEXP_MODE,{className:"function",begin:de,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:h.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:R,contains:G}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:y.begin,end:y.end},{match:E},{begin:N.begin,"on:begin":N.isTrulyOpeningTag,end:N.end}],subLanguage:"xml",contains:[{begin:N.begin,end:N.end,skip:!0,contains:["self"]}]}]},ce,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+h.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[K,h.inherit(h.TITLE_MODE,{begin:x,className:"title.function"})]},{match:/\.\.\./,relevance:0},_,{match:"\\$"+x,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[K]},P,j,$,ne,{match:/\$[(.]/}]}}return pm=m,pm}var gm,Ry;function ZA(){if(Ry)return gm;Ry=1;const t={scope:"number",match:"([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",relevance:0};function n(a){const s={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},l={match:/[{}[\],:]/,className:"punctuation",relevance:0},c=["true","false","null"],d={scope:"literal",beginKeywords:c.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:c},contains:[s,l,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,d,t,a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}return gm=n,gm}var bm,Ay;function WA(){if(Ay)return bm;Ay=1;var e="[0-9](_*[0-9])*",t=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={className:"number",variants:[{begin:`(\\b(${e})((${t})|\\.)?|(${t}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${t})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${t})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function s(l){const c={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},d={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},m={className:"symbol",begin:l.UNDERSCORE_IDENT_RE+"@"},h={className:"subst",begin:/\$\{/,end:/\}/,contains:[l.C_NUMBER_MODE]},p={className:"variable",begin:"\\$"+l.UNDERSCORE_IDENT_RE},b={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[p,h]},{begin:"'",end:"'",illegal:/\n/,contains:[l.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[l.BACKSLASH_ESCAPE,p,h]}]};h.contains.push(b);const x={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+l.UNDERSCORE_IDENT_RE+")?"},y={className:"meta",begin:"@"+l.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[l.inherit(b,{className:"string"}),"self"]}]},E=a,N=l.COMMENT("/\\*","\\*/",{contains:[l.C_BLOCK_COMMENT_MODE]}),R={variants:[{className:"type",begin:l.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},C=R;return C.variants[1].contains=[R],R.variants[1].contains=[C],{name:"Kotlin",aliases:["kt","kts"],keywords:c,contains:[l.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),l.C_LINE_COMMENT_MODE,N,d,m,x,y,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:c,relevance:5,contains:[{begin:l.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[l.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:c,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[R,l.C_LINE_COMMENT_MODE,N],relevance:0},l.C_LINE_COMMENT_MODE,N,x,y,b,l.C_NUMBER_MODE]},N]},{begin:[/class|interface|trait/,/\s+/,l.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},l.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},x,y]},b,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
304
304
  `},E]}}return bm=s,bm}var vm,_y;function QA(){if(_y)return vm;_y=1;const e=p=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:p.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[p.APOS_STRING_MODE,p.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:p.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],a=[...t,...n],s=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),l=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),c=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),d=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),m=l.concat(c).sort().reverse();function h(p){const b=e(p),x=m,y="and or not only",E="[\\w-]+",N="("+E+"|@\\{"+E+"\\})",R=[],C=[],I=function(te){return{className:"string",begin:"~?"+te+".*?"+te}},O=function(te,G,K){return{className:te,begin:G,relevance:K}},X={$pattern:/[a-z-]+/,keyword:y,attribute:s.join(" ")},q={begin:"\\(",end:"\\)",contains:C,keywords:X,relevance:0};C.push(p.C_LINE_COMMENT_MODE,p.C_BLOCK_COMMENT_MODE,I("'"),I('"'),b.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},b.UNICODE_RANGE,b.HEXCOLOR,q,O("variable","@@?"+E,10),O("variable","@\\{"+E+"\\}"),O("built_in","~?`[^`]*?`"),{className:"attribute",begin:E+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},b.IMPORTANT,{beginKeywords:"and not"},b.FUNCTION_DISPATCH);const A=C.concat({begin:/\{/,end:/\}/,contains:R}),F={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(C)},J={begin:N+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},b.CSS_VARIABLE,{className:"attribute",begin:"\\b("+d.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:C}}]},W={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:X,returnEnd:!0,contains:C,relevance:0}},z={className:"variable",variants:[{begin:"@"+E+"\\s*:",relevance:15},{begin:"@"+E}],starts:{end:"[;}]",returnEnd:!0,contains:A}},U={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:N,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[p.C_LINE_COMMENT_MODE,p.C_BLOCK_COMMENT_MODE,F,O("keyword","all\\b"),O("variable","@\\{"+E+"\\}"),{begin:"\\b("+a.join("|")+")\\b",className:"selector-tag"},b.CSS_NUMBER_MODE,O("selector-tag",N,0),O("selector-id","#"+N),O("selector-class","\\."+N,0),O("selector-tag","&",0),b.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+l.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+c.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:A},{begin:"!important"},b.FUNCTION_DISPATCH]},H={begin:E+`:(:)?(${x.join("|")})`,returnBegin:!0,contains:[U]};return R.push(p.C_LINE_COMMENT_MODE,p.C_BLOCK_COMMENT_MODE,W,z,H,J,U,F,b.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:R}}return vm=h,vm}var ym,Iy;function JA(){if(Iy)return ym;Iy=1;function e(t){const n="\\[=*\\[",a="\\]=*\\]",s={begin:n,end:a,contains:["self"]},l=[t.COMMENT("--(?!"+n+")","$"),t.COMMENT("--"+n,a,{contains:[s],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:t.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:l.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:l}].concat(l)},t.C_NUMBER_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:n,end:a,contains:[s],relevance:5}])}}return ym=e,ym}var xm,My;function e_(){if(My)return xm;My=1;function e(t){const n={className:"variable",variants:[{begin:"\\$\\("+t.UNDERSCORE_IDENT_RE+"\\)",contains:[t.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},a={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n]},s={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[n,a]},l={begin:"^"+t.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},c={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},d={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[t.HASH_COMMENT_MODE,n,a,s,l,c,d]}}return xm=e,xm}var wm,Oy;function t_(){if(Oy)return wm;Oy=1;function e(t){const n=t.regex,a=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],s=/[dualxmsipngr]{0,12}/,l={$pattern:/[\w.]+/,keyword:a.join(" ")},c={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:l},d={begin:/->\{/,end:/\}/},m={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},h={scope:"variable",variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[m]},p={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},b=[t.BACKSLASH_ESCAPE,c,h],x=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],y=(R,C,I="\\1")=>{const O=I==="\\1"?I:n.concat(I,C);return n.concat(n.concat("(?:",R,")"),C,/(?:\\.|[^\\\/])*?/,O,/(?:\\.|[^\\\/])*?/,I,s)},E=(R,C,I)=>n.concat(n.concat("(?:",R,")"),C,/(?:\\.|[^\\\/])*?/,I,s),N=[h,t.HASH_COMMENT_MODE,t.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),d,{className:"string",contains:b,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},p,{begin:"(\\/\\/|"+t.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[t.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:y("s|tr|y",n.either(...x,{capture:!0}))},{begin:y("s|tr|y","\\(","\\)")},{begin:y("s|tr|y","\\[","\\]")},{begin:y("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:E("(?:m|qr)?",/\//,/\//)},{begin:E("m|qr",n.either(...x,{capture:!0}),/\1/)},{begin:E("m|qr",/\(/,/\)/)},{begin:E("m|qr",/\[/,/\]/)},{begin:E("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,m]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,m,p]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return c.contains=N,d.contains=N,{name:"Perl",aliases:["pl","pm"],keywords:l,contains:N}}return wm=e,wm}var Sm,Dy;function n_(){if(Dy)return Sm;Dy=1;function e(t){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,m={"variable.language":["this","super"],$pattern:a,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},h={$pattern:a,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:m,illegal:"</",contains:[n,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+h.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:h,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}return Sm=e,Sm}var km,jy;function r_(){if(jy)return km;jy=1;function e(t){const n=t.regex,a=/(?![A-Za-z0-9])(?![$])/,s=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,a),l=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,a),c=n.concat(/[A-Z]+/,a),d={scope:"variable",match:"\\$+"+s},m={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},h={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},p=t.inherit(t.APOS_STRING_MODE,{illegal:null}),b=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(h)}),x={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(h),"on:begin":(K,$)=>{$.data._beginMatch=K[1]||K[2]},"on:end":(K,$)=>{$.data._beginMatch!==K[1]&&$.ignoreMatch()}},y=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),E=`[
305
- ]`,N={scope:"string",variants:[b,p,x,y]},R={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},C=["false","null","true"],I=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],O=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],q={keyword:I,literal:(K=>{const $=[];return K.forEach(ee=>{$.push(ee),ee.toLowerCase()===ee?$.push(ee.toUpperCase()):$.push(ee.toLowerCase())}),$})(C),built_in:O},A=K=>K.map($=>$.replace(/\|\d+$/,"")),F={variants:[{match:[/new/,n.concat(E,"+"),n.concat("(?!",A(O).join("\\b|"),"\\b)"),l],scope:{1:"keyword",4:"title.class"}}]},J=n.concat(s,"\\b(?!\\()"),W={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),J],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[l,n.concat(/::/,n.lookahead(/(?!class\b)/)),J],scope:{1:"title.class",3:"variable.constant"}},{match:[l,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[l,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},z={scope:"attr",match:n.concat(s,n.lookahead(":"),n.lookahead(/(?!::)/))},U={relevance:0,begin:/\(/,end:/\)/,keywords:q,contains:[z,d,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R,F]},H={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",A(I).join("\\b|"),"|",A(O).join("\\b|"),"\\b)"),s,n.concat(E,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[U]};U.contains.push(H);const te=[z,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R,F],G={begin:n.concat(/#\[\s*\\?/,n.either(l,c)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:C,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:C,keyword:["new","array"]},contains:["self",...te]},...te,{scope:"meta",variants:[{match:l},{match:c}]}]};return{case_insensitive:!1,keywords:q,contains:[G,t.HASH_COMMENT_MODE,t.COMMENT("//","$"),t.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:t.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},m,{scope:"variable.language",match:/\$this\b/},d,H,W,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},F,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},t.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",G,d,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.inherit(t.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},t.UNDERSCORE_TITLE_MODE]},N,R]}}return km=e,km}var Em,Ly;function a_(){if(Ly)return Em;Ly=1;function e(t){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},t.inherit(t.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}return Em=e,Em}var Tm,zy;function i_(){if(zy)return Tm;zy=1;function e(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}return Tm=e,Tm}var Nm,By;function s_(){if(By)return Nm;By=1;function e(t){const n=t.regex,a=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],m={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},h={className:"meta",begin:/^(>>>|\.\.\.) /},p={className:"subst",begin:/\{/,end:/\}/,keywords:m,illegal:/#/},b={begin:/\{\{/,relevance:0},x={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h,b,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h,b,p]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,b,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,b,p]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},y="[0-9](_?[0-9])*",E=`(\\b(${y}))?\\.(${y})|\\b(${y})\\.`,N=`\\b|${s.join("|")}`,R={className:"number",relevance:0,variants:[{begin:`(\\b(${y})|(${E}))[eE][+-]?(${y})[jJ]?(?=${N})`},{begin:`(${E})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${N})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${N})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${N})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${N})`},{begin:`\\b(${y})[jJ](?=${N})`}]},C={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:m,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},I={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:["self",h,R,x,t.HASH_COMMENT_MODE]}]};return p.contains=[x,R,h],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:m,illegal:/(<\/|\?)|=>/,contains:[h,R,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},x,C,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[I]},{variants:[{match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[R,I,x]}]}}return Nm=e,Nm}var Cm,qy;function l_(){if(qy)return Cm;qy=1;function e(t){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}return Cm=e,Cm}var Rm,Uy;function o_(){if(Uy)return Rm;Uy=1;function e(t){const n=t.regex,a=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,s=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),l=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,c=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:a,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[t.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:a},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),t.HASH_COMMENT_MODE,{scope:"string",contains:[t.BACKSLASH_ESCAPE],variants:[t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[l,s]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,s]},{scope:{1:"punctuation",2:"number"},match:[c,s]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,s]}]},{scope:{3:"operator"},match:[a,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:l},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:c},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}return Rm=e,Rm}var Am,Hy;function c_(){if(Hy)return Am;Hy=1;function e(t){const n=t.regex,a=/(r#)?/,s=n.concat(a,t.UNDERSCORE_IDENT_RE),l=n.concat(a,t.IDENT_RE),c={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,l,n.lookahead(/\s*\(/))},d="([ui](8|16|32|64|128|size)|f(32|64))?",m=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],h=["true","false","Some","None","Ok","Err"],p=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],b=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:b,keyword:m,literal:h,built_in:p},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+d},{begin:"\\b0o([0-7_]+)"+d},{begin:"\\b0x([A-Fa-f0-9_]+)"+d},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+d}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:p,type:b}},{className:"punctuation",begin:"->"},c]}}return Am=e,Am}var _m,Fy;function u_(){if(Fy)return _m;Fy=1;const e=h=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:h.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:h.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],a=[...t,...n],s=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),l=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),c=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),d=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function m(h){const p=e(h),b=c,x=l,y="@[a-z-]+",E="and or not only",R={className:"variable",begin:"(\\$"+"[a-zA-Z-][a-zA-Z0-9_-]*"+")\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[h.C_LINE_COMMENT_MODE,h.C_BLOCK_COMMENT_MODE,p.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},p.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+a.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+x.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+b.join("|")+")"},R,{begin:/\(/,end:/\)/,contains:[p.CSS_NUMBER_MODE]},p.CSS_VARIABLE,{className:"attribute",begin:"\\b("+d.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[p.BLOCK_COMMENT,R,p.HEXCOLOR,p.CSS_NUMBER_MODE,p.UNICODE_RANGE,h.QUOTE_STRING_MODE,h.APOS_STRING_MODE,p.IMPORTANT,p.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:y,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:E,attribute:s.join(" ")},contains:[{begin:y,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},R,h.QUOTE_STRING_MODE,h.APOS_STRING_MODE,p.HEXCOLOR,p.CSS_NUMBER_MODE]},p.FUNCTION_DISPATCH]}}return _m=m,_m}var Im,Py;function d_(){if(Py)return Im;Py=1;function e(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}return Im=e,Im}var Mm,$y;function f_(){if($y)return Mm;$y=1;function e(t){const n=t.regex,a=t.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},l={begin:/"/,end:/"/,contains:[{match:/""/}]},c=["true","false","unknown"],d=["double precision","large object","with timezone","without timezone"],m=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],h=["add","asc","collation","desc","final","first","last","view"],p=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],b=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],x=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],y=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],E=b,N=[...p,...h].filter(A=>!b.includes(A)),R={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},C={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},I={match:n.concat(/\b/,n.either(...E),/\s*\(/),relevance:0,keywords:{built_in:E}};function O(A){return n.concat(/\b/,n.either(...A.map(F=>F.replace(/\s+/,"\\s+"))),/\b/)}const X={scope:"keyword",match:O(y),relevance:0};function q(A,{exceptions:F,when:J}={}){const W=J;return F=F||[],A.map(z=>z.match(/\|\d+$/)||F.includes(z)?z:W(z)?`${z}|0`:z)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:q(N,{when:A=>A.length<3}),literal:c,type:m,built_in:x},contains:[{scope:"type",match:O(d)},X,I,R,s,l,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,a,C]}}return Mm=e,Mm}var Om,Gy;function m_(){if(Gy)return Om;Gy=1;function e(J){return J?typeof J=="string"?J:J.source:null}function t(J){return n("(?=",J,")")}function n(...J){return J.map(z=>e(z)).join("")}function a(J){const W=J[J.length-1];return typeof W=="object"&&W.constructor===Object?(J.splice(J.length-1,1),W):{}}function s(...J){return"("+(a(J).capture?"":"?:")+J.map(U=>e(U)).join("|")+")"}const l=J=>n(/\b/,J,/\w$/.test(J)?/\b/:/\B/),c=["Protocol","Type"].map(l),d=["init","self"].map(l),m=["Any","Self"],h=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],b=["assignment","associativity","higherThan","left","lowerThan","none","right"],x=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],y=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],E=s(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),N=s(E,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),R=n(E,N,"*"),C=s(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),I=s(C,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),O=n(C,I,"*"),X=n(/[A-Z]/,I,"*"),q=["attached","autoclosure",n(/convention\(/,s("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",n(/objc\(/,O,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],A=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function F(J){const W={match:/\s+/,relevance:0},z=J.COMMENT("/\\*","\\*/",{contains:["self"]}),U=[J.C_LINE_COMMENT_MODE,z],H={match:[/\./,s(...c,...d)],className:{2:"keyword"}},te={match:n(/\./,s(...h)),relevance:0},G=h.filter(Ve=>typeof Ve=="string").concat(["_|0"]),K=h.filter(Ve=>typeof Ve!="string").concat(m).map(l),$={variants:[{className:"keyword",match:s(...K,...d)}]},ee={$pattern:s(/\b\w+/,/#\w+/),keyword:G.concat(x),literal:p},oe=[H,te,$],ce={match:n(/\./,s(...y)),relevance:0},j={className:"built_in",match:n(/\b/,s(...y),/(?=\()/)},D=[ce,j],P={match:/->/,relevance:0},_={className:"operator",relevance:0,variants:[{match:R},{match:`\\.(\\.|${N})+`}]},ne=[P,_],de="([0-9]_*)+",se="([0-9a-fA-F]_*)+",ae={className:"number",relevance:0,variants:[{match:`\\b(${de})(\\.(${de}))?([eE][+-]?(${de}))?\\b`},{match:`\\b0x(${se})(\\.(${se}))?([pP][+-]?(${de}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},we=(Ve="")=>({className:"subst",variants:[{match:n(/\\/,Ve,/[0\\tnr"']/)},{match:n(/\\/,Ve,/u\{[0-9a-fA-F]{1,8}\}/)}]}),ge=(Ve="")=>({className:"subst",match:n(/\\/,Ve,/[\t ]*(?:[\r\n]|\r\n)/)}),ze=(Ve="")=>({className:"subst",label:"interpol",begin:n(/\\/,Ve,/\(/),end:/\)/}),Me=(Ve="")=>({begin:n(Ve,/"""/),end:n(/"""/,Ve),contains:[we(Ve),ge(Ve),ze(Ve)]}),Se=(Ve="")=>({begin:n(Ve,/"/),end:n(/"/,Ve),contains:[we(Ve),ze(Ve)]}),$e={className:"string",variants:[Me(),Me("#"),Me("##"),Me("###"),Se(),Se("#"),Se("##"),Se("###")]},ct=[J.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[J.BACKSLASH_ESCAPE]}],mt={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:ct},Ze=Ve=>{const xt=n(Ve,/\//),Dt=n(/\//,Ve);return{begin:xt,end:Dt,contains:[...ct,{scope:"comment",begin:`#(?!.*${Dt})`,end:/$/}]}},lt={scope:"regexp",variants:[Ze("###"),Ze("##"),Ze("#"),mt]},Tt={match:n(/`/,O,/`/)},St={className:"variable",match:/\$\d+/},wt={className:"variable",match:`\\$${I}+`},Je=[Tt,St,wt],Nt={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:A,contains:[...ne,ae,$e]}]}},qt={scope:"keyword",match:n(/@/,s(...q),t(s(/\(/,/\s+/)))},Fe={scope:"meta",match:n(/@/,O)},Xt=[Nt,qt,Fe],he={match:t(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:n(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,I,"+")},{className:"type",match:X,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:n(/\s+&\s+/,t(X)),relevance:0}]},ve={begin:/</,end:/>/,keywords:ee,contains:[...U,...oe,...Xt,P,he]};he.contains.push(ve);const qe={match:n(O,/\s*:/),keywords:"_|0",relevance:0},We={begin:/\(/,end:/\)/,relevance:0,keywords:ee,contains:["self",qe,...U,lt,...oe,...D,...ne,ae,$e,...Je,...Xt,he]},nt={begin:/</,end:/>/,keywords:"repeat each",contains:[...U,he]},$t={begin:s(t(n(O,/\s*:/)),t(n(O,/\s+/,O,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:O}]},Zt={begin:/\(/,end:/\)/,keywords:ee,contains:[$t,...U,...oe,...ne,ae,$e,...Xt,he,We],endsParent:!0,illegal:/["']/},Pt={match:[/(func|macro)/,/\s+/,s(Tt.match,O,R)],className:{1:"keyword",3:"title.function"},contains:[nt,Zt,W],illegal:[/\[/,/%/]},rt={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[nt,Zt,W],illegal:/\[|%/},on={match:[/operator/,/\s+/,R],className:{1:"keyword",3:"title"}},yt={begin:[/precedencegroup/,/\s+/,X],className:{1:"keyword",3:"title"},contains:[he],keywords:[...b,...p],end:/}/},Xn={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Sn={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},st={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,O,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:ee,contains:[nt,...oe,{begin:/:/,end:/\{/,keywords:ee,contains:[{scope:"title.class.inherited",match:X},...oe],relevance:0}]};for(const Ve of $e.variants){const xt=Ve.contains.find(Wt=>Wt.label==="interpol");xt.keywords=ee;const Dt=[...oe,...D,...ne,ae,$e,...Je];xt.contains=[...Dt,{begin:/\(/,end:/\)/,contains:["self",...Dt]}]}return{name:"Swift",keywords:ee,contains:[...U,Pt,rt,Xn,Sn,st,on,yt,{beginKeywords:"import",end:/$/,contains:[...U],relevance:0},lt,...oe,...D,...ne,ae,$e,...Je,...Xt,he,We]}}return Om=F,Om}var Dm,Ky;function h_(){if(Ky)return Dm;Ky=1;function e(t){const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},l={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},c={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},d={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,l]},m=t.inherit(d,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),y={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},E={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},N={begin:/\{/,end:/\}/,contains:[E],illegal:"\\n",relevance:0},R={begin:"\\[",end:"\\]",contains:[E],illegal:"\\n",relevance:0},C=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},y,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},N,R,c,d],I=[...C];return I.pop(),I.push(m),E.contains=I,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:C}}return Dm=e,Dm}var jm,Vy;function p_(){if(Vy)return jm;Vy=1;const e="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],n=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],l=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],d=[].concat(l,a,s);function m(p){const b=p.regex,x=(we,{after:ge})=>{const ze="</"+we[0].slice(1);return we.input.indexOf(ze,ge)!==-1},y=e,E={begin:"<>",end:"</>"},N=/<[A-Za-z0-9\\._:-]+\s*\/>/,R={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(we,ge)=>{const ze=we[0].length+we.index,Me=we.input[ze];if(Me==="<"||Me===","){ge.ignoreMatch();return}Me===">"&&(x(we,{after:ze})||ge.ignoreMatch());let Se;const $e=we.input.substring(ze);if(Se=$e.match(/^\s*=/)){ge.ignoreMatch();return}if((Se=$e.match(/^\s+extends\s+/))&&Se.index===0){ge.ignoreMatch();return}}},C={$pattern:e,keyword:t,literal:n,built_in:d,"variable.language":c},I="[0-9](_?[0-9])*",O=`\\.(${I})`,X="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",q={className:"number",variants:[{begin:`(\\b(${X})((${O})|\\.)?|(${O}))[eE][+-]?(${I})\\b`},{begin:`\\b(${X})\\b((${O})\\b|\\.)?|(${O})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{",end:"\\}",keywords:C,contains:[]},F={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},J={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"css"}},W={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"graphql"}},z={className:"string",begin:"`",end:"`",contains:[p.BACKSLASH_ESCAPE,A]},H={className:"comment",variants:[p.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:y+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),p.C_BLOCK_COMMENT_MODE,p.C_LINE_COMMENT_MODE]},te=[p.APOS_STRING_MODE,p.QUOTE_STRING_MODE,F,J,W,z,{match:/\$\d+/},q];A.contains=te.concat({begin:/\{/,end:/\}/,keywords:C,contains:["self"].concat(te)});const G=[].concat(H,A.contains),K=G.concat([{begin:/(\s*)\(/,end:/\)/,keywords:C,contains:["self"].concat(G)}]),$={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:K},ee={variants:[{match:[/class/,/\s+/,y,/\s+/,/extends/,/\s+/,b.concat(y,"(",b.concat(/\./,y),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,y],scope:{1:"keyword",3:"title.class"}}]},oe={relevance:0,match:b.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...s]}},ce={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,y,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[$],illegal:/%/},D={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function P(we){return b.concat("(?!",we.join("|"),")")}const _={match:b.concat(/\b/,P([...l,"super","import","await"].map(we=>`${we}\\s*\\(`)),y,b.lookahead(/\s*\(/)),className:"title.function",relevance:0},ne={begin:b.concat(/\./,b.lookahead(b.concat(y,/(?![0-9A-Za-z$_(])/))),end:y,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},de={match:[/get|set/,/\s+/,y,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},$]},se="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+p.UNDERSCORE_IDENT_RE+")\\s*=>",ae={match:[/const|var|let/,/\s+/,y,/\s*/,/=\s*/,/(async\s*)?/,b.lookahead(se)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[$]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:C,exports:{PARAMS_CONTAINS:K,CLASS_REFERENCE:oe},illegal:/#(?![$_A-Za-z])/,contains:[p.SHEBANG({label:"shebang",binary:"node",relevance:5}),ce,p.APOS_STRING_MODE,p.QUOTE_STRING_MODE,F,J,W,z,H,{match:/\$\d+/},q,oe,{scope:"attr",match:y+b.lookahead(":"),relevance:0},ae,{begin:"("+p.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[H,p.REGEXP_MODE,{className:"function",begin:se,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:p.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:K}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:E.begin,end:E.end},{match:N},{begin:R.begin,"on:begin":R.isTrulyOpeningTag,end:R.end}],subLanguage:"xml",contains:[{begin:R.begin,end:R.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+p.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[$,p.inherit(p.TITLE_MODE,{begin:y,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+y,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[$]},_,D,ee,de,{match:/\$[(.]/}]}}function h(p){const b=p.regex,x=m(p),y=e,E=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],N={begin:[/namespace/,/\s+/,p.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},R={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:E},contains:[x.exports.CLASS_REFERENCE]},C={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},I=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],O={$pattern:e,keyword:t.concat(I),literal:n,built_in:d.concat(E),"variable.language":c},X={className:"meta",begin:"@"+y},q=(W,z,U)=>{const H=W.contains.findIndex(te=>te.label===z);if(H===-1)throw new Error("can not find mode to replace");W.contains.splice(H,1,U)};Object.assign(x.keywords,O),x.exports.PARAMS_CONTAINS.push(X);const A=x.contains.find(W=>W.scope==="attr"),F=Object.assign({},A,{match:b.concat(y,b.lookahead(/\s*\?:/))});x.exports.PARAMS_CONTAINS.push([x.exports.CLASS_REFERENCE,A,F]),x.contains=x.contains.concat([X,N,R,F]),q(x,"shebang",p.SHEBANG()),q(x,"use_strict",C);const J=x.contains.find(W=>W.label==="func.def");return J.relevance=0,Object.assign(x,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),x}return jm=h,jm}var Lm,Yy;function g_(){if(Yy)return Lm;Yy=1;function e(t){const n=t.regex,a={className:"string",begin:/"(""|[^/n])"C\b/},s={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},l=/\d{1,2}\/\d{1,2}\/\d{4}/,c=/\d{4}-\d{1,2}-\d{1,2}/,d=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,m=/\d{1,2}(:\d{1,2}){1,2}/,h={className:"literal",variants:[{begin:n.concat(/# */,n.either(c,l),/ *#/)},{begin:n.concat(/# */,m,/ *#/)},{begin:n.concat(/# */,d,/ *#/)},{begin:n.concat(/# */,n.either(c,l),/ +/,n.either(d,m),/ *#/)}]},p={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},b={className:"label",begin:/^\w+:/},x=t.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),y=t.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[a,s,h,p,b,x,y,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[y]}]}}return Lm=e,Lm}var zm,Xy;function b_(){if(Xy)return zm;Xy=1;function e(t){t.regex;const n=t.COMMENT(/\(;/,/;\)/);n.contains.push("self");const a=t.COMMENT(/;;/,/$/),s=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],l={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},c={className:"variable",begin:/\$[\w_]+/},d={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},m={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},h={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},p={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:s},contains:[a,n,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},c,d,l,t.QUOTE_STRING_MODE,h,p,m]}}return zm=e,zm}var Bm,Zy;function v_(){if(Zy)return Bm;Zy=1;var e=jA();return e.registerLanguage("xml",LA()),e.registerLanguage("bash",zA()),e.registerLanguage("c",BA()),e.registerLanguage("cpp",qA()),e.registerLanguage("csharp",UA()),e.registerLanguage("css",HA()),e.registerLanguage("markdown",FA()),e.registerLanguage("diff",PA()),e.registerLanguage("ruby",$A()),e.registerLanguage("go",GA()),e.registerLanguage("graphql",KA()),e.registerLanguage("ini",VA()),e.registerLanguage("java",YA()),e.registerLanguage("javascript",XA()),e.registerLanguage("json",ZA()),e.registerLanguage("kotlin",WA()),e.registerLanguage("less",QA()),e.registerLanguage("lua",JA()),e.registerLanguage("makefile",e_()),e.registerLanguage("perl",t_()),e.registerLanguage("objectivec",n_()),e.registerLanguage("php",r_()),e.registerLanguage("php-template",a_()),e.registerLanguage("plaintext",i_()),e.registerLanguage("python",s_()),e.registerLanguage("python-repl",l_()),e.registerLanguage("r",o_()),e.registerLanguage("rust",c_()),e.registerLanguage("scss",u_()),e.registerLanguage("shell",d_()),e.registerLanguage("sql",f_()),e.registerLanguage("swift",m_()),e.registerLanguage("yaml",h_()),e.registerLanguage("typescript",p_()),e.registerLanguage("vbnet",g_()),e.registerLanguage("wasm",b_()),e.HighlightJS=e,e.default=e,Bm=e,Bm}var y_=v_();const Wy=Bu(y_),f6=/^(javascript|vbscript|data):/i;function x_(e){if(!e)return!1;const t=e.trim();return!(!t||f6.test(t))}function w_(e){if(!e)return!1;const t=e.trim();return!t||f6.test(t)||t.startsWith("blob:")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?!1:!!(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t))}const S_=[[eC,{singleTilde:!1}],[nA,{singleDollarTextMath:!0}]],k_=[DA];let qm=null,Qy=null;async function E_(){return qm||(Qy??=Dw(()=>import("./mermaid.core-BVjAT9b8.js").then(e=>e.bp),[]).then(e=>{e.default.initialize({startOnLoad:!1,securityLevel:"strict",theme:"neutral"});const t=async(n,a)=>{const{svg:s}=await e.default.render(`oc-mermaid-${Math.random().toString(36).slice(2,10)}`,a);n.innerHTML=s};return qm=t,t}).catch(()=>null),Qy)}function T_({code:e}){const t=k.useRef(null),[n,a]=k.useState(!1);return k.useEffect(()=>{let s=!1;return E_().then(l=>{if(s||!l||!t.current){l||a(!0);return}l(t.current,e).catch(()=>{s||a(!0)})}),()=>{s=!0}},[e]),n?f.jsx(Ch,{lang:"mermaid",text:e}):f.jsx("div",{className:"oc-mermaid",ref:t,role:"img","aria-label":"Mermaid 图表"})}function Ch({lang:e,text:t,children:n}){const[a,s]=k.useState(!1),l=k.useMemo(()=>{const d=Wy.getLanguage(e)?e:"";return d?Wy.highlight(t,{language:d,ignoreIllegals:!0}).value:void 0},[e,t]),c=()=>{navigator.clipboard?.writeText(t).then(()=>{s(!0),window.setTimeout(()=>s(!1),1600)},()=>{})};return f.jsxs("div",{className:"oc-codeblock",children:[f.jsxs("div",{className:"oc-codeblock-head",children:[f.jsx("span",{className:"oc-codeblock-lang",children:e||"text"}),f.jsx("button",{type:"button",className:"oc-codeblock-copy",onClick:c,children:a?"已复制":"复制"})]}),f.jsx("pre",{children:l!==void 0?f.jsx("code",{className:`hljs language-${e}`,dangerouslySetInnerHTML:{__html:l}}):f.jsx("code",{className:e?`hljs language-${e}`:"hljs",children:n??t})})]})}function Rh(e){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return String(e);if(Array.isArray(e))return e.map(Rh).join("");if(typeof e=="object"&&"props"in e){const t=e.props;return Rh(t?.children)}return""}const N_={pre({children:e}){return f.jsx(f.Fragment,{children:e})},code({className:e,children:t,...n}){const a=Rh(t).replace(/\n$/,""),s=/language-([\w-]+)/.exec(e??"");return s?.[1]==="mermaid"?f.jsx(T_,{code:a}):s||e&&a.includes(`
305
+ ]`,N={scope:"string",variants:[b,p,x,y]},R={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},C=["false","null","true"],I=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],O=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],q={keyword:I,literal:(K=>{const $=[];return K.forEach(ee=>{$.push(ee),ee.toLowerCase()===ee?$.push(ee.toUpperCase()):$.push(ee.toLowerCase())}),$})(C),built_in:O},A=K=>K.map($=>$.replace(/\|\d+$/,"")),F={variants:[{match:[/new/,n.concat(E,"+"),n.concat("(?!",A(O).join("\\b|"),"\\b)"),l],scope:{1:"keyword",4:"title.class"}}]},J=n.concat(s,"\\b(?!\\()"),W={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),J],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[l,n.concat(/::/,n.lookahead(/(?!class\b)/)),J],scope:{1:"title.class",3:"variable.constant"}},{match:[l,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[l,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},z={scope:"attr",match:n.concat(s,n.lookahead(":"),n.lookahead(/(?!::)/))},U={relevance:0,begin:/\(/,end:/\)/,keywords:q,contains:[z,d,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R,F]},H={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",A(I).join("\\b|"),"|",A(O).join("\\b|"),"\\b)"),s,n.concat(E,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[U]};U.contains.push(H);const te=[z,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R,F],G={begin:n.concat(/#\[\s*\\?/,n.either(l,c)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:C,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:C,keyword:["new","array"]},contains:["self",...te]},...te,{scope:"meta",variants:[{match:l},{match:c}]}]};return{case_insensitive:!1,keywords:q,contains:[G,t.HASH_COMMENT_MODE,t.COMMENT("//","$"),t.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:t.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},m,{scope:"variable.language",match:/\$this\b/},d,H,W,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},F,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},t.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:q,contains:["self",G,d,W,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,N,R]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.inherit(t.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},t.UNDERSCORE_TITLE_MODE]},N,R]}}return km=e,km}var Em,Ly;function a_(){if(Ly)return Em;Ly=1;function e(t){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},t.inherit(t.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),t.inherit(t.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}return Em=e,Em}var Tm,zy;function i_(){if(zy)return Tm;zy=1;function e(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}return Tm=e,Tm}var Nm,By;function s_(){if(By)return Nm;By=1;function e(t){const n=t.regex,a=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],m={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},h={className:"meta",begin:/^(>>>|\.\.\.) /},p={className:"subst",begin:/\{/,end:/\}/,keywords:m,illegal:/#/},b={begin:/\{\{/,relevance:0},x={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,h,b,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,h,b,p]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,b,p]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,b,p]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},y="[0-9](_?[0-9])*",E=`(\\b(${y}))?\\.(${y})|\\b(${y})\\.`,N=`\\b|${s.join("|")}`,R={className:"number",relevance:0,variants:[{begin:`(\\b(${y})|(${E}))[eE][+-]?(${y})[jJ]?(?=${N})`},{begin:`(${E})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${N})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${N})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${N})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${N})`},{begin:`\\b(${y})[jJ](?=${N})`}]},C={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:m,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},I={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:["self",h,R,x,t.HASH_COMMENT_MODE]}]};return p.contains=[x,R,h],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:m,illegal:/(<\/|\?)|=>/,contains:[h,R,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},x,C,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[I]},{variants:[{match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[R,I,x]}]}}return Nm=e,Nm}var Cm,qy;function l_(){if(qy)return Cm;qy=1;function e(t){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}return Cm=e,Cm}var Rm,Uy;function o_(){if(Uy)return Rm;Uy=1;function e(t){const n=t.regex,a=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,s=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),l=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,c=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:a,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[t.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:a},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),t.HASH_COMMENT_MODE,{scope:"string",contains:[t.BACKSLASH_ESCAPE],variants:[t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),t.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[l,s]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,s]},{scope:{1:"punctuation",2:"number"},match:[c,s]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,s]}]},{scope:{3:"operator"},match:[a,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:l},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:c},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}return Rm=e,Rm}var Am,Hy;function c_(){if(Hy)return Am;Hy=1;function e(t){const n=t.regex,a=/(r#)?/,s=n.concat(a,t.UNDERSCORE_IDENT_RE),l=n.concat(a,t.IDENT_RE),c={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,l,n.lookahead(/\s*\(/))},d="([ui](8|16|32|64|128|size)|f(32|64))?",m=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],h=["true","false","Some","None","Ok","Err"],p=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],b=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:t.IDENT_RE+"!?",type:b,keyword:m,literal:h,built_in:p},illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*","\\*/",{contains:["self"]}),t.inherit(t.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+d},{begin:"\\b0o([0-7_]+)"+d},{begin:"\\b0x([A-Fa-f0-9_]+)"+d},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+d}],relevance:0},{begin:[/fn/,/\s+/,s],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,s],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,s,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,s],className:{1:"keyword",3:"title.class"}},{begin:t.IDENT_RE+"::",keywords:{keyword:"Self",built_in:p,type:b}},{className:"punctuation",begin:"->"},c]}}return Am=e,Am}var _m,Fy;function u_(){if(Fy)return _m;Fy=1;const e=h=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:h.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,4}(-[0-9A-Fa-f][0-9A-Fa-f]{0,4})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[h.APOS_STRING_MODE,h.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:h.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],a=[...t,...n],s=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),l=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),c=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),d=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function m(h){const p=e(h),b=c,x=l,y="@[a-z-]+",E="and or not only",R={className:"variable",begin:"(\\$"+"[a-zA-Z-][a-zA-Z0-9_-]*"+")\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[h.C_LINE_COMMENT_MODE,h.C_BLOCK_COMMENT_MODE,p.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},p.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+a.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+x.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+b.join("|")+")"},R,{begin:/\(/,end:/\)/,contains:[p.CSS_NUMBER_MODE]},p.CSS_VARIABLE,{className:"attribute",begin:"\\b("+d.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[p.BLOCK_COMMENT,R,p.HEXCOLOR,p.CSS_NUMBER_MODE,p.UNICODE_RANGE,h.QUOTE_STRING_MODE,h.APOS_STRING_MODE,p.IMPORTANT,p.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:y,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:E,attribute:s.join(" ")},contains:[{begin:y,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},R,h.QUOTE_STRING_MODE,h.APOS_STRING_MODE,p.HEXCOLOR,p.CSS_NUMBER_MODE]},p.FUNCTION_DISPATCH]}}return _m=m,_m}var Im,Py;function d_(){if(Py)return Im;Py=1;function e(t){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}return Im=e,Im}var Mm,$y;function f_(){if($y)return Mm;$y=1;function e(t){const n=t.regex,a=t.COMMENT("--","$"),s={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},l={begin:/"/,end:/"/,contains:[{match:/""/}]},c=["true","false","unknown"],d=["double precision","large object","with timezone","without timezone"],m=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],h=["add","asc","collation","desc","final","first","last","view"],p=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],b=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],x=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],y=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],E=b,N=[...p,...h].filter(A=>!b.includes(A)),R={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},C={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},I={match:n.concat(/\b/,n.either(...E),/\s*\(/),relevance:0,keywords:{built_in:E}};function O(A){return n.concat(/\b/,n.either(...A.map(F=>F.replace(/\s+/,"\\s+"))),/\b/)}const X={scope:"keyword",match:O(y),relevance:0};function q(A,{exceptions:F,when:J}={}){const W=J;return F=F||[],A.map(z=>z.match(/\|\d+$/)||F.includes(z)?z:W(z)?`${z}|0`:z)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:q(N,{when:A=>A.length<3}),literal:c,type:m,built_in:x},contains:[{scope:"type",match:O(d)},X,I,R,s,l,t.C_NUMBER_MODE,t.C_BLOCK_COMMENT_MODE,a,C]}}return Mm=e,Mm}var Om,Gy;function m_(){if(Gy)return Om;Gy=1;function e(J){return J?typeof J=="string"?J:J.source:null}function t(J){return n("(?=",J,")")}function n(...J){return J.map(z=>e(z)).join("")}function a(J){const W=J[J.length-1];return typeof W=="object"&&W.constructor===Object?(J.splice(J.length-1,1),W):{}}function s(...J){return"("+(a(J).capture?"":"?:")+J.map(U=>e(U)).join("|")+")"}const l=J=>n(/\b/,J,/\w$/.test(J)?/\b/:/\B/),c=["Protocol","Type"].map(l),d=["init","self"].map(l),m=["Any","Self"],h=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],p=["false","nil","true"],b=["assignment","associativity","higherThan","left","lowerThan","none","right"],x=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],y=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],E=s(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),N=s(E,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),R=n(E,N,"*"),C=s(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),I=s(C,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),O=n(C,I,"*"),X=n(/[A-Z]/,I,"*"),q=["attached","autoclosure",n(/convention\(/,s("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",n(/objc\(/,O,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],A=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function F(J){const W={match:/\s+/,relevance:0},z=J.COMMENT("/\\*","\\*/",{contains:["self"]}),U=[J.C_LINE_COMMENT_MODE,z],H={match:[/\./,s(...c,...d)],className:{2:"keyword"}},te={match:n(/\./,s(...h)),relevance:0},G=h.filter(Ve=>typeof Ve=="string").concat(["_|0"]),K=h.filter(Ve=>typeof Ve!="string").concat(m).map(l),$={variants:[{className:"keyword",match:s(...K,...d)}]},ee={$pattern:s(/\b\w+/,/#\w+/),keyword:G.concat(x),literal:p},oe=[H,te,$],ce={match:n(/\./,s(...y)),relevance:0},j={className:"built_in",match:n(/\b/,s(...y),/(?=\()/)},D=[ce,j],P={match:/->/,relevance:0},_={className:"operator",relevance:0,variants:[{match:R},{match:`\\.(\\.|${N})+`}]},ne=[P,_],de="([0-9]_*)+",se="([0-9a-fA-F]_*)+",ae={className:"number",relevance:0,variants:[{match:`\\b(${de})(\\.(${de}))?([eE][+-]?(${de}))?\\b`},{match:`\\b0x(${se})(\\.(${se}))?([pP][+-]?(${de}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},we=(Ve="")=>({className:"subst",variants:[{match:n(/\\/,Ve,/[0\\tnr"']/)},{match:n(/\\/,Ve,/u\{[0-9a-fA-F]{1,8}\}/)}]}),ge=(Ve="")=>({className:"subst",match:n(/\\/,Ve,/[\t ]*(?:[\r\n]|\r\n)/)}),ze=(Ve="")=>({className:"subst",label:"interpol",begin:n(/\\/,Ve,/\(/),end:/\)/}),Me=(Ve="")=>({begin:n(Ve,/"""/),end:n(/"""/,Ve),contains:[we(Ve),ge(Ve),ze(Ve)]}),Se=(Ve="")=>({begin:n(Ve,/"/),end:n(/"/,Ve),contains:[we(Ve),ze(Ve)]}),$e={className:"string",variants:[Me(),Me("#"),Me("##"),Me("###"),Se(),Se("#"),Se("##"),Se("###")]},ct=[J.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[J.BACKSLASH_ESCAPE]}],mt={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:ct},Ze=Ve=>{const xt=n(Ve,/\//),Dt=n(/\//,Ve);return{begin:xt,end:Dt,contains:[...ct,{scope:"comment",begin:`#(?!.*${Dt})`,end:/$/}]}},lt={scope:"regexp",variants:[Ze("###"),Ze("##"),Ze("#"),mt]},Tt={match:n(/`/,O,/`/)},St={className:"variable",match:/\$\d+/},wt={className:"variable",match:`\\$${I}+`},Je=[Tt,St,wt],Nt={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:A,contains:[...ne,ae,$e]}]}},qt={scope:"keyword",match:n(/@/,s(...q),t(s(/\(/,/\s+/)))},Fe={scope:"meta",match:n(/@/,O)},Xt=[Nt,qt,Fe],he={match:t(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:n(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,I,"+")},{className:"type",match:X,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:n(/\s+&\s+/,t(X)),relevance:0}]},ve={begin:/</,end:/>/,keywords:ee,contains:[...U,...oe,...Xt,P,he]};he.contains.push(ve);const qe={match:n(O,/\s*:/),keywords:"_|0",relevance:0},We={begin:/\(/,end:/\)/,relevance:0,keywords:ee,contains:["self",qe,...U,lt,...oe,...D,...ne,ae,$e,...Je,...Xt,he]},nt={begin:/</,end:/>/,keywords:"repeat each",contains:[...U,he]},$t={begin:s(t(n(O,/\s*:/)),t(n(O,/\s+/,O,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:O}]},Zt={begin:/\(/,end:/\)/,keywords:ee,contains:[$t,...U,...oe,...ne,ae,$e,...Xt,he,We],endsParent:!0,illegal:/["']/},Pt={match:[/(func|macro)/,/\s+/,s(Tt.match,O,R)],className:{1:"keyword",3:"title.function"},contains:[nt,Zt,W],illegal:[/\[/,/%/]},rt={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[nt,Zt,W],illegal:/\[|%/},on={match:[/operator/,/\s+/,R],className:{1:"keyword",3:"title"}},yt={begin:[/precedencegroup/,/\s+/,X],className:{1:"keyword",3:"title"},contains:[he],keywords:[...b,...p],end:/}/},Xn={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},Sn={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},st={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,O,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:ee,contains:[nt,...oe,{begin:/:/,end:/\{/,keywords:ee,contains:[{scope:"title.class.inherited",match:X},...oe],relevance:0}]};for(const Ve of $e.variants){const xt=Ve.contains.find(Wt=>Wt.label==="interpol");xt.keywords=ee;const Dt=[...oe,...D,...ne,ae,$e,...Je];xt.contains=[...Dt,{begin:/\(/,end:/\)/,contains:["self",...Dt]}]}return{name:"Swift",keywords:ee,contains:[...U,Pt,rt,Xn,Sn,st,on,yt,{beginKeywords:"import",end:/$/,contains:[...U],relevance:0},lt,...oe,...D,...ne,ae,$e,...Je,...Xt,he,We]}}return Om=F,Om}var Dm,Ky;function h_(){if(Ky)return Dm;Ky=1;function e(t){const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},l={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},c={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},d={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,l]},m=t.inherit(d,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),y={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},E={end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},N={begin:/\{/,end:/\}/,contains:[E],illegal:"\\n",relevance:0},R={begin:"\\[",end:"\\]",contains:[E],illegal:"\\n",relevance:0},C=[s,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},y,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},N,R,c,d],I=[...C];return I.pop(),I.push(m),E.contains=I,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:C}}return Dm=e,Dm}var jm,Vy;function p_(){if(Vy)return jm;Vy=1;const e="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],n=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],l=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],d=[].concat(l,a,s);function m(p){const b=p.regex,x=(we,{after:ge})=>{const ze="</"+we[0].slice(1);return we.input.indexOf(ze,ge)!==-1},y=e,E={begin:"<>",end:"</>"},N=/<[A-Za-z0-9\\._:-]+\s*\/>/,R={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(we,ge)=>{const ze=we[0].length+we.index,Me=we.input[ze];if(Me==="<"||Me===","){ge.ignoreMatch();return}Me===">"&&(x(we,{after:ze})||ge.ignoreMatch());let Se;const $e=we.input.substring(ze);if(Se=$e.match(/^\s*=/)){ge.ignoreMatch();return}if((Se=$e.match(/^\s+extends\s+/))&&Se.index===0){ge.ignoreMatch();return}}},C={$pattern:e,keyword:t,literal:n,built_in:d,"variable.language":c},I="[0-9](_?[0-9])*",O=`\\.(${I})`,X="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",q={className:"number",variants:[{begin:`(\\b(${X})((${O})|\\.)?|(${O}))[eE][+-]?(${I})\\b`},{begin:`\\b(${X})\\b((${O})\\b|\\.)?|(${O})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{",end:"\\}",keywords:C,contains:[]},F={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},J={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"css"}},W={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[p.BACKSLASH_ESCAPE,A],subLanguage:"graphql"}},z={className:"string",begin:"`",end:"`",contains:[p.BACKSLASH_ESCAPE,A]},H={className:"comment",variants:[p.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:y+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),p.C_BLOCK_COMMENT_MODE,p.C_LINE_COMMENT_MODE]},te=[p.APOS_STRING_MODE,p.QUOTE_STRING_MODE,F,J,W,z,{match:/\$\d+/},q];A.contains=te.concat({begin:/\{/,end:/\}/,keywords:C,contains:["self"].concat(te)});const G=[].concat(H,A.contains),K=G.concat([{begin:/(\s*)\(/,end:/\)/,keywords:C,contains:["self"].concat(G)}]),$={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:K},ee={variants:[{match:[/class/,/\s+/,y,/\s+/,/extends/,/\s+/,b.concat(y,"(",b.concat(/\./,y),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,y],scope:{1:"keyword",3:"title.class"}}]},oe={relevance:0,match:b.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...s]}},ce={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},j={variants:[{match:[/function/,/\s+/,y,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[$],illegal:/%/},D={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function P(we){return b.concat("(?!",we.join("|"),")")}const _={match:b.concat(/\b/,P([...l,"super","import","await"].map(we=>`${we}\\s*\\(`)),y,b.lookahead(/\s*\(/)),className:"title.function",relevance:0},ne={begin:b.concat(/\./,b.lookahead(b.concat(y,/(?![0-9A-Za-z$_(])/))),end:y,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},de={match:[/get|set/,/\s+/,y,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},$]},se="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+p.UNDERSCORE_IDENT_RE+")\\s*=>",ae={match:[/const|var|let/,/\s+/,y,/\s*/,/=\s*/,/(async\s*)?/,b.lookahead(se)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[$]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:C,exports:{PARAMS_CONTAINS:K,CLASS_REFERENCE:oe},illegal:/#(?![$_A-Za-z])/,contains:[p.SHEBANG({label:"shebang",binary:"node",relevance:5}),ce,p.APOS_STRING_MODE,p.QUOTE_STRING_MODE,F,J,W,z,H,{match:/\$\d+/},q,oe,{scope:"attr",match:y+b.lookahead(":"),relevance:0},ae,{begin:"("+p.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[H,p.REGEXP_MODE,{className:"function",begin:se,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:p.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:C,contains:K}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:E.begin,end:E.end},{match:N},{begin:R.begin,"on:begin":R.isTrulyOpeningTag,end:R.end}],subLanguage:"xml",contains:[{begin:R.begin,end:R.end,skip:!0,contains:["self"]}]}]},j,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+p.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[$,p.inherit(p.TITLE_MODE,{begin:y,className:"title.function"})]},{match:/\.\.\./,relevance:0},ne,{match:"\\$"+y,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[$]},_,D,ee,de,{match:/\$[(.]/}]}}function h(p){const b=p.regex,x=m(p),y=e,E=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],N={begin:[/namespace/,/\s+/,p.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},R={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:E},contains:[x.exports.CLASS_REFERENCE]},C={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},I=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],O={$pattern:e,keyword:t.concat(I),literal:n,built_in:d.concat(E),"variable.language":c},X={className:"meta",begin:"@"+y},q=(W,z,U)=>{const H=W.contains.findIndex(te=>te.label===z);if(H===-1)throw new Error("can not find mode to replace");W.contains.splice(H,1,U)};Object.assign(x.keywords,O),x.exports.PARAMS_CONTAINS.push(X);const A=x.contains.find(W=>W.scope==="attr"),F=Object.assign({},A,{match:b.concat(y,b.lookahead(/\s*\?:/))});x.exports.PARAMS_CONTAINS.push([x.exports.CLASS_REFERENCE,A,F]),x.contains=x.contains.concat([X,N,R,F]),q(x,"shebang",p.SHEBANG()),q(x,"use_strict",C);const J=x.contains.find(W=>W.label==="func.def");return J.relevance=0,Object.assign(x,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),x}return jm=h,jm}var Lm,Yy;function g_(){if(Yy)return Lm;Yy=1;function e(t){const n=t.regex,a={className:"string",begin:/"(""|[^/n])"C\b/},s={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},l=/\d{1,2}\/\d{1,2}\/\d{4}/,c=/\d{4}-\d{1,2}-\d{1,2}/,d=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,m=/\d{1,2}(:\d{1,2}){1,2}/,h={className:"literal",variants:[{begin:n.concat(/# */,n.either(c,l),/ *#/)},{begin:n.concat(/# */,m,/ *#/)},{begin:n.concat(/# */,d,/ *#/)},{begin:n.concat(/# */,n.either(c,l),/ +/,n.either(d,m),/ *#/)}]},p={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},b={className:"label",begin:/^\w+:/},x=t.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),y=t.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[a,s,h,p,b,x,y,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[y]}]}}return Lm=e,Lm}var zm,Xy;function b_(){if(Xy)return zm;Xy=1;function e(t){t.regex;const n=t.COMMENT(/\(;/,/;\)/);n.contains.push("self");const a=t.COMMENT(/;;/,/$/),s=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],l={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},c={className:"variable",begin:/\$[\w_]+/},d={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},m={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},h={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},p={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:s},contains:[a,n,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},c,d,l,t.QUOTE_STRING_MODE,h,p,m]}}return zm=e,zm}var Bm,Zy;function v_(){if(Zy)return Bm;Zy=1;var e=jA();return e.registerLanguage("xml",LA()),e.registerLanguage("bash",zA()),e.registerLanguage("c",BA()),e.registerLanguage("cpp",qA()),e.registerLanguage("csharp",UA()),e.registerLanguage("css",HA()),e.registerLanguage("markdown",FA()),e.registerLanguage("diff",PA()),e.registerLanguage("ruby",$A()),e.registerLanguage("go",GA()),e.registerLanguage("graphql",KA()),e.registerLanguage("ini",VA()),e.registerLanguage("java",YA()),e.registerLanguage("javascript",XA()),e.registerLanguage("json",ZA()),e.registerLanguage("kotlin",WA()),e.registerLanguage("less",QA()),e.registerLanguage("lua",JA()),e.registerLanguage("makefile",e_()),e.registerLanguage("perl",t_()),e.registerLanguage("objectivec",n_()),e.registerLanguage("php",r_()),e.registerLanguage("php-template",a_()),e.registerLanguage("plaintext",i_()),e.registerLanguage("python",s_()),e.registerLanguage("python-repl",l_()),e.registerLanguage("r",o_()),e.registerLanguage("rust",c_()),e.registerLanguage("scss",u_()),e.registerLanguage("shell",d_()),e.registerLanguage("sql",f_()),e.registerLanguage("swift",m_()),e.registerLanguage("yaml",h_()),e.registerLanguage("typescript",p_()),e.registerLanguage("vbnet",g_()),e.registerLanguage("wasm",b_()),e.HighlightJS=e,e.default=e,Bm=e,Bm}var y_=v_();const Wy=Bu(y_),f6=/^(javascript|vbscript|data):/i;function x_(e){if(!e)return!1;const t=e.trim();return!(!t||f6.test(t))}function w_(e){if(!e)return!1;const t=e.trim();return!t||f6.test(t)||t.startsWith("blob:")||t.startsWith("data:image/")||/^https?:\/\//i.test(t)?!1:!!(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t))}const S_=[[eC,{singleTilde:!1}],[nA,{singleDollarTextMath:!0}]],k_=[DA];let qm=null,Qy=null;async function E_(){return qm||(Qy??=Dw(()=>import("./mermaid.core-Dmy4lSGv.js").then(e=>e.bp),[]).then(e=>{e.default.initialize({startOnLoad:!1,securityLevel:"strict",theme:"neutral"});const t=async(n,a)=>{const{svg:s}=await e.default.render(`oc-mermaid-${Math.random().toString(36).slice(2,10)}`,a);n.innerHTML=s};return qm=t,t}).catch(()=>null),Qy)}function T_({code:e}){const t=k.useRef(null),[n,a]=k.useState(!1);return k.useEffect(()=>{let s=!1;return E_().then(l=>{if(s||!l||!t.current){l||a(!0);return}l(t.current,e).catch(()=>{s||a(!0)})}),()=>{s=!0}},[e]),n?f.jsx(Ch,{lang:"mermaid",text:e}):f.jsx("div",{className:"oc-mermaid",ref:t,role:"img","aria-label":"Mermaid 图表"})}function Ch({lang:e,text:t,children:n}){const[a,s]=k.useState(!1),l=k.useMemo(()=>{const d=Wy.getLanguage(e)?e:"";return d?Wy.highlight(t,{language:d,ignoreIllegals:!0}).value:void 0},[e,t]),c=()=>{navigator.clipboard?.writeText(t).then(()=>{s(!0),window.setTimeout(()=>s(!1),1600)},()=>{})};return f.jsxs("div",{className:"oc-codeblock",children:[f.jsxs("div",{className:"oc-codeblock-head",children:[f.jsx("span",{className:"oc-codeblock-lang",children:e||"text"}),f.jsx("button",{type:"button",className:"oc-codeblock-copy",onClick:c,children:a?"已复制":"复制"})]}),f.jsx("pre",{children:l!==void 0?f.jsx("code",{className:`hljs language-${e}`,dangerouslySetInnerHTML:{__html:l}}):f.jsx("code",{className:e?`hljs language-${e}`:"hljs",children:n??t})})]})}function Rh(e){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return String(e);if(Array.isArray(e))return e.map(Rh).join("");if(typeof e=="object"&&"props"in e){const t=e.props;return Rh(t?.children)}return""}const N_={pre({children:e}){return f.jsx(f.Fragment,{children:e})},code({className:e,children:t,...n}){const a=Rh(t).replace(/\n$/,""),s=/language-([\w-]+)/.exec(e??"");return s?.[1]==="mermaid"?f.jsx(T_,{code:a}):s||e&&a.includes(`
306
306
  `)?f.jsx(Ch,{lang:s?.[1]??"",text:a}):a.includes(`
307
307
  `)?f.jsx(Ch,{lang:"",text:a}):f.jsx("code",{className:e,...n,children:t})},a({href:e,children:t,...n}){if(!x_(e))return f.jsx("span",{...n,children:t});const a=/^https?:\/\//i.test(e??"");return f.jsx("a",{href:e,...a?{target:"_blank",rel:"noopener noreferrer"}:{},...n,children:t})},img({src:e,alt:t}){return w_(e)?f.jsxs(f.Fragment,{children:[f.jsx("img",{src:e,alt:t??"",loading:"lazy",onError:n=>{const a=n.currentTarget;a.hidden=!0,a.nextElementSibling?.removeAttribute("hidden")}}),f.jsx("span",{className:"oc-md-img-fallback",hidden:!0,title:e??void 0,children:t?`[图片加载失败: ${t}]`:"[图片加载失败]"})]}):f.jsx("span",{className:"oc-md-img-fallback",title:e??void 0,children:t?`[图片: ${t}]`:"[图片已屏蔽]"})},table({children:e}){return f.jsx("div",{className:"oc-md-table-wrap",children:f.jsx("table",{children:e})})},input(e){return e.type==="checkbox"?f.jsx("input",{type:"checkbox",checked:!!e.checked,disabled:!0,readOnly:!0}):f.jsx("input",{...e,disabled:!0,readOnly:!0})}};class C_ extends k.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t,n){}componentDidUpdate(t){t.text!==this.props.text&&this.state.hasError&&this.setState({hasError:!1})}render(){return this.state.hasError?f.jsx("div",{className:"oc-md",children:f.jsx("pre",{className:"oc-md-fallback",children:this.props.text})}):this.props.children}}function Ah({text:e}){try{return f.jsx(C_,{text:e,children:f.jsx("div",{className:"oc-md",children:f.jsx(FE,{remarkPlugins:S_,rehypePlugins:k_,components:N_,children:e})})})}catch{return f.jsx("div",{className:"oc-md",children:f.jsx("pre",{className:"oc-md-fallback",children:e})})}}const Jy="无法在浏览器中打开:弹窗被拦截",R_="内容已截断,以下为已加载片段。";function A_(e){const t=e?.availWidth??1440,n=e?.availHeight??900,a=Math.min(1280,Math.max(880,Math.floor(t*.82))),s=Math.min(960,Math.max(640,Math.floor(n*.88)));return["popup=yes",`width=${a}`,`height=${s}`,"left=72","top=36","menubar=yes","toolbar=yes","location=yes","status=yes","resizable=yes","scrollbars=yes"].join(",")}function Js(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#39;")}function o0(e){return e.trim().toLowerCase()}function __(e){const t=o0(e);return t==="html"||t==="htm"}function I_(e){const t=o0(e);return t==="md"||t==="markdown"}function M_(e){if(o0(e.language)!=="json")return e.content;try{return JSON.stringify(JSON.parse(e.content),null,2)}catch{return e.content}}function O_(e){return/^https?:\/\//i.test(e.trim())}function po(e){const t=[];return e.replace(/`([^`]+)`/g,(l,c)=>(t.push(`<code>${c}</code>`),`\0${t.length-1}\0`)).replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(l,c,d)=>O_(d)?`<a href="${d}" rel="noopener noreferrer" target="_blank">${c}</a>`:c).replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/__([^_]+)__/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/\u0000(\d+)\u0000/g,(l,c)=>t[Number(c)]??"")}function D_(e){return e.length?`<p>${po(e.join(" "))}</p>`:""}function e2(e){const t=e.replaceAll(`\r
308
308
  `,`
@@ -385,13 +385,13 @@ ${q_()}
385
385
  </body>
386
386
  </html>`}function H_(){const e=globalThis.screen;return{availWidth:e?.availWidth,availHeight:e?.availHeight}}function F_(){const e=globalThis;if(typeof e.open!="function")throw new Error("window.open is unavailable");return{open:e.open.bind(e),createObjectURL:e.URL.createObjectURL.bind(e.URL),revokeObjectURL:e.URL.revokeObjectURL.bind(e.URL)}}function P_(e,t=F_(),n=A_(H_())){let a;try{const s=U_(e),l=new Blob([s],{type:"text/html;charset=utf-8"});a=t.createObjectURL(l);const c=t.open(a,"_blank",n);if(!c)return t.revokeObjectURL(a),{ok:!1,error:Jy};try{c.opener=null}catch{}return{ok:!0}}catch{return a&&t.revokeObjectURL(a),{ok:!1,error:Jy}}}function $_(e){return e.language==="md"||e.language==="markdown"}function t2(e){const t=e.previews.find(d=>d.path===e.activePath),n=t?$_(t):!1,[a,s]=k.useState(n?"preview":"source"),[l,c]=k.useState(null);return k.useEffect(()=>{s(n?"preview":"source"),c(null)},[t?.path,n]),!t&&!e.loading?null:f.jsxs(f.Fragment,{children:[t&&f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"oc-file-preview-backdrop",onMouseDown:d=>{d.target===d.currentTarget&&e.onClose(t.path)}}),f.jsxs("section",{className:"oc-file-preview","aria-label":`文件预览 ${t.path}`,children:[f.jsxs("header",{children:[f.jsx("div",{className:"oc-file-tabs",role:"tablist","aria-label":"文件预览 Tabs",children:e.previews.map(d=>f.jsx("button",{type:"button",role:"tab","aria-selected":d.path===t.path,className:d.path===t.path?"is-active":"",onClick:()=>e.onActivate(d.path),children:d.path},d.path))}),n&&f.jsxs("div",{className:"oc-file-view-modes",role:"group","aria-label":"文件查看模式",children:[f.jsx("button",{type:"button",className:`oc-file-view-mode${a==="preview"?" is-active":""}`,"aria-pressed":a==="preview",onClick:()=>s("preview"),children:"预览"}),f.jsx("button",{type:"button",className:`oc-file-view-mode${a==="source"?" is-active":""}`,"aria-pressed":a==="source",onClick:()=>s("source"),children:"源文件"})]}),f.jsxs("span",{children:[t.bytes," bytes",t.truncated?" · 已截断":""]}),f.jsx("button",{type:"button",className:"oc-file-preview-open",title:"新窗口打开","aria-label":`新窗口打开 ${t.path}`,onClick:()=>{const d=P_(t);c(d.ok?null:d.error)},children:f.jsx(N8,{size:16,"aria-hidden":"true"})}),f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>e.onClose(t.path),children:"关闭预览"})]}),l?f.jsx("p",{className:"oc-file-preview-open-error",role:"alert",children:l}):null,a==="preview"&&n?f.jsx("div",{className:"oc-file-preview-rendered",children:f.jsx(Ah,{text:t.content})}):f.jsx("pre",{children:f.jsx("code",{children:t.content})})]})]}),e.loading&&f.jsx("div",{className:"oc-file-preview-loading",children:"正在读取文件…"})]})}const h6=[{command:"/task",label:"Task context",description:"查看当前任务、Draft 与 assessment",action:"focus-panel:task",source:"operator"},{command:"/contract",label:"Contract",description:"查看 contract diff 与 apply gate",action:"focus-panel:contract",source:"operator"},{command:"/dag",label:"DAG",description:"查看 DAG spine、确认与运行状态",action:"focus-panel:dag",source:"operator"},{command:"/interview",label:"Interview",description:"打开 Requirement Interview",action:"focus:interview",source:"operator"},{command:"/reload",label:"Reload session",description:"重新加载当前 Pi 会话的设置、扩展、技能、提示词、主题与上下文文件(不产生消息)",action:"reload",source:"operator"}],p6=[{command:"/compact",label:"压缩上下文",description:"压缩当前会话上下文,释放 token",action:"compact",source:"web"},{command:"/name",label:"重命名会话",description:"设置当前会话标题",action:"name",source:"web"},{command:"/session",label:"会话信息",description:"显示当前会话元信息",action:"session",source:"web"},{command:"/copy",label:"复制回复",description:"复制最后一条助手消息原文",action:"copy",source:"web"}],as={operator:0,web:1,extension:2,skill:3,prompt:4};function n2(e){const t=e.trim().split(/\s+/,1)[0]??"";return t?t.startsWith("/")?t.toLowerCase():`/${t.toLowerCase()}`:""}function r2(e){const t=e.trim().split(/\s+/,1)[0]?.toLowerCase();if(!t?.startsWith("/"))return;const n=[...h6,...p6].find(a=>a.command===t);return n?{command:n.command,action:n.action}:{command:t,action:"unknown"}}function G_(e){if(e==="focus-panel:task"||e==="focus-panel:contract")return"tasks";if(e==="focus-panel:dag")return"recovery"}function K_(e=[]){const t=new Map,n=a=>{const s=n2(a.command);if(!s)return;const l=t.get(s);if(!l){t.set(s,{...a,command:s});return}as[a.source]<as[l.source]&&t.set(s,{...a,command:s})};for(const a of h6)n({command:a.command,label:a.label,description:a.description,source:a.source,action:a.action});for(const a of p6)n({command:a.command,label:a.label,description:a.description,source:a.source,action:a.action});for(const a of e){const s=n2(a.command);s&&n({command:s,label:a.label||s,description:a.description||"",source:a.source,action:"pi-prompt"})}return[...t.values()].sort((a,s)=>{const l=as[a.source]-as[s.source];return l!==0?l:a.command.localeCompare(s.command)})}function V_(e,t){const n=(t.trim().split(/\s+/,1)[0]??"").toLowerCase();if((/\s/.test(t.trimStart().slice(1))||t.includes(" "))&&t.trimStart().includes(" "))return[];const a=n.startsWith("/")?n:n?`/${n}`:"/",s=a==="/"?"":a.slice(1),l=[];for(const c of e){const d=c.command.toLowerCase(),m=d.startsWith("/")?d.slice(1):d,h=c.description.toLowerCase();let p=100;if(!s)p=10+as[c.source];else if(d===a||m===s)p=0;else if(d.startsWith(a)||m.startsWith(s))p=1;else if(m.includes(s)||d.includes(s))p=2;else if(h.includes(s))p=3;else continue;l.push({...c,score:p})}return l.sort((c,d)=>{if(c.score!==d.score)return c.score-d.score;const m=as[c.source]-as[d.source];return m!==0?m:c.command.localeCompare(d.command)})}const Y_={operator:"Operator",web:"Pi Web",extension:"Extensions",prompt:"Prompts",skill:"Skills"},X_=new Set(["operatorCapabilities","operationList","operationGet","operationEventSummary","statsContext","sourceInstructions","spineCheck","inspect","observeLink"]);function Z_(e){return X_.has(e)?"technical-only":e==="doctor"?"inline-detail":"activity-detail"}const W_={newTask:"创建任务",importPrd:"任务需求",contractShow:"任务边界",contractApply:"更新任务契约",contractDiff:"任务契约差异",contractDraftSave:"任务契约草稿",contractValidate:"检查任务契约",taskAdvance:"推进任务准备",dagRunTask:"执行流程",dagValidate:"校验执行流程",prepareDagConfirmation:"执行确认",confirmDagConfirmation:"确认执行边界",prepareDagExecution:"执行边界",runDag:"任务执行",operationWait:"执行监督",operationGet:"任务活动详情",operationList:"会话活动",operationEventSummary:"执行进展摘要",dagStatus:"执行状态",dagDoctor:"执行诊断",dagReport:"执行结果",dagRerunPlan:"节点恢复评估",dagRerun:"从失败节点恢复",dagInterruptEligibility:"中止资格",standaloneTaskRerun:"带反馈重新执行",workerTaskRetry:"重试 Worker 任务",workerPoolDoctor:"任务池诊断",promoteRun:"任务推进",status:"任务状态"},Q_={newTask:{running:"正在创建任务",success:"任务已经创建",error:"创建任务时遇到问题"},importPrd:{running:"正在整理并导入任务需求",success:"任务需求已经导入",error:"导入任务需求时遇到问题"},contractShow:{running:"正在读取任务目标和执行边界",success:"任务目标与执行边界已经读取",error:"读取任务边界时遇到问题"},taskAdvance:{running:"正在推进任务契约并准备执行流程",success:"任务已经推进到下一安全阶段",error:"任务推进被契约或执行边界阻塞"},dagRunTask:{running:"正在生成并校验执行流程",success:"执行流程已经准备好",error:"准备执行流程时遇到问题"},prepareDagExecution:{running:"正在确认任务可以安全执行",success:"执行边界已经确认",error:"执行边界尚未通过确认"},runDag:{running:"正在启动任务执行",success:"任务执行已经启动",error:"启动任务执行时遇到问题"},dagReport:{running:"正在读取本次执行结果",success:"本次执行结果已经读取",error:"读取执行结果时遇到问题"},dagRerunPlan:{running:"正在评估能否从失败节点安全恢复",success:"节点恢复条件评估已经完成",error:"暂时无法确定安全的恢复方式"},dagRerun:{running:"正在创建节点恢复 run",success:"节点恢复 run 已经启动",error:"从失败节点恢复时遇到问题"},dagInterruptEligibility:{running:"正在检查能否协作中止此运行",success:"中止资格已经确认",error:"当前运行不能协作中止"},standaloneTaskRerun:{running:"正在创建新的完整 DAG,并带入上一轮未解决反馈",success:"新的完整 DAG 已经按上一轮反馈重新执行",error:"带反馈重新执行任务时遇到问题"},workerPoolDoctor:{running:"正在读取任务池状态",success:"任务池状态已经读取",error:"读取任务池状态时遇到问题"},promoteRun:{running:"正在推进任务状态",success:"任务状态已经更新",error:"推进任务状态时遇到问题"},status:{running:"正在读取任务状态",success:"任务状态已经更新",error:"读取任务状态时遇到问题"},contractApply:{running:"正在应用任务契约变更",success:"任务契约已经更新",error:"应用任务契约变更时遇到问题"},contractDiff:{running:"正在比较任务契约版本",success:"任务契约差异已经读取",error:"比较任务契约时遇到问题"},contractDraftSave:{running:"正在保存任务契约草稿",success:"任务契约草稿已经保存",error:"保存任务契约草稿时遇到问题"},contractValidate:{running:"正在检查任务契约",success:"任务契约检查已经完成",error:"任务契约检查没有通过"},dagValidate:{running:"正在校验执行流程",success:"执行流程校验已经通过",error:"执行流程校验没有通过"},prepareDagConfirmation:{running:"正在准备执行确认",success:"执行确认已经准备好",error:"准备执行确认时遇到问题"},confirmDagConfirmation:{running:"正在确认执行边界",success:"执行边界已经确认",error:"执行边界尚未通过确认"},operationGet:{running:"正在读取任务活动详情",success:"任务活动详情已经读取",error:"读取任务活动详情时遇到问题"},operationList:{running:"正在读取本次对话的活动",success:"本次对话的活动已经读取",error:"读取对话活动时遇到问题"},operationEventSummary:{running:"正在汇总执行进展",success:"执行进展已经汇总",error:"汇总执行进展时遇到问题"},dagStatus:{running:"正在读取执行状态",success:"执行状态已经更新",error:"读取执行状态时遇到问题"},dagDoctor:{running:"正在诊断本次任务执行",success:"任务执行诊断已经完成",error:"诊断任务执行时遇到问题"},workerTaskRetry:{running:"正在重试失败的任务",success:"失败任务已经重新开始",error:"重试失败任务时遇到问题"},doctor:{running:"正在检查运行环境",success:"运行环境检查已经完成",error:"运行环境检查发现问题"},inspect:{running:"正在读取详细运行信息",success:"详细运行信息已经读取",error:"读取详细运行信息时遇到问题"},observeLink:{running:"正在准备运行看板入口",success:"运行看板入口已经准备好",error:"准备运行看板入口时遇到问题"},operatorCapabilities:{running:"正在读取可用操作能力",success:"可用操作能力已经读取",error:"读取可用操作能力时遇到问题"},sourceInstructions:{running:"正在读取任务来源说明",success:"任务来源说明已经读取",error:"读取任务来源说明时遇到问题"},spineCheck:{running:"正在检查计划执行步骤",success:"计划执行步骤检查已经完成",error:"计划执行步骤检查发现问题"},statsContext:{running:"正在统计上下文使用情况",success:"上下文使用情况已经统计完成",error:"统计上下文使用情况时遇到问题"}},J_=[{pattern:/(?:^|-)contract(?:-pi)?$/i,running:"正在核对任务目标和执行边界",finished:"任务目标与执行边界已确认",error:"任务边界存在冲突,需要先处理"},{pattern:/scout-src/i,running:"正在梳理与任务相关的代码",finished:"相关代码范围已梳理",error:"梳理相关代码时遇到问题"},{pattern:/scout-tests/i,running:"正在检查现有测试和验证方式",finished:"现有测试与验证方式已确认",error:"检查现有测试时遇到问题"},{pattern:/plan/i,running:"正在整理具体实施步骤",finished:"实施步骤已经准备好",error:"实施方案还需要进一步完善"},{pattern:/implement|writer/i,running:"正在修改并保存相关文件",finished:"文件修改已经完成",error:"修改文件时遇到问题"},{pattern:/verify|reverify/i,running:"正在验证本次修改",finished:"本次修改已通过验证",error:"验证没有通过,正在检查原因"},{pattern:/review/i,running:"正在检查改动是否完整",finished:"改动完整性检查已通过",error:"发现需要补充或修正的内容"},{pattern:/closeout/i,running:"正在整理交付结果",finished:"任务已经完成并形成交付记录",error:"交付结果尚未整理完整"}];function g6(e){if(!(!e||typeof e!="object"))return e}function yp(e){if(e&&typeof e=="object")return e;if(typeof e=="string")try{return g6(JSON.parse(e))}catch{return}}function Um(e){const n=yp(e)?.operationId;return typeof n=="string"&&n?n:void 0}function eI(e){const n=yp(e)?.maxWaitMs;if(!(typeof n!="number"||!Number.isFinite(n)||n<=0))return Math.max(1,Math.round(n/1e3))}function b6(e){const t=e.operationId??Um(e.args)??Um(e.result)??Um(e.resultText);return t?`operation:${t}`:`tool:${e.id}`}function tI(e){return e==="running"?"progress":e==="error"?"error":"success"}function nI(e){return yp(e.resultText??e.result)}function rI(e){return Array.isArray(e.events)?e.events.flatMap(t=>{const n=g6(t);if(!n)return[];const a=n.messagePreview??n.message;return typeof a=="string"?[a]:[]}):[]}function aI(e,t,n){const a=[];for(const m of e)for(const h of m.matchAll(/node-(started|finished)[^\n]*?node=([^\s,]+)/gi)){const p=h[1]?.toLowerCase(),b=h[2]??"",x=m.match(/status=([^\s,]+)/i)?.[1]?.toUpperCase();let y="finished";x==="ERROR"||x==="FAILED"?y="error":p==="started"&&(y="running"),a.push({node:b,status:y})}const s=a.at(-1);if(!s)return;const l=a.some(m=>/scout-src/i.test(m.node)&&m.status==="finished"),c=a.some(m=>/scout-tests/i.test(m.node)&&m.status==="finished");if(l&&c)return{id:t,kind:"success",title:"代码与测试的影响范围已确认",activityRef:n};const d=J_.find(m=>m.pattern.test(s.node));return d?s.status==="running"?{id:t,kind:"progress",title:d.running,activityRef:n}:s.status==="error"?{id:t,kind:"error",title:d.error,activityRef:n}:{id:t,kind:"success",title:d.finished,activityRef:n}:{id:t,kind:"success",title:"执行状态已经更新",activityRef:n}}function iI(e){const t=b6(e),n=`activity:${e.id}`,a=eI(e.args);if(e.status==="running")return{id:n,kind:"progress",title:a?`正在等待新的执行进展,最长等待时间 ${a} 秒`:"正在等待新的执行进展",activityRef:t};if(e.status==="error")return{id:n,kind:"error",title:"等待执行进展时遇到问题",activityRef:t};let s="";typeof e.resultText=="string"?s=e.resultText:typeof e.result=="string"&&(s=e.result);const l=nI(e),c=aI([s,...l?rI(l):[]],n,t);if(c)return c;if(l){if(l.timedOut===!0||l.changed===!1)return{id:n,kind:"warning",title:"等待期间没有新的执行进展",activityRef:t};if(l.changed===!0)return{id:n,kind:"success",title:"已经收到新的执行进展",activityRef:t}}return{id:n,kind:"success",title:"执行状态已经更新",activityRef:t}}function sI(e){const t=Z_(e.toolName);if(t==="technical-only"||t==="inline-detail")return;if(e.toolName==="operationWait")return iI(e);const n=Q_[e.toolName];if(!n)return;let a=n.success;return e.status==="running"?a=n.running:e.status==="error"&&(a=n.error),{id:`activity:${e.id}`,kind:tI(e.status),title:a,activityRef:b6(e)}}function v6(e){return W_[e]??"任务活动"}function xp(e){switch(e){case"starting":return{label:"正在启动",kind:"progress"};case"running":return{label:"运行中",kind:"progress"};case"succeeded":case"finished":case"FINISHED":case"pass":return{label:"已完成",kind:"success"};case"failed":case"partial_failed":case"ERROR":case"FAILED":case"timed-out":return{label:"未完成",kind:"error"};case"needs-reconcile":return{label:"需要同步",kind:"warning"};case"cancelled":case"abandoned":case"superseded":return{label:"已停止",kind:"warning"};default:return{label:"状态已更新",kind:"success"}}}function y6(e){return[e.activityRef??`operation:${e.operationId}`,`operation:${e.operationId}`,...e.toolCallId?[`tool:${e.toolCallId}`]:[]]}function x6(e){return[e.activityRef??`gate:${e.cardId}`]}function w6(e){return[e.activityRef??`artifact:${e.artifactId}`]}function lI(e){return new Set([...e.operations.flatMap(y6),...e.gates.flatMap(x6),...e.artifacts.flatMap(w6)])}function a2(e){return e.updatedSeq??e.eventSeq}function i2(e){const t=Date.parse(e.updatedAt);return Number.isFinite(t)?t:0}function wp(e,t){const n=a2(e),a=a2(t);return n!==void 0&&a!==void 0?n-a:i2(e)-i2(t)}function oI(e){return e.taskId?`task:${e.taskId}`:e.dagRunId?`run:${e.dagRunId}`:`operation:${e.operationId}`}function cI(e){return e.taskId?e.taskId.replace(/^\d{4}-\d{2}-\d{2}-/,"").replace(/[-_]+/g," ").trim()||e.taskId:v6(e.action)}function uI(e){return[...new Set(e)]}function dI(e){const t=new Map;for(const n of e)t.set(n.action,n);return[...t.values()].sort(wp).map(n=>{const a=xp(n.state);return{id:n.operationId,label:v6(n.action),stateLabel:a.label,kind:a.kind,at:n.updatedAt}})}function fI(e){const t=new Map;for(const n of e){const a=n.dagRunId??n.runSummary?.runId;if(!a)continue;const s=t.get(a)??[];s.push(n),t.set(a,s)}return[...t.entries()].flatMap(([n,a])=>{const s=[...a].sort((h,p)=>wp(p,h)),l=s[0];if(!l)return[];const c=s.find(h=>h.runSummary)?.runSummary,d=c?.status??l.state,m=xp(d);return[{runId:n,state:d,stateLabel:m.label,kind:m.kind,updatedAt:l.updatedAt,operationCount:a.length,firstFailedNode:c?.nodes.find(h=>h.status==="ERROR")?.id,failureCategory:c?.failureCategory,inspectHref:l.inspectHref}]}).sort((n,a)=>Date.parse(a.updatedAt)-Date.parse(n.updatedAt))}function S6(e){const t=new Map;for(const n of e){const a=oI(n),s=t.get(a)??[];s.push(n),t.set(a,s)}return[...t.entries()].flatMap(([n,a])=>{const s=[...a].sort(wp),l=s.at(-1);if(!l)return[];const c=xp(l.state);return[{key:n,taskId:l.taskId,displayTitle:cI(l),state:l.state,stateLabel:c.label,kind:c.kind,updatedAt:l.updatedAt,latestOperation:l,operations:s,steps:dI(s),runs:fI(s),activityRefs:uI(s.flatMap(y6)),compactEligible:c.kind==="success"}]}).sort((n,a)=>{const s=n.kind==="progress"||n.kind==="error"?0:1,l=a.kind==="progress"||a.kind==="error"?0:1;return s!==l?s-l:Date.parse(a.updatedAt)-Date.parse(n.updatedAt)})}const mI={operation:"执行记录",contract:"任务契约",dag:"执行流程",report:"报告",html:"HTML 预览"};function hI(e){const{artifact:t}=e,n=!!(t.reportText||t.htmlPreview);return f.jsxs("section",{className:"oc-artifact-card","aria-label":`任务产物:${t.title??t.artifactId}`,"data-activity-ref":t.activityRef??`artifact:${t.artifactId}`,children:[f.jsxs("header",{children:[f.jsxs("div",{children:[f.jsx("small",{children:"任务产物"}),f.jsx("strong",{children:t.title??t.artifactId}),f.jsx("code",{children:t.artifactId})]}),f.jsx("span",{children:mI[t.kind]})]}),t.summary?f.jsx("p",{children:t.summary}):null,n?f.jsxs("details",{className:"oc-artifact-details",children:[f.jsx("summary",{children:"预览与技术详情"}),t.reportText?f.jsx("pre",{children:t.reportText}):null,t.htmlPreview?f.jsx("iframe",{title:`${t.title??t.artifactId} preview`,sandbox:"",srcDoc:t.htmlPreview}):null]}):null,t.inspectHref?f.jsx("footer",{children:f.jsx("button",{className:"btn btn-ghost",type:"button",onClick:()=>window.open(t.inspectHref,"_blank","noopener,noreferrer"),children:"打开产物"})}):null]})}const s2={prepared:"等待确认",confirmed:"已经确认",dispatched:"正在执行",consumed:"已经完成",stale:"已经失效",expired:"已经过期",error:"处理失败"};function l2(e){return e.gateType==="contract-apply"?"确认任务契约变更":e.gateType==="mutation"?"确认执行工作区修改":"确认启动任务执行"}function pI({card:e,origin:t,sessionId:n}){const[a,s]=k.useState(!1),[l,c]=k.useState(),d=async()=>{s(!0),c(void 0);try{let b="contract-apply";e.gateType==="dag-run"?b=e.state==="prepared"?"dag-confirm":"dag-run":e.gateType==="mutation"&&(b="mutation-apply");const x=e.gateType==="dag-run"?{confirmationId:e.confirmationId,...e.state==="prepared"?{humanGateToken:e.humanGateToken}:{}}:{receiptId:e.receiptId,humanGateToken:e.humanGateToken},y=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(n)}/human-gate/${b}`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},body:JSON.stringify(x)}),E=await y.json();if(!y.ok)throw new Error(E.error?.message??`HTTP ${y.status}`)}catch(b){c(b instanceof Error?b.message:String(b))}finally{s(!1)}},m=e.state==="prepared"||e.gateType==="dag-run"&&e.state==="confirmed";let h="确认接受";e.gateType==="mutation"?h="确认执行":e.gateType==="dag-run"&&(h=e.state==="prepared"?"确认边界":"启动执行");const p=(e.displayOnlyChallenges?.length??0)+(e.dagSpine?.length??0);return f.jsxs("section",{className:`oc-human-gate-card is-${e.state}`,"aria-label":`${l2(e)}:${s2[e.state]}`,"data-activity-ref":e.activityRef??`gate:${e.cardId}`,children:[f.jsxs("header",{children:[f.jsxs("div",{children:[f.jsx("small",{children:"人工门禁"}),f.jsx("strong",{children:l2(e)}),f.jsx("code",{children:e.taskId})]}),f.jsx("span",{children:s2[e.state]})]}),e.contractDiffSummary?f.jsx("p",{className:"oc-human-gate-summary",children:e.contractDiffSummary}):null,p>0||e.errorMessage?f.jsxs("details",{className:"oc-human-gate-details",children:[f.jsxs("summary",{children:["门禁详情 · ",p," 项"]}),e.displayOnlyChallenges?.length?f.jsxs("div",{className:"oc-human-gate-challenges",children:[f.jsx("b",{children:"确认前请检查"}),f.jsx("ul",{children:e.displayOnlyChallenges.map(b=>f.jsx("li",{children:b},b))})]}):null,e.dagSpine?.length?f.jsxs("div",{children:[f.jsx("b",{children:"计划执行步骤"}),f.jsx("ol",{children:e.dagSpine.map(b=>f.jsx("li",{children:f.jsx("code",{children:b})},b))})]}):null,e.errorMessage?f.jsx("p",{className:"oc-human-gate-error",children:e.errorMessage}):null]}):null,f.jsxs("footer",{children:[f.jsx("button",{className:"btn btn-ghost",type:"button",onClick:()=>window.open(e.inspectHref,"_blank","noopener,noreferrer"),children:"查看记录"}),f.jsx("button",{className:"btn btn-primary",type:"button",disabled:!m||a,onClick:()=>{d()},children:a?"提交中…":h})]}),l?f.jsx("div",{className:"oc-human-gate-error",children:l}):null]})}const Yr="loop-console.operator-chat.active-session.v1",gI="loop-console.operator-chat.default-landing.v1";function Iu(e){const t=e?.trim().toLowerCase();if(t==="chat")return"chat";if(t==="tasks")return"tasks"}function k6(e){const t=e?.trim().toLowerCase();if(t==="chat"||t==="tasks"||t==="recovery"||t==="night"||t==="models"||t==="settings")return t}function E6(e){const t=n=>e.get(n)?.trim()||void 0;return{...t("taskId")?{taskId:t("taskId")}:{},...t("dagRunId")?{dagRunId:t("dagRunId")}:{},...t("fromNodeId")?{fromNodeId:t("fromNodeId")}:{},...t("featureId")?{featureId:t("featureId")}:{},...t("intent")?{intent:t("intent")}:{}}}function T6(e){const t=String(e??"").replace(/^#/,"");if(!t)return null;const n=t.indexOf("?"),a=n>=0?t.slice(0,n):t,s=n>=0?t.slice(n+1):"",l=(a||"/").split("?")[0]||"/";if(l==="/"||l==="")return null;const c=l.replace(/^\//,"").split("/")[0],d=k6(c);return d?{workspace:d,...E6(new URLSearchParams(s))}:null}function bI(e){const t=new URLSearchParams(e.search),n=e.hash.startsWith("#")?e.hash.slice(1):e.hash,a=new URLSearchParams(n),s=k6(t.get("workspace")??t.get("landing")??a.get("workspace"));return s?{workspace:s,...E6(t)}:null}function vI(e){if(!e)return;const t=T6(e.hash);if(t)return t.workspace;const n=new URLSearchParams(e.search),a=Iu(n.get("landing")??n.get("workspace"));if(a)return a;const s=e.hash.startsWith("#")?e.hash.slice(1):e.hash;return Iu(new URLSearchParams(s).get("workspace"))}function N6(e){return vI(e.location)??Iu(e.storage?.getItem(gI))??Iu(e.env)??"chat"}function C6(e,t={}){const n=new URLSearchParams;for(const[l,c]of Object.entries(t))c?.trim()&&n.set(l,c.trim());const a=n.toString(),s=`/${e}`;return a?`${s}?${a}`:s}function yI(e,t={}){return`#${C6(e,t)}`}function xI(e){return T6(e.hash)??bI(e)}function o2(e,t=900){if(e)return e.length>t?`${e.slice(0,t)}…`:e}function Hm(e){return new Date(e).toLocaleString()}function c2(e){if(!e)return;const t=e.trim();if(/taskId[^\n]*(?:placeholder|占位)|["']?<id>["']?/i.test(t))return"任务编号仍是占位符;请提供实际的 YYYY-MM-DD-<slug> 任务编号后重试。";if(/ENOENT|no such file or directory/i.test(t))return"任务活动缺少所需文件或目录,可进入 DAG 查看详情。";if(/command failed|exited with code/i.test(t))return"相关命令没有成功完成,可进入 DAG 查看详情。";if(!(t.length>220||t.startsWith("{")||t.startsWith("[")||t.includes("[dag execute]")||t.includes("schemaVersion")||/[A-Za-z]:\\/.test(t)))return t}function wI(e){const t=e.latestOperation,n=t.runSummary;if(e.kind==="success"||e.kind==="progress")return;const a=n?.nodes.find(c=>c.status==="ERROR")?.id;if(a){const c=n?.failureCategory?`,原因分类为 ${n.failureCategory}`:"";return`执行在 ${a} 阶段未完成${c}。`}const s=n?.next?.description;if(s&&/fail|error|block|cannot|unable/i.test(s))return s;const l=c2(t.stderrPreview)??c2(t.summaryPreview);return l||(e.kind==="error"?"本次任务活动没有完成,可进入 DAG 查看详情或使用恢复选项。":"本次任务活动需要进一步确认,请查看相关记录。")}function SI(e){const{journey:t}=e,n=t.latestOperation,a=t.runs[0],s=t.runs.slice(1),l=n.inspectHref.startsWith("/")?`${e.origin}${n.inspectHref}`:n.inspectHref,c=wI(t),d=t.kind==="error"||t.kind==="warning",m=(h,p)=>{e.onNavigateWorkspace?e.onNavigateWorkspace(h,p):window.location.assign(yI(h,p))};return e.compact?f.jsxs("details",{className:"oc-journey-compact",children:[f.jsxs("summary",{children:[f.jsx("span",{className:`oc-journey-dot is-${t.kind}`,"aria-hidden":"true"}),f.jsxs("span",{children:[f.jsx("strong",{children:t.displayTitle}),f.jsxs("small",{children:[t.stateLabel," · ",Hm(t.updatedAt)]})]}),f.jsx("span",{"aria-hidden":"true",children:"›"})]}),f.jsxs("div",{className:"oc-journey-compact-body",children:[t.taskId?f.jsx("code",{children:t.taskId}):null,f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>window.open(l,"_blank","noopener,noreferrer"),children:"查看记录"})]})]}):f.jsxs("section",{className:`oc-task-journey-card is-${t.kind}`,"aria-label":`${t.displayTitle}:${t.stateLabel}`,children:[f.jsxs("header",{className:"oc-journey-head",children:[f.jsxs("div",{children:[f.jsxs("div",{className:"oc-journey-state-line",children:[f.jsx("span",{className:`oc-journey-dot is-${t.kind}`,"aria-hidden":"true"}),f.jsx("span",{children:t.stateLabel})]}),f.jsx("strong",{children:t.displayTitle}),t.taskId?f.jsxs("small",{children:["Task · ",f.jsx("code",{children:t.taskId})]}):null]}),f.jsx("time",{dateTime:t.updatedAt,children:Hm(t.updatedAt)})]}),f.jsx("div",{className:"oc-journey-steps","aria-label":"任务旅程",children:t.steps.slice(-6).map(h=>f.jsxs("div",{className:"oc-journey-step",children:[f.jsx("span",{className:`oc-journey-step-icon is-${h.kind}`,"aria-hidden":"true",children:h.kind==="success"?"✓":h.kind==="error"?"!":"•"}),f.jsx("span",{children:h.label}),f.jsx("small",{children:h.stateLabel})]},h.id))}),c?f.jsxs("div",{className:`oc-journey-outcome is-${t.kind}`,children:[f.jsx("strong",{children:d?"当前问题":"最新结果"}),f.jsx("p",{children:c})]}):null,a?f.jsxs("div",{className:"oc-journey-latest-run",children:[f.jsx("span",{children:"最新执行"}),f.jsx("code",{children:a.runId}),f.jsx("b",{className:`is-${a.kind}`,children:a.stateLabel}),a.firstFailedNode?f.jsxs("small",{children:["失败阶段 · ",a.firstFailedNode]}):null]}):null,s.length>0?f.jsxs("details",{className:"oc-journey-history",children:[f.jsxs("summary",{children:["执行历史 ",t.runs.length," 次"]}),f.jsx("div",{children:t.runs.map(h=>f.jsxs("div",{className:"oc-journey-run-row",children:[f.jsx("code",{children:h.runId}),f.jsx("span",{className:`is-${h.kind}`,children:h.stateLabel}),h.firstFailedNode?f.jsx("small",{children:h.firstFailedNode}):null,f.jsx("time",{dateTime:h.updatedAt,children:Hm(h.updatedAt)})]},h.runId))})]}):null,f.jsxs("footer",{className:"oc-journey-actions",children:[f.jsx("button",{className:"btn btn-ghost",type:"button",onClick:()=>{const h=n.dagRunId??a?.runId,p=h?n.inspectHref.startsWith("/")?`${e.origin}/inspect/#/dag/${encodeURIComponent(h)}`:`/inspect/#/dag/${encodeURIComponent(h)}`:l;window.open(p,"_blank","noopener,noreferrer")},children:"进入 DAG"}),d&&(t.taskId||n.dagRunId)?f.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>m("recovery",{taskId:t.taskId,dagRunId:n.dagRunId}),children:"恢复选项"}):null]}),f.jsxs("details",{className:"oc-journey-technical",children:[f.jsxs("summary",{children:["技术详情 · ",t.operations.length," 项活动"]}),f.jsx("div",{className:"oc-journey-technical-body",children:t.operations.map(h=>f.jsxs("div",{className:"oc-journey-operation-row",children:[f.jsxs("div",{children:[f.jsx("code",{children:h.operationId}),f.jsx("span",{children:h.action})]}),h.dagRunId?f.jsxs("small",{children:["run · ",h.dagRunId]}):null,h.controller?f.jsxs("small",{children:["controller · ",h.controller]}):null,h.stderrPreview?f.jsx("pre",{className:"is-error",children:o2(h.stderrPreview)}):null,h.summaryPreview?f.jsx("pre",{children:o2(h.summaryPreview)}):null]},h.operationId))})]})]})}function u2(e){return e.state==="prepared"||e.state==="confirmed"?0:e.state==="dispatched"?1:e.state==="error"?2:3}function Fm(e,t){return e!==null&&t.includes(e)}function kI(e){return e.operations>0?"operations":e.gates>0?"gates":"artifacts"}function EI(e){const t=e.presentation==="sidecar",n=t||e.open,a=k.useRef(null),[s,l]=k.useState("operations"),c=k.useMemo(()=>S6(e.operationCards),[e.operationCards]),d=c.length+e.humanGateCards.length+e.artifactCards.length,m=k.useMemo(()=>[...e.humanGateCards].sort((y,E)=>{const N=u2(y)-u2(E);return N!==0?N:(E.eventSeq??0)-(y.eventSeq??0)}),[e.humanGateCards]),h=k.useMemo(()=>[...e.artifactCards].sort((y,E)=>(E.eventSeq??0)-(y.eventSeq??0)),[e.artifactCards]);if(Fu({open:n&&!t,containerRef:a,triggerRef:e.triggerRef,onEscape:e.onClose}),k.useEffect(()=>{l(kI({operations:c.length,gates:e.humanGateCards.length,artifacts:e.artifactCards.length}))},[e.sessionId]),k.useEffect(()=>{e.focusRef&&(e.focusRef.startsWith("gate:")?l("gates"):e.focusRef.startsWith("artifact:")?l("artifacts"):l("operations"))},[e.focusRef]),k.useEffect(()=>{if(!n||!e.focusRef)return;const y=window.requestAnimationFrame(()=>{const E=a.current;if(!E)return;Array.from(E.querySelectorAll("[data-activity-ref], [data-tool-call-id], [data-activity-refs]")).find(C=>{const I=C.dataset.activityRefs?.split(" ")??[];return C.dataset.activityRef===e.focusRef||I.includes(e.focusRef??"")||C.dataset.toolCallId&&`tool:${C.dataset.toolCallId}`===e.focusRef})?.scrollIntoView({block:"nearest",behavior:"smooth"})});return()=>window.cancelAnimationFrame(y)},[n,s,e.focusRef]),!n||d===0)return null;let p="is-drawer";t?p="is-sidecar":e.presentation==="sheet"&&(p="is-sheet");const b=t&&e.sidecarRect?{top:e.sidecarRect.top,left:e.sidecarRect.left,height:e.sidecarRect.height,width:e.sidecarRect.width}:void 0,x=f.jsxs("aside",{ref:a,id:"oc-activity-rail",className:`oc-activity-rail ${p} is-${e.phase}`,style:b,"aria-label":"本次对话的活动","aria-busy":e.phase==="switching",tabIndex:-1,children:[f.jsxs("header",{className:"oc-activity-rail-head",children:[f.jsxs("div",{children:[f.jsx("strong",{children:"本次对话的活动"}),f.jsx("small",{children:"运行、门禁与任务产物"})]}),f.jsx("span",{className:"oc-activity-count",children:d}),t?null:f.jsx("button",{type:"button",className:"oc-activity-close","aria-label":"关闭运行活动",onClick:e.onClose,children:"×"})]}),f.jsxs("div",{className:"oc-activity-content",children:[f.jsxs("div",{className:"oc-activity-tabs",role:"tablist","aria-label":"活动类型",children:[f.jsxs("button",{type:"button",role:"tab","aria-selected":s==="operations",className:s==="operations"?"is-active":"",onClick:()=>l("operations"),children:["运行 ",f.jsx("span",{children:c.length})]}),f.jsxs("button",{type:"button",role:"tab","aria-selected":s==="gates",className:s==="gates"?"is-active":"",onClick:()=>l("gates"),children:["门禁 ",f.jsx("span",{children:m.length})]}),f.jsxs("button",{type:"button",role:"tab","aria-selected":s==="artifacts",className:s==="artifacts"?"is-active":"",onClick:()=>l("artifacts"),children:["产物 ",f.jsx("span",{children:h.length})]})]}),f.jsxs("div",{className:"oc-activity-list",children:[s==="operations"&&c.length===0?f.jsx("div",{className:"oc-activity-empty",children:"本次对话还没有任务执行记录。"}):null,s==="operations"?c.map((y,E)=>{const N=y.activityRefs;return f.jsxs("div",{"data-activity-refs":N.join(" "),className:`oc-activity-card-wrap${Fm(e.focusRef,N)?" is-focused":""}`,children:[f.jsx(SI,{journey:y,compact:E>0&&y.compactEligible,origin:e.origin,onNavigateWorkspace:e.onNavigateWorkspace}),f.jsx("button",{type:"button",className:"oc-activity-locate",onClick:()=>e.onLocateConversation(N),children:"查看对话位置"})]},y.key)}):null,s==="gates"&&m.length===0?f.jsx("div",{className:"oc-activity-empty",children:"本次对话还没有需要展示的门禁。"}):null,s==="gates"?m.map(y=>{const E=x6(y);return f.jsx("div",{className:`oc-activity-card-wrap${Fm(e.focusRef,E)?" is-focused":""}`,children:f.jsx(pI,{card:y,origin:e.origin,sessionId:e.sessionId})},y.cardId)}):null,s==="artifacts"&&h.length===0?f.jsx("div",{className:"oc-activity-empty",children:"本次对话还没有任务产物。"}):null,s==="artifacts"?h.map(y=>{const E=w6(y);return f.jsx("div",{className:`oc-activity-card-wrap${Fm(e.focusRef,E)?" is-focused":""}`,children:f.jsx(hI,{artifact:y})},y.artifactId)}):null]})]},e.sessionId)]});return t?qu.createPortal(x,document.body):x}const R6=420,A6=12;function TI(e){if(e.layoutMode==="narrow")return"sheet";const t=e.railWidth??R6,n=e.gap??A6;return e.viewportWidth-e.mainRight>=t+n?"sidecar":"drawer"}const NI={presentation:"drawer",sidecarRect:null};function CI(e,t,n){const[a,s]=k.useState(NI);return k.useLayoutEffect(()=>{const l=e.current;if(!l)return;const c=l.closest(".panel--chat")??l;let d=0;const m=()=>{window.cancelAnimationFrame(d),d=window.requestAnimationFrame(()=>{const p=l.getBoundingClientRect(),b=c.getBoundingClientRect(),x=TI({layoutMode:t,viewportWidth:window.innerWidth,mainRight:p.right}),y=x==="sidecar"?{top:b.top,left:p.right+A6,height:b.height,width:R6}:null;s(E=>E.presentation===x&&E.sidecarRect?.top===y?.top&&E.sidecarRect?.left===y?.left&&E.sidecarRect?.height===y?.height&&E.sidecarRect?.width===y?.width?E:{presentation:x,sidecarRect:y})})};m();const h=new ResizeObserver(m);return h.observe(l),c!==l&&h.observe(c),window.addEventListener("resize",m),()=>{window.cancelAnimationFrame(d),h.disconnect(),window.removeEventListener("resize",m)}},[t,e,n]),a}const d2={comfortableMin:620,compactMin:480};function RI(e){return!Number.isFinite(e)||e<0?"extra-compact":e>=d2.comfortableMin?"comfortable":e>=d2.compactMin?"compact":"extra-compact"}function AI(e){return`is-landing-${e}`}const _I=[{label:"新建任务",hint:"先走需求分析 skills,再导入创建任务",prompt:["我要新建任务。请先做需求分析,不要用一句话直接 bootstrapFromPrd。","1. 先问我需求内容和范围(frontend / backend / both,默认 both)。","2. 读取并严格执行 `.agents/skills/analyze-product-requirements/SKILL.md`(`loop-agent init --profile full` 会投影该 skill):按规程澄清访谈、校验,并把产物写到 `docs/product-analysis/<requirement-id>/`(product-analysis.md、requirement-clarification.md、product-requirement.md)。","3. product-requirement 为 complete 且校验通过后,再严格执行 `.agents/skills/analyze-product-dependencies/SKILL.md`,生成 dependency-analysis.md 和按需的 api-documentation.md。","4. 两套产物都校验通过后,再用这些文件 bootstrapFromPrd 创建任务,并建议 taskKind。","若上述 skill 不存在,先说明缺失,并提示运行 `loop-agent init --repo-root . --profile full --merge`。"].join(`
387
387
  `)},{label:"查看任务状态",hint:"列出任务与就绪/阻塞状态",prompt:"列出当前所有 task 及其状态,重点说明哪些是 Ready 可以推进、哪些 Blocked 及阻塞原因。"},{label:"诊断 DAG 运行",hint:"对失败运行跑 Doctor",prompt:"帮我诊断最近失败或异常的 DAG 运行:先列出最近的 DAG 运行,对有问题的运行执行 doctor,总结根因和可执行的恢复方案。"},{label:"恢复或重跑任务",hint:"默认从节点续跑,勿无故新开 task",prompt:"我要恢复失败或卡住的 DAG。请先 dagReport/dagDoctor 看 primaryFailure.nodeId 与 primaryRecovery;默认用 dagRerunPlan→dagRerun 从失败节点续跑(plan 合格后直接 dagRerun,不要 prepareMutationGate)。不要新建 task-id。plan 不合格时:Worker Task Pool Failed 用 workerPoolDoctor 确认后再 workerTaskRetry;独立 Console run 用 standaloneTaskRerun(整单重生,不是从节点续跑)。paused/中断需要 resume 时准备 Human Gate,不要自己调 dagResume。确定后直接帮我发起。"}];function _6(e){const t=e.readiness==="setup-required",n=!!e.disabled||t,a=e.density??"comfortable",s=e.mode==="no-session"?"开始一段新的对话":"今天想推进什么?",l=e.mode==="no-session"?"用自然语言编排 loop-agent:查询状态、诊断问题、创建与恢复任务。可先点选下方建议,或新建空白对话。":"会话已就绪。点选建议快速开场,或在下方输入框直接描述目标。业务写入仍经受治理 DAG。";return f.jsxs("div",{className:`oc-empty ${AI(a)}`,role:"status","data-landing-density":a,children:[f.jsxs("div",{className:"oc-empty-hero",children:[f.jsx("img",{className:"oc-empty-icon oc-empty-brand",src:"/favicon.svg",alt:"","aria-hidden":"true",draggable:!1}),f.jsxs("div",{className:"oc-empty-copy",children:[f.jsx("h3",{children:s}),f.jsx("p",{children:l})]})]}),f.jsx("div",{className:"oc-suggestions","aria-label":"开场建议",children:_I.map(c=>f.jsxs("button",{type:"button",className:"oc-suggestion",onClick:()=>e.onSuggest(c.prompt),disabled:n,children:[f.jsx("strong",{children:c.label}),f.jsx("span",{children:a==="extra-compact"?c.hint.replace(/[,,].*$/,""):c.hint})]},c.label))}),f.jsxs("ul",{className:"oc-empty-tips",children:[f.jsxs("li",{children:[f.jsx("kbd",{children:"@"}),f.jsx("span",{children:"引用仓库文件"})]}),f.jsxs("li",{children:[f.jsx("kbd",{children:"/"}),f.jsx("span",{children:"快捷命令"})]}),f.jsxs("li",{children:[f.jsx("kbd",{children:"Enter"}),f.jsx("span",{children:"发送 · Shift+Enter 换行"})]})]}),e.mode==="no-session"&&e.onCreateSession?f.jsx("button",{type:"button",className:"btn btn-primary oc-empty-cta",onClick:e.onCreateSession,disabled:n,"aria-busy":e.disabled||void 0,children:t?"需先完成 Pi setup":e.disabled?"创建中…":"新建空白对话"}):null]})}function II(e){const{interview:t,interviewAnswer:n,onAnswerChange:a,onAnswer:s}=e;return f.jsxs("section",{className:"oc-draft-card","aria-label":"Requirement Interview",children:[f.jsxs("header",{children:[f.jsx("strong",{children:"Requirement Interview"}),f.jsx("span",{children:t.state})]}),t.question&&f.jsxs("div",{className:"oc-interview-bubble",children:[f.jsx("strong",{children:t.question.text}),f.jsxs("p",{children:["建议:",t.question.recommendation]}),f.jsx("textarea",{value:n,onChange:l=>a(l.target.value),placeholder:"输入答案"}),f.jsxs("div",{children:[f.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>s("override"),disabled:!n.trim(),children:"提交答案"}),f.jsx("button",{className:"btn btn-ghost",type:"button",onClick:()=>s("accept-recommendation"),children:"接受建议"})]})]}),t.draft&&f.jsxs("details",{open:!0,children:[f.jsxs("summary",{children:["TaskContractDraftV1 · ",t.draftSha256?.slice(0,12)]}),f.jsx("pre",{children:JSON.stringify(t.draft,null,2)})]}),t.assessment&&f.jsxs("div",{className:`oc-assessment${t.assessment.fresh?" is-fresh":""}`,children:[f.jsxs("strong",{children:["完整性:",t.assessment.outcome]}),(t.assessment.missingFields??[]).length>0&&f.jsxs("p",{children:["缺失:",t.assessment.missingFields?.join("、")]})]}),t.taskKindRecommendation&&f.jsxs("div",{className:"oc-task-kind-card",children:[f.jsx("span",{children:"taskKind 建议"}),f.jsx("strong",{children:t.taskKindRecommendation}),f.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e.onConfirmTaskKind(),children:"由我确认"}),f.jsx("small",{children:"模型不能代替人类确认。"})]}),t.confirmedTaskKind&&f.jsxs("div",{className:"oc-task-kind-card is-confirmed",children:["已由人类确认:",f.jsx("strong",{children:t.confirmedTaskKind})]})]})}function Or(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:e.toLocaleString()}function MI(e){const t=[],n=e.inputTokens??0,a=e.outputTokens??0,s=e.cacheReadTokens??0,l=e.cacheWriteTokens??0,c=e.cost??0;if(n>0&&t.push(`${Or(n)} in`),a>0&&t.push(`${Or(a)} out`),s>0&&t.push(`${Or(s)} cache R`),l>0&&t.push(`${Or(l)} cache W`),c>0&&t.push(c>=.01?`$${c.toFixed(2)}`:"<$0.01"),t.length===0){const d=e.totalTokens??0;return d>0?`${Or(d)} tokens`:"—"}return t.join(" · ")}function OI(){return f.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[f.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),f.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}function DI(){return f.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:f.jsx("polyline",{points:"20 6 9 17 4 12"})})}function jI(){return f.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[f.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),f.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})}function LI(){return f.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:f.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})})}function Sp(){return f.jsx("svg",{className:"oc-tool-chevron",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:f.jsx("polyline",{points:"4 2.5 7.5 6 4 9.5"})})}function zI(){return f.jsx("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:f.jsx("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"})})}function _h(e){const[t,n]=k.useState(!1),a=()=>{navigator.clipboard?.writeText(e.text).then(()=>{n(!0),window.setTimeout(()=>n(!1),1600)},()=>{})};return f.jsx("button",{type:"button",className:`oc-message-copy${t?" is-copied":""}`,"aria-label":t?"已复制":"复制消息",title:t?"已复制":"复制",onClick:a,children:t?f.jsx(DI,{}):f.jsx(OI,{})})}function f2(e){const{message:t,streaming:n,activeAssistantId:a}=e;if(t.kind==="compaction")return f.jsxs("div",{className:"oc-compaction-card",role:"status",children:[f.jsx("span",{className:"oc-compaction-icon","aria-hidden":"true",children:f.jsx(C8,{size:16})}),f.jsxs("div",{className:"oc-compaction-body",children:[f.jsxs("div",{className:"oc-compaction-heading",children:[f.jsx("strong",{children:"上下文已压缩"}),f.jsx("span",{children:Ym(t.createdAt)}),t.compaction?.tokensBefore?f.jsxs("span",{children:["压缩前 ",Or(t.compaction.tokensBefore)," tokens"]}):null]}),f.jsx("div",{className:"oc-compaction-summary",children:f.jsx(Ah,{text:t.text})})]})]});const s=t.role==="user",l=s?"你":"助手",c=!s&&n&&a!==null&&t.id===a,d=c&&t.text.length===0,m=t.text.trim().length>0;return f.jsxs("div",{className:`oc-row ${s?"is-user":"is-assistant"}`,children:[f.jsxs("div",{className:"oc-meta",children:[!s&&f.jsx("span",{className:"oc-role oc-role-assistant","aria-hidden":"true",children:"π"}),f.jsxs("span",{className:"oc-time",children:[Ym(t.createdAt),f.jsxs("span",{className:"sr-only",children:["(",l,")"]})]}),m&&f.jsx(_h,{text:t.text})]}),f.jsxs("div",{className:`oc-bubble ${s?"oc-bubble-user":"oc-bubble-assistant"}`,children:[m?s?f.jsx("div",{style:{whiteSpace:"pre-wrap"},children:t.text}):f.jsx(Ah,{text:t.text}):d?f.jsx("span",{className:"oc-cursor","aria-hidden":"true"}):null,c&&m&&f.jsx("span",{className:"oc-cursor","aria-hidden":"true"})]})]})}function BI(e){if(!(!e||typeof e!="object"))return e}function ki(e){return typeof e=="string"?e:void 0}function kp(e){if(!Array.isArray(e))return;const t=[];for(const n of e){const a=BI(n);if(!a)continue;const s=ki(a.type)??"";if(s==="thinking"||s==="reasoning"){const l=ki(a.thinking)??ki(a.text)??"";t.push({type:"thinking",thinking:l});continue}if(s==="toolCall"||s==="tool_call"||s==="toolUse"||s==="tool_use"){const l=ki(a.toolCallId)??ki(a.id)??"";if(!l)continue;const c=ki(a.toolName)??ki(a.name);t.push({type:"toolCall",toolCallId:l,...c?{toolName:c}:{}});continue}if(s==="text"||s==="output_text"||s===""){const l=ki(a.text);l!==void 0&&t.push({type:"text",text:l})}}return t}function qI(e,t={}){return e.type==="thinking"&&!t.isStreaming&&e.thinking.trim()===""}function I6(e,t={}){return e.filter(n=>!qI(n,t))}function UI(e){return e.type==="text"}function HI(e,t={}){const n=I6(e,t);let a=-1;for(let s=n.length-1;s>=0;s--)if(!UI(n[s])){a=s;break}return a===-1?{answerBlocks:n,processBlocks:[]}:{answerBlocks:n.slice(a+1),processBlocks:n.slice(0,a+1)}}function FI(e){return e.filter(t=>t.type==="text").map(t=>t.text).join("")}function PI(e){return{key:e,assistants:[],tools:[],processItems:[],live:!1}}function M6(e){const t=[],n=[];let a,s=[];const l=c=>{for(const d of s)d.assistantMessageId||(d.assistantMessageId=c),d.turnId||(d.turnId=a);s=[]};for(const c of e){const d=Date.parse(c.at)||Date.now();if(c.role==="user"){a=`restored-${c.id}`,s=[],t.push({id:c.id,role:"user",text:c.text,createdAt:d});continue}if(c.role==="assistant"){a||(a=`restored-${c.id}`);const m=kp(c.content);t.push({id:c.id,role:"assistant",text:c.text,createdAt:d,...m&&m.length>0?{content:m}:{}}),l(c.id);continue}if(c.role==="tool"){a||(a=`restored-tool-${c.id}`);const m={id:c.toolCallId||c.id,toolName:c.toolName||"tool",status:c.isError===!0?"error":"ok",resultText:c.text,result:c.text,createdAt:d,finishedAt:d,turnId:a,...c.operationId?{operationId:c.operationId}:{}};n.push(m),s.push(m)}}return{messages:t,toolCalls:n}}function $I(e){return[...e].sort((t,n)=>t.eventSeq!==void 0&&n.eventSeq!==void 0&&t.eventSeq!==n.eventSeq?t.eventSeq-n.eventSeq:t.createdAt!==n.createdAt?t.createdAt-n.createdAt:t.id<n.id?-1:1)}function wo(e,t){if(t.length===0)return;const n=$I(t);for(const a of n){const s=sI(a);s?e.push({kind:"activity",activity:s}):e.push({kind:"tool",tool:a})}}function m2(e,t,n,a){let s=[];for(const l of e){if(l.type==="thinking"){wo(n,s),s=[],n.push({kind:"thinking",thinking:l.thinking});continue}if(l.type==="text"){wo(n,s),s=[],l.text.trim()&&n.push({kind:"text",text:l.text});continue}const c=t.tools.find(d=>d.id===l.toolCallId);c&&!a.has(c.id)&&(s.push(c),a.add(c.id))}wo(n,s)}function h2(e,t,n,a){const s=e.tools.filter(l=>!a.has(l.id)&&l.assistantMessageId===t.id);if(s.length!==0){for(const l of s)a.add(l.id);wo(n,s)}}function GI(e){const t=new Set,n=[],a=e.assistants.slice(0,-1),s=e.assistants.at(-1);for(const h of a)m2(I6(h.content??[]),e,n,t),h2(e,h,n,t);const l=s?.content??[],c=HI(l,{isStreaming:e.live});m2(c.processBlocks,e,n,t),s&&h2(e,s,n,t);const d=e.tools.filter(h=>!t.has(h.id));if(d.length>0&&wo(n,d),e.processItems=n,!s)return;if(l.length===0){e.answer=s;return}const m=FI(c.answerBlocks);e.answer={...s,text:m,content:c.answerBlocks}}function KI(e){const t=e.messages.filter(d=>d.role==="user"||d.role==="assistant"),n=[];let a=null;const s=d=>{const m=PI(d);return n.push(m),m};for(const d of t){if(d.role==="user"){a=s(`user-${d.id}`),a.user=d;continue}if(d.kind==="compaction"){a=s(`compaction-${d.id}`),a.assistants.push(d),a=null;continue}a||(a=s(`assistant-${d.id}`)),a.assistants.push(d)}const l=new Set,c=new Map;for(const d of n)for(const m of d.assistants)c.set(m.id,d);for(const d of e.toolCalls)if(d.assistantMessageId){const m=c.get(d.assistantMessageId);m&&(m.tools.push(d),l.add(d.id))}for(const d of e.toolCalls)if(!l.has(d.id)&&d.turnId){const m=n.find(p=>p.tools.some(b=>b.turnId===d.turnId)||p.key===`turn-${d.turnId}`||p.user&&`restored-${p.user.id}`===d.turnId);if(m){m.tools.push(d),l.add(d.id);continue}const h=n.find(p=>d.turnId===`restored-${p.user?.id}`||p.assistants.some(b=>d.turnId===`restored-${b.id}`));h&&(h.tools.push(d),l.add(d.id))}for(const d of e.toolCalls){if(l.has(d.id))continue;const m=n.find((h,p)=>{const b=h.user?.createdAt??h.assistants[0]?.createdAt??0,y=n[p+1]?.user?.createdAt??Number.POSITIVE_INFINITY;return d.createdAt>=b&&d.createdAt<y});m&&(m.tools.push(d),l.add(d.id))}for(const d of n)d.tools.sort((m,h)=>m.eventSeq!==void 0&&h.eventSeq!==void 0?m.eventSeq-h.eventSeq:m.createdAt-h.createdAt),d.live=e.streaming&&e.activeAssistantId!==null&&d.assistants.some(m=>m.id===e.activeAssistantId),GI(d);return n}function VI(e,t){return t<=0?[]:e.length<=t?[...e]:e.slice(-t)}function YI(e,t){const n=e.length,a=t?.thinkingCount??0,s=t?.textCount??0,l=t?.activityCount??0,c=a+s+l+n,d=e.filter(p=>p.status==="error").length+(t?.activityErrorCount??0),m=e.filter(p=>p.status==="running").length+(t?.activityRunningCount??0),h=[`处理详情 · ${c} 步`];return n>0&&h.push(`${n} 工具`),l>0&&h.push(`${l} 进展`),d>0?h.push(`${d} 出错`):m>0&&h.push("运行中"),{count:n,errorCount:d,runningCount:m,stepCount:c,label:h.join(" · ")}}function XI(e){const t=[];let n=0,a=0,s=0,l=0,c=0;for(const d of e)d.kind==="thinking"?n+=1:d.kind==="text"?a+=1:d.kind==="activity"?(s+=1,d.activity.kind==="error"?l+=1:d.activity.kind==="progress"&&(c+=1)):t.push(d.tool);return YI(t,{thinkingCount:n,textCount:a,activityCount:s,activityErrorCount:l,activityRunningCount:c})}function O6(e){const{entry:t}=e,[n,a]=k.useState(t.status==="error"),[s,l]=k.useState(!1),c=t.status==="running"?"运行中":t.status==="error"?"出错":"完成",d=`is-${t.status}`,m=O8(t.args,{toolName:t.toolName}),h=z8(t.createdAt,t.finishedAt),p=D8(t.toolName),b=z2(t.resultText??t.result),x=L8(b,s?{maxLen:Number.MAX_SAFE_INTEGER}:void 0);return f.jsxs("div",{className:`oc-tool ${t.status==="error"?"is-error":""} ${t.status==="running"?"is-running":""}`,children:[f.jsxs("button",{type:"button",className:"oc-tool-head","aria-expanded":n,onClick:()=>a(y=>!y),children:[f.jsx(Sp,{}),f.jsx("span",{className:"oc-tool-icon","aria-hidden":"true",children:f.jsx(zI,{})}),f.jsx("span",{className:"oc-tool-name",children:t.toolName}),m&&f.jsx("span",{className:"oc-tool-args",children:m}),h!==void 0&&f.jsxs("span",{className:"oc-tool-duration",children:[h,"s"]}),f.jsx("span",{className:`oc-tool-status ${d}`,children:c})]}),n&&f.jsxs("div",{className:"oc-tool-body",children:[t.args!==void 0&&f.jsxs("div",{className:"oc-tool-section",children:[f.jsx("div",{className:"oc-tool-label",children:p.argsLabel}),f.jsx("pre",{className:"oc-tool-code",children:j8(t.args)})]}),(t.resultText!==void 0||t.result!==void 0)&&f.jsxs("div",{className:"oc-tool-section",children:[f.jsx("div",{className:"oc-tool-label",children:t.status==="error"?"错误":p.resultLabel}),f.jsx("pre",{className:"oc-tool-code",children:x.text}),x.truncated&&!s&&f.jsx("button",{type:"button",className:"btn btn-ghost oc-tool-expand-result",onClick:()=>l(!0),children:"展开全部"})]}),t.status==="running"&&t.resultText===void 0&&t.result===void 0&&t.args===void 0&&f.jsx("div",{className:"oc-tool-section",children:f.jsx("div",{className:"oc-tool-waiting",children:"等待结果…"})})]})]})}function ZI(e){const{thinking:t,defaultOpen:n}=e,[a,s]=k.useState(n);return k.useEffect(()=>{s(n)},[n]),f.jsxs("div",{className:"oc-thinking",children:[f.jsxs("button",{type:"button",className:`oc-thinking-summary${a?" is-open":""}`,"aria-expanded":a,onClick:()=>s(l=>!l),children:[f.jsx(Sp,{}),f.jsx("span",{children:"思考"})]}),a?f.jsx("pre",{className:"oc-thinking-body",children:t||"…"}):null]})}function WI(e){return e.kind==="progress"?"••":e.kind==="success"?"✓":e.kind==="warning"?"!":"×"}function QI(e){const{activity:t,onActivate:n}=e,a=!!(t.activityRef&&n&&(e.canActivate?.(t.activityRef)??!0)),s=f.jsxs(f.Fragment,{children:[f.jsx("span",{className:"oc-semantic-activity-icon","aria-hidden":"true",children:WI(t)}),f.jsxs("span",{className:"oc-semantic-activity-copy",children:[f.jsx("strong",{children:t.title}),t.detail?f.jsx("small",{children:t.detail}):null]}),a?f.jsx("span",{className:"oc-semantic-activity-link",children:"查看详情"}):null]});if(a&&t.activityRef&&n){const l=t.activityRef;return f.jsx("button",{type:"button",className:`oc-semantic-activity is-${t.kind}`,"data-activity-ref":l,onClick:()=>n(l),children:s})}return f.jsx("div",{className:`oc-semantic-activity is-${t.kind}`,"data-activity-ref":t.activityRef,children:s})}function JI(e){const{items:t,live:n}=e,[a,s]=k.useState(!1);k.useEffect(()=>{n||s(!1)},[n]);const l=XI(t),c=f.jsx("div",{className:"oc-process-inline-body",children:t.map((d,m)=>{if(d.kind==="thinking")return f.jsx(ZI,{thinking:d.thinking,defaultOpen:n},`thinking-${m}`);if(d.kind==="text")return f.jsx("div",{className:"oc-process-text",children:d.text},`text-${m}`);if(d.kind==="activity")return f.jsx(QI,{activity:d.activity,onActivate:e.onActivateActivity,canActivate:e.canActivateActivity},d.activity.id);if(d.kind==="tool")return f.jsx(O6,{entry:d.tool},d.tool.id)})});return n?f.jsx("div",{className:"oc-process-inline is-live",children:c}):f.jsxs("div",{className:"oc-process-inline",children:[f.jsxs("button",{type:"button",className:`oc-process-inline-summary${a?" is-open":""}${l.errorCount>0?" is-error":l.runningCount>0?" is-running":""}`,"aria-expanded":a,onClick:()=>s(d=>!d),children:[f.jsx(Sp,{}),f.jsx("span",{children:l.label})]}),a?c:null]})}function eM(e){const{scrollContainerRef:t,messagesEndRef:n,onScroll:a,hasThread:s,readiness:l,streaming:c,streamingAssistantId:d,messagesCount:m,visibleCount:h,onLoadMore:p,turnGroups:b,interview:x}=e;return f.jsxs("div",{ref:t,className:`oc-messages${s?" has-thread":" is-empty"}`,onScroll:a,children:[s?null:f.jsx(_6,{mode:"empty-session",readiness:l,disabled:c,onSuggest:e.onSuggest}),s&&m>h&&f.jsx("button",{type:"button",className:"btn btn-ghost oc-load-history",onClick:p,children:"加载更早消息"}),s&&b.map((y,E)=>{const N=y.user??y.assistants[0],R=E>0?b[E-1].user??b[E-1].assistants[0]:void 0,C=!!N&&(!R||xf(R.createdAt)!==xf(N.createdAt)),I=y.answer,O=!!I?.text.trim(),X=y.live&&y.processItems.length===0;return f.jsxs("div",{className:"oc-turn-group",children:[C&&N&&f.jsx("div",{className:"oc-day-sep",children:xf(N.createdAt)}),y.user&&f.jsx(f2,{message:y.user,streaming:c,activeAssistantId:d}),y.processItems.length>0&&f.jsx(JI,{items:y.processItems,live:y.live,onActivateActivity:e.onActivateActivity,canActivateActivity:e.canActivateActivity}),I&&(O||X)?f.jsx(f2,{message:I,streaming:c,activeAssistantId:d}):null]},y.key)}),x&&f.jsx(II,{interview:x,interviewAnswer:e.interviewAnswer,onAnswerChange:e.onInterviewAnswerChange,onAnswer:e.onAnswerInterview,onConfirmTaskKind:e.onConfirmTaskKind}),f.jsx("div",{ref:n})]})}const tM={auto:"auto(跟随 Pi 默认等级)",off:"off · 关闭",minimal:"minimal · 极简",low:"low · 低",medium:"medium · 中",high:"high · 高",xhigh:"xhigh · 极高",max:"max · 最高"};function D6(e,t){const n=t.trim().toLowerCase(),a=new Map;for(const s of e){if(n&&!s.provider.toLowerCase().includes(n)&&!s.id.toLowerCase().includes(n)&&!(s.name??"").toLowerCase().includes(n))continue;const l=a.get(s.provider)??[];l.push(s),a.set(s.provider,l)}return[...a.entries()].map(([s,l])=>({provider:s,models:l}))}function nM(e,t){const n=new Set,a=[],s=l=>{n.has(l)||(n.add(l),a.push({value:l,label:tM[l]??l,...l==="auto"&&t?{effective:t}:{}}))};s("auto");for(const l of e)s(l);return a}function Ro(e,t){return`${e}/${t}`}function Ih(e){return{...e.modelProvider&&e.modelId?{model:{provider:e.modelProvider,modelId:e.modelId}}:{},...e.thinkingLevel?{thinkingLevel:e.thinkingLevel}:{}}}function j6(e,t){return{...e,model:t.model??e.model,thinkingLevel:t.thinkingLevel??e.thinkingLevel}}function rM(e,t){const n=j6(e,t);return n.model?.provider===e.model?.provider&&n.model?.modelId===e.model?.modelId&&n.thinkingLevel===e.thinkingLevel}function aM(){return f.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12","aria-hidden":"true",children:f.jsx("path",{d:"M2.6 4.2 6 7.6l3.4-3.4",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})}function iM(e){const t=sl(),[n,a]=k.useState(!1),[s,l]=k.useState(""),[c,d]=k.useState(0),m=k.useRef(null),h=k.useRef(null),p=t.snapshot,b=t.status==="loading",x=t.status==="error"?t.error:null,y=p?(p.models??[]).map(I=>({provider:I.provider,id:I.id,...I.name?{name:I.name}:{},...I.hasCredentials!==void 0?{hasCredentials:I.hasCredentials}:{}})):e.models,E=k.useMemo(()=>D6(y,s),[y,s]),N=k.useMemo(()=>E.flatMap(I=>I.models),[E]);k.useEffect(()=>{n&&(l(""),d(0),window.setTimeout(()=>h.current?.focus(),0))},[n]),k.useEffect(()=>{if(!n)return;const I=X=>{const q=m.current;q&&X.target instanceof Node&&!q.contains(X.target)&&a(!1)},O=X=>{X.key==="Escape"&&a(!1)};return document.addEventListener("mousedown",I),document.addEventListener("keydown",O),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",O)}},[n]);const R=I=>{if(e.disabled)return;const O=N[I];O&&(a(!1),e.onSelect(O.provider,O.id))},C=I=>{if(I.key==="ArrowDown"){I.preventDefault(),d(O=>N.length?(O+1)%N.length:0);return}if(I.key==="ArrowUp"){I.preventDefault(),d(O=>N.length?(O-1+N.length)%N.length:0);return}if(I.key==="Enter"){I.preventDefault(),R(c);return}if(I.key==="Escape"){I.preventDefault(),a(!1);return}};return f.jsxs("div",{className:"oc-select-menu oc-model-menu",ref:m,children:[f.jsxs("button",{type:"button",className:"oc-select-trigger","aria-haspopup":"listbox","aria-expanded":n,title:"选择模型",disabled:e.disabled,onClick:()=>a(I=>!I),children:[f.jsx("span",{className:"oc-select-trigger-label",children:e.triggerLabel}),f.jsx(aM,{})]}),n&&f.jsxs("div",{className:"oc-select-panel oc-model-panel",role:"listbox","aria-label":"选择模型",children:[f.jsx("input",{ref:h,className:"oc-select-search",placeholder:"搜索模型或 Provider…",value:s,onChange:I=>{l(I.target.value),d(0)},onKeyDown:C}),b&&f.jsx("div",{className:"oc-select-status",children:"模型列表加载中…"}),x&&f.jsxs("div",{className:"oc-select-status is-error",children:[f.jsxs("span",{children:[x.code?`${x.code}:`:"",x.message]}),f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>{tl()},children:"重试"})]}),!b&&!x&&E.length===0&&f.jsx("div",{className:"oc-select-status",children:"当前没有可用模型(真实空态,未伪造列表)"}),E.map(I=>f.jsxs("div",{className:"oc-model-group",children:[f.jsx("div",{className:"oc-model-group-head",children:I.provider}),I.models.map(O=>{const X=Ro(O.provider,O.id),q=X===e.activeModelRef,A=N[c]===O;return f.jsxs("button",{type:"button",role:"option","aria-selected":q,disabled:e.disabled,className:`oc-select-option oc-model-option${A?" is-highlighted":""}${q?" is-active":""}`,onMouseDown:F=>F.preventDefault(),onClick:()=>{e.disabled||(a(!1),e.onSelect(O.provider,O.id))},children:[f.jsxs("span",{className:"oc-model-option-name",children:[O.name?`${O.name} · `:"",O.id]}),q&&f.jsx("span",{className:"oc-model-option-check",children:"✓"})]},X)})]},I.provider))]})]})}function sM(){return f.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12","aria-hidden":"true",children:f.jsx("path",{d:"M2.6 4.2 6 7.6l3.4-3.4",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})}function lM(e){const t=sl(),[n,a]=k.useState(!1),[s,l]=k.useState(0),c=k.useRef(null),d=e.effectiveLevel??t.snapshot?.selection?.effectiveThinkingLevel,m=t.snapshot?.thinkingLevels?.length?t.snapshot.thinkingLevels.map(x=>x.value):void 0,h=k.useMemo(()=>nM(m??e.levels,d),[m,e.levels,d]);k.useEffect(()=>{n&&l(0)},[n]),k.useEffect(()=>{if(!n)return;const x=E=>{const N=c.current;N&&E.target instanceof Node&&!N.contains(E.target)&&a(!1)},y=E=>{E.key==="Escape"&&a(!1)};return document.addEventListener("mousedown",x),document.addEventListener("keydown",y),()=>{document.removeEventListener("mousedown",x),document.removeEventListener("keydown",y)}},[n]);const p=x=>{if(e.disabled)return;const y=h[x];y&&(a(!1),e.onSelect(y.value))},b=x=>{if(x.key==="ArrowDown"){x.preventDefault(),l(y=>h.length?(y+1)%h.length:0);return}if(x.key==="ArrowUp"){x.preventDefault(),l(y=>h.length?(y-1+h.length)%h.length:0);return}if(x.key==="Enter"){x.preventDefault(),p(s);return}if(x.key==="Escape"){x.preventDefault(),a(!1);return}};return f.jsxs("div",{className:"oc-select-menu oc-thinking-menu",ref:c,children:[f.jsxs("button",{type:"button",className:"oc-select-trigger","aria-haspopup":"listbox","aria-expanded":n,title:"思考等级",disabled:e.disabled,onClick:()=>a(x=>!x),children:[f.jsx("span",{className:"oc-select-trigger-label",children:e.triggerLabel}),f.jsx(sM,{})]}),n&&f.jsx("div",{className:"oc-select-panel oc-thinking-panel",role:"listbox","aria-label":"思考等级",onKeyDown:b,children:h.map((x,y)=>{const E=x.value===e.activeValue,N=y===s;return f.jsxs("button",{type:"button",role:"option","aria-selected":E,disabled:e.disabled,className:`oc-select-option oc-thinking-option${N?" is-highlighted":""}${E?" is-active":""}`,onMouseDown:R=>R.preventDefault(),onClick:()=>{e.disabled||(a(!1),e.onSelect(x.value))},children:[f.jsx("span",{className:"oc-thinking-option-label",children:x.label}),x.value==="auto"&&x.effective?f.jsxs("span",{className:"oc-thinking-badge",children:["Pi 实际:",x.effective]}):null,E&&f.jsx("span",{className:"oc-model-option-check",children:"✓"})]},x.value)})})]})}const Pm="--oc-shortcut-palette-available-height",oM=8,cM=8;function uM(e){const t=e.viewportTop??0,n=e.topInset??oM,a=e.anchorGap??cM;if([e.boundaryTop,e.anchorTop,t,n,a].some(c=>!Number.isFinite(c)))return null;const l=Math.max(e.boundaryTop,t);return Math.max(0,Math.floor(e.anchorTop-l-n-a))}function dM(){return f.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[f.jsx("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),f.jsx("circle",{cx:"8.5",cy:"10",r:"1.5"}),f.jsx("path",{d:"m21 16-5.5-5.5L9 17"})]})}function fM(e){const{composer:t,streaming:n,turnPhase:a,deferredTurn:s,hasThread:l}=e,c=k.useRef(null),d=sl(),m=d.reloading,h=d.reloadError,b=d.mutationBusy||m||a!=="idle",x=s?"textPreview"in s?s.textPreview:s.text:"",y=s?"imageCount"in s?s.imageCount:s.images.length:0,E=s?.state==="dispatching"?"正在确认发送":s?.state==="accepted"?"已进入发送":s?.state==="failed"?"发送失败":"等待上一轮停止后发送",N=k.useCallback(()=>{t.setInput(""),t.setShortcutOpen(!1),el()},[t.setInput,t.setShortcutOpen]),R=k.useCallback(A=>{const F=t.isComposingNow()||A.nativeEvent.isComposing,J=t.recentlyComposedNow();if(A.key==="Enter"&&!A.shiftKey&&!F&&!J&&(!n||a==="stopping")){if(t.shortcutOpen&&t.filteredShortcuts.length>0){if((t.filteredShortcuts[t.shortcutIndex]??t.filteredShortcuts[0])?.command==="/reload"){A.preventDefault(),N();return}}else if(t.input.trim()==="/reload"){A.preventDefault(),N();return}}e.onKeyDown(A)},[t.isComposingNow,t.recentlyComposedNow,t.shortcutOpen,t.filteredShortcuts,t.shortcutIndex,t.input,N,n,a,e.onKeyDown]),C=k.useCallback((A,F)=>{if(F==="pi-prompt"||A==="/name"||A==="/compact"){t.setInput(`${A} `),t.setShortcutOpen(!1),t.textareaRef.current?.focus();return}if(A==="/reload"){N();return}e.onRunShortcut(A)},[N,e.onRunShortcut,t]),I=k.useCallback(()=>{if(t.input.trim()==="/reload"){N();return}e.onSend(t.input)},[t.input,N,e.onSend]);k.useEffect(()=>{if(!t.shortcutOpen||t.filteredShortcuts.length===0||!e.paletteKeyboardNavRef.current)return;const A=e.shortcutPaletteRef.current;if(!A)return;A.querySelector(`[data-shortcut-index="${t.shortcutIndex}"]`)?.scrollIntoView({block:"nearest",inline:"nearest"}),e.paletteKeyboardNavRef.current=!1},[t.shortcutOpen,t.filteredShortcuts,t.shortcutIndex,e.shortcutPaletteRef,e.paletteKeyboardNavRef]),k.useEffect(()=>{if(!t.shortcutOpen||t.filteredShortcuts.length===0)return;const A=c.current,F=e.shortcutPaletteRef.current,J=A?.closest(".oc-main")??null;if(!A||!F||!J)return;let W=0;const z=()=>{W=0;const te=J.getBoundingClientRect(),G=A.getBoundingClientRect(),K=uM({boundaryTop:te.top,anchorTop:G.top,viewportTop:window.visualViewport?.offsetTop??0});if(K===null){F.style.removeProperty(Pm);return}F.style.setProperty(Pm,`${K}px`)},U=()=>{W!==0&&window.cancelAnimationFrame(W),W=window.requestAnimationFrame(z)};z();const H=typeof ResizeObserver>"u"?null:new ResizeObserver(U);return H?.observe(J),H?.observe(A),window.addEventListener("resize",U),window.visualViewport?.addEventListener("resize",U),window.visualViewport?.addEventListener("scroll",U),()=>{W!==0&&window.cancelAnimationFrame(W),H?.disconnect(),window.removeEventListener("resize",U),window.visualViewport?.removeEventListener("resize",U),window.visualViewport?.removeEventListener("scroll",U),F.style.removeProperty(Pm)}},[t.shortcutOpen,t.filteredShortcuts.length,e.layoutMode,e.shortcutPaletteRef]);const O=(()=>{const A=e.processSummary;return A?A.statusKind==="error"?`查看工具调用记录,共 ${A.count} 次,其中 ${A.statusLabel}`:A.statusKind==="running"?`查看工具调用记录,共 ${A.count} 次,${A.statusLabel||"正在运行"}`:`查看工具调用记录,共 ${A.count} 次,全部已完成`:"查看工具调用记录"})(),X=(()=>{const A=e.usage.inputTokens,F=e.usage.outputTokens,J=e.usage.cacheReadTokens,W=e.usage.cacheWriteTokens,z=e.usage.cost??0,U=e.usage.contextUsage,H=[];if(U&&(U.percent!==null||U.tokens!==null)){const te=U.percent!==null?`${Math.round(U.percent*10)/10}%`:"—",G=U.contextWindow>0?Or(U.contextWindow):"—",K=U.tokens!==null?Or(U.tokens):"—";H.push(f.jsxs("span",{className:`oc-usage-part is-context${U.percent!==null&&U.percent>=80?" is-high":""}`,title:`上下文占用 ${K} / ${G} tokens(达到约 80% 时建议压缩上下文)`,children:["上下文 ",te," / ",G]},"context"))}if(A>0&&H.push(f.jsxs("span",{className:"oc-usage-part is-in",title:"输入 tokens",children:["↑ ",Or(A)]},"in")),F>0&&H.push(f.jsxs("span",{className:"oc-usage-part is-out",title:"输出 tokens",children:["↓ ",Or(F)]},"out")),J>0&&H.push(f.jsxs("span",{className:"oc-usage-part",title:"缓存命中:这部分输入由提供商 prompt 缓存复用,计费约为原价的 10%",children:[f.jsx(yv,{size:12,"aria-hidden":"true"}),"缓存命中 ",Or(J)]},"cache-read")),W>0&&H.push(f.jsxs("span",{className:"oc-usage-part",title:"缓存写入:本次新建立 prompt 缓存的部分,下次请求可低价复用",children:[f.jsx(yv,{size:12,"aria-hidden":"true"}),"缓存写入 ",Or(W)]},"cache-write")),z>0&&H.push(f.jsx("span",{className:"oc-usage-part",children:z>=.01?`$${z.toFixed(2)}`:"<$0.01"},"cost")),H.length===0){const te=e.usage.totalTokens;te>0&&H.push(f.jsxs("span",{className:"oc-usage-part",children:[Or(te)," tokens"]},"total"))}return H})(),q=f.jsxs(f.Fragment,{children:[f.jsxs("div",{className:"oc-runtime-controls-group",children:[f.jsx(iM,{models:e.models,activeModelRef:e.activeModelRef,triggerLabel:e.activeModelRef||"选择模型",disabled:b,onSelect:(A,F)=>e.onSwitchRuntime({provider:A,modelId:F})}),f.jsx(lM,{levels:e.thinkingLevels,activeValue:e.activeThinkingLevel||"auto",triggerLabel:e.activeThinkingLevel||"auto",disabled:b,onSelect:A=>e.onSwitchRuntime({thinkingLevel:A})}),f.jsxs("span",{className:"oc-usage",title:MI(e.usage),children:[f.jsx("span",{className:"oc-usage-state",children:a==="stopping"?"正在停止":a==="running"?"运行中":"空闲"}),e.unread>0?f.jsxs("span",{className:"oc-usage-unread",children:[e.unread," 未读"]}):null,X]}),e.processSummary&&f.jsxs("button",{type:"button",ref:e.processTriggerRef,className:`oc-process-summary is-${e.processSummary.statusKind}${e.processOpen?" is-open":""}`,"aria-expanded":e.processOpen,"aria-controls":"oc-process-panel","aria-label":O,title:O,onClick:e.onToggleProcess,children:[f.jsx("span",{className:"oc-process-summary-label",children:"调用记录"}),f.jsx("span",{className:"oc-process-summary-badge",children:e.processSummary.count}),e.processSummary.statusKind!=="ok"&&e.processSummary.statusLabel?f.jsx("span",{className:"oc-process-summary-status",children:e.processSummary.statusLabel}):null]})]}),f.jsxs("div",{className:"oc-runtime-controls-group is-right",children:[f.jsxs("button",{type:"button",className:"btn btn-ghost",onClick:e.onCompact,disabled:a!=="idle"||!l||e.compacting,title:e.compacting?"正在压缩上下文…":l?a!=="idle"?"生成中,暂不可压缩":"压缩上下文,释放 token":"先进行对话后再压缩上下文","aria-label":e.compacting?"正在压缩上下文…":l?a!=="idle"?"生成中,暂不可压缩":"压缩上下文,释放 token":"先进行对话后再压缩上下文",children:[e.compacting?f.jsx("span",{className:"oc-spinner oc-spinner-inline","aria-hidden":"true"}):null,e.compacting?"压缩中…":"压缩"]}),e.runtimeContext?f.jsx("button",{type:"button",ref:e.runtimeContextTriggerRef,className:`btn btn-ghost oc-runtime-context-toggle${e.runtimeContextOpen?" is-active":""}`,"aria-expanded":e.runtimeContextOpen,"aria-controls":"oc-runtime-context-panel",onClick:e.onToggleRuntimeContext,children:"注入上下文"}):null]})]});return f.jsx("div",{className:"oc-composer",children:f.jsxs("div",{className:"oc-composer-inner",ref:c,children:[t.fileOptions.length>0&&f.jsx("div",{className:"oc-file-palette",role:"listbox","aria-label":"Repository files",children:t.fileOptions.map(A=>f.jsx("button",{type:"button",role:"option",className:A.endsWith("/")?"is-dir":void 0,onMouseDown:F=>F.preventDefault(),onClick:()=>t.insertFileReference(A),children:f.jsxs("code",{children:["@",A]})},A))}),t.pendingImages.length>0&&f.jsx("div",{className:"oc-attachment-list",children:t.pendingImages.map(A=>f.jsxs("span",{children:[A.name,f.jsx("button",{type:"button","aria-label":`移除 ${A.name}`,onClick:()=>t.removeImage(A),children:"×"})]},A.name))}),f.jsxs("div",{className:"oc-composer-toolbar",children:[f.jsxs("label",{className:"oc-attach-button oc-attach-icon",title:"添加图片","aria-label":"添加图片",children:[f.jsx(dM,{}),f.jsx("span",{className:"sr-only",children:"添加图片"}),f.jsx("input",{type:"file",accept:"image/png,image/jpeg,image/gif,image/webp",multiple:!0,hidden:!0,onChange:A=>{t.addImagesFromFiles(Array.from(A.target.files??[]).slice(0,4)),A.target.value=""}})]}),f.jsxs("span",{className:"oc-composer-hint",children:[f.jsx("span",{className:"oc-kbd",children:"Enter"})," 发送"]}),f.jsxs("span",{className:"oc-composer-hint",children:[f.jsx("span",{className:"oc-kbd",children:"Shift"}),"+",f.jsx("span",{className:"oc-kbd",children:"Enter"})," 换行"]}),m&&f.jsx("span",{className:"oc-reload-status",children:"正在重新加载会话…"})]}),t.shortcutOpen&&t.filteredShortcuts.length>0&&f.jsxs("div",{className:"oc-shortcut-palette",id:"oc-shortcut-palette",ref:e.shortcutPaletteRef,role:"listbox","aria-label":"命令","aria-busy":t.dynamicCommandsLoading||void 0,"data-layout-mode":e.layoutMode,children:[f.jsxs("div",{className:"oc-shortcut-palette-head",children:[f.jsxs("strong",{children:["命令 · ",t.filteredShortcuts.length]}),t.dynamicCommandsLoading?f.jsx("span",{className:"oc-shortcut-palette-meta",children:"正在加载扩展、提示词与技能…"}):null,t.dynamicCommandsError?f.jsxs("span",{className:"oc-shortcut-palette-meta is-error",children:[t.dynamicCommandsError,f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>t.retryDynamicCommands(),children:"重试"})]}):null]}),f.jsx("div",{className:"oc-shortcut-palette-body",children:e.paletteModel.map(A=>f.jsxs("div",{className:"oc-shortcut-group",children:[f.jsxs("small",{children:[A.label," · ",A.items.length]}),A.items.map(({entry:F,globalIndex:J})=>f.jsxs("button",{type:"button",role:"option",id:`oc-shortcut-option-${J}`,"aria-label":F.command,"aria-describedby":`oc-shortcut-option-desc-${J}`,"aria-selected":J===t.shortcutIndex,className:J===t.shortcutIndex?"is-active":"","data-shortcut-index":J,title:F.command,onMouseEnter:()=>t.setShortcutIndex(J),onMouseDown:W=>W.preventDefault(),onClick:W=>{W.currentTarget.scrollIntoView({block:"nearest"}),C(F.command,F.action)},children:[f.jsx("code",{children:F.command}),f.jsx("small",{id:`oc-shortcut-option-desc-${J}`,children:F.description})]},`${F.source}:${F.command}`))]},A.source))})," "]}),s?f.jsxs("div",{className:`oc-deferred-turn is-${s.state}`,role:"status",children:[f.jsxs("div",{children:[f.jsx("strong",{children:E}),f.jsx("span",{children:x||(y>0?`${y} 张图片`:"待发送消息")})]}),s.state==="queued"||s.state==="failed"?f.jsx("button",{type:"button",onClick:e.onCancelDeferred,children:"移回输入框"}):null]}):null,f.jsxs("div",{className:`oc-composer-shell${a!=="idle"?" is-busy":""}`,children:[f.jsx("textarea",{ref:t.textareaRef,className:"oc-textarea",value:t.input,rows:3,placeholder:a==="stopping"?"上一轮正在停止…输入后可排队自动发送":n?"正在生成回复…可先输入下一轮内容,停止后发送(Enter 暂不发送)":l?"输入消息… Enter 发送 · Shift+Enter 换行":"描述目标,或点选上方建议开始…",onChange:A=>t.handleInputChange(A.target.value),onKeyDown:R,onCompositionStart:t.onCompositionStart,onCompositionEnd:t.onCompositionEnd,"aria-expanded":t.shortcutOpen,"aria-controls":t.shortcutOpen?"oc-shortcut-palette":void 0,"aria-activedescendant":t.shortcutOpen&&t.filteredShortcuts.length>0?`oc-shortcut-option-${t.shortcutIndex}`:void 0}),a==="running"?f.jsxs("button",{type:"button",className:"oc-stop",title:"对话进行中,点击停止","aria-label":"对话进行中,点击停止",onClick:e.onStop,children:[f.jsx("span",{className:"oc-spinner","aria-hidden":"true"}),f.jsx(LI,{})]}):f.jsx("button",{type:"button",className:"oc-send",title:a==="stopping"?"停止后发送":"发送","aria-label":a==="stopping"?"停止后发送":"发送",onClick:I,disabled:!t.input.trim()&&t.pendingImages.length===0||m,children:f.jsx(jI,{})})]}),h&&f.jsxs("div",{className:"oc-reload-banner is-error",role:"alert",children:[f.jsxs("span",{children:[h.code?`${h.code}:`:"",h.message]}),f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>{el()},children:"重试"})]}),f.jsx("div",{className:"oc-runtime-controls",children:q})]})})}function mM(e){const{toolCalls:t,onClose:n,overlay:a=!1}=e,s=k.useRef(null);return Fu({open:a,containerRef:s,triggerRef:e.triggerRef,onEscape:n}),f.jsxs("aside",{ref:s,id:"oc-process-panel",className:`oc-process${a?" is-process-overlay":""}`,"aria-label":"工具调用记录",role:a?"dialog":void 0,"aria-modal":a?!0:void 0,tabIndex:-1,children:[f.jsxs("header",{className:"oc-process-head",children:[f.jsxs("div",{className:"oc-process-title",children:[f.jsx("span",{className:"oc-process-title-mark","aria-hidden":"true"}),"工具调用记录",f.jsxs("span",{className:"oc-process-count",children:[t.length," 次"]})]}),f.jsx("button",{type:"button",className:"btn btn-ghost oc-process-close","aria-label":"关闭工具调用记录",onClick:n,children:"关闭"})]}),f.jsx("div",{className:"oc-process-timeline",children:t.length===0?f.jsx("div",{className:"oc-process-empty",children:"本轮对话尚无工具调用。诊断细节会在这里按时间线展示。"}):t.map((l,c)=>f.jsxs("div",{className:`oc-process-item${c===0?" is-first":""}${c===t.length-1?" is-last":""}${l.status==="error"?" is-error":""}${l.status==="running"?" is-running":""}`,children:[f.jsx("div",{className:"oc-process-rail","aria-hidden":"true",children:f.jsx("span",{className:"oc-process-dot"})}),f.jsx("div",{className:"oc-process-time",children:Ym(l.createdAt)}),f.jsx("div",{className:"oc-process-body",children:f.jsx(O6,{entry:l})})]},l.id))})]})}const p2=[{id:"overview",label:"概览"},{id:"system",label:"System prompt"},{id:"files",label:"Context files"},{id:"skills",label:"Skills"},{id:"extensions",label:"Extensions"},{id:"packages",label:"Plugins"},{id:"tools",label:"Active tools"},{id:"raw",label:"原始 JSON"}];function du(e){const t=Array.isArray(e.items)?e.items:void 0;return f.jsxs("section",{className:"oc-runtime-context-section",children:[f.jsxs("header",{className:"oc-runtime-context-section-head",children:[f.jsx("strong",{children:e.title}),f.jsx("span",{className:"oc-runtime-context-meta",children:t?`${t.length} 项`:"未投影"})]}),t===void 0?f.jsx("p",{className:"oc-runtime-context-empty",children:"该 session 未提供资源投影"}):t.length===0?f.jsx("p",{className:"oc-runtime-context-empty",children:e.emptyText}):f.jsx("ul",{className:"oc-runtime-context-resources",children:t.map((n,a)=>f.jsx(hM,{item:n},`${n.name??n.path??a}:${a}`))})]})}function hM(e){const t=e.item,a=[t.scope?`scope ${t.scope}`:"",t.source??"",t.version?`v${t.version}`:"",t.cwd?`cwd ${t.cwd}`:""].filter(Boolean).join(" · "),s=t.path?`${t.path}${t.baseDir?`(base: ${t.baseDir})`:""}`:"";return f.jsxs("li",{children:[f.jsxs("div",{className:"oc-runtime-context-resource-head",children:[f.jsx("strong",{className:"oc-runtime-context-resource-name",title:t.path??t.name,children:t.name||t.path||"未命名资源"}),t.enabled===!1?f.jsx("span",{className:"oc-runtime-context-resource-flag",children:"未启用"}):null,a?f.jsx("span",{className:"oc-runtime-context-meta",title:a,children:a}):null]}),t.description?f.jsx("span",{className:"oc-runtime-context-resource-desc",children:t.description}):null,t.path?f.jsx("code",{className:"oc-runtime-context-resource-path",title:s,children:s}):null,t.error?f.jsxs("span",{className:"oc-runtime-context-diag is-error",children:[f.jsx("span",{className:"oc-runtime-context-diag-icon","aria-hidden":"true",children:"✕"}),t.error]}):null,Array.isArray(t.diagnostics)&&t.diagnostics.length>0?f.jsxs("span",{className:"oc-runtime-context-diag",children:[f.jsx("span",{className:"oc-runtime-context-diag-icon","aria-hidden":"true",children:"⚠"}),t.diagnostics.join(";")]}):null,Array.isArray(t.resolved)&&t.resolved.length>0?f.jsxs("details",{className:"oc-runtime-context-resolved",children:[f.jsxs("summary",{children:["已解析 ",t.resolved.length," 项"]}),f.jsx("ul",{className:"oc-runtime-context-resolved-list",children:t.resolved.map((l,c)=>{const d=`${l.type??"?"}:${l.name??l.path??"?"}`;return f.jsx("li",{children:f.jsx("code",{title:d,children:d})},c)})})]}):null]})}const pM=k.forwardRef(function({open:t,onToggle:n,onClose:a,context:s,panelOnly:l=!1,triggerOnly:c=!1,triggerRef:d},m){const h=sl(),p=h.reloading,b=h.reloadError,[x,y]=k.useState("overview"),E=k.useRef(null);Fu({open:t&&!c,containerRef:E,triggerRef:d,onEscape:a}),k.useEffect(()=>{t||y("overview")},[t]);const N=Array.isArray(s.resources.activeTools)?s.resources.activeTools:[],R=typeof s.resources.activeToolCount=="number"?s.resources.activeToolCount:N.length,C=s.systemPrompt.text??s.systemPrompt.summary??"",I=s.systemPrompt.charCount??C.length,O=s.suffix.present?s.suffix.text??s.suffix.summary??"":"",X=s.model?Ro(s.model.provider,s.model.modelId):"",q=s.resources,A=String(s.resources.mode??"closed"),F=A.includes("open")?"open":"closed",J={files:q.contextFiles?.length??0,skills:q.skills?.length??0,extensions:q.extensions?.length??0,packages:q.packages?.length??0},W=["files","skills","extensions","packages"].map(H=>({id:H,label:p2.find(te=>te.id===H)?.label??H,count:J[H]??0})),z=f.jsx("button",{type:"button",ref:H=>{typeof m=="function"?m(H):m&&(m.current=H)},className:`btn btn-ghost oc-runtime-context-toggle${t?" is-active":""}`,"aria-expanded":t,"aria-controls":"oc-runtime-context-panel",onClick:n,children:"注入上下文"});if(c)return z;const U=t?f.jsxs("div",{ref:E,id:"oc-runtime-context-panel",className:"oc-runtime-context-sidepanel",role:"dialog","aria-modal":"true","aria-label":"注入上下文",tabIndex:-1,children:[f.jsxs("header",{className:"oc-runtime-context-head",children:[f.jsxs("div",{className:"oc-runtime-context-head-copy",children:[f.jsx("strong",{children:"注入上下文"}),f.jsx("span",{className:"oc-runtime-context-meta",children:"只读 · 本轮实际注入的 system prompt / 资源(已脱敏)"})]}),f.jsx("button",{type:"button",className:"btn btn-ghost oc-runtime-context-close","aria-label":"关闭注入上下文",onClick:a,children:"关闭"})]}),f.jsxs("div",{className:"oc-runtime-context-layout",children:[f.jsx("nav",{className:"oc-runtime-context-nav","aria-label":"上下文分类",children:p2.map(H=>{const te=J[H.id];return f.jsxs("button",{type:"button",className:`oc-runtime-context-nav-item${x===H.id?" is-active":""}`,"aria-current":x===H.id?"page":void 0,onClick:()=>y(H.id),children:[f.jsx("span",{className:"oc-runtime-context-nav-label",title:H.label,children:H.label}),typeof te=="number"?f.jsx("span",{className:"oc-runtime-context-nav-count",children:te}):null]},H.id)})}),f.jsxs("div",{className:"oc-runtime-context-body",children:[x==="overview"?f.jsxs("div",{className:"oc-runtime-context-overview",children:[s.model?f.jsxs("section",{className:"oc-runtime-context-model-card",children:[f.jsx("span",{className:"oc-runtime-context-model-label",children:"模型"}),f.jsx("code",{className:"oc-runtime-context-model-ref",title:X,children:X})]}):null,f.jsxs("div",{className:"oc-runtime-context-stat-grid",children:[f.jsxs("div",{className:"oc-runtime-context-stat",children:[f.jsx("span",{className:"oc-runtime-context-stat-label",children:"Prompt 字数"}),f.jsxs("strong",{className:"oc-runtime-context-stat-value",children:[I.toLocaleString()," 字"]})]}),f.jsxs("div",{className:"oc-runtime-context-stat",children:[f.jsx("span",{className:"oc-runtime-context-stat-label",children:"工具"}),f.jsx("strong",{className:"oc-runtime-context-stat-value",children:R})]}),f.jsxs("div",{className:"oc-runtime-context-stat",children:[f.jsx("span",{className:"oc-runtime-context-stat-label",children:"思考"}),f.jsx("strong",{className:"oc-runtime-context-stat-value",children:s.thinkingLevel??"—"})]}),f.jsxs("div",{className:"oc-runtime-context-stat",children:[f.jsx("span",{className:"oc-runtime-context-stat-label",children:"资源面"}),f.jsxs("strong",{className:`oc-runtime-context-stat-value oc-runtime-context-mode is-${F}`,title:A,children:[f.jsx("span",{className:"oc-runtime-context-mode-dot","aria-hidden":"true"}),A]})]})]}),f.jsxs("section",{className:"oc-runtime-context-section",children:[f.jsx("header",{className:"oc-runtime-context-section-head",children:f.jsx("strong",{children:"已加载资源"})}),f.jsx("div",{className:"oc-runtime-context-resource-links",children:W.map(H=>f.jsxs("button",{type:"button",className:"oc-runtime-context-resource-link",onClick:()=>y(H.id),children:[f.jsx("span",{className:"oc-runtime-context-resource-label",children:H.label}),f.jsx("span",{className:`oc-runtime-context-resource-count${H.count===0?" is-zero":""}`,children:H.count}),f.jsx("span",{className:"oc-runtime-context-resource-chevron","aria-hidden":"true",children:"›"})]},H.id))})]})]}):null,x==="system"?f.jsxs(f.Fragment,{children:[f.jsxs("section",{className:"oc-runtime-context-section",children:[f.jsxs("header",{className:"oc-runtime-context-section-head",children:[f.jsxs("div",{children:[f.jsx("strong",{children:"System prompt"}),f.jsxs("code",{className:"oc-runtime-context-hash",children:[s.systemPrompt.hash.slice(0,12),"…"]})]}),C?f.jsx(_h,{text:C}):null]}),f.jsx("pre",{className:"oc-runtime-context-text",children:C||"(空)"})]}),f.jsxs("section",{className:"oc-runtime-context-section",children:[f.jsxs("header",{className:"oc-runtime-context-section-head",children:[f.jsxs("div",{className:"oc-runtime-context-section-title",children:[f.jsx("strong",{children:"Session suffix"}),f.jsx("span",{className:"oc-runtime-context-meta",children:s.suffix.present?`${(s.suffix.charCount??0).toLocaleString()} 字`:"未注入"})]}),O?f.jsx(_h,{text:O}):null]}),s.suffix.present?f.jsx("pre",{className:"oc-runtime-context-text",children:O||"已注入"}):f.jsx("p",{className:"oc-runtime-context-empty",children:"本会话无额外 suffix"})]})]}):null,x==="files"?f.jsx(du,{title:"Context files",items:q.contextFiles?.map(H=>({name:H.path,description:`${H.characters.toLocaleString()} 字符`})),emptyText:"该 session 未加载任何上下文文件"}):null,x==="skills"?f.jsx(du,{title:"Skills",items:q.skills,emptyText:"该 session 未加载任何 Skills"}):null,x==="extensions"?f.jsx(du,{title:"Extensions",items:q.extensions,emptyText:"该 session 未加载任何 Extensions"}):null,x==="packages"?f.jsx(du,{title:"Plugins",items:q.packages,emptyText:"该会话没有插件"}):null,x==="tools"?f.jsxs("section",{className:"oc-runtime-context-section",children:[f.jsxs("header",{className:"oc-runtime-context-section-head",children:[f.jsx("strong",{children:"Active tools"}),f.jsxs("span",{className:"oc-runtime-context-meta",children:[R," 项"]})]}),N.length===0?f.jsx("p",{className:"oc-runtime-context-empty",children:"无激活工具"}):f.jsx("ul",{className:"oc-runtime-context-tools",children:N.map(H=>f.jsx("li",{children:f.jsx("code",{children:H})},H))}),Array.isArray(q.diagnostics)&&q.diagnostics.length>0?f.jsx("ul",{className:"oc-runtime-context-resources",children:q.diagnostics.map((H,te)=>f.jsxs("li",{children:[f.jsxs("span",{className:`oc-runtime-context-diag is-${H.type??"warning"}`,children:[H.type,": ",H.message]}),H.path?f.jsx("code",{children:H.path}):null]},te))}):null]}):null,x==="raw"?f.jsxs("details",{className:"oc-runtime-context-raw",open:!0,children:[f.jsx("summary",{children:"原始投影 JSON"}),f.jsx("pre",{children:JSON.stringify(s,null,2)})]}):null]},x)]}),f.jsxs("footer",{className:"oc-runtime-context-foot",children:[f.jsx("span",{className:"oc-runtime-context-meta",children:p?"正在重新加载会话…":"重新加载 Pi 会话设置、扩展、技能、提示词与上下文文件"}),f.jsx("button",{type:"button",className:"btn btn-ghost",disabled:p,onClick:()=>{el()},children:"重新加载会话"}),b&&f.jsxs("span",{className:"oc-runtime-context-diag is-error",role:"alert",children:[b.code?`${b.code}:`:"",b.message,f.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>{el()},children:"重试"})]})]})]}):null;return l?U:f.jsxs("div",{className:"oc-runtime-context-menu",children:[z,U]})});function gM(){const e=k.useRef(null),t=k.useRef(!1),n=k.useRef(null),a=k.useRef(new Map),s=k.useRef(new Set),l=k.useRef(null),c=k.useRef(null),d=k.useRef(0),m=k.useRef(null),h=k.useRef(new Set),p=k.useRef(new Set),b=k.useRef(new Map),x=k.useRef(new Set),y=k.useRef(null),E=k.useRef(null),N=k.useRef(!1),R=k.useRef(0),C=k.useRef(null),I=k.useRef(!1),O=k.useRef(!1),X=k.useRef(null),q=k.useRef(new Set),A=k.useRef(new Set),F=k.useRef(new Set),J=k.useRef(!1),W=k.useRef(0);return k.useMemo(()=>({sessionRef:e,streamingRef:t,abortRef:n,sessionAbortControllersRef:a,inlineStreamSessionIdsRef:s,assistantIdRef:l,lastEventIdRef:c,sessionGenerationRef:d,eventsStreamStateRef:m,settledTurnIdsRef:h,seenEventIdsRef:p,turnAssistantIdsRef:b,sealedAssistantIdsRef:x,reconnectAbortRef:y,activeTurnIdRef:E,submitInFlightRef:N,submitGenerationRef:R,pendingSubmissionRef:C,stopInFlightRef:I,stopRequestedRef:O,stoppingTurnIdRef:X,abortPostedTurnIdsRef:q,releasedClientRequestIdsRef:A,usageResponseKeysRef:F,isComposingRef:J,compositionEndedAtRef:W}),[e,t,n,a,s,l,c,d,m,h,p,b,x,y,E,N,R,C,I,O,X,q,A,F,J,W])}const bM=["operation","contract","dag","report","html"];function vM(e){const t=e.artifact;if(!t||typeof t!="object")return;const n=t;if(!(n.schemaVersion!==1||typeof n.artifactId!="string"||!n.artifactId||typeof n.kind!="string"||!bM.includes(n.kind)||typeof n.previewHash!="string")){for(const a of["title","summary","htmlPreview","reportText","inspectHref"])if(n[a]!==void 0&&typeof n[a]!="string")return;return n}}function yM(e,t){const n=e.findIndex(a=>a.artifactId===t.artifactId);return n<0?[...e,t]:e.map((a,s)=>s===n?{...a,...t,eventSeq:a.eventSeq??t.eventSeq,activityRef:a.activityRef??t.activityRef}:a)}function xM(e){if(!e||typeof e!="object")return;const t=e;if(!(t.schemaVersion!==1||typeof t.cardId!="string"||t.gateType!=="contract-apply"&&t.gateType!=="dag-run"||typeof t.taskId!="string"||typeof t.state!="string"||typeof t.expiresAt!="string"||typeof t.inspectHref!="string"||typeof t.previewHash!="string"))return t}function wM(e,t){const n=e.findIndex(l=>l.cardId===t.cardId);if(n<0)return[...e,t];const a=[...e],s=a[n];return s?(a[n]={...s,...t,eventSeq:s.eventSeq??t.eventSeq,activityRef:s.activityRef??t.activityRef},a):[...e,t]}function SM(e,t){const n=e.findIndex(a=>a.operationId===t.operationId);return n<0?[...e,t]:e.map((a,s)=>{if(s!==n)return a;let l=a.eventSeq;return l===void 0?l=t.eventSeq:t.eventSeq!==void 0&&(l=Math.min(l,t.eventSeq)),{...a,...t,...l===void 0?{}:{eventSeq:l},updatedSeq:Math.max(a.updatedSeq??a.eventSeq??0,t.updatedSeq??t.eventSeq??0),toolCallId:a.toolCallId??t.toolCallId,activityRef:a.activityRef??t.activityRef}})}function kM(e){const t=e.operation;if(!t||typeof t!="object")return;const n=t;if(n.schemaVersion!==1||typeof n.operationId!="string"||typeof n.action!="string"||typeof n.state!="string"||typeof n.inspectHref!="string"||typeof n.createdAt!="string"||typeof n.updatedAt!="string"||typeof n.previewHash!="string")return;const a=EM(n.runSummary),{runSummary:s,...l}=n;return{...l,...a?{runSummary:a}:{}}}function EM(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e;if(typeof t.runId!="string"||!t.runId||typeof t.status!="string"||!t.status)return;let n=[];Array.isArray(t.nodes)&&(n=t.nodes.flatMap(l=>{if(!l||typeof l!="object")return[];const c=String(l.id??""),d=String(l.status??"");return!c||!d?[]:[{id:c,status:d}]}).slice(0,20));let a;if(t.next&&typeof t.next=="object"){const l=t.next;a={kind:String(l.kind??""),...typeof l.description=="string"?{description:l.description}:{}}}return{runId:t.runId,status:t.status,nodes:n,...typeof t.verdict=="string"?{verdict:t.verdict}:{},...typeof t.failureCategory=="string"?{failureCategory:t.failureCategory}:{},...a&&a.kind?{next:a}:{}}}function TM(e){const{refs:t,onReconcile:n,setError:a,setInterview:s,setHumanGateCards:l,setArtifactCards:c,setStreaming:d,setTurnPhase:m=()=>{},setDeferredTurn:h=()=>{},setStreamingAssistantId:p,setUnread:b,setOperationCards:x,setUsage:y,setMessages:E,setToolCalls:N}=e;return(R,C,I,O)=>{if(O?.generation!==void 0&&t.sessionGenerationRef.current!==O.generation)return;const X=O?.replay===!0;if(R==="stream_ready")return;if(R==="reconcile"){const U={reason:typeof C.reason=="string"?C.reason:"cursor_expired",...typeof C.minSeq=="number"?{minSeq:C.minSeq}:{},...typeof C.epoch=="string"?{epoch:C.epoch}:{},...typeof C.latestTurnId=="string"?{latestTurnId:C.latestTurnId}:{}};(typeof C.latestEventId=="string"||C.latestEventId===null)&&(U.latestEventId=C.latestEventId),n?.(U);return}const q=C.data&&typeof C.data=="object"?C.data:C,A=typeof C.turnId=="string"?C.turnId:void 0,F=typeof C.seq=="number"&&Number.isFinite(C.seq)?C.seq:void 0,J=typeof C.at=="string"&&Number.isFinite(Date.parse(C.at))?Date.parse(C.at):Date.now();if(R==="queue_update"){const z=typeof q.revision=="number"?q.revision:-1;h(U=>U&&z<U.revision?U:q.deferredTurn&&typeof q.deferredTurn=="object"?q.deferredTurn:null);return}if(R==="user_message"){const z=q.message&&typeof q.message=="object"?q.message:null;if(z&&typeof z.id=="string"&&typeof z.text=="string"){const U=typeof z.at=="string"&&Number.isFinite(Date.parse(z.at))?Date.parse(z.at):Date.now();E(H=>H.some(te=>te.id===z.id)?H:[...H,{id:z.id,role:"user",text:z.text,createdAt:U}])}return}if(A&&(R==="agent_start"||R==="message_update")&&t.settledTurnIdsRef.current.has(A))return;let W=I;if(A){const z=t.turnAssistantIdsRef.current.get(A);z?W=z:t.turnAssistantIdsRef.current.set(A,I)}if(R==="interview-turn"){s(z=>({...z??{},interviewSessionId:typeof q.interviewSessionId=="string"?q.interviewSessionId:z?.interviewSessionId,taskId:typeof q.taskId=="string"?q.taskId:z?.taskId,state:typeof q.state=="string"?q.state:z?.state,question:q.question&&typeof q.question=="object"?q.question:void 0}));return}if(R==="draft"){s(z=>({...z??{},taskId:typeof q.taskId=="string"?q.taskId:z?.taskId,draft:q.draft&&typeof q.draft=="object"?q.draft:z?.draft,draftSha256:typeof q.draftSha256=="string"?q.draftSha256:z?.draftSha256,taskKindRecommendation:typeof q.taskKindRecommendation=="string"?q.taskKindRecommendation:z?.taskKindRecommendation}));return}if(R==="assessment"){s(z=>({...z??{},assessment:q}));return}if(R==="taskKind-confirmed"){s(z=>({...z??{},confirmedTaskKind:typeof q.taskKind=="string"?q.taskKind:z?.confirmedTaskKind,taskKindRecommendation:void 0}));return}if(R==="human-gate-card"){const z=xM(q);z&&l(U=>wM(U,{...z,...F===void 0?{}:{eventSeq:F},...A?{turnId:A}:{},activityRef:`gate:${z.cardId}`}));return}if(R==="artifact-ref"){const z=vM(q);z&&c(U=>yM(U,{...z,...F===void 0?{}:{eventSeq:F},...A?{turnId:A}:{},activityRef:`artifact:${z.artifactId}`}));return}if(R==="agent_start"){if(X&&A!==void 0&&A!==t.activeTurnIdRef.current)return;A&&(t.settledTurnIdsRef.current.delete(A),t.activeTurnIdRef.current=A),t.streamingRef.current=!0,d(!0),m("running"),p(W);return}if(R==="agent_settled"||R==="agent_end"){if(A&&t.settledTurnIdsRef.current.add(A),R==="agent_end")return;A===t.activeTurnIdRef.current&&(t.activeTurnIdRef.current=null),t.streamingRef.current=!1,d(!1),m("idle"),p(null),R==="agent_settled"&&!X&&typeof document<"u"&&document.hidden&&b(U=>U+1);let z=!1;N(U=>(z=U.some(H=>H.assistantMessageId===W),U.map(H=>H.status==="running"&&(A!==void 0&&H.turnId===A||H.assistantMessageId===W)?{...H,status:"error",finishedAt:Date.now()}:H))),E(U=>U.filter(H=>H.id!==W||H.role!=="assistant"||H.text.trim()||H.content&&H.content.length>0?!0:z));return}if(R==="operation-ref"||R==="operation-status"){const z=kM(q);if(z){const U=typeof q.toolCallId=="string"?q.toolCallId:void 0;x(H=>SM(H,{...z,...F===void 0?{}:{eventSeq:F,updatedSeq:F},...A?{turnId:A}:{},...U?{toolCallId:U}:{},activityRef:`operation:${z.operationId}`}))}return}if(R==="usage"){if(X)return;const z=q,U=typeof z.responseKey=="string"&&z.responseKey?z.responseKey:void 0;if(U&&t.usageResponseKeysRef.current.has(U))return;U&&t.usageResponseKeysRef.current.add(U),y(H=>{const te=z.inputTokens??0,G=z.outputTokens??0,K=z.cacheReadTokens??0,$=z.cacheWriteTokens??0,ee=z.totalTokens??te+G+K+$,oe=z.contextUsage,ce=oe&&typeof oe=="object"?{tokens:typeof oe.tokens=="number"?oe.tokens:null,contextWindow:typeof oe.contextWindow=="number"?oe.contextWindow:0,percent:typeof oe.percent=="number"?oe.percent:null}:H.contextUsage;return{inputTokens:H.inputTokens+te,outputTokens:H.outputTokens+G,cacheReadTokens:H.cacheReadTokens+K,cacheWriteTokens:H.cacheWriteTokens+$,totalTokens:H.totalTokens+ee,cost:z.cost===void 0?H.cost:(H.cost??0)+z.cost,...ce?{contextUsage:ce}:{}}});return}if(R==="message_update"||R==="message_end"){if(X)return;const z=t.sealedAssistantIdsRef.current;if(R==="message_update"&&z.has(W)){const G=rs("a");A&&t.turnAssistantIdsRef.current.set(A,G);const K=W;N($=>$.map(ee=>ee.assistantMessageId===K?{...ee,assistantMessageId:G}:ee)),W=G,p(G)}const U=typeof q.text=="string"?q.text:"",H=kp(q.content),te=W;E(G=>G.some($=>$.id===te)?G.map($=>$.id!==te?$:{...$,text:U,...H?{content:H}:{}}):[...G,{id:te,role:"assistant",text:U,createdAt:J,...H?{content:H}:{}}]),R==="message_end"&&z.add(te)}else if(R==="tool_call"){const z=typeof q.toolCallId=="string"?q.toolCallId:rs("t"),U=typeof q.toolName=="string"?q.toolName:"tool",H=typeof q.argsPreview=="string"?q.argsPreview:"{}";N(te=>te.some(G=>G.id===z)?te.map(G=>G.id!==z?G:{...G,args:H,status:"running",turnId:A??G.turnId,assistantMessageId:W,...F===void 0?{}:{eventSeq:F}}):[...te,{id:z,toolName:U,args:H,status:"running",createdAt:J,...F===void 0?{}:{eventSeq:F},turnId:A,assistantMessageId:W}])}else if(R==="tool_result"){const z=typeof q.toolCallId=="string"?q.toolCallId:rs("r"),U=typeof q.toolName=="string"?q.toolName:"tool",H=q.isError===!0,te=typeof q.resultPreview=="string"?q.resultPreview:"{}",G=typeof q.operationId=="string"&&q.operationId?q.operationId:void 0;N(K=>K.find(ee=>ee.id===z)?K.map(ee=>ee.id!==z?ee:{...ee,result:te,resultText:te,status:H?"error":"ok",finishedAt:J,...F===void 0?{}:{finishedSeq:F},turnId:A??ee.turnId,assistantMessageId:ee.assistantMessageId??W,...G?{operationId:G}:ee.operationId?{operationId:ee.operationId}:{}}):[...K,{id:z,toolName:U,result:te,resultText:te,status:H?"error":"ok",createdAt:J,finishedAt:J,...F===void 0?{}:{eventSeq:F,finishedSeq:F},turnId:A,assistantMessageId:W,...G?{operationId:G}:{}}])}else R==="error"&&a(typeof q.message=="string"?q.message:"chat error")}}const $m={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalTokens:0};function NM(e){const{origin:t,refs:n,sessionId:a,setError:s,onReconcile:l}=e,[c,d]=k.useState([]),[m,h]=k.useState([]),[p,b]=k.useState([]),[x,y]=k.useState([]),[E,N]=k.useState(50),[R,C]=k.useState(0),[I,O]=k.useState([]),[X,q]=k.useState(null),[A,F]=k.useState(null),[J,W]=k.useState(!1),[z,U]=k.useState($m),[H,te]=k.useState(!1),[G,K]=k.useState("idle"),[$,ee]=k.useState(null),[oe,ce]=k.useState(null),[j]=k.useState(!1),D=k.useMemo(()=>TM({refs:n,onReconcile:l,setError:s,setInterview:q,setHumanGateCards:O,setArtifactCards:y,setStreaming:te,setTurnPhase:K,setDeferredTurn:ee,setStreamingAssistantId:ce,setUnread:C,setOperationCards:b,setUsage:U,setMessages:d,setToolCalls:h}),[n,l,s]),P=k.useCallback((Me,Se,$e)=>{if($e?.targetSessionId&&n.sessionRef.current?.sessionId!==$e.targetSessionId||$e?.generation!==void 0&&n.sessionGenerationRef.current!==$e.generation)return null;const ct=Me.split(`
388
- `);let mt="message",Ze="",lt=null;for(const wt of ct)wt.startsWith("event: ")?mt=wt.slice(7).trim():wt.startsWith("data: ")?Ze+=wt.slice(6):wt.startsWith("id: ")&&(lt=wt.slice(4).trim());if(!Ze)return lt;let Tt;try{Tt=JSON.parse(Ze)}catch{return lt}const St=lt??(typeof Tt.eventId=="string"?Tt.eventId:null);if(St){if(n.seenEventIdsRef.current.has(St))return St;n.seenEventIdsRef.current.add(St)}return D(mt,Tt,Se,$e),lt??St},[D,n]),_=k.useCallback(async(Me,Se)=>{const $e=Se?.background===!0;$e||W(!0);try{const ct=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(Me)}/context`,{credentials:"include"});if(!ct.ok)return;const mt=await ct.json();mt.context&&n.sessionRef.current?.sessionId===Me&&F(Ze=>B8(Ze,mt.context)?Ze:mt.context)}finally{$e||W(!1)}},[t,n]);k.useEffect(()=>{a&&_(a)},[a,_]),k.useEffect(()=>{if(!a)return;const Me=window.setTimeout(()=>{_(a,{background:!0})},350);return()=>window.clearTimeout(Me)},[a,p,I,X,_]);const ne=k.useMemo(()=>c.filter(Me=>Me.role!=="system"||j),[c,j]);k.useEffect(()=>{const Me=()=>{document.hidden||C(0)};return document.addEventListener("visibilitychange",Me),()=>document.removeEventListener("visibilitychange",Me)},[]);const de=k.useMemo(()=>{if(m.length===0)return null;const Me=m.filter(Ze=>Ze.status==="running"),Se=m.filter(Ze=>Ze.status==="error"),$e=Me[Me.length-1];let ct="完成",mt="ok";return Se.length>0?(ct=`${Se.length} 次出错`,mt="error"):Me.length>0?(ct=$e?`${$e.toolName} 运行中`:"运行中",mt="running"):ct="",{count:m.length,statusLabel:ct,statusKind:mt}},[m]),se=k.useMemo(()=>{const Me=KI({messages:ne,toolCalls:m,streaming:H,activeAssistantId:oe});return VI(Me,E)},[ne,m,H,oe,E]),ae=k.useMemo(()=>{const Me=[];for(const Se of se)Se.user&&Me.push(Se.user),Me.push(...Se.assistants);return Me},[se]),we=k.useCallback(()=>{d([]),h([]),b([]),O([]),y([]),q(null),F(null),U($m),te(!1),K("idle"),ee(null),ce(null),C(0),N(50),n.usageResponseKeysRef.current=new Set},[n]),ge=k.useCallback(Me=>{d(Me.messages),h(Me.toolCalls),b([]),O([]),y([]),F(null),q(null),U($m),n.usageResponseKeysRef.current=new Set,te(Me.streaming),K(Me.turnPhase??(Me.streaming?"running":"idle")),ee(Me.deferredTurn??null),ce(null),C(0),N(50)},[n]),ze=k.useCallback(async Me=>{try{const Se=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(Me)}`,{credentials:"include"});if(!Se.ok)return!1;const $e=await Se.json();if(!$e.session||n.sessionRef.current?.sessionId!==Me)return!1;const ct=$e.session.activeTurnId??null;n.activeTurnIdRef.current=ct,n.streamingRef.current=!!ct,K($e.session.turnPhase??(ct?"running":"idle")),ee($e.session.deferredTurn??null),n.lastEventIdRef.current=$e.lastEventId??null,n.seenEventIdsRef.current=new Set,n.turnAssistantIdsRef.current=new Map,n.sealedAssistantIdsRef.current=new Set;const mt=M6($e.session.messages??[]);return d(mt.messages),h(mt.toolCalls),ce(null),!0}catch{return!1}},[t,n,d,h,ce,K,ee]);return{messages:c,setMessages:d,toolCalls:m,setToolCalls:h,operationCards:p,artifactCards:x,historyLimit:E,setHistoryLimit:N,unread:R,humanGateCards:I,interview:X,setInterview:q,taskContext:A,contextLoading:J,usage:z,streaming:H,setStreaming:te,turnPhase:G,setTurnPhase:K,deferredTurn:$,setDeferredTurn:ee,streamingAssistantId:oe,setStreamingAssistantId:ce,visibleMessages:ae,turnGroups:se,processSummary:de,applyChatSseEvent:D,applySseBlock:P,loadTaskContext:_,resetForNewSession:we,applyActivatedSession:ge,recoverSession:ze}}const CM={error:6e3,info:4e3};function RM(e){const{toast:t,onDismiss:n}=e,[a,s]=k.useState(!1),l=k.useRef(null),c=k.useRef(null),d=()=>{l.current!==null&&window.clearTimeout(l.current),c.current!==null&&window.clearTimeout(c.current),l.current=null,c.current=null},m=()=>{d(),s(!0),c.current=window.setTimeout(()=>{s(!1),n()},140)};if(k.useEffect(()=>{if(t)return s(!1),l.current=window.setTimeout(m,CM[t.kind]),d},[t?.id]),k.useEffect(()=>d,[]),!t)return null;const h=t.kind==="error";return qu.createPortal(f.jsxs("div",{className:`oc-toast is-${t.kind}${a?" is-leaving":""}`,role:h?"alert":"status",onMouseEnter:d,onMouseLeave:()=>{a||(l.current=window.setTimeout(m,1600))},children:[f.jsx("span",{className:"oc-toast-icon","aria-hidden":"true",children:h?f.jsx(L2,{size:16}):f.jsx(T8,{size:16})}),f.jsx("span",{className:"oc-toast-message",children:t.message}),f.jsx("button",{type:"button",className:"oc-toast-close","aria-label":"关闭提示",onClick:m,children:f.jsx(w8,{size:14,"aria-hidden":"true"})})]}),document.body)}function AM(e){return e==="missing-capability-token"||e==="invalid-capability-token"||e==="missing-confirmation-token"||e==="invalid-confirmation-token"||e==="host-not-loopback"||e==="origin-mismatch"||e==="cross-site-fetch"}function L6(e){return e==="invalid-capability-token"||e==="invalid-confirmation-token"||e==="missing-capability-token"||e==="missing-confirmation-token"}function _M(e){return L6(e)?"页面已过期(控制台已重启),请刷新页面(F5)后重试。":e==="host-not-loopback"?"请求主机校验失败:非回环绑定时要求 Host 头,请刷新页面或检查访问地址。":e==="origin-mismatch"?"请求来源与控制台地址不一致,请通过控制台页面操作。":e==="cross-site-fetch"?"检测到跨站请求,已拒绝。请通过控制台页面操作。":"操作被拒绝,请刷新页面后重试。"}class IM{constructor(t){this.options=t,this.fetchFn=t.fetchFn??fetch,this.backoffMs=t.backoffMs??1e3,this.deadlineMs=t.deadlineMs??3e4}options;eligible=new Set;controllers=new Map;fetchFn;backoffMs;deadlineMs;markEligible(t){this.eligible.add(t)}startIfEligible(t){if(!this.eligible.delete(t)||this.controllers.has(t))return;const n=new AbortController;this.controllers.set(t,n),this.run(t,n)}cancel(t){this.eligible.delete(t),this.controllers.get(t)?.abort(),this.controllers.delete(t)}reconcile(t){const n=new Set(t);for(const a of this.controllers.keys())n.has(a)||this.cancel(a)}dispose(){for(const t of this.controllers.values())t.abort();this.controllers.clear(),this.eligible.clear()}async run(t,n){let a;const s=new Set;let l=!1;const c=window.setTimeout(()=>{l=!0,n.abort()},this.deadlineMs);try{for(;!n.signal.aborted;){try{const d={Accept:"text/event-stream"};a&&(d["Last-Event-ID"]=a);const m=await this.fetchFn(`${this.options.origin}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/events`,{headers:d,credentials:"include",signal:n.signal});if(m.status===404||!m.body)return;if(!m.ok)throw new Error(`HTTP ${m.status}`);const h=m.body.getReader(),p=new TextDecoder;let b="";for(;;){const{done:x,value:y}=await h.read();if(x||n.signal.aborted)break;b+=p.decode(y,{stream:!0});const E=b.split(`
388
+ `);let mt="message",Ze="",lt=null;for(const wt of ct)wt.startsWith("event: ")?mt=wt.slice(7).trim():wt.startsWith("data: ")?Ze+=wt.slice(6):wt.startsWith("id: ")&&(lt=wt.slice(4).trim());if(!Ze)return lt;let Tt;try{Tt=JSON.parse(Ze)}catch{return lt}const St=lt??(typeof Tt.eventId=="string"?Tt.eventId:null);if(St){if(n.seenEventIdsRef.current.has(St))return St;n.seenEventIdsRef.current.add(St)}return D(mt,Tt,Se,$e),lt??St},[D,n]),_=k.useCallback(async(Me,Se)=>{const $e=Se?.background===!0;$e||W(!0);try{const ct=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(Me)}/context`,{credentials:"include"});if(!ct.ok)return;const mt=await ct.json();mt.context&&n.sessionRef.current?.sessionId===Me&&F(Ze=>B8(Ze,mt.context)?Ze:mt.context)}finally{$e||W(!1)}},[t,n]);k.useEffect(()=>{a&&_(a)},[a,_]),k.useEffect(()=>{if(!a)return;const Me=window.setTimeout(()=>{_(a,{background:!0})},350);return()=>window.clearTimeout(Me)},[a,p,I,X,_]);const ne=k.useMemo(()=>c.filter(Me=>Me.role!=="system"||j),[c,j]);k.useEffect(()=>{const Me=()=>{document.hidden||C(0)};return document.addEventListener("visibilitychange",Me),()=>document.removeEventListener("visibilitychange",Me)},[]);const de=k.useMemo(()=>{if(m.length===0)return null;const Me=m.filter(Ze=>Ze.status==="running"),Se=m.filter(Ze=>Ze.status==="error"),$e=Me[Me.length-1];let ct="完成",mt="ok";return Se.length>0?(ct=`${Se.length} 次出错`,mt="error"):Me.length>0?(ct=$e?`${$e.toolName} 运行中`:"运行中",mt="running"):ct="",{count:m.length,statusLabel:ct,statusKind:mt}},[m]),se=k.useMemo(()=>{const Me=KI({messages:ne,toolCalls:m,streaming:H,activeAssistantId:oe});return VI(Me,E)},[ne,m,H,oe,E]),ae=k.useMemo(()=>{const Me=[];for(const Se of se)Se.user&&Me.push(Se.user),Me.push(...Se.assistants);return Me},[se]),we=k.useCallback(()=>{d([]),h([]),b([]),O([]),y([]),q(null),F(null),U($m),te(!1),K("idle"),ee(null),ce(null),C(0),N(50),n.usageResponseKeysRef.current=new Set},[n]),ge=k.useCallback(Me=>{d(Me.messages),h(Me.toolCalls),b([]),O([]),y([]),F(null),q(null),U($m),n.usageResponseKeysRef.current=new Set,te(Me.streaming),K(Me.turnPhase??(Me.streaming?"running":"idle")),ee(Me.deferredTurn??null),ce(null),C(0),N(50)},[n]),ze=k.useCallback(async Me=>{try{const Se=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(Me)}`,{credentials:"include"});if(!Se.ok)return!1;const $e=await Se.json();if(!$e.session||n.sessionRef.current?.sessionId!==Me)return!1;const ct=$e.session.activeTurnId??null;n.activeTurnIdRef.current=ct,n.streamingRef.current=!!ct,K($e.session.turnPhase??(ct?"running":"idle")),ee($e.session.deferredTurn??null),n.lastEventIdRef.current=$e.lastEventId??null,n.seenEventIdsRef.current=new Set,n.turnAssistantIdsRef.current=new Map,n.sealedAssistantIdsRef.current=new Set;const mt=M6($e.session.messages??[]);return d(mt.messages),h(mt.toolCalls),ce(null),!0}catch{return!1}},[t,n,d,h,ce,K,ee]);return{messages:c,setMessages:d,toolCalls:m,setToolCalls:h,operationCards:p,artifactCards:x,historyLimit:E,setHistoryLimit:N,unread:R,humanGateCards:I,interview:X,setInterview:q,taskContext:A,contextLoading:J,usage:z,streaming:H,setStreaming:te,turnPhase:G,setTurnPhase:K,deferredTurn:$,setDeferredTurn:ee,streamingAssistantId:oe,setStreamingAssistantId:ce,visibleMessages:ae,turnGroups:se,processSummary:de,applyChatSseEvent:D,applySseBlock:P,loadTaskContext:_,resetForNewSession:we,applyActivatedSession:ge,recoverSession:ze}}const CM={error:6e3,info:4e3};function RM(e){const{toast:t,onDismiss:n}=e,[a,s]=k.useState(!1),l=k.useRef(null),c=k.useRef(null),d=()=>{l.current!==null&&window.clearTimeout(l.current),c.current!==null&&window.clearTimeout(c.current),l.current=null,c.current=null},m=()=>{d(),s(!0),c.current=window.setTimeout(()=>{s(!1),n()},140)};if(k.useEffect(()=>{if(t)return s(!1),l.current=window.setTimeout(m,CM[t.kind]),d},[t?.id]),k.useEffect(()=>d,[]),!t)return null;const h=t.kind==="error";return qu.createPortal(f.jsxs("div",{className:`oc-toast is-${t.kind}${a?" is-leaving":""}`,role:h?"alert":"status",onMouseEnter:d,onMouseLeave:()=>{a||(l.current=window.setTimeout(m,1600))},children:[f.jsx("span",{className:"oc-toast-icon","aria-hidden":"true",children:h?f.jsx(L2,{size:16}):f.jsx(T8,{size:16})}),f.jsx("span",{className:"oc-toast-message",children:t.message}),f.jsx("button",{type:"button",className:"oc-toast-close","aria-label":"关闭提示",onClick:m,children:f.jsx(w8,{size:14,"aria-hidden":"true"})})]}),document.body)}function AM(e){return e==="missing-capability-token"||e==="invalid-capability-token"||e==="missing-confirmation-token"||e==="invalid-confirmation-token"||e==="host-not-loopback"||e==="origin-mismatch"||e==="cross-site-fetch"}function L6(e){return e==="invalid-capability-token"||e==="invalid-confirmation-token"||e==="missing-capability-token"||e==="missing-confirmation-token"}function _M(e){return L6(e)?"页面凭证已失效(控制台可能已重启),请刷新页面(F5)后重试。":e==="host-not-loopback"?"请求主机校验失败:非回环绑定时要求 Host 头,请刷新页面或检查访问地址。":e==="origin-mismatch"?"请求来源与控制台地址不一致,请通过控制台页面操作。":e==="cross-site-fetch"?"检测到跨站请求,已拒绝。请通过控制台页面操作。":"操作被拒绝,请刷新页面后重试。"}class IM{constructor(t){this.options=t,this.fetchFn=t.fetchFn??fetch,this.backoffMs=t.backoffMs??1e3,this.deadlineMs=t.deadlineMs??3e4}options;eligible=new Set;controllers=new Map;fetchFn;backoffMs;deadlineMs;markEligible(t){this.eligible.add(t)}startIfEligible(t){if(!this.eligible.delete(t)||this.controllers.has(t))return;const n=new AbortController;this.controllers.set(t,n),this.run(t,n)}cancel(t){this.eligible.delete(t),this.controllers.get(t)?.abort(),this.controllers.delete(t)}reconcile(t){const n=new Set(t);for(const a of this.controllers.keys())n.has(a)||this.cancel(a)}dispose(){for(const t of this.controllers.values())t.abort();this.controllers.clear(),this.eligible.clear()}async run(t,n){let a;const s=new Set;let l=!1;const c=window.setTimeout(()=>{l=!0,n.abort()},this.deadlineMs);try{for(;!n.signal.aborted;){try{const d={Accept:"text/event-stream"};a&&(d["Last-Event-ID"]=a);const m=await this.fetchFn(`${this.options.origin}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/events`,{headers:d,credentials:"include",signal:n.signal});if(m.status===404||!m.body)return;if(!m.ok)throw new Error(`HTTP ${m.status}`);const h=m.body.getReader(),p=new TextDecoder;let b="";for(;;){const{done:x,value:y}=await h.read();if(x||n.signal.aborted)break;b+=p.decode(y,{stream:!0});const E=b.split(`
389
389
 
390
390
  `);b=E.pop()??"";for(const N of E){const R=N.split(`
391
391
  `).find(I=>I.startsWith("id: "))?.slice(4);if(R&&(a=R),!R||s.has(R)||!N.includes("event: session_title"))continue;const C=N.split(`
392
392
  `).find(I=>I.startsWith("data: "))?.slice(6);if(C)try{const I=JSON.parse(C),O=I.data?.title?.trim();if(!O)continue;if(s.add(R),!this.options.hasSession(t)||(this.options.onTitle(t,{title:O,automatic:!!I.data?.automatic}),I.data?.automatic))return}catch{}}}}catch{if(n.signal.aborted)return}n.signal.aborted||await MM(this.backoffMs,n.signal)}}finally{window.clearTimeout(c),this.controllers.get(t)===n&&this.controllers.delete(t),(l||!this.options.hasSession(t))&&this.options.refresh()}}}function MM(e,t){return new Promise(n=>{const a=window.setTimeout(l,e),s=()=>l();function l(){window.clearTimeout(a),t.removeEventListener("abort",s),n()}t.addEventListener("abort",s,{once:!0})})}async function OM(e){if(e.creatingRef?.current)throw new Error("CREATE_SESSION_IN_FLIGHT");e.creatingRef&&(e.creatingRef.current=!0),e.setCreatingSession?.(!0);try{const t=await(e.fetchFn??fetch)(`${e.origin}/api/operator/v1/chat/sessions`,{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify(e.options??{})});if(!t.ok){const c=await t.json().catch(()=>({}));throw new Error(c.error?.message??`HTTP ${t.status}`)}const n=await t.json();if(!n.session)throw new Error("创建会话响应缺少 durable session");const a=n.session,s={sessionId:a.sessionId,...Ih(a)},l=[a,...e.sessionListRef.current.filter(c=>c.sessionId!==a.sessionId)].slice(0,xu);return e.sessionListRef.current=l,e.setSessionList(l),e.titleWatcher?.markEligible(a.sessionId),e.refreshSessionList(),s}finally{e.creatingRef&&(e.creatingRef.current=!1),e.setCreatingSession?.(!1)}}function DM(e){const{origin:t,refs:n,setSession:a,thread:s,composer:l,browser:c,setError:d,setNotice:m,onCompactionChange:h,setProcessOpen:p,setAutoScroll:b}=e,{applyActivatedSession:x,resetForNewSession:y,setMessages:E}=s,{setInput:N,setPendingImages:R}=l,{setPreviews:C,setActivePreviewPath:I}=c,[O,X]=k.useState([]),q=k.useRef([]);q.current=O;const A=k.useRef(null),[F,J]=k.useState(!1),W=k.useRef(!1),z=k.useRef(!1),U=k.useRef(0),H=k.useCallback(()=>{n.sessionGenerationRef.current+=1,n.abortRef.current?.abort(),n.reconnectAbortRef.current?.abort();for(const D of n.sessionAbortControllersRef.current.values())D.abort();n.sessionAbortControllersRef.current.clear(),n.reconnectAbortRef.current=null,n.eventsStreamStateRef.current=null,n.streamingRef.current=!1,n.abortRef.current=null,n.assistantIdRef.current=null,n.lastEventIdRef.current=null,n.seenEventIdsRef.current=new Set,n.turnAssistantIdsRef.current=new Map,n.sealedAssistantIdsRef.current=new Set,n.settledTurnIdsRef.current=new Set,n.activeTurnIdRef.current=null,y(),N(""),R([]),C([]),I(null),p(!1),b(!0)},[n,y,N,R,C,I,p,b]),te=k.useCallback(async()=>{try{const D=await fetch(`${t}/api/operator/v1/chat/sessions`,{credentials:"include"});if(!D.ok)return;const P=(await D.json()).sessions??[],_=P.slice(0,xu),ne=P.slice(xu);if(X(_),ne.length===0)return;await Promise.all(ne.map(se=>fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(se.sessionId)}`,{method:"DELETE",credentials:"include",headers:{"x-loop-console-confirmation":er()}}).catch(()=>{})));const de=n.sessionRef.current?.sessionId;de&&ne.some(se=>se.sessionId===de)&&(U.current+=1,n.sessionRef.current=null,H(),a(null),window.localStorage.removeItem(Yr))}catch{}},[t,n,H,a]),G=k.useCallback(async D=>{try{return(await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(D)}`,{method:"DELETE",credentials:"include",headers:{"x-loop-console-confirmation":er()}})).ok?(A.current?.cancel(D),n.sessionRef.current?.sessionId===D&&(U.current+=1,n.sessionRef.current=null,H(),a(null),window.localStorage.removeItem(Yr)),await te(),!0):(d("删除会话失败"),!1)}catch(P){return d(P instanceof Error?P.message:String(P)),!1}},[t,n,a,H,te,d]),K=k.useCallback(async D=>{const P=++U.current;try{const _=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(D)}`,{credentials:"include"}),ne=await _.json();if(!_.ok||!ne.session)throw new Error(ne.error?.message??"会话不可用");if(P!==U.current)return;const de={sessionId:ne.session.sessionId,...Ih(ne.session)};H(),n.sessionRef.current=de,n.streamingRef.current=!!ne.session.activeTurnId,n.activeTurnIdRef.current=ne.session.activeTurnId??null,n.seenEventIdsRef.current=new Set,n.turnAssistantIdsRef.current=new Map,n.sealedAssistantIdsRef.current=new Set,n.settledTurnIdsRef.current=new Set,n.lastEventIdRef.current=null,a(de),n.assistantIdRef.current=null,n.abortRef.current=n.sessionAbortControllersRef.current.get(D)??null,R([]),C([]),N(ne.session.composerDraft??"");const se=M6(ne.session.messages??[]);x({messages:se.messages,toolCalls:se.toolCalls,streaming:!!ne.session.activeTurnId,turnPhase:ne.session.turnPhase??(ne.session.activeTurnId?"running":"idle"),deferredTurn:ne.session.deferredTurn??null}),window.localStorage.setItem(Yr,D),I(null)}catch(_){if(P!==U.current)return;d(_ instanceof Error?_.message:String(_))}},[t,n,a,R,C,N,x,H,I,d]);k.useEffect(()=>{te()},[te]),A.current||(A.current=new IM({origin:t,hasSession:D=>q.current.some(P=>P.sessionId===D),onTitle:(D,P)=>{X(_=>_.map(ne=>ne.sessionId!==D||P.automatic&&ne.title?ne:P.automatic?{...ne,title:P.title}:{...ne,displayTitle:P.title}))},refresh:te}));const $=k.useCallback(D=>A.current?.startIfEligible(D),[]);k.useEffect(()=>{A.current?.reconcile(O.filter(D=>D.state!=="archived"&&!D.title).map(D=>D.sessionId))},[O]),k.useEffect(()=>()=>A.current?.dispose(),[]),k.useEffect(()=>{let D=!1;const P=window.localStorage.getItem(Yr);if(!P)return;const _=++U.current;return(async()=>{try{const ne=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(P)}`,{credentials:"include"});if(!ne.ok){window.localStorage.removeItem(Yr);return}const de=await ne.json();if(D||_!==U.current||!de.session)return;const se={sessionId:de.session.sessionId,...Ih(de.session)};n.sessionGenerationRef.current+=1,n.sessionRef.current=se,n.activeTurnIdRef.current=de.session.activeTurnId??null,n.seenEventIdsRef.current=new Set,n.turnAssistantIdsRef.current=new Map,n.sealedAssistantIdsRef.current=new Set,n.settledTurnIdsRef.current=new Set,n.lastEventIdRef.current=null,a(se),N(de.session.composerDraft??""),E((de.session.messages??[]).filter(ae=>ae.role==="user"||ae.role==="assistant").map(ae=>{const we=kp(ae.content);return{id:ae.id,role:ae.role,text:ae.text,createdAt:Date.parse(ae.at)||Date.now(),...we&&we.length>0?{content:we}:{}}}))}catch{}})(),()=>{D=!0}},[t,n,a,N,E]);const ee=k.useCallback(D=>OM({origin:t,sessionListRef:q,setSessionList:X,titleWatcher:A.current,refreshSessionList:te,options:D,setCreatingSession:J,creatingRef:W}),[t,te]),oe=k.useCallback(async D=>{if(W.current)return null;const P=++U.current;d(null);try{const _=await ee(D);return P!==U.current?null:(H(),n.sessionRef.current=_,window.localStorage.setItem(Yr,_.sessionId),a(_),_)}catch(_){if(P!==U.current)return null;const ne=_ instanceof Error?_.message:String(_);return ne!=="CREATE_SESSION_IN_FLIGHT"&&d(ne),null}},[n,a,d,H,ee]),ce=k.useCallback(async D=>{const P=n.sessionRef.current;if(!P||n.streamingRef.current)return;const _=typeof D=="string"?D.trim():"";h?.(!0);try{const ne={"x-loop-console-confirmation":er()};_&&(ne["content-type"]="application/json");const de=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(P.sessionId)}/compact`,{method:"POST",credentials:"include",headers:ne,..._?{body:JSON.stringify({instructions:_})}:{}}),se=await de.json().catch(()=>({}));if(!de.ok){const ze=se.error?.code;if(AM(ze)){d(_M(ze)),L6(ze)&&!z.current&&(z.current=!0,window.setTimeout(()=>window.location.reload(),1200));return}d(se.error?.message??"上下文压缩失败");return}d(null);const ae=se.snapshot?.summary?.trim(),we=se.snapshot?.tokensBefore,ge=ae||"历史上下文已精简,关键决策与当前任务已保留。";await K(P.sessionId),E(ze=>[...ze,{id:`compaction-${Date.now()}`,role:"assistant",kind:"compaction",text:ge,createdAt:Date.now(),...we?{compaction:{tokensBefore:we}}:{}}]),m({id:Date.now(),message:`已压缩上下文:${ge.slice(0,72)}${ge.length>72?"…":""}`})}catch(ne){d(ne instanceof Error?ne.message:"上下文压缩失败")}finally{h?.(!1)}},[t,n,d,m,E,h,K]);return{sessionList:O,creatingSession:F,activateSession:K,refreshSessionList:te,deleteSession:G,createSession:oe,updateSession:async(D,P)=>{if(!(await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(D)}`,{method:"PATCH",credentials:"include",headers:{"content-type":"application/json","x-loop-console-confirmation":er()},body:JSON.stringify(P)})).ok){d("会话更新失败");return}await te(),P.state==="archived"&&A.current?.cancel(D),P.state==="archived"&&n.sessionRef.current?.sessionId===D&&(U.current+=1,n.sessionRef.current=null,H(),a(null),window.localStorage.removeItem(Yr))},watchSessionTitle:$,compactSession:ce}}const So={"worker-managed-rerun-unsupported":"这次运行由 Console/Worker 启动,不能只从某个节点续跑","workspace-drift":"工作区在上次运行后又改过文件,旧结果不能接着用","controller-drift":"控制器版本已变化,不能接到上次运行上继续","binding-drift":"任务契约或源文件已变化,不能只续跑旧计划","restart-subgraph-contains-unsafe-shell":"下游包含会执行命令的验证步骤,不能只重跑这一段","restart-subgraph-contains-writer":"下游包含会改代码的写入步骤,不能只重跑这一段","restart-subgraph-contains-decision-gate":"下游包含需要人工决策的门禁,不能只重跑这一段","dynamic-rerun-unsupported":"这次运行含动态展开节点,不支持从节点续跑","parent-lifecycle-ineligible":"当前运行状态不允许从节点续跑","convergence-rerun-unsupported":"收敛型运行不支持从节点续跑","evaluation-rerun-unsupported":"带评估的运行不支持从节点续跑","budget-rerun-unsupported":"硬预算运行不支持从节点续跑","workspace-checkpoint-missing":"缺少工作区快照,无法安全地只续跑一段","skill-snapshot-invalid":"技能快照缺失或损坏,不能接到上次运行上继续","unresolved-errors-outside-reset-closure":"选中节点之外还有未解决的失败,只重跑这一段不够","selected-node-missing":"找不到要续跑的起始节点","ambiguous-skipped-rewrite":"跳过的节点有多个上游失败,无法自动选定起点","skipped-without-upstream-error":"该节点被跳过且没有明确的上游失败","parent-facts-invalid":"上次运行的证据不完整或已损坏,不能只续跑一段",RUN_NOT_ACTIVE:"这次运行不在活动状态,不能协作中止",RUN_NOT_CONSOLE_OWNED:"此运行不由当前 Console 持有,暂不支持协作中止",RUNNER_IDENTITY_MISMATCH:"运行身份已变化,不能中止这份过期请求",INTERRUPT_ALREADY_PENDING:"已有一条中止请求等待结算",RUN_ALREADY_TERMINAL:"运行已经结束,没有可中止的活 runner",INTERRUPT_NEEDS_RECONCILE:"中止请求已登记但无法确认 runner 已处理,需要对账"};function jM(){return Object.keys(So)}function bu(e){const t=e.trim().replace(/[.…]+$/,"");if(!t)return null;if(So[t])return{code:t};const n=t.lastIndexOf(":");if(n>0){const a=t.slice(n+1),s=t.slice(0,n);if(So[a])return{code:a,nodeId:s};const l=jM().find(c=>a.length>=3&&c.startsWith(a));if(l)return{code:l,nodeId:s}}return So[t]?{code:t}:null}function LM(e){const t=[];for(const n of e.blockedReasons??[]){const a=bu(String(n));a&&t.push(a)}for(const n of e.blockingNodes??[]){const a=n.reasonCode?.trim();if(!a)continue;const s=bu(n.nodeId?`${n.nodeId}:${a}`:a);s&&t.push(s)}if(t.length===0&&e.fallbackMessage?.trim()){const n=e.fallbackMessage.trim().replace(/^从节点重跑不具备安全资格[::]?\s*/,"").replace(/[。..]+$/,"");for(const a of n.split(/[;;]/)){const s=bu(a);s&&t.push(s)}}return t}function zM(e){const t=new Map;for(const a of e){const s=t.get(a.code)??[];a.nodeId&&!s.includes(a.nodeId)&&s.push(a.nodeId),t.set(a.code,s)}const n=[];for(const[a,s]of t){const l=So[a];l&&(s.length>0&&a.startsWith("restart-subgraph-contains-")?n.push(`${l}(${s.join("、")})`):n.push(l))}return n}function BM(e){return e.join("; ").includes("worker-managed-rerun-unsupported")||e.some(n=>bu(n)?.code==="worker-managed-rerun-unsupported")?"下一步:请点下方「重新排队 Worker Task」,从头完整执行。":"下一步:请改用「带反馈重新执行任务」,重新生成完整 DAG。"}function z6(e){const t=e.fallbackMessage?.trim();if(t?.startsWith("无法从该节点续跑"))return t;const n=LM(e),a=zM(n),s=n.map(c=>c.code),l=BM(s.length>0?s:[t??""]);return a.length===0?["无法从该节点续跑。这次续跑不够安全(工作区、控制器或下游步骤不允许只重跑一段)。",l].join(`
393
393
  `):["无法从该节点续跑,因为:",...a.map(c=>`• ${c}`),"",l].join(`
394
- `)}function qM(e){const t=e.trim();if(!t)return null;if(t.startsWith("无法从该节点续跑"))return t;if(/从节点重跑不具备安全资格|worker-managed-rerun-unsupported|restart-subgraph-contains-|workspace-drift|controller-drift|binding-drift/.test(t))return z6({fallbackMessage:t});if(/action must be a mutation-gate target/i.test(t))return"这个操作不能再走确认门。Worker 启动的任务请直接点「重新排队 Worker Task」;独立运行请点「带反馈重新执行任务」。";if(/cannot read dagReport run facts/i.test(t))return"读不到这次运行的失败报告,不能完整重跑。请先点「查看报告」或「Doctor 诊断」。";if(/dagRerunPlan run facts unavailable/i.test(t))return"读不到节点恢复资格,不能直接改走完整重跑。请先点「从失败节点恢复」查看资格,或先「查看报告」。";if(/node rerun plan is eligible/i.test(t))return"节点恢复是安全的,请改用「从失败节点恢复」,不必重新执行完整任务。";if(/does not support autonomous standaloneTaskRerun/i.test(t))return"当前失败不适合自动完整重跑。请先点「查看报告」,按建议操作。";if(/primaryRecovery requires a human decision/i.test(t))return"这次失败需要人工决策,不能自动重跑。请先点「查看报告」。";if(/is not bound to run/i.test(t))return"填写的任务 ID 与这次运行不匹配。请使用该运行绑定的原任务 ID。";if(/cannot read pool doctor/i.test(t))return"读不到任务队列状态,暂时不能重新排队。请稍后重试,或先跑 Doctor 诊断。";if(/not found in the pool doctor inventory/i.test(t))return"任务队列里找不到这个任务,不能重新排队。请确认 Task ID 来自 Worker 队列,而不是只填了 DAG 运行 ID。";if(/only Failed tasks are retry-eligible/i.test(t)){const n=t.match(/is ([A-Za-z_]+); only Failed/)?.[1];return n?`该任务当前是「${n}」,只有失败(Failed)的任务才能重新排队。`:"只有失败(Failed)的任务才能重新排队。请先确认任务已失败。"}return/featureId .+ does not match the pool task/i.test(t)?"Feature ID 与队列中的任务不一致。请改用队列里记录的 Feature ID,或留空后重试。":/RUN_NOT_CONSOLE_OWNED|不由当前 Console 持有/.test(t)?"此运行不由当前 Console 持有,暂不支持协作中止。请用 Doctor / 报告查看。":/RUNNER_IDENTITY_MISMATCH|运行身份已变化/.test(t)?"运行身份已变化,不能中止这份过期请求。请刷新后再试。":/INTERRUPT_ALREADY_PENDING|已有一条中止请求/.test(t)?"已有一条中止请求等待当前节点安全收敛。请稍候刷新,不要重复提交。":/RUN_ALREADY_TERMINAL|运行已经结束/.test(t)?"运行已经结束,没有可中止的活 runner。请改用报告或对账。":/INTERRUPT_NEEDS_RECONCILE|无法确认 runner 已处理/.test(t)?"中止请求已登记,但无法确认 runner 已处理。请用 Doctor 对账,不要当成已经中止。":/RUN_NOT_ACTIVE/.test(t)?"这次运行不在本机活动目录,或已经不是 running,不能协作中止。":null}const UM=[{pattern:/invalid (boot capability|confirmation header) token/i,copy:"页面已过期(控制台已重启),请刷新页面(F5)后重试。"},{pattern:/mutation requires boot capability cookie|mutation requires confirmation header token/i,copy:"页面状态异常,请刷新页面(F5)后重试。"},{pattern:/Host header is required for non-loopback/i,copy:"请求主机校验失败:非回环绑定时要求 Host 头,请刷新页面或检查访问地址。"}];function qa(e){const t=(e??"").trim();if(!t)return"操作失败";const n=qM(t);if(n)return n;if(/controller identity changed|package fingerprint changed|entry binary sha256 changed/i.test(t))return"控制器版本已变更(Console 启动后代码被重新编译)。请重启 Console 后再试,一次会话中途不要升级/重建控制器。";if(/Pi session file missing or not openable|cannot reopen chat session .* no persisted Pi session file/i.test(t))return"该对话的 Pi 会话文件已丢失,无法恢复上下文。请新建对话继续(历史记录无法重开)。";if(/reopened Pi sessionId mismatch/i.test(t))return"重开对话失败:Pi 会话身份与记录不一致(常见于会话文件丢失后被误建)。请新建对话继续。";if(/base HEAD .+ != frozen baseCommit|exact-base|not a descendant of frozen baseCommit/i.test(t))return"主分支已相对夜间冻结的 baseCommit 前进,无法安全 fast-forward harvest。请人工核对后使用 Discard(必要时勾选强制),或改走日间合并流程。";if(/force-required|requires --force/i.test(t))return"该终态需要强制 Discard。请确认后勾选强制再试。";for(const a of UM)if(a.pattern.test(t))return a.copy;return t}function HM(e){return e.turnPhase==="stopping"?e.blockedByTurnId?{action:"queue-deferred",blockedByTurnId:e.blockedByTurnId}:{action:"hold"}:e.turnPhase==="idle"?{action:"send-now"}:{action:"hold"}}function g2(e){const{clientRequestId:t,blockedByTurnId:n,state:a}=e;if(!a)return{action:"hold"};if(a.deferredTurn?.clientRequestId===t)return{action:"deferred",deferredTurn:a.deferredTurn};if(a.activeTurn?.clientRequestId===t)return{action:"accepted",turn:a.activeTurn};if(a.latestTurn?.clientRequestId===t)return{action:"accepted",turn:a.latestTurn};const s=a.activeTurn?.turnId??a.activeTurnId??null;return a.turnPhase==="stopping"&&s===n?{action:"retry-deferred"}:Ao(a)?{action:"hold"}:{action:"send-now"}}function FM(e){let t;const n=new Promise(a=>{t=a});return{...e,outcomePromise:n,resolveOutcome:t}}function b2(e="network error while creating turn"){return{kind:"ambiguous",message:e}}function PM(e="无法确认 Turn 是否已创建,正在与服务端对账(不会重复提交新的请求 ID)"){return{kind:"ambiguous",message:e}}function v2(e){const{body:t,clientRequestId:n}=e,a=t.error?.code,s=t.error?.message??(e.httpOk?"turn was not accepted":`HTTP ${e.status}`);if(a==="TURN_ACTIVE"&&t.activeTurn?.turnId)return{kind:"adopt-active",activeTurn:t.activeTurn,message:"上一轮仍在运行,已重新连接;当前消息已保留。"};if(t.accepted===!0||e.httpOk&&t.turnId){const l=t.turn?.turnId??t.turnId;return l?{kind:"accepted",turnId:l,idempotent:t.idempotent===!0,turn:t.turn??{turnId:l,clientRequestId:n,state:t.state}}:{kind:"ambiguous",message:s}}return t.accepted===!1||a?{kind:"rejected",code:a,message:s}:{kind:"ambiguous",message:s}}function $M(e){const t=e.clientRequestId,n=e.state?.activeTurn,a=e.state?.latestTurn;return n?.clientRequestId===t&&n.turnId?{kind:"accepted",turnId:n.turnId,idempotent:!0,turn:n}:a?.clientRequestId===t&&a.turnId?{kind:"accepted",turnId:a.turnId,idempotent:!0,turn:a}:n?.turnId?{kind:"adopt-active",activeTurn:n,message:"上一轮仍在运行,已重新连接;当前消息已保留。"}:null}function GM(e){const t=e.clientRequestId,n=e.state?.activeTurn,a=e.state?.latestTurn,s=n?.state??e.state?.activeTurnState??void 0,l=a?.state??e.state?.latestTurnState??void 0;if(n?.clientRequestId===t&&n.turnId)return is(s)?{action:"release-terminal",turnId:n.turnId,state:String(s)}:{action:"bind-active",turnId:n.turnId};if(a?.clientRequestId===t&&a.turnId){if(is(l))return{action:"release-terminal",turnId:a.turnId,state:String(l)};if(!n?.turnId||n.clientRequestId===t)return{action:"bind-active",turnId:a.turnId}}return!Ao(e.state)&&!(!!n?.turnId&&n?.clientRequestId!==t)?{action:"release-not-accepted"}:{action:"hold"}}function Ao(e){if(e?.activeTurnId||e?.activeTurn?.turnId)return!0;const t=e?.runtime;return t?t.isStreaming===!0||t.isPromptRunning===!0||t.isCompacting===!0||t.isBashRunning===!0:!1}function is(e){return e==="settled"||e==="aborted"||e==="failed"}function Mu(e){return e.pending.sessionId===e.sessionId&&e.pending.sessionGeneration===e.sessionGeneration&&e.pending.submitGeneration===e.submitGeneration}function KM(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/turns`}function y2(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/state`}function VM(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/events`}function YM(e,t,n){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/turns/${encodeURIComponent(n)}/abort`}function Ys(e){return e.stoppingTurnId||e.stopRequested?"stopping":e.activeTurnId||e.streaming||e.submitInFlight||e.pendingSubmission?"running":"idle"}function ml(e,t){const n=e.pendingSubmission;t&&n&&n.clientRequestId!==t||(e.submitInFlight=!1,(!t||n?.clientRequestId===t)&&(n?.clientRequestId?e.releasedClientRequestIds.add(n.clientRequestId):t&&e.releasedClientRequestIds.add(t),e.pendingSubmission=null),e.pendingSubmission||(e.stopRequested=!1))}function B6(e){e.stopRequested=!0}function Ou(e){e.stopRequested=!1}function XM(e,t){return!(!t||e.abortPostedTurnIds.has(t))}function ZM(e,t){t&&e.abortPostedTurnIds.add(t)}function Du(e,t){return!e.stopRequested||!XM(e,t)?null:(ZM(e,t),e.stoppingTurnId=t,e.activeTurnId=t,t)}function x2(e,t){const n=e.pendingSubmission;return n&&n.clientRequestId!==t.clientRequestId?!1:(t.turnId&&e.settledTurnIds.add(t.turnId),ml(e,t.clientRequestId),Ou(e),t.markIdle!==!1&&(e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null),!0)}function WM(e,t){return Mu({pending:t.pending,sessionId:e.sessionId,sessionGeneration:e.sessionGeneration,submitGeneration:e.submitGeneration})?(t.pending.acceptedTurnId=t.turnId,e.activeTurnId=t.turnId,e.turnAssistantIds.set(t.turnId,t.assistantId),e.streaming=!0,e.submitInFlight=!1,t.pending.resolveOutcome({kind:"accepted",turnId:t.turnId}),t.ui?.setStreaming(!0),t.ui?.setStreamingAssistantId(t.assistantId),t.ui?.setPendingImages([]),t.ui?.watchSessionTitle?.(t.sessionId),!0):(t.pending.resolveOutcome({kind:"stale"}),!1)}function QM(e,t){t.pending.resolveOutcome({kind:"adopt-active",activeTurn:{turnId:t.activeTurnId},message:t.message}),ml(e,t.pending.clientRequestId),t.current&&(t.ui?.clearEmptyAssistant(t.assistantId),t.ui?.setInput(t.text),t.ui?.setPendingImages(t.images),e.activeTurnId=t.activeTurnId,e.assistantId=null,e.streaming=!0,t.ui?.setStreaming(!0),t.ui?.setStreamingAssistantId(null),t.notice.setError(null),t.notice.showNotice(t.message))}function JM(e,t){if(t.pending.resolveOutcome({kind:"rejected",message:t.message}),ml(e,t.pending.clientRequestId),!t.current)return;const n=t.ui?.formatError?t.ui.formatError(t.message):t.message;t.ui?.setError(n),e.streaming=!1,e.assistantId=null,t.ui?.setStreaming(!1),t.ui?.setStreamingAssistantId(null),t.ui?.clearEmptyAssistant(t.assistantId),t.ui?.setInput(t.text),t.ui?.setPendingImages(t.images)}function eO(e,t,n){const a=Mu({pending:n.pending,sessionId:e.sessionId,sessionGeneration:e.sessionGeneration,submitGeneration:e.submitGeneration});if(t.kind==="accepted"){if(WM(e,{turnId:t.turnId,assistantId:n.assistantId,pending:n.pending,sessionId:n.sessionId,ui:n.acceptedUi})){const l=Du(e,t.turnId);l&&n.onAutoAbort?.(l)}return}if(t.kind==="adopt-active"){const s=a?Du(e,t.activeTurn.turnId):null;QM(e,{activeTurnId:t.activeTurn.turnId,message:t.message,assistantId:n.assistantId,text:n.text,images:n.images,pending:n.pending,current:a,notice:n.notice,ui:n.adoptUi}),s&&n.onAutoAbort?.(s);return}if(t.kind==="rejected"){JM(e,{message:t.message,assistantId:n.assistantId,text:n.text,images:n.images,pending:n.pending,current:a,ui:n.rejectedUi}),Ou(e);return}if(t.kind==="stale"){n.pending.resolveOutcome(t),ml(e,n.pending.clientRequestId),Ou(e);return}n.pending.resolveOutcome(t)}function tO(e,t,n,a){const s=e.pendingSubmission;if(!s)return"held";if(t.action==="bind-active"){const c=!!s.acceptedTurnId;c||(s.acceptedTurnId=t.turnId,e.activeTurnId=t.turnId,e.turnAssistantIds.set(t.turnId,s.assistantId),e.streaming=!0,e.submitInFlight=!1);const d=Du(e,t.turnId);return d&&a?.onAutoAbort?.(d),c?"held":"bound"}if(t.action==="release-terminal"||t.action==="release-not-accepted")return t.action==="release-terminal"&&e.settledTurnIds.add(t.turnId),ml(e,s.clientRequestId),Ou(e),Ao(n)||(e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.()),"released";const l=n?.activeTurn?.turnId??n?.activeTurnId??null;return l&&(e.activeTurnId=l),"held"}const nO="正在停止…",rO="正在停止…",aO="停止请求未完成,正在与服务端对账…",iO="停止请求失败,正在与服务端对账…";function w2(e){e.showNotice(nO)}function S2(e){if(e.networkError)return{action:"keep-busy-notice",message:iO};const t=e.body.turn?.state;return e.body.accepted===!0&&is(t)?{action:"terminal-idle",turnId:e.turnId}:e.body.error?.code==="TURN_ABORT_PENDING"?{action:"abort-pending-notice"}:e.body.error?.code==="CHAT_TURN_OWNER_LOST"||e.body.error?.code==="OWNER_LOST"?{action:"owner-lost-reconcile"}:e.httpOk?{action:"noop"}:{action:"keep-busy-notice",message:aO}}function Gm(e,t,n,a){const s=a?.sessionStillCurrent!==!1;if(t.action==="terminal-idle"){if(!s)return;e.settledTurnIds.add(t.turnId),e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.();return}if(t.action==="abort-pending-notice"){n.showNotice(rO);return}if(t.action==="owner-lost-reconcile"){if(!s)return;a?.runtimeBusy||(e.stoppingTurnId&&e.settledTurnIds.add(e.stoppingTurnId),e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.());return}if(t.action==="keep-busy-notice"){n.showNotice(t.message);return}}function k2(e,t){B6(e);const n=e.activeTurnId??e.pendingSubmission?.acceptedTurnId??null;if(n){const a=Du(e,n);return a?(t.notice&&w2(t.notice),t.postAbort(a),{abortedTurnId:a,stopRequested:!0}):{abortedTurnId:null,stopRequested:!0}}return t.notice&&w2(t.notice),{abortedTurnId:null,stopRequested:!0}}function la(e){return{submitInFlight:e.submitInFlightRef.current,pendingSubmission:e.pendingSubmissionRef.current,activeTurnId:e.activeTurnIdRef.current,streaming:e.streamingRef.current,assistantId:e.assistantIdRef.current,stoppingTurnId:e.stoppingTurnIdRef.current,settledTurnIds:e.settledTurnIdsRef.current,turnAssistantIds:e.turnAssistantIdsRef.current,sessionId:e.sessionRef.current?.sessionId??null,sessionGeneration:e.sessionGenerationRef.current,submitGeneration:e.submitGenerationRef.current,stopInFlight:e.stopInFlightRef.current,stopRequested:e.stopRequestedRef.current,abortPostedTurnIds:e.abortPostedTurnIdsRef.current,releasedClientRequestIds:e.releasedClientRequestIdsRef.current}}function oa(e,t){e.submitInFlightRef.current=t.submitInFlight,e.pendingSubmissionRef.current=t.pendingSubmission,e.activeTurnIdRef.current=t.activeTurnId,e.streamingRef.current=t.streaming,e.assistantIdRef.current=t.assistantId,e.stoppingTurnIdRef.current=t.stoppingTurnId,e.submitGenerationRef.current=t.submitGeneration,e.stopInFlightRef.current=t.stopInFlight,e.stopRequestedRef.current=t.stopRequested}function sO(e){return e.split(`
394
+ `)}function qM(e){const t=e.trim();if(!t)return null;if(t.startsWith("无法从该节点续跑"))return t;if(/从节点重跑不具备安全资格|worker-managed-rerun-unsupported|restart-subgraph-contains-|workspace-drift|controller-drift|binding-drift/.test(t))return z6({fallbackMessage:t});if(/action must be a mutation-gate target/i.test(t))return"这个操作不能再走确认门。Worker 启动的任务请直接点「重新排队 Worker Task」;独立运行请点「带反馈重新执行任务」。";if(/cannot read dagReport run facts/i.test(t))return"读不到这次运行的失败报告,不能完整重跑。请先点「查看报告」或「Doctor 诊断」。";if(/dagRerunPlan run facts unavailable/i.test(t))return"读不到节点恢复资格,不能直接改走完整重跑。请先点「从失败节点恢复」查看资格,或先「查看报告」。";if(/node rerun plan is eligible/i.test(t))return"节点恢复是安全的,请改用「从失败节点恢复」,不必重新执行完整任务。";if(/does not support autonomous standaloneTaskRerun/i.test(t))return"当前失败不适合自动完整重跑。请先点「查看报告」,按建议操作。";if(/primaryRecovery requires a human decision/i.test(t))return"这次失败需要人工决策,不能自动重跑。请先点「查看报告」。";if(/is not bound to run/i.test(t))return"填写的任务 ID 与这次运行不匹配。请使用该运行绑定的原任务 ID。";if(/cannot read pool doctor/i.test(t))return"读不到任务队列状态,暂时不能重新排队。请稍后重试,或先跑 Doctor 诊断。";if(/not found in the pool doctor inventory/i.test(t))return"任务队列里找不到这个任务,不能重新排队。请确认 Task ID 来自 Worker 队列,而不是只填了 DAG 运行 ID。";if(/only Failed tasks are retry-eligible/i.test(t)){const n=t.match(/is ([A-Za-z_]+); only Failed/)?.[1];return n?`该任务当前是「${n}」,只有失败(Failed)的任务才能重新排队。`:"只有失败(Failed)的任务才能重新排队。请先确认任务已失败。"}return/featureId .+ does not match the pool task/i.test(t)?"Feature ID 与队列中的任务不一致。请改用队列里记录的 Feature ID,或留空后重试。":/RUN_NOT_CONSOLE_OWNED|不由当前 Console 持有/.test(t)?"此运行不由当前 Console 持有,暂不支持协作中止。请用 Doctor / 报告查看。":/RUNNER_IDENTITY_MISMATCH|运行身份已变化/.test(t)?"运行身份已变化,不能中止这份过期请求。请刷新后再试。":/INTERRUPT_ALREADY_PENDING|已有一条中止请求/.test(t)?"已有一条中止请求等待当前节点安全收敛。请稍候刷新,不要重复提交。":/RUN_ALREADY_TERMINAL|运行已经结束/.test(t)?"运行已经结束,没有可中止的活 runner。请改用报告或对账。":/INTERRUPT_NEEDS_RECONCILE|无法确认 runner 已处理/.test(t)?"中止请求已登记,但无法确认 runner 已处理。请用 Doctor 对账,不要当成已经中止。":/RUN_NOT_ACTIVE/.test(t)?"这次运行不在本机活动目录,或已经不是 running,不能协作中止。":null}const UM=[{pattern:/invalid (boot capability|confirmation header) token/i,copy:"页面凭证已失效(控制台可能已重启),请刷新页面(F5)后重试。"},{pattern:/mutation requires boot capability cookie|mutation requires confirmation header token/i,copy:"页面状态异常,请刷新页面(F5)后重试。"},{pattern:/Host header is required for non-loopback/i,copy:"请求主机校验失败:非回环绑定时要求 Host 头,请刷新页面或检查访问地址。"}];function qa(e){const t=(e??"").trim();if(!t)return"操作失败";const n=qM(t);if(n)return n;if(/controller identity changed|package fingerprint changed|entry binary sha256 changed/i.test(t))return"控制器版本已变更(Console 启动后代码被重新编译)。请重启 Console 后再试,一次会话中途不要升级/重建控制器。";if(/Pi session file missing or not openable|cannot reopen chat session .* no persisted Pi session file/i.test(t))return"该对话的 Pi 会话文件已丢失,无法恢复上下文。请新建对话继续(历史记录无法重开)。";if(/reopened Pi sessionId mismatch/i.test(t))return"重开对话失败:Pi 会话身份与记录不一致(常见于会话文件丢失后被误建)。请新建对话继续。";if(/base HEAD .+ != frozen baseCommit|exact-base|not a descendant of frozen baseCommit/i.test(t))return"主分支已相对夜间冻结的 baseCommit 前进,无法安全 fast-forward harvest。请人工核对后使用 Discard(必要时勾选强制),或改走日间合并流程。";if(/force-required|requires --force/i.test(t))return"该终态需要强制 Discard。请确认后勾选强制再试。";for(const a of UM)if(a.pattern.test(t))return a.copy;return t}function HM(e){return e.turnPhase==="stopping"?e.blockedByTurnId?{action:"queue-deferred",blockedByTurnId:e.blockedByTurnId}:{action:"hold"}:e.turnPhase==="idle"?{action:"send-now"}:{action:"hold"}}function g2(e){const{clientRequestId:t,blockedByTurnId:n,state:a}=e;if(!a)return{action:"hold"};if(a.deferredTurn?.clientRequestId===t)return{action:"deferred",deferredTurn:a.deferredTurn};if(a.activeTurn?.clientRequestId===t)return{action:"accepted",turn:a.activeTurn};if(a.latestTurn?.clientRequestId===t)return{action:"accepted",turn:a.latestTurn};const s=a.activeTurn?.turnId??a.activeTurnId??null;return a.turnPhase==="stopping"&&s===n?{action:"retry-deferred"}:Ao(a)?{action:"hold"}:{action:"send-now"}}function FM(e){let t;const n=new Promise(a=>{t=a});return{...e,outcomePromise:n,resolveOutcome:t}}function b2(e="network error while creating turn"){return{kind:"ambiguous",message:e}}function PM(e="无法确认 Turn 是否已创建,正在与服务端对账(不会重复提交新的请求 ID)"){return{kind:"ambiguous",message:e}}function v2(e){const{body:t,clientRequestId:n}=e,a=t.error?.code,s=t.error?.message??(e.httpOk?"turn was not accepted":`HTTP ${e.status}`);if(a==="TURN_ACTIVE"&&t.activeTurn?.turnId)return{kind:"adopt-active",activeTurn:t.activeTurn,message:"上一轮仍在运行,已重新连接;当前消息已保留。"};if(t.accepted===!0||e.httpOk&&t.turnId){const l=t.turn?.turnId??t.turnId;return l?{kind:"accepted",turnId:l,idempotent:t.idempotent===!0,turn:t.turn??{turnId:l,clientRequestId:n,state:t.state}}:{kind:"ambiguous",message:s}}return t.accepted===!1||a?{kind:"rejected",code:a,message:s}:{kind:"ambiguous",message:s}}function $M(e){const t=e.clientRequestId,n=e.state?.activeTurn,a=e.state?.latestTurn;return n?.clientRequestId===t&&n.turnId?{kind:"accepted",turnId:n.turnId,idempotent:!0,turn:n}:a?.clientRequestId===t&&a.turnId?{kind:"accepted",turnId:a.turnId,idempotent:!0,turn:a}:n?.turnId?{kind:"adopt-active",activeTurn:n,message:"上一轮仍在运行,已重新连接;当前消息已保留。"}:null}function GM(e){const t=e.clientRequestId,n=e.state?.activeTurn,a=e.state?.latestTurn,s=n?.state??e.state?.activeTurnState??void 0,l=a?.state??e.state?.latestTurnState??void 0;if(n?.clientRequestId===t&&n.turnId)return is(s)?{action:"release-terminal",turnId:n.turnId,state:String(s)}:{action:"bind-active",turnId:n.turnId};if(a?.clientRequestId===t&&a.turnId){if(is(l))return{action:"release-terminal",turnId:a.turnId,state:String(l)};if(!n?.turnId||n.clientRequestId===t)return{action:"bind-active",turnId:a.turnId}}return!Ao(e.state)&&!(!!n?.turnId&&n?.clientRequestId!==t)?{action:"release-not-accepted"}:{action:"hold"}}function Ao(e){if(e?.activeTurnId||e?.activeTurn?.turnId)return!0;const t=e?.runtime;return t?t.isStreaming===!0||t.isPromptRunning===!0||t.isCompacting===!0||t.isBashRunning===!0:!1}function is(e){return e==="settled"||e==="aborted"||e==="failed"}function Mu(e){return e.pending.sessionId===e.sessionId&&e.pending.sessionGeneration===e.sessionGeneration&&e.pending.submitGeneration===e.submitGeneration}function KM(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/turns`}function y2(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/state`}function VM(e,t){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/events`}function YM(e,t,n){return`${e}/api/operator/v1/chat/sessions/${encodeURIComponent(t)}/turns/${encodeURIComponent(n)}/abort`}function Ys(e){return e.stoppingTurnId||e.stopRequested?"stopping":e.activeTurnId||e.streaming||e.submitInFlight||e.pendingSubmission?"running":"idle"}function ml(e,t){const n=e.pendingSubmission;t&&n&&n.clientRequestId!==t||(e.submitInFlight=!1,(!t||n?.clientRequestId===t)&&(n?.clientRequestId?e.releasedClientRequestIds.add(n.clientRequestId):t&&e.releasedClientRequestIds.add(t),e.pendingSubmission=null),e.pendingSubmission||(e.stopRequested=!1))}function B6(e){e.stopRequested=!0}function Ou(e){e.stopRequested=!1}function XM(e,t){return!(!t||e.abortPostedTurnIds.has(t))}function ZM(e,t){t&&e.abortPostedTurnIds.add(t)}function Du(e,t){return!e.stopRequested||!XM(e,t)?null:(ZM(e,t),e.stoppingTurnId=t,e.activeTurnId=t,t)}function x2(e,t){const n=e.pendingSubmission;return n&&n.clientRequestId!==t.clientRequestId?!1:(t.turnId&&e.settledTurnIds.add(t.turnId),ml(e,t.clientRequestId),Ou(e),t.markIdle!==!1&&(e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null),!0)}function WM(e,t){return Mu({pending:t.pending,sessionId:e.sessionId,sessionGeneration:e.sessionGeneration,submitGeneration:e.submitGeneration})?(t.pending.acceptedTurnId=t.turnId,e.activeTurnId=t.turnId,e.turnAssistantIds.set(t.turnId,t.assistantId),e.streaming=!0,e.submitInFlight=!1,t.pending.resolveOutcome({kind:"accepted",turnId:t.turnId}),t.ui?.setStreaming(!0),t.ui?.setStreamingAssistantId(t.assistantId),t.ui?.setPendingImages([]),t.ui?.watchSessionTitle?.(t.sessionId),!0):(t.pending.resolveOutcome({kind:"stale"}),!1)}function QM(e,t){t.pending.resolveOutcome({kind:"adopt-active",activeTurn:{turnId:t.activeTurnId},message:t.message}),ml(e,t.pending.clientRequestId),t.current&&(t.ui?.clearEmptyAssistant(t.assistantId),t.ui?.setInput(t.text),t.ui?.setPendingImages(t.images),e.activeTurnId=t.activeTurnId,e.assistantId=null,e.streaming=!0,t.ui?.setStreaming(!0),t.ui?.setStreamingAssistantId(null),t.notice.setError(null),t.notice.showNotice(t.message))}function JM(e,t){if(t.pending.resolveOutcome({kind:"rejected",message:t.message}),ml(e,t.pending.clientRequestId),!t.current)return;const n=t.ui?.formatError?t.ui.formatError(t.message):t.message;t.ui?.setError(n),e.streaming=!1,e.assistantId=null,t.ui?.setStreaming(!1),t.ui?.setStreamingAssistantId(null),t.ui?.clearEmptyAssistant(t.assistantId),t.ui?.setInput(t.text),t.ui?.setPendingImages(t.images)}function eO(e,t,n){const a=Mu({pending:n.pending,sessionId:e.sessionId,sessionGeneration:e.sessionGeneration,submitGeneration:e.submitGeneration});if(t.kind==="accepted"){if(WM(e,{turnId:t.turnId,assistantId:n.assistantId,pending:n.pending,sessionId:n.sessionId,ui:n.acceptedUi})){const l=Du(e,t.turnId);l&&n.onAutoAbort?.(l)}return}if(t.kind==="adopt-active"){const s=a?Du(e,t.activeTurn.turnId):null;QM(e,{activeTurnId:t.activeTurn.turnId,message:t.message,assistantId:n.assistantId,text:n.text,images:n.images,pending:n.pending,current:a,notice:n.notice,ui:n.adoptUi}),s&&n.onAutoAbort?.(s);return}if(t.kind==="rejected"){JM(e,{message:t.message,assistantId:n.assistantId,text:n.text,images:n.images,pending:n.pending,current:a,ui:n.rejectedUi}),Ou(e);return}if(t.kind==="stale"){n.pending.resolveOutcome(t),ml(e,n.pending.clientRequestId),Ou(e);return}n.pending.resolveOutcome(t)}function tO(e,t,n,a){const s=e.pendingSubmission;if(!s)return"held";if(t.action==="bind-active"){const c=!!s.acceptedTurnId;c||(s.acceptedTurnId=t.turnId,e.activeTurnId=t.turnId,e.turnAssistantIds.set(t.turnId,s.assistantId),e.streaming=!0,e.submitInFlight=!1);const d=Du(e,t.turnId);return d&&a?.onAutoAbort?.(d),c?"held":"bound"}if(t.action==="release-terminal"||t.action==="release-not-accepted")return t.action==="release-terminal"&&e.settledTurnIds.add(t.turnId),ml(e,s.clientRequestId),Ou(e),Ao(n)||(e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.()),"released";const l=n?.activeTurn?.turnId??n?.activeTurnId??null;return l&&(e.activeTurnId=l),"held"}const nO="正在停止…",rO="正在停止…",aO="停止请求未完成,正在与服务端对账…",iO="停止请求失败,正在与服务端对账…";function w2(e){e.showNotice(nO)}function S2(e){if(e.networkError)return{action:"keep-busy-notice",message:iO};const t=e.body.turn?.state;return e.body.accepted===!0&&is(t)?{action:"terminal-idle",turnId:e.turnId}:e.body.error?.code==="TURN_ABORT_PENDING"?{action:"abort-pending-notice"}:e.body.error?.code==="CHAT_TURN_OWNER_LOST"||e.body.error?.code==="OWNER_LOST"?{action:"owner-lost-reconcile"}:e.httpOk?{action:"noop"}:{action:"keep-busy-notice",message:aO}}function Gm(e,t,n,a){const s=a?.sessionStillCurrent!==!1;if(t.action==="terminal-idle"){if(!s)return;e.settledTurnIds.add(t.turnId),e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.();return}if(t.action==="abort-pending-notice"){n.showNotice(rO);return}if(t.action==="owner-lost-reconcile"){if(!s)return;a?.runtimeBusy||(e.stoppingTurnId&&e.settledTurnIds.add(e.stoppingTurnId),e.streaming=!1,e.activeTurnId=null,e.assistantId=null,e.stoppingTurnId=null,a?.markIdle?.());return}if(t.action==="keep-busy-notice"){n.showNotice(t.message);return}}function k2(e,t){B6(e);const n=e.activeTurnId??e.pendingSubmission?.acceptedTurnId??null;if(n){const a=Du(e,n);return a?(t.notice&&w2(t.notice),t.postAbort(a),{abortedTurnId:a,stopRequested:!0}):{abortedTurnId:null,stopRequested:!0}}return t.notice&&w2(t.notice),{abortedTurnId:null,stopRequested:!0}}function la(e){return{submitInFlight:e.submitInFlightRef.current,pendingSubmission:e.pendingSubmissionRef.current,activeTurnId:e.activeTurnIdRef.current,streaming:e.streamingRef.current,assistantId:e.assistantIdRef.current,stoppingTurnId:e.stoppingTurnIdRef.current,settledTurnIds:e.settledTurnIdsRef.current,turnAssistantIds:e.turnAssistantIdsRef.current,sessionId:e.sessionRef.current?.sessionId??null,sessionGeneration:e.sessionGenerationRef.current,submitGeneration:e.submitGenerationRef.current,stopInFlight:e.stopInFlightRef.current,stopRequested:e.stopRequestedRef.current,abortPostedTurnIds:e.abortPostedTurnIdsRef.current,releasedClientRequestIds:e.releasedClientRequestIdsRef.current}}function oa(e,t){e.submitInFlightRef.current=t.submitInFlight,e.pendingSubmissionRef.current=t.pendingSubmission,e.activeTurnIdRef.current=t.activeTurnId,e.streamingRef.current=t.streaming,e.assistantIdRef.current=t.assistantId,e.stoppingTurnIdRef.current=t.stoppingTurnId,e.submitGenerationRef.current=t.submitGeneration,e.stopInFlightRef.current=t.stopInFlight,e.stopRequestedRef.current=t.stopRequested}function sO(e){return e.split(`
395
395
  `).find(t=>t.startsWith("event: "))?.slice(7).trim()??"message"}function lO(){return new Promise(e=>window.setTimeout(e,25))}function Km(e,t){t&&e(n=>n.filter(a=>!(a.id===t&&a.role==="assistant"&&!a.text.trim())))}function oO(e){const{origin:t,refs:n,session:a,thread:s,composer:l,setError:c,setAutoScroll:d,setNotice:m,recoveryVersion:h=0,watchSessionTitle:p}=e,{applySseBlock:b,setMessages:x,setStreaming:y,setStreamingAssistantId:E,streaming:N,setTurnPhase:R,setDeferredTurn:C}=s,{setInput:I,setPendingImages:O}=l,X=k.useCallback(ce=>{m&&m({id:Date.now(),message:ce})},[m]),q=k.useCallback(ce=>{const j=la(n);ml(j,ce),oa(n,j)},[n]),A=k.useCallback((ce,j,D)=>{n.sessionRef.current?.sessionId!==ce||n.sessionGenerationRef.current!==j||(n.streamingRef.current=!1,n.activeTurnIdRef.current=null,n.assistantIdRef.current=null,n.stoppingTurnIdRef.current=null,y(!1),R("idle"),E(null),Km(x,D))},[n,y,R,E,x]),F=k.useCallback(async(ce,j,D)=>{for(;!D.aborted;){const P=n.eventsStreamStateRef.current;if(!P||P.sessionId!==ce||P.generation!==j)return;P.ready=!1;try{const _={Accept:"text/event-stream"},ne=n.lastEventIdRef.current;ne&&(_["Last-Event-ID"]=ne);const de=await fetch(VM(t,ce),{headers:_,credentials:"include",signal:D});if(!de.ok||!de.body){if(de.status===404)return;await yf(2e3,D);continue}const se=de.body.getReader(),ae=new TextDecoder;let we="",ge=!0;const ze=rs("a");for(;;){const{done:Se,value:$e}=await se.read();if(Se)break;we+=ae.decode($e,{stream:!0});const ct=we.split(`
396
396
 
397
397
  `);we=ct.pop()??"";for(const mt of ct){if(sO(mt)==="stream_ready"){const Tt=n.eventsStreamStateRef.current;Tt?.sessionId===ce&&Tt.generation===j&&(Tt.ready=!0),ge=!1;continue}const Ze=n.assistantIdRef.current??ze,lt=b(mt,Ze,{replay:ge,targetSessionId:ce,generation:j});lt&&(n.lastEventIdRef.current=lt)}}const Me=n.eventsStreamStateRef.current;Me?.sessionId===ce&&Me.generation===j&&(Me.ready=!1),await yf(1e3,D)}catch{if(D.aborted)return;await yf(2e3,D)}}},[t,n,b]),J=k.useCallback((ce,j)=>{const D=n.eventsStreamStateRef.current;if(D?.sessionId===ce&&D.generation===j&&n.reconnectAbortRef.current)return;n.reconnectAbortRef.current?.abort();const P=new AbortController;n.reconnectAbortRef.current=P,n.eventsStreamStateRef.current={sessionId:ce,generation:j,ready:!1},F(ce,j,P.signal)},[n,F]),W=k.useCallback(async(ce,j)=>{J(ce,j);const D=Date.now()+5e3;for(;Date.now()<D;){const P=n.eventsStreamStateRef.current;if(P?.sessionId===ce&&P.generation===j&&P.ready)return;if(n.sessionRef.current?.sessionId!==ce||n.sessionGenerationRef.current!==j)throw new Error("会话已切换");await lO()}throw new Error("事件连接未就绪,请检查 Console 连接后重试")},[n,J]),z=k.useCallback(async ce=>{try{const j=await fetch(y2(t,ce),{credentials:"include"}),D=await j.json().catch(()=>({}));return j.ok?D.state??null:null}catch{return null}},[t]),U=k.useCallback(async ce=>{try{const j=await fetch(KM(t,ce.sessionId),{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({clientRequestId:ce.clientRequestId,text:ce.text.trim()||"请查看附件图片。",images:ce.images.map(({type:P,mimeType:_,data:ne})=>({type:P,mimeType:_,data:ne}))})}),D=await j.json().catch(()=>({}));return{httpOk:j.ok,status:j.status,body:D}}catch{return{httpOk:!1,status:0,body:{},networkError:!0}}},[t]),H=k.useCallback(()=>({showNotice:X,setError:ce=>c(ce)}),[X,c]),te=k.useCallback(async(ce,j,D)=>{n.stoppingTurnIdRef.current=D,n.streamingRef.current=!1,y(!1),R("stopping"),E(null);try{const P=await fetch(YM(t,ce,D),{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:"{}"}),_=await P.json().catch(()=>({}));if(n.sessionRef.current?.sessionId!==ce||n.sessionGenerationRef.current!==j||n.stoppingTurnIdRef.current!==D)return;const ne=S2({httpOk:P.ok,turnId:D,body:_}),de=la(n);if(de.stoppingTurnId=D,ne.action==="owner-lost-reconcile"){const se=await z(ce),ae=n.sessionRef.current?.sessionId===ce&&n.sessionGenerationRef.current===j;Gm(de,ne,H(),{sessionStillCurrent:ae,runtimeBusy:Ao(se??void 0),markIdle:()=>A(ce,j,n.assistantIdRef.current)}),oa(n,de),R(Ys(de));return}Gm(de,ne,H(),{sessionStillCurrent:!0,markIdle:()=>A(ce,j,n.assistantIdRef.current)}),oa(n,de),R(Ys(de)),de.streaming&&y(!0)}catch{const P=la(n);Gm(P,S2({httpOk:!1,turnId:D,body:{},networkError:!0}),H()),oa(n,P),n.streamingRef.current=!0,y(!0),R("stopping")}},[t,n,y,R,A,z,H]),G=k.useCallback((ce,j)=>{const D=la(n);D.sessionId=n.sessionRef.current?.sessionId??null,D.sessionGeneration=n.sessionGenerationRef.current,D.submitGeneration=n.submitGenerationRef.current;const P=_=>{O(_)};eO(D,ce,{assistantId:j.assistantId,text:j.text,images:j.images,pending:j.pending,sessionId:j.sessionId,notice:H(),acceptedUi:{setStreaming:y,setStreamingAssistantId:E,setPendingImages:P,watchSessionTitle:p},adoptUi:{clearEmptyAssistant:_=>Km(x,_),setInput:I,setPendingImages:P,setStreaming:y,setStreamingAssistantId:E},rejectedUi:{setError:c,setStreaming:y,setStreamingAssistantId:E,clearEmptyAssistant:_=>Km(x,_),setInput:I,setPendingImages:P,formatError:qa},onAutoAbort:_=>{te(j.sessionId,j.generation,_)}}),oa(n,D),R(Ys(D))},[n,H,y,R,E,O,p,x,I,c,te]),K=k.useCallback(async ce=>{const j=n.sessionRef.current;if(!j||!ce.text.trim()&&ce.images.length===0)return{action:"handled"};const D=s.deferredTurn;X("正在排队…");const P=de=>{C(de),I(""),O([]),c(null),X(D?"已更新停止后发送的消息":"已排队,将在上一轮停止后自动发送")},_=()=>{C(null),I(""),O([]),c(null),X("消息已进入发送")},ne=async()=>{const de=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(j.sessionId)}/deferred-turn`,{method:"PUT",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({clientRequestId:ce.clientRequestId,blockedByTurnId:ce.blockedByTurnId,text:ce.text,images:ce.images,...D?{expectedRevision:D.revision}:{}})}),se=await de.json().catch(()=>({}));return{response:de,body:se}};try{for(let de=0;de<2;de+=1){const{response:se,body:ae}=await ne();if(se.ok&&ae.accepted&&ae.deferredTurn)return P(ae.deferredTurn),{action:"handled"};if(ae.deferredTurn&&C(ae.deferredTurn),ae.error?.code!=="TURN_NOT_STOPPING")return c(ae.error?.message??`待发送消息未被服务端接受(HTTP ${se.status})`),{action:"handled"};const we=await z(j.sessionId),ge=g2({clientRequestId:ce.clientRequestId,blockedByTurnId:ce.blockedByTurnId,state:we??void 0});if(ge.action==="deferred")return P(ge.deferredTurn),{action:"handled"};if(ge.action==="accepted")return _(),{action:"handled"};if(!(ge.action==="retry-deferred"&&de===0))return ge.action==="send-now"&&!D?(X("上一轮已停止,正在发送当前消息…"),{action:"send-now"}):(c(ae.error?.message??"停止状态已变化,当前消息仍保留在输入框"),{action:"handled"})}return{action:"handled"}}catch(de){const se=await z(j.sessionId),ae=g2({clientRequestId:ce.clientRequestId,blockedByTurnId:ce.blockedByTurnId,state:se??void 0});return ae.action==="deferred"?(P(ae.deferredTurn),{action:"handled"}):ae.action==="accepted"?(_(),{action:"handled"}):ae.action==="send-now"&&!D?(X("上一轮已停止,正在发送当前消息…"),{action:"send-now"}):(c(de instanceof Error?`无法确认消息是否已排队:${de.message}`:"无法确认消息是否已排队,请刷新后查看服务端状态"),{action:"handled"})}},[t,n,s.deferredTurn,C,I,O,c,X,z]),$=k.useCallback(async()=>{const ce=n.sessionRef.current,j=s.deferredTurn;if(!(!ce||!j))try{const D=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(ce.sessionId)}/deferred-turn`,{method:"DELETE",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({clientRequestId:j.clientRequestId,expectedRevision:j.revision})}),P=await D.json().catch(()=>({}));if(!D.ok||!P.cancelled){c(P.error?.message??"待发送消息撤回失败");return}C(null),I(P.deferredTurn?.text??""),O(P.deferredTurn?.images??[]),c(null),X("待发送消息已移回输入框")}catch(D){c(D instanceof Error?D.message:String(D))}},[t,n,s.deferredTurn,C,I,O,c,X]),ee=k.useCallback(async(ce,j)=>{const D=n.sessionRef.current;if(!D||!ce.trim()&&j.length===0)return;const P=la(n),_=HM({turnPhase:Ys(P),blockedByTurnId:P.stoppingTurnId??P.activeTurnId}),ne=rs("chat-submit");if(_.action==="hold"){Ys(P)==="stopping"&&X("正在确认上一轮停止状态,当前消息已保留");return}if(_.action==="queue-deferred"&&(await K({text:ce,images:j,clientRequestId:ne,blockedByTurnId:_.blockedByTurnId})).action!=="send-now")return;const de=n.sessionRef.current,se=n.sessionGenerationRef.current;if(!de||de.sessionId!==D.sessionId||!ce.trim()&&j.length===0||n.streamingRef.current||n.submitInFlightRef.current||n.pendingSubmissionRef.current)return;n.submitInFlightRef.current=!0;const ae=++n.submitGenerationRef.current,we=rs("u"),ge=rs("a"),ze=ce.trim(),Me=j.slice(),Se=FM({clientRequestId:ne,submitGeneration:ae,sessionId:de.sessionId,sessionGeneration:se,text:ze,images:Me,assistantId:ge,userMessageId:we});n.pendingSubmissionRef.current=Se;try{await W(de.sessionId,se)}catch(lt){n.sessionRef.current?.sessionId===de.sessionId&&n.sessionGenerationRef.current===se&&c(qa(lt instanceof Error?lt.message:String(lt))),q(ne);return}if(n.sessionRef.current?.sessionId!==de.sessionId||n.sessionGenerationRef.current!==se){q(ne);return}const $e={id:we,role:"user",text:ze,createdAt:Date.now()};x(lt=>[...lt,$e,{id:ge,role:"assistant",text:"",createdAt:Date.now()}]),I(""),d(!0),c(null),n.streamingRef.current=!0,R("running"),n.assistantIdRef.current=ge,y(!0),E(ge);const ct={sessionId:de.sessionId,generation:se,submitGeneration:ae,assistantId:ge,text:ze,images:Me,pending:Se},mt=await U({sessionId:de.sessionId,clientRequestId:ne,text:ze,images:Me});if(!Mu({pending:Se,sessionId:n.sessionRef.current?.sessionId,sessionGeneration:n.sessionGenerationRef.current,submitGeneration:n.submitGenerationRef.current})){Se.resolveOutcome({kind:"stale"}),q(ne);return}let Ze=mt.networkError?b2():v2({httpOk:mt.httpOk,status:mt.status,body:mt.body,clientRequestId:ne});if(Ze.kind==="ambiguous"){const lt=await z(de.sessionId),Tt=lt?$M({clientRequestId:ne,state:lt}):null;if(Tt)Ze=Tt;else{const St=await U({sessionId:de.sessionId,clientRequestId:ne,text:ze,images:Me});if(!Mu({pending:Se,sessionId:n.sessionRef.current?.sessionId,sessionGeneration:n.sessionGenerationRef.current,submitGeneration:n.submitGenerationRef.current})){Se.resolveOutcome({kind:"stale"}),q(ne);return}if(Ze=St.networkError?b2("无法确认 Turn 是否已创建,正在与服务端对账(不会重复提交新的请求 ID)"):v2({httpOk:St.httpOk,status:St.status,body:St.body,clientRequestId:ne}),Ze.kind==="ambiguous"){const wt=Ze.message||"无法确认 Turn 是否已创建,正在与服务端对账(不会重复提交新的请求 ID)";Ze=PM(wt),X(wt)}}}G(Ze,ct)},[t,n,W,U,z,G,q,X,x,I,d,c,y,R,E,K]),oe=k.useCallback(async()=>{const ce=n.sessionRef.current?.sessionId,j=n.sessionGenerationRef.current;if(!ce)return;const D=la(n),P=k2(D,{postAbort:()=>{},notice:H()});if(oa(n,D),R("stopping"),P.abortedTurnId){if(n.stopInFlightRef.current)return;n.stopInFlightRef.current=!0;try{await te(ce,j,P.abortedTurnId)}finally{n.stopInFlightRef.current=!1}return}const _=n.pendingSubmissionRef.current;if(_&&!n.stopInFlightRef.current){n.stopInFlightRef.current=!0;try{const ne=await _.outcomePromise;if(n.sessionRef.current?.sessionId!==ce||n.sessionGenerationRef.current!==j)return;let de=null;if(ne.kind==="accepted")de=ne.turnId;else if(ne.kind==="adopt-active")de=ne.activeTurn.turnId;else{if(ne.kind==="ambiguous")return;n.stopRequestedRef.current=!1;return}if(!de)return;const se=la(n);B6(se);const ae=k2(se,{postAbort:()=>{},notice:H()});oa(n,se),ae.abortedTurnId&&await te(ce,j,ae.abortedTurnId)}finally{n.stopInFlightRef.current=!1}}},[n,H,te]);return k.useEffect(()=>{const ce=!!n.pendingSubmissionRef.current||n.submitInFlightRef.current||n.stopRequestedRef.current||!!n.activeTurnIdRef.current;if(!a||!N&&!ce)return;const j=a.sessionId,D=n.sessionGenerationRef.current;let P=!1;const _=async()=>{try{const ae=await fetch(y2(t,j),{credentials:"include"}),we=await ae.json().catch(()=>({}));if(P||!ae.ok||n.sessionRef.current?.sessionId!==j||n.sessionGenerationRef.current!==D)return;const ge=we.state,ze=n.pendingSubmissionRef.current;if(ze){const Ze=GM({clientRequestId:ze.clientRequestId,state:ge}),lt=la(n),Tt=tO(lt,Ze,ge,{markIdle:()=>A(j,D,n.assistantIdRef.current),onAutoAbort:St=>{te(j,D,St)}});if(oa(n,lt),R(Ys(lt)),ge&&"deferredTurn"in ge&&C(ge.deferredTurn??null),Tt==="bound"){y(!0);return}if(Tt==="released"||!ze.acceptedTurnId&&!lt.pendingSubmission?.acceptedTurnId)return}const Me=ge?.activeTurn?.turnId??ge?.activeTurnId??null;n.activeTurnIdRef.current=Me;const Se=Ao(ge),$e=n.pendingSubmissionRef.current;if($e){const Ze=ge?.latestTurn?.clientRequestId===$e.clientRequestId&&is(ge?.latestTurn?.state),lt=ge?.activeTurn?.clientRequestId===$e.clientRequestId&&is(ge?.activeTurn?.state);if(Ze||lt){const Tt=lt?ge?.activeTurn?.turnId??null:ge?.latestTurn?.turnId??$e.acceptedTurnId??null,St=la(n);x2(St,{clientRequestId:$e.clientRequestId,turnId:Tt,markIdle:!Se}),oa(n,St),Se||A(j,D,n.assistantIdRef.current);return}}if(Se)return;const ct=n.assistantIdRef.current;if(Me&&!(is(ge?.activeTurn?.state)||is(ge?.activeTurnState)))return;Me&&n.settledTurnIdsRef.current.add(Me);const mt=$e?.clientRequestId;if(mt){const Ze=la(n);x2(Ze,{clientRequestId:mt,turnId:Me,markIdle:!0}),oa(n,Ze)}else q();A(j,D,ct)}catch{}},ne=()=>{document.visibilityState==="visible"&&_()},de=()=>{_()},se=window.setInterval(()=>{_()},15e3);return document.addEventListener("visibilitychange",ne),window.addEventListener("online",de),_(),()=>{P=!0,window.clearInterval(se),document.removeEventListener("visibilitychange",ne),window.removeEventListener("online",de)}},[t,n,a,N,R,A,q,te]),k.useEffect(()=>{if(!a)return;const ce=n.sessionGenerationRef.current;return J(a.sessionId,ce),()=>{const j=n.eventsStreamStateRef.current;j?.sessionId===a.sessionId&&j.generation===ce&&(n.reconnectAbortRef.current?.abort(),n.reconnectAbortRef.current=null,n.eventsStreamStateRef.current=null)}},[a,h,n,J]),{sendPrompt:ee,handleStop:oe,cancelDeferredTurn:$,openEventsStream:F}}function cO(e){const{origin:t,refs:n,thread:a,setError:s}=e,{interview:l,setInterview:c}=a,[d,m]=k.useState(""),h=k.useCallback(async()=>{const x=n.sessionRef.current;if(!x)return;const y=window.prompt("Task ID(例如 2026-07-26-my-task)")?.trim();if(!y)return;const E=await fetch(`${t}/api/operator/v1/chat/sessions/${x.sessionId}/interviews`,{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({taskId:y})}),N=await E.json();if(!E.ok){s(N.error?.message??`HTTP ${E.status}`);return}c({interviewSessionId:N.interview?.sessionId,taskId:y,state:N.interview?.state,question:N.question,draft:N.draft?.draft,draftSha256:N.draft?.draftSha256,assessment:N.assessment})},[t,n,c,s]),p=k.useCallback(async x=>{const y=n.sessionRef.current;if(!y||!l?.interviewSessionId||!l.question)return;const E=await fetch(`${t}/api/operator/v1/chat/sessions/${y.sessionId}/interviews/${l.interviewSessionId}/answers`,{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({questionId:l.question.id,response:x,...x==="override"?{text:d}:{}})}),N=await E.json();if(!E.ok){s(N.error?.message??`HTTP ${E.status}`);return}c(R=>({...R??{},state:N.interview?.state,question:N.question,draft:N.draft?.draft,draftSha256:N.draft?.draftSha256,assessment:N.assessment,taskKindRecommendation:N.taskKindRecommendation??R?.taskKindRecommendation})),m("")},[t,n,l,d,c,s]),b=k.useCallback(async()=>{const x=n.sessionRef.current;if(!x||!l?.interviewSessionId||!l.taskKindRecommendation)return;const y=await fetch(`${t}/api/operator/v1/chat/sessions/${x.sessionId}/interviews/${l.interviewSessionId}/task-kind/confirm`,{method:"POST",headers:{"Content-Type":"application/json","x-loop-console-confirmation":er()},credentials:"include",body:JSON.stringify({taskKind:l.taskKindRecommendation})}),E=await y.json();if(!y.ok){s(E.error?.message??`HTTP ${y.status}`);return}c(N=>({...N??{},confirmedTaskKind:N?.taskKindRecommendation,taskKindRecommendation:void 0,draft:E.draft?.draft,draftSha256:E.draft?.draftSha256,assessment:E.assessment}))},[t,n,l,c,s]);return{interviewAnswer:d,setInterviewAnswer:m,startInterview:h,answerInterview:p,confirmTaskKind:b}}function uO(e){const{origin:t,refs:n,sessionId:a,setError:s}=e,[l,c]=k.useState({}),[d,m]=k.useState(new Set),[h,p]=k.useState(null),[b,x]=k.useState([]),[y,E]=k.useState(null),[N,R]=k.useState(!1),C=k.useRef(new Set);C.current=d;const I=k.useCallback(async(W="")=>{try{p(null);const z=await fetch(`${t}/api/operator/v1/chat/repo/tree?path=${encodeURIComponent(W)}`,{credentials:"include"}),U=await z.json();if(!z.ok)throw new Error(U.error?.message??"无法读取仓库目录");c(H=>({...H,[W]:U.data?.entries??[]}))}catch(z){p(z instanceof Error?z.message:String(z))}},[t]);k.useEffect(()=>{I()},[I]);const[O,X]=k.useState(0),q=k.useCallback(()=>{X(W=>W+1)},[]);k.useEffect(()=>{const W=["",...C.current];for(const z of W)I(z)},[I,O]),k.useEffect(()=>{const W=()=>{document.hidden||q()};return document.addEventListener("visibilitychange",W),()=>document.removeEventListener("visibilitychange",W)},[q]);const A=k.useCallback(async W=>{R(!0);try{const z=await fetch(`${t}/api/operator/v1/chat/repo/file?path=${encodeURIComponent(W)}`,{credentials:"include"}),U=await z.json();if(!z.ok||!U.data)throw new Error(U.error?.message??"无法预览文件");x(H=>{const te=[...H.filter(K=>K.path!==U.data.path),U.data],G=n.sessionRef.current?.sessionId;return G&&window.localStorage.setItem(`${Yr}.previews.${G}`,JSON.stringify(te.map(K=>K.path))),te}),E(U.data.path)}catch(z){s(z instanceof Error?z.message:String(z))}finally{R(!1)}},[t,n,s]);k.useEffect(()=>{if(!a)return;let W=[];try{const z=JSON.parse(window.localStorage.getItem(`${Yr}.previews.${a}`)??"[]");Array.isArray(z)&&(W=z.filter(U=>typeof U=="string").slice(0,10))}catch{}W.length&&Promise.all(W.map(async z=>{const U=await fetch(`${t}/api/operator/v1/chat/repo/file?path=${encodeURIComponent(z)}`,{credentials:"include"});if(U.ok)return(await U.json()).data})).then(z=>{if(n.sessionRef.current?.sessionId!==a)return;const U=z.filter(H=>!!H);x(U),E(U.at(-1)?.path??null)})},[t,a,n]);const F=k.useCallback(W=>{m(z=>{const U=new Set(z);return U.has(W)?U.delete(W):U.add(W),U}),l[W]||I(W)},[l,I]),J=k.useCallback(W=>{x(z=>{const U=z.filter(H=>H.path!==W);return a&&window.localStorage.setItem(`${Yr}.previews.${a}`,JSON.stringify(U.map(H=>H.path))),U}),E(z=>z===W?b.find(U=>U.path!==W)?.path??null:z)},[b,a]);return{tree:l,expandedDirs:d,treeError:h,previews:b,activePreviewPath:y,setActivePreviewPath:E,previewLoading:N,setPreviews:x,loadTree:I,refreshTree:q,openPreview:A,closePreview:J,toggleDir:F}}const dO=["operator","web","extension","prompt","skill"];function fO(e){const t=[];for(const n of dO){const a=[];for(let s=0;s<e.length;s+=1)e[s].source===n&&a.push({entry:e[s],globalIndex:s});a.length!==0&&t.push({source:n,label:Y_[n],items:a})}return t}function mO(e,t){return!Number.isFinite(t)||t<=0||!Number.isFinite(e)||e<0?0:e>=t?t-1:e}function hO(e){return e==="comfortable"?3:e==="compact"?2:1}function E2(e,t,n,a){const s=t.findIndex(b=>b.items.some(x=>x.globalIndex===e));if(s<0)return e;const l=t[s],c=l.items.findIndex(b=>b.globalIndex===e);if(c<0)return e;const d=Math.floor(c/n),m=c%n;if(a==="left"||a==="right"){if(n<=1)return e;const x=c+(a==="left"?-1:1);return x<0||x>=l.items.length||Math.floor(x/n)!==d?e:l.items[x].globalIndex}const h=a==="up"?-1:1,p=c+h*n;if(p>=0&&p<l.items.length)return l.items[p].globalIndex;for(let b=s+h;b>=0&&b<t.length;b+=h){const x=t[b];if(x.items.length===0)continue;const y=Math.floor((x.items.length-1)/n)*n,E=a==="up"?y+m:m;return E>=x.items.length?e:x.items[E].globalIndex}return e}function pO(e,t,n){const a=(e.left+e.right)/2;let s=null;for(const l of t){if(l.globalIndex===e.globalIndex)continue;const c=n==="up"?e.top-l.bottom:l.top-e.bottom;if(c<0)continue;const d=(l.left+l.right)/2,m=Math.abs(d-a);(s===null||c<s.gap||c===s.gap&&m<s.dist||c===s.gap&&m===s.dist&&l.globalIndex<s.index)&&(s={gap:c,dist:m,index:l.globalIndex})}return s?.index??null}function gO(e){const{origin:t,sessionId:n,refs:a,setError:s}=e,[l,c]=k.useState(""),[d,m]=k.useState([]),[h,p]=k.useState([]),[b,x]=k.useState(!1),y=k.useCallback(_=>{if(typeof _=="function"){c(ne=>{const de=_(ne);return x(de.startsWith("/")),de});return}c(_),x(_.startsWith("/"))},[]),[E,N]=k.useState(0),[R,C]=k.useState([]),[I,O]=k.useState(!1),[X,q]=k.useState(null),[A,F]=k.useState(0),J=k.useRef(null),W=k.useRef(n),z=k.useRef(0),U=k.useCallback(_=>{y(_),x(_.startsWith("/")),N(0)},[]);k.useLayoutEffect(()=>{W.current=n,z.current+=1,C([]),q(null),O(!1)},[n]);const H=k.useCallback(async()=>{if(!n){C([]),q(null),O(!1);return}const _=n,ne=z.current;W.current=_,O(!0),q(null);const de=()=>W.current===_&&z.current===ne;try{const se=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(_)}/commands`,{credentials:"include"});if(!de())return;if(!se.ok){q("动态命令加载失败"),C([]);return}const ae=await se.json().catch(()=>null),we=[];for(const ze of ae?.commands??[]){const Me=ze.source;if(Me!=="extension"&&Me!=="prompt"&&Me!=="skill")continue;const Se=String(ze.command??ze.name??"").trim();Se&&we.push({command:Se.startsWith("/")?Se:`/${Se}`,label:String(ze.label??ze.name??Se),description:String(ze.description??""),source:Me})}if(!de())return;C(we);const ge=typeof ae?.warning=="string"?ae.warning.trim():"";q(ge?ge.slice(0,160):null)}catch{if(!de())return;q("动态命令加载失败"),C([])}finally{de()&&O(!1)}},[t,n]);k.useEffect(()=>{n&&(!b&&A===0||H())},[n,b,A,H]);const te=k.useCallback(()=>{F(_=>_+1),H()},[H]);k.useEffect(()=>{if(!n)return;const _=l.slice(0,J.current?.selectionStart??l.length).match(/(?:^|\s)@([^\s@]*)$/);if(!_){m([]);return}const ne=window.setTimeout(()=>{fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(n)}/files?q=${encodeURIComponent(_[1]??"")}`).then(de=>de.ok?de.json():null).then(de=>m((de?.files??[]).map(se=>se.path)))},150);return()=>window.clearTimeout(ne)},[t,n,l]);const G=k.useCallback(_=>{const ne=J.current?.selectionStart??l.length,se=l.slice(0,ne).search(/@[^\s@]*$/);se<0||(y(`${l.slice(0,se)}@${_} ${l.slice(ne)}`),m([]))},[l]),K=k.useCallback(_=>{for(const ne of Array.from(_).slice(0,4)){if(!ne.type.startsWith("image/")||ne.size>5*1024*1024){s("图片仅支持 PNG/JPEG/GIF/WebP,单张不超过 5 MiB");continue}const de=new FileReader;de.onload=()=>{const se=String(de.result??""),ae=se.slice(se.indexOf(",")+1);p(we=>[...we,{name:ne.name,type:"image",mimeType:ne.type,data:ae}].slice(0,4))},de.readAsDataURL(ne)}},[s]),$=k.useCallback(_=>{p(ne=>ne.filter(de=>de!==_))},[]);k.useLayoutEffect(()=>{const _=J.current;_&&(_.style.height="auto",_.style.height=`${Math.min(_.scrollHeight,280)}px`)},[l]),k.useEffect(()=>{if(!n)return;const _=window.setTimeout(()=>{fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(n)}/draft`,{method:"PUT",credentials:"include",headers:{"content-type":"application/json","x-loop-console-confirmation":er()},body:JSON.stringify({text:l})})},400);return()=>window.clearTimeout(_)},[t,n,l]);const ee=k.useMemo(()=>K_(R),[R]),oe=k.useMemo(()=>l.startsWith("/")?V_(ee,l):[],[l,ee]);k.useEffect(()=>{N(_=>mO(_,oe.length))},[oe.length]);const ce=k.useCallback(()=>{a.isComposingRef.current=!0},[a]),j=k.useCallback(()=>{a.isComposingRef.current=!1,a.compositionEndedAtRef.current=Date.now()},[a]),D=k.useCallback(()=>a.isComposingRef.current,[a]),P=k.useCallback(()=>Date.now()-a.compositionEndedAtRef.current<100,[a]);return k.useEffect(()=>{F8({origin:t,sessionId:n,refs:a})},[t,n,a]),{input:l,setInput:y,handleInputChange:U,fileOptions:d,pendingImages:h,setPendingImages:p,addImagesFromFiles:K,removeImage:$,shortcutOpen:b,setShortcutOpen:x,shortcutIndex:E,setShortcutIndex:N,filteredShortcuts:oe,dynamicCommandsLoading:I,dynamicCommandsError:X,retryDynamicCommands:te,insertFileReference:G,textareaRef:J,onCompositionStart:ce,onCompositionEnd:j,isComposingNow:D,recentlyComposedNow:P}}const bO=[{toolId:"read",kind:"explore",description:"Pi 内置读取文件。"},{toolId:"write",kind:"explore",description:"Pi 内置写入文件(软约束:大改优先走 DAG)。"},{toolId:"edit",kind:"explore",description:"Pi 内置编辑文件(软约束:大改优先走 DAG)。"},{toolId:"bash",kind:"explore",description:"Pi 内置 shell 执行(软约束:优先受治路径)。"},{toolId:"grep",kind:"explore",description:"Pi 内置内容搜索。"},{toolId:"find",kind:"explore",description:"按名称查找文件路径。"},{toolId:"ls",kind:"explore",description:"列出目录内容。"},{toolId:"safe-read",kind:"explore",description:"安全读取仓库相对路径文件;拒绝敏感文件并自动脱敏 secret。"},{toolId:"safe-grep",kind:"explore",description:"安全搜索仓库内容;跳过敏感文件并自动脱敏搜索结果。"},{toolId:"git-status",kind:"explore",description:"固定参数执行 git status --porcelain(无 shell)。"},{toolId:"git-diff",kind:"explore",description:"固定参数查看 git diff;敏感路径不可查看且结果自动脱敏。"}];function vO(e){if(!e)return null;const t=(e.tools??[]).map(a=>({toolId:a.toolId,action:a.action,description:a.description,kind:a.kind??"read",cli:a.cli})),n=[...bO];return{explore:n,operator:t,total:n.length+t.length}}let yO=0;function xO(e){const{origin:t,session:n,setSession:a,refs:s,setError:l}=e,[c,d]=k.useState(null),[m,h]=k.useState([]),[p,b]=k.useState("idle"),[x,y]=k.useState(null),[E,N]=k.useState([]),[R,C]=k.useState(null),[I,O]=k.useState(null),[X,q]=k.useState(!1),[A,F]=k.useState(!1),[J,W]=k.useState(!1),z=k.useRef(null),U=k.useRef(null),H=k.useRef(0);k.useEffect(()=>{H.current=-1,q(!1)},[n?.sessionId,q]);const G=sl().snapshot,K=k.useCallback(async()=>{try{const se=await fetch(`${t}/api/operator/v1/chat/capabilities`);if(!se.ok)return;const ae=await se.json();d(ae)}catch{}},[t]);k.useEffect(()=>{K()},[K]);const $=k.useCallback(async()=>{if(!n){h([]),b("idle");return}const se=n.sessionId;b("loading"),y(null);try{const ae=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(se)}/models`,{credentials:"include"}),we=await ae.json().catch(()=>null);if(s.sessionRef.current?.sessionId!==se)return;if(!ae.ok||!we){b("error"),y(we?.error?.message??`模型列表读取失败(HTTP ${ae.status})`);return}h(we.models??[]),N(we.thinkingLevels??[]),b("ready")}catch(ae){if(s.sessionRef.current?.sessionId!==se)return;b("error"),y(ae instanceof Error?ae.message:String(ae))}},[t,n,s]);k.useEffect(()=>{$()},[$]),k.useEffect(()=>{if(!n){C(null),O(null);return}const se=n.sessionId,ae=`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(se)}`;O(null),fetch(`${ae}/runtime-context`,{credentials:"include"}).then(async we=>{const ge=await we.json().catch(()=>null);if(!ge?.context||s.sessionRef.current?.sessionId!==se)return;const ze=ge.context,Me=G8().snapshot;C(Se=>U8(Se,ze,Me,se))}).catch(()=>{s.sessionRef.current?.sessionId===se&&O("注入上下文读取失败,请重试")})},[t,n?.sessionId,s]),k.useEffect(()=>{if(!G||!n||G.sessionId!==n.sessionId)return;const se=q2(G);a(ae=>{if(!ae||ae.sessionId!==G.sessionId||rM(ae,se))return ae;const we=j6(ae,se);return s.sessionRef.current=we,we}),C(ae=>{if(!ae)return ae;const we={...ae,...se.model?{model:se.model}:{},...se.thinkingLevel?{thinkingLevel:se.thinkingLevel}:{}};return we.model?.provider===ae.model?.provider&&we.model?.modelId===ae.model?.modelId&&we.thinkingLevel===ae.thinkingLevel?ae:we})},[G,n?.sessionId,s,a,C]);const ee=k.useCallback(async se=>{if(!n)return!1;const ae=n.sessionId,we=++yO;H.current=we,F2({type:"mutation-start",token:we}),q(!0);try{const ge=await fetch(`${t}/api/operator/v1/chat/sessions/${encodeURIComponent(n.sessionId)}/model`,{method:"POST",credentials:"include",headers:{"content-type":"application/json","x-loop-console-confirmation":er()},body:JSON.stringify(se)}),ze=await ge.json().catch(()=>({}));return H.current!==we?!1:ge.ok?!ze.session||s.sessionRef.current?.sessionId!==ae?!1:P8(we,ae,ze.snapshot):(s.sessionRef.current?.sessionId===ae&&(l(ze.error?.message??`模型或思考等级切换失败(HTTP ${ge.status})`),tl()),!1)}catch(ge){return H.current!==we||s.sessionRef.current?.sessionId===ae&&l(ge instanceof Error?ge.message:String(ge)),!1}finally{$8(we,ae,s)&&H.current===we&&q(!1)}},[t,n,s,a,l]);k.useEffect(()=>{if(!A)return;const se=we=>{const ge=z.current;ge&&we.target instanceof Node&&!ge.contains(we.target)&&F(!1)},ae=we=>{we.key==="Escape"&&F(!1)};return document.addEventListener("mousedown",se),document.addEventListener("keydown",ae),()=>{document.removeEventListener("mousedown",se),document.removeEventListener("keydown",ae)}},[A]),k.useEffect(()=>{if(!J)return;const se=we=>{const ge=U.current;ge&&we.target instanceof Node&&!ge.contains(we.target)&&W(!1)},ae=we=>{we.key==="Escape"&&W(!1)};return document.addEventListener("mousedown",se),document.addEventListener("keydown",ae),()=>{document.removeEventListener("mousedown",se),document.removeEventListener("keydown",ae)}},[J]);const oe=k.useMemo(()=>vO(c),[c]),ce=G?(G.models??[]).map(se=>({provider:se.provider,id:se.id,...se.name?{name:se.name}:{},...se.hasCredentials!==void 0?{hasCredentials:se.hasCredentials}:{}})):m,j=G?.thinkingLevels?.length?G.thinkingLevels.map(se=>se.value):E,D=n?.model??R?.model,P=D?Ro(D.provider,D.modelId):"",_=G?.selection?.thinkingSelection??n?.thinkingLevel??"",ne=G?.selection?.effectiveThinkingLevel??n?.thinkingLevel??void 0,de=!P||ce.some(se=>Ro(se.provider,se.id)===P);return{capabilities:c,models:ce,modelsStatus:p,modelsError:x,onRetryModels:()=>{$()},thinkingLevels:j,runtimeContext:R,runtimeContextError:I,onRetryRuntimeContext:()=>{O(null),tl()},toolsOpen:A,setToolsOpen:F,runtimeContextOpen:J,setRuntimeContextOpen:W,toolsMenuRef:z,runtimeContextMenuRef:U,switchRuntime:ee,switching:X,toolCatalog:oe,activeModel:D,activeModelRef:P,activeThinkingLevel:_,effectiveThinkingLevel:ne,activeModelListed:de}}const T2={comfortableMin:1450,compactMin:1100};function wO(e){return!Number.isFinite(e)||e<0?"narrow":e>=T2.comfortableMin?"comfortable":e>=T2.compactMin?"compact":"narrow"}const SO={mode:"comfortable",width:1600,landingDensity:"comfortable",emptyHeight:720};function kO(e,t){const[n,a]=k.useState(SO);return k.useEffect(()=>{const s=e.current;if(!s||typeof ResizeObserver>"u")return;const l=()=>{const p=s.getBoundingClientRect().width,b=t?.current??null,x=b?b.getBoundingClientRect().height:720;a({mode:wO(p),width:p,landingDensity:RI(x),emptyHeight:x})};l();const c=new ResizeObserver(()=>l());c.observe(s);let d=null;const m=()=>{const p=t?.current??null;p&&p!==d&&(d&&c.unobserve(d),c.observe(p),d=p,l())};m();const h=window.setInterval(m,250);return()=>{window.clearInterval(h),c.disconnect()}},[e,t]),n}function EO(e="none"){return{active:e}}function Xs(e,t){return{active:t}}function ta(e={active:"none"}){return{active:"none"}}function TO(e){return{sidebarDrawerOpen:e.active==="sidebar-drawer",processOpen:e.active==="process",runtimeContextOpen:e.active==="runtime-context",toolsOpen:e.active==="tools",activityOpen:e.active==="activity"}}const NO=160,CO=120,RO=120;function AO(e){return e?e.operationCards.length+e.humanGateCards.length+e.artifactCards.length:0}function _O(e){const t=AO(e),[n,a]=k.useState(()=>t>0?{phase:"visible",snapshot:e}:{phase:"hidden",snapshot:null}),s=k.useRef(n);s.current=n;const l=k.useMemo(()=>`${e?.sessionId??"none"}:${t}`,[e?.sessionId,t]);return k.useEffect(()=>{const c=[],d=s.current.snapshot;if(!e||t===0){if(!d){a({phase:"hidden",snapshot:null});return}a({phase:"leaving",snapshot:d}),c.push(window.setTimeout(()=>{a({phase:"hidden",snapshot:null})},CO))}else d?d.sessionId!==e.sessionId?(a({phase:"switching",snapshot:e}),c.push(window.setTimeout(()=>{a({phase:"visible",snapshot:e})},RO))):a({phase:"visible",snapshot:e}):(a({phase:"entering",snapshot:e}),c.push(window.setTimeout(()=>{a({phase:"visible",snapshot:e})},NO)));return()=>{for(const m of c)window.clearTimeout(m)}},[e,l,t]),n}function IO(e){const{origin:t,surface:n="standalone"}=e,a=n==="workspace",s=gM(),[l,c]=k.useState(null),[d,m]=k.useState(!1),[h,p]=k.useState(null),[b,x]=k.useState(!0),[y,E]=k.useState(!0),[N,R]=k.useState(()=>EO()),[C,I]=k.useState(null),[O,X]=k.useState(null),[q,A]=k.useState(0),F=k.useRef(null),J=k.useRef(null),W=k.useRef(null),z=k.useRef(null),U=k.useRef(null),H=k.useRef(null),te=k.useRef(null),G=k.useRef(null),K=k.useRef(null),$=k.useRef(()=>{}),ee=k.useRef(null),oe=k.useRef(!1),ce=kO(W,U),j=ce.mode,D=TO(N),P=D.processOpen,_=P,ne=D.runtimeContextOpen,de=D.activityOpen,se=k.useCallback(ue=>{R(Ee=>{const Oe=Ee.active==="process";return(typeof ue=="function"?ue(Oe):ue)?Xs(Ee,"process"):Ee.active==="process"?ta(Ee):Ee})},[]),ae=gO({origin:t,sessionId:h?.sessionId,refs:s,setError:c}),we=k.useMemo(()=>fO(ae.filteredShortcuts),[ae.filteredShortcuts]),ge=uO({origin:t,refs:s,sessionId:h?.sessionId,setError:c}),ze=k.useRef(()=>{}),Me=k.useCallback(ue=>{ze.current(ue)},[]),Se=NM({origin:t,refs:s,sessionId:h?.sessionId,setError:c,onReconcile:Me});ze.current=ue=>{const Ee=s.sessionRef.current?.sessionId;Ee&&(async()=>await Se.recoverSession(Ee)?(X({id:Date.now(),message:"已自动恢复:会话事件已重新同步,可继续对话。"}),A(Ue=>Ue+1)):X({id:Date.now(),message:"自动恢复未完成,将在重连时重试。"}))()};const $e=Se.operationCards.length+Se.humanGateCards.length+Se.artifactCards.length,ct=k.useMemo(()=>S6(Se.operationCards).length+Se.humanGateCards.length+Se.artifactCards.length,[Se.operationCards,Se.humanGateCards.length,Se.artifactCards.length]),mt=k.useMemo(()=>h?{sessionId:h.sessionId,operationCards:Se.operationCards,humanGateCards:Se.humanGateCards,artifactCards:Se.artifactCards}:null,[h,Se.operationCards,Se.humanGateCards,Se.artifactCards]),Ze=_O(mt),lt=k.useMemo(()=>lI({operations:Se.operationCards,gates:Se.humanGateCards,artifacts:Se.artifactCards}),[Se.operationCards,Se.humanGateCards,Se.artifactCards]),Tt=k.useCallback(ue=>lt.has(ue),[lt]),St=CI(z,j,h?.sessionId??"no-session"),wt=St.presentation==="sidecar";k.useEffect(()=>{const ue=j==="comfortable"&&N.active==="sidebar-drawer",Ee=wt&&N.active==="activity";(ue||Ee)&&R(Oe=>Oe.active===N.active?ta(Oe):Oe)},[wt,j,N.active]),k.useEffect(()=>{I(null)},[h?.sessionId]),k.useEffect(()=>{$e>0||N.active!=="activity"||R(ue=>ue.active==="activity"?ta(ue):ue)},[$e,N.active]);const Je=k.useCallback(ue=>{ue&&I(ue),wt||R(Ee=>Xs(Ee,"activity"))},[wt]),Nt=k.useCallback(()=>{R(ue=>ue.active==="activity"?ta(ue):ue)},[]),qt=k.useCallback(ue=>{const Ee=J.current;if(!Ee)return;const Ue=Array.from(Ee.querySelectorAll("[data-activity-ref]")).find(jt=>ue.includes(jt.dataset.activityRef??""));if(!Ue){X({id:Date.now(),message:"详细运行记录暂时没有对应的对话位置。"});return}Ue.scrollIntoView({block:"center",behavior:"smooth"}),Ue.classList.add("is-located"),window.setTimeout(()=>Ue.classList.remove("is-located"),1400),wt||Nt()},[wt,Nt]),Fe=DM({origin:t,refs:s,setSession:p,thread:Se,composer:{setInput:ae.setInput,setPendingImages:ae.setPendingImages},browser:{setPreviews:ge.setPreviews,setActivePreviewPath:ge.setActivePreviewPath},setError:c,setNotice:X,onCompactionChange:m,setProcessOpen:se,setAutoScroll:E}),Xt=oO({origin:t,refs:s,session:h,thread:Se,composer:{setInput:ae.setInput,setPendingImages:ae.setPendingImages},setError:c,setNotice:X,setAutoScroll:E,recoveryVersion:q,watchSessionTitle:Fe.watchSessionTitle}),he=cO({origin:t,refs:s,thread:Se,setError:c}),ve=xO({origin:t,session:h,setSession:p,refs:s,setError:c});k.useEffect(()=>{if(Se.streaming){Fe.refreshSessionList();return}ge.refreshTree();const ue=window.setTimeout(()=>{Fe.refreshSessionList()},1200);return()=>window.clearTimeout(ue)},[Se.streaming,Se.turnPhase,Se.deferredTurn?.revision,Se.deferredTurn?.state,Fe.refreshSessionList,ge.refreshTree]),k.useEffect(()=>{ve.runtimeContextOpen&&N.active!=="runtime-context"?R(ue=>Xs(ue,"runtime-context")):!ve.runtimeContextOpen&&N.active==="runtime-context"&&R(ue=>ta(ue))},[ve.runtimeContextOpen,N.active]),k.useEffect(()=>{N.active!=="runtime-context"&&ve.runtimeContextOpen&&ve.setRuntimeContextOpen(!1)},[N.active]),k.useEffect(()=>{if(!P&&!ne)return;const ue=Ee=>{if(Ee.target instanceof Node){if(P){const Oe=document.getElementById("oc-process-panel"),Ue=te.current;!Oe?.contains(Ee.target)&&!Ue?.contains(Ee.target)&&se(!1)}if(ne){const Oe=document.getElementById("oc-runtime-context-panel"),Ue=G.current;!Oe?.contains(Ee.target)&&!Ue?.contains(Ee.target)&&(ve.setRuntimeContextOpen(!1),R(jt=>jt.active==="runtime-context"?ta(jt):jt))}}};return document.addEventListener("mousedown",ue),()=>document.removeEventListener("mousedown",ue)},[P,ne,se,ve.setRuntimeContextOpen]),k.useEffect(()=>{Se.streaming&&N.active==="process"&&R(ta)},[Se.streaming,N.active]);const{sendPrompt:qe,handleStop:We,cancelDeferredTurn:nt}=Xt,$t=k.useRef(()=>{}),Zt=k.useCallback(async ue=>{const Ee=r2(ue);if(Ee&&Ee.action!=="unknown"&&Ee.action!=="pi-prompt"){$t.current(ue);return}await qe(ue,ae.pendingImages)},[qe,ae.pendingImages]);$.current=ue=>{Zt(ue)};const Pt=k.useCallback(()=>{ae.textareaRef.current?.focus()},[ae.textareaRef]),rt=k.useCallback(()=>{R(ue=>ue.active==="sidebar-drawer"?ta(ue):ue)},[]),on=k.useCallback(()=>{ve.setRuntimeContextOpen(!1),R(ue=>Xs(ue,"sidebar-drawer"))},[ve.setRuntimeContextOpen]),yt=k.useCallback(ue=>{Fe.activateSession(ue),rt(),queueMicrotask(()=>{J.current?.focus?.(),Pt()})},[Fe,rt,Pt]),Xn=k.useCallback(ue=>{ae.setInput(Ee=>`${Ee}${Ee&&!Ee.endsWith(" ")?" ":""}@${ue} `),rt(),queueMicrotask(()=>Pt())},[ae,rt,Pt]),Sn=k.useCallback(ue=>{ge.openPreview(ue),rt()},[ge,rt]),st=k.useCallback(()=>{const ue=J.current;if(!ue)return;const Ee=ue.scrollHeight-ue.scrollTop-ue.clientHeight<80;E(Ee)},[]);k.useEffect(()=>{y&&F.current?.scrollIntoView({behavior:"smooth",block:"end"})},[Se.messages,y,Se.streaming]),k.useEffect(()=>{if(!O)return;const ue=window.setTimeout(()=>X(null),6500);return()=>window.clearTimeout(ue)},[O]);const Ve=l?{id:O?.id??1,kind:"error",message:l}:O?{id:O.id,kind:"info",message:O.message}:null,xt=k.useCallback(ue=>{if(ue.action==="pi-prompt"||ue.command==="/name"||ue.command==="/compact"){ae.setInput(`${ue.command} `),ae.setShortcutOpen(!1),ae.textareaRef.current?.focus();return}$t.current(ue.command)},[ae]),Dt=k.useCallback(ue=>{const Ee=r2(ue),Oe=ue.trim(),Ue=Oe.split(/\s+/,1)[0]?.toLowerCase()??"";if(ae.setInput(""),ae.setShortcutOpen(!1),!Ee)return;if(Ee.action==="focus:interview"){if(!h){X({id:Date.now(),message:"请先创建或打开一个会话,再开始 Interview"});return}he.startInterview();return}const jt=G_(Ee.action);if(jt){e.onNavigateWorkspace?.(jt,{});return}if(Ee.action==="compact"){const _t=Oe.slice(Ue.length).trim();Fe.compactSession(_t||void 0);return}if(Ee.action==="name"){const _t=Oe.slice(Ue.length).trim(),bn=h?.sessionId;if(!bn){c("当前没有可重命名的会话");return}const Zn=Fe.sessionList.find(Cn=>Cn.sessionId===bn),dr=_t||window.prompt("会话名称",Zn?.title??Zn?.displayTitle??"")||"";dr.trim()&&Fe.updateSession(bn,{title:dr.trim()});return}if(Ee.action==="session"){const _t=h?.sessionId??"(none)",bn=Fe.sessionList.find(dr=>dr.sessionId===_t),Zn=bn?.title||bn?.displayTitle||"未命名对话";X({id:Date.now(),message:`当前会话:${Zn}(${_t})`});return}if(Ee.action==="copy"){const bn=[...Se.visibleMessages??[]].reverse().find(Zn=>Zn.role==="assistant");if(!bn?.text){c("没有可复制的助手消息");return}navigator.clipboard?.writeText(bn.text).then(()=>X({id:Date.now(),message:"已复制最后一条助手消息"}),()=>c("复制失败"));return}if(Ee.action==="unknown"){qe(Oe,ae.pendingImages);return}c(`未知 shortcut:${Ee.command}`)},[ae.setInput,ae.setShortcutOpen,ae.pendingImages,he.startInterview,e.onNavigateWorkspace,Fe,h,Se.visibleMessages,qe]);$t.current=Dt;const Wt=k.useCallback(ue=>{const Ee=s.isComposingRef.current||ue.nativeEvent.isComposing,Oe=Date.now()-s.compositionEndedAtRef.current<100;if(ae.shortcutOpen&&ae.filteredShortcuts.length>0&&!Ee&&!Oe){if(ue.key==="ArrowLeft"||ue.key==="ArrowRight"||ue.key==="ArrowUp"||ue.key==="ArrowDown"){ue.preventDefault();const Ue=hO(j);let jt=ae.shortcutIndex;if(ue.key==="ArrowLeft"||ue.key==="ArrowRight")jt=E2(ae.shortcutIndex,we,Ue,ue.key==="ArrowLeft"?"left":"right");else{const _t=ee.current;let bn=null;if(_t){const Zn=Array.from(_t.querySelectorAll("[data-shortcut-index]")).map(Cn=>{const sn=Cn.getBoundingClientRect();return{globalIndex:Number(Cn.dataset.shortcutIndex??-1),top:sn.top,bottom:sn.bottom,left:sn.left,right:sn.right}}).filter(Cn=>Number.isFinite(Cn.globalIndex)&&Cn.globalIndex>=0),dr=Zn.find(Cn=>Cn.globalIndex===ae.shortcutIndex)??null;dr&&(bn=pO(dr,Zn,ue.key==="ArrowUp"?"up":"down"))}jt=bn??E2(ae.shortcutIndex,we,Ue,ue.key==="ArrowUp"?"up":"down")}jt!==ae.shortcutIndex&&(oe.current=!0,ae.setShortcutIndex(jt));return}if(ue.key==="Escape"){ue.preventDefault(),ae.setShortcutOpen(!1);return}if(ue.key==="Enter"||ue.key==="Tab"){ue.preventDefault();const Ue=ae.filteredShortcuts[ae.shortcutIndex]??ae.filteredShortcuts[0];xt(Ue);return}}if(ue.key==="Enter"&&!ue.shiftKey&&(Ee||Oe)){Oe&&ue.preventDefault();return}if(ue.key==="Enter"&&!ue.shiftKey){if(ue.preventDefault(),s.streamingRef.current)return;Zt(ae.input);return}},[ae.input,ae.shortcutOpen,ae.filteredShortcuts,ae.shortcutIndex,ae.setShortcutIndex,ae.setShortcutOpen,s,Zt,xt,j,we,ee,oe]),Z=Se.visibleMessages.length>0||Se.operationCards.length>0||Se.humanGateCards.length>0||Se.artifactCards.length>0||!!Se.interview,xe=e.readiness==="setup-required"?"⚠ Pi 未就绪(setup-required):Chat 需要先完成 Pi 认证 / 模型配置。":e.readiness==="degraded"?"⚠ Pi 降级(degraded):可继续对话,但部分能力不可用。":null,je=f.jsx(_w,{origin:t,open:b,layoutMode:j,drawerOpen:D.sidebarDrawerOpen,activeSessionId:h?.sessionId,activeSessionStreaming:Se.streaming,activeSessionTurnPhase:Se.turnPhase,sessions:Fe.sessionList,tree:ge.tree,expanded:ge.expandedDirs,treeError:ge.treeError,onToggleOpen:()=>x(ue=>!ue),onOpenDrawer:on,onCloseDrawer:rt,onCreate:()=>{Fe.createSession()},creatingSession:Fe.creatingSession,onActivate:ue=>{D.sidebarDrawerOpen?yt(ue):Fe.activateSession(ue)},onRename:(ue,Ee)=>{Fe.updateSession(ue,{title:Ee})},onSetState:(ue,Ee)=>{Fe.updateSession(ue,{state:Ee})},onDelete:ue=>Fe.deleteSession(ue),onRefreshTree:ge.refreshTree,onToggleDir:ge.toggleDir,onInsert:ue=>{D.sidebarDrawerOpen?Xn(ue):ae.setInput(Ee=>`${Ee}${Ee&&!Ee.endsWith(" ")?" ":""}@${ue} `)},onPreview:ue=>{D.sidebarDrawerOpen?Sn(ue):ge.openPreview(ue)},drawerTriggerRef:H}),et=["oc-workspace",P&&!_?"has-process":"",_?"has-process-overlay":""].filter(Boolean).join(" "),gt=ue=>f.jsx("div",{className:"oc-messages is-empty",ref:U,"data-landing-density":ce.landingDensity,children:f.jsx(_6,{mode:ue,readiness:e.readiness,density:ce.landingDensity,onSuggest:async Ee=>{Fe.creatingSession||(ue==="no-session"?await Fe.createSession()&&await Zt(Ee):await Zt(Ee))},disabled:Fe.creatingSession,onCreateSession:ue==="no-session"?()=>{Fe.createSession()}:void 0})});return f.jsxs("div",{className:"oc-shell",children:[a?null:f.jsxs("div",{className:"oc-banner",children:[f.jsxs("span",{className:"oc-banner-title",children:[f.jsx("span",{className:"oc-banner-dot","aria-hidden":"true"}),"对话"]}),f.jsxs("span",{className:"oc-banner-body",children:["用自然语言编排 loop-agent / agent-worker 的",f.jsx("strong",{children:"全部能力"}),"。这是 ",f.jsx("strong",{children:"Operator"})," 面:默认具备完整 Pi 工具(read/write/edit/bash/grep/find/ls)与 safe-* 探查、以及受策略约束的 operator action(ADR 0011)。",f.jsx("strong",{children:"软约束"}),":大改与高风险变更优先走受治 DAG 的 implement-pi / repair-pi 与 Human Gate,而非把 Chat 当作第二套 DAG kernel。"]})]}),xe&&f.jsx("div",{className:"oc-alert oc-alert-warning",children:xe}),f.jsx(RM,{toast:Ve,onDismiss:()=>{c(null),X(null)}}),h?f.jsxs("div",{className:et,ref:W,"data-layout-mode":j,children:[je,f.jsxs("div",{ref:z,className:`oc-main${Z?"":" is-landing"}`,children:[!wt&&(j==="narrow"||$e>0)?f.jsxs("div",{className:"oc-main-topbar",children:[j==="narrow"?f.jsx("button",{type:"button",className:"oc-main-topbar-btn",ref:H,"aria-label":"打开会话与仓库","aria-expanded":D.sidebarDrawerOpen,onClick:()=>D.sidebarDrawerOpen?rt():on(),children:"会话与仓库"}):null,$e>0?f.jsxs("button",{type:"button",className:"oc-main-topbar-btn oc-activity-trigger",ref:K,"aria-controls":"oc-activity-rail","aria-expanded":de,onClick:()=>de?Nt():Je(),children:["运行活动 ",f.jsx("span",{children:ct})]}):null]}):null,f.jsx(t2,{previews:ge.previews,activePath:ge.activePreviewPath,loading:ge.previewLoading,onActivate:ge.setActivePreviewPath,onClose:ge.closePreview}),Z?f.jsx(eM,{scrollContainerRef:J,messagesEndRef:F,onScroll:st,hasThread:Z,readiness:e.readiness,streaming:Se.streaming,streamingAssistantId:Se.streamingAssistantId,messagesCount:Se.messages.length,visibleCount:Se.visibleMessages.length,onLoadMore:()=>Se.setHistoryLimit(ue=>ue+50),turnGroups:Se.turnGroups,interview:Se.interview,interviewAnswer:he.interviewAnswer,onInterviewAnswerChange:he.setInterviewAnswer,onAnswerInterview:ue=>{he.answerInterview(ue)},onConfirmTaskKind:()=>{he.confirmTaskKind()},onActivateActivity:Je,canActivateActivity:Tt,onSuggest:ue=>{Zt(ue)}}):gt("empty-session"),f.jsx(fM,{composer:ae,streaming:Se.streaming,turnPhase:Se.turnPhase,deferredTurn:Se.deferredTurn,hasThread:Z,layoutMode:j,paletteModel:we,shortcutPaletteRef:ee,paletteKeyboardNavRef:oe,onSend:ue=>{Zt(ue)},onStop:We,onCancelDeferred:nt,onKeyDown:Wt,onRunShortcut:Dt,models:ve.models,activeModel:ve.activeModel,activeModelRef:ve.activeModelRef,activeModelListed:ve.activeModelListed,activeThinkingLevel:ve.activeThinkingLevel,thinkingLevels:ve.thinkingLevels,onSwitchRuntime:ue=>{ve.switchRuntime(ue)},usage:Se.usage,unread:Se.unread,onCompact:()=>{Fe.compactSession()},compacting:d,processSummary:Se.streaming?null:Se.processSummary,processOpen:P,onToggleProcess:()=>{R(ue=>ue.active==="process"?ta(ue):Xs(ue,"process")),P||ve.setRuntimeContextOpen(!1)},processTriggerRef:te,runtimeContext:ve.runtimeContext,runtimeContextOpen:ne,onToggleRuntimeContext:()=>{ne?(ve.setRuntimeContextOpen(!1),R(ue=>ue.active==="runtime-context"?ta(ue):ue)):(ve.setRuntimeContextOpen(!0),R(ue=>Xs(ue,"runtime-context")))},runtimeContextTriggerRef:G})]}),$e>0&&!wt&&de?f.jsx("button",{type:"button",className:"oc-overlay-backdrop is-activity","aria-label":"关闭运行活动遮罩",onClick:Nt}):null,Ze.snapshot?f.jsx(EI,{origin:t,sessionId:Ze.snapshot.sessionId,presentation:St.presentation,sidecarRect:St.sidecarRect,phase:Ze.phase,open:de,focusRef:C,triggerRef:K,operationCards:Ze.snapshot.operationCards,humanGateCards:Ze.snapshot.humanGateCards,artifactCards:Ze.snapshot.artifactCards,onClose:Nt,onLocateConversation:qt,onNavigateWorkspace:e.onNavigateWorkspace}):null,ne&&ve.runtimeContext?f.jsx(pM,{panelOnly:!0,open:ne,onToggle:()=>{},onClose:()=>{ve.setRuntimeContextOpen(!1),R(ue=>ue.active==="runtime-context"?ta(ue):ue)},context:ve.runtimeContext,triggerRef:G}):null,P&&f.jsx(mM,{toolCalls:Se.toolCalls,overlay:_,onClose:()=>se(!1),triggerRef:te})]}):f.jsxs("div",{className:et,ref:W,"data-layout-mode":j,children:[je,f.jsxs("div",{className:"oc-main is-landing",children:[j==="narrow"?f.jsx("div",{className:"oc-main-topbar",children:f.jsx("button",{type:"button",className:"oc-main-topbar-btn",ref:H,"aria-label":"打开会话与仓库","aria-expanded":D.sidebarDrawerOpen,onClick:()=>D.sidebarDrawerOpen?rt():on(),children:"会话与仓库"})}):null,f.jsx(t2,{previews:ge.previews,activePath:ge.activePreviewPath,loading:ge.previewLoading,onActivate:ge.setActivePreviewPath,onClose:ge.closePreview}),gt("no-session")]})]})]})}function MO(e){return e==="validate"||e==="apply"||e==="spine"?"contract":e}const Ep="X-Loop-Console-Confirmation",q6="agent-worker console doctor --repo .",Tp=["LOW","MED","HIGH"];function OO(e){if(e.length===0)return"模型值不能为空";if(e.trim()!==e)return"模型值不能包含首尾空白";if(e==="default")return"default 是保留哨兵,不能作为模型值";if(e.startsWith("/")||e.endsWith("/")||e.includes("//"))return"provider/model 格式非法:不允许 /model、provider/ 或 a//b"}function DO(e){const t={};for(const n of Tp){const a=OO(e[n]);a&&(t[n]=a)}return t}function N2(e){return{LOW:e?.LOW?.value??"",MED:e?.MED?.value??"",HIGH:e?.HIGH?.value??""}}function jO(e){return Tp.every(t=>e[t]===void 0)}const Mh=[{kind:"standard",label:"后端研发(默认 DAG)",hint:"生成标准 hybrid DAG(contract → implement → verify)"},{kind:"frontend-implementation",label:"前端研发",hint:"生成 frontend-implementation 专用节点链"},{kind:"backend-test",label:"后端测试",hint:"生成 backend-test-dag(分析 / 用例 / pytest)"},{kind:"frontend-test",label:"前端测试",hint:"生成 frontend-test-dag(RAG 用例 + Playwright CLI)"}],U6={"setup-required":"需要设置",ready:"已就绪",degraded:"降级可用",unknown:"未知"},LO={idle:"未探测",match:"匹配",mismatch:"仓库不匹配",unavailable:"不可用"},H6={low:"低",medium:"中",high:"高"},F6={"validation-failed":"校验失败","contract-drift":"契约漂移","runtime-mismatch":"运行时不匹配","pause-on-human":"等待人工","verification-failed":"验证失败","orphan-unknown":"孤立/未知","terminal-failed":"已终止(失败)","terminal-succeeded":"已终止(成功)","needs-reconcile":"需要对账","running-active":"正在运行"},zO={idle:"空闲","not-started":"未开始","not-run":"未运行","n/a (MVP)":"不适用(MVP)",accepted:"已接受",succeeded:"已成功",running:"运行中",ran:"已执行"};function fu(e){return zO[e]??e}function Np(){return window.__CONSOLE_CONFIRMATION_TOKEN__??""}function ju(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}async function Lu(e,t={},n){const a={"Content-Type":"application/json",[Ep]:Np()},s=await fetch("/api/operator/v1/operations",{method:"POST",credentials:"same-origin",headers:a,body:JSON.stringify({action:e,actionParams:t,...n?{clientRequestId:n}:{}})});let l={};try{l=await s.json()}catch{l={ok:!1,error:{code:"INVALID_INPUT",message:"操作响应不是合法 JSON"}}}return{status:s.status,body:l}}const BO=new Set(["runDag","dagRerun","dagReconcileRun","dagRequestInterrupt","standaloneTaskRerun"]);function Vm(e,t){return z6({blockedReasons:e.blockedReasons,blockingNodes:e.blockingNodes,fallbackMessage:t})}async function C2(e,t=3e5){const n=Date.now();for(;Date.now()-n<t;){const a=await fetch(`/api/operator/v1/operations/${encodeURIComponent(e)}`,{credentials:"same-origin"});if(!a.ok)return null;const s=await a.json(),l=s.operation??s,c=l.state??"";if(c==="succeeded"||c==="failed"||c==="needs-reconcile"||c==="timed-out")return l;await new Promise(d=>setTimeout(d,250))}return{state:"needs-reconcile",errorMessage:"等待操作结果超时"}}const qO={};function UO(){const[e,t]=k.useState(()=>N6({env:qO?.VITE_OPERATOR_CHAT_DEFAULT_LANDING,storage:window.localStorage,location:window.location})),[n,a]=k.useState(null),[s,l]=k.useState("setup-required"),[c,d]=k.useState(null),[m,h]=k.useState(null),[p,b]=k.useState(!1),[x,y]=k.useState(!1),[E,N]=k.useState(null),[R,C]=k.useState(null),[I,O]=k.useState(null),[X,q]=k.useState(null),[A,F]=k.useState({command:"idle",dag:"not-started",verification:"not-run",promote:"n/a (MVP)"}),[J,W]=k.useState("setup"),z=k.useCallback(K=>{W($=>MO(typeof K=="function"?K($):K))},[]),U=s==="setup-required",H=s==="degraded",te=k.useCallback(K=>{K!==e&&(N(null),O(null),C(null)),t(K)},[e]),G=k.useCallback(async()=>{try{const $=await(await fetch("/api/health")).json();a($);const ee=$.piReadiness??"setup-required";l(ee),h(null),z(ee==="ready"||ee==="degraded"?oe=>oe==="setup"?"import-prd":oe:"setup")}catch(K){h(K instanceof Error?K.message:String(K))}try{const $=await(await fetch("/api/operator/v1/readiness")).json();d($),$.state&&l($.state)}catch{}},[z]);return{nav:e,setNav:t,selectNav:te,health:n,readiness:s,setReadiness:l,readinessReport:c,healthError:m,loadHealth:G,busy:p,setBusy:b,observeBusy:x,setObserveBusy:y,opError:E,setOpError:N,opMessage:R,setOpMessage:C,opErrorCode:I,setOpErrorCode:O,lastOpState:X,setLastOpState:q,layers:A,setLayers:F,step:J,setStep:z,setupBlocked:U,degraded:H}}const HO={bootstrapFromPrd:"正在导入 PRD 并创建任务:归档文档 → 确定性解析 → 语义结构化(MED→HIGH→LOW,每档最多 300 秒,请勿关闭页面)",importPrd:"正在导入 PRD:归档文档 → 确定性解析 → 语义结构化(MED→HIGH→LOW,每档最多 300 秒,请勿关闭页面)",interviewStart:"正在启动需求访谈…",interviewTurn:"正在提交访谈回答…",interviewSkip:"正在跳过访谈并生成评估…",contractValidate:"正在校验契约草稿…",contractDiff:"正在计算契约差异…",contractApply:"正在应用契约(写入需求与执行约束)…",spineCheck:"正在运行 Spine 审计…",dagGenerate:"正在生成 DAG…",standaloneTaskRerun:"正在带反馈重新执行任务:服务端校验资格后生成并启动新 DAG…",workerTaskRetry:"正在重新排队 Worker Task…"};function FO(e){const{shell:t,applyInterviewPayload:n}=e,{setBusy:a,setOpError:s,setOpErrorCode:l,setOpMessage:c,setReadiness:d,setStep:m,setNav:h,setLastOpState:p,setLayers:b,step:x,nav:y}=t,[E,N]=k.useState(null),[R,C]=k.useState([]),[I,O]=k.useState(!0),X=k.useRef(null),[q,A]=k.useState(null),[F,J]=k.useState(null),W=k.useCallback(async(G,K={},$)=>{a(!0),s(null),l(null),c(HO[G]??null);try{const{status:ee,body:oe}=await Lu(G,K,$?.clientRequestId);if(ee===412||oe.error?.code==="PI_SETUP_REQUIRED")return s(qa(oe.error?.message??"Pi 未就绪或已降级:该操作暂不可用")),l(oe.error?.code??"PI_SETUP_REQUIRED"),d("setup-required"),m("setup"),h("models"),oe;if(ee>=400||oe.ok===!1)return s(qa(oe.error?.message??oe.message??`操作失败(HTTP ${ee})`)),l(oe.error?.code??String(ee)),p(oe.state??`failed:${ee}`),b(D=>({...D,command:oe.error?.message??`failed:${oe.error?.code??ee}`})),oe;if(oe.operationId){const D=window.localStorage.getItem(Yr)?.trim();if(D&&fetch(`/api/operator/v1/chat/sessions/${encodeURIComponent(D)}/operation-links`,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json",[Ep]:Np()},body:JSON.stringify({operationId:oe.operationId})}).then(P=>{P.ok||console.warn("Operator Chat operation link failed",P.status)}).catch(P=>console.warn("Operator Chat operation link failed",P)),N(oe.operationId),p(oe.state??"accepted"),b(P=>({...P,command:oe.state??"accepted",dag:G==="runDag"?"running":P.dag})),BO.has(G)){O(!0),c(`操作已接受,后台运行中:${oe.operationId}(请看事件流;可同时打开 Observe)`);const P=oe.operationId;C2(P,30*6e4).then(_=>{if(_){if(p(_.state??null),_.state==="failed"||_.state==="needs-reconcile"||_.state==="timed-out"){s(qa(_.errorMessage??_.stderrPreview??`操作失败:${_.state}`)),l(_.errorCode??_.state??null),b(ne=>({...ne,command:`failed:${_.errorCode??_.state}`}));return}_.state==="succeeded"&&(c(`${G} 已成功`),b(ne=>({...ne,command:"succeeded"})))}})}else{c(`操作已接受:${oe.operationId}`);const P=await C2(oe.operationId);if(P){if(p(P.state??null),P.state==="failed"||P.state==="needs-reconcile"||P.state==="timed-out")return s(qa(P.errorMessage??P.stderrPreview??`操作失败:${P.state}`)),l(P.errorCode??P.state??null),b(se=>({...se,command:`failed:${P.errorCode??P.state}`})),{ok:!1,operationId:oe.operationId,state:P.state,error:{code:P.errorCode??P.state??"INTERNAL_ERROR",message:P.errorMessage??P.stderrPreview??`操作失败:${P.state}`}};c(P.errorMessage?`${G}:${P.errorMessage}`:`${G} 已成功`),b(se=>({...se,command:P.state??"succeeded"}));const _=P.result??{},ne={ok:!0,operationId:oe.operationId,state:P.state??"succeeded",result:_};(G==="interviewStart"||G==="interviewTurn"||G==="interviewSkip")&&n(_);const de=_.confirmation;return de?.confirmationId&&(A(de.confirmationId),J(_)),$?.advanceTo&&m($.advanceTo),ne}}}else c(`${G} 已完成`),p(oe.state??"succeeded"),b(D=>({...D,command:"succeeded",verification:G==="contractValidate"||G==="spineCheck"?"ran":D.verification}));const ce=oe.result??{};(G==="interviewStart"||G==="interviewTurn"||G==="interviewSkip")&&n(ce);const j=ce.confirmation;return j?.confirmationId&&(A(j.confirmationId),J(ce)),$?.advanceTo&&m($.advanceTo),oe}catch(ee){s(ee instanceof Error?ee.message:String(ee));return}finally{a(!1)}},[n,a,s,l,c,d,m,h,p,b]),z=k.useCallback(G=>{if(!G)return"无响应";if(G.error?.message)return G.error.message;if(G.message)return G.message;const K=G.result;if(K&&typeof K=="object")try{return JSON.stringify(K).slice(0,1200)}catch{return"已返回结果"}return G.ok===!1?"失败":"成功"},[]),U=k.useCallback(G=>{if(!G||G.ok===!1||G.error)return!1;const K=G.result;if(!K)return!0;if(typeof K.valid=="boolean")return K.valid;const $=K.result;return $&&typeof $.valid=="boolean"?$.valid:!0},[]),H=k.useCallback(async G=>{X.current?.abort();const K=new AbortController;X.current=K,C($=>[...$,`开始跟随事件流 ${G}`]);try{const $=await fetch(`/api/operator/v1/operations/${encodeURIComponent(G)}/events`,{credentials:"same-origin",signal:K.signal});if(!$.ok||!$.body){C(j=>[...j,`事件流 HTTP ${$.status}`]);return}const ee=$.body.getReader(),oe=new TextDecoder;let ce="";for(;I;){const{done:j,value:D}=await ee.read();if(j)break;ce+=oe.decode(D,{stream:!0});const P=ce.split(`