@rainmanhhh/pi-web 0.15.12 → 0.15.13

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 (93) hide show
  1. package/dist/server.mjs +2 -2
  2. package/dist/static/assets/{CodeMirrorEditor-B3_E6wyq.js → CodeMirrorEditor-BRsJQwTt.js} +2 -2
  3. package/dist/static/assets/{abnfDiagram-VCTEODGH-hxlekhm-.js → abnfDiagram-VCTEODGH-DOHrjT_n.js} +1 -1
  4. package/dist/static/assets/architecture-7GRP2DOG-Dsq0tZDm.js +1 -0
  5. package/dist/static/assets/{architectureDiagram-5GKGNRK7-B0XWaO2U.js → architectureDiagram-5GKGNRK7-Br5mt79V.js} +1 -1
  6. package/dist/static/assets/{blockDiagram-I7D4REHJ-BVmsOGDS.js → blockDiagram-I7D4REHJ-Dmst8gmj.js} +1 -1
  7. package/dist/static/assets/{c4Diagram-7LVT6UL2-BwwwjYO2.js → c4Diagram-7LVT6UL2-Ksz1sVNg.js} +1 -1
  8. package/dist/static/assets/channel-DcbGHPa8.js +1 -0
  9. package/dist/static/assets/{chunk-4HAMMTFA-D-MSvjB-.js → chunk-4HAMMTFA-gj4gTDYV.js} +1 -1
  10. package/dist/static/assets/{chunk-75Z2AOVW-DjOVTjTy.js → chunk-75Z2AOVW-8tAHa9xI.js} +1 -1
  11. package/dist/static/assets/{chunk-DU6HZSFF-CysBq-yR.js → chunk-DU6HZSFF-DH-hJfB7.js} +2 -3
  12. package/dist/static/assets/{chunk-F27PBJKO-BjNilf2F.js → chunk-F27PBJKO-37ILu3ii.js} +1 -1
  13. package/dist/static/assets/{chunk-GMAD6QVW-DNhHxtq0.js → chunk-GMAD6QVW-C6972TaC.js} +1 -1
  14. package/dist/static/assets/{chunk-GVQU2GXP-DMTG7gHB.js → chunk-GVQU2GXP-BQc1a4P2.js} +1 -1
  15. package/dist/static/assets/{chunk-IMKFNOWR-Bb38a8TC.js → chunk-IMKFNOWR-BtvjrX8A.js} +1 -1
  16. package/dist/static/assets/{chunk-L3NEJ4N5-p7IhEk5q.js → chunk-L3NEJ4N5-CYDJXaJj.js} +1 -1
  17. package/dist/static/assets/{chunk-OSK3NFVY-CSvLeku5.js → chunk-OSK3NFVY-fuWcKVUp.js} +1 -1
  18. package/dist/static/assets/{chunk-P2QGCYS3-xZBYjWhc.js → chunk-P2QGCYS3-HFmr4Ya5.js} +1 -1
  19. package/dist/static/assets/{chunk-POPQ4Y6H-UNegYDTH.js → chunk-POPQ4Y6H-_lCc1qrs.js} +1 -1
  20. package/dist/static/assets/{chunk-PWAF6VOD-Dyr6fojg.js → chunk-PWAF6VOD-7WuzbJmY.js} +1 -1
  21. package/dist/static/assets/{chunk-SHT3W25Y-C2LJevoE.js → chunk-SHT3W25Y-DRFzA9sS.js} +1 -1
  22. package/dist/static/assets/{chunk-SVP7TREG-D7s-e0x2.js → chunk-SVP7TREG-C3oJWCH4.js} +1 -1
  23. package/dist/static/assets/{chunk-TICWLB2K-Df6rqpze.js → chunk-TICWLB2K-CIDwDYNf.js} +1 -1
  24. package/dist/static/assets/classDiagram-ZZMXUADV-DX1qWX-9.js +1 -0
  25. package/dist/static/assets/classDiagram-v2-VYDZK3BY-DX1qWX-9.js +1 -0
  26. package/dist/static/assets/{cynefin-OW5HDTMX-CerCB1Km.js → cynefin-OW5HDTMX-DTi16dnu.js} +1 -1
  27. package/dist/static/assets/{cynefinDiagram-5FMLGOSQ-C8MnKq11.js → cynefinDiagram-5FMLGOSQ-DTcfmx1q.js} +1 -1
  28. package/dist/static/assets/{dagre-GXQ25YYZ-CzvaCYMt.js → dagre-GXQ25YYZ-BHENV8aR.js} +1 -1
  29. package/dist/static/assets/{diagram-S7CK7UJ4-Ho_ZTV7a.js → diagram-S7CK7UJ4-BLHQOgN7.js} +1 -1
  30. package/dist/static/assets/{diagram-UQ7AKVKN-DX2yX7-I.js → diagram-UQ7AKVKN-P_FYz-1y.js} +1 -1
  31. package/dist/static/assets/{diagram-VSXAHHWV-CAOK4hBy.js → diagram-VSXAHHWV-bKZIQmK6.js} +1 -1
  32. package/dist/static/assets/{diagram-VX7I27RA-BnysCrYk.js → diagram-VX7I27RA-BOMdy6Bo.js} +1 -1
  33. package/dist/static/assets/{diagram-Z3DM3KII-CrsbBdj9.js → diagram-Z3DM3KII-DCqSBbTM.js} +1 -1
  34. package/dist/static/assets/{ebnfDiagram-PWID7BFC-D0FpKact.js → ebnfDiagram-PWID7BFC-BxR5lihX.js} +1 -1
  35. package/dist/static/assets/{erDiagram-RLTQ6QDP-Ckbdr89h.js → erDiagram-RLTQ6QDP-CP2J0RuH.js} +1 -1
  36. package/dist/static/assets/eventmodeling-NTZA5JFV-CGE8xIGj.js +1 -0
  37. package/dist/static/assets/flowDiagram-HODETNUW-CNCvwdOr.js +1 -0
  38. package/dist/static/assets/{ganttDiagram-EL5Y4UJY-D3g4Cx33.js → ganttDiagram-EL5Y4UJY-_Y7l4Neh.js} +1 -1
  39. package/dist/static/assets/{gitGraph-4MIJSDKK-hDz21lBy.js → gitGraph-4MIJSDKK-DXnMMSg9.js} +1 -1
  40. package/dist/static/assets/{gitGraphDiagram-WWUBYQGX-pySWqQ8F.js → gitGraphDiagram-WWUBYQGX-DQYIP8q-.js} +1 -1
  41. package/dist/static/assets/highlighted-body-KPVGNVTW-Cpiv46NV.js +1 -0
  42. package/dist/static/assets/{index-HZ_6UsvG.js → index-5pdiKpV2.js} +120 -120
  43. package/dist/static/assets/{info-A6RAGUB7-Ds3pFUOK.js → info-A6RAGUB7-MhVmQx-z.js} +1 -1
  44. package/dist/static/assets/{infoDiagram-27XIBGKW-DIG92Jem.js → infoDiagram-27XIBGKW-J6iioyb9.js} +1 -1
  45. package/dist/static/assets/{ishikawaDiagram-5VMMS53U-DWSM36QY.js → ishikawaDiagram-5VMMS53U-DNfafkKW.js} +1 -1
  46. package/dist/static/assets/{journeyDiagram-3NMN7TZE-CyLt-0i6.js → journeyDiagram-3NMN7TZE-AFQklTtS.js} +1 -1
  47. package/dist/static/assets/{kanban-definition-UXKFOSKX-Cvp6rl2l.js → kanban-definition-UXKFOSKX-CXu6Vf0g.js} +1 -1
  48. package/dist/static/assets/katex-GAxSWBzH.js +257 -0
  49. package/dist/static/assets/{line-BT_EGoiC.js → line-grsSJ4bF.js} +1 -1
  50. package/dist/static/assets/mermaid-HWGCJPDP-BpBI6_cK.js +1 -0
  51. package/dist/static/assets/{mermaid-parser.core-D1v3-H_M.js → mermaid-parser.core-DXyA9GNp.js} +3 -3
  52. package/dist/static/assets/{mermaid.core-DZ-ekdaf.js → mermaid.core-BLmx9LJ9.js} +4 -4
  53. package/dist/static/assets/{mindmap-definition-YA3MSWOX-D1DNiINk.js → mindmap-definition-YA3MSWOX-CQb8wpWe.js} +1 -1
  54. package/dist/static/assets/{packet-AYTQ26CC-BbqCl8PG.js → packet-AYTQ26CC-BAdvhlfV.js} +1 -1
  55. package/dist/static/assets/{pegDiagram-XKGWAZYB-BsPE6tMt.js → pegDiagram-XKGWAZYB-C4R0tkam.js} +1 -1
  56. package/dist/static/assets/{pie-WAS4IAKB-BIYLXPhg.js → pie-WAS4IAKB-xkxJn34n.js} +1 -1
  57. package/dist/static/assets/{pieDiagram-E7YTZNPT-CfsUANwV.js → pieDiagram-E7YTZNPT-DOM2LwS5.js} +1 -1
  58. package/dist/static/assets/{quadrantDiagram-AXDQQJYC-BebiG9LR.js → quadrantDiagram-AXDQQJYC-Chf9HIbS.js} +1 -1
  59. package/dist/static/assets/{radar-RG4KPBEZ-BDOjj-PT.js → radar-RG4KPBEZ-Bk2j7Jyl.js} +1 -1
  60. package/dist/static/assets/{railroad-74A4TZTK-cnGENHoX.js → railroad-74A4TZTK-DJDjDKCB.js} +1 -1
  61. package/dist/static/assets/railroad-abnf-HS5TGJTU-DXmPJ5oB.js +1 -0
  62. package/dist/static/assets/railroad-ebnf-LZEXJU2U-BjGHSCH6.js +1 -0
  63. package/dist/static/assets/railroad-peg-WCYAUIDC-Cv-ML-qw.js +1 -0
  64. package/dist/static/assets/{railroadDiagram-O6MQD6OU-RPGNukqT.js → railroadDiagram-O6MQD6OU-Xu7uBXJ-.js} +1 -1
  65. package/dist/static/assets/{requirementDiagram-BXWQKSXE-CgvsPL7c.js → requirementDiagram-BXWQKSXE-DCHOfIpd.js} +1 -1
  66. package/dist/static/assets/{sankeyDiagram-P5KCCOFB-Cp7w4srj.js → sankeyDiagram-P5KCCOFB-B8vdNulG.js} +1 -1
  67. package/dist/static/assets/{sequenceDiagram-WJ2MYXX4-C2Z7XMEF.js → sequenceDiagram-WJ2MYXX4-BNxznOPo.js} +1 -1
  68. package/dist/static/assets/{stateDiagram-D77RDMKH-CBc3gUUm.js → stateDiagram-D77RDMKH-lED6Bapo.js} +1 -1
  69. package/dist/static/assets/stateDiagram-v2-MP3YSRHH-CgHquAmo.js +1 -0
  70. package/dist/static/assets/{swimlanes-42K2YHIH-Cqh1MVHS.js → swimlanes-42K2YHIH-BsjoX4tY.js} +1 -1
  71. package/dist/static/assets/swimlanesDiagram-VR7AAH4N-bqCt6537.js +8 -0
  72. package/dist/static/assets/{timeline-definition-24CTP7MA-C4r6_Hx5.js → timeline-definition-24CTP7MA-Calek9Hn.js} +1 -1
  73. package/dist/static/assets/{treeView-Q6P3EWNA-BJT3zYiX.js → treeView-Q6P3EWNA-CaYxVGPo.js} +1 -1
  74. package/dist/static/assets/{treemap-WGGIJYW6-D5eanN8R.js → treemap-WGGIJYW6-CpIlERhx.js} +1 -1
  75. package/dist/static/assets/{vennDiagram-4TSXK5OY-DaQjopot.js → vennDiagram-4TSXK5OY-DAbuGGgz.js} +1 -1
  76. package/dist/static/assets/{wardley-WFR3VGLG-BDWk0vnJ.js → wardley-WFR3VGLG-D3weY90b.js} +1 -1
  77. package/dist/static/assets/{wardleyDiagram-VM6X3IG4--aYT9Mmt.js → wardleyDiagram-VM6X3IG4-D5NRu4zr.js} +1 -1
  78. package/dist/static/assets/{xychartDiagram-S5SC5T6Z-DFcyFKaN.js → xychartDiagram-S5SC5T6Z-X_XElJn_.js} +1 -1
  79. package/dist/static/index.html +1 -1
  80. package/package.json +20 -22
  81. package/dist/static/assets/architecture-7GRP2DOG-D_G7B-4q.js +0 -1
  82. package/dist/static/assets/channel-Xm2VO4Bl.js +0 -1
  83. package/dist/static/assets/classDiagram-ZZMXUADV-BDi1bLUb.js +0 -1
  84. package/dist/static/assets/classDiagram-v2-VYDZK3BY-BDi1bLUb.js +0 -1
  85. package/dist/static/assets/eventmodeling-NTZA5JFV-Cfzpxqrh.js +0 -1
  86. package/dist/static/assets/flowDiagram-HODETNUW-C26DZLq3.js +0 -1
  87. package/dist/static/assets/highlighted-body-KPVGNVTW-CJaXew9E.js +0 -1
  88. package/dist/static/assets/mermaid-HWGCJPDP-DJBEzF9a.js +0 -1
  89. package/dist/static/assets/railroad-abnf-HS5TGJTU-CkQYFD4B.js +0 -1
  90. package/dist/static/assets/railroad-ebnf-LZEXJU2U-BOFxKvI1.js +0 -1
  91. package/dist/static/assets/railroad-peg-WCYAUIDC-CkgGRIC1.js +0 -1
  92. package/dist/static/assets/stateDiagram-v2-MP3YSRHH-Dmmzm3Ka.js +0 -1
  93. package/dist/static/assets/swimlanesDiagram-VR7AAH4N-MeIa3rQj.js +0 -8
