@timqi/pier 0.0.21 → 0.0.23
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.
- package/README.md +4 -5
- package/dist/agent/config-sync.js +124 -92
- package/dist/boards/boards.js +6 -2
- package/dist/db.js +12 -3
- package/dist/main.js +14 -14
- package/dist/service.js +17 -7
- package/dist/settings.js +0 -26
- package/dist/tasks/callbacks.js +1 -1
- package/dist/tasks/definitions.js +4 -0
- package/dist/tasks/groups.js +2 -1
- package/dist/tasks/service.js +14 -4
- package/dist/tasks/tool.js +70 -13
- package/dist/web/auth.js +1 -22
- package/dist/web/fs.js +2 -2
- package/dist/web/instance.js +6 -12
- package/dist/web/public/assets/activity-atEIVnGA.js +5 -0
- package/dist/web/public/assets/activity-atEIVnGA.js.br +0 -0
- package/dist/web/public/assets/activity-atEIVnGA.js.gz +0 -0
- package/dist/web/public/assets/{boards-DMVbV84c.js → boards-DSkfMEvN.js} +1 -1
- package/dist/web/public/assets/boards-DSkfMEvN.js.br +0 -0
- package/dist/web/public/assets/boards-DSkfMEvN.js.gz +0 -0
- package/dist/web/public/assets/{code-C86xKk2k.js → code-1nUOCxAb.js} +1 -1
- package/dist/web/public/assets/explorer-CS1kLPMl.js +5 -0
- package/dist/web/public/assets/explorer-CS1kLPMl.js.br +0 -0
- package/dist/web/public/assets/explorer-CS1kLPMl.js.gz +0 -0
- package/dist/web/public/assets/index-DP1-BW-q.css +2 -0
- package/dist/web/public/assets/index-DP1-BW-q.css.br +0 -0
- package/dist/web/public/assets/index-DP1-BW-q.css.gz +0 -0
- package/dist/web/public/assets/index-a7A8xfoi.js +83 -0
- package/dist/web/public/assets/index-a7A8xfoi.js.br +0 -0
- package/dist/web/public/assets/index-a7A8xfoi.js.gz +0 -0
- package/dist/web/public/assets/runs-bHSlJwXk.js +1 -0
- package/dist/web/public/assets/runs-bHSlJwXk.js.br +0 -0
- package/dist/web/public/assets/runs-bHSlJwXk.js.gz +0 -0
- package/dist/web/public/assets/settings-CrC-yuXh.js +6 -0
- package/dist/web/public/assets/settings-CrC-yuXh.js.br +0 -0
- package/dist/web/public/assets/settings-CrC-yuXh.js.gz +0 -0
- package/dist/web/public/assets/task-runs-C2PHAhAf.js +3 -0
- package/dist/web/public/assets/task-runs-C2PHAhAf.js.br +0 -0
- package/dist/web/public/assets/task-runs-C2PHAhAf.js.gz +0 -0
- package/dist/web/public/assets/tasks-7S90iYr1.js +4 -0
- package/dist/web/public/assets/tasks-7S90iYr1.js.br +0 -0
- package/dist/web/public/assets/tasks-7S90iYr1.js.gz +0 -0
- package/dist/web/public/index.html +16 -24
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/server.js +4 -4
- package/docs/deploy.md +23 -15
- package/package.json +2 -9
- package/skills/pier-tasks/SKILL.md +24 -13
- package/dist/web/public/assets/__vite-browser-external-2447137e-BvRk9kiK.js +0 -0
- package/dist/web/public/assets/activity-Cw0LRVNI.js +0 -5
- package/dist/web/public/assets/activity-Cw0LRVNI.js.br +0 -0
- package/dist/web/public/assets/activity-Cw0LRVNI.js.gz +0 -0
- package/dist/web/public/assets/boards-DMVbV84c.js.br +0 -0
- package/dist/web/public/assets/boards-DMVbV84c.js.gz +0 -0
- package/dist/web/public/assets/explorer-DTvsy5Rs.js +0 -5
- package/dist/web/public/assets/explorer-DTvsy5Rs.js.br +0 -0
- package/dist/web/public/assets/explorer-DTvsy5Rs.js.gz +0 -0
- package/dist/web/public/assets/ghostty-web-CvSZragH.js +0 -13
- package/dist/web/public/assets/ghostty-web-CvSZragH.js.br +0 -0
- package/dist/web/public/assets/ghostty-web-CvSZragH.js.gz +0 -0
- package/dist/web/public/assets/index-DHxoYoeq.js +0 -79
- package/dist/web/public/assets/index-DHxoYoeq.js.br +0 -0
- package/dist/web/public/assets/index-DHxoYoeq.js.gz +0 -0
- package/dist/web/public/assets/index-DuZ2vERd.css +0 -2
- package/dist/web/public/assets/index-DuZ2vERd.css.br +0 -0
- package/dist/web/public/assets/index-DuZ2vERd.css.gz +0 -0
- package/dist/web/public/assets/runs-jY40JBP-.js +0 -1
- package/dist/web/public/assets/runs-jY40JBP-.js.br +0 -0
- package/dist/web/public/assets/runs-jY40JBP-.js.gz +0 -0
- package/dist/web/public/assets/settings-Dux7PIKF.js +0 -6
- package/dist/web/public/assets/settings-Dux7PIKF.js.br +0 -0
- package/dist/web/public/assets/settings-Dux7PIKF.js.gz +0 -0
- package/dist/web/public/assets/task-runs-DKvtBVxS.js +0 -3
- package/dist/web/public/assets/task-runs-DKvtBVxS.js.br +0 -0
- package/dist/web/public/assets/task-runs-DKvtBVxS.js.gz +0 -0
- package/dist/web/public/assets/tasks-CqfrOVIt.js +0 -4
- package/dist/web/public/assets/tasks-CqfrOVIt.js.br +0 -0
- package/dist/web/public/assets/tasks-CqfrOVIt.js.gz +0 -0
- package/dist/web/public/assets/terminal-DL_0yEy7.js +0 -2
- package/dist/web/public/assets/terminal-DL_0yEy7.js.br +0 -0
- package/dist/web/public/assets/terminal-DL_0yEy7.js.gz +0 -0
- package/dist/web/terminal.js +0 -369
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tasks-7S90iYr1.js","assets/task-runs-C2PHAhAf.js","assets/runs-bHSlJwXk.js","assets/explorer-CS1kLPMl.js","assets/code-1nUOCxAb.js","assets/settings-CrC-yuXh.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=/[\u201c\u201d"\u2018\u2019'()\uff08\uff09\u300c\u300d\u300e\u300f\u3010\u3011\u300a\u300b\u3008\u3009[\]]/;function t(t){let n=[],r=e=>`\uE010${n.push(e)-1}\uE011`,i=t.replace(/```[\s\S]*?```/g,e=>r(e)).replace(/`[^`\n]+`/g,e=>r(e));return i=i.replace(/\*\*(\S|\S[\s\S]*?\S)\*\*/g,(t,n)=>{let r=``,i=``,a=n;for(;a.length>1&&e.test(a[0]);)r+=a[0],a=a.slice(1);for(;a.length>1&&e.test(a.at(-1));)i=a.at(-1)+i,a=a.slice(0,-1);return r||i?`${r}**${a}**${i}`:t}),i.replace(/\uE010(\d+)\uE011/g,(e,t)=>n[Number(t)]??``)}var n=e=>!e.text.trim()&&e.suggestions.length===0,r=e=>e===`xhigh`?`Extra high`:e[0].toUpperCase()+e.slice(1),i=e=>{if(e<1e3)return String(e);let t=e/1e3;return t>=9.95?`${Math.round(t)}K`:`${t.toFixed(1)}K`},a=/(?:^|\n)[ \t]*-{3,}[ \t]*\r?\n((?:[ \t]*\[[^\]\r\n]+\][ \t]*(?:[||][ \t]*)?)+)\s*$/,o=/\[([^\]\r\n]+)\]/g,s=5,c=/<silent>([\s\S]*?)<\/silent>/gi;function l(e){let t=[...e.matchAll(c)].map(e=>(e[1]??``).trim()).filter(Boolean);return t.length?t.join(` · `):void 0}function u(e,n){let r=t(e.replace(c,``).trim()),i=l(e),u=a.exec(r);if(!u?.[1])return{text:r,suggestions:[],meta:n,silence:i};let d=[...u[1].matchAll(o)].map(e=>(e[1]??``).trim()).filter(Boolean).slice(0,s);return d.length?{text:r.slice(0,u.index).trimEnd(),suggestions:d,meta:n,silence:i}:{text:r,suggestions:[],meta:n,silence:i}}var d=e=>t(e.replace(c,``).trim()),ee=/^(?:\s|[-*+>]|\d+[.)])/;function f(e,t=0){let n=e.lastIndexOf(`
|
|
3
|
+
`)+1,r=``,i=!1,a=t,o=-1,s=``;for(let c=t;c<n;){let t=e.indexOf(`
|
|
4
|
+
`,c),n=e.slice(c,t);c=t+1;let l=/^\s*(`{3,}|~{3,})(.*)$/.exec(n);if(!r&&!i&&!n.trim()){o<0&&s&&(o=c);continue}!r&&!i&&o>=0&&!(ee.test(s)&&ee.test(n))&&(a=o);let u=l?.[1]??``;if(!r&&u&&!i?r=u:r&&u[0]===r[0]&&u.length>=r.length&&!l?.[2]?.trim()&&(r=``),!r&&(!u||i))for(let e of n.matchAll(/<(\/?)silent>/gi))i=!e[1];o=-1,s=n}return a}var p=/^\[(?:([^\n[\]<>]*)<([^\n[\]<>]+)>)? ?((?:\d{4}-\d{2}-\d{2} )?\d{1,2}:\d{2})?\]\n/;function te(e){let t=p.exec(e);return!t?.[2]&&!t?.[3]?{text:e}:{...t[1]?{name:t[1]}:{},...t[2]?{id:t[2]}:{},...t[3]?{when:t[3]}:{},text:e.slice(t[0].length)}}function ne(e){if(!e)return e;let{text:t}=te(e);return t===e?e:t.replace(/\s+/g,` `).trim()||e}function re(e){let t,n=!1;return()=>(n=!0,t??=(async()=>{for(;n;)n=!1,await e()})().finally(()=>{t=void 0}))}var m=(e,t,n=`POST`)=>fetch(e,{method:n,headers:{"content-type":`application/json`},body:JSON.stringify(t)});async function h(e,t){return(await e.json().catch(()=>({}))).error??`${t} (${e.status})`}async function g(e,t,n){let r;try{r=await fetch(e,n)}catch(e){return{ok:!1,error:`${t}: ${String(e)}`}}if(!r.ok)return{ok:!1,error:await h(r,t)};try{return{ok:!0,value:await r.json()}}catch(e){return{ok:!1,error:`${t}: ${String(e)}`}}}async function ie(e,t,n){let r=await g(e,t,n);if(!r.ok)throw Error(r.error);return r.value}async function ae(e,t,n){try{let r=await fetch(e,{method:t});return r.ok?void 0:await h(r,n)}catch(e){return`${n}: ${String(e)}`}}function oe(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function _(e){if(Array.isArray(e))return e}function se(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function ce(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
5
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function le(e,t){return _(e)||se(e,t)||ue(e,t)||ce()}function ue(e,t){if(e){if(typeof e==`string`)return oe(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}var de=Object.entries,fe=Object.setPrototypeOf,pe=Object.isFrozen,me=Object.getPrototypeOf,he=Object.getOwnPropertyDescriptor,v=Object.freeze,y=Object.seal,ge=Object.create,_e=typeof Reflect<`u`&&Reflect,ve=_e.apply,ye=_e.construct;v||=function(e){return e},y||=function(e){return e},ve||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},ye||=function(e){return new e(...[...arguments].slice(1))};var be=C(Array.prototype.forEach),xe=C(Array.prototype.lastIndexOf),Se=C(Array.prototype.pop),Ce=C(Array.prototype.push),we=C(Array.prototype.splice),Te=Array.isArray,Ee=C(String.prototype.toLowerCase),De=C(String.prototype.toString),Oe=C(String.prototype.match),ke=C(String.prototype.replace),Ae=C(String.prototype.indexOf),je=C(String.prototype.trim),Me=C(Number.prototype.toString),Ne=C(Boolean.prototype.toString),Pe=typeof BigInt>`u`?null:C(BigInt.prototype.toString),b=typeof Symbol>`u`?null:C(Symbol.prototype.toString),x=C(Object.prototype.hasOwnProperty),Fe=C(Object.prototype.toString),S=C(RegExp.prototype.test),Ie=Le(TypeError);function C(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return ve(e,t,n)}}function Le(e){return function(){return ye(e,[...arguments])}}function w(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ee;if(fe&&fe(e,null),!Te(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(pe(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Re(e){for(let t=0;t<e.length;t++)x(e,t)||(e[t]=null);return e}function T(e){let t=ge(null);for(let r of de(e)){var n=le(r,2);let i=n[0],a=n[1];x(e,i)&&(t[i]=Te(a)?Re(a):a&&typeof a==`object`&&a.constructor===Object?T(a):a)}return t}function ze(e){switch(typeof e){case`string`:return e;case`number`:return Me(e);case`boolean`:return Ne(e);case`bigint`:return Pe?Pe(e):`0`;case`symbol`:return b?b(e):`Symbol()`;case`undefined`:return Fe(e);case`function`:case`object`:{if(e===null)return Fe(e);let t=e,n=Be(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:Fe(e)}return Fe(e)}default:return Fe(e)}}function Be(e,t){for(;e!==null;){let n=he(e,t);if(n){if(n.get)return C(n.get);if(typeof n.value==`function`)return C(n.value)}e=me(e)}function n(){return null}return n}function Ve(e){try{return S(e,``),!0}catch{return!1}}var He=v(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ue=v(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),We=v([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Ge=v([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Ke=v(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),qe=v([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Je=v([`#text`]),Ye=v(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Xe=v(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.pointer-events.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.vector-effect.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Ze=v(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Qe=v([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),$e=y(/{{[\w\W]*|^[\w\W]*}}/g),et=y(/<%[\w\W]*|^[\w\W]*%>/g),tt=y(/\${[\w\W]*/g),nt=y(/^data-[\-\w.\u00B7-\uFFFF]+$/),rt=y(/^aria-[\-\w]+$/),it=y(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),at=y(/^(?:\w+script|data):/i),ot=y(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),st=y(/^html$/i),ct=y(/^[a-z][.\w]*(-[.\w]+)+$/i),lt=y(/<[/\w!]/g),ut=y(/<[/\w]/g),dt=y(/<\/no(script|embed|frames)/i),ft=y(/\/>/i),E={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},pt=[`style`,`script`,`xmp`,`iframe`,`noembed`,`noframes`,`plaintext`,`noscript`],mt=v(w({},pt)),ht=function(){let e={};return be(pt,t=>{e[t]=y(RegExp(`</`+t+`(?=[\\t\\n\\f\\r />])`,`i`))}),v(e)}(),gt=function(){return typeof window>`u`?null:window},_t=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},vt=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},yt=function(e,t,n,r){return x(e,t)&&Te(e[t])?w(r.base?T(r.base):{},e[t],r.transform):n},bt=function(e,t,n){let r=x(e,t)?e[t]:void 0;return r&&typeof r==`object`?T(r):n()};function xt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:gt(),t=e=>xt(e);if(t.version=`3.4.14`,t.removed=[],!e||!e.document||e.document.nodeType!==E.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,ee=Be(d,`cloneNode`),f=Be(d,`remove`),p=Be(d,`nextSibling`),te=Be(d,`childNodes`),ne=Be(d,`parentNode`),re=Be(d,`shadowRoot`),m=Be(d,`attributes`),h=o&&o.prototype?Be(o.prototype,`nodeType`):null,g=o&&o.prototype?Be(o.prototype,`nodeName`):null,ie=o&&o.prototype?Be(o.prototype,`ownerDocument`):null,ae=function(e){return h?h(e):e.nodeType},oe=function(e){return g?g(e):e.nodeName};if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let _,se=``,ce,le=!1,ue=0,fe=function(){if(ue>0)throw Ie(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},pe=function(e){fe(),ue++;try{return _.createHTML(e)}finally{ue--}},me=function(e){fe(),ue++;try{return _.createScriptURL(e)}finally{ue--}},he=function(){return le||=(ce=_t(u,i),!0),ce},_e=n,ve=_e.implementation,ye=_e.createNodeIterator,Me=_e.createDocumentFragment,Ne=_e.getElementsByTagName,Pe=r.importNode,b=vt();t.isSupported=typeof de==`function`&&typeof ne==`function`&&ve&&ve.createHTMLDocument!==void 0;let Fe=$e,C=et,Le=tt,Re=nt,pt=rt,St=at,Ct=ot,wt=ct,Tt=it,D=null,Et=w({},[...He,...Ue,...We,...Ke,...Je]),O=null,Dt=w({},[...Ye,...Xe,...Ze,...Qe]),k=Object.seal(ge(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ot=null,kt=null,At=Object.seal(ge(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),jt=!0,Mt=!0,Nt=!1,Pt=!0,Ft=!1,It=!0,Lt=!1,Rt=!1,zt=null,Bt=null,Vt=!1,Ht=!1,Ut=!1,Wt=!1,Gt=!0,Kt=!1,qt=`user-content-`,Jt=!0,Yt=!1,Xt={},Zt=null,Qt=w({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),$t=null,en=w({},[`audio`,`video`,`img`,`source`,`image`,`track`]),tn=null,nn=w({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),rn=`http://www.w3.org/1998/Math/MathML`,an=`http://www.w3.org/2000/svg`,on=`http://www.w3.org/1999/xhtml`,sn=on,cn=!1,ln=null,un=w({},[rn,an,on],De),dn=v([`mi`,`mo`,`mn`,`ms`,`mtext`]),fn=w({},dn),pn=v([`annotation-xml`]),mn=w({},pn),hn=w({},[`title`,`style`,`font`,`a`,`script`]),gn=null,_n=[`application/xhtml+xml`,`text/html`],A=null,vn=null,yn=n.createElement(`form`),bn=function(e){return e instanceof RegExp||e instanceof Function},xn=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(vn&&vn===e)return;(!e||typeof e!=`object`)&&(e={}),e=T(e),gn=_n.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,A=gn===`application/xhtml+xml`?De:Ee,D=yt(e,`ALLOWED_TAGS`,Et,{transform:A}),O=yt(e,`ALLOWED_ATTR`,Dt,{transform:A}),ln=yt(e,`ALLOWED_NAMESPACES`,un,{transform:De}),tn=yt(e,`ADD_URI_SAFE_ATTR`,nn,{transform:A,base:nn}),$t=yt(e,`ADD_DATA_URI_TAGS`,en,{transform:A,base:en}),Zt=yt(e,`FORBID_CONTENTS`,Qt,{transform:A}),Ot=yt(e,`FORBID_TAGS`,T({}),{transform:A}),kt=yt(e,`FORBID_ATTR`,T({}),{transform:A}),Xt=x(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?T(e.USE_PROFILES):e.USE_PROFILES:!1,jt=e.ALLOW_ARIA_ATTR!==!1,Mt=e.ALLOW_DATA_ATTR!==!1,Nt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ft=e.SAFE_FOR_TEMPLATES||!1,It=e.SAFE_FOR_XML!==!1,Lt=e.WHOLE_DOCUMENT||!1,Ht=e.RETURN_DOM||!1,Ut=e.RETURN_DOM_FRAGMENT||!1,Wt=e.RETURN_TRUSTED_TYPE||!1,Vt=e.FORCE_BODY||!1,Gt=e.SANITIZE_DOM!==!1,Kt=e.SANITIZE_NAMED_PROPS||!1,Jt=e.KEEP_CONTENT!==!1,Yt=e.IN_PLACE||!1,Tt=Ve(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:it,sn=typeof e.NAMESPACE==`string`?e.NAMESPACE:on,fn=bt(e,`MATHML_TEXT_INTEGRATION_POINTS`,()=>w({},dn)),mn=bt(e,`HTML_INTEGRATION_POINTS`,()=>w({},pn));let t=bt(e,`CUSTOM_ELEMENT_HANDLING`,()=>ge(null));if(k=ge(null),x(t,`tagNameCheck`)&&bn(t.tagNameCheck)&&(k.tagNameCheck=t.tagNameCheck),x(t,`attributeNameCheck`)&&bn(t.attributeNameCheck)&&(k.attributeNameCheck=t.attributeNameCheck),x(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(k.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),y(k),Ft&&(Mt=!1),Ut&&(Ht=!0),Xt&&(D=w({},Je),O=ge(null),Xt.html===!0&&(w(D,He),w(O,Ye)),Xt.svg===!0&&(w(D,Ue),w(O,Xe),w(O,Qe)),Xt.svgFilters===!0&&(w(D,We),w(O,Xe),w(O,Qe)),Xt.mathMl===!0&&(w(D,Ke),w(O,Ze),w(O,Qe))),At.tagCheck=null,At.attributeCheck=null,x(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?At.tagCheck=e.ADD_TAGS:Te(e.ADD_TAGS)&&(D===Et&&(D=T(D)),w(D,e.ADD_TAGS,A))),x(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?At.attributeCheck=e.ADD_ATTR:Te(e.ADD_ATTR)&&(O===Dt&&(O=T(O)),w(O,e.ADD_ATTR,A))),x(e,`ADD_FORBID_CONTENTS`)&&Te(e.ADD_FORBID_CONTENTS)&&(Zt===Qt&&(Zt=T(Zt)),w(Zt,e.ADD_FORBID_CONTENTS,A)),Jt&&(D[`#text`]=!0),Lt&&w(D,[`html`,`head`,`body`]),D.table&&(w(D,[`tbody`]),delete Ot.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Ie(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Ie(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=_;_=e.TRUSTED_TYPES_POLICY;try{se=pe(``)}catch(e){throw _=t,e}}else e.TRUSTED_TYPES_POLICY===null?(_=void 0,se=``):(_===void 0&&(_=he()),_&&typeof se==`string`&&(se=pe(``)));v&&v(e),vn=e},Sn=w({},[...Ue,...We,...Ge]),Cn=w({},[...Ke,...qe]),wn=function(e,t,n){return t.namespaceURI===on?e===`svg`:t.namespaceURI===rn?e===`svg`&&(n===`annotation-xml`||fn[n]):!!Sn[e]},Tn=function(e,t,n){return t.namespaceURI===on?e===`math`:t.namespaceURI===an?e===`math`&&mn[n]:!!Cn[e]},En=function(e,t,n){return t.namespaceURI===an&&!mn[n]||t.namespaceURI===rn&&!fn[n]?!1:!Cn[e]&&(hn[e]||!Sn[e])},Dn=function(e){let t=ne(e);(!t||!t.tagName)&&(t={namespaceURI:sn,tagName:`template`});let n=Ee(e.tagName),r=Ee(t.tagName);return ln[e.namespaceURI]?e.namespaceURI===an?wn(n,t,r):e.namespaceURI===rn?Tn(n,t,r):e.namespaceURI===on?En(n,t,r):!!(gn===`application/xhtml+xml`&&ln[e.namespaceURI]):!1},On=function(e){Ce(t.removed,{element:e});try{ne(e).removeChild(e)}catch{if(f(e),!ne(e))throw Ie(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},kn=function(e,t,n){try{e.removeAttributeNode(t)}catch{try{e.removeAttribute(n)}catch{}}},An=function(e){Nn(e);let t=te(e);if(t){let e=[];be(t,t=>{Ce(e,t)}),be(e,e=>{try{f(e)}catch{}})}let n=m(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;typeof i==`string`&&kn(e,r,i)}},jn=function(e,n,r){if(!r)try{r=n.getAttributeNode(e)}catch{r=null}Ce(t.removed,{attribute:r||null,from:n});try{r?n.removeAttributeNode(r):n.removeAttribute(e)}catch{try{n.removeAttribute(e)}catch{}}if(e===`is`){if(Ht||Ut)try{On(n)}catch{}else try{n.setAttribute(e,``)}catch{}}},Mn=function(e){let t=m(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;typeof i!=`string`||O[A(i)]||kn(e,r,i)}},Nn=function(e){let t=[e];for(;t.length>0;){let e=t.pop();ae(e)===E.element&&Mn(e);let n=te(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},Pn=function(e,t){return It?e===`patchsrc`||e===`for`&&t!==`label`&&t!==`output`:!1},Fn=function(e){if(!It)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=ae(e);if(n===E.processingInstruction||n===E.comment&&S(ut,e.data)){try{f(e)}catch{}continue}if(n===E.element){let t=e,n=A(oe(e));try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&Pn(`for`,n)&&t.removeAttribute(`for`)}catch{}}let r=te(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},In=function(e){let t=null,r=null;if(Vt)e=`<remove></remove>`+e;else{let t=Oe(e,/^[\r\n\t ]+/);r=t&&t[0]}gn===`application/xhtml+xml`&&sn===on&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=_?pe(e):e;if(sn===on)try{t=new l().parseFromString(i,gn)}catch{}if(!t||!t.documentElement){t=ve.createDocument(sn,`template`,null);try{t.documentElement.innerHTML=cn?se:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),sn===on?Ne.call(t,Lt?`html`:`body`)[0]:Lt?t.documentElement:a},Ln=function(e){let t=ie?ie(e):e.ownerDocument;return ye.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Rn=function(e){return e=ke(e,Fe,` `),e=ke(e,C,` `),e=ke(e,Le,` `),e},zn=function(e){e.normalize();let t=ie?ie(e):e.ownerDocument,n=ye.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=Rn(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&be(i,e=>{j(e.content)&&zn(e.content)})},Bn=function(e){let t=g?g(e):null;return typeof t!=`string`||A(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==m(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==h(e)||e.childNodes!==te(e)},j=function(e){if(!h||typeof e!=`object`||!e)return!1;try{return h(e)===E.documentFragment}catch{return!1}},Vn=function(e){if(!h||typeof e!=`object`||!e)return!1;try{return typeof h(e)==`number`}catch{return!1}};function M(e,n,r){e.length!==0&&be(e,e=>{e.call(t,n,r,vn)})}let Hn=function(e,t){return!!(It&&e.hasChildNodes()&&!Vn(e.firstElementChild)&&S(lt,e.textContent)&&S(lt,e.innerHTML)||It&&e.namespaceURI===on&&mt[t]&&(Vn(e.firstElementChild)||typeof e.textContent==`string`&&S(ht[t],e.textContent))||e.nodeType===E.processingInstruction||It&&e.nodeType===E.comment&&S(ut,e.data))},Un=function(e,t){return e instanceof RegExp?S(e,t):e instanceof Function&&!!e(t,...[...arguments].slice(2))},Wn=function(e,t,n){if(!Ot[t]&&Yn(t)&&Un(k.tagNameCheck,t))return!1;if(Jt&&!Zt[t]){let t=ne(e),r=te(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?ee(r[a],!0):r[a];t.insertBefore(i,p(e))}}}return On(e),!0},Gn=function(e,t,n,r){return e.length===0?t:t===n||t===r?T(t):t},Kn=function(e,t){return e===t||ne(e)!==null?!1:(Yt&&Nn(e),!0)},qn=function(e,n){if(M(b.beforeSanitizeElements,e,null),Kn(e,n))return!0;if(Bn(e))return On(e),!0;let r=A(oe(e));if(D=Gn(b.uponSanitizeElement,D,Et,zt),M(b.uponSanitizeElement,e,{tagName:r,allowedTags:D}),Kn(e,n))return!0;if(Hn(e,r))return On(e),!0;if(Ot[r]||!(At.tagCheck instanceof Function&&At.tagCheck(r))&&!D[r]){let t=Wn(e,r,n);return t===!1&&M(b.afterSanitizeElements,e,null),t}if(ae(e)===E.element&&!Dn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&S(dt,e.innerHTML))return On(e),!0;if(Ft&&e.nodeType===E.text){let n=Rn(e.textContent);e.textContent!==n&&(Ce(t.removed,{element:e.cloneNode()}),e.textContent=n)}return M(b.afterSanitizeElements,e,null),!1},Jn=function(e,t,r){if(kt[t]||Pn(t,e)||Gt&&(t===`id`||t===`name`)&&(r in n||r in yn))return!1;let i=O[t]||At.attributeCheck instanceof Function&&At.attributeCheck(t,e);return Mt&&S(Re,t)||jt&&S(pt,t)?!0:i?tn[t]||S(Tt,ke(r,Ct,``))||(t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Ae(r,`data:`)===0&&$t[e]||Nt&&!S(St,ke(r,Ct,``))?!0:!r:Yn(e)&&Un(k.tagNameCheck,e)&&Un(k.attributeNameCheck,t,e)||t===`is`&&k.allowCustomizedBuiltInElements&&Un(k.tagNameCheck,r)},N=w({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Yn=function(e){return!N[Ee(e)]&&S(wt,e)},Xn=function(e,t,n,r){if(_&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return pe(r);case`TrustedScriptURL`:return me(r)}return r},P=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),Bn(e)?On(e):Se(t.removed)}catch{jn(n,e)}},Zn=function(e){M(b.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||Bn(e))return;O=Gn(b.uponSanitizeAttribute,O,Dt,Bt);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:O,forceKeepAttr:void 0},r=t.length,i=A(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=A(o),u=c,d=o===`value`?u:je(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,M(b.uponSanitizeAttribute,e,n),d=n.attrValue,Kt&&(l===`id`||l===`name`)&&Ae(d,qt)!==0&&(jn(o,e,a),d=qt+d),It&&S(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){jn(o,e,a);continue}if(l===`attributename`&&Oe(d,`href`)){jn(o,e,a);continue}if(!n.forceKeepAttr){if(!n.keepAttr){jn(o,e,a);continue}if(!Pt&&S(ft,d)){jn(o,e,a);continue}if(Ft&&(d=Rn(d)),!Jn(i,l,d)){jn(o,e,a);continue}d=Xn(i,l,s,d),d!==u&&P(e,o,s,d)}}M(b.afterSanitizeAttributes,e,null)},F=function(e){let t=null,n=Ln(e);for(M(b.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(M(b.uponSanitizeShadowNode,t,null),qn(t,e),Zn(t),j(t.content)&&F(t.content),ae(t)===E.element){let e=re(t);j(e)&&(I(e),F(e))}M(b.afterSanitizeShadowDOM,e,null)},I=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){F(e.shadow);continue}let n=e.node,r=ae(n)===E.element,i=te(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=g?g(n):null;if(typeof e==`string`&&A(e)===`template`){let e=n.content;j(e)&&t.push({node:e,shadow:null})}}if(r){let e=re(n);j(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(cn=!e,cn&&(e=`<!-->`),typeof e!=`string`&&!Vn(e)&&(e=ze(e),typeof e!=`string`))throw Ie(`dirty is not a string, aborting`);if(!t.isSupported)return e;Rt?(D=zt,O=Bt):xn(n),(b.uponSanitizeElement.length>0||b.uponSanitizeAttribute.length>0)&&(D=T(D)),b.uponSanitizeAttribute.length>0&&(O=T(O)),t.removed=[];let c=Yt&&typeof e!=`string`&&Vn(e);if(c){Fn(e);let t=oe(e);if(typeof t==`string`){let n=A(t);if(!D[n]||Ot[n])throw An(e),Ie(`root node is forbidden and cannot be sanitized in-place`)}if(Bn(e))throw An(e),Ie(`root node is clobbered and cannot be sanitized in-place`);try{I(e)}catch(t){throw An(e),t}}else if(Vn(e))i=In(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===E.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),I(a);else{if(!Ht&&!Ft&&!Lt&&e.indexOf(`<`)===-1)return _&&Wt?pe(e):e;if(i=In(e),!i)return Ht?null:Wt?se:``}i&&Vt&&On(i.firstChild);let l=c?e:i;try{let e=Ln(l);for(;o=e.nextNode();)qn(o,l),Zn(o),j(o.content)&&F(o.content)}catch(n){throw c&&(An(e),be(t.removed,e=>{e.element&&Nn(e.element)})),n}if(c)return be(t.removed,e=>{e.element&&Nn(e.element)}),Ft&&zn(e),e;if(Ht){if(Ft&&zn(i),Ut)for(s=Me.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(O.shadowroot||O.shadowrootmode)&&(s=Pe.call(r,s,!0)),s}let u=Lt?i.outerHTML:i.innerHTML;return Lt&&D[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&S(st,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
6
|
+
`+u),Ft&&(u=Rn(u)),_&&Wt?pe(u):u},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};xn(e),Rt=!0,zt=D,Bt=O},t.clearConfig=function(){vn=null,Rt=!1,zt=null,Bt=null,_=ce,se=``},t.isValidAttribute=function(e,t,n){vn||xn({});let r=A(e),i=A(t);return Jn(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&x(b,e)&&Ce(b[e],t)},t.removeHook=function(e,t){if(x(b,e)){if(t!==void 0){let n=xe(b[e],t);return n===-1?void 0:we(b[e],n,1)[0]}return Se(b[e])}},t.removeHooks=function(e){x(b,e)&&(b[e]=[])},t.removeAllHooks=function(){b=vt()},t}var St=xt();function Ct(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var wt=Ct();function Tt(e){wt=e}var D={exec:()=>null};function Et(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function O(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(k.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Dt=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),k={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Et(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Et(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Et(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Et(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Et(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Et(e=>RegExp(`^ {0,${e}}>`))},Ot=/^(?:[ \t]*(?:\n|$))+/,kt=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,At=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,jt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Mt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Nt=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Pt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ft=O(Pt).replace(/bull/g,Nt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),It=O(Pt).replace(/bull/g,Nt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Lt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Rt=/^[^\n]+/,zt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Bt=O(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,zt).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Vt=O(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Nt).getRegex(),Ht=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Ut=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Wt=O(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Ut).replace(`tag`,Ht).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Gt=e=>O(Lt).replace(`hr`,jt).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ht).getRegex(),Kt=Gt(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),qt=Gt(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Jt={blockquote:O(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,qt).getRegex(),code:kt,def:Bt,fences:At,heading:Mt,hr:jt,html:Wt,lheading:Ft,list:Vt,newline:Ot,paragraph:Kt,table:D,text:Rt},Yt=O(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,jt).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ht).getRegex(),Xt={...Jt,lheading:It,table:Yt,paragraph:O(Lt).replace(`hr`,jt).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Yt).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ht).getRegex()},Zt={...Jt,html:O(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Ut).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:O(Lt).replace(`hr`,jt).replace(`heading`,` *#{1,6} *[^
|
|
7
|
+
]`).replace(`lheading`,Ft).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Qt=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,$t=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,en=/^( {2,}|\\)\n(?!\s*$)/,tn=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,nn=/[\p{P}\p{S}]/u,rn=/[\s\p{P}\p{S}]/u,an=/[^\s\p{P}\p{S}]/u,on=O(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,rn).getRegex(),sn=/[\p{Pi}\p{Ps}"']/u,cn=/(?!~)[\p{P}\p{S}]/u,ln=/(?!~)[\s\p{P}\p{S}]/u,un=/(?:[^\s\p{P}\p{S}]|~)/u,dn=O(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Dt?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),fn=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,pn=O(fn,`u`).replace(/punct/g,nn).getRegex(),mn=O(fn,`u`).replace(/punct/g,cn).getRegex(),hn=O(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,sn).replace(/punct/g,nn).getRegex(),gn=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,_n=O(gn,`gu`).replace(/notPunctSpace/g,an).replace(/punctSpace/g,rn).replace(/punct/g,nn).getRegex(),A=O(gn,`gu`).replace(/notPunctSpace/g,un).replace(/punctSpace/g,ln).replace(/punct/g,cn).getRegex(),vn=O(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,an).replace(/punctSpace/g,rn).replace(/punct/g,nn).getRegex(),yn=O(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,an).replace(/punctSpace/g,rn).replace(/punct/g,nn).getRegex(),bn=O(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,an).replace(/punctSpace/g,rn).replace(/punct/g,nn).getRegex(),xn=O(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,nn).getRegex(),Sn=O(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,an).replace(/punctSpace/g,rn).replace(/punct/g,nn).getRegex(),Cn=O(/\\(punct)/,`gu`).replace(/punct/g,nn).getRegex(),wn=O(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Tn=O(Ut).replace(`(?:-->|$)`,`-->`).getRegex(),En=O(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Tn).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Dn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,On=O(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Dn).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),kn=O(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Dn).replace(`ref`,zt).getRegex(),An=O(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,zt).getRegex(),jn=O(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,kn).replace(`nolink`,An).getRegex(),Mn=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Nn={_backpedal:D,anyPunctuation:Cn,autolink:wn,blockSkip:dn,br:en,code:$t,del:D,delLDelim:D,delRDelim:D,emStrongLDelim:pn,emStrongRDelimAst:_n,emStrongRDelimUnd:yn,escape:Qt,link:On,nolink:An,punctuation:on,reflink:kn,reflinkSearch:jn,tag:En,text:tn,url:D},Pn={...Nn,emStrongLDelim:hn,emStrongRDelimAst:vn,emStrongRDelimUnd:bn,link:O(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Dn).getRegex(),reflink:O(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Dn).getRegex()},Fn={...Nn,emStrongRDelimAst:A,emStrongLDelim:mn,delLDelim:xn,delRDelim:Sn,url:O(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Mn).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:O(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,Mn).getRegex()},In={...Fn,br:O(en).replace(`{2,}`,`*`).getRegex(),text:O(Fn.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Ln={normal:Jt,gfm:Xt,pedantic:Zt},Rn={normal:Nn,gfm:Fn,breaks:In,pedantic:Pn},zn={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},Bn=e=>zn[e];function j(e,t){if(t){if(k.escapeTest.test(e))return e.replace(k.escapeReplace,Bn)}else if(k.escapeTestNoEncode.test(e))return e.replace(k.escapeReplaceNoEncode,Bn);return e}function Vn(e){try{e=encodeURI(e).replace(k.percentDecode,`%`)}catch{return null}return e}function M(e,t){let n=e.replace(k.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(k.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(k.slashPipe,`|`);return n}function Hn(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Un(e){let t=e.split(`
|
|
8
|
+
`),n=t.length-1;for(;n>=0&&k.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
9
|
+
`)}function Wn(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Gn(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Kn(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function qn(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
10
|
+
`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
|
|
11
|
+
`)}var Jn=class{options;rules;lexer;constructor(e){this.options=e||wt}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:Un(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=qn(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=Hn(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:Hn(t[0],`
|
|
12
|
+
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:Hn(t[0],`
|
|
13
|
+
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=Hn(t[0],`
|
|
14
|
+
`).split(`
|
|
15
|
+
`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
|
|
16
|
+
`),c=s.replace(this.rules.other.blockquoteSetextReplace,`
|
|
17
|
+
$1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
|
|
18
|
+
${s}`:s,r=r?`${r}
|
|
19
|
+
${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`)break;if(u?.type===`blockquote`){let t=u,a=e.join(`
|
|
20
|
+
`),o=t.raw+`
|
|
21
|
+
`+a.replace(this.rules.other.blockquoteSetextReplace2,``),s=this.blockquote(o);i[i.length-1]=s,n=`${n}
|
|
22
|
+
${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
|
|
23
|
+
`+e.join(`
|
|
24
|
+
`),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
|
|
25
|
+
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=Gn(t[2].split(`
|
|
26
|
+
`,1)[0],t[1].length),l=e.split(`
|
|
27
|
+
`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
|
|
28
|
+
`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),ee=this.rules.other.blockquoteBeginRegex(d);for(;e;){let f=e.split(`
|
|
29
|
+
`,1)[0],p;if(l=f,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),p=l):p=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||ee.test(l)||t.test(l)||n.test(l))break;if(p.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
|
|
30
|
+
`+p.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
|
|
31
|
+
`+l}u=!l.trim(),r+=f+`
|
|
32
|
+
`,e=e.substring(f.length+1),c=p.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=Un(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:Hn(t[0],`
|
|
33
|
+
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=M(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
|
|
34
|
+
`):[],a={type:`table`,raw:Hn(t[0],`
|
|
35
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(M(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:Hn(t[0],`
|
|
36
|
+
`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
|
|
37
|
+
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=Hn(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=Wn(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),Kn(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return Kn(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},N=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||wt,this.options.tokenizer=this.options.tokenizer||new Jn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:k,block:Ln.normal,inline:Rn.normal};this.options.pedantic?(t.block=Ln.pedantic,t.inline=Rn.pedantic):this.options.gfm&&(t.block=Ln.gfm,t.inline=this.options.breaks?Rn.breaks:Rn.gfm),this.tokenizer.rules=t}static get rules(){return{block:Ln,inline:Rn}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(k.carriageReturn,`
|
|
38
|
+
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(k.tabCharGlobal,` `).replace(k.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
|
|
39
|
+
`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
40
|
+
`)?``:`
|
|
41
|
+
`)+i.raw,n.text+=`
|
|
42
|
+
`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
43
|
+
`)?``:`
|
|
44
|
+
`)+i.raw,n.text+=`
|
|
45
|
+
`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(`
|
|
46
|
+
`)?``:`
|
|
47
|
+
`)+i.raw,r.text+=`
|
|
48
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
49
|
+
`)?``:`
|
|
50
|
+
`)+i.raw,n.text+=`
|
|
51
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links){let e=Object.keys(this.tokens.links);e.length>0&&(n=n.replace(this.tokenizer.rules.inline.reflinkSearch,t=>e.includes(t.slice(t.lastIndexOf(`[`)+1,-1))?`[`+`a`.repeat(t.length-2)+`]`:t))}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},Yn=class{options;parser;constructor(e){this.options=e||wt}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(k.notSpaceStart)?.[0],i=e.replace(k.endingNewline,``)+`
|
|
52
|
+
`;return r?`<pre><code class="language-`+j(r)+`">`+(n?i:j(i,!0))+`</code></pre>
|
|
53
|
+
`:`<pre><code>`+(n?i:j(i,!0))+`</code></pre>
|
|
54
|
+
`}blockquote({tokens:e}){return`<blockquote>
|
|
55
|
+
${this.parser.parse(e)}</blockquote>
|
|
56
|
+
`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
57
|
+
`}hr(e){return`<hr>
|
|
58
|
+
`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
|
|
59
|
+
`+r+`</`+i+`>
|
|
60
|
+
`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
|
|
61
|
+
`}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
|
|
62
|
+
`}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
|
|
63
|
+
<thead>
|
|
64
|
+
`+t+`</thead>
|
|
65
|
+
`+r+`</table>
|
|
66
|
+
`}tablerow({text:e}){return`<tr>
|
|
67
|
+
${e}</tr>
|
|
68
|
+
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
69
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${j(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=Vn(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+j(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Vn(e);if(i===null)return j(n);e=i;let a=`<img src="${e}" alt="${j(n)}"`;return t&&(a+=` title="${j(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:j(e.text)}},Xn=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},P=class e{options;renderer;textRenderer;constructor(e){this.options=e||wt,this.options.renderer=this.options.renderer||new Yn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Xn}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Zn=class{options;block;constructor(e){this.options=e||wt}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?N.lex:N.lexInline}provideParser(e=this.block){return e?P.parse:P.parseInline}},F=new class{defaults=Ct();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=P;Renderer=Yn;TextRenderer=Xn;Lexer=N;Tokenizer=Jn;Hooks=Zn;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Yn(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Jn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Zn;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=Zn.passThroughHooks.has(n)?e=>{if(this.defaults.async&&Zn.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return N.lex(e,t??this.defaults)}parser(e,t){return P.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?N.lex:N.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?P.parse:P.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?N.lex:N.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?P.parse:P.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
|
|
70
|
+
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+j(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function I(e,t){return F.parse(e,t)}I.options=I.setOptions=function(e){return F.setOptions(e),I.defaults=F.defaults,Tt(I.defaults),I},I.getDefaults=Ct,I.defaults=wt;function Qn(...e){return F.use(...e),I.defaults=F.defaults,Tt(I.defaults),I}I.use=Qn,I.walkTokens=function(e,t){return F.walkTokens(e,t)},I.parseInline=F.parseInline,I.Parser=P,I.parser=P.parse,I.Renderer=Yn,I.TextRenderer=Xn,I.Lexer=N,I.lexer=N.lex,I.Tokenizer=Jn,I.Hooks=Zn,I.parse=I,I.options,I.setOptions,I.walkTokens,I.parseInline,P.parse,N.lex;var L=e=>{let t=document.querySelector(e);if(!t)throw Error(`missing element: ${e}`);return t};function $n(e){let t=Math.round((Date.now()-e)/6e4);return t<1?`now`:t<60?`${t}m`:t<1440?`${Math.round(t/60)}h`:`${Math.round(t/1440)}d`}var er=e=>{let t=$n(e);return t===`now`?`just now`:`${t} ago`};function R(e,t,...n){let r=document.createElement(e);return t&&(r.className=t),r.append(...n),r}var tr=e=>e.split(`/`).filter(Boolean).pop()??e,nr=e=>`New session in ${tr(e)}`;function rr(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function ir(e){let t=Math.max(0,Math.round(e/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function ar(e,t,n){return{visible:!1,show(n,r){this.visible=!0,e.classList.remove(`hidden`),e.classList.add(`flex`),t(n,r)},hide(){n?.(),this.visible=!1,e.classList.add(`hidden`),e.classList.remove(`flex`)}}}function or(e){let t=R(`span`,`help`);return t.innerHTML=St.sanitize(I.parseInline(e,{async:!1})),sr(t),t}function sr(e){for(let t of e.querySelectorAll(`a`))(t.getAttribute(`href`)??``).startsWith(`#`)||(t.target=`_blank`,t.rel=`noreferrer`)}async function cr(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);t.value=e,t.className=`fixed opacity-0`,document.body.append(t),t.select();let n=document.execCommand(`copy`);if(t.remove(),!n)throw Error(`clipboard unavailable`)}function lr(e,t){let n=R(`button`,e,`Copy`);n.title=`Copy to clipboard`;let r;return n.onclick=async e=>{e.stopPropagation(),n.textContent=await cr(t()).then(()=>`Copied`,()=>`Failed`),clearTimeout(r),r=setTimeout(()=>n.textContent=`Copy`,1200)},n}function ur(e,t){let n=document.createElement(`details`);n.className=e;let r=R(`summary`,`flex cursor-pointer select-none items-center gap-1.5`);return r.append(R(`span`,`chev`,`▶`),...t),n.append(r),{el:n,summary:r}}var dr=`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,fr=(e,t=!1)=>pr(e,`${t?`btn btn-primary`:`btn`} text-[12.5px]`),pr=(e,t=``)=>{let n=R(`button`,t,e);return n.type=`button`,n},mr=(...e)=>R(`div`,`flex min-h-10 flex-none flex-wrap items-center gap-2 border-b border-neutral-200 px-4 py-2`,...e);function hr(e,t,n){let r=R(`div`,`inline-flex flex-none items-center gap-0.5 rounded-lg bg-neutral-100 p-0.5`);for(let[i,a]of e){let e=a===t,o=pr(i,`cursor-pointer whitespace-nowrap rounded-md px-2.5 py-1 text-[12px] transition-colors ${e?`bg-white font-medium text-neutral-800 shadow-xs`:`text-neutral-500 hover:text-neutral-700`}`);o.setAttribute(`aria-pressed`,String(e)),o.onclick=()=>n(a),r.append(o)}return r}function gr(e,t,n){let r=pr(e,`flex cursor-pointer items-center gap-1.5 rounded-full px-3 py-1 text-[13px] transition-colors ${t?`bg-indigo-50 font-medium text-indigo-700 ring-1 ring-indigo-200/70`:`text-neutral-600 hover:bg-neutral-100`}`);return r.onclick=n,r}function _r(e,t,...n){let r=R(`section`,`rounded-xl border border-neutral-200 bg-white shadow-xs`),i=R(`div`,`rounded-t-xl border-b border-neutral-200/70 bg-neutral-50/70 px-4 py-2.5`);return i.append(R(`h2`,`text-[13px] font-semibold text-neutral-700`,e)),t&&i.append(R(`p`,`mt-0.5 text-[11.5px] leading-snug text-neutral-500`,t)),r.append(i,R(`div`,`flex flex-col gap-4 px-4 py-3.5`,...n)),r}function vr(e,t,n={}){let r=R(`div`,`flex flex-col gap-1.5`),i=R(`div`,`flex items-center gap-1.5`,R(`span`,dr,e));return n.help&&i.append(n.help),r.append(i,t),n.hint&&r.append(R(`span`,`text-[11.5px] leading-snug text-neutral-400`,n.hint)),r}var yr=`w-full rounded-lg border border-neutral-300 bg-white px-2.5 py-1.5 text-[12.5px] transition-colors placeholder:text-neutral-400 focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100 focus:outline-none`,br=(e,t,n,r=!1)=>{let i=document.createElement(`input`);return i.className=r?`${yr} font-mono`:yr,i.value=e,i.placeholder=t,i.oninput=()=>n(i.value),i},xr=(e=``,t=`text`)=>{let n=document.createElement(`input`);return n.type=t,n.className=yr,n.value=e,n},Sr=(e,t)=>{let n=document.createElement(`select`);return n.className=`${yr} select`,n.append(...e.map(([e,t])=>new Option(e,t))),n.value=t,n},Cr=(e=``,t=4)=>{let n=document.createElement(`textarea`);return n.className=`${yr} resize-y font-mono`,n.value=e,n.rows=t,n.spellcheck=!1,n};function wr(e,t,n,r,i){let a=document.createElement(`input`);a.type=`checkbox`,a.className=`peer sr-only`,a.checked=n,a.onchange=()=>r(a.checked);let o=R(`span`,`relative h-4 w-7 flex-none rounded-full bg-neutral-300 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-3 after:w-3 after:rounded-full after:bg-white after:shadow-sm after:transition-transform peer-checked:bg-indigo-600 peer-checked:after:translate-x-3 peer-focus-visible:ring-2 peer-focus-visible:ring-indigo-200`),s=R(`label`,`flex cursor-pointer gap-2.5 ${e?`items-start`:`items-center`}`);if(s.append(a,o),e){let n=R(`span`,`flex items-center gap-1.5`,R(`span`,`text-[13px] text-neutral-700`,e));i&&n.append(i);let r=R(`span`,`flex min-w-0 flex-col`,n);t&&r.append(R(`span`,`text-[11.5px] leading-snug text-neutral-400`,t)),s.append(r)}return s}var Tr={idle:`text-neutral-400`,saving:`text-neutral-400`,saved:`text-green-700`,failed:`text-red-600`};function Er(e,t,n){e.className=`text-[11.5px] ${Tr[t]}`,e.textContent=n}var Dr=(e,t,n)=>R(`span`,`inline-flex flex-none items-center gap-1 rounded-full px-1.5 py-px text-[10px] font-medium uppercase tracking-wide ring-1 ${t}`,...n?[R(`span`,`inline-block h-1.5 w-1.5 flex-none rounded-full ${n}`)]:[],e),Or=e=>R(`p`,`rounded-lg border border-dashed border-neutral-200 px-3 py-4 text-center text-[12.5px] text-neutral-400`,e);function kr(e,t,n=`left`){let r=R(`span`,`group relative inline-flex`),i=pr(`?`,`flex h-4 w-4 cursor-help items-center justify-center rounded-full border border-neutral-300 text-[9px] font-bold text-neutral-400 transition-colors group-hover:border-indigo-400 group-hover:text-indigo-500`),a=R(`span`,`absolute ${n===`right`?`right-0`:`left-0`} top-full z-20 hidden w-[min(27rem,calc(100vw-3rem))] pt-1.5 group-hover:block`),o=R(`span`,`flex flex-col gap-2 rounded-xl border border-neutral-200 bg-white p-3.5 text-[12px] font-normal normal-case leading-[1.55] tracking-normal text-neutral-600 shadow-xl`);o.append(R(`span`,`text-[12.5px] font-semibold text-neutral-800`,e));let s=R(`ol`,`flex list-decimal flex-col gap-1.5 pl-4`);for(let e of t){let t=R(`li`,`marker:text-neutral-400`);t.append(typeof e==`string`?or(e):e),s.append(t)}return o.append(s),a.append(o),i.onclick=()=>{let e=a.classList.contains(`hidden`);a.classList.toggle(`hidden`,!e),a.classList.toggle(`block`,e),i.classList.toggle(`border-indigo-400`,e),i.classList.toggle(`text-indigo-500`,e)},r.append(i,a),r}var Ar=(e,t)=>R(`span`,`flex flex-col gap-1`,or(e),t),jr=L(`#image-dialog`),Mr=L(`#image-full`),Nr=L(`#image-prev`),Pr=L(`#image-next`),Fr=[],Ir=0;function Lr(e){Fr.length<2||(Ir=(Ir+e+Fr.length)%Fr.length,Mr.src=Fr[Ir])}function Rr(e){let t=e.closest(`[data-gallery]`);Fr=t?[...t.querySelectorAll(`img.thumb`)].map(e=>e.src):[e.src],Ir=Math.max(0,Fr.indexOf(e.src)),Mr.src=e.src;let n=Fr.length<2?`none`:`flex`;Nr.style.display=n,Pr.style.display=n,jr.showModal()}jr.onclick=()=>jr.close();var zr=(e,t)=>{e.onclick=e=>{e.stopPropagation(),Lr(t)}};zr(Nr,-1),zr(Pr,1),jr.onkeydown=e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.preventDefault(),Lr(e.key===`ArrowLeft`?-1:1))};function Br(e){let t=e.querySelector(`:scope > .thumbs`);if(t)return t;let n=R(`div`,`thumbs`);return e.append(n),n}function Vr(e){let t=document.createElement(`img`);return t.src=e,t.loading=`lazy`,t.className=`thumb`,t.onclick=()=>Rr(t),t}var Hr=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`avif`,`bmp`]),Ur=new Set([`txt`,`md`,`log`,`json`,`csv`,`yaml`,`yml`]),Wr=524288,Gr=L(`#file-dialog`),Kr=L(`#file-name`),qr=L(`#file-text`),Jr=L(`#file-download`);L(`#file-close`).onclick=()=>Gr.close();var Yr=e=>e.split(`.`).pop()?.toLowerCase()??``,Xr=(e,t,n=!1)=>`/api/sessions/${encodeURIComponent(e)}/files?path=${encodeURIComponent(t)}${n?`&download=1`:``}`;function Zr(e,t){return e.replace(/\]\(\s*<?file:\/\/(\/[^)>\s]*)>?\s*\)/g,(e,n)=>{let r=n;try{r=decodeURIComponent(n)}catch{}return`](${Xr(t,r)})`})}var Qr=e=>/^\/api\/sessions\/[^/]+\/files\?/.test(e);function $r(e,t){let n=tr(t)||`file`,r=Xr(e,t);return Hr.has(Yr(n))?ni(r,n):ri(r,n)}function ei(e){return new URLSearchParams(e.slice(e.indexOf(`?`)+1)).get(`path`)??``}async function ti(e,t){Kr.textContent=t,Jr.href=`${e}&download=1`,qr.textContent=`loading…`,Gr.showModal();let n;try{let t=await fetch(e);n=t.ok?await t.text():await h(t,`failed to load`)}catch(e){n=`failed to load: ${String(e)}`}qr.textContent=n.length>Wr?`${n.slice(0,Wr)}\n…`:n}function ni(e,t){let n=Vr(e);return n.alt=t,n}function ri(e,t){let n=Yr(t),r=R(`span`,`inline-flex max-w-full items-center gap-2.5 rounded-lg border border-neutral-200 bg-neutral-50 px-2.5 py-1.5 no-underline`),i=R(`span`,`flex h-7 w-7 flex-none items-center justify-center rounded-md bg-indigo-50 text-[10px] font-semibold uppercase text-indigo-600`,n.slice(0,4)||`file`),a=R(`span`,`min-w-0 truncate text-[13px] font-medium text-neutral-800`,t),o=R(`span`,`ml-1 flex flex-none items-center gap-0.5`);if(Ur.has(n)||n===`pdf`){let r=R(`button`,`icon-btn h-6 w-6 text-[13px]`,`◉`);r.title=`Preview`,r.onclick=r=>{r.preventDefault(),n===`pdf`?window.open(e,`_blank`,`noopener`):ti(e,t)},o.append(r)}let s=document.createElement(`a`);return s.className=`icon-btn h-6 w-6 text-[13px] no-underline`,s.href=`${e}&download=1`,s.download=t,s.title=`Download`,s.textContent=`↓`,o.append(s),r.append(i,a,o),r}function ii(e){let t=new Set;for(let n of e)n.parentElement&&t.add(n.parentElement);for(let n of t){let t=[...n.children].filter(t=>e.includes(t));if([...n.childNodes].every(e=>e.nodeType===Node.TEXT_NODE?!e.textContent?.trim():t.includes(e))){n.classList.add(`thumbs`);continue}let r=R(`div`,`thumbs`);r.append(...t),n.after(r)}}function ai(e){let t=[];for(let n of e.querySelectorAll(`img`)){let e=n.getAttribute(`src`)??``;if(!Qr(e))continue;let r=ni(e,tr(ei(e)));n.replaceWith(r),t.push(r)}for(let n of e.querySelectorAll(`a`)){let e=n.getAttribute(`href`)??``;if(!Qr(e))continue;let r=tr(ei(e))||n.textContent?.trim()||`file`,i=Hr.has(Yr(r))?ni(e,r):ri(e,r);n.replaceWith(i),t.push(i)}t.length&&ii(t)}var oi=e=>`[${e.split(`/`).pop()??`file`}](file://${encodeURI(e).replace(/\(/g,`%28`).replace(/\)/g,`%29`)})`,si=/^\[[^\]\n]*\]\(\s*<?file:\/\/(\/[^)>\s]*)>?\s*\)$/;function ci(e){let t=e.split(`
|
|
71
|
+
`),n=t.length;for(;n>0&&si.test(t[n-1].trim());)n--;let r=t.slice(n).map(e=>{let t=si.exec(e.trim())[1];try{return decodeURIComponent(t)}catch{return t}});return{text:t.slice(0,n).join(`
|
|
72
|
+
`).trimEnd(),paths:r}}var li=`modulepreload`,ui=function(e){return`/`+e},di={},fi=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=ui(t,n),t=s(t),t in di)return;di[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:li,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},pi,mi;function hi(){return mi??=fi(()=>import(`./hljs-tWqyD59G.js`).then(e=>pi=e.default,e=>{console.warn(`highlighting unavailable — code stays plain text`,e)}),[]),mi}async function gi(e){let t=await hi();if(t)for(let n of e.querySelectorAll(`pre code[class]`)){let e=/(?:language|lang)-(\S+)/.exec(n.className)?.[1]?.toLowerCase();!e||!t.getLanguage(e)||(n.innerHTML=t.highlight(n.textContent??``,{language:e}).value)}}var _i={ts:`typescript`,tsx:`typescript`,mts:`typescript`,cts:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,cjs:`javascript`,py:`python`,rs:`rust`,sh:`bash`,zsh:`bash`,md:`markdown`,yml:`yaml`,html:`xml`,htm:`xml`,svg:`xml`,patch:`diff`};async function vi(e){let t=await hi(),n=e.split(`.`).pop()?.toLowerCase()??``,r=_i[n]??n;return t?.getLanguage(r)?r:null}function yi(e,t){let n=document.createElement(`span`);return pi&&t&&e.length<=500?n.innerHTML=pi.highlight(e,{language:t}).value:n.textContent=e,n}var bi=null,xi=`max-w-full cursor-pointer break-words rounded-full border border-indigo-200 bg-indigo-50 px-2.5 py-0.5 text-left text-[12.5px] text-indigo-700 transition-colors hover:border-indigo-300 hover:bg-indigo-100`;function Si(){bi=null}function Ci(e,t,n){if(bi?.remove(),bi=null,!t.length)return;let r=R(`div`,`mt-1.5 flex flex-wrap gap-1.5`);for(let e of t){let t=R(`button`,xi,e);t.type=`button`,t.onclick=()=>{bi===r&&(bi=null),r.remove(),n(e)},r.append(t)}e.append(r),bi=r}var wi=8e3,Ti=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],Ei,Di;function Oi(e,t){Ei=e,Di=t}var ki=e=>e.slice(0,8),Ai=e=>`group relative mt-1.5 border-l-2 px-5 py-2 ${e}`,ji=e=>R(`div`,Ai(e));function Mi(e,t){let n=e.split(`
|
|
73
|
+
`).length,r=t?e.length>300||n>4:e.length>800||n>12,i=[t?`max-h-24`:`max-h-[min(18rem,40dvh)]`,`overflow-hidden`],a=R(`div`,`mt-1 whitespace-pre-wrap break-words text-[14px] text-neutral-800 ${i.join(` `)}`,e),o=R(`button`,`mx-auto mt-1.5 hidden w-fit rounded border border-black/10 bg-white px-2 py-1 text-[12px] font-medium text-neutral-700 shadow-sm hover:bg-black/[0.03] pointer-coarse:py-3.5 dark:border-neutral-200 dark:bg-neutral-50`,`Show full message`);return o.setAttribute(`type`,`button`),o.onclick=()=>{let e=a.classList.toggle(i[0]);a.classList.toggle(i[1],e),o.textContent=e?`Show full message`:`Collapse message`,a.tabIndex=-1,a.focus({preventScroll:!0})},queueMicrotask(()=>{(a.clientHeight?a.scrollHeight>a.clientHeight+1:r)?o.classList.remove(`hidden`):a.classList.remove(...i)}),[a,o]}function Ni(e){let t=R(`div`,`flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-neutral-500`,e.glyph);t.append(R(`span`,`flex-none font-semibold uppercase ${e.labelCls}`,e.label)),e.taskName&&t.append(R(`span`,`min-w-0 grow basis-0 truncate text-[12.5px] font-medium text-neutral-800`,e.taskName));let n=R(`div`,`ml-auto flex min-w-0 flex-wrap items-center gap-x-2 font-mono`);if(e.note&&n.append(R(`span`,`flex-none`,e.note)),e.model){let t=R(`span`,`flex-none rounded bg-black/[0.05] px-1.5 py-px font-medium text-neutral-700 dark:bg-neutral-200`,e.model.id);t.title=`${e.model.provider} / ${e.model.id}`,n.append(t)}if(e.thinking){let t=R(`span`,`flex-none`,e.thinking);t.title=`Reasoning effort`,n.append(t)}let r=R(`button`,`flex-none hover:underline`,ki(e.runId));if(r.title=`Run ${e.runId}`,r.onclick=()=>Ei.showRun(e.runId),n.append(r),e.sessionId&&e.sessionId!==`console`){let t=e.sessionId,r=R(`button`,`flex-none text-indigo-600 hover:underline`,ki(t));r.title=`Open session ${t}`,r.onclick=()=>Ei.select(t),n.append(r)}return t.append(n),t}var Pi=`bg-indigo-50/70`,Fi={queued:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:``},running:{edge:`border-l-indigo-500`,label:`text-indigo-700`,glyph:``},succeeded:{edge:`border-l-green-500`,label:`text-green-700`,glyph:`✓`},failed:{edge:`border-l-red-500`,label:`text-red-600`,glyph:`✕`},cancelled:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`},interrupted:{edge:`border-l-amber-400`,label:`text-amber-700`,glyph:`⏸`},skipped:{edge:`border-l-neutral-300`,label:`text-neutral-500`,glyph:`·`}},Ii=e=>Fi[e].glyph?R(`span`,`w-3 flex-none text-center font-bold ${Fi[e].label}`,Fi[e].glyph):R(`span`,`spinner ${Fi[e].label}`),Li=new Map,Ri=new WeakMap;async function zi(e,t){let n=await ae(e,`POST`,t);n&&Di.append(`error`,n)}function Bi(e){for(let[e,t]of Li)t.isConnected||Li.delete(e);let t=Li.get(e.runId);t||(t=ji(`${Fi[e.state].edge} ${Pi}`),t.dataset.kind=`background-run`,Di.el.append(t),Li.set(e.runId,t)),t.className=Ai(`${Fi[e.state].edge} ${Pi}`);let n=e.state===`queued`||e.state===`running`,r=`/api/task-runs/${e.runId}`,i=Math.max(0,Math.round(((e.finishedAt??Date.now())-(e.startedAt??e.queuedAt))/1e3)),a=Ni({glyph:Ii(e.state),label:e.state,labelCls:Fi[e.state].label,taskName:e.taskName,note:`${e.sessionMode??`task`} · depth ${String(e.depth)} · ${String(i)}s`,runId:e.runId,sessionId:e.targetSessionId}),o=R(`div`,`flex flex-none items-center gap-2 text-[11px] font-semibold text-neutral-700`);if(n){let t=R(`button`,`hover:underline`,`Stop`);t.onclick=()=>{window.confirm(`Stop "${e.taskName}"?`)&&zi(`${r}/cancel`,`could not stop the run`)},o.append(t)}o.childElementCount&&a.append(o);let s=Ri.get(t);!s&&e.prompt!==null&&(s=Mi(e.prompt,!0),Ri.set(t,s)),t.replaceChildren(a,...s??[]),Di.scroll()}var z=null,Vi=null,Hi=null,Ui=!1;function Wi(){if(!Vi)return;Vi.text=Vi.text.slice(-4e3),Vi.pre.textContent=Vi.text;let e=Vi.text.split(`
|
|
74
|
+
`).filter(Boolean).pop()??`thinking…`,t=Vi.summary.lastElementChild;t.textContent=e.length>90?`…`+e.slice(-90):e}function Gi(){if(Hi){Ui=!0;return}Ui=!1,Wi(),Hi=setTimeout(()=>{Hi=null,Ui&&Gi()},80)}function Ki(){Hi&&clearTimeout(Hi),Hi=null,Ui&&Wi(),Ui=!1}var qi=new WeakMap,Ji=e=>{let t=qi.get(e)??[];return qi.set(e,t),t};function Yi(){z&&!z.toolRows.size&&sa(`done`)}var Xi=null;function Zi(){z=null,Xi=null,Vi=null,Ki(),Li.clear()}function Qi(){let e=Xi;return!e||z?.el===e||(Xi=null,e!==Di.el.lastElementChild)?null:(e.remove(),e.dataset.adopted=`1`,ea(e,e.dataset.status),e)}var $i={running:`text-green-700 open:bg-green-50`,done:`text-neutral-400 hover:text-neutral-600 open:bg-black/[0.02] open:text-neutral-500 dark:open:bg-neutral-100`,failed:`text-red-600 open:bg-red-50`,interrupted:`text-amber-700 open:bg-amber-50`};function ea(e,t){e.dataset.status=t,e.className=`${e.dataset.adopted?`float-left min-w-[6.5rem] pr-3 tabular-nums mt-[3px] open:float-none open:mt-0 open:mb-1.5 open:min-w-0 open:pr-0`:`mx-5 my-1.5`} rounded-md text-[11.5px] leading-[1.35] open:border open:border-black/[0.06] open:px-2 open:py-1.5 dark:open:border-neutral-200 ${$i[t]}`}var ta={failed:`✕`,interrupted:`⏸`};function na(e){return e===`running`?R(`span`,`spinner`):e===`done`?R(`span`,`hidden`):R(`span`,`flex-none text-[12px] font-bold`,ta[e])}function ra(e){if(z)return z;let t=na(`running`),n=R(`span`,`min-w-0 truncate`,`working…`),{el:r}=ur(``,[t,n]);r.dataset.kind=`activity`,ea(r,`running`);let i=R(`div`,`mt-1.5 flex max-h-64 flex-col gap-1 overflow-y-auto overscroll-contain border-t border-black/5 pt-1.5 dark:border-neutral-200`);return r.append(i),ia(r,i),Di.el.append(r),Xi=r,Di.scroll(),z={el:r,statusIcon:t,headline:n,rowsEl:i,toolRows:new Map,thinking:null,steps:0,failedSteps:0,startTs:e,sawError:!1},z}function ia(e,t){t.dataset.follow=`1`,t.addEventListener(`scroll`,()=>{let e=t.scrollHeight-t.scrollTop-t.clientHeight<24;t.dataset.follow=e?`1`:``}),e.addEventListener(`toggle`,()=>{e.open&&(t.scrollTop=t.scrollHeight,t.dataset.follow=`1`)})}function aa(e){Di.bulk()||!e.el.open||!e.rowsEl.dataset.follow||(e.rowsEl.scrollTop=e.rowsEl.scrollHeight)}function oa(e,t,n){let r=Math.max(1,Math.round((Date.now()-e.startTs)/1e3)),i=`${e.steps} step${e.steps===1?``:`s`} · ${r}s`;e.headline.textContent=t===`running`&&n?`${i} · ${n}`:t===`done`?i:`${i} · ${t}`,ea(e.el,t);let a=na(t);e.statusIcon.replaceWith(a),e.statusIcon=a}function sa(e){if(!z)return;Ki();for(let{statusEl:e}of z.toolRows.values())e.textContent===`running…`&&(e.textContent=`interrupted`);let t=z.steps>0&&z.failedSteps===z.steps;oa(z,(z.sawError||t)&&e===`done`?`failed`:e),z=null}function ca(){z&&(z.sawError=!0)}function la(e){let t=e.slice(0,400).replace(/\s+/g,` `);return t.length>100?t.slice(0,100)+`…`:t}function ua(e,t,n,r){let i=ra(e);i.steps+=1,Ki(),i.thinking=null;let a=JSON.stringify(r,null,2)??``,o=R(`span`,`ml-auto flex-none text-neutral-400`,`running…`),s=R(`span`,`min-w-0 truncate text-neutral-500`,la(a)),{el:c}=ur(`rounded-md px-1 py-0.5 font-mono text-[12.5px] hover:bg-black/[0.03] dark:hover:bg-neutral-100`,[R(`span`,`flex-none font-semibold`,n),s,o]),l=R(`pre`,`max-h-40 overflow-y-auto whitespace-pre-wrap break-words rounded bg-black/[0.04] p-1.5 text-[12px] dark:bg-neutral-100`,a),u=R(`pre`,`hidden max-h-56 overflow-y-auto whitespace-pre-wrap break-words rounded bg-black/[0.04] p-1.5 text-[12px] dark:bg-neutral-100`);c.append(R(`div`,`mt-1 flex flex-col gap-1 pl-4`,l,u)),Ji(i.el).push({tool:n,call:t,preview:s,argsPre:l,outputPre:u}),i.toolRows.set(t,{el:c,statusEl:o,outputPre:u}),i.rowsEl.append(c),aa(i),oa(i,`running`,n),Di.scroll()}function da(e,t,n){let r=z;if(!r)return;let i=r.toolRows.get(e);r.toolRows.delete(e),i&&(i.statusEl.textContent=t?`failed`:`ok`,i.statusEl.className=`ml-auto flex-none ${t?`text-red-600`:`text-green-700`}`,i.el.classList.toggle(`bg-red-50`,t),i.el.classList.toggle(`text-red-700`,t),n&&(i.outputPre.textContent=n.length>8e3?n.slice(0,wi)+`…`:n,i.outputPre.classList.remove(`hidden`)),t&&(r.failedSteps+=1)),oa(r,`running`)}function fa(e,t){let n=ra(e);if(!n.thinking){Ki();let{el:e,summary:t}=ur(`rounded-md px-1 py-0.5 text-[12.5px] italic text-neutral-500 hover:bg-black/[0.03] dark:hover:bg-neutral-100`,[R(`span`,`min-w-0 truncate`,`thinking…`)]),r=R(`div`,`mt-1 max-h-56 overflow-y-auto whitespace-pre-wrap break-words pl-4 not-italic text-neutral-500`,``);e.append(r),n.rowsEl.append(e),n.thinking={pre:r,summary:t,text:``},Vi=n.thinking,aa(n),oa(n,`running`,`thinking…`)}n.thinking.text+=t,Gi()}var pa=0;function ma(e,t=0,n=!1,r){let i=Date.now()-t,a=ra(i).el;for(let t of e){if(t.kind===`thinking`){fa(i,t.text??``);continue}let e=t.id??`replay-${++pa}`;ua(i,e,t.toolName??``,t.args),t.done&&da(e,t.isError??!1,t.output??``)}r!==void 0&&e.some(e=>e.kind===`tool`&&e.args===void 0)&&ha(a,r),!n&&sa(e.some(e=>e.kind===`tool`&&!e.done)?`interrupted`:`done`)}function ha(e,t){let n=()=>{e.open&&(e.removeEventListener(`toggle`,n),ga(e,t))};e.addEventListener(`toggle`,n)}async function ga(e,t){let n=Ei.sessionId(),r=Ji(e),i=new Set(r.filter(e=>!e.argsPre.textContent)),a=e=>{for(let t of i)t.argsPre.textContent=e};if(a(`loading…`),!n)return a(`no session`);let o=await g(`/api/sessions/${n}/turns/${t}/steps`,`could not load these steps`);if(!o.ok)return a(o.error);let s=o.value.steps.filter(e=>e.kind===`tool`);for(let[e,t]of r.entries()){if(!i.has(t))continue;let n=s[e];if(!(n&&(n.id?n.id===t.call:n.toolName===t.tool))){t.argsPre.textContent=`detail no longer available — reload the session`;continue}let r=JSON.stringify(n.args,null,2)??``;t.argsPre.textContent=r,t.preview.textContent=la(r),n.output&&(t.outputPre.textContent=n.output,t.outputPre.classList.remove(`hidden`))}}var _a,B=L(`#turns`);function va(e){_a=e,Oi(e,{el:B,append:V,scroll:Ta,bulk:()=>ya})}var ya=!1,ba=()=>B.scrollHeight-B.scrollTop-B.clientHeight<80,xa=!0;B.addEventListener(`scroll`,()=>{ya||(xa=ba())},{passive:!0});var Sa=0;function Ca(){!xa||ya||Sa||(Sa=requestAnimationFrame(()=>{Sa=0,xa&&!ya&&(B.scrollTop=B.scrollHeight)}))}new ResizeObserver(Ca).observe(B),B.addEventListener(`load`,Ca,!0),new MutationObserver(Ca).observe(B,{childList:!0,subtree:!0,characterData:!0});function wa(){ba()&&(xa=!0)}function Ta(e=!1){ya||(e&&(xa=!0),xa&&(B.scrollTop=B.scrollHeight))}var Ea=500,Da=0,Oa=0,ka=null;function Aa(){for(;B.childElementCount>Ea;){let e=B.firstElementChild;e.remove(),e!==ka&&(e.dataset.kind===`user`&&Da++,Oa++)}Oa&&(ka||(ka=R(`div`,`px-5 py-2 text-center text-[11.5px] italic text-neutral-400`),ka.dataset.kind=`trim`),ka.textContent=`${Oa} earlier row${Oa===1?``:`s`} not shown — still in the transcript, not on this screen`,B.firstElementChild!==ka&&B.prepend(ka))}var ja={user:{row:`border-l-indigo-500 bg-indigo-50`,body:`text-neutral-900`},assistant:{row:`border-l-transparent`,body:`text-neutral-900`},error:{row:`border-l-red-400 bg-red-50`,body:`text-red-700`},system:{row:`border-l-cyan-500 bg-cyan-50`,body:`text-neutral-800`}};function V(e,t,n=!1,r){Yi();let i=e===`assistant`?Qi():null,a=ja[e],o=e===`user`&&r!==void 0&&Va(r)?r:void 0,s=R(`div`,`group relative border-l-2 px-5 ${o===void 0&&B.lastElementChild?.dataset.kind===e?`pt-1 pb-2.5`:`mt-1.5 py-2.5`} ${a.row}`);s.dataset.kind=e;let c=e===`user`?ci(t):null,l=c?.text??t,u=e===`user`?te(l):null,d=u?.id||u?.when?u:null,ee=d?.id&&d.id!==`web`?d:null,f=R(`div`,`whitespace-pre-wrap break-words ${a.body}`,d?.text??l);(c?.paths.length||d)&&(f.dataset.raw=t),n&&Xa(f,t),i&&(s.classList.add(`flow-root`),s.append(i)),(ee||o!==void 0)&&s.append(Ma(ee,o)),s.append(f);let p=_a.sessionId();if(c?.paths.length&&p){let e=Br(s);for(let t of c.paths)e.append($r(p,t))}if(e===`user`){let e=R(`button`,`absolute right-2 top-1 hidden h-6 w-6 items-center justify-center rounded text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:flex pointer-coarse:flex`);e.title=`Edit — resends from here; this message and later turns leave the context`,e.setAttribute(`aria-label`,`Edit message`),e.innerHTML=`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="m10.7 2.3 3 3L6 13H3v-3l7.7-7.7zM9.3 3.7l3 3"/></svg>`,e.onclick=()=>Ia(s,f),s.append(e)}return B.append(s),Aa(),Ta(),f}function Ma(e,t){let n=R(`div`,`mb-1 flex items-baseline gap-2 text-[11.5px] leading-tight`),r=e?.name??e?.id;if(r){let t=R(`span`,`font-semibold text-indigo-700`,r);e?.id&&(t.title=e.id),n.append(t)}return t!==void 0&&n.append(Ha(t,`font-mono text-[11px] text-indigo-600`)),n}var Na={"task-delegation":[`▶`,`delegated`,`text-cyan-700`],"task-callback":[`↩`,`callback`,`text-cyan-700`],decision:[`?`,`decision needed`,`text-amber-700`]};function Pa(e){let t=e.indexOf(`
|
|
75
|
+
|
|
76
|
+
`);if(t<0)return[null,e];let n=e.slice(0,t);return n.length>600||n.split(`
|
|
77
|
+
`).length>6?[null,e]:[n,e.slice(t+2)]}function Fa(e,t){let n=t.kind===`task-message`?t.messageKind:t.kind,[r,i,a]=Na[n]??[`↩`,n.replace(`_`,` `),`text-cyan-700`];Yi();let o=ji(n===`decision`?`border-l-amber-400 bg-amber-50`:`border-l-cyan-500 bg-cyan-50`);o.dataset.kind=`system`;let[s,c]=Pa(e),l=t.kind===`task-callback`?t.state:void 0,u=Ni({glyph:l?Ii(l):R(`span`,`w-3 flex-none text-center font-bold ${a}`,r),label:l?`${i} \u00b7 ${l}`:i,labelCls:l?Fi[l].label:a,...t.source?{taskName:t.source.taskName,model:t.source.model,thinking:t.source.thinking}:s?{taskName:s.split(`
|
|
78
|
+
`)[0]}:{},runId:t.runId,sessionId:t.sourceSessionId});o.append(u),o.append(...Mi(c,t.kind===`task-delegation`)),B.append(o),Aa(),Ta()}function Ia(e,t){if(_a.sessionState()!==`idle`){V(`error`,`can't edit while streaming — stop the turn first`);return}if(e.querySelector(`textarea`))return;let n=document.createElement(`textarea`);n.value=t.dataset.raw??t.textContent??``,n.className=`block w-full resize-none rounded-md border border-indigo-300 bg-white px-2 py-1 focus:outline-none`;let r=()=>{n.style.height=`auto`,n.style.height=`${Math.min(n.scrollHeight,192)}px`};n.oninput=r,t.classList.add(`hidden`),t.after(n),r(),n.focus(),n.setSelectionRange(n.value.length,n.value.length);let i=()=>{n.remove(),t.classList.remove(`hidden`)};n.onkeydown=t=>{if(!(t.isComposing||t.keyCode===229)&&(t.key===`Escape`&&i(),t.key===`Enter`&&!t.shiftKey)){t.preventDefault();let r=n.value.trim();if(!r)return i();La(e,r)}}}async function La(e,t){let n=_a.sessionId();if(!n)return;let r=Da+[...B.querySelectorAll(`[data-kind="user"]`)].indexOf(e);for(;e.nextElementSibling;)e.nextElementSibling.remove();e.remove(),_a.ownTurn(t),V(`user`,t,!1,Date.now()),Ta(!0);let i=await m(`/api/sessions/${n}/turns/${r}/edit`,{text:t});if(!i.ok){let e=await h(i,`edit failed`);await _a.reload(n),V(`error`,e)}}var Ra=6e5,za=null,Ba=(e,t)=>new Date(e).toDateString()===new Date(t).toDateString();function Va(e){let t=za;return za=e,t===null||e-t>=Ra||!Ba(t,e)}function Ha(e,t){let n=R(`div`,t);return n.dataset.at=String(e),Ua(n),Ga??=setInterval(Ka,6e4),n}function Ua(e){let t=Number(e.dataset.at);e.textContent=`${rr(t)} · ${er(t)}`}var Wa=null,Ga;function Ka(){let e=B.querySelectorAll(`[data-at]`);if(!e.length){clearInterval(Ga),Ga=void 0;return}for(let t of e)Ua(t)}function qa(e,t){t&&(Wa?.remove(),Wa=Ha(t.completedAt,`mt-1 font-mono text-[11px] text-neutral-400`),(e.parentElement??e).append(Wa))}function Ja(e){for(let t of e.querySelectorAll(`pre`)){let e=t.querySelector(`code`);if(!e)continue;let n=R(`div`,`group/code relative`);t.replaceWith(n),n.append(t,lr(`absolute right-1.5 top-1.5 cursor-pointer rounded border border-black/[0.08] bg-white/85 px-1.5 py-0.5 text-[11px] text-neutral-500 opacity-0 transition-opacity hover:bg-white hover:text-neutral-800 focus:opacity-100 group-hover/code:opacity-100 pointer-coarse:opacity-100 dark:border-neutral-200`,()=>e.textContent??``))}}function Ya(e){let t=_a.sessionId(),n=R(`div`,``);return n.innerHTML=St.sanitize(I.parse(t?Zr(e,t):e,{async:!1})),sr(n),n}function Xa(e,t){e.replaceChildren(...Ya(t).childNodes),e.classList.remove(`whitespace-pre-wrap`),e.classList.add(`md`),gi(e),Ja(e),ai(e)}function Za(e,t,r,i=!1){let{text:a,suggestions:o}=u(t);return n({text:a,suggestions:o})?Qa(e,l(t)):Xa(e,a),i&&Ci(e.parentElement??e,o,e=>_a.send(`auto`,e)),qa(e,r),e}function Qa(e,t){e.classList.remove(`md`,`whitespace-pre-wrap`),e.replaceChildren(R(`span`,`text-[12.5px] italic text-neutral-400`,t?`Stayed silent — ${t}`:`Stayed silent.`))}var $a=(e,t,n=!1)=>Za(V(`assistant`,``),e,t,n),H=null,eo=null,to=!1,no=0,ro=0;function io(e){let t=e.dataset.raw??``;for(;e.childNodes.length>ro;)e.lastChild.remove();let n=f(t,no);n>no&&(e.append(...Ya(d(t.slice(no,n))).childNodes),no=n,ro=e.childNodes.length),e.append(...Ya(u(t.slice(no)).text).childNodes),e.classList.remove(`whitespace-pre-wrap`),e.classList.add(`md`)}function ao(){if(eo){to=!0;return}to=!1,H&&(io(H),Ta()),eo=setTimeout(()=>{eo=null,to&&ao()},80)}function oo(){eo&&clearTimeout(eo),eo=null,to=!1}function so(e){H||(H=V(`assistant`,``),no=0,ro=0),H.dataset.raw=(H.dataset.raw??``)+e,ao()}function co(e=!1,t){if(!H)return;let n=H;H=null,oo(),Za(n,n.dataset.raw??``,t,e)}function lo(e,t){if(sa(`done`),H){e&&(H.dataset.raw=e),co(!0,t);return}e&&$a(e,t,!0)}function uo(){sa(`interrupted`),co()}function fo(){B.replaceChildren(),Da=0,Oa=0,ka=null,za=null,Wa=null,H=null,oo(),Zi(),Si()}function po(e){if(!e){B.querySelector(`[data-kind="loading"]`)?.remove();return}let t=R(`div`,`flex flex-col gap-3 px-5 py-4`);t.dataset.kind=`loading`;for(let e of[`w-2/5`,`w-4/5`,`w-3/5`,`w-1/3`,`w-2/3`])t.append(R(`div`,`skeleton h-3.5 ${e}`));B.append(t)}function mo(e,t,n){po(!1);let r=new Map(n.map(e=>[e.runId,e])),i=e=>[...r].filter(([,t])=>t.queuedAt<=e).map(([e])=>e),a=e=>{for(let t of e){let e=r.get(t);e&&(Bi(e),r.delete(t))}},o=e.reduce((e,t,n)=>t.role===`assistant`?n:e,-1);ya=!0;try{for(let[n,r]of e.entries()){let s=t===`streaming`&&n===e.length-1&&(!r.text||(r.steps?.some(e=>e.kind===`tool`&&!e.done)??!1)),c=r.steps;if(c?.length&&(ma(c,r.meta?.durationMs,s,n),r.meta&&a(i(r.meta.completedAt))),r.text){if(r.role===`system`&&r.origin){a(r.origin.kind===`task-message`?[r.origin.runId]:r.origin.runIds??[r.origin.runId]),Fa(r.text,r.origin);continue}r.role===`assistant`?$a(r.text,r.meta,t===`idle`&&n===o):V(r.role,r.text,!1,r.at)}}for(let e of r.values())Bi(e)}finally{ya=!1}Ta(!0)}var ho=window.fetch.bind(window),go=20,_o=6e4,vo=[],yo=new Map,bo=e=>e instanceof Error?e.stack??`${e.name}: ${e.message}`:void 0;function xo(e,t){let n=t===void 0?e:`${e}: ${String(t)}`,r=Date.now();return r-(yo.get(n)??-6e4)<_o||(yo.size>100&&yo.clear(),yo.set(n,r),vo=vo.filter(e=>r-e<6e4),vo.length>=go)?null:(vo.push(r),ho(`/api/client-log`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({message:n,stack:bo(t),view:location.hash||`/`}),keepalive:!0}).catch(()=>{}),V(`error`,n))}function So(){window.__pierReporting=!0,window.addEventListener(`error`,e=>{xo(`script error: ${e.message}`,e.error)}),window.addEventListener(`unhandledrejection`,e=>{xo(`unhandled rejection`,e.reason)})}var Co=window.fetch.bind(window),wo=()=>{location.assign(`/login?next=${encodeURIComponent(location.pathname+location.hash)}`)};function To(){window.fetch=async(...e)=>{let t=await Co(...e);return t.status===401&&wo(),t}}function Eo(e,t){if(e.readyState!==EventSource.CLOSED)return;let n=()=>{let e=xo(`${t} stream disconnected`);if(!e)return;let n=fr(`Reload`);n.classList.add(`ml-2`,`align-middle`),n.onclick=()=>location.reload(),e.append(` `,n)};Co(`/api/projects`).then(e=>e.status===401?wo():n(),n)}var Do=/Mac|iP(?:hone|ad|od)/.test(navigator.userAgent),Oo=Do?`⌘`:`Ctrl+`,ko=Do?`⇧`:`Shift+`,Ao=e=>{let t=e.startsWith(`meta+`),n=t?e.slice(5):e;return n.startsWith(`shift+`)?{key:n.slice(6),shift:!0,meta:t}:{key:n,shift:!1,meta:t}};function jo(e){let{key:t,shift:n,meta:r}=Ao(e);return`${r?`⌘`:Oo}${n?ko:``}${t.toUpperCase()}`}var Mo=`pointer-events-none fixed z-50 flex items-center gap-2 whitespace-nowrap rounded-md bg-neutral-800 px-2 py-1 text-[11.5px] text-neutral-100 shadow-lg`;function No(e,t,n){e.removeAttribute(`title`);let r=null,i=()=>{r?.remove(),r=null,document.removeEventListener(`keydown`,i,!0)};e.addEventListener(`pointerenter`,a=>{if(a.pointerType!==`mouse`)return;i(),r=R(`div`,Mo,t,R(`kbd`,`rounded bg-white/15 px-1 py-px font-sans text-[10.5px]`,n)),document.body.append(r);let o=e.getBoundingClientRect(),s=o.bottom+6,c=s+r.offsetHeight+8<=window.innerHeight;r.style.top=`${c?s:Math.max(8,o.top-r.offsetHeight-6)}px`,r.style.left=`${Math.max(8,Math.min(o.left,window.innerWidth-r.offsetWidth-8))}px`,document.addEventListener(`keydown`,i,!0)}),e.addEventListener(`pointerleave`,i),e.addEventListener(`pointerdown`,i)}function Po(e,t,n,r,i){No(e,n,jo(t)),Ro(t,r,i)}function Fo(e,t,n,r){No(e,t,`Esc`),document.addEventListener(`keydown`,e=>{e.key!==`Escape`||e.isComposing||e.defaultPrevented||document.querySelector(`dialog[open]`)||!r()||(e.preventDefault(),n())})}var Io=`input, textarea, select, [contenteditable]`;function Lo(e,t,n,r,i){No(e,n,t[0].toUpperCase()),document.addEventListener(`keydown`,e=>{e.metaKey||e.ctrlKey||e.altKey||e.isComposing||e.defaultPrevented||!e.key||!t.includes(e.key.toLowerCase())||e.target?.closest?.(Io)||document.querySelector(`dialog[open]`)||!i()||(e.preventDefault(),r())})}function Ro(e,t,n){let{key:r,shift:i,meta:a}=Ao(e);document.addEventListener(`keydown`,e=>{!e.key||e.key.toLowerCase()!==r||e.altKey||e.shiftKey!==i||(a?!e.metaKey:!e.metaKey&&!e.ctrlKey)||n?.()||(e.preventDefault(),e.stopPropagation(),t())},!0)}var U,zo=L(`#composer`),W=L(`#input`),Bo=L(`#send`),Vo=L(`#send-plane`),Ho=L(`#send-queue`),Uo=L(`#stop`),Wo=L(`#queue-panel`),Go=L(`#queue-rows`),Ko=L(`#queue-label`),qo=R(`div`,`hidden max-h-48 overflow-y-auto border-t border-neutral-200 px-3 py-1.5 text-[13px]`);Wo.after(qo);var Jo=L(`#image-strip`),Yo=L(`#attach-input`),Xo=!1,Zo=0,Qo=new Set,$o=[],es=[];function ts(){let e=window.visualViewport;if(!e)return;let t=()=>{let t=e.scale<=1.05&&window.innerHeight-e.height-e.offsetTop>80;t?document.body.dataset.kb=``:delete document.body.dataset.kb,document.body.style.height=t?`${String(e.height)}px`:``,t&&window.scrollY&&window.scrollTo(0,0)};e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t)}function ns(){W.focus()}function rs(e){let t=es.indexOf(e);return t<0?!1:(es.splice(t,1),!0)}function is(e){es.push(e)}function as(){es=[]}function os(){let e=U.sessionState()===`streaming`,t=U.sessionId()!==null,n=U.starting();Bo.disabled=!t,Bo.className=`flex h-7 w-7 flex-none items-center justify-center rounded-lg ${t?e?`cursor-pointer bg-amber-100 text-amber-700 hover:bg-amber-200 active:bg-amber-300`:`cursor-pointer bg-indigo-600 text-white hover:bg-indigo-500 active:bg-indigo-700 dark:text-neutral-50`:`cursor-default bg-neutral-100 text-neutral-400`}`,Bo.title=t?e?`Queue — delivered when the turn ends`:`Send`:n?`Starting the session…`:`No session`,W.placeholder=n?`Starting the session…`:`Message…`,Vo.classList.toggle(`hidden`,e),Ho.classList.toggle(`hidden`,!e),Uo.classList.toggle(`hidden`,!e),Uo.classList.toggle(`flex`,e)}function ss(){let e=U.chatVisible()&&Xo;Wo.classList.toggle(`hidden`,!e),Wo.classList.toggle(`flex`,e),qo.classList.toggle(`hidden`,!U.chatVisible()||!qo.childElementCount)}function cs(e,t=!1){let n=U.sessionId();if(qo.replaceChildren(...e.map(e=>{let t=R(`details`,`py-1`),r=e.status===`submitting`?`Handing off`:e.status===`not-submitted`?`Not submitted`:`Acceptance unknown`,i=e.status===`submitting`?``:`; automatic queue paused`;t.append(R(`summary`,`cursor-pointer break-words text-amber-700`,`Queue recovery: ${r}${i} (in memory)`));for(let n of[...e.steering,...e.followUp]){let e=R(`div`,`flex items-start gap-2 border-t border-neutral-100 py-1`);e.append(R(`span`,`min-w-0 flex-1 whitespace-pre-wrap break-words`,n),lr(`flex-none cursor-pointer px-1 text-neutral-500 hover:text-neutral-800`,()=>n)),t.append(e)}e.error&&t.append(R(`div`,`break-words text-red-600`,e.error));let a=R(`button`,`cursor-pointer py-1 text-neutral-500 disabled:cursor-default disabled:opacity-40`,`Acknowledge`);return a.type=`button`,a.disabled=e.status===`submitting`,a.title=`Remove this recovery copy without sending it`,a.onclick=async()=>{if(!n||!confirm(`Remove this recovery copy? This does not resend the messages.`))return;let t=await m(`/api/sessions/${n}/queue/recovery/${e.id}/ack`,{}),r=t.ok?null:await h(t,`Could not acknowledge queue recovery`);U.sessionId()===n&&(r===null?await U.reload(n):V(`error`,r))},t.append(a),t})),t){let e=R(`div`,`flex flex-wrap items-center gap-x-2 py-1 text-amber-700`,`Automatic queue paused: acceptance unknown (in memory)`),t=R(`button`,`cursor-pointer underline`,`Recall queue`);t.title=`Clear the live queue and return its messages to the composer`,t.onclick=()=>void Ss(),e.append(t),qo.prepend(e)}ss()}function ls(e,t){++Zo;let n=[...e.map(e=>({mode:`steer`,text:e})),...t.map(e=>({mode:`queued`,text:e}))];Xo=n.length>0,Ko.textContent=n.length>1?`Queued · ${n.length}`:`Queued`,ss(),Go.replaceChildren(...n.map(e=>{let t=R(`li`,`flex items-start gap-2 text-[13px] leading-[18px]`);return e.mode===`steer`&&t.append(R(`span`,`flex-none rounded bg-indigo-100 px-1 py-0.5 text-[10.5px] font-semibold uppercase tracking-wide text-indigo-700`,e.mode)),t.append(R(`span`,`min-w-0 whitespace-pre-wrap break-words text-neutral-700`,e.text)),t}))}var us=8;function ds(){Jo.classList.toggle(`hidden`,$o.length===0),Jo.classList.toggle(`flex`,$o.length>0),Jo.replaceChildren(...$o.map((e,t)=>{let n=e.mimeType.startsWith(`image/`)?Vr(`data:${e.mimeType};base64,${e.data}`):R(`span`,`flex h-16 max-w-40 items-center truncate rounded-md border border-neutral-200 bg-neutral-50 px-2 text-[12px] text-neutral-700`,e.name??`file`),r=R(`button`,`absolute -right-1.5 -top-1.5 h-4 w-4 cursor-pointer rounded-full bg-neutral-700 text-[10px] leading-none text-white hover:bg-red-600`,`×`);return r.onclick=()=>{$o.splice(t,1),ds()},R(`div`,`relative`,n,r)}))}function fs(e){if($o.length>=us){V(`error`,`attachment limit is ${us} files per message`);return}if(e.size>33554432){V(`error`,`${e.name||`file`} is too large (32MB max)`);return}let t=new FileReader;t.onload=()=>{let n=t.result;$o.push({data:n.slice(n.indexOf(`,`)+1),mimeType:e.type||`application/octet-stream`,name:e.name||void 0}),ds()},t.readAsDataURL(e)}async function ps(e){let t=[];for(let n of e){let e=await m(`/api/inbox`,n);if(!e.ok)return null;let{path:r}=await e.json();t.push(oi(r))}return t}var ms=e=>`pier.draft.${e}`,hs=0;function gs(e=U.sessionId(),t=W.value){e&&(t?localStorage.setItem(ms(e),t):localStorage.removeItem(ms(e)))}function _s(e){++hs,W.value=localStorage.getItem(ms(e))??``,vs(),$o=[],ds()}function vs(){let e=W.style.height;W.style.height=`auto`;let t=`${Math.min(W.scrollHeight,192)}px`;W.style.height=t,t!==e&&Ta()}var ys=!1;async function bs(e,t){let n=(t??W.value).trim(),r=t===void 0?$o:[],i=U.sessionId();if(!(!n&&r.length===0||!i)){if(t===void 0){if(ys)return;ys=!0,W.value=``,vs(),gs(),$o=[],ds()}try{let t=[];if(r.length){let e=await ps(r);if(e===null){V(`error`,`attachment upload failed`),W.value=[n,W.value.trim()].filter(Boolean).join(`
|
|
79
|
+
`),vs(),gs(),$o=r,ds();return}t=e}let a=[n,...t].filter(Boolean).join(`
|
|
80
|
+
`),o=U.sessionState()===`idle`&&e===`auto`;o?U.setState(`streaming`):os(),(o||e===`steer`)&&(is(a),V(`user`,a,!1,Date.now()),Ta(!0));let s=await m(`/api/sessions/${i}/messages`,{text:a,mode:e});if(!s.ok){let e=await h(s,`send failed`);await U.reload(i),V(`error`,e)}}finally{t===void 0&&(ys=!1)}}}async function xs(e){let t=U.sessionId();if(!t)return;ls([],[]);let n=await m(`/api/sessions/${t}/queue/deliver`,{mode:e});if(!n.ok){let r=await h(n,`Queue ${e} failed`);await U.reload(t),U.sessionId()===t&&V(`error`,r)}}async function Ss(){let e=U.sessionId();if(!e||Qo.has(e))return;Qo.add(e);let t=Zo,n=hs,r=document.activeElement;try{gs();let i=await fetch(`/api/sessions/${e}/queue/recall`,{method:`POST`});if(!i.ok){let t=await h(i,`Could not recall queued messages`);U.sessionId()===e&&V(`error`,t);return}let{messages:a}=await i.json(),o=U.sessionId()===e;if(a.length)try{let t=o?W.value:localStorage.getItem(ms(e))??``,i=(t?[t,...a]:a).join(`
|
|
81
|
+
`);o&&(W.value=i,vs(),n===hs&&U.chatVisible()&&document.activeElement===r&&W.focus()),gs(e,i)}catch(t){V(`error`,`Could not save recalled messages for session ${e}: ${String(t)}\nRecalled messages (not saved):\n${a.join(`
|
|
82
|
+
`)}`)}o&&t===Zo&&ls([],[])}finally{Qo.delete(e)}}function Cs(e){U=e,ts();let t=()=>{let e=U.sessionId();e&&fetch(`/api/sessions/${e}/abort`,{method:`POST`})};Uo.onclick=t,Fo(Uo,`Stop the running turn`,t,()=>U.sessionState()===`streaming`&&U.chatVisible()),L(`#queue-steer`).onclick=()=>void xs(`steer`),L(`#queue-restart`).onclick=()=>void xs(`restart`),L(`#queue-recall`).onclick=()=>void Ss(),zo.onsubmit=e=>{e.preventDefault(),bs(`auto`)},Lo(W,[`/`],`Write a message`,ns,U.chatVisible),W.onfocus=wa,W.oninput=()=>{vs(),gs()};let n=!matchMedia(`(pointer: coarse)`).matches;W.onkeydown=e=>{e.isComposing||e.keyCode===229||n&&e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),bs(`auto`))},W.onpaste=e=>{for(let t of e.clipboardData?.items??[]){let e=t.kind===`file`?t.getAsFile():null;e&&fs(e)}let t=e.clipboardData?.getData(`text/plain`)??``,n=t.trim();!n||n===t||(e.preventDefault(),W.setRangeText(n,W.selectionStart??0,W.selectionEnd??0,`end`),vs(),gs())},B.ondragover=e=>e.preventDefault(),B.ondrop=e=>{e.preventDefault();for(let t of e.dataTransfer?.files??[])fs(t)},L(`#attach`).onclick=()=>Yo.click(),Yo.onchange=()=>{for(let e of Yo.files??[])fs(e);Yo.value=``},os()}var ws=`pier.push`,Ts=`/sw.js`,Es=()=>/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.maxTouchPoints>1&&/Macintosh/.test(navigator.userAgent),Ds=()=>matchMedia(`(display-mode: standalone)`).matches||navigator.standalone===!0;function Os(){return window.isSecureContext?Es()&&!Ds()?`On iPhone and iPad, notifications work only from the installed app: Share → Add to Home Screen, then open Pier from that icon.`:!(`serviceWorker`in navigator)||!(`PushManager`in window)||!(`Notification`in window)?`This browser has no Web Push support.`:``:`Notifications need HTTPS. Reach this Pier through its public URL, not over plain http.`}var ks=[[/iPhone/,`iPhone`],[/iPad/,`iPad`],[/Android/,`Android`],[/Macintosh/,`Mac`],[/Windows/,`Windows`]],As=[[/Edg\//,`Edge`],[/Chrome\//,`Chrome`],[/Firefox\//,`Firefox`],[/Safari\//,`Safari`]];function js(){let e=navigator.userAgent,t=(t,n)=>t.find(([t])=>t.test(e))?.[1]??n;return`${t(ks,`Linux`)} · ${t(As,`browser`)}${Ds()?` (installed)`:``}`}var Ms=e=>{let t=atob(e.replace(/-/g,`+`).replace(/_/g,`/`)),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n},Ns=null;async function Ps(){return!(`serviceWorker`in navigator)||!window.isSecureContext?null:(Ns??=await navigator.serviceWorker.register(Ts,{scope:`/`}).catch(e=>(console.warn(`service worker registration failed`,e),null)),Ns)}var Fs=(e,t)=>{let n=e?new Uint8Array(e):null;return n?.length===t.length&&n.every((e,n)=>e===t[n])};async function Is(e){let{publicKey:t}=await ie(`/api/push`,`Could not read this instance's push key`),n=Ms(t),r=await e.pushManager.getSubscription();if(r){if(Fs(r.options.applicationServerKey,n))return r;await r.unsubscribe()}return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:n})}async function Ls(e){return m(`/api/push/subscribe`,{...e.toJSON(),label:js()})}async function Rs(){Vs();let e=await Ps();if(!(!e||localStorage.getItem(ws)!==`on`)&&!(!(`Notification`in window)||Notification.permission!==`granted`))try{await Ls(await Is(e))}catch(e){console.warn(`re-registering this browser for notifications failed`,e)}}var zs=null,Bs=null;function Vs(){window.addEventListener(`beforeinstallprompt`,e=>{e.preventDefault(),zs=e,Bs?.()}),window.addEventListener(`appinstalled`,()=>{zs=null,Bs?.()})}function Hs(e){let t=navigator;(e>0?t.setAppBadge?.(e):t.clearAppBadge?.())?.catch(()=>{})}function Us(){let e=R(`span`,`text-[11.5px]`,``),t=fr(`Send a test notification`),n=R(`div`,`flex items-center gap-3`,t,e),r=R(`div`,`flex flex-col gap-4`),i=()=>localStorage.getItem(ws)===`on`;async function a(){Er(e,`saving`,`asking this browser…`);let t=await Notification.requestPermission();if(t!==`granted`)return localStorage.setItem(ws,`off`),c(),Er(e,`failed`,t===`denied`?`Notifications are blocked for this site — allow them in the browser's site settings, then try again.`:`No answer to the permission prompt.`);let n=await Ps();if(!n)return Er(e,`failed`,`This browser refused to register a service worker.`);try{let t=await Ls(await Is(n));if(!t.ok)return Er(e,`failed`,await h(t,`Could not register this browser`));localStorage.setItem(ws,`on`),c(),Er(e,`saved`,`This browser will be notified when a turn finishes unseen.`)}catch(t){Er(e,`failed`,`Could not subscribe: ${String(t)}`)}}async function o(){localStorage.setItem(ws,`off`),c();let t=await(await Ps())?.pushManager.getSubscription();t&&(await m(`/api/push/unsubscribe`,{endpoint:t.endpoint}),await t.unsubscribe()),Er(e,`idle`,`This browser will not be notified.`)}t.onclick=()=>{Er(e,`saving`,`sending…`),(async()=>{let t=await m(`/api/push/test`,{});if(!t.ok)return Er(e,`failed`,await h(t,`Could not send`));let{sent:n,failed:r}=await t.json();Er(e,r?`failed`:`saved`,`Handed ${String(n)} device(s) to their push service${r?`, ${String(r)} refused`:``}.`)})()};function s(){if(!zs)return[];let e=fr(`Install Pier`,!0);return e.onclick=()=>{let e=zs;e&&e.prompt().then(()=>e.userChoice).finally(()=>{zs=null,c()})},[R(`div`,`flex items-center gap-3`,e,R(`span`,`text-[11.5px] leading-snug text-neutral-500`,`Its own window and icon — and where notifications look like an app's.`))]}function c(){let e=Os();if(e){r.replaceChildren(...s(),R(`p`,`text-[12.5px] leading-snug text-neutral-500`,e));return}let c=i()&&Notification.permission===`granted`;t.disabled=!c,r.replaceChildren(...s(),wr(`Notify this device`,`A turn that finishes while nobody is looking at it becomes a notification here. Per browser — each device is enabled on its own.`,c,e=>void(e?a():o())),n)}return Bs=c,c(),_r(`Notifications`,`Web Push, so a finished turn reaches you with the workbench closed. Installed — Chrome's address-bar icon, or Share → Add to Home Screen on iOS — Pier notifies you the way an app does.`,r)}var G=null;function Ws(e){G&&!G.contains(e.target)&&K()}function Gs(e){e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),K())}function Ks(e){G&&!G.contains(e.target)&&K()}function K(){G&&=(document.removeEventListener(`pointerdown`,Ws,!0),document.removeEventListener(`keydown`,Gs,!0),window.removeEventListener(`scroll`,Ks,!0),window.removeEventListener(`resize`,K),G.remove(),null)}var qs=null;function Js(e){let t=e.getBoundingClientRect(),n={top:t.bottom+4,left:t.left};return t.width||t.height?n:qs?.anchor===e?{top:qs.top,left:qs.left}:n}var Ys=()=>window.innerWidth<640;function Xs(e,t){K();let n=Ys();if(G=R(`div`,`fixed z-50 rounded-lg border border-neutral-200 bg-white py-1 shadow-lg ${n?`inset-x-2 bottom-2 max-h-[70dvh] overflow-y-auto pb-[calc(0.25rem+env(safe-area-inset-bottom))] text-[16px]`:`min-w-52 max-w-[min(42rem,calc(100vw-1rem))] text-[13px]`}`),G.append(t),(e.closest(`dialog[open]`)??document.body).append(G),!n){let t=Js(e);qs={anchor:e,...t},G.style.top=`${Math.max(8,Math.min(t.top,window.innerHeight-G.offsetHeight-8))}px`,G.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-G.offsetWidth-8))}px`}document.addEventListener(`pointerdown`,Ws,!0),document.addEventListener(`keydown`,Gs,!0),window.addEventListener(`scroll`,Ks,!0),window.addEventListener(`resize`,K)}function Zs(e){let t=R(`button`,`flex w-full cursor-pointer items-center gap-2 px-3 text-left hover:bg-neutral-100 active:bg-neutral-100 ${Ys()?`py-3`:`py-1.5`}`,R(`span`,`flex-none w-3 text-indigo-600`,e.checked?`✓`:``),R(`span`,`truncate`,e.label));return e.hint&&t.append(R(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),t.onclick=()=>e.onSelect(),t}function Qs(e,t){Xs(e,R(`div`,``,...t.map(Zs)))}var q=e=>`${e.provider}/${e.id}`,$s=`pier.modelFavorites`,ec=e=>`${q(e)}@${e.thinking}`,tc=null;async function nc(){let{modelMenu:e}=await ie(`/api/settings`,`Could not read the pinned model menu`);return e}function rc(){try{let e=JSON.parse(localStorage.getItem($s)??`[]`);return Array.isArray(e)?e.filter(e=>{let t=e;return!!t&&typeof t==`object`&&typeof t.provider==`string`&&typeof t.id==`string`&&typeof t.thinking==`string`}):[]}catch{return[]}}function ic(e){let t=R(`button`,`flex min-w-0 flex-1 cursor-pointer items-center gap-2 px-3 py-1.5 text-left`,R(`span`,`w-3 flex-none text-indigo-600`,e.checked?`✓`:``),R(`span`,`truncate`,e.label));e.hint&&t.append(R(`span`,`ml-auto flex-none text-[11.5px] text-neutral-400`,e.hint)),e.title&&(t.title=e.title),t.onclick=()=>e.onSelect();let n=R(`button`,`flex-none cursor-pointer px-2 py-1.5 leading-none ${e.starred?`text-amber-500`:`text-neutral-300 opacity-0 hover:text-amber-500 group-hover/row:opacity-100`}`,e.starred?`★`:`☆`);return n.title=e.starred?`Unstar`:`Star this model + reasoning`,n.onclick=t=>{t.stopPropagation(),e.onStar()},R(`div`,`group/row flex w-full items-center hover:bg-neutral-100`,t,n)}function ac({models:e,current:t,thinkingLevel:n,thinkingLevels:i,onPick:a,onThinkingPick:o}){let s=rc(),c=n,l=R(`div`,`flex w-72 flex-col`),u=R(`div`,`flex flex-col gap-2 border-b border-neutral-200 px-2 py-2`),d=document.createElement(`input`);if(d.type=`search`,d.placeholder=`Search models`,d.setAttribute(`aria-label`,`Search models`),d.className=`w-full rounded-md border border-neutral-300 px-2 py-1.5 text-[12.5px] focus:border-indigo-400 focus:outline-none`,u.append(d),i.length){let e=R(`label`,`flex items-center gap-2 px-1 text-[12px] text-neutral-500`),t=document.createElement(`select`);t.className=`select ml-auto rounded-md border border-neutral-300 px-2 py-1 text-[12px] text-neutral-700 focus:border-indigo-400 focus:outline-none`,t.setAttribute(`aria-label`,`Reasoning level`);for(let e of i){let n=document.createElement(`option`);n.value=e,n.textContent=r(e),t.append(n)}t.value=n,t.onchange=()=>{c=t.value,re(d.value),o(c)},e.append(R(`span`,`font-medium`,`Reasoning`),t),u.append(e)}let ee=e=>{let t=ec(e);s=s.some(e=>ec(e)===t)?s.filter(e=>ec(e)!==t):[...s,e],localStorage.setItem($s,JSON.stringify(s)),re(d.value)},f=(e,t)=>s.some(n=>ec(n)===`${q(e)}@${t}`),p=R(`div`,`max-h-72 overflow-y-auto py-1`),te=new Map(e.map(e=>[q(e),e])),ne=(e,n,i)=>{let o=n.map(e=>({e,model:te.get(q(e))})).filter(e=>!!e.model&&(!i||q(e.model).toLowerCase().includes(i)));o.length&&p.append(R(`div`,`px-3 pb-0.5 pt-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),...o.map(({e,model:n})=>{let i=e.thinking??c;return ic({label:n.id,hint:e.thinking?r(e.thinking):void 0,title:e.note,checked:!!t&&q(t)===q(n)&&c===i,starred:f(n,i),onSelect:()=>a(n,e.thinking),onStar:()=>ee({provider:n.provider,id:n.id,thinking:i})})}),R(`div`,`my-1 border-t border-neutral-100`))},re=n=>{p.replaceChildren();let r=n.trim().toLowerCase();ne(`Pinned`,tc??[],r),ne(`Starred`,s,r);let i=new Map;for(let t of e){if(r&&!q(t).toLowerCase().includes(r))continue;let e=i.get(t.provider);e?e.push(t):i.set(t.provider,[t])}if(!i.size){p.append(R(`div`,`px-3 py-2 text-[12.5px] text-neutral-400`,e.length?`No matching models.`:`No models available.`));return}for(let[e,n]of i){let i=n.some(e=>!!t&&q(t)===q(e)),o=document.createElement(`details`);o.open=i||r.length>0;let s=R(`summary`,`flex cursor-pointer select-none items-center gap-1.5 px-3 py-1 text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400 hover:bg-neutral-100`,R(`span`,`chev`,`▶`),R(`span`,`truncate`,e),R(`span`,`ml-auto flex-none normal-case text-neutral-300`,String(n.length)));o.append(s,...n.map(e=>ic({label:e.id,checked:!!t&&q(t)===q(e),starred:f(e,c),onSelect:()=>a(e),onStar:()=>ee({provider:e.provider,id:e.id,thinking:c})}))),p.append(o)}};return d.oninput=()=>re(d.value),re(``),nc().then(e=>{let t=JSON.stringify(e)!==JSON.stringify(tc);tc=e,t&&re(d.value)}).catch(e=>xo(`model menu unavailable`,e)),l.append(u,p),queueMicrotask(()=>d.focus()),l}function oc(e,t,n,i){let a=pr(t.model?`${t.model.id}${t.thinking?` · ${r(t.thinking)}`:``}`:t.thinking?`Pi default · ${r(t.thinking)}`:`Pi default`,`${yr} flex cursor-pointer items-center gap-1.5 truncate text-left hover:bg-neutral-50 ${t.model?`text-neutral-700`:`text-neutral-400`}`);return a.title=t.model?`${t.model.provider}/${t.model.id}`:`Whatever the project and Pi pick`,a.onclick=()=>{let e=ac({models:n,current:t.model,thinkingLevel:t.thinking??`medium`,thinkingLevels:[...Ti],onPick:(e,n)=>{K(),i({model:e,thinking:n??t.thinking})},onThinkingPick:e=>i({...t,thinking:e})}),r=pr(`Pi default`,`w-full cursor-pointer px-3 py-1.5 text-left text-[12.5px] text-neutral-500 hover:bg-neutral-100`);r.onclick=()=>{K(),i({model:null,thinking:null})};let o=R(`div`,`flex flex-col`);o.append(e,R(`div`,`border-t border-neutral-200`),r),Xs(a,o)},vr(e,a)}var sc=async e=>{let t=await g(`/api/fs/ls${e?.startsWith(`/`)?`?path=${encodeURIComponent(e)}`:``}`,`Could not list directories`);return t.ok?t.value:null},cc=e=>e.entries.filter(e=>e.dir&&!e.name.startsWith(`.`)).map(e=>e.name),lc=(e,t,n)=>{let r=pr(e,`flex w-full cursor-pointer items-center gap-1.5 px-3 py-1 text-left ${t}`);return r.onclick=n,r};function uc(e,t){let n=R(`div`,`flex-none border-t border-neutral-200`),r=lc(`+ New folder`,`text-[12px] text-neutral-500 hover:bg-neutral-100`,()=>{let r=document.createElement(`input`);r.className=`w-full border-0 bg-transparent px-3 py-1 font-mono text-[12.5px] focus:outline-none`,r.placeholder=`folder-name`;let i=R(`p`,`hidden px-3 pb-1 text-[11.5px] text-red-600`);r.onkeydown=async n=>{if(n.key!==`Enter`)return;n.preventDefault();let a=await m(`/api/fs/mkdir`,{path:e,name:r.value});if(!a.ok){i.textContent=(await a.json()).error??`could not create`,i.classList.remove(`hidden`);return}t((await a.json()).path)},n.replaceChildren(r,i),r.focus()});return n.append(r),n}function dc(e,t,n){let r=e=>{n(e),K()};async function i(t){let n=await sc(t);if(!n)return;let a=R(`div`,`flex max-h-80 w-80 flex-col`),o=pr(`Use`,`ml-auto flex-none cursor-pointer rounded bg-indigo-600 px-2 py-0.5 text-[11.5px] text-white dark:text-neutral-50`);o.onclick=()=>r(n.path);let s=document.createElement(`input`);s.className=`min-w-0 flex-1 border-0 bg-transparent font-mono text-[11.5px] text-neutral-500 focus:outline-none`,s.value=n.path,s.spellcheck=!1,s.title=`Type or paste a path, then Enter`,s.onfocus=()=>s.select();let c=R(`p`,`hidden flex-none px-3 pb-1 text-[11.5px] text-red-600`);s.onkeydown=async e=>{if(e.key!==`Enter`)return;e.preventDefault(),e.stopPropagation();let t=s.value.trim();if(!t)return;let n=await sc(t);if(!n){c.textContent=`${t} is not a folder this can read`,c.classList.remove(`hidden`);return}r(n.path)};let l=R(`div`,`flex flex-none items-center gap-2 border-b border-neutral-200 px-3 py-1.5`,s,o),u=R(`div`,`min-h-0 flex-1 overflow-y-auto py-0.5 text-[12.5px]`);n.parent&&u.append(lc(`../`,`font-mono text-neutral-500 hover:bg-neutral-100`,()=>void i(n.parent)));let d=cc(n);for(let e of d)u.append(lc(e,`truncate hover:bg-neutral-100`,()=>void i(`${n.path}/${e}`.replace(`//`,`/`))));d.length||u.append(R(`p`,`px-3 py-1.5 text-[12px] text-neutral-400`,`No sub-folders.`)),a.append(l,c,u,uc(n.path,e=>void i(e))),Xs(e,a)}i(t)}function fc(e,t,n,r){Qs(e,[...t.map(e=>({label:e.path,...e.hint?{hint:e.hint}:{},checked:e.path===n,onSelect:()=>{K(),r(e.path)}})),{label:`Browse…`,onSelect:()=>dc(e,n||void 0,r)}])}var pc=(e,t)=>n=>{e.value=n,e.dispatchEvent(new Event(`input`,{bubbles:!0})),t?.(n)};function mc(e,t){let n=pr(`Browse…`,`flex-none cursor-pointer rounded-md border border-neutral-300 px-2 py-1 text-[12px] text-neutral-600 hover:bg-neutral-100`);return n.onclick=()=>dc(n,e.value.trim()||void 0,pc(e,t)),n}function hc(e,t){let n=pc(e);e.classList.add(`select`),e.title=`Pick a project folder, or type a path`,e.onclick=()=>{let r=e.value.trim()||void 0,i=t();if(i.length)return fc(e,i,r,n);dc(e,r,n)},e.addEventListener(`input`,()=>K())}function gc(e,t,n){let r=document.createElement(`input`);return r.className=`min-w-0 flex-1 rounded-md border border-neutral-300 bg-white px-2 py-1 font-mono text-[12.5px] focus:border-indigo-400 focus:outline-none`,r.value=e,r.placeholder=t,r.oninput=()=>n(r.value),{el:R(`div`,`flex items-center gap-1.5`,r,mc(r,n)),input:r}}var _c=L(`#sidebar`),vc=L(`#drawer-scrim`),yc=L(`#mobile-title`),bc=L(`#mobile-menu`);function xc(){delete _c.dataset.open,vc.classList.add(`hidden`)}function Sc(e,t){yc.textContent=e,yc.classList.toggle(`cursor-pointer`,t),bc.classList.toggle(`hidden`,!t)}var Cc=`pier.railClosed`;localStorage.getItem(Cc)===`1`&&(document.body.dataset.rail=`closed`);function wc(e){document.body.dataset.rail=e?`closed`:``,localStorage.setItem(Cc,e?`1`:`0`)}function Tc(){if(_c.dataset.open!==void 0)return xc();_c.dataset.open=``,vc.classList.remove(`hidden`)}var Ec=()=>window.innerWidth<768,Dc=[L(`#rail-toggle`),L(`#drawer-toggle`)],Oc=`attention absolute -right-0.5 -top-0.5 rounded-full bg-amber-500`,kc=e=>e===1?R(`span`,`${Oc} h-2 w-2`):R(`span`,`${Oc} flex h-3.5 min-w-3.5 items-center justify-center px-0.5 text-[9px] font-semibold text-white`,e>9?`9+`:String(e));function Ac(e){for(let t of Dc)t.querySelector(`.attention`)?.remove(),e&&t.append(kc(e))}var jc=20,Mc=.35,Nc=8;function Pc(){let e=-1,t=0,n=!1,r=!1,i=1,a=e=>{_c.style.transition=`none`,_c.style.transform=`translateX(${String(e-i)}px)`,vc.classList.remove(`hidden`),vc.style.opacity=String(e/i)},o=t=>{_c.style.transition=``,_c.style.transform=``,vc.style.opacity=``,t?(_c.dataset.open=``,vc.classList.remove(`hidden`)):xc(),e=-1,r=!1};window.addEventListener(`touchstart`,a=>{if(r||(e=-1,!Ec()||a.touches.length!==1))return;let o=a.touches[0],s=_c.dataset.open!==void 0;if(i=_c.offsetWidth||1,s){if(o.clientX>i)return}else{if(o.clientX>jc||a.target?.closest(`button, a, input, textarea, select`))return;a.preventDefault()}e=o.clientX,t=o.clientY,n=!s},{passive:!1}),window.addEventListener(`touchmove`,o=>{if(e<0)return;let s=o.touches[0],c=s.clientX-e;if(!r){if(Math.abs(s.clientY-t)>Math.abs(c))return void(e=-1);if(Math.abs(c)<Nc)return;r=!0}o.preventDefault(),a(Math.max(0,Math.min(i,n?c:i+c)))},{passive:!1});let s=()=>{if(e<0)return;if(!r)return void(e=-1);let t=_c.getBoundingClientRect().right;o(n?t>i*Mc:t>i*.65)};window.addEventListener(`touchend`,s),window.addEventListener(`touchcancel`,s)}function Fc(e){Pc(),L(`#drawer-toggle`).onclick=Tc,vc.onclick=xc,bc.onclick=()=>e.sessionMenu(bc),yc.onclick=()=>{bc.classList.contains(`hidden`)||e.sessionInfo(yc)};let t=L(`#rail-toggle`);t.onclick=()=>wc(document.body.dataset.rail!==`closed`),Po(t,`meta+b`,`Toggle sidebar`,()=>Ec()?Tc():wc(document.body.dataset.rail!==`closed`))}var J,Ic=L(`#project-tree`),Lc=L(`#archive-dialog`),Rc=L(`#archive-list`),zc=L(`#archive-search`),Bc=L(`#archive-count`),Vc=L(`#new-dialog`),Hc=`pier.collapsedProjects`,Uc=new Set(Wc());function Wc(){try{let e=JSON.parse(localStorage.getItem(Hc)??`[]`);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}catch{return[]}}function Gc(e,t){t?Uc.add(e):Uc.delete(e),localStorage.setItem(Hc,JSON.stringify([...Uc]))}function Kc(e,t){let n=new Map;for(let r of e){let e=t(r),i=n.get(e);i?i.push(r):n.set(e,[r])}return n}var qc=e=>Kc(e,e=>e.cwd),Jc=e=>e.repo??e.cwd,Yc=e=>e.endsWith(`/.git`)?e.slice(0,-5):void 0,Xc=(e,t)=>tr(Yc(e)??t[0]?.cwd??e);function Zc(e,t){let n=Yc(e),r=[...new Set(t.map(e=>e.cwd))];return n&&r.includes(n)?[n,...r.filter(e=>e!==n)]:r}function Qc(e,t){return e===t?0:e===void 0?-1:t===void 0?1:e-t}function $c(e){let t=[...Kc(e,Jc)].map(([e,t])=>[e,[...t].sort((e,t)=>(e.branch??e.cwd).localeCompare(t.branch??t.cwd)||Qc(e.sort,t.sort)||t.createdAt-e.createdAt)]),n=e=>{let t=e.map(e=>e.projectSort).filter(e=>e!==void 0);return t.length?Math.min(...t):void 0},r=e=>Math.min(...e.map(e=>e.createdAt));return t.sort(([,e],[,t])=>Qc(n(e),n(t))||r(t)-r(e))}function el(e,t,n,r){let i=e.filter(e=>e!==t);return i.splice(i.indexOf(n)+ +!!r,0,t),i}var tl=()=>$c(J.sessions().filter(e=>e.listed)),nl=()=>tl().flatMap(([e,t])=>Zc(e,t).map(e=>{let n=t.find(t=>t.cwd===e)?.branch;return{path:e,...n?{hint:n}:{}}}));function rl(e,t,n,r){let i=new Map(e.map((e,t)=>[e,t]));for(let e of J.sessions()){let r=i.get(t(e));r!==void 0&&n(e,r)}Cl();let a=()=>void J.loadSessions();m(`/api/projects/order`,r).then(e=>{e.ok||a()},a)}function il(e,t,n,r){let i=tl().find(([t])=>t===e);if(!i)return;let a=el(i[1].map(e=>e.id),t,n,r);rl(a,e=>e.id,(e,t)=>e.sort=t,{sessions:a})}function al(e,t,n){let r=tl(),i=el(r.map(([e])=>e),e,t,n);rl(i,Jc,(e,t)=>e.projectSort=t,{projects:i.flatMap(e=>{let t=r.find(([t])=>t===e);return t?Zc(e,t[1]):[]})})}var ol=null;function sl(e,t){e.style.boxShadow=t===null?``:`inset 0 ${t?-2:2}px 0 0 #818cf8`}function cl(e,t,n,r){e.draggable=!0,e.ondragstart=e=>{e.stopPropagation(),ol={list:t,key:n},e.dataTransfer?.setData(`text/plain`,n)},e.ondragend=()=>{ol=null,Cl(!0)};let i=t=>{let n=e.getBoundingClientRect();return t.clientY>n.top+n.height/2},a=e=>!ol||ol.list!==t||ol.key===n?!1:(e.preventDefault(),e.stopPropagation(),!0);e.ondragover=t=>{a(t)&&sl(e,i(t))},e.ondragleave=()=>sl(e,null),e.ondrop=t=>{let n=ol?.key;sl(e,null),a(t)&&n&&r(n,i(t))}}var ll=`hidden flex-none rounded px-1 leading-none text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700 group-hover:block pointer-coarse:block`,ul=e=>e.unread&&e.listed;function dl(e){let[t,n]=e.state===`streaming`?[`bg-green-500 animate-pulse`,`working…`]:ul(e)?[`bg-amber-500`,`turn finished — not viewed yet`]:e.activeRuns>0?[`bg-sky-500`,`${e.activeRuns} subagent${e.activeRuns>1?`s`:``} running`]:[`bg-neutral-300`,`idle`],r=R(`span`,`h-2 w-2 flex-none rounded-full ${t}`);return r.title=n,r}async function fl(e,t,n,r,i){let a=t=>{e(t),Cl(),J.onPinsChanged()};a(t),(await m(r,i)).ok||a(n)}async function pl(e){let t=window.prompt(`Session name — empty resets it to the first message`,e.title??``);t!==null&&await fl(t=>e.title=t,t.trim()||void 0,e.title,`/api/sessions/${e.id}/rename`,{name:t})}var ml=(e,t)=>fl(t=>e.listed=t,t,!t,`/api/sessions/${e.id}/pin`,{pinned:t}),hl=(e,t)=>e.find(e=>e.cwd===t)?.branch??tr(t),gl=`flex-none truncate rounded bg-neutral-200/70 px-1 font-mono text-[10px] leading-[15px] text-neutral-500`,_l={telegram:`tg`};function vl(e){if(!e.channel||e.channel===`web`)return[];let t=R(`span`,gl,_l[e.channel]??e.channel);return t.title=`answering ${e.channel}`,[t]}function yl(e){let t=R(`li`,`group flex cursor-pointer items-center gap-1.5 py-1.5 pl-6 pr-3 hover:bg-neutral-100 ${e.id===J.currentId()?`bg-indigo-50 hover:bg-indigo-50`:``}`),n=R(`button`,ll,`⋯`);n.title=`Session actions`,n.onclick=t=>{t.stopPropagation(),J.sessionMenu(n,e)};let r=R(`button`,ll,`✓`);r.title=`Done — remove from Projects (the session and its transcript stay)`,r.onclick=t=>{t.stopPropagation(),ml(e,!1)},t.append(dl(e),R(`span`,`truncate`,e.title??`untitled`),R(`div`,`ml-auto flex flex-none items-center gap-1`,...vl(e),r,n)),t.onclick=()=>J.select(e.id),t.title=`Drag to reorder`;let i=Jc(e);return cl(t,i,e.id,(t,n)=>il(i,t,e.id,n)),t}function bl(e,t){let n=Zc(e,t),r=n[0]??e,i=R(`span`,`flex-none text-[11px] text-neutral-400 group-hover:hidden`,String(t.length)),a=R(`button`,ll,`⋯`);a.title=`Project actions`,a.onclick=e=>{e.preventDefault(),e.stopPropagation(),Qs(a,[...n.map(e=>({label:n.length>1?`New session in ${hl(t,e)}`:`New session here`,hint:tr(e),onSelect:()=>{K(),J.createSession(e)}})),{label:`Browse files`,onSelect:()=>{K(),J.openFiles(r)}},{label:`Remove ${t.length} session${t.length>1?`s`:``} from Projects`,onSelect:()=>{K();for(let e of t)ml(e,!1)}}])};let{el:o,summary:s}=ur(`border-b border-neutral-200/70`,[R(`span`,`truncate font-mono text-[11px] font-semibold uppercase tracking-wide text-neutral-500`,Xc(e,t)),R(`div`,`ml-auto flex flex-none items-center gap-1.5`,i,a)]);s.className+=` group px-3 py-1.5 hover:bg-neutral-100`,s.title=`${n.join(`
|
|
83
|
+
`)}\nDrag to reorder`,cl(s,``,e,(t,n)=>al(t,e,n)),o.open=!Uc.has(e),o.ontoggle=()=>Gc(e,!o.open);let c=R(`ul`,`pb-1`);return c.append(...t.map(yl)),o.append(c),o}var xl=()=>`${J.currentId()??``}\n${JSON.stringify(J.sessions())}`,Sl=``;function Cl(e=!1){let t=xl();if(t===Sl&&!e)return;Sl=t;let n=J.sessions().filter(ul);Ac(n.length),Hs(n.filter(e=>e.channel===`web`).length);let r=tl();Ic.replaceChildren(...r.length?r.map(([e,t])=>bl(e,t)):[R(`p`,`px-3 py-2 text-[12.5px] leading-snug text-neutral-400`,`No projects yet — create a session, or pin one from All sessions.`)]),Lc.open&&Nl()}var wl=[{name:`tasks`,label:`Tasks`,detail:`Automation — task definitions and schedules`},{name:`runs`,label:`Runs`,detail:`Automation — executions, subagents, decisions and callbacks`},{name:`activity`,label:`Activity`,detail:`Automation — sessions and relationships`},{name:`boards`,label:`Boards`,detail:`Console — the static pages Pier publishes`},{name:`settings`,label:`Settings`,detail:`Console — models and providers, agent files and extensions, channels, password, sign out, security`}],Tl=[],El=0,Dl={ArrowDown:1,ArrowUp:-1},Ol={n:1,j:1,p:-1,k:-1};function kl(e){if(Tl.length){El=(e+Tl.length)%Tl.length;for(let[e,{el:t}]of Tl.entries())t.classList.toggle(`bg-indigo-100`,e===El),t.classList.toggle(`border-indigo-500`,e===El);Tl[El]?.el.scrollIntoView({block:`nearest`})}}function Al(e){let t=R(`button`,`flex-none rounded px-1.5 py-0.5 text-[11.5px] ${e.listed?`bg-indigo-50 text-indigo-600`:`text-neutral-400 hover:bg-neutral-200 hover:text-neutral-700`}`,e.listed?`pinned`:`pin`);return t.title=e.listed?`Remove from Projects`:`Pin to Projects`,t.onclick=t=>{t.stopPropagation(),ml(e,!e.listed)},t}function jl(e){let t=R(`li`,`flex cursor-pointer items-center gap-2 border-l-2 border-transparent px-3 py-1.5 hover:bg-neutral-100`);return t.append(e.session?dl(e.session):R(`span`,`h-2 w-2 flex-none`)),t.append(R(`span`,`min-w-0 flex-1 truncate`,e.label),R(`span`,`max-w-[45%] flex-none truncate text-[11.5px] text-neutral-400`,e.detail)),e.session&&t.append(R(`span`,`flex-none text-[11px] text-neutral-400`,$n(e.session.createdAt)),Al(e.session)),t.onclick=e.open,t}var Ml=e=>R(`li`,`px-3 pb-0.5 pt-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-400`,e);function Nl(){let e=zc.value.trim().toLowerCase(),t=t=>!e||t.toLowerCase().includes(e),n=e=>()=>{Lc.close(),e()},r=e=>e.channel&&e.channel!==`web`?e.channel:``,i=J.sessions().filter(e=>t(`${e.title??``} ${e.cwd} ${r(e)}`)),a=(e,t)=>t.createdAt-e.createdAt,o=e=>({label:e.title??nr(e.cwd),detail:[tr(e.cwd),r(e)].filter(Boolean).join(` · `),open:n(()=>J.select(e.id)),session:e}),s=i.filter(e=>e.state===`streaming`),c=i.filter(e=>e.state!==`streaming`),l=[`Console`,wl.filter(e=>t(`${e.label} ${e.detail}`)).map(({name:e,label:t,detail:r})=>({label:t,detail:r,open:n(()=>J.openConsole(e))}))],u=[[`Running`,s.sort(a).map(o)],[`Projects`,c.filter(e=>e.listed).sort(a).map(o)],[`Other sessions`,c.filter(e=>!e.listed).sort(a).map(o)]];e?u.unshift(l):u.push(l),Tl=[];let d=[];for(let[e,t]of u)if(t.length){d.push(Ml(e));for(let e of t){let t=jl(e);Tl.push({el:t,open:e.open}),d.push(t)}}Rc.replaceChildren(...d.length?d:[R(`li`,`px-3 py-3 text-[13px] text-neutral-400`,`Nothing matches.`)]),Bc.textContent=String(Tl.length),kl(El)}function Pl(){if(Lc.open)return Lc.close();zc.value=``,El=0,Nl(),Lc.showModal(),zc.focus(),J.loadSessions().then(()=>{Lc.open&&Nl()})}function Fl(e){J=e,hc(L(`#new-cwd`),nl);let t=L(`#new-session`),n=()=>{let e=J.sessions().find(e=>e.id===J.currentId())?.cwd??``,t=L(`#new-cwd`);t.value=e,Vc.showModal(),t.select()};t.onclick=n,Po(t,`shift+o`,`New session`,n,()=>Vc.open),L(`#new-cancel`).onclick=()=>Vc.close(),L(`#new-form`).onsubmit=()=>void J.createSession(L(`#new-cwd`).value.trim());let r=L(`#open-archive`);r.onclick=Pl,Po(r,`k`,`Search sessions and Console`,Pl,()=>Lc.open),L(`#archive-close`).onclick=()=>Lc.close(),zc.oninput=()=>{El=0,Nl()},zc.onkeydown=e=>{let t=e.altKey||e.metaKey||e.shiftKey||!e.key?void 0:e.ctrlKey?Ol[e.key.toLowerCase()]:Dl[e.key];if(t!==void 0){e.preventDefault(),kl(El+t);return}e.key===`Enter`&&!e.ctrlKey&&(e.preventDefault(),Tl[El]?.open())}}var Y;function Il(e){Y=e,Ro(Rl,()=>{let e=Y.currentSession();e&&(K(),ml(e,!e.listed))},Ll),Ro(zl,()=>{Y.currentSession()&&(K(),Y.toggleFiles())},Ll)}var Ll=()=>document.querySelector(`dialog[open]`)!==null,Rl=`d`,zl=`i`,Bl=L(`#chat-title`),Vl=L(`#chat-menu`),Hl=L(`#session-meta`),Ul=null,Wl=null,Gl=null,Kl=null;function ql(){Ul=null,Wl=null,Gl=null,Kl=null,tu()}function Jl(e,t,n,r){Ul=e,Wl=t,Gl=n,Kl=r,Ql()}function Yl(e){Kl=e.completedAt,Wl&&={...Wl,tokens:e.tokens},tu()}var Xl=null;function Zl(e){Xl=e===null?null:nr(e),Ql()}function Ql(){let e=Y.currentSession();e&&(Xl=null),Bl.textContent=e?e.title??nr(e.cwd):Xl??`no session`,Bl.classList.toggle(`cursor-pointer`,!!e),Bl.title=e?`Session info`:``,Bl.onclick=e?()=>nu(Bl,e):null,Vl.classList.toggle(`hidden`,!e),e&&(Vl.onclick=()=>cu(Vl,e)),tu(),Y.syncBar()}var $l=(e,t)=>Math.min(100,Math.round(e/t.contextWindow*100)),eu=e=>e.tokens===null?`?/${i(e.contextWindow)}`:`${i(e.tokens)}/${i(e.contextWindow)} · ${100-$l(e.tokens,e)}% left`;function tu(){let e=Wl,t=e?.tokens??null,n=Y.currentId(),r=[];if(!n&&Xl&&r.push(R(`span`,`flex flex-none items-center gap-1.5 text-neutral-500`,R(`span`,`spinner`),`starting…`)),n){let e=(e,t)=>{let r=R(`button`,`flex-none cursor-pointer font-mono ${t}`,e);return r.title=`Change model or reasoning`,r.onclick=()=>void ru(r,n),r};Ul&&r.push(e(Ul.id,`rounded bg-indigo-50 px-1.5 py-px font-medium text-indigo-700 hover:bg-indigo-100`)),Gl&&r.push(e(Gl,`text-neutral-500 hover:text-indigo-700`))}if(e&&t!==null){let n=$l(t,e),a=n>=90?`text-red-700`:n>=70?`text-amber-700`:`text-neutral-500`;r.push(R(`span`,`flex-none font-mono ${a}`,i(t).toLowerCase()))}let a=r.flatMap((e,t)=>t===0?[e]:[R(`span`,`text-neutral-300`,`·`),e]);Hl.replaceChildren(...a),Hl.classList.toggle(`hidden`,r.length===0),Hl.classList.toggle(`flex`,r.length>0)}function nu(e,t){let n=[[`Title`,t.title??`untitled`],[`Directory`,t.cwd],[`Session`,t.id]],r=t.id===Y.currentId();if(r&&(n.push([`Model`,Ul?.id??`—`]),n.push([`Reasoning`,Gl??`—`]),n.push([`Context`,Wl?eu(Wl):`—`])),n.push([`Created`,rr(t.createdAt),er(t.createdAt)]),r){let e=Kl;n.push(e===null?[`Last reply`,`—`]:[`Last reply`,rr(e),er(e)])}let i=R(`div`,`flex max-w-80 flex-col gap-1.5 px-3 py-2`);for(let[e,t,r]of n){let n=R(`div`,`flex items-center gap-1.5`,R(`span`,`text-[10.5px] font-semibold uppercase tracking-wide text-neutral-400`,e),lr(`cursor-pointer text-[10.5px] uppercase tracking-wide text-neutral-400 opacity-0 hover:text-neutral-700 focus:opacity-100 group-hover:opacity-100 pointer-coarse:opacity-100`,()=>t)),a=R(`span`,`break-all font-mono text-[12px] text-neutral-700`,t);r&&a.append(R(`span`,`ml-1.5 font-sans text-[11px] text-neutral-400`,r)),i.append(R(`div`,`group flex flex-col`,n,a))}Xs(e,i)}async function ru(e,t){try{let[n,r]=await Promise.all([ie(`/api/sessions/${t}/models`,`Could not load models`),ie(`/api/sessions/${t}/thinking`,`Could not read the reasoning level`)]);Xs(e,ac({models:n,current:t===Y.currentId()?Ul:null,thinkingLevel:r.level,thinkingLevels:r.levels,onPick:(e,n)=>{K(),iu(t,e,n)},onThinkingPick:e=>void ou(t,e)}))}catch(e){V(`error`,`model options failed: ${String(e)}`)}}async function iu(e,t,n){await au(e,t)&&n&&await ou(e,n)}async function au(e,t){let n=Ul;e===Y.currentId()&&(Ul=t,Ql());let r=await m(`/api/sessions/${e}/model`,t);if(!r.ok){let{error:t}=await r.json().catch(()=>({}));return e===Y.currentId()&&(Ul=n,Ql()),V(`error`,`model change failed: ${t??r.status}`),!1}let{model:i}=await r.json();return e===Y.currentId()&&i&&(Ul=i,Ql()),!0}async function ou(e,t){let n=await m(`/api/sessions/${e}/thinking`,{level:t});if(!n.ok){V(`error`,`reasoning change failed: ${n.status}`);return}let{level:r}=await n.json();e===Y.currentId()&&(Gl=r,tu())}async function su(e){let t=await m(`/api/sessions/${e}/compact`,{});t.ok||V(`error`,`compact failed: ${await h(t,`no reason given`)}`)}function cu(e,t){let n=t.id===Y.currentId();Qs(e,[{label:`Session info`,onSelect:()=>nu(e,t)},{label:`Rename…`,onSelect:()=>{K(),pl(t)}},{label:t.listed?`Done — remove from Projects`:`Pin to Projects`,hint:n?jo(Rl):``,onSelect:()=>{K(),ml(t,!t.listed)}},{label:`Model`,hint:n?Ul?.id??`…`:``,onSelect:()=>void ru(e,t.id)},{label:`Compact context`,onSelect:()=>{K(),su(t.id)}},{label:`New session here`,hint:tr(t.cwd),onSelect:()=>{K(),Y.createSession(t.cwd)}},{label:`Browse files`,hint:n?jo(zl):``,onSelect:()=>{K(),Y.openFiles(n?void 0:t.cwd)}}])}var lu=`pier.theme`,uu=[`system`,`light`,`dark`],du=window.matchMedia(`(prefers-color-scheme: dark)`),fu={system:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="5.25"/><path d="M8 2.75a5.25 5.25 0 0 0 0 10.5z" fill="currentColor" stroke="none"/></svg>`,light:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" class="h-3.5 w-3.5"><circle cx="8" cy="8" r="3.1"/><path d="M8 1.5v1.4M8 13.1v1.4M1.5 8h1.4M13.1 8h1.4M3.4 3.4l1 1M11.6 11.6l1 1M12.6 3.4l-1 1M4.4 11.6l-1 1"/></svg>`,dark:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" class="h-3.5 w-3.5"><path d="M13 9.4A5.6 5.6 0 0 1 6.6 3a5.6 5.6 0 1 0 6.4 6.4z"/></svg>`},pu=()=>{let e=null;try{e=localStorage.getItem(lu)}catch{return`system`}return e===`light`||e===`dark`?e:`system`},mu=()=>{let e=pu();return e===`system`?du.matches?`dark`:`light`:e};function hu(){let e=mu();document.documentElement.dataset.theme=e,L(`meta[name="theme-color"]`).setAttribute(`content`,e===`dark`?`#1c1c1c`:`#fafafa`),window.dispatchEvent(new Event(`pier:theme`))}function gu(){let e=L(`#theme-toggle`),t=()=>{let t=pu();e.title=`Theme: ${t}${t===`system`?` (${mu()})`:``}`,e.innerHTML=fu[t],hu()};e.onclick=()=>{let e=uu[(uu.indexOf(pu())+1)%uu.length];try{e===`system`?localStorage.removeItem(lu):localStorage.setItem(lu,e)}catch{}t()},du.addEventListener(`change`,t),t()}var _u=`https://github.com/timqi/pier`,vu=[`text-neutral-400`,`hover:text-neutral-700`],yu=[`rounded-full`,`bg-emerald-50`,`px-1.5`,`text-emerald-700`,`ring-1`,`ring-inset`,`ring-emerald-600/20`,`hover:bg-emerald-100`],bu=18e5,X=null,xu=L(`#version`);function Su(e){let t=X?.available===!0&&X.latest!==null;xu.textContent=`v${e}`,xu.title=t?`Pier ${X?.latest} is out`:``,xu.classList.remove(...t?vu:yu),xu.classList.add(...t?yu:vu)}var Cu=e=>R(`p`,`px-3 py-1 text-[12px] leading-snug text-neutral-500`,e);function wu(){let e=R(`div`,`flex w-72 flex-col gap-1 py-1`);if(!X)return e.append(Cu(`Checking the registry…`)),e;let{current:t,latest:n,available:r,canApply:i,problem:a}=X;e.append(R(`p`,`px-3 py-1 text-[12.5px] font-medium text-neutral-700`,r?`Pier ${n} is out`:`Pier ${t}`)),e.append(Cu(r?`You are running ${t}.`:n===null?`The registry could not be reached, so this may not be the latest.`:`This is the latest release.`));let o=R(`span`,`px-3 text-[11.5px] text-neutral-400`,``),s=R(`div`,`flex items-center gap-2 px-3 py-1.5`);if(a&&e.append(R(`p`,`mx-3 my-1 rounded-md bg-red-50 px-2 py-1.5 text-[11.5px] leading-snug text-red-700`,a)),r&&i&&!a){let e=fr(`Update now`,!0);e.onclick=()=>{e.disabled=!0,o.className=`px-3 text-[11.5px] text-neutral-400`,o.textContent=`starting the updater…`,(async()=>{let t=await m(`/api/update`,{});if(!t.ok){e.disabled=!1,o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not update`);return}let{draining:n}=await t.json();o.textContent=n?`Waiting for running work to finish — Pier then installs and restarts.`:`Installing — Pier restarts once it is on disk, and this page reconnects on its own.`})()},s.append(e)}let c=R(`a`,`btn text-[12.5px] no-underline`,`Source`);c.href=r?`${_u}/releases`:_u,c.target=`_blank`,c.rel=`noreferrer`,c.title=`Pier is free software (AGPL-3.0)`,s.append(c),e.append(s,o),r&&!i&&!a&&e.append(Cu(`No service manager owns this Pier, so it cannot restart itself — update it with: pier update`));let l=wr(`Update automatically`,i?`Installs a new release once nothing is running — no turn in flight, no task run.`:`Needs the systemd service (pier service install); nothing here can restart Pier.`,X.autoUpdate,e=>{X&&(X.autoUpdate=e),(async()=>{let t=await m(`/api/settings`,{autoUpdate:e},`PUT`);if(t.ok)return;X&&(X.autoUpdate=!e);let n=l.querySelector(`input`);n&&(n.checked=!e),o.className=`px-3 text-[11.5px] text-red-600`,o.textContent=await h(t,`Could not save`)})()});if(!i){let e=l.querySelector(`input`);e&&(e.disabled=!0)}return e.append(R(`div`,`mt-1 border-t border-neutral-200 px-3 pb-1 pt-2`,l)),e}async function Tu(e){let t=await g(`/api/update`,`Update check failed`);t.ok&&(X=t.value,Su(X.current||e))}function Eu(e){Su(e),xu.onclick=e=>{e.preventDefault(),Xs(xu,wu())};let t=()=>void Tu(e).catch(()=>{});t(),setInterval(t,bu)}var Z,Du=L(`#chat-header`),Ou=L(`#chat-title`),ku=[Du,B,L(`#composer`)],Au=()=>Lu===null,ju,Mu,Nu,Pu=new Map,Fu=new Map,Iu=new Map,Lu=null,Ru=0,zu=[`files`],Bu=new Map,Vu={tasks:`Tasks`,runs:`Runs`,activity:`Activity`,boards:`Boards`,settings:`Settings`,files:`Files`},Hu=[`tasks`,`runs`,`activity`],Uu=`Automation`,Wu=L(`#automation-view`),Gu=L(`#automation-tabs`),Ku=e=>Hu.includes(e)?`tasks`:e;function qu(e){let t=e!==null&&Hu.includes(e);Wu.classList.toggle(`hidden`,!t),Wu.classList.toggle(`flex`,t),t&&Gu.replaceChildren(...Hu.map(t=>gr(Vu[t],t===e,()=>Qu(t))))}var Ju=e=>ju?.refresh(e),Yu=()=>Mu?.refresh(),Xu=()=>Nu?.refresh();function Zu(){Lu?Sc(Hu.includes(Lu)?Uu:Vu[Lu],!1):Sc(Ou.textContent??``,Z.currentSession()!==void 0)}function Qu(e,t,n){if(zu.includes(e)){let t=ud();t&&(t.kind!==`console`||t.name!==e)&&Bu.set(e,t)}fd({kind:`console`,name:e,arg:t,query:n}),xc(),Lu=e;for(let e of ku)e.classList.add(`hidden`);ss();for(let[t,n]of Pu)t!==e&&n.hide();for(let[t,n]of Iu)n.classList.toggle(`bg-indigo-50`,t===Ku(e));qu(e),Zu(),$u(e,t,n,++Ru)}async function $u(e,t,n,r){let i=Pu.get(e);if(!i){let t=Fu.get(e);if(!t){let n=L(`#${e}-view`);t=hd[e](n).catch(t=>(console.warn(`${e} view failed to load`,t),ar(n,()=>n.replaceChildren(R(`p`,`p-4 text-[13px] text-red-600`,`Could not load ${Vu[e]} — reload the page.`))))),Fu.set(e,t)}i=await t,Pu.set(e,i),Fu.delete(e)}Lu===e&&r===Ru&&i.show(t,n)}var ed=e=>Qu(`tasks`,e),td=(e={},t)=>Qu(`runs`,t,new URLSearchParams(e).toString()),nd=e=>td({},e),rd=e=>Qu(`files`,e),id=(e,t)=>{Lu===e?od(e):Qu(e,t)},ad=e=>id(`files`,e);function od(e){let t=Z.currentId(),n=Bu.get(e)??(t?{kind:`session`,id:t}:null);Bu.delete(e),n?fd(n):(history.replaceState(null,``,`#/`),sd())}function sd(){if(Lu){Lu=null;for(let e of Pu.values())e.hide();for(let e of Iu.values())e.classList.remove(`bg-indigo-50`);qu(null);for(let e of ku)e.classList.remove(`hidden`);ss(),Zu(),Z.maybeAckRead()}}var cd=e=>e.kind===`session`?`#/session/${encodeURIComponent(e.id)}`:`#/${e.name}${e.arg?`/${encodeURIComponent(e.arg)}`:``}${e.query?`?${e.query}`:``}`,ld={config:`files`,channels:`channels`,providers:`models`};function ud(){let e=location.hash.replace(/^#\/?/,``),t=e.indexOf(`?`),[n=``,r]=(t<0?e:e.slice(0,t)).split(`/`),i=t<0?void 0:e.slice(t+1)||void 0,a;try{a=r?decodeURIComponent(r):void 0}catch{return null}return ld[n]?{kind:`console`,name:`settings`,arg:ld[n]}:Object.hasOwn(Vu,n)?{kind:`console`,name:n,arg:a,query:i}:n===`session`&&a?{kind:`session`,id:a}:null}var dd=!1;function fd(e,t=!1){if(dd)return;let n=cd(e);location.hash!==n&&(t?history.replaceState(null,``,n):location.hash=n)}var pd=e=>fd({kind:`session`,id:e});function md(){let e=ud(),t=Z.sessions(),n=Z.currentId(),r=(e?.kind===`session`?e.id:null)??n??(t.find(e=>e.listed)??t[0])?.id??null;dd=!0;try{r&&r!==n&&Z.select(r),e?.kind===`console`?Qu(e.name,e.arg,e.query):sd(),r||Ql()}finally{dd=!1}e?.kind!==`console`&&r&&fd({kind:`session`,id:r},!0)}var hd={tasks:async e=>ju=(await fi(async()=>{let{createTasksView:e}=await import(`./tasks-7S90iYr1.js`);return{createTasksView:e}},__vite__mapDeps([0,1]))).createTasksView(e,()=>Z.sessions().map(({id:e,cwd:t,title:n})=>({id:e,cwd:t,title:n})),Z.loadSessions,Z.select,()=>Z.currentId(),td,ed),runs:async e=>Mu=(await fi(async()=>{let{createRunsView:e}=await import(`./runs-bHSlJwXk.js`);return{createRunsView:e}},__vite__mapDeps([2,1]))).createRunsView(e,Z.select,td,ed),activity:async e=>Nu=(await fi(async()=>{let{createActivityView:e}=await import(`./activity-atEIVnGA.js`);return{createActivityView:e}},[])).createActivityView(e,Z.select,nd),boards:async e=>(await fi(async()=>{let{createBoardsView:e}=await import(`./boards-DSkfMEvN.js`);return{createBoardsView:e}},[])).createBoardsView(e,Z.select),files:async e=>(await fi(async()=>{let{createExplorerView:e}=await import(`./explorer-CS1kLPMl.js`);return{createExplorerView:e}},__vite__mapDeps([3,4]))).createExplorerView(e,()=>Z.currentSession(),e=>Qu(`files`,e),()=>od(`files`)),settings:async e=>(await fi(async()=>{let{createSettingsView:e}=await import(`./settings-CrC-yuXh.js`);return{createSettingsView:e}},__vite__mapDeps([5,4]))).createSettingsView(e,()=>[...qc(Z.sessions()).keys()],e=>Qu(`settings`,e))};function gd(e){Z=e;for(let e of[`tasks`,`boards`,`settings`]){let t=L(`#open-${e}`);Iu.set(e,t),t.onclick=()=>Qu(e)}let t=L(`#console-section`);t.open=localStorage.getItem(`pier.consoleCollapsed`)!==`1`,t.ontoggle=()=>localStorage.setItem(`pier.consoleCollapsed`,t.open?`0`:`1`),window.onhashchange=md}var Q=[],_d=0,vd=0,yd=!1,$=null,bd=`idle`,xd=null,Sd=0,Cd=!1,wd=!1;async function Td(e){let t=++_d;++vd,yd=!1,sd(),xc(),$=null,xd?.close(),xd=null,fo(),cs([]),ql(),Zl(e),po(!0),wd=!0,os();let n=await m(`/api/sessions`,{cwd:e});if(t!==_d)return;if(wd=!1,!n.ok){po(!1),Zl(null),os(),V(`error`,`session create failed: ${n.status}`);return}let{id:r}=await n.json();if(t!==_d)return;let{repo:i,branch:a}=Q.find(t=>t.cwd===e)??{};Q.unshift({id:r,cwd:e,createdAt:Date.now(),state:`idle`,listed:!0,unread:!1,channel:`web`,activeRuns:0,repo:i,branch:a}),await Id(r),$===r&&ns()}function Ed(e,t){let n=e.map(e=>({...e,title:ne(e.title)}));if(t)Q=n;else{let e=new Map(n.map(e=>[e.id,e]));Q=Q.map(t=>e.get(t.id)??(t.listed?{...t,listed:!1}:t));let t=new Set(Q.map(e=>e.id));Q.push(...n.filter(e=>!t.has(e.id)))}Q.sort((e,t)=>t.createdAt-e.createdAt),Cl(),kd()}var Dd=re(async()=>{Ed(await ie(`/api/projects`,`Could not load projects`),!1)}),Od=re(async()=>{Ed(await ie(`/api/sessions`,`Could not load sessions`),!0)});function kd(){if(document.hidden||!document.hasFocus()||!Au())return;let e=Q.find(e=>e.id===$);e?.unread&&(e.unread=!1,Cl(),fetch(`/api/sessions/${e.id}/read`,{method:`POST`}))}function Ad(){return Q.find(e=>e.id===$)}function jd(e,t){let n=Q.find(t=>t.id===e);!n||n.title||!t.trim()||(n.title=t.trim().slice(0,80),Cl(),Ql())}function Md(e){bd=e;let t=Q.find(e=>e.id===$);t&&(t.state=e),Cl(),Ql(),os(),e===`idle`&&Dd()}function Nd(e){if(!(e.sessionId!==$||e.seq<=Sd))switch(Sd=e.seq,e.type){case`turn-start`:Cd=!0;break;case`system-input`:co(),Fa(e.text,e.origin);break;case`task-status`:Bi(e.run);break;case`user-message`:{let t=te(e.text).text;if(jd(e.sessionId,t),rs(t))break;co(),V(`user`,e.text,!1,e.ts),Ta();break}case`text-delta`:so(e.text);break;case`thinking-delta`:fa(e.ts,e.text);break;case`tool-start`:co(),ua(e.ts,e.toolCallId,e.toolName,e.args);break;case`tool-end`:da(e.toolCallId,e.isError,e.output);break;case`turn-end`:Cd=!1,lo(e.text,e.meta),e.meta&&Yl(e.meta);break;case`queue-state`:ls(e.steering,e.followUp);break;case`queue-recovery`:cs(e.batches,e.uncertain);break;case`context-compacted`:co(),V(`system`,`Context compacted — ${i(e.before)} → ${i(e.after)}`,!1,e.ts),Ta();break;case`error`:ca(),V(`error`,e.message);break;case`state`:e.state===`idle`&&Cd&&(Cd=!1,uo()),e.state===`idle`&&ls([],[]),Md(e.state)}}function Pd(){let e=new EventSource(`/api/events`);e.onopen=()=>void Dd(),e.onerror=()=>Eo(e,`Workspace`),e.onmessage=e=>{let t=JSON.parse(e.data);if(t.type===`sessions-changed`){Dd();return}if(t.type===`tasks-changed`||t.type===`task-run-changed`||t.type===`task-message-changed`||t.type===`task-group-changed`){Ju(t.type===`task-run-changed`?t.taskId:void 0),Yu(),Xu(),t.type===`task-run-changed`&&Dd();return}if(Xu(),t.sessionId===$)return;let n=Q.find(e=>e.id===t.sessionId);n&&(n.state=t.state,Cl())}}function Fd(e,t,n){xd?.close();let r=new EventSource(`/api/sessions/${e}/events?after=${t}`),i=()=>xd===r&&$===e&&n===vd;r.onmessage=e=>{i()&&Nd(JSON.parse(e.data))},r.addEventListener(`reset`,()=>{i()&&Ld(e)}),r.onerror=()=>{i()&&Eo(r,`Session`)},xd=r}async function Id(e){sd(),xc(),pd(e);let t=Q.some(t=>t.id===e);if(e===$&&t&&(xd||yd))return;let n=++_d;if(++vd,wd=!1,gs(),$=e,bd=Q.find(t=>t.id===e)?.state??`idle`,_s(e),Cl(),Ql(),kd(),t)return await Ld(e);xd?.close(),xd=null,fo(),po(!0),await Od(),n===_d&&$===e&&await Ld(e,!Q.some(t=>t.id===e))}async function Ld(e,t=!1){if($!==e)return;let n=++vd;if(xd?.close(),xd=null,yd=!0,fo(),ls([],[]),cs([]),ql(),Cd=!1,as(),Sd=0,po(!0),t){yd=!1,po(!1),V(`error`,`session not found: ${e}`);return}let r=await g(`/api/sessions/${e}/history`,`failed to load session`);if($!==e||n!==vd)return;if(yd=!1,!r.ok){po(!1),V(`error`,r.error);return}let i=r.value;mo(i.turns,i.state,i.backgroundRuns),Sd=i.lastSeq,Cd=i.state===`streaming`,Md(i.state),ls(i.queue.steering,i.queue.followUp),cs(i.queueRecovery,i.queueUncertain);let a=i.turns.reduce((e,t)=>t.meta?.completedAt??e,null);Jl(i.model,i.context,i.thinkingLevel,a),Fd(e,`${i.epoch}:${i.lastSeq}`,n)}So(),To(),gu();var Rd=async e=>{$===e&&await Ld(e)};va({sessionId:()=>$,sessionState:()=>bd,select:e=>void Id(e),showRun:nd,send:(e,t)=>void bs(e,t),ownTurn:e=>{is(e),Md(`streaming`)},reload:Rd}),Cs({sessionId:()=>$,starting:()=>wd,sessionState:()=>bd,chatVisible:Au,setState:Md,reload:Rd}),Fc({sessionMenu:e=>{let t=Ad();t&&cu(e,t)},sessionInfo:e=>{let t=Ad();t&&nu(e,t)}}),Fl({sessions:()=>Q,loadSessions:Od,currentId:()=>$,select:e=>void Id(e),sessionMenu:cu,createSession:Td,openFiles:rd,openConsole:Qu,onPinsChanged:Ql}),Il({currentId:()=>$,currentSession:Ad,createSession:e=>void Td(e),syncBar:Zu,openFiles:rd,toggleFiles:ad}),gd({sessions:()=>Q,loadSessions:Od,currentId:()=>$,currentSession:Ad,select:e=>void Id(e),maybeAckRead:kd}),Eu(`0.0.23`),Rs(),document.addEventListener(`visibilitychange`,kd),window.addEventListener(`focus`,kd),Pd(),Dd().then(md);export{er as A,h as B,Sr as C,wr as D,Cr as E,ir as F,ne as G,ie as H,R as I,r as K,$n as L,ar as M,lr as N,mr as O,ur as P,nr as R,hr as S,br as T,ae as U,g as V,m as W,Or as _,Xs as a,xr as b,Ti as c,yr as d,Tr as f,_r as g,fr as h,K as i,tr as j,Ar as k,vi as l,pr as m,fc as n,Us as o,Dr as p,oc as r,Lo as s,gc as t,yi as u,vr as v,Er as w,gr as x,kr as y,re as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,M as n,O as r,U as i,V as a,_ as o,d as s,h as c,z as l}from"./index-a7A8xfoi.js";import{c as u,i as d,n as f,o as p,s as m}from"./task-runs-C2PHAhAf.js";function h(h,g,_,v){let y=new URLSearchParams,b=[],x=``,S=t(`div`,`min-h-0 flex-1 overflow-auto`),C=t(`div`,``),w={selectedId:null,rawOpen:!1,scrollTop:0,drawn:``},T=(e,t)=>_(Object.fromEntries(e),t),E=e=>{h.querySelector(`[role=alert]`)?.remove();let n=t(`p`,`p-4 text-[13px] text-red-600`,e);n.setAttribute(`role`,`alert`),h.append(n)},D={openSession:g,openTask:v,openRun:e=>T(y,e),mutate:async e=>{let t=await i(e,`POST`,`Run update failed`);t?E(t):await O()}},O=l(async()=>{let e=w.selectedId;if(e)return d(S,e,()=>T(y),D,w);let t=y.toString(),n=await a(`/api/task-runs?${t}`,`Could not load runs`);if(t!==y.toString()||w.selectedId)return;if(!n.ok)return E(n.error);h.querySelector(`[role=alert]`)?.remove();let r=JSON.stringify(n.value);x!==t+r&&(x=t+r,M(n.value))});function k(e,t){let n=new URLSearchParams(y);t?n.set(e,t):n.delete(e),n.delete(`cursor`),T(n)}function A(){if(x=``,S=t(`div`,`min-h-0 flex-1 overflow-auto`),w.selectedId){h.replaceChildren(S);return}C=j(),h.replaceChildren(C,S)}function j(){let n=r();n.classList.add(`text-[12px]`,`text-neutral-500`);let i=(t,r,i)=>{let a=e(i,y.get(r)??``);a.classList.add(`!w-auto`,`max-w-full`,`pr-8`),a.setAttribute(`aria-label`,t),a.onchange=()=>k(r,a.value),n.append(a)};i(`State`,`state`,[[`All states`,``],...[`queued`,`running`,`succeeded`,`failed`,`cancelled`,`interrupted`,`skipped`].map(e=>[e,e])]),i(`Source`,`source`,[[`All sources`,``],...[`manual`,`agent`,`cron`,`watch`,`task`].map(e=>[e,e])]);let a=b.map(e=>[e.name+(e.archived?` (archived)`:``),e.id]),o=y.get(`taskId`);o&&!b.some(e=>e.id===o)&&a.push([o,o]),i(`Task`,`taskId`,[[`All tasks`,``],...a]);for(let[e,r]of[[`From`,`since`],[`Through`,`until`]]){let i=t(`input`,`${s} !w-auto min-w-0`);i.type=`datetime-local`,i.setAttribute(`aria-label`,e);let a=y.get(r);if(a){let e=new Date(Number(a));Number.isFinite(e.getTime())&&(i.value=new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().slice(0,16))}i.onchange=()=>k(r,i.value?String(new Date(i.value).getTime()):``),n.append(t(`label`,`flex min-w-0 items-center gap-2`,e,i))}let l=[...y.keys()].filter(e=>e!==`cursor`&&e!==`showUnmatched`).length,u=c(l?`Reset filters (${l})`:`Reset filters`);return u.classList.add(`ml-auto`),u.disabled=!l,u.onclick=()=>_({}),n.append(u),n}function M(e){let n=t(`input`,``);n.type=`checkbox`,n.checked=y.get(`showUnmatched`)===`true`,n.onchange=()=>k(`showUnmatched`,n.checked?`true`:``);let r=t(`label`,`flex items-center gap-2 border-b border-neutral-100 bg-neutral-50/60 px-4 py-1.5 text-[11.5px] text-neutral-500`,n,`Show unmatched probes`),i=t(`div`,`divide-y divide-neutral-100`);for(let n of e.runs){let e=t(`div`,`px-4 py-3 text-[12px] transition-colors hover:bg-neutral-50`),r=t(`button`,`grid w-full cursor-pointer grid-cols-[minmax(0,1fr)_auto] items-center gap-x-4 gap-y-1 text-left md:grid-cols-[minmax(0,1fr)_12rem_5rem]`);r.setAttribute(`type`,`button`),r.onclick=()=>T(y,n.id),r.append(t(`span`,`flex min-w-0 items-center gap-2`,m(n),t(`span`,`min-w-0 truncate font-medium text-neutral-800`,n.context.definition.name)),t(`span`,`text-right font-mono text-[11.5px] text-neutral-400 md:order-2`,u(n)),t(`span`,`col-span-2 text-neutral-500 md:order-1 md:col-span-1`,f(n.queuedAt)),t(`span`,`col-span-2 break-all font-mono text-[11px] text-neutral-400 md:order-3 md:col-span-3`,`${n.id} · ${n.triggerSource}`)),e.append(r);let a=p(n);a&&e.append(t(`p`,`mt-1.5 inline-block break-words rounded-md bg-amber-50 px-2 py-0.5 text-[11.5px] text-amber-700 ring-1 ring-amber-200`,a));let o=t(`div`,`mt-1.5 flex flex-wrap gap-1.5 text-[11px] text-neutral-500`),s=`max-w-full break-all rounded-md bg-neutral-100 px-1.5 py-0.5 text-left`,c=(e,n)=>{let r=t(`button`,`${s} cursor-pointer transition-colors hover:bg-neutral-200 hover:text-neutral-800`,e);r.setAttribute(`type`,`button`),r.onclick=n,o.append(r)};if(n.parentRunId&&c(`Parent ${n.parentRunId}`,()=>T(y,n.parentRunId)),n.resumedFromRunId&&c(`Resumed from ${n.resumedFromRunId}`,()=>T(y,n.resumedFromRunId)),n.result?.type===`task`){let e=n.result.runId;c(`Child result ${e}`,()=>T(y,e))}n.groupId&&o.append(t(`span`,s,`Group ${n.groupId}`)),o.childElementCount&&e.append(o),i.append(e)}e.runs.length||i.append(t(`div`,`p-4`,o(`No matching runs.`)));let a=t(`div`,`flex items-center gap-3 border-t border-neutral-200 p-4`);if(y.has(`cursor`)){let e=c(`Newest`);e.onclick=()=>k(`cursor`,``),a.append(e)}if(e.nextCursor){let t=c(`Older runs`);t.onclick=()=>{let t=new URLSearchParams(y);t.set(`cursor`,JSON.stringify(e.nextCursor)),T(t)},a.append(t)}let s=S.scrollTop;S.replaceChildren(r,i,a),S.scrollTop=s}async function N(){let e=await a(`/api/tasks?kind=task`,`Could not load task filters`);if(!e.ok)return E(e.error);if(JSON.stringify(b)!==JSON.stringify(e.value)&&(b=e.value,!w.selectedId&&C.isConnected)){let e=j();C.replaceWith(e),C=e}}let P=n(h,(e,t)=>{y=new URLSearchParams(t),w.selectedId!==(e||null)&&(w.rawOpen=!1,w.scrollTop=0),w.selectedId=e||null,A(),O(),e||N()});return Object.assign(P,{refresh(){P.visible&&O()}})}export{h as createRunsView};
|
|
Binary file
|
|
Binary file
|