package/dist/server.mjs CHANGED
@@ -256,13 +256,13 @@ Expecting one of '${n.join("', '")}'`);if(this._lifeCycleHooks[e])this._lifeCycl
256
256
  `),this.outputHelp({error:!0});let n=t||{},r=n.exitCode||1,i=n.code||"commander.error";this._exit(r,i,e)}_parseOptionsEnv(){this.options.forEach((e)=>{if(e.envVar&&e.envVar in pe.env){let t=e.attributeName();if(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))if(e.required||e.optional)this.emit(`optionEnv:${e.name()}`,pe.env[e.envVar]);else this.emit(`optionEnv:${e.name()}`)}})}_parseOptionsImplied(){let e=new eh(this.options),t=(n)=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter((n)=>n.implied!==void 0&&t(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach((n)=>{Object.keys(n.implied).filter((r)=>!t(r)).forEach((r)=>{this.setOptionValueWithSource(r,n.implied[r],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let n=(o)=>{let s=o.attributeName(),a=this.getOptionValue(s),c=this.options.find((d)=>d.negate&&s===d.attributeName()),u=this.options.find((d)=>!d.negate&&s===d.attributeName());if(c&&(c.presetArg===void 0&&a===!1||c.presetArg!==void 0&&a===c.presetArg))return c;return u||o},r=(o)=>{let s=n(o),a=s.attributeName();if(this.getOptionValueSource(a)==="env")return`environment variable '${s.envVar}'`;return`option '${s.flags}'`},i=`error: ${r(e)} cannot be used with ${r(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let r=[],i=this;do{let o=i.createHelp().visibleOptions(i).filter((s)=>s.long).map((s)=>s.long);r=r.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);t=th(e,r)}let n=`error: unknown option '${e}'${t}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,n=t===1?"":"s",r=e.length,i=this.parent?` for '${this.name()}'`:"",o=e.join(", "),s=`error: too many arguments${i}. Expected ${t} argument${n} but got ${r}: ${o}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach((i)=>{if(r.push(i.name()),i.alias())r.push(i.alias())}),t=th(e,r)}let n=`error: unknown command '${e}'${t}`;this.error(n,{code:"commander.unknownCommand"})}version(e,t,n){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",n=n||"output the version number";let r=this.createOption(t,n);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${e}
257
257
  `),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let n=this.parent?._findCommand(e);if(n){let r=[n.name()].concat(n.aliases()).join("|");throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${r}'`)}return t._aliases.push(e),this}aliases(e){if(e===void 0)return this._aliases;return e.forEach((t)=>this.alias(t)),this}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map((n)=>Xc(n));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){if(e===void 0)return this._name;return this._name=e,this}helpGroup(e){if(e===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=e,this}commandsGroup(e){if(e===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=e,this}optionsGroup(e){if(e===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=e,this}_initOptionGroup(e){if(this._defaultOptionGroup&&!e.helpGroupHeading)e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){if(this._defaultCommandGroup&&!e.helpGroup())e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Hn.basename(e,Hn.extname(e)),this}executableDir(e){if(e===void 0)return this._executableDir;return this._executableDir=e,this}helpInformation(e){let t=this.createHelp(),n=this._getOutputContext(e);t.prepareContext({error:n.error,helpWidth:n.helpWidth,outputHasColors:n.hasColors});let r=t.formatHelp(this,t);if(n.hasColors)return r;return this._outputConfiguration.stripColor(r)}_getOutputContext(e){e=e||{};let t=!!e.error,n,r,i;if(t)n=(s)=>this._outputConfiguration.writeErr(s),r=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth();else n=(s)=>this._outputConfiguration.writeOut(s),r=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth();return{error:t,write:(s)=>{if(!r)s=this._outputConfiguration.stripColor(s);return n(s)},hasColors:r,helpWidth:i}}outputHelp(e){let t;if(typeof e==="function")t=e,e=void 0;let n=this._getOutputContext(e),r={error:n.error,write:n.write,command:this};this._getCommandAndAncestors().reverse().forEach((o)=>o.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let i=this.helpInformation({error:n.error});if(t){if(i=t(i),typeof i!=="string"&&!Buffer.isBuffer(i))throw Error("outputHelp callback must return a string or a Buffer")}if(n.write(i),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",r),this._getCommandAndAncestors().forEach((o)=>o.emit("afterAllHelp",r))}helpOption(e,t){if(typeof e==="boolean"){if(e){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),e||t)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(pe.exitCode??0);if(t===0&&e&&typeof e!=="function"&&e.error)t=1;this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let n=["beforeAll","before","after","afterAll"];if(!n.includes(e))throw Error(`Unexpected value for position to addHelpText.
258
258
  Expecting one of '${n.join("', '")}'`);let r=`${e}Help`;return this.on(r,(i)=>{let o;if(typeof t==="function")o=t({error:i.error,command:i.command});else o=t;if(o)i.write(`${o}
259
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((r)=>t.is(r)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function h0(e){return e.map((t)=>{if(!t.startsWith("--inspect"))return t;let n,r="127.0.0.1",i="9229",o;if((o=t.match(/^(--inspect(-brk)?)$/))!==null)n=o[1];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(n=o[1],/^\d+$/.test(o[3]))i=o[3];else r=o[3];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)n=o[1],r=o[3],i=o[4];if(n&&i!=="0")return`${n}=${r}:${parseInt(i)+1}`;return t})}function p0(){if(pe.env.NO_COLOR||pe.env.FORCE_COLOR==="0"||pe.env.FORCE_COLOR==="false")return!1;if(pe.env.FORCE_COLOR||pe.env.CLICOLOR_FORCE!==void 0)return!0;return}var hle=new to;var Ps={name:"@rainmanhhh/pi-web",version:"0.15.12",description:"Web UI for the pi coding agent (fork of @agegr/pi-web)",homepage:"https://gitee.com/dsxbygzzl/pi-web#readme",repository:{type:"git",url:"git+https://gitee.com/dsxbygzzl/pi-web.git"},bugs:{url:"https://gitee.com/dsxbygzzl/pi-web/issues"},author:"rainmanhhh",license:"MIT",publishConfig:{access:"public",registry:"https://registry.npmjs.org"},engines:{node:">=24.0.0"},files:["dist","public","extensions","package.json"],bin:{"pi-web":"dist/server.mjs"},scripts:{dev:"vite","dev:lan":"vite --host 0.0.0.0",mb:"bun run --env-file=.env.manual api",mf:"bun run --env-file=.env.manual dev -- --port 3001",api:"bun run server/main.ts","api:node":"bun run build:server && node dist/server.mjs","build:server":'bun build server/main.ts --target node --outfile dist/server.mjs --minify --external "@earendil-works/*" --define "process.env.PI_WEB_PACKAGED=1"',"e2e:stop":"bun run scripts/e2e-stop.mjs",build:"vite build && bun run scripts/prune-fonts.mjs","build:analyze":"vite build --config scripts/analyze-bundle.config.ts && bun run scripts/prune-fonts.mjs",lint:"oxlint --fix",jscpd:"jscpd --config .jscpd.json",check:"tsc --noEmit",format:"biome check --write .",prepublishOnly:"bun run check && bun run build && bun run build:server","test:e2e":"playwright test","test:unit":"vitest run",prepare:"husky || true"},dependencies:{"@codemirror/commands":"^6.11.0","@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.12","@codemirror/lang-javascript":"^6.2.5","@codemirror/lang-json":"^6.0.2","@codemirror/lang-markdown":"^6.5.2","@codemirror/lang-yaml":"^6.1.3","@codemirror/language":"^6.12.4","@codemirror/state":"^6.7.1","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.43.9","@earendil-works/pi-agent-core":"0.84.4","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-coding-agent":"0.84.4","@earendil-works/pi-tui":"0.84.4","@hono/node-server":"^2.1.1","class-variance-authority":"^0.7.1",clsx:"^2.1.1",codemirror:"^6.0.2",hono:"^4.13.5","lucide-react":"^1.37.0","p-defer":"^4.0.1",pointrix:"^1.1.0","proper-lockfile":"4.1.2","radix-ui":"^1.6.7",react:"^19.2.8","react-dom":"^19.2.8",shadcn:"^4.19.0",streamdown:"2.6.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0",undici:"8.10.0",virtua:"^0.50.6",ws:"^8.21.3"},devDependencies:{"@lobehub/icons":"^5.16.0","@playwright/test":"^1.62.1","@tailwindcss/postcss":"^4.3.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.3","@types/node":"^25.9.5","@types/ws":"^8.18.1","@types/proper-lockfile":"4.1.4","@types/react":"^19.2.18","@types/react-dom":"^19.2.5","@types/react-resizable":"^4.0.0","@types/react-syntax-highlighter":"^15.5.13","@vitejs/plugin-react":"^6.1.1",biome:"^0.3.3",commander:"^15.0.0",husky:"^9.1.7",jiti:"^2.7.0",jscpd:"^5.1.0",jsdom:"^30.0.1",katex:"^0.18.4","lint-staged":"^17.4.1",mammoth:"^1.12.2",mermaid:"^11.17.2",oxlint:"^1.80.0",postcss:"^8.5.26","react-markdown":"^10.1.0","react-syntax-highlighter":"^16.1.1","rehype-katex":"^7.0.1","rehype-raw":"^7.0.0","rehype-sanitize":"^6.0.0","remark-gfm":"^4.0.1","remark-math":"^6.0.0",tailwindcss:"^4.3.3",typescript:"^7.0.2",vite:"^8.2.2","vite-plugin-remove-console":"^2.2.0","vite-plugin-svgr":"^5.2.0",vitest:"^4.1.11"},type:"module",overrides:{katex:"^0.18.4"}};import{getAgentDir as cI}from"@earendil-works/pi-coding-agent";var g0={port:31415};var rh=(e,t,n)=>(r,i)=>{let o=-1;return s(0);async function s(a){if(a<=o)throw Error("next() called multiple times");o=a;let c,u=!1,d;if(e[a])d=e[a][0][0],r.req.routeIndex=a;else d=a===e.length&&i||void 0;if(d)try{c=await d(r,()=>s(a+1))}catch(f){if(f instanceof Error&&t)r.error=f,c=await t(f,r),u=!0;else throw f}else if(r.finalized===!1&&n)c=await n(r);if(c&&(r.finalized===!1||u))r.res=c;return r}};var m0=Symbol();var y0=(e,t)=>new Response(e,{headers:{"Content-Type":t.replace(/^[^;]+/,(r)=>r.toLowerCase())}}).formData();var b0=32,m4=1e4,Yc=(e)=>("headers"in e),_0=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,s=(Yc(e)?e.headers:e.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();if(s==="multipart/form-data"||s==="application/x-www-form-urlencoded")return y4(e,{all:n,dot:r});return{}};async function y4(e,t){if(!Yc(e)&&e.bodyCache.formData)return v0(await e.bodyCache.formData,t);let n=Yc(e)?e.headers:e.raw.headers,r=await e.arrayBuffer(),i=y0(r,n.get("Content-Type")||"");if(!Yc(e))e.bodyCache.formData=i;let o=await i;if(o)return v0(o,t);return{}}function v0(e,t){let n=Object.create(null),r={count:0};if(e.forEach((i,o)=>{if(!(t.all||o.endsWith("[]")))n[o]=i;else b4(n,o,i)}),t.dot)Object.entries(n).forEach(([i,o])=>{if(i.includes("."))v4(n,i,o,r),delete n[i]});return n}var b4=(e,t,n)=>{if(e[t]!==void 0)if(Array.isArray(e[t]))e[t].push(n);else e[t]=[e[t],n];else if(!t.endsWith("[]"))e[t]=n;else e[t]=[n]},v4=(e,t,n,r)=>{if(/(?:^|\.)__proto__\./.test(t))return;let i=e,o=t.split(".",b0+2);if(o.length>b0+1)x0();o.forEach((s,a)=>{if(a===o.length-1)i[s]=n;else{if(!i[s]||typeof i[s]!=="object"||Array.isArray(i[s])||i[s]instanceof File){if(r.count++>=m4)x0();i[s]=Object.create(null)}i=i[s]}})},x0=()=>{throw Error("Nesting limit exceeded")};ui();var U0=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(e,t="/",n=[[]]){this.raw=e,this.path=t,this.#t=n}param(e){return e?this.#n(e):this.#o()}#n(e){let t=this.#t[0][this.routeIndex]?.[1][e],n=this.#i(t);return n&&eu(n)}#o(){let e={},t=Object.keys(this.#t[0][this.routeIndex]?.[1]??{});for(let n of t){let r=this.#i(this.#t[0][this.routeIndex][1][n]);if(r!==void 0)e[n]=eu(r)}return e}#i(e){return this.#t[1]?this.#t[1][e]:e}query(e){return C0(this.url,e)}queries(e){return A0(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t=Object.create(null);return this.raw.headers.forEach((n,r)=>{t[r]=n}),t}async parseBody(e){return _0(this,e)}#r=(e)=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;for(let i in t)return t[i].then((o)=>{if(i==="json")o=JSON.stringify(o);return new Response(o)[e]()});return t[e]=n[e]()};json(){return this.#r("text").then((e)=>JSON.parse(e))}text(){return this.#r("text")}arrayBuffer(){return this.#r("arrayBuffer")}bytes(){return this.#r("arrayBuffer").then((e)=>new Uint8Array(e))}blob(){return this.#r("blob")}formData(){return this.#r("formData")}addValidatedData(e,t){(this.#e??={})[e]=t}valid(e){return this.#e?.[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[m0](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,e]])=>e)}get routePath(){return this.#t[0].map(([[,e]])=>e)[this.routeIndex].path}};uh();var D4="text/plain; charset=UTF-8",lh=(e,t)=>({"Content-Type":e,...t}),Is=(e,t)=>new Response(e,t),dh=class{#e;#t;env={};#n;finalized=!1;error;#o;#i;#r;#c;#s;#a;#l;#d;#f;constructor(e,t){if(this.#e=e,t)this.#i=t.executionCtx,this.env=t.env,this.#a=t.notFoundHandler,this.#f=t.path,this.#d=t.matchResult}get req(){return this.#t??=new U0(this.#e,this.#f,this.#d),this.#t}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;else throw Error("This context has no ExecutionContext")}get res(){return this.#r||=Is(null,{headers:this.#l??=new Headers})}set res(e){if(this.#r&&e){e=Is(e.body,e);for(let[t,n]of this.#r.headers.entries()){if(t==="content-type")continue;if(t==="set-cookie"){let r=this.#r.headers.getSetCookie();e.headers.delete("set-cookie");for(let i of r)e.headers.append("set-cookie",i)}else e.headers.set(t,n)}}this.#r=e,this.finalized=!0}render=(...e)=>(this.#s??=(t)=>this.html(t),this.#s(...e));setLayout=(e)=>this.#c=e;getLayout=()=>this.#c;setRenderer=(e)=>{this.#s=e};header=(e,t,n)=>{if(this.finalized)this.#r=Is(this.#r.body,this.#r);let r=this.#r?this.#r.headers:this.#l??=new Headers;if(t===void 0)r.delete(e);else if(n?.append)r.append(e,t);else r.set(e,t)};status=(e)=>{this.#o=e};set=(e,t)=>{this.#n??=new Map,this.#n.set(e,t)};get=(e)=>this.#n?this.#n.get(e):void 0;get var(){if(!this.#n)return{};return Object.fromEntries(this.#n)}#u(e,t,n){let r=this.#r?new Headers(this.#r.headers):this.#l;if(typeof t==="object"&&t.headers){r??=new Headers;for(let[o,s]of new Headers(t.headers))if(o==="set-cookie")r.append(o,s);else r.set(o,s)}if(n){if(!r){let o=0;for(let s in n)if(++o>1||typeof n[s]!=="string"){r=new Headers;break}}if(r)for(let o in n){let s=n[o];if(typeof s==="string")r.set(o,s);else{r.delete(o);for(let a of s)r.append(o,a)}}}let i=typeof t==="number"?t:t?.status??this.#o;return Is(e,{status:i,headers:r??n})}newResponse=(...e)=>this.#u(...e);body=(e,t,n)=>this.#u(e,t,n);text=(e,t,n)=>!this.#l&&!this.#o&&!t&&!n&&!this.finalized?new Response(e):this.#u(e,t,lh(D4,n));json=(e,t,n)=>this.#u(JSON.stringify(e),t,lh("application/json",n));html=(e,t,n)=>{let r=(i)=>this.#u(i,t,lh("text/html; charset=UTF-8",n));return typeof e==="object"?ch(e,k0.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header("Location",!/[^\x00-\xFF]/.test(n)?n:encodeURI(n)),this.newResponse(null,t??302)};notFound=()=>(this.#a??=()=>Is(),this.#a(this))};vr();fh();ui();var E4=(e)=>e.text("404 Not Found",404),P0=(e,t)=>{if("getResponse"in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text("Internal Server Error",500)},I0=class e{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(t={}){[...O0,F0].forEach((o)=>{this[o]=(s,...a)=>{if(typeof s==="string")this.#e=s;else this.#o(o,this.#e,s);return a.forEach((c)=>{this.#o(o,this.#e,c)}),this}}),this.on=(o,s,...a)=>{for(let c of[s].flat()){this.#e=c;for(let u of[o].flat())a.map((d)=>{this.#o(u.toUpperCase(),this.#e,d)})}return this},this.use=(o,...s)=>{if(typeof o==="string")this.#e=o;else this.#e="*",s.unshift(o);return s.forEach((a)=>{this.#o(qe,this.#e,a)}),this};let{strict:r,...i}=t;Object.assign(this,i),this.getPath=r??!0?t.getPath??ah:T0}#t(){let t=new e({router:this.router,getPath:this.getPath});return t.errorHandler=this.errorHandler,t.#n=this.#n,t.routes=this.routes,t}#n=E4;errorHandler=P0;route(t,n){let r=this.basePath(t);return n.routes.map((i)=>{let o;if(n.errorHandler===P0)o=i.handler;else o=async(s,a)=>(await rh([],n.errorHandler)(s,()=>i.handler(s,a))).res,o[Ms]=i.handler;r.#o(i.method,i.path,o,i.basePath)}),this}basePath(t){let n=this.#t();return n._basePath=br(this._basePath,t),n}onError=(t)=>(this.errorHandler=t,this);notFound=(t)=>(this.#n=t,this);mount(t,n,r){let i,o;if(r)if(typeof r==="function")o=r;else if(o=r.optionHandler,r.replaceRequest===!1)i=(c)=>c;else i=r.replaceRequest;let s=o?(c)=>{let u=o(c);return Array.isArray(u)?u:[u]}:(c)=>{let u=void 0;try{u=c.executionCtx}catch{}return[c.env,u]};i||=(()=>{let c=br(this._basePath,t),u=c==="/"?0:c.length;return(d)=>{let f=new URL(d.url);return f.pathname=this.getPath(d).slice(u)||"/",new Request(f,d)}})();let a=async(c,u)=>{let d=await n(i(c.req.raw),...s(c));if(d)return d;await u()};return this.#o(qe,br(t,"*"),a),this}#o(t,n,r,i){t=t.toUpperCase(),n=br(this._basePath,n);let o={basePath:i!==void 0?br(this._basePath,i):this._basePath,path:n,method:t,handler:r};this.router.add(t,n,[r,o]),this.routes.push(o)}#i(t,n){if(t instanceof Error)return this.errorHandler(t,n);throw t}#r(t,n,r,i){if(i==="HEAD")return(async()=>new Response(null,await this.#r(t,n,r,"GET")))();let o=this.getPath(t,{env:r}),s=this.router.match(i,o),a=new dh(t,{path:o,matchResult:s,env:r,executionCtx:n,notFoundHandler:this.#n});if(s[0].length===1){let u;try{u=s[0][0][0][0](a,async()=>{a.res=await this.#n(a)})}catch(d){return this.#i(d,a)}return u instanceof Promise?u.then((d)=>d||(a.finalized?a.res:this.#n(a))).catch((d)=>this.#i(d,a)):u??this.#n(a)}let c=rh(s[0],this.errorHandler,this.#n);return(async()=>{try{let u=await c(a);if(!u.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return u.res}catch(u){return this.#i(u,a)}})()}fetch=(t,...n)=>this.#r(t,n[1],n[0],t.method);request=(t,n,r,i)=>{if(t instanceof Request)return this.fetch(n?new Request(t,n):t,r,i);return t=t.toString(),this.fetch(new Request(/^https?:\/\//.test(t)?t:`http://localhost${br("/",t)}`,n),r,i)};fire=()=>{addEventListener("fetch",(t)=>{t.respondWith(this.#r(t.request,t,void 0,t.request.method))})}};vr();ui();var Ve=()=>Object.create(null);vr();var ru=[];function hh(e,t){let n=this.buildAllMatchers(),r=(i,o)=>{let s=n[i]||n[qe],a=s[2][o];if(a)return a;let c=o.match(s[0]);if(!c)return[[],ru];let u=c.indexOf("",1);return[s[1][u],c]};return this.match=r,r(e,t)}var no="[^/]+",_r=".*",Gn="(?:|/.*)",xr=Symbol(),M0=new Set(".\\+*[^]$()");function T4(e,t){if(e.length===1)return t.length===1?e<t?-1:1:-1;if(t.length===1)return 1;if(e===_r||e===Gn)return t===Gn?-1:1;else if(t===_r||t===Gn)return-1;if(e===no)return 1;else if(t===no)return-1;return e.length===t.length?e<t?-1:1:t.length-e.length}var N0=class e{#e;#t;#n=Ve();insert(t,n,r,i,o){let s=this;for(let a=0,c=t.length;a<c;a++){let u=t[a],d=u.length===1?u==="*"?a===c-1?["","",_r]:["","",no]:null:u==="/*"?["","",Gn]:u.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),f;if(d){let h=d[1],p=d[2]||no;if(h&&d[2]){if(p===".*")throw xr;if(p=p.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(p))throw xr;if(p.length===1&&M0.has(p))throw xr}if(f=s.#n[p],!f){if(p!==_r&&p!==Gn){for(let g in s.#n)if((p.length>1||g.length>1)&&g!==_r&&g!==Gn)throw xr}f=s.#n[p]=new e}if(h!=="")f.#t??=i.varIndex++,r.push([h,f.#t])}else if(f=s.#n[u],!f){for(let h in s.#n)if(h.length>1&&h!==_r&&h!==Gn)throw xr;f=s.#n[u]=new e}s=f}if(s.#e!==void 0)throw xr;s.#e=o?-1:n}buildRegExpStr(){let n=Object.keys(this.#n).sort(T4).map((r)=>{let i=this.#n[r],o=i.buildRegExpStr();return o===""?"":(typeof i.#t==="number"?`(${r})@${i.#t}`:M0.has(r)?`\\${r}`:r)+o}).filter(Boolean);if(typeof this.#e==="number"&&this.#e!==-1)n.unshift(`#${this.#e}`);if(n.length===0)return"";if(n.length===1)return n[0];return"(?:"+n.join("|")+")"}};var ph=class{#e={varIndex:0};#t=new N0;#n=0;paths=Ve();insert(e,t){if(t){this.#t.insert(e.split(""),0,[],this.#e,!0);return}let n=[],r=[],i=e;for(let s=0;;){let a=!1;if(i=i.replace(/\{[^}]+\}/g,(c)=>{let u=`@\\${s}`;return r[s]=[u,c],s++,a=!0,u}),!a)break}let o=i.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let s=r.length-1;s>=0;s--){let[a]=r[s];for(let c=o.length-1;c>=0;c--)if(o[c].indexOf(a)!==-1){o[c]=o[c].replace(a,r[s][1]);break}}this.#t.insert(o,this.#n,n,this.#e,!1),this.paths[e]=[this.#n++,n]}buildRegExp(){let e=this.#t.buildRegExpStr();if(e==="")return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(i,o,s)=>{if(o!==void 0)return n[++t]=Number(o),"$()";if(s!==void 0)return r[Number(s)]=++t,"";return""}),[new RegExp(`^${e}`),n,r]}};var B0=Ve();function L0(e){return B0[e]??=new RegExp(`^${e.replace(/\/:[^/{}]+(?:\{\[\^\/]\+})?(?=[/{]|$)|\/?\*$|([.\\+*[^\]$()?{}|])/g,(t,n)=>n?`\\${n}`:t==="/*"?Gn:t==="*"?_r:`/:${no}`)}$`)}function iu(e,t){for(let n of Object.keys(e).sort((r,i)=>i.length-r.length))if(L0(n).test(t))return[...e[n]];return}var ou=class{name="RegExpRouter";#e;#t;#n;constructor(){this.#e={[qe]:Ve()},this.#t={[qe]:Ve()},this.#n={[qe]:new ph}}#o(e,t){try{this.#n[e].insert(t,!/\*|\/:/.test(t))}catch(n){throw n===xr?new nu(t):n}}add(e,t,n){let r=this.#e,i=this.#t;if(!r)throw Error(tu);if(!r[e]){this.#n[e]=new ph;for(let a of[r,i]){a[e]=Ve();for(let c in a[qe])a[e][c]=[...a[qe][c]],this.#o(e,c)}}if(t==="/*")t="*";let o=e===qe?Object.keys(r):[e];if(/\*$/.test(t)){let a=L0(t);for(let c of o)if(!r[c][t])this.#o(c,t),r[c][t]=iu(r[c],t)||iu(r[qe],t)||[];for(let c of[r,i])for(let u of o)for(let d in c[u])a.test(d)&&c[u][d].push([n,t]);return}let s=Qc(t)||[t];for(let a of s)for(let c of o){if(!i[c][a])this.#o(c,a),i[c][a]=iu(r[c],a)||iu(r[qe],a)||[];i[c][a].push([n,a])}}match=hh;buildAllMatchers(){let e=Ve();for(let t of Object.keys(this.#t))e[t]=this.#i(t);return this.#e=this.#t=this.#n=void 0,B0=Ve(),e}#i(e){let t=this.#e[e],n=this.#t[e],r=this.#n[e],i=Ve(),o=[],[s,a,c]=r.buildRegExp();for(let u of[t,n])for(let d in u){let f=u[d],h=r.paths[d];if(!h){i[d]=[f.map(([p])=>[p,Ve()]),ru];continue}o[h[0]]=f.map(([p,g])=>[p,r.paths[g][1].reduceRight((y,[v],b)=>(y[v]=c[h[1][b][1]],y),Ve())])}return[s,a.map((u)=>o[u]),i]}};vr();vr();var gh=class{name="SmartRouter";#e=[];#t=[];constructor(e){this.#e=e.routers}add(e,t,n){if(!this.#t)throw Error(tu);this.#t.push([e,t,n])}match(e,t){if(!this.#t)throw Error("Fatal error");let n=this.#e,r=this.#t,i=n.length,o=0,s;for(;o<i;o++){let a=n[o];try{for(let c=0,u=r.length;c<u;c++)a.add(...r[c]);s=a.match(e,t)}catch(c){if(c instanceof nu)continue;throw c}this.match=a.match.bind(a),this.#e=[a],this.#t=void 0;break}if(o===i)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,s}get activeRouter(){if(this.#t||this.#e.length!==1)throw Error("No active router has been determined yet.");return this.#e[0]}};ui();vr();ui();var mh=Ve(),S4=0,W0=class e{#e=[];#t=Ve();#n=[];#o;#i=mh;insert(t,n,r){let i=this,o=w0(n),s=new Set,a=0;for(let c of o){let u=o[++a],d=D0(c,u)||(u===void 0&&c&&c.indexOf("*")===c.length-1?c:null),f=Array.isArray(d),h=f?d[0]:d||c,p=i.#t[h]||=new e;if(d&&!p.#o)p.#o=d,i.#n.push(p);if(i=p,f)s.add(d[1])}i.#e.push({[t]:{handler:r,possibleKeys:[...s],score:++S4}})}#r(t,n,r,i,o){for(let s=0,a=n.#e.length;s<a;s++){let c=n.#e[s],u=c[r]||c[qe];if(u){u.params=Ve(),t.push(u);for(let d=0,f=u.possibleKeys.length;d<f;d++){let h=u.possibleKeys[d];u.params[h]=o?.[h]&&!d?o[h]:i[h]??o?.[h]}}}}search(t,n){let r=[];this.#i=mh;let o=[this],s=oh(n),a=[],c=s.length,u=null;for(let d=0;d<c;d++){let f=s[d],h=d===c-1,p=[];for(let y=0,v=o.length;y<v;y++){let b=o[y],_=b.#t[f];if(_)if(_.#i=b.#i,h){if(_.#t["*"])this.#r(r,_.#t["*"],t,b.#i);this.#r(r,_,t,b.#i)}else p.push(_);for(let m of b.#n){let x=m.#o,D=b.#i===mh?{}:{...b.#i};if(typeof x==="string"){if(x==="*"||f.startsWith(x.slice(0,-1))){if(this.#r(r,m,t,b.#i),x==="*")m.#i=D,p.push(m)}continue}let[,A,E]=x;if(!f&&E===!0)continue;if(E!==!0){if(!u){u=[];let N=n[0]==="/"?1:0;for(let F=0;F<c;F++)u[F]=N,N+=s[F].length+1}let U=n.slice(u[d]),C=E.exec(U);if(C){if(D[A]=C[0],this.#r(r,m,t,b.#i,D),C[0].length===U.length&&m.#t["*"])this.#r(r,m.#t["*"],t,b.#i,D);for(let N in m.#t){m.#i=D;let F=C[0].match(/\//g)?.length??0;(a[F]||=[]).push(m);break}continue}}if(E===!0||E.test(f))if(D[A]=f,h){if(this.#r(r,m,t,D,b.#i),m.#t["*"])this.#r(r,m.#t["*"],t,D,b.#i)}else m.#i=D,p.push(m)}}let g=a.shift();o=g?p.concat(g):p}if(r[1])r.sort((d,f)=>d.score-f.score);return[r.map(({handler:d,params:f})=>[d,f])]}};var yh=class{name="TrieRouter";#e=new W0;add(e,t,n){for(let r of Qc(t)||[t])this.#e.insert(e,r,n)}match(e,t){return this.#e.search(e,t)}};var bh=class extends I0{constructor(e={}){super(e);this.router=e.router??new gh({routers:[new ou,new yh]})}};import{getAgentDir as Dae}from"@earendil-works/pi-coding-agent";import{isIP as j0}from"node:net";function q0(e){return(e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e).toLowerCase().replace(/\.$/,"")}function $0(e){if(!e||/[\s/@\\]/.test(e))return null;try{let t=new URL(`http://${e}`);if(t.username||t.password||t.pathname!=="/"||t.search||t.hash)return null;return q0(t.hostname)}catch{return null}}function C4(e){let t=e?.trim();if(!t)return null;return j0(t)?q0(t):$0(t)}function A4(e){return e==="localhost"||e.endsWith(".localhost")}function H0(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter((e)=>Boolean(e?.trim()))}function G0(e){try{return new URL(e).origin}catch{return null}}function U4(e){let t=new URL(e.url),n=e.headers.get("host");return n?G0(`${t.protocol}//${n}`):null}function k4(e){if(e.method!=="GET"||e.headers.get("sec-fetch-mode")!=="navigate"||e.headers.get("sec-fetch-dest")!=="document"||e.headers.get("sec-fetch-user")!=="?1")return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(e.url).pathname)}catch{return!1}}function vh(e,t=H0()){let n=e.headers.get("host"),r=n?$0(n):null;if(!r)return!1;if(A4(r)||j0(r))return!0;return t.some((i)=>C4(i)===r)}function R4(e){let t=e.headers.get("origin");if(e.headers.get("sec-fetch-site")==="cross-site")return!1;if(!t)return!0;let r=U4(e);return r!==null&&G0(t)===r}function F4(e){return e.headers.has("origin")||e.headers.has("sec-fetch-site")}function Et(e,t=H0()){if(!vh(e,t))return!1;if(k4(e))return!0;return!F4(e)||R4(e)}function wr(e){let t=e.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||Boolean(t?.startsWith("application/")&&t.endsWith("+json"))}import{createHash as O4,timingSafeEqual as P4}from"node:crypto";var I4="pi";function z0(e){return O4("sha256").update(e,"utf8").digest()}function V0(e,t){return P4(z0(e),z0(t))}function Ns(e=process.env.PI_WEB_PASSWORD){return typeof e==="string"&&e.length>0}function su(e,t=process.env.PI_WEB_PASSWORD){if(!Ns(t)||!e)return!1;let n=/^Basic\s+(\S+)$/i.exec(e);if(!n)return!1;let r;try{let u=Buffer.from(n[1],"base64");if(u.toString("base64")!==n[1])return!1;r=new TextDecoder("utf-8",{fatal:!0}).decode(u)}catch{return!1}let i=r.indexOf(":");if(i===-1)return!1;let o=r.slice(0,i),s=r.slice(i+1),a=V0(o,I4),c=V0(s,t);return a&&c}class xh extends Request{nextUrl;constructor(e){let t=e.method!=="GET"&&e.method!=="HEAD";super(e.url,{method:e.method,headers:e.headers,body:t?e.body:void 0,duplex:t?"half":void 0,signal:e.signal});this.nextUrl=new URL(e.url)}}class w extends Response{static json(e,t){let n=new Headers(t?.headers);return n.set("content-type","application/json; charset=utf-8"),new w(JSON.stringify(e),{status:t?.status??200,statusText:t?.statusText,headers:n})}}var _h=!1,X0=performance.now();function K0(e){if(_h=e,X0=performance.now(),_h)Wt("boot","debug log enabled")}function Lt(e){return(t,n)=>Wt(e,t,n)}function Wt(e,t,n){if(!_h)return;let r=performance.now()-X0,i=new Date,o=(a,c=2)=>String(a).padStart(c,"0"),s=`${o(i.getHours())}:${o(i.getMinutes())}:${o(i.getSeconds())}.${o(i.getMilliseconds(),3)}`;console.debug(`[debug][${e}][${s}][+${r.toFixed(1)}ms] ${t}${n?` — ${n}`:""}`)}var M4=Lt("mount"),N4=["GET","POST","PUT","PATCH","DELETE"];function ee(e,t,n){let r=t.split("/").filter(Boolean),i=[],o=new Map;for(let a of r){let c=a.match(/^\[\.\.\.(.+)\]$/),u=a.match(/^\[(.+)\]$/);if(c)i.push(`:${c[1]}{.+}`),o.set(c[1],{hono:c[1],catchAll:!0});else if(u)i.push(`:${u[1]}`),o.set(u[1],{hono:u[1],catchAll:!1});else i.push(a)}let s=`/${i.join("/")}`;for(let a of N4){let c=n[a];if(typeof c!=="function")continue;let u=c;e.on(a,s,async(d)=>{let f=performance.now(),h={};for(let[g,{hono:y,catchAll:v}]of o)if(v){let b=d.req.param(y)??"";h[g]=b===""?[]:b.split("/")}else h[g]=d.req.param(y)??"";let p=await u(new xh(d.req.raw),{params:Promise.resolve(h)});return M4(`${a} ${d.req.path}`,`${p.status} ${Math.round(performance.now()-f)}ms`),p})}}var Fh={};Q(Fh,{GET:()=>D5});import{tmpdir as _5}from"node:os";import{Readable as w5}from"node:stream";import{constants as wh}from"node:fs";import{lstat as B4,open as L4}from"node:fs/promises";import{basename as W4,dirname as j4,resolve as Z0}from"node:path";var au=5242880;function Y0(e,t){let n=Z0(e);if(j4(n)!==Z0(t))return null;if(!/^pi-bash-[A-Za-z0-9_-]+\.log$/.test(W4(n)))return null;return n}async function Dh(e){if(!(await B4(e)).isFile())throw Error("Bash output path is not a regular file");let n=typeof wh.O_NOFOLLOW==="number"?wh.O_NOFOLLOW:0,r=await L4(e,wh.O_RDONLY|n);try{let i=await r.stat();if(!i.isFile())throw Error("Bash output path is not a regular file");return{handle:r,fileInfo:i}}catch(i){throw await r.close(),i}}async function J0(e,t=au){let{handle:n,fileInfo:r}=await Dh(e);try{if(r.size>t)return{tooLarge:!0,size:r.size};let i=Buffer.alloc(r.size),o=0;while(o<i.length){let s=await n.read(i,o,i.length-o,o);if(s.bytesRead===0)break;o+=s.bytesRead}return{tooLarge:!1,content:i.subarray(0,o).toString("utf8"),size:o}}finally{await n.close()}}import{open as a2,readFile as t5,readdir as n5}from"node:fs/promises";import{existsSync as r5,readdirSync as i5}from"node:fs";import{join as du,normalize as Uh}from"node:path";import{getAgentDir as o5,buildContextEntries as s5,buildSessionContext as a5,SessionManager as c2}from"@earendil-works/pi-coding-agent";function q4(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function $4(e){if(!q4(e)||e.type!=="toolCall")return null;return{type:"toolCall",toolCallId:typeof e.toolCallId==="string"?e.toolCallId:typeof e.id==="string"?e.id:"",toolName:typeof e.toolName==="string"?e.toolName:typeof e.name==="string"?e.name:"",input:typeof e.input==="object"&&e.input!==null&&!Array.isArray(e.input)?e.input:typeof e.arguments==="object"&&e.arguments!==null&&!Array.isArray(e.arguments)?e.arguments:{}}}function Eh(e){if(e.role!=="assistant")return e;let t=e.content;if(!Array.isArray(t))return e;let n=t.map((r)=>$4(r)??r);return{...e,content:n}}import Q0 from"node:path";function jt(e,t=process.platform){let n=t==="win32"?Q0.win32.normalize(e):Q0.posix.normalize(e);return t==="win32"?n.toLowerCase():n}import{execFile as H4}from"node:child_process";import{existsSync as uu,mkdirSync as G4,realpathSync as z4}from"node:fs";import{basename as V4,dirname as Sh,join as t2,resolve as X4}from"node:path";import{promisify as K4}from"node:util";function $e(e){let t=e.replace(/\\/g,"/");return/^[a-zA-Z]:$/.test(t)?`${t}/`:t}function Th(){if(!globalThis.__piAdditionalAllowedRoots)globalThis.__piAdditionalAllowedRoots=new Set;return globalThis.__piAdditionalAllowedRoots}function yt(e){if(!e)return;let t=$e(e);Th().add(t),globalThis.__piAllowedRootsCache?.roots.add(t)}var Z4=K4(H4),e2=60000;function Y4(){if(!globalThis.__piProjectCache)globalThis.__piProjectCache=new Map;return globalThis.__piProjectCache}function n2(){globalThis.__piProjectCache?.clear()}async function li(e,t){let{stdout:n}=await Z4("git",["-C",e,...t],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return n.trim()}function cu(e){let t=e.replace(/\\/g,"/");if(process.platform==="win32")t=t.replace(/^\/([a-zA-Z])\/(?=.)/,(n,r)=>`${r.toUpperCase()}:/`),t=t.toLowerCase();return t}function J4(e){let t=Sh(e);if(!t.endsWith("-worktrees"))return null;let n=t.slice(0,-10);if(!n||!uu(t2(n,".git")))return null;return{projectRoot:n,branch:V4(e),isWorktree:!0,isTopLevel:!0}}async function lu(e){let t=Y4(),n=t.get(e);if(n&&n.expiresAt>Date.now())return n.info;let r;try{if(!uu(e))return r=J4(e)??{projectRoot:e,branch:null,isWorktree:!1,isTopLevel:!1},t.set(e,{info:r,expiresAt:Date.now()+e2}),r;let i=await li(e,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"]),[o,s,a,c]=i.split(`
259
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((r)=>t.is(r)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function h0(e){return e.map((t)=>{if(!t.startsWith("--inspect"))return t;let n,r="127.0.0.1",i="9229",o;if((o=t.match(/^(--inspect(-brk)?)$/))!==null)n=o[1];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(n=o[1],/^\d+$/.test(o[3]))i=o[3];else r=o[3];else if((o=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)n=o[1],r=o[3],i=o[4];if(n&&i!=="0")return`${n}=${r}:${parseInt(i)+1}`;return t})}function p0(){if(pe.env.NO_COLOR||pe.env.FORCE_COLOR==="0"||pe.env.FORCE_COLOR==="false")return!1;if(pe.env.FORCE_COLOR||pe.env.CLICOLOR_FORCE!==void 0)return!0;return}var hle=new to;var Ps={name:"@rainmanhhh/pi-web",version:"0.15.13",description:"Web UI for the pi coding agent (fork of @agegr/pi-web)",homepage:"https://gitee.com/dsxbygzzl/pi-web#readme",repository:{type:"git",url:"git+https://gitee.com/dsxbygzzl/pi-web.git"},bugs:{url:"https://gitee.com/dsxbygzzl/pi-web/issues"},author:"rainmanhhh",license:"MIT",publishConfig:{access:"public",registry:"https://registry.npmjs.org"},engines:{node:">=24.0.0"},files:["dist","public","extensions","package.json"],bin:{"pi-web":"dist/server.mjs"},scripts:{dev:"vite","dev:lan":"vite --host 0.0.0.0",mb:"bun run --env-file=.env.manual api",mf:"bun run --env-file=.env.manual dev -- --port 3001",api:"bun run server/main.ts","api:node":"bun run build:server && node dist/server.mjs","build:server":'bun build server/main.ts --target node --outfile dist/server.mjs --minify --external "@earendil-works/*" --define "process.env.PI_WEB_PACKAGED=1"',"e2e:stop":"bun run scripts/e2e-stop.mjs",build:"vite build && bun run scripts/prune-fonts.mjs","build:analyze":"vite build --config scripts/analyze-bundle.config.ts && bun run scripts/prune-fonts.mjs",lint:"oxlint --fix",jscpd:"jscpd --config .jscpd.json",check:"tsc --noEmit",format:"biome check --write .",prepublishOnly:"bun run check && bun run build && bun run build:server","test:e2e":"playwright test","test:unit":"vitest run",prepare:"husky || true"},dependencies:{"@codemirror/commands":"^6.11.0","@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.12","@codemirror/lang-javascript":"^6.2.5","@codemirror/lang-json":"^6.0.2","@codemirror/lang-markdown":"^6.5.2","@codemirror/lang-yaml":"^6.1.3","@codemirror/language":"^6.12.4","@codemirror/state":"^6.7.1","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.43.9","@earendil-works/pi-agent-core":"0.84.4","@earendil-works/pi-ai":"0.84.4","@earendil-works/pi-coding-agent":"0.84.4","@earendil-works/pi-tui":"0.84.4","@hono/node-server":"^2.1.1","class-variance-authority":"^0.7.1",clsx:"^2.1.1",codemirror:"^6.0.2",hono:"^4.13.5","lucide-react":"^1.37.0","p-defer":"^4.0.1",pointrix:"^1.1.0","proper-lockfile":"4.1.2","radix-ui":"^1.6.7",react:"^19.2.8","react-dom":"^19.2.8",shadcn:"^4.19.0",streamdown:"2.6.0","tailwind-merge":"^3.6.0","tw-animate-css":"^1.4.0",undici:"8.10.0",virtua:"^0.50.6",ws:"^8.21.3"},devDependencies:{"@lobehub/icons":"^5.16.0","@playwright/test":"^1.62.1","@tailwindcss/postcss":"^4.3.3","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.3","@types/node":"^25.9.5","@types/ws":"^8.18.1","@types/proper-lockfile":"4.1.4","@types/react":"^19.2.18","@types/react-dom":"^19.2.5","@types/react-resizable":"^4.0.0","@types/react-syntax-highlighter":"^15.5.13","@vitejs/plugin-react":"^6.1.1",biome:"^0.3.3",commander:"^15.0.0",husky:"^9.1.7",jiti:"^2.7.0",jscpd:"^5.1.0",jsdom:"^30.0.1",katex:"^0.18.4","lint-staged":"^17.4.1",mammoth:"^1.12.2",mermaid:"^11.17.2",oxlint:"^1.80.0",postcss:"^8.5.26","react-markdown":"^10.1.0","react-syntax-highlighter":"^16.1.1","rehype-katex":"^7.0.1","rehype-raw":"^7.0.0","rehype-sanitize":"^6.0.0","remark-gfm":"^4.0.1","remark-math":"^6.0.0",tailwindcss:"^4.3.3",typescript:"^7.0.2",vite:"^8.2.2","vite-plugin-remove-console":"^2.2.0","vite-plugin-svgr":"^5.2.0",vitest:"^4.1.11"},type:"module",overrides:{katex:"^0.18.4"}};import{getAgentDir as cI}from"@earendil-works/pi-coding-agent";var g0={port:31415};var rh=(e,t,n)=>(r,i)=>{let o=-1;return s(0);async function s(a){if(a<=o)throw Error("next() called multiple times");o=a;let c,u=!1,d;if(e[a])d=e[a][0][0],r.req.routeIndex=a;else d=a===e.length&&i||void 0;if(d)try{c=await d(r,()=>s(a+1))}catch(f){if(f instanceof Error&&t)r.error=f,c=await t(f,r),u=!0;else throw f}else if(r.finalized===!1&&n)c=await n(r);if(c&&(r.finalized===!1||u))r.res=c;return r}};var m0=Symbol();var y0=(e,t)=>new Response(e,{headers:{"Content-Type":t.replace(/^[^;]+/,(r)=>r.toLowerCase())}}).formData();var b0=32,m4=1e4,Yc=(e)=>("headers"in e),_0=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,s=(Yc(e)?e.headers:e.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();if(s==="multipart/form-data"||s==="application/x-www-form-urlencoded")return y4(e,{all:n,dot:r});return{}};async function y4(e,t){if(!Yc(e)&&e.bodyCache.formData)return v0(await e.bodyCache.formData,t);let n=Yc(e)?e.headers:e.raw.headers,r=await e.arrayBuffer(),i=y0(r,n.get("Content-Type")||"");if(!Yc(e))e.bodyCache.formData=i;let o=await i;if(o)return v0(o,t);return{}}function v0(e,t){let n=Object.create(null),r={count:0};if(e.forEach((i,o)=>{if(!(t.all||o.endsWith("[]")))n[o]=i;else b4(n,o,i)}),t.dot)Object.entries(n).forEach(([i,o])=>{if(i.includes("."))v4(n,i,o,r),delete n[i]});return n}var b4=(e,t,n)=>{if(e[t]!==void 0)if(Array.isArray(e[t]))e[t].push(n);else e[t]=[e[t],n];else if(!t.endsWith("[]"))e[t]=n;else e[t]=[n]},v4=(e,t,n,r)=>{if(/(?:^|\.)__proto__\./.test(t))return;let i=e,o=t.split(".",b0+2);if(o.length>b0+1)x0();o.forEach((s,a)=>{if(a===o.length-1)i[s]=n;else{if(!i[s]||typeof i[s]!=="object"||Array.isArray(i[s])||i[s]instanceof File){if(r.count++>=m4)x0();i[s]=Object.create(null)}i=i[s]}})},x0=()=>{throw Error("Nesting limit exceeded")};ui();var U0=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(e,t="/",n=[[]]){this.raw=e,this.path=t,this.#t=n}param(e){return e?this.#n(e):this.#o()}#n(e){let t=this.#t[0][this.routeIndex]?.[1][e],n=this.#i(t);return n&&eu(n)}#o(){let e={},t=Object.keys(this.#t[0][this.routeIndex]?.[1]??{});for(let n of t){let r=this.#i(this.#t[0][this.routeIndex][1][n]);if(r!==void 0)e[n]=eu(r)}return e}#i(e){return this.#t[1]?this.#t[1][e]:e}query(e){return C0(this.url,e)}queries(e){return A0(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t=Object.create(null);return this.raw.headers.forEach((n,r)=>{t[r]=n}),t}async parseBody(e){return _0(this,e)}#r=(e)=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;for(let i in t)return t[i].then((o)=>{if(i==="json")o=JSON.stringify(o);return new Response(o)[e]()});return t[e]=n[e]()};json(){return this.#r("text").then((e)=>JSON.parse(e))}text(){return this.#r("text")}arrayBuffer(){return this.#r("arrayBuffer")}bytes(){return this.#r("arrayBuffer").then((e)=>new Uint8Array(e))}blob(){return this.#r("blob")}formData(){return this.#r("formData")}addValidatedData(e,t){(this.#e??={})[e]=t}valid(e){return this.#e?.[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[m0](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,e]])=>e)}get routePath(){return this.#t[0].map(([[,e]])=>e)[this.routeIndex].path}};uh();var D4="text/plain; charset=UTF-8",lh=(e,t)=>({"Content-Type":e,...t}),Is=(e,t)=>new Response(e,t),dh=class{#e;#t;env={};#n;finalized=!1;error;#o;#i;#r;#c;#s;#a;#l;#d;#f;constructor(e,t){if(this.#e=e,t)this.#i=t.executionCtx,this.env=t.env,this.#a=t.notFoundHandler,this.#f=t.path,this.#d=t.matchResult}get req(){return this.#t??=new U0(this.#e,this.#f,this.#d),this.#t}get event(){if(this.#i&&"respondWith"in this.#i)return this.#i;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#i)return this.#i;else throw Error("This context has no ExecutionContext")}get res(){return this.#r||=Is(null,{headers:this.#l??=new Headers})}set res(e){if(this.#r&&e){e=Is(e.body,e);for(let[t,n]of this.#r.headers.entries()){if(t==="content-type")continue;if(t==="set-cookie"){let r=this.#r.headers.getSetCookie();e.headers.delete("set-cookie");for(let i of r)e.headers.append("set-cookie",i)}else e.headers.set(t,n)}}this.#r=e,this.finalized=!0}render=(...e)=>(this.#s??=(t)=>this.html(t),this.#s(...e));setLayout=(e)=>this.#c=e;getLayout=()=>this.#c;setRenderer=(e)=>{this.#s=e};header=(e,t,n)=>{if(this.finalized)this.#r=Is(this.#r.body,this.#r);let r=this.#r?this.#r.headers:this.#l??=new Headers;if(t===void 0)r.delete(e);else if(n?.append)r.append(e,t);else r.set(e,t)};status=(e)=>{this.#o=e};set=(e,t)=>{this.#n??=new Map,this.#n.set(e,t)};get=(e)=>this.#n?this.#n.get(e):void 0;get var(){if(!this.#n)return{};return Object.fromEntries(this.#n)}#u(e,t,n){let r=this.#r?new Headers(this.#r.headers):this.#l;if(typeof t==="object"&&t.headers){r??=new Headers;for(let[o,s]of new Headers(t.headers))if(o==="set-cookie")r.append(o,s);else r.set(o,s)}if(n){if(!r){let o=0;for(let s in n)if(++o>1||typeof n[s]!=="string"){r=new Headers;break}}if(r)for(let o in n){let s=n[o];if(typeof s==="string")r.set(o,s);else{r.delete(o);for(let a of s)r.append(o,a)}}}let i=typeof t==="number"?t:t?.status??this.#o;return Is(e,{status:i,headers:r??n})}newResponse=(...e)=>this.#u(...e);body=(e,t,n)=>this.#u(e,t,n);text=(e,t,n)=>!this.#l&&!this.#o&&!t&&!n&&!this.finalized?new Response(e):this.#u(e,t,lh(D4,n));json=(e,t,n)=>this.#u(JSON.stringify(e),t,lh("application/json",n));html=(e,t,n)=>{let r=(i)=>this.#u(i,t,lh("text/html; charset=UTF-8",n));return typeof e==="object"?ch(e,k0.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header("Location",!/[^\x00-\xFF]/.test(n)?n:encodeURI(n)),this.newResponse(null,t??302)};notFound=()=>(this.#a??=()=>Is(),this.#a(this))};vr();fh();ui();var E4=(e)=>e.text("404 Not Found",404),P0=(e,t)=>{if("getResponse"in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text("Internal Server Error",500)},I0=class e{get;post;put;delete;options;patch;query;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(t={}){[...O0,F0].forEach((o)=>{this[o]=(s,...a)=>{if(typeof s==="string")this.#e=s;else this.#o(o,this.#e,s);return a.forEach((c)=>{this.#o(o,this.#e,c)}),this}}),this.on=(o,s,...a)=>{for(let c of[s].flat()){this.#e=c;for(let u of[o].flat())a.map((d)=>{this.#o(u.toUpperCase(),this.#e,d)})}return this},this.use=(o,...s)=>{if(typeof o==="string")this.#e=o;else this.#e="*",s.unshift(o);return s.forEach((a)=>{this.#o(qe,this.#e,a)}),this};let{strict:r,...i}=t;Object.assign(this,i),this.getPath=r??!0?t.getPath??ah:T0}#t(){let t=new e({router:this.router,getPath:this.getPath});return t.errorHandler=this.errorHandler,t.#n=this.#n,t.routes=this.routes,t}#n=E4;errorHandler=P0;route(t,n){let r=this.basePath(t);return n.routes.map((i)=>{let o;if(n.errorHandler===P0)o=i.handler;else o=async(s,a)=>(await rh([],n.errorHandler)(s,()=>i.handler(s,a))).res,o[Ms]=i.handler;r.#o(i.method,i.path,o,i.basePath)}),this}basePath(t){let n=this.#t();return n._basePath=br(this._basePath,t),n}onError=(t)=>(this.errorHandler=t,this);notFound=(t)=>(this.#n=t,this);mount(t,n,r){let i,o;if(r)if(typeof r==="function")o=r;else if(o=r.optionHandler,r.replaceRequest===!1)i=(c)=>c;else i=r.replaceRequest;let s=o?(c)=>{let u=o(c);return Array.isArray(u)?u:[u]}:(c)=>{let u=void 0;try{u=c.executionCtx}catch{}return[c.env,u]};i||=(()=>{let c=br(this._basePath,t),u=c==="/"?0:c.length;return(d)=>{let f=new URL(d.url);return f.pathname=this.getPath(d).slice(u)||"/",new Request(f,d)}})();let a=async(c,u)=>{let d=await n(i(c.req.raw),...s(c));if(d)return d;await u()};return this.#o(qe,br(t,"*"),a),this}#o(t,n,r,i){t=t.toUpperCase(),n=br(this._basePath,n);let o={basePath:i!==void 0?br(this._basePath,i):this._basePath,path:n,method:t,handler:r};this.router.add(t,n,[r,o]),this.routes.push(o)}#i(t,n){if(t instanceof Error)return this.errorHandler(t,n);throw t}#r(t,n,r,i){if(i==="HEAD")return(async()=>new Response(null,await this.#r(t,n,r,"GET")))();let o=this.getPath(t,{env:r}),s=this.router.match(i,o),a=new dh(t,{path:o,matchResult:s,env:r,executionCtx:n,notFoundHandler:this.#n});if(s[0].length===1){let u;try{u=s[0][0][0][0](a,async()=>{a.res=await this.#n(a)})}catch(d){return this.#i(d,a)}return u instanceof Promise?u.then((d)=>d||(a.finalized?a.res:this.#n(a))).catch((d)=>this.#i(d,a)):u??this.#n(a)}let c=rh(s[0],this.errorHandler,this.#n);return(async()=>{try{let u=await c(a);if(!u.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return u.res}catch(u){return this.#i(u,a)}})()}fetch=(t,...n)=>this.#r(t,n[1],n[0],t.method);request=(t,n,r,i)=>{if(t instanceof Request)return this.fetch(n?new Request(t,n):t,r,i);return t=t.toString(),this.fetch(new Request(/^https?:\/\//.test(t)?t:`http://localhost${br("/",t)}`,n),r,i)};fire=()=>{addEventListener("fetch",(t)=>{t.respondWith(this.#r(t.request,t,void 0,t.request.method))})}};vr();ui();var Ve=()=>Object.create(null);vr();var ru=[];function hh(e,t){let n=this.buildAllMatchers(),r=(i,o)=>{let s=n[i]||n[qe],a=s[2][o];if(a)return a;let c=o.match(s[0]);if(!c)return[[],ru];let u=c.indexOf("",1);return[s[1][u],c]};return this.match=r,r(e,t)}var no="[^/]+",_r=".*",Gn="(?:|/.*)",xr=Symbol(),M0=new Set(".\\+*[^]$()");function T4(e,t){if(e.length===1)return t.length===1?e<t?-1:1:-1;if(t.length===1)return 1;if(e===_r||e===Gn)return t===Gn?-1:1;else if(t===_r||t===Gn)return-1;if(e===no)return 1;else if(t===no)return-1;return e.length===t.length?e<t?-1:1:t.length-e.length}var N0=class e{#e;#t;#n=Ve();insert(t,n,r,i,o){let s=this;for(let a=0,c=t.length;a<c;a++){let u=t[a],d=u.length===1?u==="*"?a===c-1?["","",_r]:["","",no]:null:u==="/*"?["","",Gn]:u.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),f;if(d){let h=d[1],p=d[2]||no;if(h&&d[2]){if(p===".*")throw xr;if(p=p.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(p))throw xr;if(p.length===1&&M0.has(p))throw xr}if(f=s.#n[p],!f){if(p!==_r&&p!==Gn){for(let g in s.#n)if((p.length>1||g.length>1)&&g!==_r&&g!==Gn)throw xr}f=s.#n[p]=new e}if(h!=="")f.#t??=i.varIndex++,r.push([h,f.#t])}else if(f=s.#n[u],!f){for(let h in s.#n)if(h.length>1&&h!==_r&&h!==Gn)throw xr;f=s.#n[u]=new e}s=f}if(s.#e!==void 0)throw xr;s.#e=o?-1:n}buildRegExpStr(){let n=Object.keys(this.#n).sort(T4).map((r)=>{let i=this.#n[r],o=i.buildRegExpStr();return o===""?"":(typeof i.#t==="number"?`(${r})@${i.#t}`:M0.has(r)?`\\${r}`:r)+o}).filter(Boolean);if(typeof this.#e==="number"&&this.#e!==-1)n.unshift(`#${this.#e}`);if(n.length===0)return"";if(n.length===1)return n[0];return"(?:"+n.join("|")+")"}};var ph=class{#e={varIndex:0};#t=new N0;#n=0;paths=Ve();insert(e,t){if(t){this.#t.insert(e.split(""),0,[],this.#e,!0);return}let n=[],r=[],i=e;for(let s=0;;){let a=!1;if(i=i.replace(/\{[^}]+\}/g,(c)=>{let u=`@\\${s}`;return r[s]=[u,c],s++,a=!0,u}),!a)break}let o=i.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let s=r.length-1;s>=0;s--){let[a]=r[s];for(let c=o.length-1;c>=0;c--)if(o[c].indexOf(a)!==-1){o[c]=o[c].replace(a,r[s][1]);break}}this.#t.insert(o,this.#n,n,this.#e,!1),this.paths[e]=[this.#n++,n]}buildRegExp(){let e=this.#t.buildRegExpStr();if(e==="")return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(i,o,s)=>{if(o!==void 0)return n[++t]=Number(o),"$()";if(s!==void 0)return r[Number(s)]=++t,"";return""}),[new RegExp(`^${e}`),n,r]}};var B0=Ve();function L0(e){return B0[e]??=new RegExp(`^${e.replace(/\/:[^/{}]+(?:\{\[\^\/]\+})?(?=[/{]|$)|\/?\*$|([.\\+*[^\]$()?{}|])/g,(t,n)=>n?`\\${n}`:t==="/*"?Gn:t==="*"?_r:`/:${no}`)}$`)}function iu(e,t){for(let n of Object.keys(e).sort((r,i)=>i.length-r.length))if(L0(n).test(t))return[...e[n]];return}var ou=class{name="RegExpRouter";#e;#t;#n;constructor(){this.#e={[qe]:Ve()},this.#t={[qe]:Ve()},this.#n={[qe]:new ph}}#o(e,t){try{this.#n[e].insert(t,!/\*|\/:/.test(t))}catch(n){throw n===xr?new nu(t):n}}add(e,t,n){let r=this.#e,i=this.#t;if(!r)throw Error(tu);if(!r[e]){this.#n[e]=new ph;for(let a of[r,i]){a[e]=Ve();for(let c in a[qe])a[e][c]=[...a[qe][c]],this.#o(e,c)}}if(t==="/*")t="*";let o=e===qe?Object.keys(r):[e];if(/\*$/.test(t)){let a=L0(t);for(let c of o)if(!r[c][t])this.#o(c,t),r[c][t]=iu(r[c],t)||iu(r[qe],t)||[];for(let c of[r,i])for(let u of o)for(let d in c[u])a.test(d)&&c[u][d].push([n,t]);return}let s=Qc(t)||[t];for(let a of s)for(let c of o){if(!i[c][a])this.#o(c,a),i[c][a]=iu(r[c],a)||iu(r[qe],a)||[];i[c][a].push([n,a])}}match=hh;buildAllMatchers(){let e=Ve();for(let t of Object.keys(this.#t))e[t]=this.#i(t);return this.#e=this.#t=this.#n=void 0,B0=Ve(),e}#i(e){let t=this.#e[e],n=this.#t[e],r=this.#n[e],i=Ve(),o=[],[s,a,c]=r.buildRegExp();for(let u of[t,n])for(let d in u){let f=u[d],h=r.paths[d];if(!h){i[d]=[f.map(([p])=>[p,Ve()]),ru];continue}o[h[0]]=f.map(([p,g])=>[p,r.paths[g][1].reduceRight((y,[v],b)=>(y[v]=c[h[1][b][1]],y),Ve())])}return[s,a.map((u)=>o[u]),i]}};vr();vr();var gh=class{name="SmartRouter";#e=[];#t=[];constructor(e){this.#e=e.routers}add(e,t,n){if(!this.#t)throw Error(tu);this.#t.push([e,t,n])}match(e,t){if(!this.#t)throw Error("Fatal error");let n=this.#e,r=this.#t,i=n.length,o=0,s;for(;o<i;o++){let a=n[o];try{for(let c=0,u=r.length;c<u;c++)a.add(...r[c]);s=a.match(e,t)}catch(c){if(c instanceof nu)continue;throw c}this.match=a.match.bind(a),this.#e=[a],this.#t=void 0;break}if(o===i)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,s}get activeRouter(){if(this.#t||this.#e.length!==1)throw Error("No active router has been determined yet.");return this.#e[0]}};ui();vr();ui();var mh=Ve(),S4=0,W0=class e{#e=[];#t=Ve();#n=[];#o;#i=mh;insert(t,n,r){let i=this,o=w0(n),s=new Set,a=0;for(let c of o){let u=o[++a],d=D0(c,u)||(u===void 0&&c&&c.indexOf("*")===c.length-1?c:null),f=Array.isArray(d),h=f?d[0]:d||c,p=i.#t[h]||=new e;if(d&&!p.#o)p.#o=d,i.#n.push(p);if(i=p,f)s.add(d[1])}i.#e.push({[t]:{handler:r,possibleKeys:[...s],score:++S4}})}#r(t,n,r,i,o){for(let s=0,a=n.#e.length;s<a;s++){let c=n.#e[s],u=c[r]||c[qe];if(u){u.params=Ve(),t.push(u);for(let d=0,f=u.possibleKeys.length;d<f;d++){let h=u.possibleKeys[d];u.params[h]=o?.[h]&&!d?o[h]:i[h]??o?.[h]}}}}search(t,n){let r=[];this.#i=mh;let o=[this],s=oh(n),a=[],c=s.length,u=null;for(let d=0;d<c;d++){let f=s[d],h=d===c-1,p=[];for(let y=0,v=o.length;y<v;y++){let b=o[y],_=b.#t[f];if(_)if(_.#i=b.#i,h){if(_.#t["*"])this.#r(r,_.#t["*"],t,b.#i);this.#r(r,_,t,b.#i)}else p.push(_);for(let m of b.#n){let x=m.#o,D=b.#i===mh?{}:{...b.#i};if(typeof x==="string"){if(x==="*"||f.startsWith(x.slice(0,-1))){if(this.#r(r,m,t,b.#i),x==="*")m.#i=D,p.push(m)}continue}let[,A,E]=x;if(!f&&E===!0)continue;if(E!==!0){if(!u){u=[];let N=n[0]==="/"?1:0;for(let F=0;F<c;F++)u[F]=N,N+=s[F].length+1}let U=n.slice(u[d]),C=E.exec(U);if(C){if(D[A]=C[0],this.#r(r,m,t,b.#i,D),C[0].length===U.length&&m.#t["*"])this.#r(r,m.#t["*"],t,b.#i,D);for(let N in m.#t){m.#i=D;let F=C[0].match(/\//g)?.length??0;(a[F]||=[]).push(m);break}continue}}if(E===!0||E.test(f))if(D[A]=f,h){if(this.#r(r,m,t,D,b.#i),m.#t["*"])this.#r(r,m.#t["*"],t,D,b.#i)}else m.#i=D,p.push(m)}}let g=a.shift();o=g?p.concat(g):p}if(r[1])r.sort((d,f)=>d.score-f.score);return[r.map(({handler:d,params:f})=>[d,f])]}};var yh=class{name="TrieRouter";#e=new W0;add(e,t,n){for(let r of Qc(t)||[t])this.#e.insert(e,r,n)}match(e,t){return this.#e.search(e,t)}};var bh=class extends I0{constructor(e={}){super(e);this.router=e.router??new gh({routers:[new ou,new yh]})}};import{getAgentDir as Dae}from"@earendil-works/pi-coding-agent";import{isIP as j0}from"node:net";function q0(e){return(e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e).toLowerCase().replace(/\.$/,"")}function $0(e){if(!e||/[\s/@\\]/.test(e))return null;try{let t=new URL(`http://${e}`);if(t.username||t.password||t.pathname!=="/"||t.search||t.hash)return null;return q0(t.hostname)}catch{return null}}function C4(e){let t=e?.trim();if(!t)return null;return j0(t)?q0(t):$0(t)}function A4(e){return e==="localhost"||e.endsWith(".localhost")}function H0(){return[process.env.PI_WEB_HOSTNAME,...process.env.PI_WEB_ALLOWED_HOSTS?.split(",")??[]].filter((e)=>Boolean(e?.trim()))}function G0(e){try{return new URL(e).origin}catch{return null}}function U4(e){let t=new URL(e.url),n=e.headers.get("host");return n?G0(`${t.protocol}//${n}`):null}function k4(e){if(e.method!=="GET"||e.headers.get("sec-fetch-mode")!=="navigate"||e.headers.get("sec-fetch-dest")!=="document"||e.headers.get("sec-fetch-user")!=="?1")return!1;try{return/^\/api\/sessions\/[^/]+\/export$/.test(new URL(e.url).pathname)}catch{return!1}}function vh(e,t=H0()){let n=e.headers.get("host"),r=n?$0(n):null;if(!r)return!1;if(A4(r)||j0(r))return!0;return t.some((i)=>C4(i)===r)}function R4(e){let t=e.headers.get("origin");if(e.headers.get("sec-fetch-site")==="cross-site")return!1;if(!t)return!0;let r=U4(e);return r!==null&&G0(t)===r}function F4(e){return e.headers.has("origin")||e.headers.has("sec-fetch-site")}function Et(e,t=H0()){if(!vh(e,t))return!1;if(k4(e))return!0;return!F4(e)||R4(e)}function wr(e){let t=e.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase();return t==="application/json"||Boolean(t?.startsWith("application/")&&t.endsWith("+json"))}import{createHash as O4,timingSafeEqual as P4}from"node:crypto";var I4="pi";function z0(e){return O4("sha256").update(e,"utf8").digest()}function V0(e,t){return P4(z0(e),z0(t))}function Ns(e=process.env.PI_WEB_PASSWORD){return typeof e==="string"&&e.length>0}function su(e,t=process.env.PI_WEB_PASSWORD){if(!Ns(t)||!e)return!1;let n=/^Basic\s+(\S+)$/i.exec(e);if(!n)return!1;let r;try{let u=Buffer.from(n[1],"base64");if(u.toString("base64")!==n[1])return!1;r=new TextDecoder("utf-8",{fatal:!0}).decode(u)}catch{return!1}let i=r.indexOf(":");if(i===-1)return!1;let o=r.slice(0,i),s=r.slice(i+1),a=V0(o,I4),c=V0(s,t);return a&&c}class xh extends Request{nextUrl;constructor(e){let t=e.method!=="GET"&&e.method!=="HEAD";super(e.url,{method:e.method,headers:e.headers,body:t?e.body:void 0,duplex:t?"half":void 0,signal:e.signal});this.nextUrl=new URL(e.url)}}class w extends Response{static json(e,t){let n=new Headers(t?.headers);return n.set("content-type","application/json; charset=utf-8"),new w(JSON.stringify(e),{status:t?.status??200,statusText:t?.statusText,headers:n})}}var _h=!1,X0=performance.now();function K0(e){if(_h=e,X0=performance.now(),_h)Wt("boot","debug log enabled")}function Lt(e){return(t,n)=>Wt(e,t,n)}function Wt(e,t,n){if(!_h)return;let r=performance.now()-X0,i=new Date,o=(a,c=2)=>String(a).padStart(c,"0"),s=`${o(i.getHours())}:${o(i.getMinutes())}:${o(i.getSeconds())}.${o(i.getMilliseconds(),3)}`;console.debug(`[debug][${e}][${s}][+${r.toFixed(1)}ms] ${t}${n?` — ${n}`:""}`)}var M4=Lt("mount"),N4=["GET","POST","PUT","PATCH","DELETE"];function ee(e,t,n){let r=t.split("/").filter(Boolean),i=[],o=new Map;for(let a of r){let c=a.match(/^\[\.\.\.(.+)\]$/),u=a.match(/^\[(.+)\]$/);if(c)i.push(`:${c[1]}{.+}`),o.set(c[1],{hono:c[1],catchAll:!0});else if(u)i.push(`:${u[1]}`),o.set(u[1],{hono:u[1],catchAll:!1});else i.push(a)}let s=`/${i.join("/")}`;for(let a of N4){let c=n[a];if(typeof c!=="function")continue;let u=c;e.on(a,s,async(d)=>{let f=performance.now(),h={};for(let[g,{hono:y,catchAll:v}]of o)if(v){let b=d.req.param(y)??"";h[g]=b===""?[]:b.split("/")}else h[g]=d.req.param(y)??"";let p=await u(new xh(d.req.raw),{params:Promise.resolve(h)});return M4(`${a} ${d.req.path}`,`${p.status} ${Math.round(performance.now()-f)}ms`),p})}}var Fh={};Q(Fh,{GET:()=>D5});import{tmpdir as _5}from"node:os";import{Readable as w5}from"node:stream";import{constants as wh}from"node:fs";import{lstat as B4,open as L4}from"node:fs/promises";import{basename as W4,dirname as j4,resolve as Z0}from"node:path";var au=5242880;function Y0(e,t){let n=Z0(e);if(j4(n)!==Z0(t))return null;if(!/^pi-bash-[A-Za-z0-9_-]+\.log$/.test(W4(n)))return null;return n}async function Dh(e){if(!(await B4(e)).isFile())throw Error("Bash output path is not a regular file");let n=typeof wh.O_NOFOLLOW==="number"?wh.O_NOFOLLOW:0,r=await L4(e,wh.O_RDONLY|n);try{let i=await r.stat();if(!i.isFile())throw Error("Bash output path is not a regular file");return{handle:r,fileInfo:i}}catch(i){throw await r.close(),i}}async function J0(e,t=au){let{handle:n,fileInfo:r}=await Dh(e);try{if(r.size>t)return{tooLarge:!0,size:r.size};let i=Buffer.alloc(r.size),o=0;while(o<i.length){let s=await n.read(i,o,i.length-o,o);if(s.bytesRead===0)break;o+=s.bytesRead}return{tooLarge:!1,content:i.subarray(0,o).toString("utf8"),size:o}}finally{await n.close()}}import{open as a2,readFile as t5,readdir as n5}from"node:fs/promises";import{existsSync as r5,readdirSync as i5}from"node:fs";import{join as du,normalize as Uh}from"node:path";import{getAgentDir as o5,buildContextEntries as s5,buildSessionContext as a5,SessionManager as c2}from"@earendil-works/pi-coding-agent";function q4(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function $4(e){if(!q4(e)||e.type!=="toolCall")return null;return{type:"toolCall",toolCallId:typeof e.toolCallId==="string"?e.toolCallId:typeof e.id==="string"?e.id:"",toolName:typeof e.toolName==="string"?e.toolName:typeof e.name==="string"?e.name:"",input:typeof e.input==="object"&&e.input!==null&&!Array.isArray(e.input)?e.input:typeof e.arguments==="object"&&e.arguments!==null&&!Array.isArray(e.arguments)?e.arguments:{}}}function Eh(e){if(e.role!=="assistant")return e;let t=e.content;if(!Array.isArray(t))return e;let n=t.map((r)=>$4(r)??r);return{...e,content:n}}import Q0 from"node:path";function jt(e,t=process.platform){let n=t==="win32"?Q0.win32.normalize(e):Q0.posix.normalize(e);return t==="win32"?n.toLowerCase():n}import{execFile as H4}from"node:child_process";import{existsSync as uu,mkdirSync as G4,realpathSync as z4}from"node:fs";import{basename as V4,dirname as Sh,join as t2,resolve as X4}from"node:path";import{promisify as K4}from"node:util";function $e(e){let t=e.replace(/\\/g,"/");return/^[a-zA-Z]:$/.test(t)?`${t}/`:t}function Th(){if(!globalThis.__piAdditionalAllowedRoots)globalThis.__piAdditionalAllowedRoots=new Set;return globalThis.__piAdditionalAllowedRoots}function yt(e){if(!e)return;let t=$e(e);Th().add(t),globalThis.__piAllowedRootsCache?.roots.add(t)}var Z4=K4(H4),e2=60000;function Y4(){if(!globalThis.__piProjectCache)globalThis.__piProjectCache=new Map;return globalThis.__piProjectCache}function n2(){globalThis.__piProjectCache?.clear()}async function li(e,t){let{stdout:n}=await Z4("git",["-C",e,...t],{timeout:1e4,maxBuffer:1048576,env:{...process.env,LC_ALL:"C"}});return n.trim()}function cu(e){let t=e.replace(/\\/g,"/");if(process.platform==="win32")t=t.replace(/^\/([a-zA-Z])\/(?=.)/,(n,r)=>`${r.toUpperCase()}:/`),t=t.toLowerCase();return t}function J4(e){let t=Sh(e);if(!t.endsWith("-worktrees"))return null;let n=t.slice(0,-10);if(!n||!uu(t2(n,".git")))return null;return{projectRoot:n,branch:V4(e),isWorktree:!0,isTopLevel:!0}}async function lu(e){let t=Y4(),n=t.get(e);if(n&&n.expiresAt>Date.now())return n.info;let r;try{if(!uu(e))return r=J4(e)??{projectRoot:e,branch:null,isWorktree:!1,isTopLevel:!1},t.set(e,{info:r,expiresAt:Date.now()+e2}),r;let i=await li(e,["rev-parse","--path-format=absolute","--git-common-dir","--git-dir","--show-toplevel","--abbrev-ref","HEAD"]),[o,s,a,c]=i.split(`
260
260
  `).map((h)=>h.trim()),u=e;try{u=z4(e)}catch{}let d=cu(a)===cu(u),f=s!==o&&d;r={projectRoot:f?Sh(o):e,branch:c&&c!=="HEAD"?c:null,isWorktree:f,isTopLevel:d}}catch{r={projectRoot:e,branch:null,isWorktree:!1,isTopLevel:!1}}return t.set(e,{info:r,expiresAt:Date.now()+e2}),r}async function Q4(e){let t=await li(e,["rev-parse","--path-format=absolute","--git-common-dir"]);return Sh(t)}async function Ch(e){let t=await li(e,["worktree","list","--porcelain"]),n=[],r=null,i=()=>{if(r?.path){if(!r.prunable&&uu(r.path))n.push({path:r.path,branch:r.branch??null,isMain:n.length===0})}r=null};for(let o of t.split(`
261
261
  `))if(o.startsWith("worktree "))i(),r={path:o.slice(9).trim()};else if(o.startsWith("branch ")&&r)r.branch=o.slice(7).trim().replace(/^refs\/heads\//,"");else if(o.startsWith("prunable")&&r)r.prunable=!0;else if(o.trim()==="")i();return i(),n}function e5(e){return e.replace(/[/\\:*?"<>|\s]+/g,"-").replace(/^-+|-+$/g,"")}async function r2(e,t){let n=t.trim();if(!n)throw Error("Branch name is required");let r=e5(n);if(!r)throw Error(`Invalid branch name: ${t}`);let i=await Q4(e),o=`${X4(i)}-worktrees`,s=t2(o,r);if(uu(s))throw Error(`Directory already exists: ${s}`);G4(o,{recursive:!0});let a=!1;try{await li(i,["rev-parse","--verify","--quiet",`refs/heads/${n}`]),a=!0}catch{a=!1}try{if(a)await li(i,["worktree","add","--",s,n]);else await li(i,["worktree","add","-b",n,"--",s])}catch(c){throw Error(o2(c),{cause:c})}return yt(s),n2(),{path:s,branch:n}}async function i2(e,t,n=!1){let i=(await Ch(e)).find((o)=>cu(o.path)===cu(t));if(!i)throw Error(`Not a worktree of this repository: ${t}`);if(i.isMain)throw Error("Cannot remove the main worktree");try{await li(e,["worktree","remove",...n?["--force"]:[],t])}catch(o){throw Error(o2(o),{cause:o})}n2()}function o2(e){let t=e.stderr;if(typeof t==="string"&&t.trim())return t.trim();return e instanceof Error?e.message:String(e)}async function c5(e,t){let n=new Map;for(let o of e)n.set(jt(o.path),o.id);let r=[...new Set(e.map((o)=>o.cwd).filter(Boolean))],i=new Map;return await Promise.all(r.map(async(o)=>{i.set(o,await lu(o))})),e.map((o)=>{Dr(o.id,o.path,t);let s=o.cwd?i.get(o.cwd):void 0;return{path:o.path,id:o.id,cwd:o.cwd,name:o.name,created:o.created instanceof Date?o.created.toISOString():String(o.created),modified:o.modified instanceof Date?o.modified.toISOString():String(o.modified),messageCount:o.messageCount,firstMessage:o.firstMessage||"(no messages)",parentSessionId:o.parentSessionPath?n.get(jt(o.parentSessionPath)):void 0,projectRoot:s?.projectRoot??o.cwd,...s?.isWorktree&&s.branch?{worktreeBranch:s.branch}:{}}})}async function u5(){let e=await u2(du(o5(),"sessions"));for(let t of e)Dr(t.id,t.path);return e}async function l5(e){let t=[],n=async(r)=>{let i;try{i=await n5(r,{withFileTypes:!0})}catch{return}for(let o of i){let s=du(r,o.name);if(o.isDirectory())await n(s);else if(o.name.endsWith(".jsonl"))t.push(s)}};try{await n(e)}catch{}return t}function d5(e){if(!Array.isArray(e.content))return"";return e.content.filter((t)=>!!t&&typeof t==="object"&&t.type==="text"&&typeof t.text==="string").map((t)=>t.text).join(" ")}async function f5(e){let t=await t5(e,"utf8"),n=[];for(let u of t.split(`
262
262
  `)){let d=u.trim();if(!d)continue;try{let f=JSON.parse(d);if(f&&typeof f==="object")n.push(f)}catch{}}if(n.length===0)throw Error("file contains no session entries");let r=n[0];if(r?.type!=="session"||typeof r.id!=="string")throw Error("missing session header (first line must be a session entry)");let i=new Date(r.timestamp);if(Number.isNaN(i.getTime()))throw Error(`invalid session header timestamp: ${JSON.stringify(r.timestamp)}`);let o=0,s="",a,c;for(let u of n){let d=u;if(d.type==="session_info"){let g=d.name;if(typeof g==="string"&&g.trim())a=g.trim();continue}if(d.type!=="message")continue;o++;let f=d.message;if(!f||f.role!=="user"&&f.role!=="assistant")continue;let h=typeof f.timestamp==="number"?f.timestamp:new Date(d.timestamp).getTime();if(typeof h==="number"&&!Number.isNaN(h))c=Math.max(c??0,h);if(f.role==="user"&&!s){let g=d5(f);if(g)s=g}}return{path:e,id:r.id,cwd:typeof r.cwd==="string"?r.cwd:"",name:a,parentSessionPath:typeof r.parentSession==="string"?r.parentSession:void 0,created:i,modified:typeof c==="number"&&c>0?new Date(c):i,messageCount:o,firstMessage:s||"(no messages)",allMessagesText:""}}function h5(e,t){if(e.error)return t.error?0:1;if(t.error)return-1;return e.modified<t.modified?1:e.modified>t.modified?-1:0}async function p5(e){try{let t=await a2(e,"r");try{let n=Buffer.alloc(8192),{bytesRead:r}=await t.read(n,0,n.length,null),i=n.subarray(0,r).toString("utf8").split(`
263
263
  `)[0],o=JSON.parse(i);return typeof o?.cwd==="string"?o.cwd:""}finally{await t.close()}}catch{return""}}async function u2(e){let t=await l5(e),n=await Promise.all(t.map(async(o)=>{try{return{info:await f5(o)}}catch(s){return console.error(`[session-reader] failed to parse session file ${o}:`,s),{error:String(s),file:o,cwd:await p5(o)}}})),r=n.filter((o)=>o.info).map((o)=>o.info),i=await c5(r,e);i.sort(h5);for(let o of n.filter((s)=>!s.info))Dr(o.file,o.file,e),i.push({path:o.file,id:o.file,cwd:o.cwd,created:"",modified:"",messageCount:0,firstMessage:"",error:o.error});return i}async function pu(e){return u2(e)}function l2(e,t){let n=mu();for(let r of e)n.set(r,t);delete globalThis.__piAllowedRootsCache}function d2(e){let t=mu().get(e);if(!t)return[];return Rh(t)}function Rh(e){let t=du(e,"plugins");try{return i5(t).filter((n)=>n.endsWith(".ts")||n.endsWith(".mjs")||n.endsWith(".js")).map((n)=>du(t,n))}catch{return[]}}function f2(){globalThis.__piFixtureMode=!0,delete globalThis.__piAllowedRootsCache}function gu(){return globalThis.__piFixtureMode===!0}function kh(){return[...new Set(mu().values())]}function mu(){if(!globalThis.__piSessionDirRegistry)globalThis.__piSessionDirRegistry=new Map;return globalThis.__piSessionDirRegistry}function di(){if(!globalThis.__piSessionPathCacheByDir)globalThis.__piSessionPathCacheByDir=new Map;return globalThis.__piSessionPathCacheByDir}async function ro(e){if(gu())return(await Promise.all(kh().map((o)=>pu(o)))).flat().sort((o,s)=>o.modified<s.modified?1:o.modified>s.modified?-1:0);let t=globalThis.__piSessionListGeneration??0;if(e!=="fresh"&&globalThis.__piSessionListCache&&Date.now()-globalThis.__piSessionListCache.ts<g5)return globalThis.__piSessionListCache.data;if(globalThis.__piSessionListPromise&&globalThis.__piSessionListPromiseGeneration===t)return globalThis.__piSessionListPromise;let r=u5().then((i)=>{if(e!=="fresh"&&(globalThis.__piSessionListGeneration??0)===t)globalThis.__piSessionListCache={data:i,ts:Date.now()};return i}).finally(()=>{if(globalThis.__piSessionListPromise===r)globalThis.__piSessionListPromise=void 0,globalThis.__piSessionListPromiseGeneration=void 0});return globalThis.__piSessionListPromise=r,globalThis.__piSessionListPromiseGeneration=t,r}var g5=30000;function st(){globalThis.__piSessionListGeneration=(globalThis.__piSessionListGeneration??0)+1,globalThis.__piSessionListCache=void 0}function fu(){if(!globalThis.__piSessionPathCache)globalThis.__piSessionPathCache=new Map;return globalThis.__piSessionPathCache}function hu(){if(!globalThis.__piPathToSessionIdCache)globalThis.__piPathToSessionIdCache=new Map;return globalThis.__piPathToSessionIdCache}async function We(e){if(r5(e))return Uh(e);let t=mu().get(e);if(t){let s=di().get(t)?.get(e);if(s)return s;let c=(await c2.listAll(t)).find((u)=>u.id===e);if(c){let u=Uh(c.path),d=di().get(t);if(!d)d=new Map,di().set(t,d);return d.set(e,u),u}return null}if(gu()){for(let a of kh()){let c=di().get(a)?.get(e);if(c)return c}let s=(await Promise.all(kh().map((a)=>pu(a)))).flat().find((a)=>a.id===e);return s?s.path:null}let n=fu().get(e);if(n)return n;let i=globalThis.__piSessionListCache?.data?.find((o)=>o.id===e);if(i)return Dr(e,i.path),i.path;return await ro(),fu().get(e)??null}async function h2(e){let t=jt(e),n=hu().get(t);if(n)return n;return await ro(),hu().get(t)}function Dr(e,t,n){let r=Uh(t),i=jt(r);if(n){let f=di().get(n);if(!f)f=new Map,di().set(n,f);f.set(e,r);return}let o=fu(),s=hu(),a=o.get(e),c=a?jt(a):void 0,u=s.get(i),d=u?o.get(u):void 0;if(c&&c!==i&&s.get(c)===e)s.delete(c);if(u&&u!==e&&d&&jt(d)===i)o.delete(u);o.set(e,r),s.set(i,e)}function p2(e,t){if(t){di().get(t)?.delete(e);return}let n=fu(),r=hu(),i=n.get(e);n.delete(e);let o=i?jt(i):void 0;if(o&&r.get(o)===e)r.delete(o)}async function g2(e){let t=await a2(e,"r");try{let n=[],r=65536,i=0,o=!1;while(i<65536&&!o){let a=Buffer.allocUnsafe(Math.min(4096,65536-i)),{bytesRead:c}=await t.read(a,0,a.length,i);if(c===0)break;let u=a.subarray(0,c),d=u.indexOf(10);n.push(d===-1?u:u.subarray(0,d)),i+=c,o=d!==-1}if(!o&&i>=65536)return null;let s=Buffer.concat(n).toString("utf8").trimEnd();if(!s)return null;try{let a=JSON.parse(s);return a.type==="session"?a:null}catch{return null}}finally{await t.close()}}function yu(e){return c2.open(e).getEntries()}function bu(e,t,n={}){let r=new Map;for(let u of e)r.set(u.id,u);let i=e,o=a5(i,t,r),s=s5(i,t,r),a=[],c=[];for(let u of s){let d=u,f=b5(d,n);if(f)a.push(f),c.push(d.id)}return{messages:a,entryIds:c,thinkingLevel:o.thinkingLevel,model:o.model}}function Ah(e){let t=Date.parse(e);return Number.isNaN(t)?void 0:t}function s2(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function m5(e){if(!s2(e)||e.type!=="image")return null;let t,n;if(typeof e.data==="string")t=e.data,n=typeof e.mimeType==="string"?e.mimeType:void 0;else if(s2(e.source)&&e.source.type==="base64"&&typeof e.source.data==="string")t=e.source.data,n=typeof e.source.media_type==="string"?e.source.media_type:void 0;if(!t)return null;let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return{bytes:Math.max(0,Math.floor(t.length*3/4)-r),mime:n}}function y5(e){if(e.role!=="toolResult")return e;let t=0,n=0,r=new Set,i=e.content.filter((s)=>{let a=m5(s);if(!a)return!0;if(t+=1,n+=a.bytes,a.mime)r.add(a.mime);return!1});if(t===0)return e;let o=r.size>0?`: ${[...r].join(", ")}`:"";return i.push({type:"text",text:`[${t} tool result image${t===1?"":"s"} omitted from initial history payload${o}, ~${n} bytes]`}),{...e,content:i}}function b5(e,t){switch(e.type){case"message":{let n=t.deferToolResultImages?y5(Eh(e.message)):Eh(e.message);if(!t.deferThinking||n.role!=="assistant")return n;return{...n,content:n.content.map((r)=>r.type==="thinking"&&r.thinking.trim()!==""?{...r,thinking:"",deferred:!0}:r)}}case"compaction":return{role:"custom",customType:"compaction",content:e.summary,display:!0,details:{tokensBefore:e.tokensBefore,firstKeptEntryId:e.firstKeptEntryId},timestamp:Ah(e.timestamp)};case"branch_summary":if(!e.summary)return null;return{role:"user",content:`*The conversation briefly explored another branch and returned with this summary:*
264
264
 
265
- ${e.summary}`,timestamp:Ah(e.timestamp)};case"custom_message":return{role:"custom",customType:e.customType,content:e.content,display:e.display,details:e.details,timestamp:Ah(e.timestamp)};default:return null}}var v5=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function m2(e){return!!e&&v5.test(e)}function y2(e,t){return t.some((n)=>n.type==="message"&&n.message.role==="bashExecution"&&n.message.fullOutputPath===e)}async function b2(e,t){if(!m2(t))return!1;try{let n=await We(t);if(!n)return!1;return y2(e,yu(n))}catch{return!1}}async function D5(e,{params:t}){let{id:n}=await t,r=null,i=!1;try{let s=new URL(e.url);r=s.searchParams.get("path"),i=s.searchParams.get("download")==="1"}catch{return w.json({error:"invalid url"},{status:400})}if(!r)return w.json({error:"path required"},{status:400});let o=Y0(r,_5());if(!o)return w.json({error:"invalid path"},{status:400});if(!await b2(o,n))return w.json({error:"forbidden"},{status:403});try{if(i){let{handle:a}=await Dh(o),c=w5.toWeb(a.createReadStream());return new Response(c,{headers:{"Content-Type":"text/plain; charset=utf-8","Content-Disposition":'attachment; filename="bash-output.log"',"Cache-Control":"no-store"}})}let s=await J0(o);if(s.tooLarge)return w.json({error:`Full output is too large to display (limit ${au} bytes)`,data:{size:s.size,maxBytes:au}},{status:413});return w.json({success:!0,data:{output:s.content}})}catch{return w.json({error:"full output unavailable"},{status:404})}}var jh={};Q(jh,{GET:()=>gM,POST:()=>dM,sendWithDeferredModelSwitch:()=>Wh});import{randomUUID as aM}from"node:crypto";import{existsSync as cM}from"node:fs";import{readdirSync as S5}from"node:fs";import{homedir as w2}from"node:os";import vu from"node:path";import{realpathSync as v2}from"node:fs";import Oh from"node:path";var E5=/^[a-zA-Z]:[\\/]/;function x2(e){return E5.test(e)||e.startsWith("\\\\")||e.startsWith("//")}function T5(e,t){for(let n of t){let r=x2(e)||x2(n),i=r?Oh.win32:Oh,o=r?"\\":Oh.sep,s=i.resolve(e),a=i.resolve(n),c=r?s.toLowerCase():s,u=r?a.toLowerCase():a,d=u.endsWith(o)?u:u+o;if(c===u||c.startsWith(d))return!0}return!1}function _2(e,t){let n;try{n=v2(e)}catch{return!1}let r=new Set;for(let i of t)try{r.add(v2(i))}catch{}return T5(n,r)}var C5=5000,A5=/^[a-zA-Z]:[\\/]/;function at(e){return A5.test(e)||e.startsWith("\\\\")||e.startsWith("//")}async function le(){let e=Date.now(),t=globalThis.__piAllowedRootsCache;if(t&&t.expiresAt>e)return t.roots;let n=await ro(),r=new Set;for(let i of n){if(i.cwd)r.add($e(i.cwd));if(i.projectRoot)r.add($e(i.projectRoot))}try{for(let i of S5(w2()))if(/^pi-cwd-\d{8}$/.test(i))r.add($e(vu.join(w2(),i)))}catch{}for(let i of Th())r.add(i);return globalThis.__piAllowedRootsCache={roots:r,expiresAt:e+C5},r}function Xe(e,t){for(let n of t){let r=at(e)||at(n),i=r?vu.win32:vu,o=r?"\\":vu.sep,s=i.resolve(e),a=i.resolve(n),c=r?s.toLowerCase():s,u=r?a.toLowerCase():a,d=u.endsWith(o)?u:u+o;if(c===u||c.startsWith(d))return!0}return!1}function ye(e,t){return _2(e,t)}import{randomUUID as rn}from"node:crypto";import{existsSync as F2,realpathSync as P5,writeFileSync as I5}from"node:fs";import{join as M5,resolve as O2}from"node:path";import{createAgentSessionFromServices as N5,createAgentSessionServices as B5,getAgentDir as P2,initTheme as L5,SessionManager as Bs,SettingsManager as W5,Theme as j5}from"@earendil-works/pi-coding-agent";import{TUI_KEYBINDINGS as q5,KeybindingsManager as $5}from"@earendil-works/pi-tui";var Ph=92;function D2(e,t=92,n=40){let r=Object.freeze({columns:t,rows:n,kittyProtocolActive:!1});return Object.freeze({terminal:r,requestRender:e})}function U5(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===43||e===47}function k5(e){if(!e||e.length%4!==0)return null;let t=e.endsWith("==")?2:e.endsWith("=")?1:0,n=e.length-t;for(let r=0;r<n;r+=1)if(!U5(e.charCodeAt(r)))return null;for(let r=n;r<e.length;r+=1)if(e[r]!=="=")return null;return e.length/4*3-t}function R5(e){if(!e||typeof e!=="object")return!1;let t=e;if(typeof t.data!=="string"||typeof t.mimeType!=="string"||!t.mimeType.startsWith("image/"))return!1;let n=k5(t.data);return n!==null&&n<=10485760}function E2(e){if(e===void 0)return null;if(!Array.isArray(e))return"images must be an array";if(e.length>10)return"A message can include at most 10 images";for(let t of e){if(!t||typeof t!=="object"||t.type!=="image")return"Each attachment must be an image";if(!R5(t))return"Each image must be valid base64 image data of 10MB or smaller"}return null}import{resolveModelScopeWithDiagnostics as F5}from"@earendil-works/pi-coding-agent";function xu(e,t){return e.provider===t.provider&&e.id===t.modelId}async function _u(e,t){let n=(t??[]).map((g)=>g.trim()).filter(Boolean);if(n.length===0)return{visible:await e.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let r=await e.getAvailable(),i=new Set(r.map((g)=>g.provider.toLowerCase())),o=[],s=!1;for(let g of n){let y=g.indexOf("/");if(y===-1){s=!0,o.push(g);continue}let v=g.slice(0,y).trim().toLowerCase();if(!v||/[*?[]/.test(v)){s=!0,o.push(g);continue}if(i.has(v))o.push(g)}if(o.length===0)return{visible:r,scopedModels:[],thinkingLevelPins:{},warnings:[]};let a=new Set;for(let g of o){let y=g.indexOf("/");if(y!==-1)a.add(g.slice(0,y).trim().toLowerCase())}let c=new Set;if(!s){for(let g of r)if(!a.has(g.provider.toLowerCase()))c.add(g.provider)}let u=[...o,...[...c].map((g)=>`${g}/**`)],{scopedModels:d,diagnostics:f}=await F5(u,e),h=f.map((g)=>g.message);if(d.length===0)return{visible:await e.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:h};let p={};for(let g of d)if(g.thinkingLevel)p[`${g.model.provider}/${g.model.id}`]=g.thinkingLevel;return{visible:d.map((g)=>g.model),scopedModels:d,thinkingLevelPins:p,warnings:h}}function wu(e,t={}){let{requestedModel:n,defaultModel:r}=t,i=n?e.visible.find((h)=>xu(h,n)):void 0;if(n&&!i)throw Error(`Model is not available in the enabled scope: ${n.provider}/${n.modelId}`);let o=i?e.scopedModels.find((h)=>h.model===i||xu(h.model,{provider:i.provider,modelId:i.id})):void 0,s=!i&&r?e.scopedModels.find((h)=>xu(h.model,r)):void 0,a=!i?s??e.scopedModels[0]:void 0,c=!i&&!a&&r?e.visible.find((h)=>xu(h,r)):void 0,u=i??a?.model??c,d=o??a,f=t.thinkingLevel??d?.thinkingLevel;return{...u?{model:u}:{},...f?{thinkingLevel:f}:{},scopedModels:[...e.scopedModels]}}import{hasTrustRequiringProjectResources as O5,ProjectTrustStore as Mh}from"@earendil-works/pi-coding-agent";function ct(e,t){if(!(Boolean(e)&&O5(e)))return{requiresTrust:!1,trusted:!0};return{requiresTrust:!0,trusted:new Mh(t).get(e)===!0}}function C2(e,t){let n=ct(e,t);if(!n.requiresTrust)return n;return new Mh(t).set(e,!0),{requiresTrust:!0,trusted:!0}}function io(e,t){if(!ct(e,t).requiresTrust)return;let r=new Mh(t);return{resolveProjectTrust:async()=>r.get(e)===!0}}async function A2(e,t,n){if(!t.model&&!t.thinkingLevel)return{modelDefaultChanged:!1};let r=!1;if(t.model&&n.model&&t.model.provider===n.model.provider&&t.model.modelId===n.model.modelId)e.setDefaultModelAndProvider(n.model.provider,n.model.modelId),r=!0;if(t.thinkingLevel&&(n.supportsThinking||n.thinkingLevel!=="off"))e.setDefaultThinkingLevel(n.thinkingLevel);return await e.flush(),{modelDefaultChanged:r}}var H5=1000;class Ls extends Error{}function G5(e){return e instanceof Ls||e instanceof Error&&/cannot be queued|while a shell command is running/.test(e.message)}var z5=new Set(["agent_start","agent_end","agent_settled","message_update","tool_execution_start","tool_execution_end","auto_compaction_start","auto_compaction_end","compaction_start","compaction_end","auto_retry_start","auto_retry_end"]),V5=new Set(["agent_end","agent_settled","auto_compaction_end","compaction_end"]),U2=600000,X5=["read","bash","edit","write","grep","find","ls"];class I2 extends j5{constructor(){super({thinkingXhigh:"",text:""},{selectedBg:""},"truecolor")}fg(...[,e]){return e}bg(...[,e]){return e}bold(e){return e}italic(e){return e}underline(e){return e}inverse(e){return e}strikethrough(e){return e}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return(e)=>e}getBashModeBorderColor(){return(e)=>e}}var k2=new I2,K5=new $5(q5);function M2(e,t){if(t.length===0)return[];let n=new Set(X5),r=e.getAllTools().map((i)=>i.name).filter((i)=>!n.has(i));return[...new Set([...t,...r])]}class N2{inner;listeners=[];pendingUiResponses=new Map;pendingUiRequests=new Map;activeCustomUis=new Map;extensionStatuses=new Map;extensionWidgets=new Map;promptRunning=!1;phase=null;phaseStartedAt=null;busyStartedAt=null;runningToolNames=new Map;lastPromptActivityAt=0;extensionsBound=!1;extensionBindingPromise=null;extensionBindingError=null;forceEmptySystemPrompt=!1;unsubscribe=null;idleTimer=null;onDestroyCallback=null;bufferedEvents=[];_alive=!0;constructor(e){this.inner=e}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}get cwd(){return this.inner.sessionManager.getCwd()}hasMessages(){return this.inner.sessionManager.getBranch().some((e)=>e.type==="message")}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}start(){this.unsubscribe=this.inner.subscribe((e)=>{if(e.type==="agent_end")st();if(V5.has(e.type))this.resetIdleTimer();if(this.lastPromptActivityAt=Date.now(),this.updatePhaseFromEvent(e),this.emit(e),z5.has(e.type))bn()}),this.resetIdleTimer(),bn()}getPhase(){return this.phase}getPhaseStartedAt(){return this.phaseStartedAt}getBusyStartedAt(){return this.busyStartedAt}setPhase(e){if(this.phase=e,!e){this.phaseStartedAt=null;return}let t=this.phaseStartedAt??Date.now();this.phaseStartedAt=this.busyStartedAt!==null?Math.max(t,this.busyStartedAt):t}updatePhaseFromEvent(e){switch(e.type){case"agent_start":this.setPhase({kind:"waiting_model"});break;case"agent_end":this.setPhase(null);break;case"message_update":{let t=e.assistantMessageEvent;this.setPhase(t?.type?.startsWith("thinking")?{kind:"thinking"}:null);break}case"auto_retry_start":{let t=e;this.setPhase({kind:"retrying",attempt:t.attempt??1,maxAttempts:t.maxAttempts??1,errorMessage:t.errorMessage});break}case"auto_retry_end":this.setPhase(null);break;case"tool_execution_start":{let t=e.toolCallId;if(t)this.runningToolNames.set(t,e.toolName??t);this.syncRunningToolsPhase();break}case"tool_execution_end":{let t=e.toolCallId;if(t)this.runningToolNames.delete(t);this.syncRunningToolsPhase();break}}}syncRunningToolsPhase(){this.setPhase(this.runningToolNames.size>0?{kind:"running_tools",tools:[...this.runningToolNames.entries()].map(([e,t])=>({id:e,name:t}))}:{kind:"waiting_model"})}setForceEmptySystemPrompt(e){this.forceEmptySystemPrompt=e,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(e={}){this.ensureExtensionsBound(e).catch((t)=>{console.error("[pi-web] failed to dispatch session_start to extensions:",t instanceof Error?t.message:t)})}async waitUntilReady(){await this.waitForExtensionsBound()}ensureExtensionsBound(e={}){if(e.forceEmptySystemPrompt)this.forceEmptySystemPrompt=!0;if(this.extensionsBound)return this.applyForcedEmptySystemPrompt(),Promise.resolve();if(this.extensionBindingPromise)return this.extensionBindingPromise;return this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let t=this.createExtensionUiContext();if(typeof this.inner.bindExtensions==="function")await this.inner.bindExtensions.call(this.inner,{uiContext:t,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:rn(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in Pi Web."}),onError:(r)=>this.emit({type:"extension_error",extensionPath:r.extensionPath,event:r.event,error:r.error})});else this.inner.extensionRunner.setUIContext?.(t,"rpc");this.extensionsBound=!0,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch((t)=>{throw this.extensionBindingError=t,t}),this.extensionBindingPromise}async waitForExtensionsBound(){try{if(this.extensionBindingPromise)await this.extensionBindingPromise}catch(e){throw e instanceof Error?e:Error(String(e))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}shouldWaitForExtensions(e){return e==="prompt"||e==="steer"||e==="follow_up"||e==="get_commands"}async withFinalRunningNotification(e){try{return await e()}finally{this.resetIdleTimer(),bn()}}applyForcedEmptySystemPrompt(){if(this.forceEmptySystemPrompt&&this.inner.agent.state)this.inner.agent.state.systemPrompt=""}emit(e){if(J5(this.sessionId,e),this.listeners.length===0){if(this.bufferedEvents.push(e),this.bufferedEvents.length>H5)this.bufferedEvents.shift();return}for(let t of this.listeners)t(e)}resetIdleTimer(){if(this.idleTimer)clearTimeout(this.idleTimer);this.idleTimer=setTimeout(()=>{if(this.isRunning()){if(this.promptRunning&&Date.now()-this.lastPromptActivityAt>=U2){this.settleStalledRun();return}this.resetIdleTimer();return}this.destroy()},U2)}settleStalledRun(){this.promptRunning=!1,this.emit({type:"prompt_error",errorMessage:"Agent run stalled (no activity for 10 minutes) — reset to idle. "+"If this keeps happening, restart the pi-web server."}),this.emit({type:"prompt_done"}),this.resetIdleTimer(),bn()}persistBashOnlySession(){let e=this.inner.sessionManager,t=e.getSessionFile();if(!t||F2(t))return;let n=e.getHeader();if(!n)return;let r=`${[n,...e.getEntries()].map((i)=>JSON.stringify(i)).join(`
265
+ ${e.summary}`,timestamp:Ah(e.timestamp)};case"custom_message":return{role:"custom",customType:e.customType,content:e.content,display:e.display,details:e.details,timestamp:Ah(e.timestamp)};default:return null}}var v5=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function m2(e){return!!e&&v5.test(e)}function y2(e,t){return t.some((n)=>n.type==="message"&&n.message.role==="bashExecution"&&n.message.fullOutputPath===e)}async function b2(e,t){if(!m2(t))return!1;try{let n=await We(t);if(!n)return!1;return y2(e,yu(n))}catch{return!1}}async function D5(e,{params:t}){let{id:n}=await t,r=null,i=!1;try{let s=new URL(e.url);r=s.searchParams.get("path"),i=s.searchParams.get("download")==="1"}catch{return w.json({error:"invalid url"},{status:400})}if(!r)return w.json({error:"path required"},{status:400});let o=Y0(r,_5());if(!o)return w.json({error:"invalid path"},{status:400});if(!await b2(o,n))return w.json({error:"forbidden"},{status:403});try{if(i){let{handle:a}=await Dh(o),c=w5.toWeb(a.createReadStream());return new Response(c,{headers:{"Content-Type":"text/plain; charset=utf-8","Content-Disposition":'attachment; filename="bash-output.log"',"Cache-Control":"no-store"}})}let s=await J0(o);if(s.tooLarge)return w.json({error:`Full output is too large to display (limit ${au} bytes)`,data:{size:s.size,maxBytes:au}},{status:413});return w.json({success:!0,data:{output:s.content}})}catch{return w.json({error:"full output unavailable"},{status:404})}}var jh={};Q(jh,{GET:()=>gM,POST:()=>dM,sendWithDeferredModelSwitch:()=>Wh});import{randomUUID as aM}from"node:crypto";import{existsSync as cM}from"node:fs";import{readdirSync as S5}from"node:fs";import{homedir as w2}from"node:os";import vu from"node:path";import{realpathSync as v2}from"node:fs";import Oh from"node:path";var E5=/^[a-zA-Z]:[\\/]/;function x2(e){return E5.test(e)||e.startsWith("\\\\")||e.startsWith("//")}function T5(e,t){for(let n of t){let r=x2(e)||x2(n),i=r?Oh.win32:Oh,o=r?"\\":Oh.sep,s=i.resolve(e),a=i.resolve(n),c=r?s.toLowerCase():s,u=r?a.toLowerCase():a,d=u.endsWith(o)?u:u+o;if(c===u||c.startsWith(d))return!0}return!1}function _2(e,t){let n;try{n=v2(e)}catch{return!1}let r=new Set;for(let i of t)try{r.add(v2(i))}catch{}return T5(n,r)}var C5=5000,A5=/^[a-zA-Z]:[\\/]/;function at(e){return A5.test(e)||e.startsWith("\\\\")||e.startsWith("//")}async function le(){let e=Date.now(),t=globalThis.__piAllowedRootsCache;if(t&&t.expiresAt>e)return t.roots;let n=await ro(),r=new Set;for(let i of n){if(i.cwd)r.add($e(i.cwd));if(i.projectRoot)r.add($e(i.projectRoot))}try{for(let i of S5(w2()))if(/^pi-cwd-\d{8}$/.test(i))r.add($e(vu.join(w2(),i)))}catch{}for(let i of Th())r.add(i);return globalThis.__piAllowedRootsCache={roots:r,expiresAt:e+C5},r}function Xe(e,t){for(let n of t){let r=at(e)||at(n),i=r?vu.win32:vu,o=r?"\\":vu.sep,s=i.resolve(e),a=i.resolve(n),c=r?s.toLowerCase():s,u=r?a.toLowerCase():a,d=u.endsWith(o)?u:u+o;if(c===u||c.startsWith(d))return!0}return!1}function ye(e,t){return _2(e,t)}import{randomUUID as rn}from"node:crypto";import{existsSync as F2,realpathSync as P5,writeFileSync as I5}from"node:fs";import{join as M5,resolve as O2}from"node:path";import{createAgentSessionFromServices as N5,createAgentSessionServices as B5,getAgentDir as P2,initTheme as L5,SessionManager as Bs,SettingsManager as W5,Theme as j5}from"@earendil-works/pi-coding-agent";import{TUI_KEYBINDINGS as q5,KeybindingsManager as $5}from"@earendil-works/pi-tui";var Ph=92;function D2(e,t=92,n=40){let r=Object.freeze({columns:t,rows:n,kittyProtocolActive:!1});return Object.freeze({terminal:r,requestRender:e})}function U5(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===43||e===47}function k5(e){if(!e||e.length%4!==0)return null;let t=e.endsWith("==")?2:e.endsWith("=")?1:0,n=e.length-t;for(let r=0;r<n;r+=1)if(!U5(e.charCodeAt(r)))return null;for(let r=n;r<e.length;r+=1)if(e[r]!=="=")return null;return e.length/4*3-t}function R5(e){if(!e||typeof e!=="object")return!1;let t=e;if(typeof t.data!=="string"||typeof t.mimeType!=="string"||!t.mimeType.startsWith("image/"))return!1;let n=k5(t.data);return n!==null&&n<=10485760}function E2(e){if(e===void 0)return null;if(!Array.isArray(e))return"images must be an array";if(e.length>10)return"A message can include at most 10 images";for(let t of e){if(!t||typeof t!=="object"||t.type!=="image")return"Each attachment must be an image";if(!R5(t))return"Each image must be valid base64 image data of 10MB or smaller"}return null}import{resolveModelScopeWithDiagnostics as F5}from"@earendil-works/pi-coding-agent";function xu(e,t){return e.provider===t.provider&&e.id===t.modelId}async function _u(e,t){let n=(t??[]).map((g)=>g.trim()).filter(Boolean);if(n.length===0)return{visible:await e.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:[]};let r=await e.getAvailable(),i=new Set(r.map((g)=>g.provider.toLowerCase())),o=[],s=!1;for(let g of n){let y=g.indexOf("/");if(y===-1){s=!0,o.push(g);continue}let v=g.slice(0,y).trim().toLowerCase();if(!v||/[*?[]/.test(v)){s=!0,o.push(g);continue}if(i.has(v))o.push(g)}if(o.length===0)return{visible:r,scopedModels:[],thinkingLevelPins:{},warnings:[]};let a=new Set;for(let g of o){let y=g.indexOf("/");if(y!==-1)a.add(g.slice(0,y).trim().toLowerCase())}let c=new Set;if(!s){for(let g of r)if(!a.has(g.provider.toLowerCase()))c.add(g.provider)}let u=[...o,...[...c].map((g)=>`${g}/**`)],{scopedModels:d,diagnostics:f}=await F5(u,e),h=f.map((g)=>g.message);if(d.length===0)return{visible:await e.getAvailable(),scopedModels:[],thinkingLevelPins:{},warnings:h};let p={};for(let g of d)if(g.thinkingLevel)p[`${g.model.provider}/${g.model.id}`]=g.thinkingLevel;return{visible:d.map((g)=>g.model),scopedModels:d,thinkingLevelPins:p,warnings:h}}function wu(e,t={}){let{requestedModel:n,defaultModel:r}=t,i=n?e.visible.find((h)=>xu(h,n)):void 0;if(n&&!i)throw Error(`Model is not available in the enabled scope: ${n.provider}/${n.modelId}`);let o=i?e.scopedModels.find((h)=>h.model===i||xu(h.model,{provider:i.provider,modelId:i.id})):void 0,s=!i&&r?e.scopedModels.find((h)=>xu(h.model,r)):void 0,a=!i?s??e.scopedModels[0]:void 0,c=!i&&!a&&r?e.visible.find((h)=>xu(h,r)):void 0,u=i??a?.model??c,d=o??a,f=t.thinkingLevel??d?.thinkingLevel;return{...u?{model:u}:{},...f?{thinkingLevel:f}:{},scopedModels:[...e.scopedModels]}}import{hasTrustRequiringProjectResources as O5,ProjectTrustStore as Mh}from"@earendil-works/pi-coding-agent";function ct(e,t){if(!(Boolean(e)&&O5(e)))return{requiresTrust:!1,trusted:!0};return{requiresTrust:!0,trusted:new Mh(t).get(e)===!0}}function C2(e,t){let n=ct(e,t);if(!n.requiresTrust)return n;return new Mh(t).set(e,!0),{requiresTrust:!0,trusted:!0}}function io(e,t){if(!ct(e,t).requiresTrust)return;let r=new Mh(t);return{resolveProjectTrust:async()=>r.get(e)===!0}}async function A2(e,t,n){if(!t.model&&!t.thinkingLevel)return{modelDefaultChanged:!1};let r=!1;if(t.model&&n.model&&t.model.provider===n.model.provider&&t.model.modelId===n.model.modelId)e.setDefaultModelAndProvider(n.model.provider,n.model.modelId),r=!0;if(t.thinkingLevel&&(n.supportsThinking||n.thinkingLevel!=="off"))e.setDefaultThinkingLevel(n.thinkingLevel);return await e.flush(),{modelDefaultChanged:r}}var H5=1000;class Ls extends Error{}function G5(e){return e instanceof Ls||e instanceof Error&&/cannot be queued|while a shell command is running/.test(e.message)}var z5=new Set(["agent_start","agent_end","agent_settled","message_update","tool_execution_start","tool_execution_end","auto_compaction_start","auto_compaction_end","compaction_start","compaction_end","auto_retry_start","auto_retry_end"]),V5=new Set(["agent_end","agent_settled","auto_compaction_end","compaction_end"]),U2=(()=>{let e=Number(process.env.PI_SESSION_IDLE_MS);return Number.isFinite(e)&&e>0?e:600000})(),X5=["read","bash","edit","write","grep","find","ls"];class I2 extends j5{constructor(){super({thinkingXhigh:"",text:""},{selectedBg:""},"truecolor")}fg(...[,e]){return e}bg(...[,e]){return e}bold(e){return e}italic(e){return e}underline(e){return e}inverse(e){return e}strikethrough(e){return e}getFgAnsi(){return""}getBgAnsi(){return""}getThinkingBorderColor(){return(e)=>e}getBashModeBorderColor(){return(e)=>e}}var k2=new I2,K5=new $5(q5);function M2(e,t){if(t.length===0)return[];let n=new Set(X5),r=e.getAllTools().map((i)=>i.name).filter((i)=>!n.has(i));return[...new Set([...t,...r])]}class N2{inner;listeners=[];pendingUiResponses=new Map;pendingUiRequests=new Map;activeCustomUis=new Map;extensionStatuses=new Map;extensionWidgets=new Map;promptRunning=!1;phase=null;phaseStartedAt=null;busyStartedAt=null;runningToolNames=new Map;lastPromptActivityAt=0;extensionsBound=!1;extensionBindingPromise=null;extensionBindingError=null;forceEmptySystemPrompt=!1;unsubscribe=null;idleTimer=null;onDestroyCallback=null;bufferedEvents=[];_alive=!0;constructor(e){this.inner=e}get sessionId(){return this.inner.sessionId}get sessionFile(){return this.inner.sessionFile??""}get cwd(){return this.inner.sessionManager.getCwd()}hasMessages(){return this.inner.sessionManager.getBranch().some((e)=>e.type==="message")}isAlive(){return this._alive}isRunning(){return this._alive&&(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)}start(){this.unsubscribe=this.inner.subscribe((e)=>{if(e.type==="agent_end")st();if(V5.has(e.type))this.resetIdleTimer();if(this.lastPromptActivityAt=Date.now(),this.updatePhaseFromEvent(e),this.emit(e),z5.has(e.type))bn()}),this.resetIdleTimer(),bn()}getPhase(){return this.phase}getPhaseStartedAt(){return this.phaseStartedAt}getBusyStartedAt(){return this.busyStartedAt}setPhase(e){if(this.phase=e,!e){this.phaseStartedAt=null;return}let t=this.phaseStartedAt??Date.now();this.phaseStartedAt=this.busyStartedAt!==null?Math.max(t,this.busyStartedAt):t}updatePhaseFromEvent(e){switch(e.type){case"agent_start":this.setPhase({kind:"waiting_model"});break;case"agent_end":this.setPhase(null);break;case"message_update":{let t=e.assistantMessageEvent;this.setPhase(t?.type?.startsWith("thinking")?{kind:"thinking"}:null);break}case"auto_retry_start":{let t=e;this.setPhase({kind:"retrying",attempt:t.attempt??1,maxAttempts:t.maxAttempts??1,errorMessage:t.errorMessage});break}case"auto_retry_end":this.setPhase(null);break;case"tool_execution_start":{let t=e.toolCallId;if(t)this.runningToolNames.set(t,e.toolName??t);this.syncRunningToolsPhase();break}case"tool_execution_end":{let t=e.toolCallId;if(t)this.runningToolNames.delete(t);this.syncRunningToolsPhase();break}}}syncRunningToolsPhase(){this.setPhase(this.runningToolNames.size>0?{kind:"running_tools",tools:[...this.runningToolNames.entries()].map(([e,t])=>({id:e,name:t}))}:{kind:"waiting_model"})}setForceEmptySystemPrompt(e){this.forceEmptySystemPrompt=e,this.applyForcedEmptySystemPrompt()}beginExtensionBinding(e={}){this.ensureExtensionsBound(e).catch((t)=>{console.error("[pi-web] failed to dispatch session_start to extensions:",t instanceof Error?t.message:t)})}async waitUntilReady(){await this.waitForExtensionsBound()}ensureExtensionsBound(e={}){if(e.forceEmptySystemPrompt)this.forceEmptySystemPrompt=!0;if(this.extensionsBound)return this.applyForcedEmptySystemPrompt(),Promise.resolve();if(this.extensionBindingPromise)return this.extensionBindingPromise;return this.extensionBindingError=null,this.extensionBindingPromise=(async()=>{if(!this._alive)return;let t=this.createExtensionUiContext();if(typeof this.inner.bindExtensions==="function")await this.inner.bindExtensions.call(this.inner,{uiContext:t,mode:"rpc",commandContextActions:this.createExtensionCommandContextActions(),shutdownHandler:()=>this.emit({type:"extension_ui_request",id:rn(),method:"notify",notifyType:"warning",message:"Extension requested shutdown, but shutdown is not supported in Pi Web."}),onError:(r)=>this.emit({type:"extension_error",extensionPath:r.extensionPath,event:r.event,error:r.error})});else this.inner.extensionRunner.setUIContext?.(t,"rpc");this.extensionsBound=!0,this.applyForcedEmptySystemPrompt(),console.log(`[pi-web] session_start dispatched to extensions for session ${this.inner.sessionId}`)})().catch((t)=>{throw this.extensionBindingError=t,t}),this.extensionBindingPromise}async waitForExtensionsBound(){try{if(this.extensionBindingPromise)await this.extensionBindingPromise}catch(e){throw e instanceof Error?e:Error(String(e))}if(this.extensionBindingError)throw this.extensionBindingError instanceof Error?this.extensionBindingError:Error(String(this.extensionBindingError))}shouldWaitForExtensions(e){return e==="prompt"||e==="steer"||e==="follow_up"||e==="get_commands"}async withFinalRunningNotification(e){try{return await e()}finally{this.resetIdleTimer(),bn()}}applyForcedEmptySystemPrompt(){if(this.forceEmptySystemPrompt&&this.inner.agent.state)this.inner.agent.state.systemPrompt=""}emit(e){if(J5(this.sessionId,e),this.listeners.length===0){if(this.bufferedEvents.push(e),this.bufferedEvents.length>H5)this.bufferedEvents.shift();return}for(let t of this.listeners)t(e)}resetIdleTimer(){if(this.idleTimer)clearTimeout(this.idleTimer);this.idleTimer=setTimeout(()=>{if(this.isRunning()){if(this.promptRunning&&Date.now()-this.lastPromptActivityAt>=U2){this.settleStalledRun();return}this.resetIdleTimer();return}this.destroy()},U2)}settleStalledRun(){this.promptRunning=!1,this.emit({type:"prompt_error",errorMessage:"Agent run stalled (no activity for 10 minutes) — reset to idle. "+"If this keeps happening, restart the pi-web server."}),this.emit({type:"prompt_done"}),this.resetIdleTimer(),bn()}persistBashOnlySession(){let e=this.inner.sessionManager,t=e.getSessionFile();if(!t||F2(t))return;let n=e.getHeader();if(!n)return;let r=`${[n,...e.getEntries()].map((i)=>JSON.stringify(i)).join(`
266
266
  `)}
267
267
  `;I5(t,r,{encoding:"utf8",flag:"wx"}),e.flushed=!0,Dr(this.inner.sessionId,t)}onEvent(e){let t=this.bufferedEvents;this.bufferedEvents=[];for(let n of t)e(n);this.listeners.push(e);for(let n of this.pendingUiRequests.values())e(n);for(let n of this.extensionWidgets.values())e({type:"extension_ui_request",id:rn(),method:"setWidget",widgetKey:n.key,widgetLines:n.lines,widgetPlacement:n.placement});for(let[n,r]of this.extensionStatuses)e({type:"extension_ui_request",id:rn(),method:"setStatus",statusKey:n,statusText:r});return()=>{let n=this.listeners.indexOf(e);if(n!==-1)this.listeners.splice(n,1)}}onDestroy(e){this.onDestroyCallback=e}async send(e){this.resetIdleTimer();let t=e.type;if(this.shouldWaitForExtensions(t))await this.waitForExtensionsBound();if(t==="prompt"||t==="steer"||t==="follow_up"){let n=E2(e.images);if(n)throw Error(n)}switch(t){case"prompt":{if(this.inner.isBashRunning)throw Error("Cannot send a prompt while a shell command is running");let{images:n,streamingBehavior:r}=e;if(Wt("ui-chain","2a sdk prompt",`${JSON.stringify(String(e.message).slice(0,80))} streamingBehavior=${r??"-"}`),this.promptRunning=!0,this.busyStartedAt===null||!r)this.busyStartedAt=Date.now();return this.setPhase({kind:"waiting_model"}),this.lastPromptActivityAt=Date.now(),bn(),this.inner.prompt(e.message,{...n?.length?{images:n}:{},...r?{streamingBehavior:r}:{},source:"rpc"}).then(()=>{if(Wt("ui-chain","2c prompt done"),this.promptRunning=!1,this.resetIdleTimer(),!r)this.emit({type:"prompt_done"});bn()}).catch((i)=>{if(Wt("ui-chain","2c prompt error",i instanceof Error?i.message:String(i)),this.promptRunning=!1,this.resetIdleTimer(),st(),this.emit({type:"prompt_error",errorMessage:i instanceof Error?i.message:String(i)}),!r)this.emit({type:"prompt_done"});bn()}),null}case"abort":return await this.withFinalRunningNotification(()=>this.inner.abort()),null;case"get_state":{let n=this.inner.model,r=this.inner.getContextUsage();return{sessionId:this.inner.sessionId,sessionFile:this.inner.sessionFile??"",isStreaming:this.inner.isStreaming,isPromptRunning:this.promptRunning,isBashRunning:this.inner.isBashRunning,isCompacting:this.inner.isCompacting,autoCompactionEnabled:this.inner.autoCompactionEnabled,autoRetryEnabled:this.inner.autoRetryEnabled,model:n?{id:n.id,provider:n.provider}:void 0,messageCount:0,pendingMessageCount:this.inner.pendingMessageCount,queuedMessages:{steering:[...this.inner.getSteeringMessages()],followUp:[...this.inner.getFollowUpMessages()]},contextUsage:r?{percent:r.percent,contextWindow:r.contextWindow,tokens:r.tokens}:null,systemPrompt:this.inner.agent.state?.systemPrompt??"",thinkingLevel:this.inner.agent.state?.thinkingLevel??"off",extensionStatuses:this.getExtensionStatuses(),extensionWidgets:this.getExtensionWidgets()}}case"set_model":{let{provider:n,modelId:r}=e,i=this.inner.modelRuntime.getModel(n,r);if(!i)await this.inner.modelRuntime.refresh({allowNetwork:!1}),i=this.inner.modelRuntime.getModel(n,r);if(!i)throw Error(`Model not found: ${n}/${r}`);return await this.inner.setModel(i),ke(),st(),{id:i.id,provider:i.provider}}case"fork":{if(this.inner.isBashRunning)throw Error("Cannot fork while a shell command is running");let n=e.entryId,r=this.inner.sessionManager,i=this.inner.sessionFile;if(!r.isPersisted())return{cancelled:!0};if(!i)throw Error("Persisted session is missing a session file");let o=r.getEntry(n);if(!o)throw Error("Invalid entry ID for forking");let s=r.getSessionDir(),a;if(!o.parentId){let u=Bs.create(r.getCwd(),s);u.newSession({parentSession:i}),a=u.getSessionFile()}else{let d=Bs.open(i,s).createBranchedSession(o.parentId);if(!d)throw Error("Failed to create forked session");a=d}let c=Bs.open(a,s).getSessionId();return Dr(c,a),st(),this.destroy(),{cancelled:!1,newSessionId:c}}case"navigate_tree":{if(this.inner.isBashRunning)throw Error("Cannot navigate while a shell command is running");return{cancelled:(await this.inner.navigateTree(e.targetId,{})).cancelled}}case"set_thinking_level":{let n=e.level;if(this.inner.setThinkingLevel(n),n==="xhigh"&&this.inner.model?.compat?.thinkingFormat==="deepseek"&&this.inner.agent?.state)this.inner.agent.state.thinkingLevel="xhigh";return st(),null}case"compact":try{return await this.withFinalRunningNotification(()=>this.inner.compact(e.customInstructions))}finally{st()}case"set_session_name":{let n=e.name?.trim();if(!n)throw Error("Session name cannot be empty");return this.inner.setSessionName(n),st(),null}case"get_session_stats":return{...this.inner.getSessionStats(),sessionName:this.inner.sessionManager.getSessionName()};case"get_last_assistant_text":return{text:this.inner.getLastAssistantText()??""};case"set_auto_compaction":return this.inner.setAutoCompactionEnabled(e.enabled),null;case"clear_queue":return this.inner.clearQueue();case"steer":{let n=e.images;try{await this.inner.steer(e.message,n?.length?n:void 0)}catch(r){if(G5(r))throw new Ls(r instanceof Error?r.message:String(r));throw r}return null}case"follow_up":{let n=e.images;return await this.inner.followUp(e.message,n?.length?n:void 0),null}case"get_tools":{let n=this.inner.getAllTools(),r=new Set(this.inner.getActiveToolNames());return n.map((i)=>({name:i.name,description:i.description,active:r.has(i.name)}))}case"get_commands":{let n=[];for(let r of this.inner.extensionRunner.getRegisteredCommands())n.push({name:r.invocationName,description:r.description,source:"extension",sourceInfo:r.sourceInfo});for(let r of this.inner.promptTemplates)n.push({name:r.name,description:r.description,source:"prompt",sourceInfo:r.sourceInfo});for(let r of this.inner.resourceLoader.getSkills().skills)n.push({name:`skill:${r.name}`,description:r.description,source:"skill",sourceInfo:r.sourceInfo});return{commands:n}}case"set_tools":{let n=e.toolNames;return this.setForceEmptySystemPrompt(n.length===0),this.inner.setActiveToolsByName(M2(this.inner,n)),this.applyForcedEmptySystemPrompt(),null}case"reload":{if(await this.waitForExtensionsBound(),this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload(),typeof this.inner.bindExtensions!=="function")this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc");return this.applyForcedEmptySystemPrompt(),ke(),{success:!0}}case"abort_compaction":return this.inner.abortCompaction(),null;case"extension_ui_response":return this.resolveExtensionUiResponse(e),null;case"extension_ui_input":return this.handleExtensionUiInput(e.id,e.data),null;case"set_auto_retry":return this.inner.setAutoRetryEnabled(e.enabled),null;case"bash":{if(this.promptRunning||this.inner.isStreaming||this.inner.isCompacting||this.inner.isBashRunning)throw Error("Cannot run a shell command while the session is busy");let n=this.inner.executeBash(e.command,void 0,{excludeFromContext:e.excludeFromContext});this.busyStartedAt=Date.now(),this.setPhase({kind:"running_command"}),bn();try{let r=await n;return this.persistBashOnlySession(),r}finally{this.resetIdleTimer(),st(),this.emit({type:"prompt_done"}),this.setPhase(null),bn()}}case"abort_bash":return this.inner.abortBash(),null;default:throw Error(`Unsupported command: ${t}`)}}destroy(){if(!this._alive)return;if(this._alive=!1,this.idleTimer)clearTimeout(this.idleTimer);if(this.inner.isBashRunning)this.inner.abortBash();this.unsubscribe?.(),this.cancelPendingUiResponses();for(let e of Array.from(this.activeCustomUis.keys()))this.closeCustomUi(e,void 0);this.pendingUiResponses.clear(),this.pendingUiRequests.clear(),this.onDestroyCallback?.(),bn()}cancelPendingUiResponses(){for(let e of this.pendingUiResponses.values())e.cancel();this.pendingUiResponses.clear(),this.pendingUiRequests.clear()}getPendingUiRequests(){return Array.from(this.pendingUiRequests.values())}resolveExtensionUiResponse(e){let t=this.pendingUiResponses.get(e.id);if(!t)return;t.resolve(e)}getExtensionStatuses(){return Array.from(this.extensionStatuses,([e,t])=>({key:e,text:t}))}getExtensionWidgets(){return Array.from(this.extensionWidgets.values())}getCustomUiWidth(e){if(!e||typeof e!=="object")return Ph;let t=e.overlayOptions,n=typeof t==="function"?t():t;if(!n||typeof n!=="object")return Ph;let r=n.width;return typeof r==="number"&&Number.isFinite(r)?Math.max(40,Math.min(140,Math.round(r))):92}emitCustomUiRender(e,t){let n;try{n=t.component.render(t.width)}catch(i){n=[`Extension custom UI render failed: ${i instanceof Error?i.message:String(i)}`]}let r={type:"extension_ui_request",id:e,method:"custom",lines:n};this.pendingUiRequests.set(e,r),this.emit(r)}closeCustomUi(e,t){let n=this.activeCustomUis.get(e);if(!n||n.settled)return;n.settled=!0,this.activeCustomUis.delete(e),this.pendingUiRequests.delete(e);try{n.component.dispose?.()}catch{}this.emit({type:"extension_ui_request",id:e,method:"custom",lines:[],closed:!0}),n.resolve(t)}handleExtensionUiInput(e,t){let n=this.activeCustomUis.get(e);if(!n||typeof t!=="string")return;try{if(n.component.handleInput?.(t),this.activeCustomUis.has(e))this.emitCustomUiRender(e,n)}catch(r){this.closeCustomUi(e,void 0),this.emit({type:"extension_error",extensionPath:`custom-ui:${e}`,event:"custom_ui_input",error:r instanceof Error?r.message:String(r)})}}requestExtensionCustomUi(e,t){if(typeof e!=="function")return Promise.resolve(void 0);let n=rn(),r=this.getCustomUiWidth(t);return new Promise((i)=>{let o=!1,s=D2(()=>{let u=this.activeCustomUis.get(n);if(u)this.emitCustomUiRender(n,u)},r),a=(u)=>{if(o)return;o=!0,i(u)},c=(u)=>{if(this.activeCustomUis.has(n))this.closeCustomUi(n,u);else a(u)};Promise.resolve().then(()=>e(s,k2,K5,c)).then((u)=>{if(o){try{u?.dispose?.()}catch{}return}if(!u||typeof u!=="object"||typeof u.render!=="function"){a(void 0);return}let d={component:u,width:r,resolve:(f)=>a(f),settled:!1};this.activeCustomUis.set(n,d),this.emitCustomUiRender(n,d)}).catch((u)=>{if(o)return;this.emit({type:"extension_error",extensionPath:`custom-ui:${n}`,event:"custom_ui",error:u instanceof Error?u.message:String(u)}),a(void 0)})})}requestExtensionUi(e,t,n,r,i){if(i?.aborted)return Promise.resolve(t);let o=rn(),s={type:"extension_ui_request",id:o,...e,...r?{timeout:r,expiresAt:Date.now()+r}:{}};return new Promise((a)=>{let c,u=()=>{if(c)clearTimeout(c);i?.removeEventListener("abort",f),this.pendingUiRequests.delete(o),this.pendingUiResponses.delete(o)},d=(h)=>{u(),a(h)},f=()=>d(t);if(r)c=setTimeout(()=>d(t),r);i?.addEventListener("abort",f,{once:!0}),Wt("ui-chain",`2b ctx.ui.${String(e.method)}`,`id=${o.slice(0,8)} title=${JSON.stringify(e.title??null)} timeout=${r??"-"}`),this.pendingUiRequests.set(o,s),this.pendingUiResponses.set(o,{resolve:(h)=>d(n(h)),cancel:()=>d(t)}),this.emit(s)})}createExtensionUiContext(){return{select:(e,t,n)=>this.requestExtensionUi({method:"select",title:e,options:t,...n?.timeout?{timeout:n.timeout}:{}},void 0,(r)=>("value"in r)?r.value:void 0,n?.timeout,n?.signal),confirm:(e,t,n)=>this.requestExtensionUi({method:"confirm",title:e,message:t,...n?.timeout?{timeout:n.timeout}:{}},!1,(r)=>("confirmed"in r)?r.confirmed:!1,n?.timeout,n?.signal),input:(e,t,n)=>this.requestExtensionUi({method:"input",title:e,...t!==void 0?{placeholder:t}:{},...n?.timeout?{timeout:n.timeout}:{}},void 0,(r)=>("value"in r)?r.value:void 0,n?.timeout,n?.signal),editor:(e,t,n)=>this.requestExtensionUi({method:"editor",title:e,...t!==void 0?{prefill:t}:{},...n?.timeout?{timeout:n.timeout}:{}},void 0,(r)=>("value"in r)?r.value:void 0,n?.timeout,n?.signal),notify:(e,t)=>{this.emit({type:"extension_ui_request",id:rn(),method:"notify",message:e,notifyType:t})},onTerminalInput:()=>()=>{},setStatus:(e,t)=>{if(t===void 0)this.extensionStatuses.delete(e);else this.extensionStatuses.set(e,t);this.emit({type:"extension_ui_request",id:rn(),method:"setStatus",statusKey:e,statusText:t})},setWorkingMessage:()=>{},setWorkingVisible:()=>{},setWorkingIndicator:()=>{},setHiddenThinkingLabel:()=>{},setWidget:(e,t,n)=>{if(t!==void 0&&!Array.isArray(t))return;if(t===void 0)this.extensionWidgets.delete(e);else this.extensionWidgets.set(e,{key:e,lines:t,placement:n?.placement??"aboveEditor"});this.emit({type:"extension_ui_request",id:rn(),method:"setWidget",widgetKey:e,widgetLines:t,widgetPlacement:n?.placement})},setFooter:()=>{},setHeader:()=>{},setTitle:(e)=>{this.emit({type:"extension_ui_request",id:rn(),method:"setTitle",title:e})},custom:(e,t)=>this.requestExtensionCustomUi(e,t),pasteToEditor:(e)=>{this.emit({type:"extension_ui_request",id:rn(),method:"set_editor_text",text:e})},setEditorText:(e)=>{this.emit({type:"extension_ui_request",id:rn(),method:"set_editor_text",text:e})},getEditorText:()=>"",addAutocompleteProvider:()=>{},setEditorComponent:()=>{},getEditorComponent:()=>{return},get theme(){return k2},getAllThemes:()=>[],getTheme:()=>{return},setTheme:()=>({success:!1,error:"Theme switching is not supported in Pi Web extension UI yet"}),getToolsExpanded:()=>!1,setToolsExpanded:()=>{}}}createExtensionCommandContextActions(){return{waitForIdle:async()=>{await this.inner.agent.waitForIdle?.()},newSession:async()=>({cancelled:!0}),fork:async()=>({cancelled:!0}),navigateTree:async(e,t)=>({cancelled:(await this.inner.navigateTree(e,{summarize:t?.summarize})).cancelled}),switchSession:async()=>({cancelled:!0}),reload:async()=>{this.extensionStatuses.clear(),this.extensionWidgets.clear(),this.syncProjectTrust(),await this.inner.reload({beforeSessionStart:()=>{this.inner.extensionRunner.setUIContext?.(this.createExtensionUiContext(),"rpc")}}),this.applyForcedEmptySystemPrompt()}}}syncProjectTrust(){let e=ct(this.cwd,P2());this.inner.settingsManager.setProjectTrusted(e.trusted)}}function Tr(){if(!globalThis.__piSessions){globalThis.__piSessions=new Map;let e=()=>globalThis.__piSessions?.forEach((t)=>t.destroy());process.once("exit",e),process.once("SIGINT",e),process.once("SIGTERM",e)}return globalThis.__piSessions}function Z5(){if(!globalThis.__piStartLocks)globalThis.__piStartLocks=new Map;return globalThis.__piStartLocks}function on(e){let t=O2(e);try{return P5(t)}catch{return t}}function B2(){if(!globalThis.__piStartingSessionCwds)globalThis.__piStartingSessionCwds=new Map;return globalThis.__piStartingSessionCwds}function Y5(e){let t=B2(),n=on(e);return t.set(n,(t.get(n)??0)+1),()=>{let r=(t.get(n)??1)-1;if(r>0)t.set(n,r);else t.delete(n)}}function bt(e){return Tr().get(e)}function L2(e){let t=on(e);for(let[n,r]of Tr()){if(!r.isAlive())continue;if(on(r.cwd)!==t)continue;if(r.hasMessages())continue;return n}return}function W2(e){let t=on(e);if(B2().has(t))return!0;return Array.from(Tr().values()).some((n)=>on(n.cwd)===t&&n.isRunning())}function j2(){let e=new Set,t=[];for(let n of Tr().values()){let r=on(n.cwd);if(e.has(r))continue;e.add(r),t.push(r)}return t}function q2(e){let t=on(e),n=Array.from(Tr().values()).filter((r)=>on(r.cwd)===t);for(let r of n)r.destroy();return n.length}function $2(){let e=new Set;for(let[t,n]of Tr())if(n.isRunning())e.add(n.sessionId||t);return[...e]}function Ws(){let e=[],t={},n={},r={};for(let[i,o]of Tr())if(o.isRunning()){let s=o.sessionId||i;e.push(s);let a=o.getPhase();if(a){t[s]=a;let u=o.getPhaseStartedAt();if(u!==null)n[s]=u}let c=o.getBusyStartedAt();if(c!==null)r[s]=c}return{runningSessionIds:e,phases:t,phaseSince:n,busySince:r}}function H2(){if(!globalThis.__piRunningListeners)globalThis.__piRunningListeners=new Set;return globalThis.__piRunningListeners}function G2(e){let t=H2();return t.add(e),()=>{t.delete(e)}}var Nh="";function bn(){let e=H2();if(e.size===0){Nh="";return}let t=Ws(),n=JSON.stringify(t);if(n===Nh)return;Nh=n;for(let r of e)try{r(t)}catch{}}function z2(){if(!globalThis.__piAgentEventListeners)globalThis.__piAgentEventListeners=new Set;return globalThis.__piAgentEventListeners}function V2(e){let t=z2();return t.add(e),()=>{t.delete(e)}}function J5(e,t){for(let n of z2())try{n(e,t)}catch{}}var Q5="@rainmanhhh/pi-web",R2=!1;function eM(){return O2(import.meta.dirname,"..")}function tM(e,t){return(e??[]).some((n)=>{let r=typeof n==="string"?n:n.source;return r===t||r.includes(Q5)})}async function nM(e,t){if(R2)return;if(R2=!0,gu())return;let n=eM();if(!F2(M5(n,"extensions")))return;let r=W5.create(e,t),i=r.getGlobalSettings().packages;if(tM(i,n))return;r.setPackages([...i??[],n]),console.log(`[pi-web] self-registered as pi package: ${n}`)}async function fi(e,t,n,r={}){let{toolNames:i,initialModel:o,thinkingLevel:s}=r,a=Tr(),c=Z5(),u=a.get(e);if(u?.isAlive())return{session:u,realSessionId:e};let d=c.get(e);if(d)return d;let f;if(t)f=Bs.open(t,void 0);else{if(!n)throw Error("cwd is required for a new session");f=Bs.create(n,void 0)}let h=f.getCwd(),p=Y5(h),g=(async()=>{L5();let y=P2();await nM(h,y);let v;if(i!==void 0)v=i.length===0?[]:void 0;let b=io(h,y),_=r.fixtureExtensionPaths??d2(e),m=await B5({cwd:h,agentDir:y,...b?{resourceLoaderReloadOptions:b}:{},..._.length>0?{resourceLoaderOptions:{additionalExtensionPaths:_}}:{}}),x=await _u(m.modelRuntime,m.settingsManager.getEnabledModels()),D=m.settingsManager.getDefaultProvider(),A=m.settingsManager.getDefaultModel(),U=f.getBranch().some((j)=>j.type==="message")?{scopedModels:[...x.scopedModels]}:wu(x,{...o?{requestedModel:o}:{},...D&&A?{defaultModel:{provider:D,modelId:A}}:{},...s?{thinkingLevel:s}:{}}),{session:C}=await N5({services:m,sessionManager:f,...U.model?{model:U.model}:{},...U.thinkingLevel?{thinkingLevel:U.thinkingLevel}:{},...U.scopedModels.length>0?{scopedModels:U.scopedModels}:{},...v!==void 0?{tools:v}:{}});if((await A2(m.settingsManager,{...o?{model:o}:{},...s?{thinkingLevel:s}:{}},{...C.model?{model:{provider:C.model.provider,modelId:C.model.id}}:{},thinkingLevel:C.thinkingLevel,supportsThinking:C.supportsThinking()})).modelDefaultChanged)ke();if(i&&i.length>0)C.setActiveToolsByName(M2(C,i));let F=new N2(C);if(i?.length===0)F.setForceEmptySystemPrompt(!0);F.start();let{sessionId:S,sessionFile:B}=C;if(B)Dr(S,B);return F.onDestroy(()=>a.delete(S)),a.set(S,F),F.beginExtensionBinding({forceEmptySystemPrompt:i?.length===0}),{session:F,realSessionId:S}})().finally(()=>{c.delete(e),p()});return c.set(e,g),g}import{resolve as rM}from"node:path";var iM="piE2eFixtureDir",oM="piE2eFixtureDir";function Bh(e){return rM(process.cwd(),e)}function sM(e){if(!e)return{};let t={};for(let n of e.split(";")){let r=n.indexOf("=");if(r===-1)continue;t[n.slice(0,r).trim()]=n.slice(r+1).trim()}return t}function xe(e){let t=sM(e.headers.get("cookie"))[iM];if(t)try{return Bh(decodeURIComponent(t))}catch{return Bh(t)}let n=new URL(e.url).searchParams.get(oM);return n?Bh(n):void 0}var Du=Lt("oom-debug"),X2=Lt("oom-stress"),uM=new Set(["off","minimal","low","medium","high","xhigh","max"]);function lM(e){if(e===void 0)return;if(typeof e==="string"&&uM.has(e))return e;throw Error(`Invalid thinking level: ${String(e)}`)}function Lh(e){if(!e||e.id==="unknown"||e.provider==="unknown")return null;return{provider:e.provider,modelId:e.id}}async function dM(e,{params:t}){let{id:n}=await t;try{let r=await e.json();if(Du(`POST /api/agent/${n}`,`type=${r.type} message=${JSON.stringify(r.message)} keys=${Object.keys(r).join(",")}`),r.type==="prompt"&&r.message==="oom debug")return Du("INTERCEPTED","routing to oomDebugHandler"),fM(n);if(r.type==="prompt"&&r.message==="oom stress")return X2("INTERCEPTED","routing to oomStressHandler"),hM(n);if(n==="new")return pM(r,xe(e));let i=bt(n);if(i?.isAlive()){let c=await Wh(i,r);return w.json({success:!0,data:c})}let o=await We(n);if(!o)return w.json({error:"Session not found"},{status:404});let{session:s}=await fi(n,o,void 0),a=await Wh(s,r);return w.json({success:!0,data:a})}catch(r){console.error(`[api] ${new URL(e.url).pathname} failed:`,r);let i=r instanceof Ls?400:500;return w.json({error:String(r)},{status:i})}}async function fM(e){Du("oomDebugHandler called",`session ${e}`);let t=30,n=bt(e);if(!n?.isAlive())return Du("session not alive or not found",`session ${e}`),w.json({error:"Session not found"},{status:404});return(async()=>{let r=(o)=>{n.emit(o)};r({type:"agent_start"}),await new Promise((o)=>setTimeout(o,t*1000));let i=`✅ OOM debug: fake response after ${t}s wait.`;r({type:"message_start",message:{role:"assistant",content:[]}}),r({type:"message_update",message:{role:"assistant",content:[{type:"text",text:i}]}}),r({type:"message_end",message:{role:"assistant",content:[{type:"text",text:i}]}}),r({type:"agent_end"})})(),w.json({success:!0,data:null})}async function hM(e){X2("oomStressHandler called",`session ${e}`);let t=5,n=bt(e);if(!n?.isAlive())return w.json({error:"Session not found"},{status:404});return(async()=>{let r=(d)=>{n.emit(d)};r({type:"agent_start"}),await new Promise((d)=>setTimeout(d,t*1000)),r({type:"message_start",message:{role:"assistant",content:[]}}),r({type:"message_update",assistantMessageEvent:{type:"thinking_start",contentIndex:0}});let i=400,o=500,s=80,a=[];for(let d=0;d<i;d++){let f=`Thinking step ${d+1}: ${"x".repeat(o-40)}
268
268
  `;a.push(f),r({type:"message_update",assistantMessageEvent:{type:"thinking_delta",contentIndex:0,delta:f}}),await new Promise((h)=>setTimeout(h,s))}let c=a.join("");r({type:"message_update",assistantMessageEvent:{type:"thinking_end",contentIndex:0,content:c}});let u=`
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,s as n}from"./index-HZ_6UsvG.js";var r=e(t(),1),i=[],a=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?a:i).push(n+=e[t])})();function o(e){if(e<768)return!1;for(let t=0,n=i.length;;){let r=t+n>>1;if(e<i[r])n=r;else if(e>=a[r])t=r+1;else return!0;if(t==n)return!1}}function s(e){return e>=127462&&e<=127487}var c=8205;function l(e,t,n=!0,r=!0){return(n?u:d)(e,t,r)}function u(e,t,n){if(t==e.length)return t;t&&p(e.charCodeAt(t))&&m(e.charCodeAt(t-1))&&t--;let r=f(e,t);for(t+=h(r);t<e.length;){let i=f(e,t);if(r==c||i==c||n&&o(i))t+=h(i),r=i;else if(s(i)){let n=0,r=t-2;for(;r>=0&&s(f(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function d(e,t,n){for(;t>1;){let r=u(e,t-2,n);if(r<t)return r;t--}return 0}function f(e,t){let n=e.charCodeAt(t);if(!m(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return p(r)?(n-55296<<10)+(r-56320)+65536:n}function p(e){return e>=56320&&e<57344}function m(e){return e>=55296&&e<56320}function h(e){return e<65536?1:2}var g=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=ae(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),v.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=ae(this,e,t);let n=[];return this.decompose(e,t,n,0),v.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new b(this),i=new b(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new b(this,e)}iterRange(e,t=this.length){return new ne(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new re(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new _(t):v.from(_.split(t,[]))}},_=class e extends g{constructor(e,t=y(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new ie(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(te(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=ee(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=ae(this,t,n);let i=ee(this.text,ee(r.text,te(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):v.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{o as t,s as n}from"./index-5pdiKpV2.js";var r=e(n(),1),i=[],a=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?a:i).push(n+=e[t])})();function o(e){if(e<768)return!1;for(let t=0,n=i.length;;){let r=t+n>>1;if(e<i[r])n=r;else if(e>=a[r])t=r+1;else return!0;if(t==n)return!1}}function s(e){return e>=127462&&e<=127487}var c=8205;function l(e,t,n=!0,r=!0){return(n?u:d)(e,t,r)}function u(e,t,n){if(t==e.length)return t;t&&p(e.charCodeAt(t))&&m(e.charCodeAt(t-1))&&t--;let r=f(e,t);for(t+=h(r);t<e.length;){let i=f(e,t);if(r==c||i==c||n&&o(i))t+=h(i),r=i;else if(s(i)){let n=0,r=t-2;for(;r>=0&&s(f(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function d(e,t,n){for(;t>1;){let r=u(e,t-2,n);if(r<t)return r;t--}return 0}function f(e,t){let n=e.charCodeAt(t);if(!m(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return p(r)?(n-55296<<10)+(r-56320)+65536:n}function p(e){return e>=56320&&e<57344}function m(e){return e>=55296&&e<56320}function h(e){return e<65536?1:2}var g=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=ae(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),v.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=ae(this,e,t);let n=[];return this.decompose(e,t,n,0),v.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new b(this),i=new b(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new b(this,e)}iterRange(e,t=this.length){return new ne(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new re(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new _(t):v.from(_.split(t,[]))}},_=class e extends g{constructor(e,t=y(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new ie(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(te(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=ee(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=ae(this,t,n);let i=ee(this.text,ee(r.text,te(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):v.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
2
2
  `){[e,t]=ae(this,e,t);let r=``;for(let i=0,a=0;i<=t&&a<this.text.length;a++){let o=this.text[a],s=i+o.length;i>e&&a&&(r+=n),e<s&&t>i&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},v=class e extends g{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(e<=s&&t>=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=ae(this,t,n),r.lines<this.lines)for(let i=0,a=0;i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(t>=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines<l>>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=`
3
3
  `){[e,t]=ae(this,e,t);let r=``;for(let i=0,a=0;i<this.children.length&&a<=t;i++){let o=this.children[i],s=a+o.length;a>e&&i&&(r+=n),e<s&&t>a&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new _(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof _&&c&&(n=u[u.length-1])instanceof _&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new _(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};g.empty=new _([``],0);function y(e){let t=-1;for(let n of e)t+=n.length+1;return t}function ee(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a<e.length&&i<=r;a++){let s=e[a],c=i+s.length;c>=n&&(c>r&&(s=s.slice(0,r-i)),i<n&&(s=s.slice(n-i)),o?(t[t.length-1]+=s,o=!1):t.push(s)),i=c+1}return t}function te(e,t,n){return ee(e,[``],t,n)}var b=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=``,this.nodes=[e],this.offsets=[t>0?1:(e instanceof _?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof _?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
4
4
  `,this;e--}else if(r instanceof _){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof _?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},ne=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new b(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},re=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(g.prototype[Symbol.iterator]=function(){return this.iter()},b.prototype[Symbol.iterator]=ne.prototype[Symbol.iterator]=re.prototype[Symbol.iterator]=function(){return this});var ie=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function ae(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function x(e,t,n=!0,r=!0){return l(e,t,n,r)}function oe(e){return e>=56320&&e<57344}function se(e){return e>=55296&&e<56320}function S(e,t){let n=e.charCodeAt(t);if(!se(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return oe(r)?(n-55296<<10)+(r-56320)+65536:n}function ce(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(e&1023)+56320))}function le(e){return e<65536?1:2}var ue=/\r\n?|\n/,C=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(C||={}),de=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,r=0;t<this.sections.length;){let i=this.sections[t++],a=this.sections[t++];a<0?(e(n,r,i),r+=i):r+=a,n+=i}}iterChangedRanges(e,t=!1){me(this,e,t)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let n=this.sections[e++],r=this.sections[e++];r<0?t.push(n,r):t.push(r,n)}return new e(t)}composeDesc(e){return this.empty?e:e.empty?this:ge(this,e)}mapDesc(e,t=!1){return e.empty?this:he(this,e,t)}mapPos(e,t=-1,n=C.Simple){let r=0,i=0;for(let a=0;a<this.sections.length;){let o=this.sections[a++],s=this.sections[a++],c=r+o;if(s<0){if(c>e)return i+(e-r);i+=o}else{if(n!=C.Simple&&c>=e&&(n==C.TrackDel&&r<e&&c>e||n==C.TrackBefore&&r<e||n==C.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n<this.sections.length&&r<=t;){let i=this.sections[n++],a=this.sections[n++],o=r+i;if(a>=0&&r<=t&&o>=e)return r<e&&o>t?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];e+=(e?` `:``)+n+(r>=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},fe=class e extends de{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return me(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return he(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e<n.length;e+=2){let a=n[e],o=n[e+1];if(o>=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length<s;)r.push(g.empty);r.push(a?t.slice(i,i+a):g.empty)}i+=a}return new e(n,r)}compose(e){return this.empty?e:e.empty?this:ge(this,e,!0)}map(e,t=!1){return e.empty?this:he(this,e,t,!0)}iterChanges(e,t=!1){me(this,e,t)}get desc(){return de.create(this.sections)}filter(t){let n=[],r=[],i=[],a=new _e(this);done:for(let e=0,o=0;;){let s=e==t.length?1e9:t[e++];for(;o<s||o==s&&a.len==0;){if(a.done)break done;let e=Math.min(a.len,s-o);w(i,e,-1);let t=a.ins==-1?-1:a.off==0?a.ins:0;w(n,e,t),t>0&&pe(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o<c;){if(a.done)break done;let e=Math.min(a.len,c-o);w(n,e,-1),w(i,e,a.ins==-1?-1:a.off==0?a.ins:0),a.forward(e),o+=e}}return{changes:new e(n,r),filtered:de.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],r=this.sections[t+1];r<0?e.push(n):r==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;o<n&&w(i,n-o,-1);let r=new e(i,a);s=s?s.compose(r.map(s)):r,i=[],a=[],o=0}function l(t){if(Array.isArray(t))for(let e of t)l(e);else if(t instanceof e){if(t.length!=n)throw RangeError(`Mismatched change set length (got ${t.length}, expected ${n})`);c(),s=s?s.compose(t.map(s)):t}else{let{from:e,to:s=e,insert:l}=t;if(e>s||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?g.of(l.split(r||ue)):l:g.empty,d=u.length;if(e==s&&d==0)return;e<o&&c(),e>o&&w(i,e-o,-1),w(i,s-e,d),pe(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(typeof i==`number`)n.push(i,-1);else if(!Array.isArray(i)||typeof i[0]!=`number`||i.some((e,t)=>t&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length<e;)r.push(g.empty);r[e]=g.of(i.slice(1)),n.push(i[0],r[e].length)}}return new e(n,r)}static createSet(t,n){return new e(t,n)}};function w(e,t,n,r=!1){if(t==0&&n<=0)return;let i=e.length-2;i>=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function pe(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r<e.length)e[e.length-1]=e[e.length-1].append(n);else{for(;e.length<r;)e.push(g.empty);e.push(n)}}function me(e,t,n){let r=e.inserted;for(let i=0,a=0,o=0;o<e.sections.length;){let s=e.sections[o++],c=e.sections[o++];if(c<0)i+=s,a+=s;else{let l=i,u=a,d=g.empty;for(;l+=s,u+=c,c&&r&&(d=d.append(r[o-2>>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function he(e,t,n,r=!1){let i=[],a=r?[]:null,o=new _e(e),s=new _e(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);w(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len<o.len||s.len==o.len&&!n))){let t=s.len;for(w(i,s.ins,-1);t;){let n=Math.min(o.len,t);o.ins>=0&&e<o.i&&o.len<=n&&(w(i,0,o.ins),a&&pe(a,i,o.text),e=o.i),o.forward(n),t-=n}s.next()}else if(o.ins>=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.len<n)n-=s.len,s.next();else break;w(i,t,e<o.i?o.ins:0),a&&e<o.i&&pe(a,i,o.text),e=o.i,o.forward(o.len-n)}else if(o.done&&s.done)return a?fe.createSet(i,a):de.create(i);else throw Error(`Mismatched change set lengths`)}function ge(e,t,n=!1){let r=[],i=n?[]:null,a=new _e(e),o=new _e(t);for(let e=!1;;)if(a.done&&o.done)return i?fe.createSet(r,i):de.create(r);else if(a.ins==0)w(r,a.len,0,e),a.next();else if(o.len==0&&!o.done)w(r,0,o.ins,e),i&&pe(i,r,o.text),o.next();else if(a.done||o.done)throw Error(`Mismatched change set lengths`);else{let t=Math.min(a.len2,o.len),n=r.length;if(a.ins==-1){let n=o.ins==-1?-1:o.off?0:o.ins;w(r,t,n,e),i&&n&&pe(i,r,o.text)}else o.ins==-1?(w(r,a.off?0:a.len,t,e),i&&pe(i,r,a.textBit(t))):(w(r,a.off?0:a.len,o.off?0:o.ins,e),i&&!o.off&&pe(i,r,o.text));e=(a.ins>t||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var _e=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?g.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?g.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},ve=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.flags=n,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return T.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return T.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return T.range(e.anchor,e.head)}static create(t,n,r,i){return new e(t,n,r,i)}},T=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new e([this.main],0)}addRange(t,n=!0){return e.create([t].concat(this.ranges),n?0:this.mainIndex+1)}replaceRange(t,n=this.mainIndex){let r=this.ranges.slice();return r[n]=t,e.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>ve.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;i<t.length;i++){let a=t[i];if(a.empty?a.from<=r:a.from<r)return e.normalized(t.slice(),n);r=a.to}return new e(t,n)}static cursor(e,t=0,n,r){return ve.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n)),r)}static range(e,t,n,r,i){let a=r==null?7:Math.min(6,r);return!i&&e!=t&&(i=t<e?1:-1),i&&(a|=i<0?8:16),t<e?ve.create(t,e,a|32,n):ve.create(e,t,a,n)}static undirectionalRange(e,t){return ve.create(e,t,64,void 0)}static normalized(t,n=0){let r=t[n];t.sort((e,t)=>e.from-t.from),n=t.indexOf(r);for(let r=1;r<t.length;r++){let i=t[r],a=t[r-1];if(i.empty?i.from<=a.to:i.from<a.to){let o=a.from,s=Math.max(i.to,a.to);r<=n&&n--,t.splice(--r,2,i.anchor>i.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function ye(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}var be=0,E=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=be++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:xe),!!t.static,t.enables)}of(e){return new Se([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new Se(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new Se(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function xe(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var Se=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=be++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||we(e,c)){let r=t(e);if(a?!Ce(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=Le(o,c);if(this.dependencies.every(t=>t instanceof E?o.facet(t)===e.facet(t):t instanceof De?o.field(t,!1)==e.field(t,!1):!0)||(a?Ce(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}get extension(){return this}};function Ce(e,t,n){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}function we(e,t){let n=!1;for(let r of t)Ie(e,r)&1&&(n=!0);return n}function Te(e,t,n){let r=n.map(t=>e[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;t<r.length;t++){let a=Le(e,r[t]);if(i[t]==2)for(let e of a)n.push(e);else n.push(a)}return t.combine(n)}return{create(e){for(let t of r)Ie(e,t);return e.values[o]=s(e),1},update(e,n){if(!we(e,a))return 0;let r=s(e);return t.compare(r,e.values[o])?0:(e.values[o]=r,1)},reconfigure(e,i){let a=we(e,r),c=i.config.facets[t.id],l=i.facet(t);if(c&&!a&&xe(n,c))return e.values[o]=l,0;let u=s(e);return t.compare(u,l)?(e.values[o]=l,0):(e.values[o]=u,1)}}}var Ee=E.define({static:!0}),De=class e{constructor(e,t,n,r,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=r,this.spec=i,this.provides=void 0}static define(t){let n=new e(be++,t.create,t.update,t.compare||((e,t)=>e===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(Ee).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(Ee),i=n.facet(Ee),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,Ee.of({field:this,create:e})]}get extension(){return this}},Oe={lowest:4,low:3,default:2,high:1,highest:0};function ke(e){return t=>new je(t,e)}var Ae={highest:ke(Oe.highest),high:ke(Oe.high),default:ke(Oe.default),low:ke(Oe.low),lowest:ke(Oe.lowest)},je=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Me=class e{of(e){return new Ne(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},Ne=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Pe=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of Fe(t,n,o))e instanceof De?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0)){if(s[n.id]=c.length<<1|1,xe(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>Te(e,n,t))}}let d=l.map(e=>e(s));return new e(t,o,d,s,c,a)}};function Fe(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof Ne&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof Ne){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof je)a(e.inner,e.prec);else if(e instanceof De)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof Se)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,Oe.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}).`);if(t==e)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,Oe.default),r.reduce((e,t)=>e.concat(t))}function Ie(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function Le(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}var Re=E.define(),ze=E.define({combine:e=>e.some(e=>e),static:!0}),Be=E.define({combine:e=>e.length?e[0]:void 0,static:!0}),Ve=E.define(),He=E.define(),Ue=E.define(),We=E.define({combine:e=>e.length?e[0]:!1}),Ge=class{constructor(e,t){this.type=e,this.value=t}static define(){return new Ke}},Ke=class{of(e){return new Ge(this,e)}},qe=class{constructor(e){this.map=e}of(e){return new D(this,e)}},D=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new qe(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};D.reconfigure=D.define(),D.appendConfig=D.define();var Je=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&ye(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};Je.time=Ge.define(),Je.userEvent=Ge.define(),Je.addToHistory=Ge.define(),Je.remote=Ge.define();function Ye(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r<e.length&&(i==t.length||t[i]>=e[r]))a=e[r++],o=e[r++];else if(i<t.length)a=t[i++],o=t[i++];else return n;!n.length||n[n.length-1]<a?n.push(a,o):n[n.length-1]<o&&(n[n.length-1]=o)}}function Xe(e,t,n){let r,i,a;return n?(r=t.changes,i=fe.empty(t.changes.length),a=e.changes.compose(t.changes)):(r=t.changes.map(e.changes),i=e.changes.mapDesc(t.changes,!0),a=e.changes.compose(r)),{changes:a,selection:t.selection?t.selection.map(i):e.selection?.map(r),effects:D.mapEffects(e.effects,r).concat(D.mapEffects(t.effects,i)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function Ze(e,t,n){let r=t.selection,i=nt(t.annotations);return t.userEvent&&(i=i.concat(Je.userEvent.of(t.userEvent))),{changes:t.changes instanceof fe?t.changes:fe.of(t.changes||[],n,e.facet(Be)),selection:r&&(r instanceof T?r:T.single(r.anchor,r.head)),effects:nt(t.effects),annotations:i,scrollIntoView:!!t.scrollIntoView}}function Qe(e,t,n){let r=Ze(e,t.length?t[0]:{},e.doc.length);t.length&&t[0].filter===!1&&(n=!1);for(let i=1;i<t.length;i++){t[i].filter===!1&&(n=!1);let a=!!t[i].sequential;r=Xe(r,Ze(e,t[i],a?r.changes.newLength:e.doc.length),a)}let i=Je.create(e,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return et(n?$e(i):i)}function $e(e){let t=e.startState,n=!0;for(let r of t.facet(Ve)){let t=r(e);if(t===!1){n=!1;break}Array.isArray(t)&&(n=n===!0?t:Ye(n,t))}if(n!==!0){let r,i;if(n===!1)i=e.changes.invertedDesc,r=fe.empty(t.doc.length);else{let t=e.changes.filter(n);r=t.changes,i=t.filtered.mapDesc(t.changes).invertedDesc}e=Je.create(t,r,e.selection&&e.selection.map(i),D.mapEffects(e.effects,i),e.annotations,e.scrollIntoView)}let r=t.facet(He);for(let n=r.length-1;n>=0;n--){let i=r[n](e);e=i instanceof Je?i:Array.isArray(i)&&i.length==1&&i[0]instanceof Je?i[0]:Qe(t,nt(i),!1)}return e}function et(e){let t=e.startState,n=t.facet(Ue),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=Xe(r,Ze(t,a,e.changes.newLength),!0))}return r==e?e:Je.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}var tt=[];function nt(e){return e==null?tt:Array.isArray(e)?e:[e]}var O=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(O||={}),rt=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,it;try{it=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function at(e){if(it)return it.test(e);for(let t=0;t<e.length;t++){let n=e[t];if(/\w/.test(n)||n>`€`&&(n.toUpperCase()!=n.toLowerCase()||rt.test(n)))return!0}return!1}function ot(e){return t=>{if(!/\S/.test(t))return O.Space;if(at(t))return O.Word;for(let n=0;n<e.length;n++)if(t.indexOf(e[n])>-1)return O.Word;return O.Other}}var k=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)Ie(this,e<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw RangeError(`Field is not present in this state`);return}return Ie(this,n),Le(this,n)}update(...e){return Qe(this,e,!0)}applyTransaction(t){let n=this.config,{base:r,compartments:i}=n;for(let e of t.effects)e.is(Me.reconfigure)?(n&&=(i=new Map,n.compartments.forEach((e,t)=>i.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(D.reconfigure)?(n=null,r=e.value):e.is(D.appendConfig)&&(n=null,r=nt(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=Pe.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(ze)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:T.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=nt(n.effects);for(let n=1;n<t.ranges.length;n++){let o=e(t.ranges[n]),s=this.changes(o.changes),c=s.map(r);for(let e=0;e<n;e++)i[e]=i[e].map(c);let l=r.mapDesc(s,!0);i.push(o.range.map(l)),r=r.compose(c),a=D.mapEffects(a,c).concat(D.mapEffects(nt(o.effects),l))}return{changes:r,selection:T.create(i,t.mainIndex),effects:a}}changes(t=[]){return t instanceof fe?t:fe.of(t,this.doc.length,this.facet(e.lineSeparator))}toText(t){return g.of(t.split(this.facet(e.lineSeparator)||ue))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Ie(this,t),Le(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let r=e[n];r instanceof De&&this.config.address[r.id]!=null&&(t[n]=r.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(t,n={},r){if(!t||typeof t.doc!=`string`)throw RangeError(`Invalid JSON representation for EditorState`);let i=[];if(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(t,e)){let n=r[e],a=t[e];i.push(n.init(e=>n.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:T.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=Pe.resolve(t.extensions||[],new Map),r=t.doc instanceof g?t.doc:g.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||ue)),i=t.selection?t.selection instanceof T?t.selection:T.single(t.selection.anchor,t.selection.head):T.single(0);return ye(i,r.length),n.staticFacet(ze)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||`
@@ -36,4 +36,4 @@ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,s as n}from"./i
36
36
  `+e.scrub();for(let n of e.markers)t.marks.push(n)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw RangeError(`Can't move stoppedAt forward`);this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=Ow(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=ew;if(t.end=e,e>=this.to)t.text=``;else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let e=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let r=this.ranges[n].from,i=this.lineChunkAt(r);t.end=r+i.length,t.text=t.text.slice(0,this.ranges[n-1].to-e)+i,e=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:n}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=n,e.reset(t);e.depth<this.stack.length;e.depth++){let t=this.stack[e.depth],n=this.parser.skipContextMarkup[t.type];if(!n)throw Error(`Unhandled block context `+Q[t.type]);let r=this.line.markers.length;if(!n(t,this,e)){this.line.markers.length>r&&(t.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),n;if(this.input.lineChunks)n=t==`
37
37
  `?``:t;else{let e=t.indexOf(`
38
38
  `);n=e<0?t:t.slice(0,e)}return e+n.length>this.to?n.slice(0,this.to-e):n}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,n=0){this.block=TC.create(e,n,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,n=0){this.startContext(this.parser.getNodeType(e),t,n)}addNode(e,t,n){typeof e==`number`&&(e=new W(this.parser.nodeSet.types[e],cw,cw,(n??this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(Tw(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?nw(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let t of e.parsers)if(t.finish(this,e))return;let t=Tw(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(Q.Paragraph,e.content.length),e.start)}elt(e,t,n,r){return typeof e==`string`?$(this.parser.getNodeType(e),t,n,r):new dw(e,t)}get buffer(){return new lw(this.parser.nodeSet)}};function nw(e,t,n,r,i){let a=e[t].to,o=[],s=[],c=n.from+r;function l(n,i){for(;i?n>=a:n>a;){let i=e[t+1].from-a;r+=i,n+=i,t++,a=e[t].to}}for(let u=n.firstChild;u;u=u.nextSibling){l(u.from+r,!0);let n=u.from+r,d,f=i.get(u.tree);f?d=f:u.to+r>a?(d=nw(e,t,u,r,i),l(u.to+r,!1)):d=u.toTree(),o.push(d),s.push(n-c)}return l(n.to+r,!1),new W(n.type,o,s,n.to+r-c,n.tree?n.tree.propValues:void 0)}var rw=class e extends El{constructor(e,t,n,r,i,a,o,s,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=n,this.blockNames=r,this.endLeafBlock=i,this.skipContextMarkup=a,this.inlineParsers=o,this.inlineNames=s,this.wrappers=c,this.nodeTypes=Object.create(null);for(let t of e.types)this.nodeTypes[t.name]=t.id}createParse(e,t,n){let r=new tw(this,e,t,n);for(let i of this.wrappers)r=i(r,e,t,n);return r}configure(t){let n=aw(t);if(!n)return this;let{nodeSet:r,skipContextMarkup:i}=this,a=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),s=this.blockNames.slice(),c=this.inlineParsers.slice(),l=this.inlineNames.slice(),u=this.endLeafBlock.slice(),d=this.wrappers;if(iw(n.defineNodes)){i=Object.assign({},i);let e=r.types.slice(),t;for(let r of n.defineNodes){let{name:n,block:a,composite:o,style:s}=typeof r==`string`?{name:r}:r;if(e.some(e=>e.name==n))continue;o&&(i[e.length]=(e,t,n)=>o(t,n,e.value));let c=e.length,l=o?[`Block`,`BlockContext`]:a?c>=Q.ATXHeading1&&c<=Q.SetextHeading2?[`Block`,`LeafBlock`,`Heading`]:[`Block`,`LeafBlock`]:void 0;e.push(H.define({id:c,name:n,props:l&&[[V.group,l]]})),s&&(t||={},Array.isArray(s)||s instanceof Ul?t[n]=s:Object.assign(t,s))}r=new nl(e),t&&(r=r.extend(Jl(t)))}if(iw(n.props)&&(r=r.extend(...n.props)),iw(n.remove))for(let e of n.remove){let t=this.blockNames.indexOf(e),n=this.inlineNames.indexOf(e);t>-1&&(a[t]=o[t]=void 0),n>-1&&(c[n]=void 0)}if(iw(n.parseBlock))for(let e of n.parseBlock){let t=s.indexOf(e.name);if(t>-1)a[t]=e.parse,o[t]=e.leaf;else{let t=e.before?ow(s,e.before):e.after?ow(s,e.after)+1:s.length-1;a.splice(t,0,e.parse),o.splice(t,0,e.leaf),s.splice(t,0,e.name)}e.endLeaf&&u.push(e.endLeaf)}if(iw(n.parseInline))for(let e of n.parseInline){let t=l.indexOf(e.name);if(t>-1)c[t]=e.parse;else{let t=e.before?ow(l,e.before):e.after?ow(l,e.after)+1:l.length-1;c.splice(t,0,e.parse),l.splice(t,0,e.name)}}return n.wrap&&(d=d.concat(n.wrap)),new e(r,a,o,s,u,i,c,l,d)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let n=new ww(this,e,t);outer:for(let e=t;e<n.end;){let t=n.char(e);for(let r of this.inlineParsers)if(r){let i=r(n,t,e);if(i>=0){e=i;continue outer}}e++}return n.resolveMarkers(0)}};function iw(e){return e!=null&&e.length>0}function aw(e){if(!Array.isArray(e))return e;if(e.length==0)return null;let t=aw(e[0]);if(e.length==1)return t;let n=aw(e.slice(1));if(!n||!t)return t||n;let r=(e,t)=>(e||cw).concat(t||cw),i=t.wrap,a=n.wrap;return{props:r(t.props,n.props),defineNodes:r(t.defineNodes,n.defineNodes),parseBlock:r(t.parseBlock,n.parseBlock),parseInline:r(t.parseInline,n.parseInline),remove:r(t.remove,n.remove),wrap:i?a?(e,t,n,r)=>i(a(e,t,n,r),t,n,r):i:a}}function ow(e,t){let n=e.indexOf(t);if(n<0)throw RangeError(`Position specified relative to unknown parser ${t}`);return n}var sw=[H.none];for(let e=1,t;t=Q[e];e++)sw[e]=H.define({id:e,name:t,props:e>=Q.Escape?[]:[[V.group,e in kC?[`Block`,`BlockContext`]:[`Block`,`LeafBlock`]]],top:t==`Document`});var cw=[],lw=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,n,r=0){return this.content.push(e,t,n,4+r*4),this}writeElements(e,t=0){for(let n of e)n.writeTo(this,t);return this}finish(e,t){return W.build({buffer:this.content,nodeSet:this.nodeSet,reused:this.nodes,topID:e,length:t})}},uw=class{constructor(e,t,n,r=cw){this.type=e,this.from=t,this.to=n,this.children=r}writeTo(e,t){let n=e.content.length;e.writeElements(this.children,t),e.content.push(this.type,this.from+t,this.to+t,e.content.length+4-n)}toTree(e){return new lw(e).writeElements(this.children,-this.from).finish(this.type,this.to-this.from)}},dw=class{constructor(e,t){this.tree=e,this.from=t}get to(){return this.from+this.tree.length}get type(){return this.tree.type.id}get children(){return cw}writeTo(e,t){e.nodes.push(this.tree),e.content.push(e.nodes.length-1,this.from+t,this.to+t,-1)}toTree(){return this.tree}};function $(e,t,n,r){return new uw(e,t,n,r)}var fw={resolve:`Emphasis`,mark:`EmphasisMark`},pw={resolve:`Emphasis`,mark:`EmphasisMark`},mw={},hw={},gw=class{constructor(e,t,n,r){this.type=e,this.from=t,this.to=n,this.side=r}},_w=`!"#$%&'()*+,-./:;<=>?@[\\]^_\`{|}~`,vw=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\u2010-\u2027]/;try{vw=RegExp(`[\\p{S}|\\p{P}]`,`u`)}catch{}var yw={Escape(e,t,n){if(t!=92||n==e.end-1)return-1;let r=e.char(n+1);for(let t=0;t<32;t++)if(_w.charCodeAt(t)==r)return e.append($(Q.Escape,n,n+2));return-1},Entity(e,t,n){if(t!=38)return-1;let r=/^(?:#\d+|#x[a-f\d]+|\w+);/i.exec(e.slice(n+1,n+31));return r?e.append($(Q.Entity,n,n+1+r[0].length)):-1},InlineCode(e,t,n){if(t!=96||n&&e.char(n-1)==96)return-1;let r=n+1;for(;r<e.end&&e.char(r)==96;)r++;let i=r-n,a=0;for(;r<e.end;r++)if(e.char(r)==96){if(a++,a==i&&e.char(r+1)!=96)return e.append($(Q.InlineCode,n,r+1,[$(Q.CodeMark,n,n+i),$(Q.CodeMark,r+1-i,r+1)]))}else a=0;return-1},HTMLTag(e,t,n){if(t!=60||n==e.end-1)return-1;let r=e.slice(n+1,e.end),i=/^(?:[a-z][-\w+.]+:[^\s>]+|[a-z\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*)>/i.exec(r);if(i)return e.append($(Q.Autolink,n,n+1+i[0].length,[$(Q.LinkMark,n,n+1),$(Q.URL,n+1,n+i[0].length),$(Q.LinkMark,n+i[0].length,n+1+i[0].length)]));let a=/^!--[^>](?:-[^-]|[^-])*?-->/i.exec(r);if(a)return e.append($(Q.Comment,n,n+1+a[0].length));let o=/^\?[^]*?\?>/.exec(r);if(o)return e.append($(Q.ProcessingInstruction,n,n+1+o[0].length));let s=/^(?:![A-Z][^]*?>|!\[CDATA\[[^]*?\]\]>|\/\s*[a-zA-Z][\w-]*\s*>|\s*[a-zA-Z][\w-]*(\s+[a-zA-Z:_][\w-.:]*(?:\s*=\s*(?:[^\s"'=<>`]+|'[^']*'|"[^"]*"))?)*\s*(\/\s*)?>)/.exec(r);return s?e.append($(Q.HTMLTag,n,n+1+s[0].length)):-1},Emphasis(e,t,n){if(t!=95&&t!=42)return-1;let r=n+1;for(;e.char(r)==t;)r++;let i=e.slice(n-1,n),a=e.slice(r,r+1),o=vw.test(i),s=vw.test(a),c=/\s|^$/.test(i),l=/\s|^$/.test(a),u=!l&&(!s||c||o),d=!c&&(!o||l||s),f=u&&(t==42||!d||o),p=d&&(t==42||!u||s);return e.append(new gw(t==95?fw:pw,n,r,!!f|(p?2:0)))},HardBreak(e,t,n){if(t==92&&e.char(n+1)==10)return e.append($(Q.HardBreak,n,n+2));if(t==32){let t=n+1;for(;e.char(t)==32;)t++;if(e.char(t)==10&&t>=n+2)return e.append($(Q.HardBreak,n,t+1))}return-1},Link(e,t,n){return t==91?e.append(new gw(mw,n,n+1,1)):-1},Image(e,t,n){return t==33&&e.char(n+1)==91?e.append(new gw(hw,n,n+2,1)):-1},LinkEnd(e,t,n){if(t!=93)return-1;for(let t=e.parts.length-1;t>=0;t--){let r=e.parts[t];if(r instanceof gw&&(r.type==mw||r.type==hw)){if(!r.side||e.skipSpace(r.to)==n&&!/[(\[]/.test(e.slice(n+1,n+2)))return e.parts[t]=null,-1;let i=e.takeContent(t),a=e.parts[t]=bw(e,i,r.type==mw?Q.Link:Q.Image,r.from,n+1);if(r.type==mw)for(let n=0;n<t;n++){let t=e.parts[n];t instanceof gw&&t.type==mw&&(t.side=0)}return a.to}}return-1}};function bw(e,t,n,r,i){let{text:a}=e,o=e.char(i),s=i;if(t.unshift($(Q.LinkMark,r,r+(n==Q.Image?2:1))),t.push($(Q.LinkMark,i-1,i)),o==40){let n=e.skipSpace(i+1),r=xw(a,n-e.offset,e.offset),o;r&&(n=e.skipSpace(r.to),n!=r.to&&(o=Sw(a,n-e.offset,e.offset),o&&(n=e.skipSpace(o.to)))),e.char(n)==41&&(t.push($(Q.LinkMark,i,i+1)),s=n+1,r&&t.push(r),o&&t.push(o),t.push($(Q.LinkMark,n,s)))}else if(o==91){let n=Cw(a,i-e.offset,e.offset,!1);n&&(t.push(n),s=n.to)}return $(n,r,s,t)}function xw(e,t,n){if(e.charCodeAt(t)==60){for(let r=t+1;r<e.length;r++){let i=e.charCodeAt(r);if(i==62)return $(Q.URL,t+n,r+1+n);if(i==60||i==10)return!1}return null}{let r=0,i=t;for(let t=!1;i<e.length;i++){let n=e.charCodeAt(i);if(AC(n))break;if(t)t=!1;else if(n==40)r++;else if(n==41){if(!r)break;r--}else n==92&&(t=!0)}return i>t?$(Q.URL,t+n,i+n):i==e.length&&null}}function Sw(e,t,n){let r=e.charCodeAt(t);if(r!=39&&r!=34&&r!=40)return!1;let i=r==40?41:r;for(let r=t+1,a=!1;r<e.length;r++){let o=e.charCodeAt(r);if(a)a=!1;else if(o==i)return $(Q.LinkTitle,t+n,r+1+n);else o==92&&(a=!0)}return null}function Cw(e,t,n,r){for(let i=!1,a=t+1,o=Math.min(e.length,a+999);a<o;a++){let o=e.charCodeAt(a);if(i)i=!1;else if(o==93)return!r&&$(Q.LinkLabel,t+n,a+1+n);else{if(r&&!AC(o)&&(r=!1),o==91)return!1;o==92&&(i=!0)}}return null}var ww=class{constructor(e,t,n){this.parser=e,this.text=t,this.offset=n,this.parts=[]}char(e){return e>=this.end?-1:this.text.charCodeAt(e-this.offset)}get end(){return this.offset+this.text.length}slice(e,t){return this.text.slice(e-this.offset,t-this.offset)}append(e){return this.parts.push(e),e.to}addDelimiter(e,t,n,r,i){return this.append(new gw(e,t,n,!!r|(i?2:0)))}get hasOpenLink(){for(let e=this.parts.length-1;e>=0;e--){let t=this.parts[e];if(t instanceof gw&&(t.type==mw||t.type==hw))return!0}return!1}addElement(e){return this.append(e)}resolveMarkers(e){for(let t=e;t<this.parts.length;t++){let n=this.parts[t];if(!(n instanceof gw&&n.type.resolve&&n.side&2))continue;let r=n.type==fw||n.type==pw,i=n.to-n.from,a,o=t-1;for(;o>=e;o--){let e=this.parts[o];if(e instanceof gw&&e.side&1&&e.type==n.type&&!(r&&(n.side&1||e.side&2)&&(e.to-e.from+i)%3==0&&((e.to-e.from)%3||i%3))){a=e;break}}if(!a)continue;let s=n.type.resolve,c=[],l=a.from,u=n.to;if(r){let e=Math.min(2,a.to-a.from,i);l=a.to-e,u=n.from+e,s=e==1?`Emphasis`:`StrongEmphasis`}a.type.mark&&c.push(this.elt(a.type.mark,l,a.to));for(let e=o+1;e<t;e++)this.parts[e]instanceof uw&&c.push(this.parts[e]),this.parts[e]=null;n.type.mark&&c.push(this.elt(n.type.mark,n.from,u));let d=this.elt(s,l,u,c);this.parts[o]=r&&a.from!=l?new gw(a.type,a.from,l,a.side):null,(this.parts[t]=r&&n.to!=u?new gw(n.type,u,n.to,n.side):null)?this.parts.splice(t,0,d):this.parts[t]=d}let t=[];for(let n=e;n<this.parts.length;n++){let e=this.parts[n];e instanceof uw&&t.push(e)}return t}findOpeningDelimiter(e){for(let t=this.parts.length-1;t>=0;t--){let n=this.parts[t];if(n instanceof gw&&n.type==e&&n.side&1)return t}return null}takeContent(e){let t=this.resolveMarkers(e);return this.parts.length=e,t}getDelimiterAt(e){let t=this.parts[e];return t instanceof gw?t:null}skipSpace(e){return jC(this.text,e-this.offset)+this.offset}elt(e,t,n,r){return typeof e==`string`?$(this.parser.getNodeType(e),t,n,r):new dw(e,t)}};ww.linkStart=mw,ww.imageStart=hw;function Tw(e,t){if(!t.length)return e;if(!e.length)return t;let n=e.slice(),r=0;for(let e of t){for(;r<n.length&&n[r].to<e.to;)r++;if(r<n.length&&n[r].from<e.from){let t=n[r];t instanceof uw&&(n[r]=new uw(t.type,t.from,t.to,Tw(t.children,[e])))}else n.splice(r++,0,e)}return n}var Ew=[Q.CodeBlock,Q.ListItem,Q.OrderedList,Q.BulletList],Dw=class{constructor(e,t){this.fragments=e,this.input=t,this.i=0,this.fragment=null,this.fragmentEnd=-1,this.cursor=null,e.length&&(this.fragment=e[this.i++])}nextFragment(){this.fragment=this.i<this.fragments.length?this.fragments[this.i++]:null,this.cursor=null,this.fragmentEnd=-1}moveTo(e,t){for(;this.fragment&&this.fragment.to<=e;)this.nextFragment();if(!this.fragment||this.fragment.from>(e?e-1:0))return!1;if(this.fragmentEnd<0){let e=this.fragment.to;for(;e>0&&this.input.read(e-1,e)!=`
39
- `;)e--;this.fragmentEnd=e?e-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=t;if(!n.childAfter(r))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(V.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-+!!this.fragment.openEnd,i=e.absoluteLineStart,a=i,o=e.block.children.length,s=a,c=o;for(;;){if(t.to-n>r){if(t.type.isAnonymous&&t.firstChild())continue;break}let i=Ow(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,i);else{let n=new W(e.parser.nodeSet.types[Q.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(n,t.tree),e.addNode(n,i)}if(t.type.is(`Block`)&&(Ew.indexOf(t.type.id)<0?(a=t.to-n,o=e.block.children.length):(a=s,o=c),s=t.to-n,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>o;)e.block.children.pop(),e.block.positions.pop();return a-i}};function Ow(e,t){let n=e;for(let r=1;r<t.length;r++){let i=t[r-1].to,a=t[r].from;i<e&&(n-=a-i)}return n}var kw=Jl({"Blockquote/...":K.quote,HorizontalRule:K.contentSeparator,"ATXHeading1/... SetextHeading1/...":K.heading1,"ATXHeading2/... SetextHeading2/...":K.heading2,"ATXHeading3/...":K.heading3,"ATXHeading4/...":K.heading4,"ATXHeading5/...":K.heading5,"ATXHeading6/...":K.heading6,"Comment CommentBlock":K.comment,Escape:K.escape,Entity:K.character,"Emphasis/...":K.emphasis,"StrongEmphasis/...":K.strong,"Link/... Image/...":K.link,"OrderedList/... BulletList/...":K.list,"BlockQuote/...":K.quote,"InlineCode CodeText":K.monospace,"URL Autolink":K.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":K.processingInstruction,"CodeInfo LinkLabel":K.labelName,LinkTitle:K.string,Paragraph:K.content}),Aw=new rw(new nl(sw).extend(kw),Object.keys(JC).map(e=>JC[e]),Object.keys(JC).map(e=>QC[e]),Object.keys(JC),$C,kC,Object.keys(yw).map(e=>yw[e]),Object.keys(yw),[]);function jw(e,t,n){let r=[];for(let i=e.firstChild,a=t;;i=i.nextSibling){let e=i?i.from:n;if(e>a&&r.push({from:a,to:e}),!i)break;a=i.to}return r}function Mw(e){let{codeParser:t,htmlParser:n}=e;return{wrap:Ol((e,r)=>{let i=e.type.id;if(t&&(i==Q.CodeBlock||i==Q.FencedCode)){let n=``;if(i==Q.FencedCode){let t=e.node.getChild(Q.CodeInfo);t&&(n=r.read(t.from,t.to))}let a=t(n);if(a)return{parser:a,overlay:e=>e.type.id==Q.CodeText,bracketed:i==Q.FencedCode}}else if(n&&(i==Q.HTMLBlock||i==Q.HTMLTag||i==Q.CommentBlock))return{parser:n,overlay:jw(e.node,e.from,e.to)};return null})}}var Nw={resolve:`Strikethrough`,mark:`StrikethroughMark`},Pw={defineNodes:[{name:`Strikethrough`,style:{"Strikethrough/...":K.strikethrough}},{name:`StrikethroughMark`,style:K.processingInstruction}],parseInline:[{name:`Strikethrough`,parse(e,t,n){if(t!=126||e.char(n+1)!=126||e.char(n+2)==126)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=vw.test(r),c=vw.test(i);return e.addDelimiter(Nw,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))},after:`Emphasis`}]};function Fw(e,t,n=0,r,i=0){let a=0,o=!0,s=-1,c=-1,l=!1,u=()=>{r.push(e.elt(`TableCell`,i+s,i+c,e.parser.parseInline(t.slice(s,c),i+s)))};for(let d=n;d<t.length;d++){let n=t.charCodeAt(d);n==124&&!l?((!o||s>-1)&&a++,o=!1,r&&(s>-1&&u(),r.push(e.elt(`TableDelimiter`,d+i,d+i+1))),s=c=-1):(l||n!=32&&n!=9)&&(s<0&&(s=d),c=d+1),l=!l&&n==92}return s>-1&&(a++,r&&u()),a}function Iw(e,t){for(let n=t;n<e.length;n++){let t=e.charCodeAt(n);if(t==124)return!0;t==92&&n++}return!1}var Lw=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Rw=class{constructor(){this.rows=null}nextLine(e,t,n){if(this.rows==null){this.rows=!1;let r;if((t.next==45||t.next==58||t.next==124)&&Lw.test(r=t.text.slice(t.pos))){let i=[];Fw(e,n.content,0,i,n.start)==Fw(e,r,0)&&(this.rows=[e.elt(`TableHeader`,n.start,n.start+n.content.length,i),e.elt(`TableDelimiter`,e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];Fw(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt(`TableRow`,e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt(`Table`,t.start,t.start+t.content.length,this.rows)),!0):!1}},zw={defineNodes:[{name:`Table`,block:!0},{name:`TableHeader`,style:{"TableHeader/...":K.heading}},`TableRow`,{name:`TableCell`,style:K.content},{name:`TableDelimiter`,style:K.processingInstruction}],parseBlock:[{name:`Table`,leaf(e,t){return Iw(t.content,0)?new Rw:null},endLeaf(e,t,n){if(n.parsers.some(e=>e instanceof Rw)||!Iw(t.text,t.basePos))return!1;let r=e.peekLine();return Lw.test(r)&&Fw(e,t.text,t.basePos)==Fw(e,r,t.basePos)},before:`SetextHeading`}]},Bw=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt(`Task`,t.start,t.start+t.content.length,[e.elt(`TaskMarker`,t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},Vw={defineNodes:[{name:`Task`,block:!0,style:K.list},{name:`TaskMarker`,style:K.atom}],parseBlock:[{name:`TaskList`,leaf(e,t){return/^\[[ xX]\][ \t]/.test(t.content)&&e.parentType().name==`ListItem`?new Bw:null},after:`SetextHeading`}]},Hw=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,Uw=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,Ww=/[\w-]+\.[\w-]+($|[/:])/,Gw=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,Kw=/\/[a-zA-Z\d@.]+/gy;function qw(e,t,n,r){let i=0;for(let a=t;a<n;a++)e[a]==r&&i++;return i}function Jw(e,t){Uw.lastIndex=t;let n=Uw.exec(e);if(!n||Ww.exec(n[0])[0].indexOf(`_`)>-1)return-1;let r=t+n[0].length;for(;;){let n=e[r-1],i;if(/[?!.,:*_~]/.test(n)||n==`)`&&qw(e,t,r,`)`)>qw(e,t,r,`(`))r--;else if(n==`;`&&(i=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(t,r))))r=t+i.index;else break}return r}function Yw(e,t){Gw.lastIndex=t;let n=Gw.exec(e);if(!n)return-1;let r=n[0][n[0].length-1];return r==`_`||r==`-`?-1:t+n[0].length-+(r==`.`)}var Xw=[zw,Vw,Pw,{parseInline:[{name:`Autolink`,parse(e,t,n){let r=n-e.offset;if(r&&/\w/.test(e.text[r-1]))return-1;Hw.lastIndex=r;let i=Hw.exec(e.text),a=-1;return!i||(i[1]||i[2]?(a=Jw(e.text,r+i[0].length),a>-1&&e.hasOpenLink&&(a=r+/([^\[\]]|\[[^\]]*\])*/.exec(e.text.slice(r,a))[0].length)):i[3]?a=Yw(e.text,r):(a=Yw(e.text,r+i[0].length),a>-1&&i[0]==`xmpp:`&&(Kw.lastIndex=a,i=Kw.exec(e.text),i&&(a=i.index+i[0].length))),a<0)?-1:(e.addElement(e.elt(`URL`,n,a+e.offset)),a+e.offset)}}]}];function Zw(e,t,n){return(r,i,a)=>{if(i!=e||r.char(a+1)==e)return-1;let o=[r.elt(n,a,a+1)];for(let i=a+1;i<r.end;i++){let s=r.char(i);if(s==e)return r.addElement(r.elt(t,a,i+1,o.concat(r.elt(n,i,i+1))));if(s==92&&o.push(r.elt(`Escape`,i,i+++2)),AC(s))break}return-1}}var Qw={defineNodes:[{name:`Superscript`,style:K.special(K.content)},{name:`SuperscriptMark`,style:K.processingInstruction}],parseInline:[{name:`Superscript`,parse:Zw(94,`Superscript`,`SuperscriptMark`)}]},$w={defineNodes:[{name:`Subscript`,style:K.special(K.content)},{name:`SubscriptMark`,style:K.processingInstruction}],parseInline:[{name:`Subscript`,parse:Zw(126,`Subscript`,`SubscriptMark`)}]},eT={defineNodes:[{name:`Emoji`,style:K.character}],parseInline:[{name:`Emoji`,parse(e,t,n){let r;return t!=58||!(r=/^[a-zA-Z_0-9]+:/.exec(e.slice(n+1,e.end)))?-1:e.addElement(e.elt(`Emoji`,n,n+1+r[0].length))}}]},tT=_u({commentTokens:{block:{open:`<!--`,close:`-->`}}}),nT=new V,rT=Aw.configure({props:[td.add(e=>!e.is(`Block`)||e.is(`Document`)||iT(e)!=null||aT(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),nT.add(iT),zu.add({Document:()=>null}),gu.add({Document:tT})]});function iT(e){let t=/^(?:ATX|Setext)Heading(\d)$/.exec(e.name);return t?+t[1]:void 0}function aT(e){return e.name==`OrderedList`||e.name==`BulletList`}function oT(e,t){let n=e;for(;;){let e=n.nextSibling,r;if(!e||(r=iT(e.type))!=null&&r<=t)break;n=e}return n.to}var sT=ed.of((e,t,n)=>{for(let r=q(e).resolveInner(n,-1);r&&!(r.from<t);r=r.parent){let e=r.type.prop(nT);if(e==null)continue;let t=oT(r,e);if(t>n)return{from:n,to:t}}return null});function cT(e){return new yu(tT,e,[],`markdown`)}var lT=cT(rT),uT=cT(rT.configure([Xw,$w,Qw,eT,{props:[td.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]));function dT(e,t){return n=>{if(n&&e){let t=null;if(n=/\S*/.exec(n)[0],t=typeof e==`function`?e(n):Mu.matchLanguageName(e,n,!0),t instanceof Mu)return t.support?t.support.language.parser:wu.getSkippingParser(t.load());if(t)return t.parser}return t?t.parser:null}}var fT=class{constructor(e,t,n,r,i,a,o){this.node=e,this.from=t,this.to=n,this.spaceBefore=r,this.spaceAfter=i,this.type=a,this.item=o}blank(e,t=!0){let n=this.spaceBefore+(this.node.name==`Blockquote`?`>`:``);if(e!=null){for(;n.length<e;)n+=` `;return n}for(let e=this.to-this.from-n.length-this.spaceAfter.length;e>0;e--)n+=` `;return n+(t?this.spaceAfter:``)}marker(e,t){let n=this.node.name==`OrderedList`?String(+mT(this.item,e)[2]+t):``;return this.spaceBefore+n+this.type+this.spaceAfter}};function pT(e,t){let n=[],r=[];for(let t=e;t;t=t.parent){if(t.name==`FencedCode`)return r;(t.name==`ListItem`||t.name==`Blockquote`)&&n.push(t)}for(let e=n.length-1;e>=0;e--){let i=n[e],a,o=t.lineAt(i.from),s=i.from-o.from;if(i.name==`Blockquote`&&(a=/^ *>( ?)/.exec(o.text.slice(s))))r.push(new fT(i,s,s+a[0].length,``,a[1],`>`,null));else if(i.name==`ListItem`&&i.parent.name==`OrderedList`&&(a=/^( *)\d+([.)])( *)/.exec(o.text.slice(s)))){let e=a[3],t=a[0].length;e.length>=4&&(e=e.slice(0,e.length-4),t-=4),r.push(new fT(i.parent,s,s+t,a[1],e,a[2],i))}else if(i.name==`ListItem`&&i.parent.name==`BulletList`&&(a=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(s)))){let e=a[4],t=a[0].length;e.length>4&&(e=e.slice(0,e.length-4),t-=4);let n=a[2];a[3]&&(n+=a[3].replace(/[xX]/,` `)),r.push(new fT(i.parent,s,s+t,a[1],e,n,i))}}return r}function mT(e,t){return/^(\s*)(\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function hT(e,t,n,r=0){for(let i=-1,a=e;;){if(a.name==`ListItem`){let e=mT(a,t),o=+e[2];if(i>=0){if(o!=i+1)return;n.push({from:a.from+e[1].length,to:a.from+e[0].length,insert:String(i+2+r)})}i=o}let e=a.nextSibling;if(!e)break;a=e}}function gT(e,t){let n=/^[ \t]*/.exec(e)[0].length;if(!n||t.facet(Pu)!=` `)return e;let r=Tt(e,4,n),i=``;for(let e=r;e>0;)e>=4?(i+=` `,e-=4):(i+=` `,e--);return i+e.slice(n)}var _T=((e={})=>({state:t,dispatch:n})=>{let r=q(t),{doc:i}=t,a=null,o=t.changeByRange(n=>{if(!n.empty||!uT.isActiveAt(t,n.from,-1)&&!uT.isActiveAt(t,n.from,1))return a={range:n};let o=n.from,s=i.lineAt(o),c=pT(r.resolveInner(o,-1),i);for(;c.length&&c[c.length-1].from>o-s.from;)c.pop();if(!c.length)return a={range:n};let l=c[c.length-1];if(l.to-l.spaceAfter.length>o-s.from)return a={range:n};let u=o>=l.to-l.spaceAfter.length&&!/\S/.test(s.text.slice(l.to));if(l.item&&u){if(l.item.from<s.from&&!/^[\s>]*$/.test(s.text.slice(0,l.to)))return a={range:n};let r=l.node.firstChild,u=l.node.getChild(`ListItem`,`ListItem`);if(r.to>=o||u&&u.to<o||s.from>0&&!/[^\s>]/.test(i.lineAt(s.from-1).text)||e.nonTightLists===!1){let e=c.length>1?c[c.length-2]:null,t,n=``;e&&e.item?(t=s.from+e.from,n=e.marker(i,1)):t=s.from+(e?e.to:0);let r=[{from:t,to:o,insert:n}];return l.node.name==`OrderedList`&&hT(l.item,i,r,-2),e&&e.node.name==`OrderedList`&&hT(e.item,i,r),{range:T.cursor(t+n.length),changes:r}}{let e=bT(c,t,s);return{range:T.cursor(o+e.length+1),changes:{from:s.from,insert:e+t.lineBreak}}}}if(l.node.name==`Blockquote`&&u&&s.from){let e=i.lineAt(s.from-1),r=/>\s*$/.exec(e.text);if(r&&r.index==l.from){let i=t.changes([{from:e.from+r.index,to:e.to},{from:s.from+l.from,to:s.to}]);return{range:n.map(i),changes:i}}}let d=[];l.node.name==`OrderedList`&&hT(l.item,i,d);let f=l.item&&l.item.from<s.from,p=``;if(!f||/^[\s\d.)\-+*>]*/.exec(s.text)[0].length>=l.to)for(let e=0,t=c.length-1;e<=t;e++)p+=e==t&&!f?c[e].marker(i,1):c[e].blank(e<t?Tt(s.text,4,c[e+1].from)-p.length:null);let m=o;for(;m>s.from&&/\s/.test(s.text.charAt(m-s.from-1));)m--;return p=gT(p,t),yT(l.node,t.doc)&&(p=bT(c,t,s)+t.lineBreak+p),d.push({from:m,to:o,insert:t.lineBreak+p}),{range:T.cursor(m+p.length+1),changes:d}});return!a&&(n(t.update(o,{scrollIntoView:!0,userEvent:`input`})),!0)})();function vT(e){return e.name==`QuoteMark`||e.name==`ListMark`}function yT(e,t){if(e.name!=`OrderedList`&&e.name!=`BulletList`)return!1;let n=e.firstChild,r=e.getChild(`ListItem`,`ListItem`);if(!r)return!1;let i=t.lineAt(n.to),a=t.lineAt(r.from),o=/^[\s>]*$/.test(i.text);return i.number+ +!o<a.number}function bT(e,t,n){let r=``;for(let t=0,i=e.length-2;t<=i;t++)r+=e[t].blank(t<i?Tt(n.text,4,e[t+1].from)-r.length:null,t<i);return gT(r,t)}function xT(e,t){let n=e.resolveInner(t,-1),r=t;vT(n)&&(r=n.from,n=n.parent);for(let e;e=n.childBefore(r);)if(vT(e))r=e.from;else if(e.name==`OrderedList`||e.name==`BulletList`)n=e.lastChild,r=n.to;else break;return n}var ST=[{key:`Enter`,run:_T},{key:`Backspace`,run:({state:e,dispatch:t})=>{let n=q(e),r=null,i=e.changeByRange(t=>{let i=t.from,{doc:a}=e;if(t.empty&&uT.isActiveAt(e,t.from)){let t=a.lineAt(i),r=pT(xT(n,i),a);if(r.length){let n=r[r.length-1],a=n.to-n.spaceAfter.length+ +!!n.spaceAfter;if(i-t.from>a&&!/\S/.test(t.text.slice(a,i-t.from)))return{range:T.cursor(t.from+a),changes:{from:t.from+a,to:i}};if(i-t.from==a&&(n.item&&t.from<=n.item.from||/^[\s>]*$/.test(t.text.slice(0,n.to)))){let r=t.from+n.from;if(n.item&&n.node.from<n.item.from&&/\S/.test(t.text.slice(n.from,n.to))){let i=n.blank(Tt(t.text,4,n.to)-Tt(t.text,4,n.from));return r==t.from&&(i=gT(i,e)),{range:T.cursor(r+i.length),changes:{from:r,to:t.from+n.to,insert:i}}}if(r<i)return{range:T.cursor(r),changes:{from:r,to:i}}}}}return r={range:t}});return!r&&(t(e.update(i,{scrollIntoView:!0,userEvent:`delete`})),!0)}}],CT=xC({matchClosingTags:!1});function wT(e={}){let{codeLanguages:t,defaultCodeLanguage:n,addKeymap:r=!0,base:{parser:i}=lT,completeHTMLTags:a=!0,pasteURLAsLink:o=!0,htmlTagLanguage:s=CT}=e;if(!(i instanceof rw))throw RangeError("Base parser provided to `markdown` should be a Markdown parser");let c=e.extensions?[e.extensions]:[],l=[s.support,sT],u;o&&l.push(kT),n instanceof ju?(l.push(n.support),u=n.language):n&&(u=n);let d=t||u?dT(t,u):void 0;c.push(Mw({codeParser:d,htmlParser:s.language.parser})),r&&l.push(Ae.high(Uo.of(ST)));let f=cT(i.configure(c));return a&&l.push(f.data.of({autocomplete:TT})),new ju(f,l)}function TT(e){let{state:t,pos:n}=e,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(t.sliceDoc(n-25,n));if(!r)return null;let i=q(t).resolveInner(n,-1);for(;i&&!i.type.isTop;){if(i.name==`CodeBlock`||i.name==`FencedCode`||i.name==`ProcessingInstructionBlock`||i.name==`CommentBlock`||i.name==`Link`||i.name==`Image`)return null;i=i.parent}return{from:n-r[0].length,to:n,options:DT(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}var ET=null;function DT(){if(ET)return ET;let e=mC(new Vh(k.create({extensions:CT}),0,!0));return ET=e?e.options:[]}var OT=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,kT=B.domEventHandlers({paste:(e,t)=>{let{main:n}=t.state.selection;if(n.empty)return!1;let r=e.clipboardData?.getData(`text/plain`);if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r=`https://`+r),!uT.isActiveAt(t.state,n.from,1)))return!1;let i=q(t.state),a=!1;return i.iterate({from:n.from,to:n.to,enter:e=>{(e.from>n.from||OT.test(e.name))&&(a=!0)},leave:e=>{e.to<n.to&&(a=!0)}}),!a&&(t.dispatch({changes:[{from:n.from,insert:`[`},{from:n.to,insert:`](${r})`}],userEvent:`input.paste`,scrollIntoView:!0}),!0)}}),AT=`#e5c07b`,jT=`#e06c75`,MT=`#56b6c2`,NT=`#ffffff`,PT=`#abb2bf`,FT=`#7d8799`,IT=`#61afef`,LT=`#98c379`,RT=`#d19a66`,zT=`#c678dd`,BT=`#21252b`,VT=`#2c313a`,HT=`#282c34`,UT=`#353a42`,WT=`#3E4451`,GT=`#528bff`,KT=[B.theme({"&":{color:PT,backgroundColor:HT},".cm-content":{caretColor:GT},".cm-cursor, .cm-dropCursor":{borderLeftColor:GT},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:WT},".cm-panels":{backgroundColor:BT,color:PT},".cm-panels.cm-panels-top":{borderBottom:`2px solid black`},".cm-panels.cm-panels-bottom":{borderTop:`2px solid black`},".cm-searchMatch":{backgroundColor:`#72a1ff59`,outline:`1px solid #457dff`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`#6199ff2f`},".cm-activeLine":{backgroundColor:`#6699ff0b`},".cm-selectionMatch":{backgroundColor:`#aafe661a`},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bad0f847`},".cm-gutters":{backgroundColor:HT,color:FT,border:`none`},".cm-activeLineGutter":{backgroundColor:VT},".cm-foldPlaceholder":{backgroundColor:`transparent`,border:`none`,color:`#ddd`},".cm-tooltip":{border:`none`,backgroundColor:UT},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:`transparent`,borderBottomColor:`transparent`},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:UT,borderBottomColor:UT},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:VT,color:PT}}},{dark:!0}),Nd(kd.define([{tag:K.keyword,color:zT},{tag:[K.name,K.deleted,K.character,K.propertyName,K.macroName],color:jT},{tag:[K.function(K.variableName),K.labelName],color:IT},{tag:[K.color,K.constant(K.name),K.standard(K.name)],color:RT},{tag:[K.definition(K.name),K.separator],color:PT},{tag:[K.typeName,K.className,K.number,K.changed,K.annotation,K.modifier,K.self,K.namespace],color:AT},{tag:[K.operator,K.operatorKeyword,K.url,K.escape,K.regexp,K.link,K.special(K.string)],color:MT},{tag:[K.meta,K.comment],color:FT},{tag:K.strong,fontWeight:`bold`},{tag:K.emphasis,fontStyle:`italic`},{tag:K.strikethrough,textDecoration:`line-through`},{tag:K.link,color:FT,textDecoration:`underline`},{tag:K.heading,fontWeight:`bold`,color:jT},{tag:[K.atom,K.bool,K.special(K.variableName)],color:RT},{tag:[K.processingInstruction,K.string,K.inserted],color:LT},{tag:K.invalid,color:NT}]))],qT=n();function JT(e){switch(e){case`typescript`:case`tsx`:return Ay({typescript:!0});case`javascript`:case`jsx`:case`mjs`:case`cjs`:return Ay();case`json`:case`jsonl`:return Ry();case`yaml`:case`yml`:return zb();case`html`:case`htm`:return xC();case`css`:case`scss`:case`less`:return qS();case`markdown`:case`mdx`:return wT();default:return[]}}var YT=new Me;function XT(e){return e?KT:Nd(Id)}function ZT({initialValue:e,language:t,isDark:n,onChange:i,onSave:a}){let o=(0,r.useRef)(null),s=(0,r.useRef)(null),c=(0,r.useRef)(i),l=(0,r.useRef)(a);return c.current=i,l.current=a,(0,r.useEffect)(()=>{let r=o.current;if(!r)return;let i=new B({parent:r,state:k.create({doc:e,extensions:[tv,JT(t),YT.of(XT(n)),Uo.of([{key:`Mod-s`,preventDefault:!0,run:()=>(l.current(),!0)},Am]),B.updateListener.of(e=>{e.docChanged&&c.current(e.state.doc.toString())}),B.theme({"&":{height:`100%`,fontSize:`var(--text-lg)`},".cm-scroller":{overflow:`auto`,fontFamily:`var(--font-mono)`},".cm-content":{fontFamily:`var(--font-mono)`}})]})});return s.current=i,()=>{i.destroy(),s.current=null}},[]),(0,r.useEffect)(()=>{s.current?.dispatch({effects:YT.reconfigure(XT(n))})},[n]),(0,qT.jsx)(`div`,{ref:o,style:{height:`100%`,minHeight:0}})}export{ZT as default};
39
+ `;)e--;this.fragmentEnd=e?e-1:0}let n=this.cursor;n||(n=this.cursor=this.fragment.tree.cursor(),n.firstChild());let r=e+this.fragment.offset;for(;n.to<=r;)if(!n.parent())return!1;for(;;){if(n.from>=r)return this.fragment.from<=t;if(!n.childAfter(r))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(V.contextHash)==e}takeNodes(e){let t=this.cursor,n=this.fragment.offset,r=this.fragmentEnd-+!!this.fragment.openEnd,i=e.absoluteLineStart,a=i,o=e.block.children.length,s=a,c=o;for(;;){if(t.to-n>r){if(t.type.isAnonymous&&t.firstChild())continue;break}let i=Ow(t.from-n,e.ranges);if(t.to-n<=e.ranges[e.rangeI].to)e.addNode(t.tree,i);else{let n=new W(e.parser.nodeSet.types[Q.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(n,t.tree),e.addNode(n,i)}if(t.type.is(`Block`)&&(Ew.indexOf(t.type.id)<0?(a=t.to-n,o=e.block.children.length):(a=s,o=c),s=t.to-n,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>o;)e.block.children.pop(),e.block.positions.pop();return a-i}};function Ow(e,t){let n=e;for(let r=1;r<t.length;r++){let i=t[r-1].to,a=t[r].from;i<e&&(n-=a-i)}return n}var kw=Jl({"Blockquote/...":K.quote,HorizontalRule:K.contentSeparator,"ATXHeading1/... SetextHeading1/...":K.heading1,"ATXHeading2/... SetextHeading2/...":K.heading2,"ATXHeading3/...":K.heading3,"ATXHeading4/...":K.heading4,"ATXHeading5/...":K.heading5,"ATXHeading6/...":K.heading6,"Comment CommentBlock":K.comment,Escape:K.escape,Entity:K.character,"Emphasis/...":K.emphasis,"StrongEmphasis/...":K.strong,"Link/... Image/...":K.link,"OrderedList/... BulletList/...":K.list,"BlockQuote/...":K.quote,"InlineCode CodeText":K.monospace,"URL Autolink":K.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":K.processingInstruction,"CodeInfo LinkLabel":K.labelName,LinkTitle:K.string,Paragraph:K.content}),Aw=new rw(new nl(sw).extend(kw),Object.keys(JC).map(e=>JC[e]),Object.keys(JC).map(e=>QC[e]),Object.keys(JC),$C,kC,Object.keys(yw).map(e=>yw[e]),Object.keys(yw),[]);function jw(e,t,n){let r=[];for(let i=e.firstChild,a=t;;i=i.nextSibling){let e=i?i.from:n;if(e>a&&r.push({from:a,to:e}),!i)break;a=i.to}return r}function Mw(e){let{codeParser:t,htmlParser:n}=e;return{wrap:Ol((e,r)=>{let i=e.type.id;if(t&&(i==Q.CodeBlock||i==Q.FencedCode)){let n=``;if(i==Q.FencedCode){let t=e.node.getChild(Q.CodeInfo);t&&(n=r.read(t.from,t.to))}let a=t(n);if(a)return{parser:a,overlay:e=>e.type.id==Q.CodeText,bracketed:i==Q.FencedCode}}else if(n&&(i==Q.HTMLBlock||i==Q.HTMLTag||i==Q.CommentBlock))return{parser:n,overlay:jw(e.node,e.from,e.to)};return null})}}var Nw={resolve:`Strikethrough`,mark:`StrikethroughMark`},Pw={defineNodes:[{name:`Strikethrough`,style:{"Strikethrough/...":K.strikethrough}},{name:`StrikethroughMark`,style:K.processingInstruction}],parseInline:[{name:`Strikethrough`,parse(e,t,n){if(t!=126||e.char(n+1)!=126||e.char(n+2)==126)return-1;let r=e.slice(n-1,n),i=e.slice(n+2,n+3),a=/\s|^$/.test(r),o=/\s|^$/.test(i),s=vw.test(r),c=vw.test(i);return e.addDelimiter(Nw,n,n+2,!o&&(!c||a||s),!a&&(!s||o||c))},after:`Emphasis`}]};function Fw(e,t,n=0,r,i=0){let a=0,o=!0,s=-1,c=-1,l=!1,u=()=>{r.push(e.elt(`TableCell`,i+s,i+c,e.parser.parseInline(t.slice(s,c),i+s)))};for(let d=n;d<t.length;d++){let n=t.charCodeAt(d);n==124&&!l?((!o||s>-1)&&a++,o=!1,r&&(s>-1&&u(),r.push(e.elt(`TableDelimiter`,d+i,d+i+1))),s=c=-1):(l||n!=32&&n!=9)&&(s<0&&(s=d),c=d+1),l=!l&&n==92}return s>-1&&(a++,r&&u()),a}function Iw(e,t){for(let n=t;n<e.length;n++){let t=e.charCodeAt(n);if(t==124)return!0;t==92&&n++}return!1}var Lw=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Rw=class{constructor(){this.rows=null}nextLine(e,t,n){if(this.rows==null){this.rows=!1;let r;if((t.next==45||t.next==58||t.next==124)&&Lw.test(r=t.text.slice(t.pos))){let i=[];Fw(e,n.content,0,i,n.start)==Fw(e,r,0)&&(this.rows=[e.elt(`TableHeader`,n.start,n.start+n.content.length,i),e.elt(`TableDelimiter`,e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];Fw(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt(`TableRow`,e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt(`Table`,t.start,t.start+t.content.length,this.rows)),!0):!1}},zw={defineNodes:[{name:`Table`,block:!0},{name:`TableHeader`,style:{"TableHeader/...":K.heading}},`TableRow`,{name:`TableCell`,style:K.content},{name:`TableDelimiter`,style:K.processingInstruction}],parseBlock:[{name:`Table`,leaf(e,t){return Iw(t.content,0)?new Rw:null},endLeaf(e,t,n){if(n.parsers.some(e=>e instanceof Rw)||!Iw(t.text,t.basePos))return!1;let r=e.peekLine();return Lw.test(r)&&Fw(e,t.text,t.basePos)==Fw(e,r,t.basePos)},before:`SetextHeading`}]},Bw=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt(`Task`,t.start,t.start+t.content.length,[e.elt(`TaskMarker`,t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},Vw={defineNodes:[{name:`Task`,block:!0,style:K.list},{name:`TaskMarker`,style:K.atom}],parseBlock:[{name:`TaskList`,leaf(e,t){return/^\[[ xX]\][ \t]/.test(t.content)&&e.parentType().name==`ListItem`?new Bw:null},after:`SetextHeading`}]},Hw=/(www\.)|(https?:\/\/)|([\w.+-]{1,100}@)|(mailto:|xmpp:)/gy,Uw=/[\w-]+(\.[\w-]+)+(:\d+)?(\/[^\s<]*)?/gy,Ww=/[\w-]+\.[\w-]+($|[/:])/,Gw=/[\w.+-]+@[\w-]+(\.[\w.-]+)+/gy,Kw=/\/[a-zA-Z\d@.]+/gy;function qw(e,t,n,r){let i=0;for(let a=t;a<n;a++)e[a]==r&&i++;return i}function Jw(e,t){Uw.lastIndex=t;let n=Uw.exec(e);if(!n||Ww.exec(n[0])[0].indexOf(`_`)>-1)return-1;let r=t+n[0].length;for(;;){let n=e[r-1],i;if(/[?!.,:*_~]/.test(n)||n==`)`&&qw(e,t,r,`)`)>qw(e,t,r,`(`))r--;else if(n==`;`&&(i=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(t,r))))r=t+i.index;else break}return r}function Yw(e,t){Gw.lastIndex=t;let n=Gw.exec(e);if(!n)return-1;let r=n[0][n[0].length-1];return r==`_`||r==`-`?-1:t+n[0].length-+(r==`.`)}var Xw=[zw,Vw,Pw,{parseInline:[{name:`Autolink`,parse(e,t,n){let r=n-e.offset;if(r&&/\w/.test(e.text[r-1]))return-1;Hw.lastIndex=r;let i=Hw.exec(e.text),a=-1;return!i||(i[1]||i[2]?(a=Jw(e.text,r+i[0].length),a>-1&&e.hasOpenLink&&(a=r+/([^\[\]]|\[[^\]]*\])*/.exec(e.text.slice(r,a))[0].length)):i[3]?a=Yw(e.text,r):(a=Yw(e.text,r+i[0].length),a>-1&&i[0]==`xmpp:`&&(Kw.lastIndex=a,i=Kw.exec(e.text),i&&(a=i.index+i[0].length))),a<0)?-1:(e.addElement(e.elt(`URL`,n,a+e.offset)),a+e.offset)}}]}];function Zw(e,t,n){return(r,i,a)=>{if(i!=e||r.char(a+1)==e)return-1;let o=[r.elt(n,a,a+1)];for(let i=a+1;i<r.end;i++){let s=r.char(i);if(s==e)return r.addElement(r.elt(t,a,i+1,o.concat(r.elt(n,i,i+1))));if(s==92&&o.push(r.elt(`Escape`,i,i+++2)),AC(s))break}return-1}}var Qw={defineNodes:[{name:`Superscript`,style:K.special(K.content)},{name:`SuperscriptMark`,style:K.processingInstruction}],parseInline:[{name:`Superscript`,parse:Zw(94,`Superscript`,`SuperscriptMark`)}]},$w={defineNodes:[{name:`Subscript`,style:K.special(K.content)},{name:`SubscriptMark`,style:K.processingInstruction}],parseInline:[{name:`Subscript`,parse:Zw(126,`Subscript`,`SubscriptMark`)}]},eT={defineNodes:[{name:`Emoji`,style:K.character}],parseInline:[{name:`Emoji`,parse(e,t,n){let r;return t!=58||!(r=/^[a-zA-Z_0-9]+:/.exec(e.slice(n+1,e.end)))?-1:e.addElement(e.elt(`Emoji`,n,n+1+r[0].length))}}]},tT=_u({commentTokens:{block:{open:`<!--`,close:`-->`}}}),nT=new V,rT=Aw.configure({props:[td.add(e=>!e.is(`Block`)||e.is(`Document`)||iT(e)!=null||aT(e)?void 0:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})),nT.add(iT),zu.add({Document:()=>null}),gu.add({Document:tT})]});function iT(e){let t=/^(?:ATX|Setext)Heading(\d)$/.exec(e.name);return t?+t[1]:void 0}function aT(e){return e.name==`OrderedList`||e.name==`BulletList`}function oT(e,t){let n=e;for(;;){let e=n.nextSibling,r;if(!e||(r=iT(e.type))!=null&&r<=t)break;n=e}return n.to}var sT=ed.of((e,t,n)=>{for(let r=q(e).resolveInner(n,-1);r&&!(r.from<t);r=r.parent){let e=r.type.prop(nT);if(e==null)continue;let t=oT(r,e);if(t>n)return{from:n,to:t}}return null});function cT(e){return new yu(tT,e,[],`markdown`)}var lT=cT(rT),uT=cT(rT.configure([Xw,$w,Qw,eT,{props:[td.add({Table:(e,t)=>({from:t.doc.lineAt(e.from).to,to:e.to})})]}]));function dT(e,t){return n=>{if(n&&e){let t=null;if(n=/\S*/.exec(n)[0],t=typeof e==`function`?e(n):Mu.matchLanguageName(e,n,!0),t instanceof Mu)return t.support?t.support.language.parser:wu.getSkippingParser(t.load());if(t)return t.parser}return t?t.parser:null}}var fT=class{constructor(e,t,n,r,i,a,o){this.node=e,this.from=t,this.to=n,this.spaceBefore=r,this.spaceAfter=i,this.type=a,this.item=o}blank(e,t=!0){let n=this.spaceBefore+(this.node.name==`Blockquote`?`>`:``);if(e!=null){for(;n.length<e;)n+=` `;return n}for(let e=this.to-this.from-n.length-this.spaceAfter.length;e>0;e--)n+=` `;return n+(t?this.spaceAfter:``)}marker(e,t){let n=this.node.name==`OrderedList`?String(+mT(this.item,e)[2]+t):``;return this.spaceBefore+n+this.type+this.spaceAfter}};function pT(e,t){let n=[],r=[];for(let t=e;t;t=t.parent){if(t.name==`FencedCode`)return r;(t.name==`ListItem`||t.name==`Blockquote`)&&n.push(t)}for(let e=n.length-1;e>=0;e--){let i=n[e],a,o=t.lineAt(i.from),s=i.from-o.from;if(i.name==`Blockquote`&&(a=/^ *>( ?)/.exec(o.text.slice(s))))r.push(new fT(i,s,s+a[0].length,``,a[1],`>`,null));else if(i.name==`ListItem`&&i.parent.name==`OrderedList`&&(a=/^( *)\d+([.)])( *)/.exec(o.text.slice(s)))){let e=a[3],t=a[0].length;e.length>=4&&(e=e.slice(0,e.length-4),t-=4),r.push(new fT(i.parent,s,s+t,a[1],e,a[2],i))}else if(i.name==`ListItem`&&i.parent.name==`BulletList`&&(a=/^( *)([-+*])( {1,4}\[[ xX]\])?( +)/.exec(o.text.slice(s)))){let e=a[4],t=a[0].length;e.length>4&&(e=e.slice(0,e.length-4),t-=4);let n=a[2];a[3]&&(n+=a[3].replace(/[xX]/,` `)),r.push(new fT(i.parent,s,s+t,a[1],e,n,i))}}return r}function mT(e,t){return/^(\s*)(\d+)(?=[.)])/.exec(t.sliceString(e.from,e.from+10))}function hT(e,t,n,r=0){for(let i=-1,a=e;;){if(a.name==`ListItem`){let e=mT(a,t),o=+e[2];if(i>=0){if(o!=i+1)return;n.push({from:a.from+e[1].length,to:a.from+e[0].length,insert:String(i+2+r)})}i=o}let e=a.nextSibling;if(!e)break;a=e}}function gT(e,t){let n=/^[ \t]*/.exec(e)[0].length;if(!n||t.facet(Pu)!=` `)return e;let r=Tt(e,4,n),i=``;for(let e=r;e>0;)e>=4?(i+=` `,e-=4):(i+=` `,e--);return i+e.slice(n)}var _T=((e={})=>({state:t,dispatch:n})=>{let r=q(t),{doc:i}=t,a=null,o=t.changeByRange(n=>{if(!n.empty||!uT.isActiveAt(t,n.from,-1)&&!uT.isActiveAt(t,n.from,1))return a={range:n};let o=n.from,s=i.lineAt(o),c=pT(r.resolveInner(o,-1),i);for(;c.length&&c[c.length-1].from>o-s.from;)c.pop();if(!c.length)return a={range:n};let l=c[c.length-1];if(l.to-l.spaceAfter.length>o-s.from)return a={range:n};let u=o>=l.to-l.spaceAfter.length&&!/\S/.test(s.text.slice(l.to));if(l.item&&u){if(l.item.from<s.from&&!/^[\s>]*$/.test(s.text.slice(0,l.to)))return a={range:n};let r=l.node.firstChild,u=l.node.getChild(`ListItem`,`ListItem`);if(r.to>=o||u&&u.to<o||s.from>0&&!/[^\s>]/.test(i.lineAt(s.from-1).text)||e.nonTightLists===!1){let e=c.length>1?c[c.length-2]:null,t,n=``;e&&e.item?(t=s.from+e.from,n=e.marker(i,1)):t=s.from+(e?e.to:0);let r=[{from:t,to:o,insert:n}];return l.node.name==`OrderedList`&&hT(l.item,i,r,-2),e&&e.node.name==`OrderedList`&&hT(e.item,i,r),{range:T.cursor(t+n.length),changes:r}}{let e=bT(c,t,s);return{range:T.cursor(o+e.length+1),changes:{from:s.from,insert:e+t.lineBreak}}}}if(l.node.name==`Blockquote`&&u&&s.from){let e=i.lineAt(s.from-1),r=/>\s*$/.exec(e.text);if(r&&r.index==l.from){let i=t.changes([{from:e.from+r.index,to:e.to},{from:s.from+l.from,to:s.to}]);return{range:n.map(i),changes:i}}}let d=[];l.node.name==`OrderedList`&&hT(l.item,i,d);let f=l.item&&l.item.from<s.from,p=``;if(!f||/^[\s\d.)\-+*>]*/.exec(s.text)[0].length>=l.to)for(let e=0,t=c.length-1;e<=t;e++)p+=e==t&&!f?c[e].marker(i,1):c[e].blank(e<t?Tt(s.text,4,c[e+1].from)-p.length:null);let m=o;for(;m>s.from&&/\s/.test(s.text.charAt(m-s.from-1));)m--;return p=gT(p,t),yT(l.node,t.doc)&&(p=bT(c,t,s)+t.lineBreak+p),d.push({from:m,to:o,insert:t.lineBreak+p}),{range:T.cursor(m+p.length+1),changes:d}});return!a&&(n(t.update(o,{scrollIntoView:!0,userEvent:`input`})),!0)})();function vT(e){return e.name==`QuoteMark`||e.name==`ListMark`}function yT(e,t){if(e.name!=`OrderedList`&&e.name!=`BulletList`)return!1;let n=e.firstChild,r=e.getChild(`ListItem`,`ListItem`);if(!r)return!1;let i=t.lineAt(n.to),a=t.lineAt(r.from),o=/^[\s>]*$/.test(i.text);return i.number+ +!o<a.number}function bT(e,t,n){let r=``;for(let t=0,i=e.length-2;t<=i;t++)r+=e[t].blank(t<i?Tt(n.text,4,e[t+1].from)-r.length:null,t<i);return gT(r,t)}function xT(e,t){let n=e.resolveInner(t,-1),r=t;vT(n)&&(r=n.from,n=n.parent);for(let e;e=n.childBefore(r);)if(vT(e))r=e.from;else if(e.name==`OrderedList`||e.name==`BulletList`)n=e.lastChild,r=n.to;else break;return n}var ST=[{key:`Enter`,run:_T},{key:`Backspace`,run:({state:e,dispatch:t})=>{let n=q(e),r=null,i=e.changeByRange(t=>{let i=t.from,{doc:a}=e;if(t.empty&&uT.isActiveAt(e,t.from)){let t=a.lineAt(i),r=pT(xT(n,i),a);if(r.length){let n=r[r.length-1],a=n.to-n.spaceAfter.length+ +!!n.spaceAfter;if(i-t.from>a&&!/\S/.test(t.text.slice(a,i-t.from)))return{range:T.cursor(t.from+a),changes:{from:t.from+a,to:i}};if(i-t.from==a&&(n.item&&t.from<=n.item.from||/^[\s>]*$/.test(t.text.slice(0,n.to)))){let r=t.from+n.from;if(n.item&&n.node.from<n.item.from&&/\S/.test(t.text.slice(n.from,n.to))){let i=n.blank(Tt(t.text,4,n.to)-Tt(t.text,4,n.from));return r==t.from&&(i=gT(i,e)),{range:T.cursor(r+i.length),changes:{from:r,to:t.from+n.to,insert:i}}}if(r<i)return{range:T.cursor(r),changes:{from:r,to:i}}}}}return r={range:t}});return!r&&(t(e.update(i,{scrollIntoView:!0,userEvent:`delete`})),!0)}}],CT=xC({matchClosingTags:!1});function wT(e={}){let{codeLanguages:t,defaultCodeLanguage:n,addKeymap:r=!0,base:{parser:i}=lT,completeHTMLTags:a=!0,pasteURLAsLink:o=!0,htmlTagLanguage:s=CT}=e;if(!(i instanceof rw))throw RangeError("Base parser provided to `markdown` should be a Markdown parser");let c=e.extensions?[e.extensions]:[],l=[s.support,sT],u;o&&l.push(kT),n instanceof ju?(l.push(n.support),u=n.language):n&&(u=n);let d=t||u?dT(t,u):void 0;c.push(Mw({codeParser:d,htmlParser:s.language.parser})),r&&l.push(Ae.high(Uo.of(ST)));let f=cT(i.configure(c));return a&&l.push(f.data.of({autocomplete:TT})),new ju(f,l)}function TT(e){let{state:t,pos:n}=e,r=/<[:\-\.\w\u00b7-\uffff]*$/.exec(t.sliceDoc(n-25,n));if(!r)return null;let i=q(t).resolveInner(n,-1);for(;i&&!i.type.isTop;){if(i.name==`CodeBlock`||i.name==`FencedCode`||i.name==`ProcessingInstructionBlock`||i.name==`CommentBlock`||i.name==`Link`||i.name==`Image`)return null;i=i.parent}return{from:n-r[0].length,to:n,options:DT(),validFor:/^<[:\-\.\w\u00b7-\uffff]*$/}}var ET=null;function DT(){if(ET)return ET;let e=mC(new Vh(k.create({extensions:CT}),0,!0));return ET=e?e.options:[]}var OT=/code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i,kT=B.domEventHandlers({paste:(e,t)=>{let{main:n}=t.state.selection;if(n.empty)return!1;let r=e.clipboardData?.getData(`text/plain`);if(!r||!/^(https?:\/\/|mailto:|xmpp:|www\.)/.test(r)||(/^www\./.test(r)&&(r=`https://`+r),!uT.isActiveAt(t.state,n.from,1)))return!1;let i=q(t.state),a=!1;return i.iterate({from:n.from,to:n.to,enter:e=>{(e.from>n.from||OT.test(e.name))&&(a=!0)},leave:e=>{e.to<n.to&&(a=!0)}}),!a&&(t.dispatch({changes:[{from:n.from,insert:`[`},{from:n.to,insert:`](${r})`}],userEvent:`input.paste`,scrollIntoView:!0}),!0)}}),AT=`#e5c07b`,jT=`#e06c75`,MT=`#56b6c2`,NT=`#ffffff`,PT=`#abb2bf`,FT=`#7d8799`,IT=`#61afef`,LT=`#98c379`,RT=`#d19a66`,zT=`#c678dd`,BT=`#21252b`,VT=`#2c313a`,HT=`#282c34`,UT=`#353a42`,WT=`#3E4451`,GT=`#528bff`,KT=[B.theme({"&":{color:PT,backgroundColor:HT},".cm-content":{caretColor:GT},".cm-cursor, .cm-dropCursor":{borderLeftColor:GT},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:WT},".cm-panels":{backgroundColor:BT,color:PT},".cm-panels.cm-panels-top":{borderBottom:`2px solid black`},".cm-panels.cm-panels-bottom":{borderTop:`2px solid black`},".cm-searchMatch":{backgroundColor:`#72a1ff59`,outline:`1px solid #457dff`},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:`#6199ff2f`},".cm-activeLine":{backgroundColor:`#6699ff0b`},".cm-selectionMatch":{backgroundColor:`#aafe661a`},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:`#bad0f847`},".cm-gutters":{backgroundColor:HT,color:FT,border:`none`},".cm-activeLineGutter":{backgroundColor:VT},".cm-foldPlaceholder":{backgroundColor:`transparent`,border:`none`,color:`#ddd`},".cm-tooltip":{border:`none`,backgroundColor:UT},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:`transparent`,borderBottomColor:`transparent`},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:UT,borderBottomColor:UT},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:VT,color:PT}}},{dark:!0}),Nd(kd.define([{tag:K.keyword,color:zT},{tag:[K.name,K.deleted,K.character,K.propertyName,K.macroName],color:jT},{tag:[K.function(K.variableName),K.labelName],color:IT},{tag:[K.color,K.constant(K.name),K.standard(K.name)],color:RT},{tag:[K.definition(K.name),K.separator],color:PT},{tag:[K.typeName,K.className,K.number,K.changed,K.annotation,K.modifier,K.self,K.namespace],color:AT},{tag:[K.operator,K.operatorKeyword,K.url,K.escape,K.regexp,K.link,K.special(K.string)],color:MT},{tag:[K.meta,K.comment],color:FT},{tag:K.strong,fontWeight:`bold`},{tag:K.emphasis,fontStyle:`italic`},{tag:K.strikethrough,textDecoration:`line-through`},{tag:K.link,color:FT,textDecoration:`underline`},{tag:K.heading,fontWeight:`bold`,color:jT},{tag:[K.atom,K.bool,K.special(K.variableName)],color:RT},{tag:[K.processingInstruction,K.string,K.inserted],color:LT},{tag:K.invalid,color:NT}]))],qT=t();function JT(e){switch(e){case`typescript`:case`tsx`:return Ay({typescript:!0});case`javascript`:case`jsx`:case`mjs`:case`cjs`:return Ay();case`json`:case`jsonl`:return Ry();case`yaml`:case`yml`:return zb();case`html`:case`htm`:return xC();case`css`:case`scss`:case`less`:return qS();case`markdown`:case`mdx`:return wT();default:return[]}}var YT=new Me;function XT(e){return e?KT:Nd(Id)}function ZT({initialValue:e,language:t,isDark:n,onChange:i,onSave:a}){let o=(0,r.useRef)(null),s=(0,r.useRef)(null),c=(0,r.useRef)(i),l=(0,r.useRef)(a);return c.current=i,l.current=a,(0,r.useEffect)(()=>{let r=o.current;if(!r)return;let i=new B({parent:r,state:k.create({doc:e,extensions:[tv,JT(t),YT.of(XT(n)),Uo.of([{key:`Mod-s`,preventDefault:!0,run:()=>(l.current(),!0)},Am]),B.updateListener.of(e=>{e.docChanged&&c.current(e.state.doc.toString())}),B.theme({"&":{height:`100%`,fontSize:`var(--text-lg)`},".cm-scroller":{overflow:`auto`,fontFamily:`var(--font-mono)`},".cm-content":{fontFamily:`var(--font-mono)`}})]})});return s.current=i,()=>{i.destroy(),s.current=null}},[]),(0,r.useEffect)(()=>{s.current?.dispatch({effects:YT.reconfigure(XT(n))})},[n]),(0,qT.jsx)(`div`,{ref:o,style:{height:`100%`,minHeight:0}})}export{ZT as default};
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-D1v3-H_M.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-B6xuSHsQ.js";import"./chunk-DU6HZSFF-CysBq-yR.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-D7s-e0x2.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-DZ-ekdaf.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-DXyA9GNp.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-B6xuSHsQ.js";import"./chunk-DU6HZSFF-DH-hJfB7.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-C3oJWCH4.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-BLmx9LJ9.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import"./chunk-FOHPRMQF-DHwB1DNv.js";import{M as e}from"./mermaid-parser.core-DXyA9GNp.js";export{e as createArchitectureServices};