cli-jaw 2.0.10 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cli-jaw",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.13",
|
|
4
4
|
"description": "Personal AI assistant powered by Antigravity, AI-E, Claude, Claude E, Codex, Codex App, Gemini, Grok, OpenCode, and Copilot — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{Bt as r,Dt as i,Ft as a,Gt as o,It as s,Lt as c,Pt as l,Rt as u,V as d,Vt as f}from"./vendor-utils-rVejrfMR.js";var p=e(t(),1),m=n();function h(e,t){return t.filter(t=>t.source===e||t.target===e).length}function g(e,t){return e.id===t?`var(--accent-primary, #8ab4ff)`:e.kind===`missing`?`var(--status-error, #f87171)`:e.kind===`ambiguous`?`var(--status-warning, #fbbf24)`:`var(--text-tertiary, #888)`}function _(e){let t=(0,p.useRef)(null),n=(0,p.useRef)(e.onNavigate);n.current=e.onNavigate;let{graph:_,selectedPath:v}=e;return(0,p.useEffect)(()=>{if(!t.current||_.nodes.length===0)return;let e=f(t.current);e.selectAll(`*`).remove();let p=t.current.clientWidth||800,m=t.current.clientHeight||600,y=_.nodes.map(e=>({...e})),b=new Map(y.map(e=>[e.id,e])),x=_.edges.filter(e=>b.has(e.source)&&b.has(e.target)).map(e=>({source:b.get(e.source),target:b.get(e.target),raw:e.raw})),S=o(y,e=>h(e.id,_.edges))??1,C=i().domain([0,S]).range([4,16]),w=e.append(`g`),T=d().scaleExtent([.2,5]).on(`zoom`,e=>{w.attr(`transform`,e.transform)});e.call(T);let E=a(y).force(`link`,s(x).id(e=>e.id).distance(80)).force(`charge`,l().strength(-120)).force(`center`,u(p/2,m/2)).force(`collision`,c().radius(e=>C(h(e.id,_.edges))+4)),D=w.append(`g`).selectAll(`line`).data(x).join(`line`).attr(`stroke`,`var(--border-secondary, #444)`).attr(`stroke-width`,1).attr(`stroke-opacity`,.5),O=w.append(`g`).selectAll(`g`).data(y).join(`g`).attr(`class`,`graph-node`).attr(`cursor`,`pointer`).on(`click`,(e,t)=>{t.kind===`note`&&n.current(t.id)});O.append(`circle`).attr(`r`,e=>C(h(e.id,_.edges))).attr(`fill`,e=>g(e,v)).attr(`stroke`,e=>e.id===v?`var(--accent-hover, #aac8ff)`:`none`).attr(`stroke-width`,2),O.append(`text`).text(e=>e.title).attr(`dx`,e=>C(h(e.id,_.edges))+4).attr(`dy`,`0.35em`).attr(`fill`,`var(--text-secondary, #aaa)`).attr(`font-size`,`11px`).attr(`pointer-events`,`none`);let k=r().on(`start`,(e,t)=>{e.active||E.alphaTarget(.3).restart(),t.fx=t.x,t.fy=t.y}).on(`drag`,(e,t)=>{t.fx=e.x,t.fy=e.y}).on(`end`,(e,t)=>{e.active||E.alphaTarget(0),t.fx=null,t.fy=null});return O.call(k),E.on(`tick`,()=>{D.attr(`x1`,e=>e.source.x).attr(`y1`,e=>e.source.y).attr(`x2`,e=>e.target.x).attr(`y2`,e=>e.target.y),O.attr(`transform`,e=>`translate(${e.x},${e.y})`)}),()=>{E.stop()}},[_,v]),_.nodes.length===0?(0,m.jsx)(`div`,{className:`notes-graph-view notes-graph-empty`,children:`No notes to display`}):(0,m.jsxs)(`div`,{className:`notes-graph-view`,children:[(0,m.jsx)(`svg`,{ref:t,className:`notes-graph-svg`,width:`100%`,height:`100%`}),(0,m.jsxs)(`div`,{className:`notes-graph-info`,children:[_.nodes.filter(e=>e.kind===`note`).length,` notes · `,_.edges.length,` links`]})]})}export{_ as NotesGraphView};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-BZmCptaP.js";import{Bt as r,Dt as i,Ft as a,Gt as o,It as s,Lt as c,Pt as l,Rt as u,V as d,Vt as f}from"./vendor-utils-rVejrfMR.js";var p=e(t(),1),m=n();function h(e,t){return t.filter(t=>t.source===e||t.target===e).length}function g(e,t){return e.id===t?`var(--accent-primary, #8ab4ff)`:e.kind===`missing`?`var(--status-error, #f87171)`:e.kind===`ambiguous`?`var(--status-warning, #fbbf24)`:`var(--text-tertiary, #888)`}function _(e){let t=(0,p.useRef)(null),n=(0,p.useRef)(e.onNavigate);n.current=e.onNavigate;let{graph:_,selectedPath:v}=e;return(0,p.useEffect)(()=>{if(!t.current||_.nodes.length===0)return;let e=f(t.current);e.selectAll(`*`).remove();let p=t.current.clientWidth||800,m=t.current.clientHeight||600,y=_.nodes.map(e=>({...e})),b=new Map(y.map(e=>[e.id,e])),x=_.edges.filter(e=>b.has(e.source)&&b.has(e.target)).map(e=>({source:b.get(e.source),target:b.get(e.target),raw:e.raw})),S=o(y,e=>h(e.id,_.edges))??1,C=i().domain([0,S]).range([4,16]),w=e.append(`g`),T=d().scaleExtent([.2,5]).on(`zoom`,e=>{w.attr(`transform`,e.transform)});e.call(T);let E=a(y).force(`link`,s(x).id(e=>e.id).distance(80)).force(`charge`,l().strength(-120)).force(`center`,u(p/2,m/2)).force(`collision`,c().radius(e=>C(h(e.id,_.edges))+4)),D=w.append(`g`).selectAll(`line`).data(x).join(`line`).attr(`stroke`,`var(--border-secondary, #444)`).attr(`stroke-width`,1).attr(`stroke-opacity`,.5),O=w.append(`g`).selectAll(`g`).data(y).join(`g`).attr(`class`,`graph-node`).attr(`cursor`,`pointer`).on(`click`,(e,t)=>{t.kind===`note`&&n.current(t.id)});O.append(`circle`).attr(`r`,e=>C(h(e.id,_.edges))).attr(`fill`,e=>g(e,v)).attr(`stroke`,e=>e.id===v?`var(--accent-hover, #aac8ff)`:`none`).attr(`stroke-width`,2),O.append(`text`).text(e=>e.title).attr(`dx`,e=>C(h(e.id,_.edges))+4).attr(`dy`,`0.35em`).attr(`fill`,`var(--text-secondary, #aaa)`).attr(`font-size`,`11px`).attr(`pointer-events`,`none`);let k=r().on(`start`,(e,t)=>{e.active||E.alphaTarget(.3).restart(),t.fx=t.x,t.fy=t.y}).on(`drag`,(e,t)=>{t.fx=e.x,t.fy=e.y}).on(`end`,(e,t)=>{e.active||E.alphaTarget(0),t.fx=null,t.fy=null});return O.call(k),E.on(`tick`,()=>{D.attr(`x1`,e=>e.source.x??0).attr(`y1`,e=>e.source.y??0).attr(`x2`,e=>e.target.x??0).attr(`y2`,e=>e.target.y??0),O.attr(`transform`,e=>`translate(${e.x??0},${e.y??0})`)}),()=>{E.stop()}},[_,v]),_.nodes.length===0?(0,m.jsx)(`div`,{className:`notes-graph-view notes-graph-empty`,children:`No notes to display`}):(0,m.jsxs)(`div`,{className:`notes-graph-view`,children:[(0,m.jsx)(`svg`,{ref:t,className:`notes-graph-svg`,width:`100%`,height:`100%`}),(0,m.jsxs)(`div`,{className:`notes-graph-info`,children:[_.nodes.filter(e=>e.kind===`note`).length,` notes · `,_.edges.length,` links`]})]})}export{_ as NotesGraphView};
|
|
@@ -22,4 +22,4 @@ Error generating stack: `+e.message+`
|
|
|
22
22
|
`}),n}function Sf(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function Cf(e,t){let n=_f(e,t),r=n.one(e,void 0),i=mf(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
|
|
23
23
|
`},i)),a}function wf(e,t){return e&&`run`in e?async function(n,r){let i=Cf(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Cf(n,{file:r,...e||t})}}var Tf=[],Ef={allowDangerousHtml:!0},Df=/^(https?|ircs?|mailto|xmpp)$/i,Of=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function kf(e){let t=Af(e),n=jf(e);return Mf(t.runSync(t.parse(n),n),e)}function Af(e){let t=e.rehypePlugins||Tf,n=e.remarkPlugins||Tf,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Ef}:Ef;return re().use(ie).use(n).use(wf,r).use(t)}function jf(e){let t=e.children||``,n=new Ce;return typeof t==`string`?n.value=t:``+t,n}function Mf(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Nf;for(let e of Of)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return h(e,l),ed(e,{Fragment:F.Fragment,components:i,ignoreInvalidStyle:!0,jsx:F.jsx,jsxs:F.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in xd)if(Object.hasOwn(xd,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=xd[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Nf(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||Df.test(e.slice(0,t))?e:``}var Pf=/[#.]/g;function Ff(e,t){let n=e||``,r={},i=0,a,o;for(;i<n.length;){Pf.lastIndex=i;let e=Pf.exec(n),t=n.slice(i,e?e.index:n.length);t&&(a?a===`#`?r.id=t:Array.isArray(r.className)?r.className.push(t):r.className=[t]:o=t,i+=t.length),e&&(a=e[0],i++)}return{type:`element`,tagName:o||t||`div`,properties:r,children:[]}}function If(e,t,n){let r=n?Hf(n):void 0;function i(n,i,...a){let o;if(n==null){o={type:`root`,children:[]};let e=i;a.unshift(e)}else{o=Ff(n,t);let s=o.tagName.toLowerCase(),c=r?r.get(s):void 0;if(o.tagName=c||s,Lf(i))a.unshift(i);else for(let[t,n]of Object.entries(i))Rf(e,o.properties,t,n)}for(let e of a)zf(o.children,e);return o.type===`element`&&o.tagName===`template`&&(o.content={type:`root`,children:o.children},o.children=[]),o}return i}function Lf(e){if(typeof e!=`object`||!e||Array.isArray(e))return!0;if(typeof e.type!=`string`)return!1;let t=e,n=Object.keys(e);for(let e of n){let n=t[e];if(n&&typeof n==`object`){if(!Array.isArray(n))return!0;let e=n;for(let t of e)if(typeof t!=`number`&&typeof t!=`string`)return!0}}return!!(`children`in e&&Array.isArray(e.children))}function Rf(e,t,n,r){let i=Nu(e,n),a;if(r!=null){if(typeof r==`number`){if(Number.isNaN(r))return;a=r}else a=typeof r==`boolean`?r:typeof r==`string`?i.spaceSeparated?Ru(r):i.commaSeparated?Zl(r):i.commaOrSpaceSeparated?Ru(Zl(r).join(` `)):Bf(i,i.property,r):Array.isArray(r)?[...r]:i.property===`style`?Vf(r):String(r);if(Array.isArray(a)){let e=[];for(let t of a)e.push(Bf(i,i.property,t));a=e}i.property===`className`&&Array.isArray(t.className)&&(a=t.className.concat(a)),t[i.property]=a}}function zf(e,t){if(t!=null)if(typeof t==`number`||typeof t==`string`)e.push({type:`text`,value:String(t)});else if(Array.isArray(t))for(let n of t)zf(e,n);else if(typeof t==`object`&&`type`in t)t.type===`root`?zf(e,t.children):e.push(t);else throw Error("Expected node, nodes, or string, got `"+t+"`")}function Bf(e,t,n){if(typeof n==`string`){if(e.number&&n&&!Number.isNaN(Number(n)))return Number(n);if((e.boolean||e.overloadedBoolean)&&(n===``||cu(n)===cu(t)))return!0}return n}function Vf(e){let t=[];for(let[n,r]of Object.entries(e))t.push([n,r].join(`: `));return t.join(`; `)}function Hf(e){let t=new Map;for(let n of e)t.set(n.toLowerCase(),n);return t}var Uf=`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.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.foreignObject.glyphRef.linearGradient.radialGradient.solidColor.textArea.textPath`.split(`.`),Wf=If(Iu,`div`),Gf=If(Lu,`g`,Uf),Kf={html:`http://www.w3.org/1999/xhtml`,mathml:`http://www.w3.org/1998/Math/MathML`,svg:`http://www.w3.org/2000/svg`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function qf(e,t){return Jf(e,t||{})||{type:`root`,children:[]}}function Jf(e,t){let n=Yf(e,t);return n&&t.afterTransform&&t.afterTransform(e,n),n}function Yf(e,t){switch(e.nodeType){case 1:return ep(e,t);case 3:return Qf(e);case 8:return $f(e);case 9:return Xf(e,t);case 10:return Zf();case 11:return Xf(e,t);default:return}}function Xf(e,t){return{type:`root`,children:tp(e,t)}}function Zf(){return{type:`doctype`}}function Qf(e){return{type:`text`,value:e.nodeValue||``}}function $f(e){return{type:`comment`,value:e.nodeValue||``}}function ep(e,t){let n=e.namespaceURI,r=n===Kf.svg?Gf:Wf,i=n===Kf.html?e.tagName.toLowerCase():e.tagName,a=n===Kf.html&&i===`template`?e.content:e,o=e.getAttributeNames(),s={},c=-1;for(;++c<o.length;)s[o[c]]=e.getAttribute(o[c])||``;return r(i,s,tp(a,t))}function tp(e,t){let n=e.childNodes,r=[],i=-1;for(;++i<n.length;){let e=Jf(n[i],t);e!==void 0&&r.push(e)}return r}var np=new DOMParser;function rp(e,t){return qf(t?.fragment?ip(e):np.parseFromString(e,`text/html`))}function ip(e){let t=document.createElement(`template`);return t.innerHTML=e,t.content}var ap=(function(e,t,n){let r=ne(n);if(!e||!e.type||!e.children)throw Error(`Expected parent node`);if(typeof t==`number`){if(t<0||t===1/0)throw Error(`Expected positive finite number as index`)}else if(t=e.children.indexOf(t),t<0)throw Error(`Expected child node or index`);for(;++t<e.children.length;)if(r(e.children[t],t,e))return e.children[t]}),op=(function(e){if(e==null)return up;if(typeof e==`string`)return cp(e);if(typeof e==`object`)return sp(e);if(typeof e==`function`)return lp(e);throw Error("Expected function, string, or array as `test`")});function sp(e){let t=[],n=-1;for(;++n<e.length;)t[n]=op(e[n]);return lp(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function cp(e){return lp(t);function t(t){return t.tagName===e}}function lp(e){return t;function t(t,n,r){return!!(dp(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function up(e){return!!(e&&typeof e==`object`&&`type`in e&&e.type===`element`&&`tagName`in e&&typeof e.tagName==`string`)}function dp(e){return typeof e==`object`&&!!e&&`type`in e&&`tagName`in e}var fp=/\n/g,pp=/[\t ]+/g,mp=op(`br`),hp=op(Op),gp=op(`p`),_p=op(`tr`),vp=op([`datalist`,`head`,`noembed`,`noframes`,`noscript`,`rp`,`script`,`style`,`template`,`title`,Dp,kp]),yp=op(`address.article.aside.blockquote.body.caption.center.dd.dialog.dir.dl.dt.div.figure.figcaption.footer.form,.h1.h2.h3.h4.h5.h6.header.hgroup.hr.html.legend.li.listing.main.menu.nav.ol.p.plaintext.pre.section.ul.xmp`.split(`.`));function bp(e,t){let n=t||{},r=`children`in e?e.children:[],i=yp(e),a=Ep(e,{whitespace:n.whitespace||`normal`,breakBefore:!1,breakAfter:!1}),o=[];(e.type===`text`||e.type===`comment`)&&o.push(...Cp(e,{whitespace:a,breakBefore:!0,breakAfter:!0}));let s=-1;for(;++s<r.length;)o.push(...xp(r[s],e,{whitespace:a,breakBefore:s?void 0:i,breakAfter:s<r.length-1?mp(r[s+1]):i}));let c=[],l;for(s=-1;++s<o.length;){let e=o[s];typeof e==`number`?l!==void 0&&e>l&&(l=e):e&&(l!==void 0&&l>-1&&c.push(`
|
|
24
24
|
`.repeat(l)||` `),l=-1,c.push(e))}return c.join(``)}function xp(e,t,n){return e.type===`element`?Sp(e,t,n):e.type===`text`?n.whitespace===`normal`?Cp(e,n):wp(e):[]}function Sp(e,t,n){let r=Ep(e,n),i=e.children||[],a=-1,o=[];if(vp(e))return o;let s,c;for(mp(e)||_p(e)&&ap(t,e,_p)?c=`
|
|
25
|
-
`:gp(e)?(s=2,c=2):yp(e)&&(s=1,c=1);++a<i.length;)o=o.concat(xp(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?mp(i[a+1]):c}));return hp(e)&&ap(t,e,hp)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function Cp(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){fp.lastIndex=a;let e=fp.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Tp(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function wp(e){return[String(e.value)]}function Tp(e,t,n){let r=[],i=0,a;for(;i<e.length;){pp.lastIndex=i;let n=pp.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function Ep(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Dp(e){return!!(e.properties||{}).hidden}function Op(e){return e.tagName===`td`||e.tagName===`th`}function kp(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Ap={},jp=[];function Mp(e){let t=e||Ap;return function(e,n){C(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:jp,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=bp(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=rp(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),Se})}}var Np={}.hasOwnProperty;function Pp(e,t){let n={type:`root`,children:[]},r=Fp({schema:t?{..._,...t}:_,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Fp(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Ip(e,n);case`doctype`:return Lp(e,n);case`element`:return Rp(e,n);case`root`:return zp(e,n);case`text`:return Bp(e,n);default:}}}function Ip(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return qp(r,t),r}}function Lp(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return qp(e,t),e}}function Rp(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Vp(e,t.children),i=Hp(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&Np.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return qp(o,t),o}function zp(e,t){let n={type:`root`,children:Vp(e,t.children)};return qp(n,t),n}function Bp(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return qp(n,t),n}function Vp(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Fp(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function Hp(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&Np.call(r,n)?r[n]:void 0,o=r&&Np.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(Np.call(s,l)){let t=s[l],n=Up(e,Jp(a,l),l,t);n??=Up(e,Jp(o,l),l,t),n!=null&&(c[l]=n)}if(i&&Np.call(i,n)){let e=i[n];for(l in e)Np.call(e,l)&&!Np.call(c,l)&&(c[l]=e[l])}return c}function Up(e,t,n,r){return t?Array.isArray(r)?Wp(e,t,n,r):Gp(e,t,n,r):void 0}function Wp(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Gp(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Gp(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Kp(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Kp(e,t,n){let r=e.schema.protocols&&Np.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function qp(e,t){let n=Ku(t);t.data&&(e.data=df(t.data)),n&&(e.position=n)}function Jp(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function Yp(e){return function(t){return Pp(t,e)}}function Xp(e){v(e,[/\r?\n|\r/g,Zp])}function Zp(){return{type:`break`}}function Qp(){return function(e){Xp(e)}}var $p=Yt();function em(e){let[t,n]=(0,P.useState)(!1),r=Ie(e.code,e.language),i=r.language||`text`;async function a(){try{await navigator.clipboard.writeText(e.code),n(!0),window.setTimeout(()=>n(!1),1200)}catch(e){console.error(`[notes:code-copy]`,e)}}return(0,F.jsxs)(`div`,{className:`notes-code-block`,children:[(0,F.jsx)(`div`,{className:`notes-code-header`,children:(0,F.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,F.jsx)(`pre`,{children:(0,F.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var tm=null;async function nm(){if(!tm){let e=(await i(()=>import(`./mermaid.core-DYHvk6Pd.js`),__vite__mapDeps([0]))).default;e.initialize({startOnLoad:!1,securityLevel:`strict`}),tm=e}return tm}function rm(e){let t=(0,P.useId)().replace(/[^a-zA-Z0-9_-]/g,``),[n,r]=(0,P.useState)({status:`loading`});return(0,P.useEffect)(()=>{let n=!1;async function i(){r({status:`loading`});try{let i=await nm(),s=o(e.code),c=`notes-mermaid-${t}`,l;try{({svg:l}=await i.render(c,s))}catch(e){let t=a(s);if(!t)throw e;({svg:l}=await i.render(`${c}-retry`,t))}n||r({status:`ready`,svg:l})}catch(e){n||r({status:`error`,message:e instanceof Error?e.message:`Mermaid render failed`})}}return i(),()=>{n=!0}},[e.code,t]),n.status===`ready`?(0,F.jsx)(`div`,{className:`notes-mermaid-block is-ready`,dangerouslySetInnerHTML:{__html:n.svg}}):n.status===`error`?(0,F.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,F.jsx)(`strong`,{children:`Mermaid render failed`}),(0,F.jsx)(`span`,{children:n.message}),(0,F.jsx)(`pre`,{children:(0,F.jsx)(`code`,{children:e.code})})]}):(0,F.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function im(e){return we(e)}function am(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];me.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=me.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(Fe(e,r))continue;let l=t.lookup.get(s[0])??he(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=_e(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,P.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=Oe(l);i.push((0,P.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function om(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return P.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=am(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,P.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var sm=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function cm(e){let t=sm.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function lm(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(lm).join(``):(0,P.isValidElement)(e)?lm(e.props.children):``}function um(e){return(0,P.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var dm=e=>{};function fm(e){let t=(0,P.useMemo)(()=>cm(e.markdown).body,[e.markdown]),n=(0,P.useMemo)(()=>({lookup:im(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??dm}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=e=>t=>{let{children:r,node:i,className:a,id:o,style:s}=t,c=om(r,n,e);return(0,P.createElement)(e,{className:a,id:o,style:s},c)};return(0,F.jsx)(kf,{skipHtml:!0,urlTransform:ue,remarkPlugins:[pe,Qp,Le],rehypePlugins:[[Yp,ye],Mp],components:{a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&Te(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,F.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,F.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=um(e),n=lm(e).replace(/\n$/,``);return t===`mermaid`?(0,F.jsx)(rm,{code:n}):(0,F.jsx)(em,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ve(e):``;return r?(0,F.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:r(`p`),li:r(`li`),h1:r(`h1`),h2:r(`h2`),h3:r(`h3`),h4:r(`h4`),h5:r(`h5`),h6:r(`h6`),blockquote:r(`blockquote`),td:r(`td`),th:r(`th`),em:r(`em`),strong:r(`strong`),del:r(`del`)},children:t})}function pm(e){return(0,F.jsx)(F.Fragment,{children:e.widgets.map(e=>(0,$p.createPortal)((0,F.jsx)(fm,{markdown:e.markdown}),e.shell,e.id))})}function mm(e,t,n){return n.selectionFrom<=t&&n.selectionTo>=e}function hm(e,t){return new TextEncoder().encode(e).byteLength<=t.maxSnippetBytes}function gm(e,t,n){e.length>=n.maxWidgets||mm(t.from,t.to,n)||hm(t.markdown,n)&&e.push(t)}function _m(e,t){if(e.length>t.largeNoteDisableThreshold)return[];let n=[],r=0;for(let i of e.matchAll(/^```([^\n`]*)\n[\s\S]*?\n```[ \t]*$/gm)){if(n.length>=t.maxWidgets)break;let e=i.index||0,a=e+i[0].length,o=(i[1]||``).trim().toLowerCase();if(o===`mermaid`){if(r>=t.maxMermaidWidgets)continue;r+=1}gm(n,{from:e,to:a,kind:o===`mermaid`?`mermaid`:`code`,markdown:i[0],block:!0},t)}for(let r of e.matchAll(/^\$\$\n[\s\S]*?\n\$\$[ \t]*$/gm)){if(n.length>=t.maxWidgets)break;let e=r.index||0;gm(n,{from:e,to:e+r[0].length,kind:`math-block`,markdown:r[0],block:!0},t)}for(let r of e.matchAll(/(^|[^$\\])(\$[^$\n]+\$)/g)){if(n.length>=t.maxWidgets)break;let e=r[1].length,i=(r.index||0)+e,a=r[2];gm(n,{from:i,to:i+a.length,kind:`math-inline`,markdown:a,block:!1},t)}return n.sort((e,t)=>e.from-t.from||e.to-t.to)}var vm=class e extends ut{constructor(e){super(),this.options=e}eq(t){return t instanceof e?this.options.id===t.options.id&&this.options.kind===t.options.kind&&this.options.markdown===t.options.markdown:!1}toDOM(){let e=document.createElement(this.options.block?`div`:`span`);return e.className=this.options.block?`cm-rich-widget cm-rich-block`:`cm-rich-widget cm-rich-inline`,e.dataset.richWidgetId=this.options.id,e.dataset.richWidgetKind=this.options.kind,this.options.registerWidget({id:this.options.id,kind:this.options.kind,markdown:this.options.markdown,shell:e}),queueMicrotask(this.options.requestMeasure),e}updateDOM(e){return this.options.registerWidget({id:this.options.id,kind:this.options.kind,markdown:this.options.markdown,shell:e}),queueMicrotask(this.options.requestMeasure),!0}destroy(){this.options.unregisterWidget(this.options.id)}get estimatedHeight(){return this.options.block?96:20}ignoreEvent(){return!1}},ym=50,bm=100,xm=5e4,Sm=5,Cm=1e6,wm=/^([ \t]*[-*+][ \t]+)\[([ xX])\]([ \t]*)(.*)$/,Tm=class e extends ut{constructor(e){super(),this.range=e}eq(t){return t instanceof e&&t.range.markerFrom===this.range.markerFrom&&t.range.checked===this.range.checked&&t.range.text===this.range.text}toDOM(e){let t=document.createElement(`label`);t.className=`cm-rich-task-widget`;let n=document.createElement(`input`);n.type=`checkbox`;let r=document.createElement(`span`);return t.append(n,r),this.syncDOM(t,e),t}updateDOM(e,t){return e.classList.contains(`cm-rich-task-widget`)?(this.syncDOM(e,t),!0):!1}destroy(e){let t=e.querySelector(`input[type="checkbox"]`);t&&(t.onchange=null)}ignoreEvent(e){return e.type===`mousedown`||e.type===`click`||e.type===`change`||e.type===`input`||e.type===`keydown`}syncDOM(e,t){let n=e.querySelector(`input[type="checkbox"]`),r=e.querySelector(`span`);!n||!r||(n.checked=this.range.checked,n.setAttribute(`aria-label`,this.range.text||(this.range.checked?`Checked task`:`Unchecked task`)),n.setAttribute(`aria-checked`,this.range.checked?`true`:`false`),n.onchange=()=>{t.dispatch({changes:{from:this.range.markerFrom,to:this.range.markerFrom+3,insert:n.checked?`[x]`:`[ ]`},userEvent:`input.task-toggle`})},r.textContent=this.range.text||`Task`)}};function Em(e){return`rich-${e.kind}-${e.from}-${e.to}-${e.markdown.length}`}function Dm(e){let t=[],n=e.selection.main,r=!1;for(let i=1;i<=e.doc.lines&&!(t.length>=bm);i+=1){let a=e.doc.line(i);if(/^```/.test(a.text.trim())){r=!r;continue}if(r||n.from<=a.to&&n.to>=a.from)continue;let o=a.text.match(wm);o&&t.push({from:a.from,to:a.to,markerFrom:a.from+o[1].length,checked:o[2].toLowerCase()===`x`,text:o[4].trim()})}return t}function Om(e,t){if(!t.enabled||!t.active)return jt.none;let n=e.selection.main,r=_m(e.doc.toString(),{selectionFrom:n.from,selectionTo:n.to,maxWidgets:ym,maxSnippetBytes:xm,maxMermaidWidgets:Sm,largeNoteDisableThreshold:Cm}),i=[];for(let t of Dm(e))i.push({from:t.from,to:t.to,decoration:jt.replace({widget:new Tm(t)})});for(let e of r)i.push({from:e.from,to:e.to,decoration:jt.replace({block:e.block,widget:new vm({id:Em(e),kind:e.kind,markdown:e.markdown,block:e.block,registerWidget:t.registerWidget,unregisterWidget:t.unregisterWidget,requestMeasure:t.requestMeasure})})});i.sort((e,t)=>{let n=e.from-t.from;if(n!==0)return n;let r=e.decoration.startSide-t.decoration.startSide;return r===0?e.to-t.to:r});let a=new Ge;for(let e of i)a.add(e.from,e.to,e.decoration);return a.finish()}function km(e){return He.define({create(t){return Om(t,e)},update(t,n){return n.docChanged||n.selection?Om(n.state,e):t.map(n.changes)},provide(e){return[A.decorations.from(e),A.atomicRanges.of(t=>t.state.field(e,!1)??jt.none)]}})}function Am(e){let t=document.createElement(`template`);return t.innerHTML=e,t.content.textContent||``}function jm(e){return A.domEventHandlers({paste(t,n){if(e&&be(t,n,e))return!0;if(t.clipboardData?.getData(`text/plain`))return!1;let r=t.clipboardData?.getData(`text/html`);return r?(t.preventDefault(),n.dispatch(n.state.replaceSelection(Am(r))),!0):!1},drop(t,n){return!!(e&&de(t,n,e))}})}function Mm(e){return(t,n,r,i)=>{let a=t.state.sliceDoc(i,i+2)===`]]`?i+2:i;t.dispatch({...zt(t.state,Ne(e),r,a),annotations:Vt.of(n)})}}function Nm(e){function t(t){let n=t.state.doc.lineAt(t.pos),r=Ee(t.state.sliceDoc(n.from,n.to),t.pos-n.from);if(!r)return null;let i=n.from+r.to-(r.hasClosingSuffix?2:0),a=Ae(e,r.query).map(e=>({label:e.title||e.path,detail:e.path,info:e.matchKind===`alias`?`Alias: ${e.aliases.join(`, `)}`:e.matchKind,type:`text`,apply:Mm(e),boost:e.score}));return a.length===0?null:{from:n.from+r.from,to:i,options:a,validFor:/^[^\]\n]*$/}}return Ht({activateOnTyping:!0,override:[t]})}var Pm=(0,P.lazy)(async()=>({default:(await i(()=>import(`./MilkdownWysiwygEditor-Otw40DDF.js`),__vite__mapDeps([0]))).MilkdownWysiwygEditor}));function Fm(e){let[t,n]=(0,P.useState)(()=>new Map),r=e.authoringMode===`wysiwyg`,i=(0,P.useCallback)(e=>{n(t=>{let n=new Map(t);return n.set(e.id,e),n})},[]),a=(0,P.useCallback)(e=>{n(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),o=(0,P.useCallback)(()=>{window.dispatchEvent(new Event(`resize`))},[]),s=(0,P.useMemo)(()=>{let t=[ct.highest(Nt.of(Xl)),ql,Jl,Gt({codeLanguages:Kl}),Nm(e.notes),jm({notePath:e.notePath,onError:e=>console.warn(`[notes-image-paste]`,e)}),km({enabled:e.authoringMode===`rich`||e.authoringMode===`wysiwyg`,active:e.active,registerWidget:i,unregisterWidget:a,requestMeasure:o})];return e.wordWrap&&t.push(A.lineWrapping),t},[e.active,e.authoringMode,e.notePath,e.notes,e.wordWrap,i,o,a]);return r?(0,F.jsx)(`div`,{className:`notes-editor notes-wysiwyg-editor`,children:(0,F.jsx)(P.Suspense,{fallback:(0,F.jsx)(`div`,{className:`notes-wysiwyg-loading`,children:`Loading WYSIWYG editor...`}),children:(0,F.jsx)(Pm,{active:e.active,content:e.content,notePath:e.notePath,outgoing:e.outgoing,notes:e.notes,activeTag:e.activeTag,onChange:e.onChange,onTagSelect:e.onTagSelect,onWikiLinkNavigate:e.onWikiLinkNavigate})})}):(0,F.jsxs)(`div`,{className:`notes-editor`,children:[(0,F.jsx)(pm,{widgets:[...t.values()]}),(0,F.jsx)(Wl,{value:e.content,extensions:s,onChange:e.onChange,height:`100%`,basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0}})]})}function Im(e){return(0,F.jsx)(`article`,{className:`notes-preview`,children:(0,F.jsx)(fm,{markdown:e.markdown,outgoing:e.outgoing,notes:e.notes,onWikiLinkNavigate:e.onWikiLinkNavigate})})}function Lm(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.md`)?t.slice(0,-3):t}function Rm(e){let t=[],n=/\[\[([^\]]+)\]\]/g,r=0,i,a=0;for(;(i=n.exec(e))!==null;)i.index>r&&t.push(e.slice(r,i.index)),t.push((0,F.jsx)(`mark`,{className:`backlink-highlight`,children:`[[`+i[1]+`]]`},a++)),r=n.lastIndex;return r<e.length&&t.push(e.slice(r)),t}function zm(e){let[t,n]=(0,P.useState)(!1),r=(0,P.useCallback)(t=>{e.onNavigate(t)},[e.onNavigate]),i=e.backlinks.length;return(0,F.jsxs)(`div`,{className:`notes-backlinks-panel`,children:[(0,F.jsxs)(`button`,{className:`notes-backlinks-header`,onClick:()=>n(e=>!e),children:[(0,F.jsx)(`span`,{className:`notes-backlinks-chevron`,children:t?`▶`:`▼`}),(0,F.jsx)(`span`,{children:`Backlinks`}),(0,F.jsx)(`span`,{className:`notes-backlinks-count`,children:i})]}),!t&&(0,F.jsxs)(`div`,{className:`notes-backlinks-list`,children:[i===0&&(0,F.jsx)(`div`,{className:`notes-backlinks-empty`,children:`No backlinks found`}),e.backlinks.map((e,t)=>{let n=e.raw.length>120?e.raw.slice(0,120)+`...`:e.raw;return(0,F.jsxs)(`button`,{className:`notes-backlink-entry`,onClick:()=>r(e.sourcePath),children:[(0,F.jsx)(`span`,{className:`notes-backlink-title`,children:Lm(e.sourcePath)}),(0,F.jsxs)(`span`,{className:`notes-backlink-line`,children:[`L`,e.line]}),(0,F.jsx)(`span`,{className:`notes-backlink-context`,children:Rm(n)})]},`${e.sourcePath}:${e.line}:${t}`)})]})]})}function Bm(){return(0,F.jsxs)(`section`,{className:`notes-empty-state`,children:[(0,F.jsx)(`strong`,{children:`No notes yet`}),(0,F.jsx)(`span`,{children:`Create a markdown note from the file tree.`})]})}function Vm(e){let t=e.note;if(!t)return null;let n=t.aliases||[],r=t.tags||[],i=t.created,a=t.frontmatterError;return!a&&n.length===0&&r.length===0&&!i?null:(0,F.jsxs)(`div`,{className:`notes-frontmatter-strip`,"aria-label":`Note frontmatter`,children:[a&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-error`,role:`alert`,children:[`Frontmatter: `,a]}),n.length>0&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-section`,children:[(0,F.jsx)(`span`,{className:`notes-frontmatter-label`,children:`Aliases`}),(0,F.jsx)(`span`,{className:`notes-frontmatter-value`,children:n.join(`, `)})]}),i&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-section`,children:[(0,F.jsx)(`span`,{className:`notes-frontmatter-label`,children:`Created`}),(0,F.jsx)(`span`,{className:`notes-frontmatter-value`,children:i})]}),r.length>0&&(0,F.jsx)(`span`,{className:`notes-frontmatter-section notes-frontmatter-tags`,children:r.map(t=>{let n=t===e.activeTag;return(0,F.jsxs)(`button`,{type:`button`,className:n?`notes-tag-chip is-active`:`notes-tag-chip`,"aria-pressed":n,title:n?`Clear filter: #${t}`:`Filter notes by #${t}`,onClick:()=>e.onTagClick(n?null:t),children:[`#`,t]},t)})})]})}var Hm=50;function Um(e){return e.trim().toLowerCase()}function Wm(e,t){let n=Um(e),r=Um(t);if(!r)return 1;if(n.startsWith(r))return 1e3-n.length;let i=n.indexOf(r);if(i>=0)return 700-i;let a=-1,o=0,s=0;for(let e of r){let t=n.indexOf(e,a+1);if(t<0)return null;o=t===a+1?o+1:0,s+=4+o*3-Math.min(t,40)*.1,a=t}return s}function Gm(e,t){let n=[{value:e.title,reason:`title`,boost:120},{value:e.path,reason:`path`,boost:40},...e.aliases.map(e=>({value:e,reason:`alias`,boost:80}))],r=null;for(let i of n){let n=Wm(i.value,t);if(n==null)continue;let a=n+i.boost;(!r||a>r.score)&&(r={note:e,score:a,reason:i.reason})}return r}function Km(e,t,n=Hm){let r=t.trim();return e.map(e=>Gm(e,r)).filter(e=>!!e).sort((e,t)=>t.score===e.score?e.note.path.localeCompare(t.note.path):t.score-e.score).slice(0,n)}function qm(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(0),a=(0,P.useRef)(null),o=(0,P.useRef)(null),s=(0,P.useMemo)(()=>Km(e.notes,t),[e.notes,t]),c=s[r]?`notes-quick-switcher-option-${r}`:void 0;(0,P.useEffect)(()=>{e.open&&(n(``),i(0),requestAnimationFrame(()=>a.current?.focus()))},[e.open]),(0,P.useEffect)(()=>{r>=s.length&&i(Math.max(0,s.length-1))},[r,s.length]),(0,P.useEffect)(()=>{(c?document.getElementById(c):null)?.scrollIntoView({block:`nearest`})},[c]);function l(){let t=s[r];t&&e.onSelect(t.note.path)}function u(t){t.key===`ArrowDown`?(t.preventDefault(),i(e=>Math.min(s.length-1,e+1))):t.key===`ArrowUp`?(t.preventDefault(),i(e=>Math.max(0,e-1))):t.key===`Enter`?(t.preventDefault(),l()):t.key===`Escape`&&(t.preventDefault(),e.onClose())}return e.open?(0,F.jsx)(`div`,{className:`notes-quick-switcher-backdrop`,role:`presentation`,onClick:e.onClose,children:(0,F.jsxs)(`section`,{className:`notes-quick-switcher`,role:`dialog`,"aria-modal":`true`,"aria-label":`Quick switch note`,onClick:e=>e.stopPropagation(),children:[(0,F.jsx)(`input`,{ref:a,className:`notes-quick-switcher-input`,type:`search`,placeholder:`Go to note`,value:t,onChange:e=>{n(e.currentTarget.value),i(0)},onKeyDown:u,"aria-label":`Quick switch note`,"aria-controls":`notes-quick-switcher-results`,"aria-activedescendant":c}),(0,F.jsxs)(`div`,{id:`notes-quick-switcher-results`,className:`notes-quick-switcher-list`,role:`listbox`,"aria-label":`Matching notes`,ref:o,children:[s.map((t,n)=>{let a=n===r,o=t.note.path===e.selectedPath;return(0,F.jsxs)(`button`,{id:`notes-quick-switcher-option-${n}`,type:`button`,role:`option`,"aria-selected":a,className:`notes-quick-switcher-item${a?` is-active`:``}${o?` is-current`:``}`,onMouseEnter:()=>i(n),onClick:()=>e.onSelect(t.note.path),children:[(0,F.jsx)(`span`,{className:`notes-quick-switcher-title`,children:t.note.title||t.note.path}),(0,F.jsx)(`span`,{className:`notes-quick-switcher-path`,children:t.note.path}),(0,F.jsx)(`span`,{className:`notes-quick-switcher-alias`,children:o?`Current note`:t.reason===`alias`?`Alias match`:t.reason===`path`?`Path match`:`Title match`})]},t.note.path)}),s.length===0&&(0,F.jsx)(`p`,{className:`notes-quick-switcher-empty`,children:`No matching notes.`})]}),(0,F.jsxs)(`footer`,{className:`notes-quick-switcher-footer`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Up/Down`}),` move`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Enter`}),` open`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Esc`}),` close`]})]})]})}):null}function Jm(e){return e instanceof g&&e.status===409&&e.code===`note_revision_conflict`}function Ym(e){return e?e.split(`/`).filter(Boolean).at(-1)||e:`No note selected`}function Xm(e,t,n){return!!e&&t&&!n}var Zm=[`raw`,`split`,`preview`,`wysiwyg`,`graph`];function Qm(e){return e===`raw`?`Raw`:e===`split`?`Split`:e===`preview`?`Preview`:e===`graph`?`Graph`:`WYSIWYG`}function $m(e,t){return e===`settings`?null:e===`graph`?`graph`:e===`split`?`split`:e===`preview`?`preview`:t===`wysiwyg`?`wysiwyg`:`raw`}function eh(e){function t(t){if(t===`graph`){e.onViewModeChange(`graph`);return}if(t===`split`){e.onViewModeChange(`split`),e.onAuthoringModeChange(`plain`);return}if(t===`preview`){e.onViewModeChange(`preview`);return}e.onViewModeChange(`raw`),e.onAuthoringModeChange(t===`wysiwyg`?`wysiwyg`:`plain`)}let n=$m(e.viewMode,e.authoringMode);return(0,F.jsxs)(`div`,{className:`notes-toolbar`,children:[(0,F.jsxs)(`div`,{className:`notes-toolbar-title`,children:[(0,F.jsx)(`strong`,{children:Ym(e.selectedPath)}),(0,F.jsx)(`span`,{children:e.conflict?`Conflict`:e.dirty?`Unsaved`:`Saved`})]}),(0,F.jsxs)(`div`,{className:`notes-toolbar-actions`,children:[(0,F.jsx)(`div`,{className:`notes-view-tabs`,role:`tablist`,"aria-label":`Notes view`,children:Zm.map(r=>(0,F.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===r,className:n===r?`is-active`:``,disabled:r===`graph`?!1:!e.selectedPath,onClick:()=>t(r),children:Qm(r)},r))}),(0,F.jsx)(`button`,{type:`button`,className:e.viewMode===`settings`?`is-active`:``,onClick:()=>e.onViewModeChange(`settings`),children:`Settings`}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onReload,disabled:!e.selectedPath||e.loading,children:`Refresh`}),(0,F.jsx)(`button`,{type:`button`,className:`notes-save-button`,onClick:e.onSave,disabled:!Xm(e.selectedPath,e.dirty,e.saving),children:e.saving?`Saving`:`Save`})]})]})}function th(e){return(e.metaKey||e.ctrlKey)&&!e.altKey}function nh(e){return typeof HTMLElement>`u`||!(e instanceof HTMLElement)?!1:!!e.closest(`[data-notes-palette]`)}function rh(e){return th(e)&&!e.shiftKey&&e.key.toLowerCase()===`p`&&!nh(e.target)}function ih(e){return th(e)&&e.shiftKey&&e.key.toLowerCase()===`p`}async function ah(){await Promise.resolve(),await new Promise(e=>setTimeout(e,0))}function oh(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(``),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(!1),[c,l]=(0,P.useState)(!1),[u,d]=(0,P.useState)(null),[f,p]=(0,P.useState)(null),m=(0,P.useRef)(``),h=(0,P.useRef)(!1),g=(0,P.useRef)(!1),_=(0,P.useCallback)(async e=>{s(!0),d(null),p(null);try{let n=await ke(e);t(n),m.current=n.content,h.current=!1,r(n.content),a(!1)}catch(e){d(e.message)}finally{s(!1)}},[]);function v(e){m.current=e,h.current=!0,r(e),a(!0)}return{file:e,content:n,dirty:i,loading:o,saving:c,error:u,conflict:f,setContent:v,load:_,save:(0,P.useCallback)(async()=>{if(await ah(),!e||!h.current||g.current)return;let n=m.current;g.current=!0,l(!0),d(null),p(null);try{let i=await fe({path:e.path,content:n,baseRevision:e.revision});t(i),m.current===n&&(m.current=i.content,h.current=!1,r(i.content),a(!1))}catch(r){if(Jm(r)){let i=e.revision;try{let n=await ke(e.path);i=n.revision,t(n)}catch{i=e.revision}p({localContent:n,remoteRevision:i,message:r.message})}else d(r.message)}finally{g.current=!1,l(!1)}},[e]),reloadFromDisk:(0,P.useCallback)(async()=>{e&&await _(e.path)},[e,_]),overwrite:(0,P.useCallback)(async()=>{if(await ah(),!e||g.current)return;let n=m.current;g.current=!0,l(!0),d(null);try{let i=await fe({path:e.path,content:n});t(i),m.current===n&&(m.current=i.content,h.current=!1,r(i.content),a(!1)),p(null)}catch(e){d(e.message)}finally{g.current=!1,l(!1)}},[e]),clearConflict:()=>p(null)}}var sh=(0,P.lazy)(async()=>({default:(await i(()=>import(`./NotesGraphView-CwdEnL7d.js`),[])).NotesGraphView})),ch=[`raw`,`preview`,`wysiwyg`],lh=/[/\\]/g;function uh(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.md`)?t.slice(0,-3):t}function dh(e,t){return e===`preview`?`preview`:t===`wysiwyg`?`wysiwyg`:`raw`}function fh(e){let t=oh(),n=(0,P.useRef)(!1),[r,i]=(0,P.useState)(!1);(0,P.useEffect)(()=>{e.selectedPath&&t.load(e.selectedPath)},[e.selectedPath]),(0,P.useEffect)(()=>{e.onDirtyPathChange(t.dirty?e.selectedPath:null)},[t.dirty,e.selectedPath]),(0,P.useEffect)(()=>{if(!e.active)return;function n(e){!(e.metaKey||e.ctrlKey)||e.key.toLowerCase()!==`s`||(e.preventDefault(),t.save())}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[t.save,e.active]),(0,P.useEffect)(()=>{if(!e.active)return;function t(t){if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!==`e`)return;t.preventDefault();let n=dh(e.viewMode,e.authoringMode),r=ch[(ch.indexOf(n)+1)%ch.length];if(r===`preview`){e.onViewModeChange(`preview`);return}e.onViewModeChange(`raw`),e.onAuthoringModeChange(r===`wysiwyg`?`wysiwyg`:`plain`)}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active,e.viewMode,e.authoringMode,e.onViewModeChange,e.onAuthoringModeChange]),(0,P.useEffect)(()=>{if(!e.active)return;function t(t){!(t.metaKey||t.ctrlKey)||!t.shiftKey||t.key.toLowerCase()!==`f`||(t.preventDefault(),e.onOpenSidebarSearch())}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active,e.onOpenSidebarSearch]),(0,P.useEffect)(()=>{if(!e.active)return;function t(e){rh(e)&&(e.preventDefault(),i(e=>!e))}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active]);let a=e.selectedPath?t.saving?`Save in progress`:t.dirty?void 0:`No unsaved changes`:`No note selected`;Ji((0,P.useMemo)(()=>[{id:`workspace:save`,section:`File`,label:`Save note`,shortcut:`Cmd+S`,disabled:!Xm(e.selectedPath,t.dirty,t.saving),disabledReason:a,keywords:[`write`,`persist`],run:()=>void t.save()},{id:`workspace:reload`,section:`File`,label:`Reload note from disk`,keywords:[`refresh`,`discard`],disabled:!e.selectedPath,disabledReason:`No note selected`,run:()=>void t.reloadFromDisk()},{id:`workspace:view-raw`,section:`View`,label:`Switch to raw editor`,run:()=>{e.onViewModeChange(`raw`),e.onAuthoringModeChange(`plain`)}},{id:`workspace:view-split`,section:`View`,label:`Switch to split view`,run:()=>{e.onViewModeChange(`split`),e.onAuthoringModeChange(`plain`)}},{id:`workspace:view-preview`,section:`View`,label:`Switch to preview`,shortcut:`Cmd+E`,run:()=>e.onViewModeChange(`preview`)},{id:`workspace:view-wysiwyg`,section:`View`,label:`Switch to WYSIWYG editor`,run:()=>{e.onViewModeChange(`raw`),e.onAuthoringModeChange(`wysiwyg`)}},{id:`workspace:view-graph`,section:`View`,label:`Open graph view`,run:()=>e.onViewModeChange(`graph`)},{id:`workspace:open-settings`,section:`View`,label:`Open Notes settings`,run:()=>e.onViewModeChange(`settings`)},{id:`workspace:toggle-word-wrap`,section:`Editor`,label:e.wordWrap?`Disable word wrap`:`Enable word wrap`,run:()=>e.onWordWrapChange(!e.wordWrap)},{id:`workspace:open-search`,section:`Navigate`,label:`Search notes`,shortcut:`Cmd+Shift+F`,run:e.onOpenSidebarSearch},{id:`workspace:quick-switch-note`,section:`Navigate`,label:`Quick switch note`,shortcut:`Cmd+P`,run:()=>i(!0)}],[t.dirty,t.reloadFromDisk,t.save,t.saving,e.onAuthoringModeChange,e.onOpenSidebarSearch,e.onViewModeChange,e.onWordWrapChange,e.selectedPath,e.wordWrap,a]),e.active);async function o(t){if(n.current||!e.selectedPath)return;let r=t.currentTarget.value.trim().replace(lh,``),i=uh(e.selectedPath);if(!r||r===i){t.currentTarget.value=i;return}let a=e.selectedPath.split(`/`);a[a.length-1]=r.endsWith(`.md`)?r:`${r}.md`;let o=a.join(`/`);if(o===e.selectedPath){t.currentTarget.value=i;return}n.current=!0;try{await je(e.selectedPath,o),e.onSelectedPathChange(o),Zi({topics:[`notes`],reason:`note:title-renamed`,source:`ui`})}catch(e){console.warn(`[notes-rename]`,e),t.currentTarget.value=i}finally{n.current=!1}}let s=e.viewMode===`raw`||e.viewMode===`split`,c=e.viewMode===`preview`||e.viewMode===`split`,l=e.selectedPath&&e.vaultIndex?.outgoingLinks?.[e.selectedPath]||[],u=e.selectedPath&&e.vaultIndex?.backlinks?.[e.selectedPath]||[],d=e.vaultIndex?.notes||[],f=e.authoringMode===`wysiwyg`&&s;return(0,F.jsxs)(`section`,{className:`notes-workspace`,"aria-label":`Notes workspace`,children:[(0,F.jsxs)(`main`,{className:`notes-main notes-mode-${e.viewMode}`,children:[(0,F.jsx)(eh,{selectedPath:e.selectedPath,viewMode:e.viewMode,authoringMode:e.authoringMode,dirty:t.dirty,saving:t.saving,loading:t.loading,conflict:!!t.conflict,onViewModeChange:e.onViewModeChange,onAuthoringModeChange:e.onAuthoringModeChange,onSave:()=>void t.save(),onReload:()=>void t.reloadFromDisk()}),(0,F.jsxs)(`div`,{className:`notes-content`,children:[t.error&&(0,F.jsx)(`section`,{className:`state error-state`,children:t.error}),t.conflict&&(0,F.jsxs)(`section`,{className:`notes-conflict`,children:[(0,F.jsx)(`span`,{children:t.conflict.message}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void t.reloadFromDisk(),children:`Reload`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void t.overwrite(),children:`Overwrite`}),(0,F.jsx)(`button`,{type:`button`,onClick:t.clearConflict,children:`Keep local`})]}),e.viewMode===`settings`&&(0,F.jsxs)(`section`,{className:`notes-settings`,children:[(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`input`,{type:`checkbox`,checked:e.wordWrap,onChange:t=>e.onWordWrapChange(t.currentTarget.checked)}),`Word wrap`]}),(0,F.jsxs)(`label`,{children:[`Tree width`,(0,F.jsx)(`input`,{type:`range`,min:`220`,max:`420`,value:e.treeWidth,onChange:t=>e.onTreeWidthChange(Number(t.currentTarget.value))})]})]}),e.viewMode===`graph`&&(0,F.jsx)(P.Suspense,{fallback:(0,F.jsx)(`div`,{className:`notes-graph-loading`,children:`Loading graph...`}),children:(0,F.jsx)(sh,{graph:e.vaultIndex?.graph??{nodes:[],edges:[]},selectedPath:e.selectedPath,onNavigate:t=>{e.onSelectedPathChange(t),e.onViewModeChange(`raw`)}})}),!e.selectedPath&&e.viewMode!==`settings`&&e.viewMode!==`graph`&&(0,F.jsx)(Bm,{}),e.selectedPath&&e.viewMode!==`settings`&&e.viewMode!==`graph`&&(0,F.jsxs)(`div`,{className:`notes-document-grid`,children:[(0,F.jsx)(`input`,{className:`notes-inline-title`,defaultValue:uh(e.selectedPath),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},spellCheck:!1,"aria-label":`Note title`},e.selectedPath),!f&&(0,F.jsx)(Vm,{note:e.selectedNote,activeTag:e.tagFilter,onTagClick:e.onTagSelect}),s&&(0,F.jsx)(`div`,{className:`notes-editor-pane`,children:(0,F.jsx)(Fm,{active:e.active&&s,authoringMode:e.authoringMode,content:t.content,notePath:e.selectedPath,outgoing:l,notes:d,activeTag:e.tagFilter,wordWrap:e.wordWrap,onChange:t.setContent,onTagSelect:e.onTagSelect,onWikiLinkNavigate:e.onWikiLinkNavigate},e.selectedPath)}),c&&(0,F.jsx)(Im,{markdown:t.content,outgoing:l,notes:d,onWikiLinkNavigate:e.onWikiLinkNavigate})]})]}),e.viewMode!==`graph`&&e.viewMode!==`settings`&&e.selectedPath&&(0,F.jsx)(zm,{backlinks:u,onNavigate:e.onWikiLinkNavigate})]}),(0,F.jsx)(qm,{open:r,notes:e.vaultIndex?.notes||[],selectedPath:e.selectedPath,onClose:()=>i(!1),onSelect:t=>{e.onSelectedPathChange(t),i(!1)}})]})}var ph=`application/x-jaw-running-chip`;function mh(e,t,n){let r=[],i=new Set;for(let a of e){if(a.hidden)continue;let e=a.port;if(i.has(e))continue;i.add(e);let o=n.has(e),s=a.status===`online`,c=a.status===`error`;!o&&!s&&!c||r.push({port:e,label:a.label||a.instanceId||`Port ${e}`,activity:t[e]||null,state:o?`busy`:c?`error`:`online`})}return r}function hh(e){return JSON.stringify({port:e.port,label:e.label,activity:e.activity,state:e.state})}function gh(e){let t=e.dataTransfer.getData(ph);if(!t)return null;try{let e=JSON.parse(t);return typeof e.port==`number`?{port:e.port,label:typeof e.label==`string`?e.label:`Port ${e.port}`,activity:typeof e.activity==`string`?e.activity:null,state:e.state===`busy`||e.state===`error`?e.state:`online`}:null}catch{return null}}var _h=[{id:`backlog`,label:`Backlog`,policy:`Options not yet committed`},{id:`ready`,label:`Ready`,policy:`Pullable, clear enough to start`},{id:`active`,label:`In Progress`,policy:`Current WIP, keep starts limited`},{id:`review`,label:`Review`,policy:`Check output before delivery`},{id:`done`,label:`Done`,policy:`Delivered or no longer active`}];function vh(e){let t=(0,P.useMemo)(()=>mh(e.instances,e.titlesByPort,e.busyPorts),[e.instances,e.titlesByPort,e.busyPorts]);return(0,F.jsxs)(`nav`,{className:`dashboard-board-sidebar`,"aria-label":`Board lanes`,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-sidebar-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-sidebar-title`,children:`Board`}),(0,F.jsxs)(`span`,{className:`dashboard-board-sidebar-count`,children:[t.length,` running`]})]}),(0,F.jsxs)(`section`,{className:`dashboard-board-sidebar-running`,"aria-label":`Running instances`,children:[(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-section-title`,children:`Running`}),t.length===0?(0,F.jsx)(`p`,{className:`dashboard-board-sidebar-empty`,children:`No running instances`}):(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-running-list`,children:t.map(e=>(0,F.jsxs)(`div`,{className:`dashboard-board-running-chip`,"data-state":e.state,draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`copy`,t.dataTransfer.setData(ph,hh(e))},"aria-label":e.activity?`${e.label} — ${e.activity}`:e.label,children:[(0,F.jsxs)(`span`,{className:`dashboard-board-running-chip-port`,children:[`:`,e.port]}),(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-label`,children:e.label}),e.activity?(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-activity`,children:e.activity}):null,(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-state`,"data-state":e.state,children:e.state})]},e.port))})]}),(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-section-title`,children:`Lanes`}),(0,F.jsxs)(`ul`,{className:`dashboard-board-sidebar-list`,children:[(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-sidebar-item${e.view.kind===`overall`?` is-active`:``}`,onClick:()=>e.onViewChange({kind:`overall`}),"aria-pressed":e.view.kind===`overall`,children:[(0,F.jsx)(`span`,{children:`Overall`}),(0,F.jsx)(`small`,{children:`Five-column workflow`})]})}),_h.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-sidebar-item${e.view.kind===`lane`&&e.view.lane===t.id?` is-active`:``}`,onClick:()=>e.onViewChange({kind:`lane`,lane:t.id}),"aria-pressed":e.view.kind===`lane`&&e.view.lane===t.id,children:[(0,F.jsx)(`span`,{children:t.label}),(0,F.jsx)(`small`,{children:t.policy})]})},t.id))]})]})}function yh(e,t){if(e.port===null)return`no instance`;let n=t.get(e.port);return n?`:${n.port} ${n.label}`:`:${e.port}`}function bh(e){let t=_h.find(t=>t.id===e.lane),n=t?.label??`Lane`,r=t?.policy??``,i=e.cards.filter(e=>e.port!==null).length,a=e.cards.length-i;return(0,F.jsxs)(`div`,{className:`dashboard-board-lane-detail-shell`,"data-lane":e.lane,children:[(0,F.jsxs)(`aside`,{className:`dashboard-board-lane-detail-sidebar`,"aria-label":`${n} filters`,children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:n}),(0,F.jsx)(`small`,{children:r})]}),(0,F.jsxs)(`div`,{className:`dashboard-board-lane-detail-counts`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:e.cards.length}),` all`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:i}),` with instance`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:a}),` no instance`]})]}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onBackToOverall,children:`Overall`})]}),(0,F.jsxs)(`section`,{className:`dashboard-board-lane-detail-content`,"aria-label":`${n} cards`,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-lane-detail-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(`h2`,{children:[`Board / `,n]}),(0,F.jsx)(`p`,{children:e.lane===`done`?`Done archive, shown as compact two-line rows.`:`Lane detail, shown as compact rows for scan and reuse.`})]}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onBackToOverall,children:`Close`})]}),e.cards.length===0?(0,F.jsx)(`p`,{className:`dashboard-board-lane-detail-empty`,children:`No items in this lane`}):(0,F.jsx)(`ul`,{className:`dashboard-board-compact-list`,children:e.cards.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-compact-row`,onClick:()=>e.onOpenCard(t.id),children:[(0,F.jsx)(`span`,{className:`dashboard-board-compact-row-title`,children:t.summary||t.title}),(0,F.jsx)(`span`,{className:`dashboard-board-compact-row-instance`,children:yh(t,e.runningChipByPort)})]})},t.id))})]})]})}var xh=`/api/dashboard/board`;function Sh(e){return{...e,summary:e.summary??null,detail:e.detail??null}}async function Ch(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}return await e.json()}async function wh(){let e=await Ch(await fetch(`${xh}/tasks`,{credentials:`same-origin`,cache:`no-store`}));return Array.isArray(e.tasks)?e.tasks.map(Sh):[]}async function Th(e){return Sh((await Ch(await fetch(`${xh}/tasks`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(e)}))).task)}async function Eh(e,t){return Sh((await Ch(await fetch(`${xh}/tasks/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(t)}))).task)}async function Dh(e){await Ch(await fetch(`${xh}/tasks/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`same-origin`}))}function Oh(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(``);if((0,P.useEffect)(()=>{n(e.card?.title??``),i(e.card?.summary??``),o(e.card?.detail??``)},[e.card]),!e.card)return null;function s(n){if(n.preventDefault(),!e.card)return;let i=t.trim();i&&e.onSave(e.card.id,{title:i,summary:r,detail:a})}return(0,F.jsx)(`div`,{className:`dashboard-board-dialog-backdrop`,role:`presentation`,onMouseDown:t=>{t.target===t.currentTarget&&e.onClose()},children:(0,F.jsxs)(`form`,{className:`dashboard-board-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`dashboard-board-dialog-title`,onSubmit:s,onKeyDown:t=>{t.key===`Escape`&&e.onClose()},children:[(0,F.jsxs)(`header`,{className:`dashboard-board-dialog-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`p`,{className:`dashboard-board-dialog-kicker`,children:`Kanban block`}),(0,F.jsx)(`h3`,{id:`dashboard-board-dialog-title`,children:`Edit card`})]}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-dialog-icon-button`,onClick:e.onClose,"aria-label":`Close card editor`,children:`×`})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`Title`}),(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:t,onChange:e=>n(e.currentTarget.value),maxLength:500,required:!0})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`One-line note`}),(0,F.jsx)(`input`,{type:`text`,value:r,onChange:e=>i(e.currentTarget.value),maxLength:500,placeholder:`Short visible memo for the card`})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`Details`}),(0,F.jsx)(`textarea`,{value:a,onChange:e=>o(e.currentTarget.value),maxLength:2e4,rows:10,placeholder:`Write Markdown here. It is stored as raw text for now.`})]}),(0,F.jsxs)(`footer`,{className:`dashboard-board-dialog-footer`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-dialog-storage`,children:`Markdown`}),(0,F.jsxs)(`div`,{className:`dashboard-board-dialog-actions`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e.onClose,children:`Cancel`}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.busy||!t.trim(),children:`Save`})]})]})]})})}var kh=`application/x-jaw-board-task`;function Ah(e){return e.kind===`open`?(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M7 4h-2.5a1.5 1.5 0 0 0-1.5 1.5v10a1.5 1.5 0 0 0 1.5 1.5h10a1.5 1.5 0 0 0 1.5-1.5V13`}),(0,F.jsx)(`path`,{d:`M10 3h7v7`}),(0,F.jsx)(`path`,{d:`M9 11 17 3`})]}):e.kind===`move`?(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M10 2v16`}),(0,F.jsx)(`path`,{d:`M6 6 10 2l4 4`}),(0,F.jsx)(`path`,{d:`m6 14 4 4 4-4`}),(0,F.jsx)(`path`,{d:`M2 10h16`}),(0,F.jsx)(`path`,{d:`m6 6-4 4 4 4`}),(0,F.jsx)(`path`,{d:`m14 6 4 4-4 4`})]}):(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M3 5h14`}),(0,F.jsx)(`path`,{d:`M8 5V3h4v2`}),(0,F.jsx)(`path`,{d:`M6 8v8`}),(0,F.jsx)(`path`,{d:`M10 8v8`}),(0,F.jsx)(`path`,{d:`M14 8v8`}),(0,F.jsx)(`path`,{d:`M5 5l1 13h8l1-13`})]})}function jh(e){return JSON.stringify({id:e.id,lane:e.lane})}function Mh(e){let t=e.dataTransfer.getData(kh);if(!t)return null;try{let e=JSON.parse(t);if(typeof e.id!=`string`)return null;let n=_h.find(t=>t.id===e.lane)?.id;return n?{id:e.id,lane:n}:null}catch{return null}}function Nh(e,t){return Array.from(e.dataTransfer.types).includes(t)}function Ph(e){return{id:e.id,title:e.title,summary:e.summary??null,detail:e.detail??null,lane:e.lane,port:e.port,source:e.source,persisted:!0}}function Fh(e){return e==null?null:e.trim()||null}function Ih(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(``),[s,c]=(0,P.useState)(!1),[l,u]=(0,P.useState)(null),[d,f]=(0,P.useState)(null),[p,m]=(0,P.useState)(null),[h,g]=(0,P.useState)(null),[_,v]=(0,P.useState)(!1),y=(0,P.useRef)(null),b=(0,P.useCallback)(async()=>{try{n(await wh())}catch{}},[]);(0,P.useEffect)(()=>{e.active&&b()},[e.active,b]),(0,P.useEffect)(()=>{if(!l)return;let e=e=>{y.current&&(y.current.contains(e.target)||u(null))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]);let x=(0,P.useCallback)(async e=>{let t=a.trim();if(!(!t||s)){c(!0);try{await Th({title:t,lane:e}),o(``),i(null),await b()}catch{}finally{c(!1)}}},[a,s,b]),S=(0,P.useCallback)(async(e,t)=>{u(null);try{await Eh(e,{lane:t}),await b()}catch{}},[b]),ee=(0,P.useCallback)(async e=>{try{await Dh(e),await b()}catch{}},[b]),te=(0,P.useCallback)(async(e,t)=>{if(!_){v(!0);try{let r=await Eh(e,t);n(n=>n.map(n=>n.id===e?{...n,...r,summary:t.summary===void 0?r.summary??n.summary:Fh(t.summary),detail:t.detail===void 0?r.detail??n.detail:Fh(t.detail)}:n)),g(null)}catch{}finally{v(!1)}}},[_]),C=(0,P.useCallback)(async(e,t)=>{try{await Eh(e,{port:t}),await b()}catch{}},[b]),ne=(0,P.useCallback)(async e=>{try{await Eh(e,{port:null}),await b()}catch{}},[b]),re=(0,P.useCallback)((e,t)=>{t.preventDefault(),f(null);let n=Mh(t);!n||n.lane===e||S(n.id,e)},[S]),ie=(0,P.useCallback)((e,t)=>{if(!Nh(t,`application/x-jaw-running-chip`))return;t.preventDefault(),t.stopPropagation(),m(null);let n=gh(t);n&&C(e,n.port)},[C]),ae=(0,P.useMemo)(()=>t.map(Ph),[t]),oe=(0,P.useMemo)(()=>{let e=h?ae.find(e=>e.id===h):null;return e?{id:e.id,title:e.title,summary:e.summary,detail:e.detail}:null},[ae,h]),se=(0,P.useMemo)(()=>mh(e.instances,e.titlesByPort,e.busyPorts),[e.instances,e.titlesByPort,e.busyPorts]),ce=(0,P.useMemo)(()=>new Map(se.map(e=>[e.port,e])),[se]),le=e.view.kind===`lane`?e.view.lane:null;return(0,F.jsxs)(`section`,{className:`dashboard-board-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-workspace-header`,children:[(0,F.jsxs)(`div`,{className:`dashboard-board-workspace-header-text`,children:[(0,F.jsx)(`h2`,{children:`Board`}),(0,F.jsx)(`p`,{className:`dashboard-board-workspace-subtitle`,children:`Create human-owned kanban blocks, then drag running instance blocks into a card to attach context without touching the instance itself.`})]}),(0,F.jsx)(`div`,{className:`dashboard-board-workspace-controls`,children:(0,F.jsx)(ui,{topic:`board`,label:`Open Board help`,onOpen:e.onOpenHelpTopic})})]}),le===null?(0,F.jsx)(`div`,{className:`dashboard-board-lanes`,children:_h.map(t=>{let n=ae.filter(e=>e.lane===t.id),c=t.id===`done`?n.slice(0,4):n,h=t.id===`done`?Math.max(0,n.length-4):0,_=r===t.id;return(0,F.jsxs)(`div`,{className:`dashboard-board-lane${d===t.id?` is-drop-target`:``}`,"data-lane":t.id,onDragOver:e=>{Nh(e,kh)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,d!==t.id&&f(t.id))},onDragLeave:()=>{d===t.id&&f(null)},onDrop:e=>re(t.id,e),children:[(0,F.jsxs)(`header`,{className:`dashboard-board-lane-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-lane-title`,children:t.label}),(0,F.jsx)(`span`,{className:`dashboard-board-lane-policy`,children:t.policy}),(0,F.jsx)(`span`,{className:`dashboard-board-lane-count`,children:n.length})]}),(0,F.jsxs)(`ul`,{className:`dashboard-board-lane-cards`,children:[n.length===0?(0,F.jsx)(`li`,{className:`dashboard-board-lane-empty`,children:`No items`}):c.map(e=>{let t=e.port===null?null:ce.get(e.port)??null;return(0,F.jsxs)(`li`,{className:`dashboard-board-card${p===e.id?` is-instance-drop-target`:``}`,"data-lane":e.lane,"data-source":e.source,"data-persisted":e.persisted?`true`:`false`,draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(kh,jh(e))},onDragOver:t=>{Nh(t,`application/x-jaw-running-chip`)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect=`copy`,p!==e.id&&m(e.id))},onDragLeave:()=>{p===e.id&&m(null)},onDrop:t=>ie(e.id,t),children:[(0,F.jsx)(`span`,{className:`dashboard-board-card-title`,children:e.title}),e.summary?(0,F.jsx)(`span`,{className:`dashboard-board-card-summary`,title:e.summary,children:e.summary}):null,(0,F.jsx)(`div`,{className:`dashboard-board-card-instance-slot`,"data-empty":t?`false`:`true`,children:t?(0,F.jsxs)(`div`,{className:`dashboard-board-card-instance`,"data-state":t.state,draggable:!0,onDragStart:e=>{e.stopPropagation(),e.dataTransfer.effectAllowed=`copy`,e.dataTransfer.setData(ph,hh(t))},title:t.activity?`${t.label} — ${t.activity}`:t.label,children:[(0,F.jsxs)(`span`,{className:`dashboard-board-card-instance-port`,children:[`:`,t.port]}),(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-label`,children:t.label}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-instance-detach`,onClick:()=>void ne(e.id),"aria-label":`Detach :${t.port} from card`,title:`Detach instance`,children:`-`}),t.activity?(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-activity`,title:t.activity,children:t.activity}):null]}):(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-empty`,children:`Drop a running instance here`})}),e.persisted?(0,F.jsxs)(`span`,{className:`dashboard-board-card-actions`,"data-open":l===e.id?`true`:`false`,children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>g(e.id),"aria-label":`Open card details`,title:`Open`,children:(0,F.jsx)(Ah,{kind:`open`})}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>u(t=>t===e.id?null:e.id),"aria-haspopup":`menu`,"aria-expanded":l===e.id,"aria-label":`Move card`,title:`Move`,children:(0,F.jsx)(Ah,{kind:`move`})}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,"data-danger":`true`,onClick:()=>void ee(e.id),"aria-label":`Delete card`,title:`Delete`,children:(0,F.jsx)(Ah,{kind:`delete`})}),l===e.id&&(0,F.jsx)(`div`,{ref:y,className:`dashboard-board-popover`,role:`menu`,children:_h.map(t=>(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-popover-item${t.id===e.lane?` is-current`:``}`,role:`menuitem`,disabled:t.id===e.lane,onClick:()=>void S(e.id,t.id),children:[t.label,t.id===e.lane?` ✓`:``]},t.id))})]}):null]},e.id)}),h>0?(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-done-more`,onClick:()=>e.onViewChange({kind:`lane`,lane:`done`}),children:[(0,F.jsxs)(`span`,{children:[`+ `,h,` more done`]}),(0,F.jsx)(`small`,{children:`Open archive`})]})}):null]}),(0,F.jsx)(`div`,{className:`dashboard-board-lane-add`,children:_?(0,F.jsxs)(`form`,{className:`dashboard-board-add-composer`,onSubmit:e=>{e.preventDefault(),x(t.id)},children:[(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`New ${t.label} task`,disabled:s,"aria-label":`New task for ${t.label}`,onKeyDown:e=>{e.key===`Escape`&&(i(null),o(``))}}),(0,F.jsx)(`button`,{type:`submit`,disabled:s||!a.trim(),children:`Add`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{i(null),o(``)},"aria-label":`Cancel`,children:`×`})]}):(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-add-trigger`,onClick:()=>{i(t.id),o(``)},children:`+ Add task`})})]},t.id)})}):(0,F.jsx)(bh,{lane:le,cards:ae.filter(e=>e.lane===le),runningChipByPort:ce,onBackToOverall:()=>e.onViewChange({kind:`overall`}),onOpenCard:g}),(0,F.jsx)(Oh,{card:oe,busy:_,onClose:()=>g(null),onSave:te})]})}var Lh=[{id:`today`,label:`Today`},{id:`upcoming`,label:`Upcoming`},{id:`recurring`,label:`Recurring`},{id:`blocked`,label:`Blocked`}];function Rh(e){return(0,F.jsxs)(`nav`,{className:`dashboard-schedule-sidebar`,"aria-label":`Schedule groups`,children:[(0,F.jsx)(`header`,{className:`dashboard-schedule-sidebar-header`,children:(0,F.jsx)(`span`,{className:`dashboard-schedule-sidebar-title`,children:`Schedule`})}),(0,F.jsx)(`ul`,{className:`dashboard-schedule-sidebar-list`,children:Lh.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-sidebar-item${e.activeGroup===t.id?` is-active`:``}`,onClick:()=>e.onGroupChange(t.id),"aria-pressed":e.activeGroup===t.id,children:(0,F.jsx)(`span`,{children:t.label})})},t.id))})]})}var zh=`/api/dashboard/schedule`;async function Bh(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}return await e.json()}async function Vh(){let e=await Bh(await fetch(`${zh}/work`,{credentials:`same-origin`}));return Array.isArray(e.items)?e.items:[]}async function Hh(e){return(await Bh(await fetch(`${zh}/work`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(e)}))).item}async function Uh(e,t){return(await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(t)}))).item}async function Wh(e){await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`same-origin`}))}async function Gh(e,t=[]){let n=await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}/dispatch`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify({busyPorts:t})}));return{result:n.result,item:n.item}}async function Kh(){try{let e=await fetch(`/api/heartbeat`,{credentials:`same-origin`});if(!e.ok)return[];let t=await e.json();return Array.isArray(t.jobs)?t.jobs:[]}catch{return[]}}function qh(e){return e.cron?`cron ${e.cron}`:e.runAt?`at ${e.runAt}`:e.enabled?`manual`:`disabled`}function Jh(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)([]),[a,o]=(0,P.useState)(!1),[s,c]=(0,P.useState)(null),[l,u]=(0,P.useState)(``),[d,f]=(0,P.useState)(!1),[p,m]=(0,P.useState)({}),[h,g]=(0,P.useState)(null),_=(0,P.useRef)(null),v=(0,P.useCallback)(async()=>{try{i(await Vh())}catch{}},[]);(0,P.useEffect)(()=>{if(!e.active)return;let t=!1;return Promise.all([Kh(),Vh().catch(()=>[])]).then(([e,r])=>{t||(n(e),i(r),o(!0))}),()=>{t=!0}},[e.active]),(0,P.useEffect)(()=>{if(!h)return;let e=e=>{_.current&&(_.current.contains(e.target)||g(null))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[h]);let y=(0,P.useCallback)(async e=>{let t=l.trim();if(!(!t||d)){f(!0);try{await Hh({title:t,group:e}),u(``),c(null),await v()}catch{}finally{f(!1)}}},[l,d,v]),b=(0,P.useCallback)(async(e,t)=>{g(null);try{await Uh(e,{group:t}),await v()}catch{}},[v]),x=(0,P.useCallback)(async e=>{try{await Wh(e),await v()}catch{}},[v]),S=(0,P.useCallback)(async t=>{try{let n=e.busyPorts,{result:r}=await Gh(t,Array.isArray(n)?n:n?Array.from(n):[]);m(e=>({...e,[t]:r})),await v()}catch{}},[e.busyPorts,v]);return(0,F.jsxs)(`section`,{className:`dashboard-schedule-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-schedule-workspace-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{children:`Automations`}),(0,F.jsx)(`p`,{className:`dashboard-schedule-workspace-subtitle`,children:`Manager-owned scheduled work. The dashboard ticks once a minute and dispatches due items.`})]}),(0,F.jsx)(ui,{topic:`schedule`,label:`Open Automations help`,onOpen:e.onOpenHelpTopic}),t.length>0?(0,F.jsxs)(`p`,{className:`dashboard-schedule-legacy-notice`,role:`note`,children:[`⚠️ `,t.length,` legacy heartbeat job(s) detected in this instance's `,(0,F.jsx)(`code`,{children:`heartbeat.json`}),`. They are no longer auto-fired by the manager — migrate them into Automations.`]}):null]}),(0,F.jsx)(`div`,{className:`dashboard-schedule-groups`,children:Lh.map(t=>{let n=r.filter(e=>e.group===t.id).filter(e=>e.enabled),i=n.length,o=s===t.id;return(0,F.jsxs)(`div`,{className:`dashboard-schedule-group${e.activeGroup===t.id?` is-focused`:``}`,children:[(0,F.jsxs)(`header`,{className:`dashboard-schedule-group-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-schedule-group-title`,children:t.label}),(0,F.jsx)(`span`,{className:`dashboard-schedule-group-count`,children:i})]}),(0,F.jsx)(`ul`,{className:`dashboard-schedule-items`,children:a?i===0?(0,F.jsx)(`li`,{className:`dashboard-schedule-empty`,children:`No items`}):(0,F.jsx)(F.Fragment,{children:n.map(e=>{let t=p[e.id],n=e.lastRunAt?`last ${e.lastRunAt.slice(11,16)}`:null,r=e.lastStatus||null;return(0,F.jsxs)(`li`,{className:`dashboard-schedule-item`,"data-persisted":`true`,"data-dispatch-status":t?.status||``,children:[(0,F.jsx)(`span`,{className:`dashboard-schedule-item-name`,children:e.title}),(0,F.jsxs)(`span`,{className:`dashboard-schedule-item-meta`,children:[qh(e),` • saved`,e.targetPort==null?``:` • :${e.targetPort}`,n?` • ${n}`:``,r?` • ${r}`:``,t?` • ${t.status}`:``]}),(0,F.jsxs)(`span`,{className:`dashboard-schedule-item-actions`,"data-open":h===e.id?`true`:`false`,children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-run-now`,onClick:()=>void S(e.id),"aria-label":`Run now`,title:`Dispatch to target instance (queued if busy)`,children:`Run`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-item-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>g(t=>t===e.id?null:e.id),"aria-haspopup":`menu`,"aria-expanded":h===e.id,"aria-label":`Move scheduled work`,children:`Move`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-item-action`,"data-danger":`true`,onClick:()=>void x(e.id),"aria-label":`Delete`,children:`Delete`}),h===e.id&&(0,F.jsx)(`div`,{ref:_,className:`dashboard-schedule-popover`,role:`menu`,children:Lh.map(t=>(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-schedule-popover-item${t.id===e.group?` is-current`:``}`,role:`menuitem`,disabled:t.id===e.group,onClick:()=>void b(e.id,t.id),children:[t.label,t.id===e.group?` ✓`:``]},t.id))})]})]},e.id)})}):(0,F.jsx)(`li`,{className:`dashboard-schedule-empty`,children:`Loading…`})}),(0,F.jsx)(`div`,{className:`dashboard-schedule-group-add`,children:o?(0,F.jsxs)(`form`,{className:`dashboard-schedule-add-composer`,onSubmit:e=>{e.preventDefault(),y(t.id)},children:[(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`New ${t.label} item`,disabled:d,"aria-label":`New scheduled work for ${t.label}`,onKeyDown:e=>{e.key===`Escape`&&(c(null),u(``))}}),(0,F.jsx)(`button`,{type:`submit`,disabled:d||!l.trim(),children:`Add`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{c(null),u(``)},"aria-label":`Cancel`,children:`×`})]}):(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-add-trigger`,onClick:()=>{c(t.id),u(``)},children:`+ Add scheduled work`})})]},t.id)})})]})}var Yh=1e3;function Xh(e,t){return Qh(e)-Qh(t)||tg(e)-tg(t)||$h(e)-$h(t)||eg(e)-eg(t)||Date.parse(e.sourceCreatedAt)-Date.parse(t.sourceCreatedAt)}function Zh(e,t){let n=e?.manualRank??null,r=t?.manualRank??null;return n===null&&r===null?Yh:n===null&&r!==null?r-Yh:n!==null&&r===null?n+Yh:n!==null&&r!==null?(n+r)/2:Yh}function Qh(e){return e.status===`focused`?0:1}function $h(e){return e.manualRank??2**53-1}function eg(e){let t=[e.remindAt,e.dueAt].filter(e=>!!e).map(e=>Date.parse(e)).filter(e=>Number.isFinite(e));return t.length>0?Math.min(...t):2**53-1}function tg(e){return e.priority===`high`?0:e.priority===`normal`?1:2}var ng=[{id:`urgentImportant`,title:`Important and Urgent`,tone:`red`},{id:`important`,title:`Important, Not Urgent`,tone:`green`},{id:`waiting`,title:`Waiting / Delegated`,tone:`amber`},{id:`later`,title:`Later`,tone:`blue`}],rg={urgentImportant:{listId:`today`,status:`open`,priority:`high`},important:{listId:`today`,status:`open`,priority:`normal`},waiting:{listId:`waiting`,status:`waiting`,priority:`normal`},later:{listId:`later`,status:`open`,priority:`low`}};function ig(e){return rg[e]}function ag(e){return e.status===`done`?null:e.status===`focused`?`urgentImportant`:e.status===`waiting`?`waiting`:e.listId===`later`||e.priority===`low`?`later`:e.priority===`high`?`urgentImportant`:`important`}function og(e,t){return t.filter(t=>ag(t)===e).sort(Xh)}function sg(e,t){return e===`matrix`?t.filter(e=>e.status!==`done`).sort(Xh):e===`done`?t.filter(e=>e.status===`done`).sort(Xh):e===`focused`?og(`urgentImportant`,t):e===`important`?og(`important`,t):e===`waiting`?og(`waiting`,t):e===`later`?og(`later`,t):t.filter(e=>e.status!==`done`).sort(Xh)}function cg(e,t){return sg(e,t).length}function lg(e,t=3){return e.filter(e=>e.status!==`done`).sort(Xh).slice(0,t)}var ug=`application/x-jaw-dashboard-reminder`;function dg(e){return Array.from(e.dataTransfer.types).includes(ug)}function fg(e){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)(null);function a(e,t){if(t.target instanceof HTMLElement&&t.target.closest(`input, textarea, button, [data-reminder-inline-edit="true"]`)){t.preventDefault();return}t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(ug,e.id),n(e.id)}function o(e,t){dg(t)&&(t.preventDefault(),t.dataTransfer.dropEffect=`move`,i(e))}function s(){i(null)}function c(t,r){if(!dg(r))return;r.preventDefault();let a=r.dataTransfer.getData(ug);n(null),i(null),a&&e(a,t)}function l(){n(null),i(null)}return{draggedId:t,dropTarget:r,start:a,over:o,leave:s,drop:c,end:l}}var pg=[{id:`matrix`,label:`Matrix`,detail:`Priority board`},{id:`focused`,label:`Focus`,detail:`Current item`},{id:`important`,label:`Important`,detail:`Not urgent`},{id:`waiting`,label:`Waiting`,detail:`Delegated`},{id:`later`,label:`Later`,detail:`Low urgency`},{id:`done`,label:`Done`,detail:`Completed items`}];function mg(e,t){return!!(e&&e.kind===t.kind&&e.beforeId===t.beforeId&&e.afterId===t.afterId)}function hg(e){return e.length>0?e[e.length-1]??null:null}function gg(e,t){return{kind:`priority`,beforeId:e[t-1]?.id??null,afterId:e[t]?.id??null}}function _g(e){return{kind:`priority`,beforeId:hg(e)?.id??null,afterId:null}}function vg(e,t,n){let r=e.filter(e=>e.id!==t),i=n.beforeId?r.find(e=>e.id===n.beforeId)??null:null,a=n.afterId?r.find(e=>e.id===n.afterId)??null:null;return i||a?{previous:i,next:a}:n.beforeId&&!n.afterId?{previous:hg(r),next:null}:!n.beforeId&&n.afterId?{previous:null,next:r[0]??null}:{previous:hg(r),next:null}}function yg(e){let t=_g(e.items),n=(t,n)=>e.drag.over(t,n),r=(t,n)=>e.drag.drop(t,n);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-sidebar-priority`,"data-drop-target":e.drag.dropTarget?.kind===`priority`?`true`:`false`,onDragOver:e=>n(t,e),onDragLeave:e.drag.leave,onDrop:e=>r(t,e),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Priority Order`}),(0,F.jsx)(`small`,{children:`drag to rank`})]}),(0,F.jsxs)(`ol`,{children:[e.items.map((t,i)=>{let a=gg(e.items,i);return(0,F.jsxs)(`li`,{draggable:!e.loading&&t.status!==`done`,"data-drop-target":mg(e.drag.dropTarget,a)?`true`:void 0,"data-reminder-drop-before-id":a.beforeId??void 0,"data-reminder-drop-after-id":a.afterId??void 0,onDragStart:n=>e.drag.start(t,n),onDragEnd:e.drag.end,onDragOver:e=>{e.stopPropagation(),n(a,e)},onDragLeave:t=>{t.stopPropagation(),e.drag.leave()},onDrop:e=>{e.stopPropagation(),r(a,e)},children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-sidebar-priority-index`,children:i+1}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`b`,{children:t.title}),(0,F.jsxs)(`small`,{children:[t.status,` • `,t.priority]})]})]},t.id)}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-sidebar-priority-empty`,children:`No open reminders`}):null]})]})}function bg(e){let t=e.items.filter(e=>e.status!==`done`).length,n=lg(e.items,5),r=fg((t,n)=>{if(n.kind!==`priority`)return;let{previous:r,next:i}=vg(lg(e.items,e.items.length),t,n);e.onUpdate(t,{manualRank:Zh(r,i)})});return(0,F.jsxs)(`nav`,{className:`dashboard-reminders-sidebar`,"aria-label":`Reminders views`,children:[(0,F.jsxs)(`header`,{className:`dashboard-reminders-sidebar-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-sidebar-title`,children:`Reminders`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-refresh`,onClick:e.onRefresh,disabled:e.loading,children:e.loading?`Loading`:`Refresh`})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminders-source`,"data-state":`ok`,children:[t,` open / `,e.items.length,` total`]}),(0,F.jsx)(yg,{items:n,loading:e.loading,drag:r}),(0,F.jsx)(`ul`,{className:`dashboard-reminders-sidebar-list`,children:pg.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-reminders-sidebar-item${e.view===t.id?` is-active`:``}`,onClick:()=>e.onViewChange(t.id),"aria-pressed":e.view===t.id,children:[(0,F.jsx)(`span`,{children:t.label}),(0,F.jsx)(`small`,{children:t.detail}),(0,F.jsx)(`b`,{children:cg(t.id,e.items)})]})},t.id))})]})}function xg(e){let[t,n]=(0,P.useState)(!1),[r,i]=(0,P.useState)(e.item.title),a=(0,P.useRef)(null);(0,P.useEffect)(()=>{t||i(e.item.title)},[t,e.item.title]),(0,P.useEffect)(()=>{t&&a.current?.select()},[t]);function o(){let t=r.trim();if(n(!1),!t||t===e.item.title){i(e.item.title);return}e.onRename(e.item.id,t)}function s(){i(e.item.title),n(!1)}function c(e){e.key===`Enter`?(e.preventDefault(),o()):e.key===`Escape`&&(e.preventDefault(),s())}return t?(0,F.jsx)(`input`,{ref:a,"data-reminder-inline-edit":`true`,className:`dashboard-reminders-inline-title-input`,"aria-label":`Reminder title`,disabled:e.busy,value:r,onChange:e=>i(e.target.value),onBlur:o,onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),onKeyDown:c}):(0,F.jsx)(`span`,{className:`dashboard-reminders-inline-title`,onDoubleClick:e=>{e.preventDefault(),e.stopPropagation(),n(!0)},children:e.item.title})}function Sg(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(``),[s,c]=(0,P.useState)(``);(0,P.useEffect)(()=>{n(e.item?.title??``),i(e.item?.notes??``),o(Cg(e.item?.dueAt??null)),c(Cg(e.item?.remindAt??null))},[e.item]),(0,P.useEffect)(()=>{if(!e.item)return;let t=t=>{t.key===`Escape`&&e.onClose()};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]);let l=(0,P.useMemo)(()=>e.item?t.trim()!==e.item.title||r!==e.item.notes||a!==Cg(e.item.dueAt)||s!==Cg(e.item.remindAt):!1,[a,r,e.item,s,t]);if(!e.item)return null;let u=e.item;return(0,F.jsx)(`div`,{className:`dashboard-reminder-popover-scrim`,role:`presentation`,onMouseDown:e.onClose,children:(0,F.jsx)(`section`,{className:`dashboard-reminder-popover`,role:`dialog`,"aria-modal":`true`,"aria-label":`Reminder details`,onMouseDown:e=>e.stopPropagation(),children:(0,F.jsxs)(`form`,{onSubmit:n=>{if(n.preventDefault(),!u)return;let i=t.trim();if(!i)return;let o={};if(i!==u.title&&(o.title=i),r!==u.notes&&(o.notes=r),a!==Cg(u.dueAt)&&(o.dueAt=wg(a)),s!==Cg(u.remindAt)&&(o.remindAt=wg(s)),Object.keys(o).length===0){e.onClose();return}e.onSave(u.id,o)},children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Reminder details`}),(0,F.jsx)(`button`,{type:`button`,"aria-label":`Close reminder details`,onClick:e.onClose,children:`×`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Title`}),(0,F.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),"aria-label":`Reminder title`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Notes`}),(0,F.jsx)(`textarea`,{value:r,onChange:e=>i(e.target.value),"aria-label":`Reminder notes`,rows:6})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminder-popover-grid`,children:[(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Due`}),(0,F.jsx)(`input`,{type:`datetime-local`,value:a,onChange:e=>o(e.target.value),"aria-label":`Reminder due date`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Remind`}),(0,F.jsx)(`input`,{type:`datetime-local`,value:s,onChange:e=>c(e.target.value),"aria-label":`Reminder notification date`})]})]}),(0,F.jsxs)(`footer`,{children:[(0,F.jsx)(`button`,{type:`button`,onClick:e.onClose,children:`Cancel`}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.busy||!t.trim()||!l,children:`Save`})]})]})})})}function Cg(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=t.getTimezoneOffset()*6e4;return new Date(t.getTime()-n).toISOString().slice(0,16)}function wg(e){if(!e.trim())return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}var Tg={matrix:`Priority Matrix`,focused:`Focus`,important:`Important, Not Urgent`,waiting:`Waiting / Delegated`,later:`Later`,done:`Done`};function Eg(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Dg(e){let t=[e.status,e.priority],n=Eg(e.remindAt),r=Eg(e.dueAt);return r&&t.push(`due ${r}`),n&&t.push(`remind ${n}`),e.linkedInstance&&t.push(e.linkedInstance),e.notificationStatus!==`pending`&&t.push(e.notificationStatus),t.join(` • `)}function Og(e,t){return!e||e.kind!==t.kind||e.beforeId!==t.beforeId||e.afterId!==t.afterId?!1:e.kind===`bucket`&&t.kind===`bucket`?e.bucket===t.bucket:!0}function kg(e,t,n){return{kind:`bucket`,bucket:e,beforeId:t[n-1]?.id??null,afterId:t[n]?.id??null}}function Ag(e,t,n){return{kind:`bucket`,bucket:e,beforeId:t[n]?.id??null,afterId:t[n+1]?.id??null}}function jg(e,t){return{kind:`bucket`,bucket:e,beforeId:Lg(t)?.id??null,afterId:null}}function Mg(e,t){return{kind:`priority`,beforeId:e[t-1]?.id??null,afterId:e[t]?.id??null}}function Ng(e,t){return{kind:`priority`,beforeId:e[t]?.id??null,afterId:e[t+1]?.id??null}}function Pg(e){return{kind:`priority`,beforeId:Lg(e)?.id??null,afterId:null}}function Fg(e){let t=e.currentTarget.getBoundingClientRect();return e.clientY>t.top+t.height/2}function Ig(e,t){return t.kind===`priority`?lg(e,e.length):og(t.bucket,e)}function Lg(e){return e.length>0?e[e.length-1]??null:null}function Rg(e,t,n){let r=e.filter(e=>e.id!==t),i=n.beforeId?r.find(e=>e.id===n.beforeId)??null:null,a=n.afterId?r.find(e=>e.id===n.afterId)??null:null;return i||a?{previous:i,next:a}:n.beforeId&&!n.afterId?{previous:Lg(r),next:null}:!n.beforeId&&n.afterId?{previous:null,next:r[0]??null}:{previous:Lg(r),next:null}}function zg(e){return e.feed.error?(0,F.jsx)(`p`,{className:`dashboard-reminders-status`,"data-state":`error`,children:e.feed.error}):(0,F.jsxs)(`p`,{className:`dashboard-reminders-status`,children:[e.feed.items.length,` reminder(s) stored in the dashboard database`]})}function Bg(e){let t=e.item.status===`done`,n=e.dropTarget?Og(e.activeDropTarget??null,e.dropTarget):!1;return(0,F.jsxs)(`li`,{className:`dashboard-reminders-row`,"data-priority":e.item.priority,"data-status":e.item.status,"data-drop-target":n?`true`:void 0,"data-reminder-drop-before-id":e.dropTarget?.beforeId??void 0,"data-reminder-drop-after-id":e.dropTarget?.afterId??void 0,draggable:!t&&!e.busy,onDragStart:t=>e.onDragStart?.(e.item,t),onDragEnd:e.onDragEnd,onDragOver:t=>{let n=e.resolveDropTarget?.(t)??e.dropTarget;n&&(t.stopPropagation(),e.onDragOverTarget?.(n,t))},onDragLeave:t=>{e.dropTarget&&(t.stopPropagation(),e.onDragLeaveTarget?.())},onDrop:t=>{let n=e.resolveDropTarget?.(t)??e.dropTarget;n&&(t.stopPropagation(),e.onDropTarget?.(n,t))},children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-row-check`,"aria-label":t?`Mark open`:`Mark done`,onClick:()=>e.onToggleDone(e.item),children:t?`✓`:``}),(0,F.jsxs)(`span`,{className:`dashboard-reminders-row-content`,children:[(0,F.jsx)(xg,{item:e.item,busy:e.busy,onRename:e.onRename}),(0,F.jsx)(`small`,{children:Dg(e.item)})]}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-row-more`,"aria-label":`Open reminder details`,onClick:()=>e.onOpenDetails(e.item),children:`•••`}),e.item.priority===`high`?(0,F.jsx)(`span`,{className:`dashboard-reminders-row-flag`,"aria-label":`high priority`,children:`!`}):null]})}function Vg(e){let[t,n]=(0,P.useState)(``);return(0,F.jsxs)(`li`,{className:`dashboard-reminders-create-row`,children:[(0,F.jsx)(`span`,{"aria-hidden":`true`}),(0,F.jsx)(`form`,{onSubmit:r=>{r.preventDefault();let i=t.trim();i&&(e.onCreate({title:i,...rg[e.bucket]}),n(``))},children:(0,F.jsx)(`input`,{"aria-label":`Create ${e.bucket} reminder`,placeholder:`New reminder`,value:t,onChange:e=>n(e.target.value)})})]})}function Hg(e){let t=jg(e.section.id,e.items);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-quadrant`,"data-tone":e.section.tone,"data-drop-target":e.dropTarget?.kind===`bucket`&&e.dropTarget.bucket===e.section.id?`true`:`false`,onDragOver:n=>e.onDragOver(t,n),onDragLeave:e.onDragLeave,onDrop:n=>e.onDrop(t,n),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`h3`,{children:e.section.title}),(0,F.jsx)(`span`,{children:e.items.length})]}),(0,F.jsxs)(`ul`,{children:[e.items.map((t,n)=>{let r=kg(e.section.id,e.items,n);return(0,F.jsx)(Bg,{item:t,busy:e.busy,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,dropTarget:r,resolveDropTarget:t=>Fg(t)?Ag(e.section.id,e.items,n):r,activeDropTarget:e.dropTarget,onDragOverTarget:e.onDragOver,onDragLeaveTarget:e.onDragLeave,onDropTarget:e.onDrop},t.id)}),(0,F.jsx)(Vg,{bucket:e.section.id,onCreate:e.onCreate}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`No reminders`}):null]})]})}function Ug(e){return(0,F.jsxs)(`div`,{className:`dashboard-reminders-matrix-wrap`,children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-axis dashboard-reminders-axis-importance`,children:`Importance`}),(0,F.jsx)(`span`,{className:`dashboard-reminders-axis dashboard-reminders-axis-urgency`,children:`Urgency`}),(0,F.jsx)(`div`,{className:`dashboard-reminders-matrix-board`,children:ng.map(t=>(0,F.jsx)(Hg,{section:t,items:og(t.id,e.items),busy:e.busy,dropTarget:e.dropTarget,onCreate:e.onCreate,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,onDragOver:e.onDragOver,onDragLeave:e.onDragLeave,onDrop:e.onDrop},t.id))})]})}function Wg(e){let t=Pg(e.items);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-top-priority`,"aria-label":`Top priority reminders`,"data-drop-target":e.dropTarget?.kind===`priority`?`true`:`false`,onDragOver:n=>e.onDragOver(t,n),onDragLeave:e.onDragLeave,onDrop:n=>e.onDrop(t,n),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Top Priority 3`}),(0,F.jsxs)(`small`,{children:[e.items.length,`/3`]})]}),(0,F.jsxs)(`ol`,{children:[e.items.map((t,n)=>{let r=Mg(e.items,n);return(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-top-index`,children:n+1}),(0,F.jsx)(Bg,{item:t,busy:e.busy,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,dropTarget:r,resolveDropTarget:t=>Fg(t)?Ng(e.items,n):r,activeDropTarget:e.dropTarget,onDragOverTarget:e.onDragOver,onDragLeaveTarget:e.onDragLeave,onDropTarget:e.onDrop})]},t.id)}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-top-empty`,children:`No top priority reminders`}):null]})]})}function Gg(e){return(0,F.jsxs)(`div`,{className:`dashboard-reminders-smart-list`,"aria-busy":e.loading,children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`h3`,{children:e.title}),(0,F.jsx)(`span`,{children:e.items.length})]}),(0,F.jsx)(`ul`,{children:e.loading&&e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`Loading reminders...`}):e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`No reminders`}):e.items.map(t=>(0,F.jsx)(Bg,{item:t,busy:e.loading,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd},t.id))})]})}function Kg(e){let[t,n]=(0,P.useState)(null),r=sg(e.view,e.feed.items),i=Tg[e.view],a=lg(e.feed.items,3),o=fg((t,n)=>{let r=e.feed.items.find(e=>e.id===t);if(!r)return;let{previous:i,next:a}=Rg(Ig(e.feed.items,n),t,n),o=Zh(i,a);if(n.kind===`priority`){e.onUpdate(t,{manualRank:o});return}let s=ag(r)===n.bucket?{}:ig(n.bucket);e.onUpdate(t,{...s,manualRank:o})}),s=t=>{e.onUpdate(t.id,{status:t.status===`done`?`open`:`done`})},c=(t,n)=>{e.onUpdate(t,{title:n})};return(0,F.jsxs)(`section`,{className:`dashboard-reminders-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-reminders-workspace-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{children:i}),(0,F.jsx)(zg,{feed:e.feed})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminders-workspace-actions`,children:[(0,F.jsx)(ui,{topic:`reminders`,label:`Open Reminders help`,onOpen:e.onOpenHelpTopic}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-sync-button`,onClick:e.onRefresh,disabled:e.feed.loading,children:e.feed.loading?`Loading...`:`Refresh`})]})]}),e.view===`matrix`?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Wg,{items:a,busy:e.feed.loading,dropTarget:o.dropTarget,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end,onDragOver:o.over,onDragLeave:o.leave,onDrop:o.drop}),(0,F.jsx)(Ug,{items:r,busy:e.feed.loading,dropTarget:o.dropTarget,onCreate:e.onCreate,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end,onDragOver:o.over,onDragLeave:o.leave,onDrop:o.drop})]}):(0,F.jsx)(Gg,{title:i,items:r,loading:e.feed.loading,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end}),(0,F.jsx)(Sg,{item:t,busy:e.feed.loading,onClose:()=>n(null),onSave:(t,r)=>{e.onUpdate(t,r),n(null)}})]})}var qg=`/api/dashboard/reminders`;async function Jg(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}if(!(e.headers.get(`content-type`)||``).includes(`application/json`))throw Error(`Reminders API is not available in the running dashboard server. Rebuild and restart the dashboard backend to enable sync.`);return await e.json()}function Yg(e){return{...e,notes:e.notes??``,manualRank:typeof e.manualRank==`number`&&Number.isFinite(e.manualRank)?e.manualRank:null,dueAt:e.dueAt??null,remindAt:e.remindAt??null,linkedInstance:e.linkedInstance??null,subtasks:Array.isArray(e.subtasks)?e.subtasks:[],notificationAttemptedAt:e.notificationAttemptedAt??null,notificationError:e.notificationError??null,instanceId:e.instanceId??null,messageId:e.messageId??null,turnIndex:e.turnIndex??null,port:e.port??null,threadKey:e.threadKey??null,sourceText:e.sourceText??null}}function Xg(e,t){if(`manualRank`in e&&!Object.hasOwn(t,`manualRank`))throw Error(`Manual reminder ordering requires the dashboard backend to be rebuilt and restarted.`)}async function Zg(){let e=await Jg(await fetch(qg,{credentials:`same-origin`,cache:`no-store`}));return{...e,items:Array.isArray(e.items)?e.items.map(Yg):[]}}async function Qg(e){return Yg((await Jg(await fetch(qg,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}))).item)}async function $g(e,t){let n=await Jg(await fetch(`${qg}/${encodeURIComponent(e)}`,{method:`PATCH`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}));return Xg(t,n.item),Yg(n.item)}function e_(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(!1),[a,o]=(0,P.useState)(null),s=(0,P.useCallback)(async()=>{i(!0),o(null);try{n((await Zg()).items||[])}catch(e){o(e.message)}finally{i(!1)}},[]),c=(0,P.useCallback)(async()=>{await s()},[s]),l=(0,P.useCallback)(async e=>{o(null);try{let t=await Qg(e);n(e=>[t,...e.filter(e=>e.id!==t.id)])}catch(e){o(e.message)}},[]),u=(0,P.useCallback)(async(e,t)=>{o(null);try{let r=await $g(e,t);n(t=>t.map(t=>t.id===e?r:t))}catch(e){o(e.message)}},[]);return(0,P.useEffect)(()=>{e.active&&s()},[e.active,s]),{items:t,loading:r,error:a,refresh:c,create:l,update:u}}function t_(e){return e.trim().toLowerCase()}function n_(e,t){let n=t_(e),r=t_(t);if(!r)return 1;if(n.startsWith(r))return 1e3-n.length;let i=n.indexOf(r);if(i>=0)return 700-i;let a=-1,o=0,s=0;for(let e of r){let t=n.indexOf(e,a+1);if(t<0)return null;o=t===a+1?o+1:0,s+=4+o*3-Math.min(t,40)*.1,a=t}return s}function r_(e,t){let n=[{value:e.label,boost:120},{value:e.section,boost:40},...(e.keywords||[]).map(e=>({value:e,boost:80}))],r=null;for(let i of n){let n=n_(i.value,t);if(n==null)continue;let a=n+i.boost;(!r||a>r.score)&&(r={command:e,score:a})}return r}function i_(e,t){return e.map(e=>r_(e,t.trim())).filter(e=>!!e).sort((e,t)=>{if(t.score!==e.score)return t.score-e.score;let n=e.command.section.localeCompare(t.command.section);return n===0?e.command.label.localeCompare(t.command.label):n})}function a_(e,t,n){return n<=0?0:Math.max(0,Math.min(n-1,e+t))}function o_(e){let t=qi(),[n,r]=(0,P.useState)(!1),[i,a]=(0,P.useState)(``),[o,s]=(0,P.useState)(0),c=(0,P.useRef)(null),l=(0,P.useMemo)(()=>i_(t,i),[t,i]),u=l[o]?`notes-command-palette-option-${o}`:void 0;(0,P.useEffect)(()=>{if(!e.active){r(!1);return}function t(e){ih(e)&&(e.preventDefault(),r(e=>!e))}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active]),(0,P.useEffect)(()=>{n&&(a(``),s(0),requestAnimationFrame(()=>c.current?.focus()))},[n]),(0,P.useEffect)(()=>{o>=l.length&&s(Math.max(0,l.length-1))},[o,l.length]),(0,P.useEffect)(()=>{(u?document.getElementById(u):null)?.scrollIntoView({block:`nearest`})},[u]);function d(e){if(!e.disabled){r(!1);try{Promise.resolve(e.run()).catch(e=>{console.warn(`[notes-command-palette]`,e)})}catch(e){console.warn(`[notes-command-palette]`,e)}}}function f(){let e=l[o]?.command;e&&d(e)}function p(e){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`p`){e.preventDefault(),e.stopPropagation();return}e.key===`ArrowDown`?(e.preventDefault(),s(e=>a_(e,1,l.length))):e.key===`ArrowUp`?(e.preventDefault(),s(e=>a_(e,-1,l.length))):e.key===`Enter`?(e.preventDefault(),f()):e.key===`Escape`&&(e.preventDefault(),r(!1))}return n?(0,F.jsx)(`div`,{className:`notes-command-palette-backdrop`,role:`presentation`,onClick:()=>r(!1),"data-notes-palette":!0,children:(0,F.jsxs)(`section`,{className:`notes-command-palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Notes command palette`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,F.jsx)(`input`,{ref:c,className:`notes-command-palette-input`,type:`search`,placeholder:`Run command`,value:i,onChange:e=>{a(e.currentTarget.value),s(0)},onKeyDown:p,"aria-label":`Run Notes command`,"aria-controls":`notes-command-palette-results`,"aria-activedescendant":u}),(0,F.jsxs)(`div`,{id:`notes-command-palette-results`,className:`notes-command-palette-list`,role:`listbox`,"aria-label":`Matching commands`,children:[l.map((e,t)=>{let n=e.command,r=t===o;return(0,F.jsxs)(`button`,{id:`notes-command-palette-option-${t}`,type:`button`,role:`option`,"aria-selected":r,"aria-disabled":n.disabled||void 0,className:`notes-command-palette-item${r?` is-active`:``}${n.disabled?` is-disabled`:``}`,onMouseEnter:()=>s(t),onClick:()=>d(n),children:[(0,F.jsx)(`span`,{className:`notes-command-palette-title`,children:n.label}),(0,F.jsx)(`span`,{className:`notes-command-palette-meta`,children:n.disabledReason||n.section}),n.shortcut&&(0,F.jsx)(`kbd`,{className:`notes-command-palette-shortcut`,children:n.shortcut})]},n.id)}),l.length===0&&(0,F.jsx)(`p`,{className:`notes-command-palette-empty`,children:`No matching commands.`})]}),(0,F.jsxs)(`footer`,{className:`notes-command-palette-footer`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Up/Down`}),` move`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Enter`}),` run`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Esc`}),` close`]})]})]})}):null}function s_(e){return(0,F.jsx)(`section`,{className:`workspace-surface${e.active?` is-active`:``}`,hidden:!e.active,"aria-hidden":!e.active,children:e.children})}function c_(e){let[t,n]=(0,P.useState)(`matrix`),r=e_({active:e.sidebarMode===`reminders`}),i=!!(e.notesModel.tagFilter&&e.notesSelectedPath&&e.notesSelectedNote&&!e.notesSelectedNote.tags?.includes(e.notesModel.tagFilter));return(0,F.jsxs)(Ki,{children:[e.jawCeoVoiceOverlay,(0,F.jsx)(Jr,{sidebarCollapsed:e.sidebarCollapsed,inspectorCollapsed:e.activityDockCollapsed,inspectorHeight:e.activityDockCollapsed?48:e.activityDockHeight,drawerOpen:e.drawerOpen,onCloseDrawer:e.onCloseDrawer,navigator:(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Wr,{onlineCount:e.onlineCount,collapsed:e.sidebarCollapsed,mode:e.sidebarMode,scheduleWorkspaceEnabled:e.scheduleWorkspaceEnabled,remindersWorkspaceEnabled:e.remindersWorkspaceEnabled,onModeChange:e.onSidebarModeChange,onToggleSidebar:e.onToggleSidebar,helpOpen:e.helpOpen,onToggleHelp:e.onToggleHelp}),(0,F.jsx)(`div`,{id:`manager-sidebar-list`,className:`manager-sidebar-list`,children:e.sidebarMode===`settings`?(0,F.jsx)(li,{activeSection:e.settingsSection,locale:e.locale,onSectionChange:e.onSettingsSectionChange}):e.sidebarMode===`notes`?(0,F.jsx)(ua,{tree:e.notesModel.filteredTree,loading:e.notesModel.loading,error:e.notesModel.error,notesRoot:e.notesModel.notesRoot,selectedPath:e.notesSelectedPath,dirtyPath:e.notesDirtyPath,treeWidth:e.notesTreeWidth,mode:e.notesSidebarMode,searchFocusToken:e.notesSearchFocusToken,tagFilter:e.notesModel.tagFilter,selectedHiddenByFilter:i,onModeChange:e.onNotesSidebarModeChange,onOpenSearch:e.onOpenNotesSearch,onSelectedPathChange:e.onNotesSelectedPathChange,onRefreshTree:e.notesModel.refresh,onClearTagFilter:()=>e.notesModel.setTagFilter(null)}):e.sidebarMode===`board`?(0,F.jsx)(vh,{view:e.boardView,onViewChange:e.onBoardViewChange,instances:e.instances,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts}):e.scheduleWorkspaceEnabled&&e.sidebarMode===`schedule`?(0,F.jsx)(Rh,{activeGroup:e.scheduleGroup,onGroupChange:e.onScheduleGroupChange}):e.remindersWorkspaceEnabled&&e.sidebarMode===`reminders`?(0,F.jsx)(bg,{view:t,onViewChange:n,items:r.items,loading:r.loading,onRefresh:()=>void r.refresh(),onUpdate:(e,t)=>void r.update(e,t)}):(0,F.jsx)(Pr,{active:e.selectedInstance,hiddenCount:e.instances.filter(e=>e.hidden).length,collapsed:e.sidebarCollapsed,children:e.instanceListContent})})]}),workbench:(0,F.jsxs)(`div`,{className:`workspace-surface-stack`,children:[(0,F.jsx)(o_,{active:e.sidebarMode===`notes`}),e.lifecycleMessage&&(0,F.jsxs)(`section`,{className:`state lifecycle-state`,role:`status`,children:[(0,F.jsx)(`span`,{children:e.lifecycleMessage}),(0,F.jsx)(`button`,{type:`button`,className:`state-dismiss`,"aria-label":`Dismiss lifecycle message`,onClick:e.onDismissLifecycleMessage,children:`X`})]}),(0,F.jsxs)(`div`,{className:`workspace-surface-layer`,children:[(0,F.jsx)(s_,{active:e.sidebarMode===`instances`,children:(0,F.jsx)(qr,{mode:e.activeDetailTab,onModeChange:e.onDetailTabChange,header:e.workbenchHeader,modeActions:e.jawCeoWorkbenchButton,overview:e.detailContent(`overview`),preview:(0,F.jsx)(oi,{instance:e.selectedInstance,data:e.data,enabled:e.previewEnabled,active:e.sidebarMode===`instances`&&e.activeDetailTab===`preview`,refreshKey:e.previewRefreshKey,theme:e.previewTheme}),logs:e.detailContent(`logs`),settings:e.detailContent(`settings`)})}),(0,F.jsx)(s_,{active:e.sidebarMode===`notes`,children:(0,F.jsx)(fh,{active:e.sidebarMode===`notes`,selectedPath:e.notesSelectedPath,selectedNote:e.notesSelectedNote,vaultIndex:e.notesModel.index,viewMode:e.notesViewMode,authoringMode:e.notesAuthoringMode,wordWrap:e.notesWordWrap,treeWidth:e.notesTreeWidth,tagFilter:e.notesModel.tagFilter,onOpenSidebarSearch:e.onOpenNotesSearch,onSelectedPathChange:e.onNotesSelectedPathChange,onDirtyPathChange:e.onNotesDirtyPathChange,onViewModeChange:e.onNotesViewModeChange,onAuthoringModeChange:e.onNotesAuthoringModeChange,onWordWrapChange:e.onNotesWordWrapChange,onTreeWidthChange:e.onNotesTreeWidthChange,onTagSelect:e.notesModel.setTagFilter,onWikiLinkNavigate:e.onNotesSelectedPathChange})}),(0,F.jsx)(s_,{active:e.sidebarMode===`settings`,children:(0,F.jsx)(xi,{activeSection:e.settingsSection,ui:e.dashboardSettingsUi,titleSupport:e.titleSupport,onUiPatch:e.onDashboardSettingsPatch,onOpenHelpTopic:e.onOpenHelpTopic})}),(0,F.jsx)(s_,{active:e.sidebarMode===`board`,children:(0,F.jsx)(Ih,{active:e.sidebarMode===`board`,view:e.boardView,onViewChange:e.onBoardViewChange,instances:e.instances,selectedPort:e.selectedInstance?.port??null,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts,onOpenHelpTopic:e.onOpenHelpTopic})}),e.scheduleWorkspaceEnabled?(0,F.jsx)(s_,{active:e.sidebarMode===`schedule`,children:(0,F.jsx)(Jh,{active:e.sidebarMode===`schedule`,activeGroup:e.scheduleGroup,busyPorts:e.busyPorts,onOpenHelpTopic:e.onOpenHelpTopic})}):null,e.remindersWorkspaceEnabled?(0,F.jsx)(s_,{active:e.sidebarMode===`reminders`,children:(0,F.jsx)(Kg,{active:e.sidebarMode===`reminders`,view:t,feed:r,onRefresh:()=>void r.refresh(),onCreate:e=>void r.create(e),onUpdate:(e,t)=>void r.update(e,t),onOpenHelpTopic:e.onOpenHelpTopic})}):null]})]}),inspector:(0,F.jsx)(jr,{collapsed:e.activityDockCollapsed,height:e.activityDockHeight,loading:e.loading,error:e.error,lifecycleMessage:e.lifecycleMessage,selectedInstance:e.selectedInstance,registryMessage:e.registryMessage,events:e.managerEvents,onToggle:e.onToggleActivity,onHeightChange:e.onActivityHeightChange}),sidePanel:e.jawCeoConsoleContent,mobileNav:(0,F.jsx)(Fr,{activeTab:e.activeDetailTab,onOpenInstances:e.onOpenDrawer,onSelectTab:e.onSelectTab,onToggleActivity:e.onToggleActivityFromMobile}),drawer:(0,F.jsx)(Nr,{open:e.drawerOpen,profileFilters:e.drawerProfileFilters,onClose:e.onCloseDrawer,children:e.instanceListContent})})]})}var l_=5e3,u_=1572864,d_=24,f_=`jaw.metricsPanelCollapsed`;async function p_(){let e=await fetch(`/api/dashboard/electron-metrics`);if(!e.ok)throw Error(`electron-metrics failed: ${e.status}`);return await e.json()}function m_(e){return e>=1024*1024?`${(e/1024/1024).toFixed(2)} GB`:`${(e/1024).toFixed(1)} MB`}function h_(e){return e.length>d_?`${e.slice(0,d_-1)}…`:e}function g_(){if(typeof localStorage>`u`)return!1;try{return localStorage.getItem(f_)===`true`}catch{return!1}}function __(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(f_,e?`true`:`false`)}catch{}}function v_(e={}){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(()=>g_());if((0,P.useEffect)(()=>{__(a)},[a]),(0,P.useEffect)(()=>{let e=!1,t=null,r=async()=>{try{let t=await p_();if(e)return;t.available?(n(!0),i(t.snapshot)):(n(!1),i(null))}catch{e||n(!1)}e||(t=setTimeout(r,l_))};return r(),()=>{e=!0,t&&clearTimeout(t)}},[]),t!==!0)return null;if(!r)return(0,F.jsxs)(`div`,{className:`electron-metrics-panel electron-metrics-panel--empty`,"aria-label":`Electron process metrics`,children:[(0,F.jsx)(`div`,{className:`electron-metrics-header`,children:(0,F.jsx)(`span`,{className:`electron-metrics-title`,children:`Desktop metrics`})}),(0,F.jsx)(`div`,{className:`electron-metrics-empty`,children:`awaiting first sample…`})]});let s=[...r.processes].sort((e,t)=>t.rssKb-e.rssKb).slice(0,3),c=r.rssTotalKb>=u_;return(0,F.jsxs)(`div`,{className:`electron-metrics-panel${c?` electron-metrics-panel--warn`:``}`,"aria-label":`Electron process metrics`,children:[(0,F.jsxs)(`div`,{className:`electron-metrics-header`,children:[(0,F.jsx)(`span`,{className:`electron-metrics-title`,children:`Desktop metrics`}),(0,F.jsx)(`button`,{type:`button`,className:`electron-metrics-toggle`,onClick:()=>o(e=>!e),"aria-expanded":!a,"aria-label":a?`Expand metrics panel`:`Collapse metrics panel`,children:a?`▸`:`▾`})]}),!a&&(0,F.jsxs)(`div`,{className:`electron-metrics-body`,children:[c&&(0,F.jsxs)(`div`,{className:`electron-metrics-warn`,children:[(0,F.jsxs)(`span`,{role:`alert`,children:[`Electron RSS total exceeds `,m_(1572864),`.`]}),e.onUnloadPreview&&(0,F.jsx)(`button`,{type:`button`,className:`electron-metrics-unload-btn`,onClick:()=>e.onUnloadPreview?.(),children:`Unload preview`})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`renderers`}),(0,F.jsx)(`span`,{children:r.rendererCount})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`processes`}),(0,F.jsx)(`span`,{children:r.processes.length})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`RSS total`}),(0,F.jsx)(`span`,{children:m_(r.rssTotalKb)})]}),(0,F.jsx)(`div`,{className:`electron-metrics-divider`,"aria-hidden":`true`}),(0,F.jsx)(`div`,{className:`electron-metrics-subtitle`,children:`top by RSS`}),(0,F.jsx)(`ul`,{className:`electron-metrics-list`,children:s.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`electron-metrics-proc`,children:h_(e.name?`${e.type} · ${e.name}`:e.type)}),(0,F.jsx)(`span`,{className:`electron-metrics-proc-rss`,children:m_(e.rssKb)})]},e.pid))})]})]})}var y_=new Set([`notes`,`instances`]);function b_(e){let t=e;return t?.type===`dashboard.invalidate`&&Array.isArray(t.topics)&&t.topics.every(e=>y_.has(e))}function x_(){return(0,P.useEffect)(()=>{function e(e){b_(e.data)&&Zi({...e.data,source:`iframe`})}return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[]),null}var S_=3e4;function C_(){let e=(0,P.useRef)(Date.now());return(0,P.useEffect)(()=>{function t(){document.visibilityState===`visible`&&(Date.now()-e.current<S_||(e.current=Date.now(),Zi({topics:[`notes`,`instances`],reason:`visibility:tab-returned`,source:`visibility`})))}return document.addEventListener(`visibilitychange`,t),()=>document.removeEventListener(`visibilitychange`,t)},[]),null}function w_(e,t){return(e.split(`/`).filter(Boolean).pop()||e).replace(/^\.?cli-jaw-(\d+)-[a-f0-9]{7,}$/i,`cli-jaw $1`).replace(/^\.?cli-jaw-(\d+)$/i,`cli-jaw $1`)||`cli-jaw ${t}`}function T_(e){if(e.label)return e.label;let t=e.instanceId||e.homeDisplay||``;return w_(t.split(`/`).filter(Boolean).pop()||t,e.port)}function E_(e){if(e==null)return`n/a`;let t=Math.floor(e/60);if(t<1)return`${Math.round(e)}s`;let n=Math.floor(t/60);return n<1?`${t}m`:`${n}h ${t%60}m`}var D_=new Set([`schedule`]),O_={BASE_URL:`/dist/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1}.VITE_CLI_JAW_EXPERIMENTAL_DASHBOARD===`1`;function k_(e){return D_.has(e)}function A_(e){return e===`schedule`&&O_||e===`reminders`?e:k_(e)?`instances`:e}function j_(e){return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(x_,{}),(0,F.jsx)(C_,{}),(0,F.jsx)(Zn,{sidebarCollapsed:e.view.sidebarCollapsed,commandBar:(0,F.jsx)(Gn,{query:e.query,loading:e.loading,onQueryChange:e.setQuery,onRefresh:()=>void e.load(),onOpenDrawer:()=>e.view.setDrawerOpen(!0),theme:e.theme.theme,onThemeChange:e.theme.setTheme,onOpenPalette:e.palette.toggle}),workspace:(0,F.jsx)(c_,{sidebarCollapsed:e.view.sidebarCollapsed,activityDockCollapsed:e.view.activityDockCollapsed,activityDockHeight:e.view.activityDockHeight,drawerOpen:e.view.drawerOpen,onCloseDrawer:()=>e.view.setDrawerOpen(!1),onlineCount:e.summary.online||0,sidebarMode:e.view.sidebarMode,scheduleWorkspaceEnabled:O_,remindersWorkspaceEnabled:!0,onSidebarModeChange:e.handleSidebarModeChange,onToggleSidebar:e.handleSidebarToggle,helpOpen:e.helpOpen,onToggleHelp:()=>{e.setHelpTopic(null),e.setHelpOpen(e=>!e)},onOpenHelpTopic:e.onOpenHelpTopic,settingsSection:e.settingsSection,locale:e.view.locale,onSettingsSectionChange:e.setDashboardSettingsSection,notesModel:e.notesModel,notesSelectedPath:e.view.notesSelectedPath,notesSelectedNote:e.notesSelectedNote,notesDirtyPath:e.notesDirtyPath,notesTreeWidth:e.view.notesTreeWidth,notesSidebarMode:e.notesSidebarMode,notesSearchFocusToken:e.notesSearchFocusToken,notesViewMode:e.view.notesViewMode,notesAuthoringMode:e.view.notesAuthoringMode,notesWordWrap:e.view.notesWordWrap,onNotesSidebarModeChange:e.setNotesSidebarMode,onOpenNotesSearch:e.openNotesSidebarSearch,onNotesSelectedPathChange:e.handleNotesSelectedPathChange,onNotesDirtyPathChange:e.setNotesDirtyPath,onNotesViewModeChange:e.handleNotesViewModeChange,onNotesAuthoringModeChange:e.handleNotesAuthoringModeChange,onNotesWordWrapChange:e.handleNotesWordWrapChange,onNotesTreeWidthChange:e.handleNotesTreeWidthChange,boardView:e.boardView,onBoardViewChange:e.setBoardView,scheduleGroup:e.scheduleGroup,onScheduleGroupChange:e.setScheduleGroup,instances:e.instances,selectedInstance:e.selectedInstance,data:e.data,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts,activeDetailTab:e.view.activeDetailTab,onDetailTabChange:e.handleTabChange,workbenchHeader:e.workbenchHeader,detailContent:e.detailContent,previewEnabled:e.previewEnabled,previewRefreshKey:e.previewRefreshKey,previewTheme:e.theme.resolved,lifecycleMessage:e.lifecycleMessage,onDismissLifecycleMessage:e.onDismissLifecycleMessage,instanceListContent:e.instanceListContent,loading:e.loading,jawCeoWorkbenchButton:e.jawCeoWorkbenchButton,jawCeoVoiceOverlay:e.jawCeoVoiceOverlay,jawCeoConsoleContent:e.jawCeoConsoleContent,error:e.error,registryMessage:e.registryMessage,managerEvents:e.activityEvents,onToggleActivity:e.handleActivityToggle,onActivityHeightChange:e.handleActivityHeight,onOpenDrawer:()=>e.view.setDrawerOpen(!0),onSelectTab:e.handleTabChange,onToggleActivityFromMobile:e.activityUnreadOpenAndMarkSeen,drawerProfileFilters:e.drawerProfileFilters,dashboardSettingsUi:e.dashboardSettingsUi,titleSupport:e.titleSupport,onDashboardSettingsPatch:e.handleDashboardSettingsPatch}),activityHeight:e.view.activityDockCollapsed?48:e.view.activityDockHeight}),(0,F.jsx)(Xn,{open:e.palette.open,onClose:e.palette.close,instances:e.instances,getLabel:T_,onSelectInstance:e.handleSelectInstance,theme:e.theme.theme,onCycleTheme:e.cycleTheme,onRefresh:()=>void e.load(),onToggleHidden:()=>{let t=!e.showHidden;e.setShowHidden(t),e.load(t)},showHidden:e.showHidden,onOpenSelected:e.openSelectedInBrowser,selectedInstance:e.selectedInstance}),(0,F.jsx)(v_,{onUnloadPreview:()=>e.setPreviewEnabled(!1)}),(0,F.jsx)(yr,{open:e.helpOpen,topic:e.helpTopic??e.view.sidebarMode,onClose:()=>e.setHelpOpen(!1)}),e.autoUnloadNotice&&(0,F.jsxs)(`div`,{className:`preview-auto-unload-notice`,role:`status`,children:[`Preview was unloaded after 5 minutes of inactivity. Toggle the preview switch to re-enable.`,(0,F.jsx)(`button`,{type:`button`,className:`preview-auto-unload-dismiss`,"aria-label":`Dismiss preview auto-unload notice`,onClick:()=>e.setAutoUnloadNotice(!1),children:`x`})]})]})}function M_(e){if(!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`?!0:!!e.closest(`[contenteditable="true"], .cm-editor, .ProseMirror, [data-milkdown-root]`)}function N_(e){let t=e.instance,n=!!t?.ok,r=e.previewEnabled?`Preview on`:`Preview off`,i=!!(t||e.onOpenHelpTopic);return(0,F.jsxs)(`div`,{className:`detail-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`p`,{className:`eyebrow`,children:`Selected instance`}),(0,F.jsx)(`h2`,{children:t?T_(t):`No instance selected`}),(0,F.jsx)(`span`,{children:t?.workingDir||t?.url||`Select an online instance to inspect it.`}),t?.projectDirs&&t.projectDirs.length>0&&(0,F.jsxs)(`div`,{className:`project-dirs`,children:[(0,F.jsx)(`span`,{className:`label`,children:`Projects:`}),t.projectDirs.map((e,t)=>(0,F.jsx)(`span`,{className:`project-dir`,title:e,children:e.split(/[/\\]/).slice(-2).join(`/`)},t))]})]}),i&&(0,F.jsxs)(`div`,{className:`detail-header-actions`,children:[e.onOpenHelpTopic?(0,F.jsx)(ui,{topic:`instances`,label:`Open Instances help`,onOpen:e.onOpenHelpTopic}):null,t?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{className:`preview-inline-status ${t.ok&&e.previewEnabled?`is-ready`:`is-unavailable`}`,"aria-label":t.ok&&e.previewEnabled?`Preview ready`:`Preview unavailable`,title:t.ok&&e.previewEnabled?`Preview ready`:`Preview unavailable`}),(0,F.jsxs)(`button`,{type:`button`,className:`preview-switch ${e.previewEnabled?`is-on`:`is-off`}`,role:`switch`,"aria-checked":e.previewEnabled,disabled:!n,onClick:()=>e.onPreviewEnabledChange(!e.previewEnabled),children:[(0,F.jsx)(`span`,{className:`preview-switch-track`,"aria-hidden":`true`}),(0,F.jsx)(`span`,{children:r})]}),(0,F.jsx)(`button`,{type:`button`,className:`preview-refresh-button`,disabled:!n||!e.previewEnabled,onClick:e.onPreviewRefresh,children:`Refresh`}),(0,F.jsxs)(`a`,{className:`open-link`,href:t.url,target:`_blank`,rel:`noreferrer`,children:[(0,F.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,stroke:`currentColor`,strokeWidth:`2`,fill:`none`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}),(0,F.jsx)(`polyline`,{points:`15 3 21 3 21 9`}),(0,F.jsx)(`line`,{x1:`10`,y1:`14`,x2:`21`,y2:`3`})]}),`Open`]})]}):null]})]})}var P_=`jaw.previewEnabled`;function F_(){if(typeof localStorage>`u`)return!1;try{let e=localStorage.getItem(P_);return e===null?!1:e===`true`}catch{return!1}}function I_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(P_,e?`true`:`false`)}catch{}}var L_=300*1e3;function R_(e){let{onUnload:t,idleMs:n,doc:r,setTimeout:i,clearTimeout:a,now:o}=e,s=null,c=null,l=!1,u=()=>{l||(l=!0,t())},d=()=>{c=o(),s=i(()=>{s=null,u()},n)},f=()=>{s!==null&&(a(s),s=null)},p=()=>{if(l)return;if(r.hidden){c===null&&d();return}let e=c===null?0:o()-c;f(),c=null,e>=n&&u()};return r.hidden&&d(),r.addEventListener(`visibilitychange`,p),r.addEventListener(`resume`,p),()=>{r.removeEventListener(`visibilitychange`,p),r.removeEventListener(`resume`,p),f()}}function z_(e){let{enabled:t,onUnload:n,idleMs:r=L_}=e,i=(0,P.useRef)(n);i.current=n,(0,P.useEffect)(()=>{if(t&&!(typeof document>`u`))return R_({onUnload:()=>i.current(),idleMs:r,doc:document,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),now:()=>Date.now()})},[t,r])}function B_(e){let t={ready:0,legacy:0,offline:0,byPort:e};for(let n of Object.values(e))t[n]+=1;return t}function V_(e,t){return{selectedPort:e.selectedPort,selectedTab:e.activeDetailTab,sidebarCollapsed:e.sidebarCollapsed,activityDockCollapsed:e.activityDockCollapsed,activityDockHeight:e.activityDockHeight,activitySeenAt:null,activitySeenByPort:{},uiTheme:t,locale:e.locale,sidebarMode:e.sidebarMode,notesSelectedPath:e.notesSelectedPath,notesViewMode:e.notesViewMode,notesAuthoringMode:e.notesAuthoringMode,notesWordWrap:e.notesWordWrap,notesTreeWidth:e.notesTreeWidth,showLatestActivityTitles:e.showLatestActivityTitles,showInlineLabelEditor:e.showInlineLabelEditor,showSidebarRuntimeLine:e.showSidebarRuntimeLine,showSelectedRowActions:e.showSelectedRowActions,dashboardShortcutsEnabled:e.dashboardShortcutsEnabled,dashboardShortcutKeymap:e.dashboardShortcutKeymap}}function H_(e,t,n){let r=(0,P.useRef)(t);r.current=t;let i=(0,P.useRef)(void 0);(0,P.useEffect)(()=>Qi(e,()=>{clearTimeout(i.current),i.current=setTimeout(()=>r.current(),100)},n),[e,n])}var U_=5e3;function W_(e){let t=(0,P.useRef)(null);(0,P.useEffect)(()=>{if(!e)return;let n=!1;async function r(){try{let e=await m();if(n)return;t.current!==null&&e!==t.current&&Zi({topics:[`notes`],reason:`notes:external-change`,source:`visibility`,sourceId:`external-sync`}),t.current=e}catch{}}r();let i=setInterval(()=>void r(),U_);return()=>{n=!0,clearInterval(i)}},[e])}function G_(e){for(let t of e){if(t.kind===`file`)return t.path;let e=G_(t.children||[]);if(e)return e}return null}function K_(e,t){for(let n of e)if(n.kind===`file`&&n.path===t||K_(n.children||[],t))return!0;return!1}function q_(e,t){let n=[];for(let r of e){if(r.kind===`file`){t.has(r.path)&&n.push(r);continue}let e=q_(r.children||[],t);e.length>0&&n.push({...r,children:e})}return n}function J_(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(!1),[s,c]=(0,P.useState)(null),[l,u]=(0,P.useState)(null),[d,f]=(0,P.useState)(null),p=(0,P.useRef)(0),m=(0,P.useRef)(e.selectedPath),h=(0,P.useRef)(e.onSelectedPathChange);m.current=e.selectedPath,h.current=e.onSelectedPathChange,W_(e.active),(0,P.useEffect)(()=>{!e.active||l||T().then(e=>u(e.root)).catch(()=>{})},[e.active,l]);let g=(0,P.useCallback)(async(e=m.current)=>{let t=p.current+1;p.current=t,o(!0),c(null);try{let[r,a]=await Promise.all([ae(),le()]);if(t!==p.current)return;n(r),i(a);let o=e&&K_(r,e)?e:G_(r);o!==m.current&&h.current(o)}catch(e){t===p.current&&c(e.message)}finally{t===p.current&&o(!1)}},[]);return H_(`notes`,()=>{e.active&&g()},`notes-sidebar`),(0,P.useEffect)(()=>{e.active&&g()},[e.active,g]),{tree:t,filteredTree:(0,P.useMemo)(()=>{if(!d||!r)return t;let e=new Set;for(let t of r.notes)t.tags&&t.tags.includes(d)&&e.add(t.path);return e.size===0?[]:q_(t,e)},[d,t,r]),index:r,loading:a,error:s,notesRoot:l,tagFilter:d,setTagFilter:f,refresh:g}}var Y_=new Set([`instances`,`board`,`schedule`,`reminders`,`notes`,`settings`]);function X_(e){let t=new URLSearchParams(e).get(`sidebar`);return Y_.has(t)?t:null}function Z_(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(null),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(null),c=(0,P.useCallback)(e=>(t(e.registry),r(e.status),s(e.status.error),e),[]);return{registry:e,status:n,saving:i,error:o,apply:c,refresh:(0,P.useCallback)(async()=>{try{return c(await Pe())}catch(e){throw s(e.message),e}},[c]),save:(0,P.useCallback)(async e=>{a(!0);try{return c(await De(e))}catch(e){return s(e.message),null}finally{a(!1)}},[c])}}function Q_(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(`overview`),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(!1),[c,l]=(0,P.useState)(!1),[u,d]=(0,P.useState)(150),[f,p]=(0,P.useState)(`instances`),[m,h]=(0,P.useState)(null),[g,_]=(0,P.useState)(`raw`),[v,y]=(0,P.useState)(`plain`),[b,x]=(0,P.useState)(!0),[S,ee]=(0,P.useState)(280),[te,C]=(0,P.useState)(!0),[ne,re]=(0,P.useState)(!0),[ie,ae]=(0,P.useState)(!0),[oe,se]=(0,P.useState)(!0),[ce,le]=(0,P.useState)(!0),[w,T]=(0,P.useState)({...$n}),[ue,de]=(0,P.useState)(`ko`);function fe(e){T(nr(e))}return{selectedPort:e,setSelectedPort:t,activeDetailTab:n,setActiveDetailTab:r,drawerOpen:i,setDrawerOpen:a,sidebarCollapsed:o,setSidebarCollapsed:s,activityDockCollapsed:c,setActivityDockCollapsed:l,activityDockHeight:u,setActivityDockHeight:d,sidebarMode:f,setSidebarMode:p,notesSelectedPath:m,setNotesSelectedPath:h,notesViewMode:g,setNotesViewMode:_,notesAuthoringMode:v,setNotesAuthoringMode:y,notesWordWrap:b,setNotesWordWrap:x,notesTreeWidth:S,setNotesTreeWidth:ee,showLatestActivityTitles:te,setShowLatestActivityTitles:C,showInlineLabelEditor:ne,setShowInlineLabelEditor:re,showSidebarRuntimeLine:ie,setShowSidebarRuntimeLine:ae,showSelectedRowActions:oe,setShowSelectedRowActions:se,dashboardShortcutsEnabled:ce,setDashboardShortcutsEnabled:le,dashboardShortcutKeymap:w,setDashboardShortcutKeymap:fe,locale:ue,setLocale:de}}function $_(e){return e.kind===`instance-message`&&e.role===`assistant`}function ev(e){if(e.kind===`instance-message`)return[e.kind,e.port,e.messageId].join(`|`);let t=`port`in e?String(e.port):``,n=`message`in e?e.message:`reason`in e&&typeof e.reason==`string`?e.reason:``;return[e.kind,t,e.at,n].join(`|`)}function tv(e){return e.reduce((e,t)=>e?Date.parse(t.at)>Date.parse(e)?t.at:e:t.at,null)}function nv(e,t){return tv(e.filter(e=>`port`in e&&e.port===t))}function rv(e,t,n={},r=null){let i=new Set,a={};for(let t of e){if(!(`port`in t)||r!=null&&t.port===r||!$_(t))continue;let e=n[t.port]||null;if(e&&Date.parse(t.at)<=Date.parse(e))continue;let o=ev(t);i.has(o)||(i.add(o),a[t.port]=(a[t.port]||0)+1)}return a}function iv(e){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)({}),a=(0,P.useMemo)(()=>rv(e.events,t,r,e.activePreviewPort),[e.events,t,r,e.activePreviewPort]);function o(e,t){n(e),i(Object.fromEntries(Object.entries(t).map(([e,t])=>[Number(e),t])))}function s(t){let n=nv(e.events,t);if(!n)return;let a=r[t]||null;if(a&&Date.parse(n)<=Date.parse(a))return;let o={...r,[t]:n};i(o),e.saveUi({activitySeenByPort:Object.fromEntries(Object.entries(o).map(([e,t])=>[String(e),t]))})}function c(){let t=tv(e.events),a={...r};for(let t of e.events){if(!(`port`in t))continue;let e=a[t.port];(!e||Date.parse(t.at)>Date.parse(e))&&(a[t.port]=t.at)}n(t),i(a),e.setActivityDockCollapsed(!1),e.saveUi({activityDockCollapsed:!1,activitySeenAt:t,activitySeenByPort:Object.fromEntries(Object.entries(a).map(([e,t])=>[String(e),t]))})}function l(){e.setActivityDockCollapsed(!0),e.saveUi({activityDockCollapsed:!0,activitySeenAt:t,activitySeenByPort:Object.fromEntries(Object.entries(r).map(([e,t])=>[String(e),t]))})}return{unreadByPort:a,hydrateSeenAt:o,markPortSeen:s,openAndMarkSeen:c,closeAndPersistSeen:l}}var av=[`auto`,`dark`,`light`];function ov(e){return typeof e==`string`&&av.includes(e)}function sv(){if(typeof document>`u`)return`auto`;let e=document.documentElement.getAttribute(`data-theme`);return ov(e)?e:`auto`}var cv=`jaw.uiTheme`;function lv(e){if(!(typeof document>`u`)){document.documentElement.setAttribute(`data-theme`,e);try{typeof localStorage<`u`&&localStorage.setItem(cv,e)}catch{}}}function uv(e){let[t,n]=(0,P.useState)(sv),[r,i]=(0,P.useState)(()=>dv(t));return(0,P.useEffect)(()=>{lv(t),i(dv(t))},[t]),(0,P.useEffect)(()=>{if(t!==`auto`||typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-color-scheme: light)`),n=()=>i(e.matches?`light`:`dark`);return typeof e.addEventListener==`function`?(e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)):(e.addListener(n),()=>e.removeListener(n))},[t]),{theme:t,resolved:r,setTheme:(0,P.useCallback)(t=>{ov(t)&&(n(t),lv(t),i(dv(t)),e(t))},[e]),syncFromRegistry:(0,P.useCallback)(e=>{ov(e)&&(n(e),lv(e),i(dv(e)))},[])}}function dv(e){return e===`dark`?`dark`:e===`light`||typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function fv(){return typeof navigator>`u`?!1:/Mac|iPod|iPhone|iPad/.test(navigator.platform||``)}function pv(e){return e.key!==`k`&&e.key!==`K`?!1:fv()?e.metaKey:e.ctrlKey}function mv(){let[e,t]=(0,P.useState)(!1),n=(0,P.useCallback)(()=>t(e=>!e),[]),r=(0,P.useCallback)(()=>t(!1),[]);return(0,P.useEffect)(()=>{function e(e){pv(e)&&(e.preventDefault(),t(e=>!e))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),{open:e,setOpen:t,toggle:n,close:r}}function hv(e,t){let[n,r]=(0,P.useState)(null);return{error:n,saveInstanceLabel:(0,P.useCallback)(async(n,i)=>{let a=i?.trim()||null;if(!await e({instances:{[String(n)]:{label:a}}})){let e=`instance label save failed`;throw r(e),Error(e)}r(null),t(e=>e&&{...e,instances:e.instances.map(e=>e.port===n?{...e,label:a}:e)})},[e,t])}}var gv=5e3,_v=200;function vv(e){if(!e)return null;if(`latestAssistant`in e){let t=e.latestAssistant,n=e.activity;return!t||!n||n.role!==`assistant`||n.messageId!==t.id?null:t}return e.role===`assistant`&&Number.isInteger(e.id)?e:null}function yv(e){return!e||!(`activity`in e)?null:e.activity?.title||null}function bv(e){return e&&(`activity`in e||`latestAssistant`in e)?`ready`:`legacy`}var xv=120*6e4;function Sv(e){let t=e.includes(`T`)?e:e.replace(` `,`T`);return Date.parse(t.endsWith(`Z`)?t:t+`Z`)}function Cv(e){if(!e||!(`activity`in e))return!1;let t=e.activity;if(!t||t.role!==`user`)return!1;let n=Sv(t.updatedAt);return Number.isNaN(n)?!1:Date.now()-n<xv}async function wv(e){let t=await fetch(`/i/${e}/api/messages/latest?includeContent=1`);if(!t.ok)return{latest:null,title:null,support:`offline`,busy:!1};let n=await t.json();return{latest:vv(n.data),title:yv(n.data),support:bv(n.data),busy:Cv(n.data)}}function Tv(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)({}),[a,o]=(0,P.useState)({}),[s,c]=(0,P.useState)(new Set),l=(0,P.useRef)({}),u=(0,P.useMemo)(()=>e.filter(e=>e.ok).map(e=>e.port).sort((e,t)=>e-t),[e]);return(0,P.useEffect)(()=>{let t=!1,r=null;async function a(){if(t)return;let r=new Set(e.map(e=>e.port)),a={};for(let t of e)t.ok||(a[t.port]=`offline`);if(u.length===0){o(a),i(e=>Object.fromEntries(Object.entries(e).filter(([e])=>r.has(Number(e)))));return}let s=await Promise.allSettled(u.map(async e=>({port:e,...await wv(e)}))),d=[],f={},p=new Set;for(let e of s){if(e.status!==`fulfilled`)continue;let{port:t,latest:n,title:r,support:i,busy:o}=e.value;if(o&&p.add(t),a[t]=i,r&&(f[t]=r),!n)continue;let s=l.current[t];l.current[t]=n.id,!(s==null||n.id<=s)&&d.push({kind:`instance-message`,port:t,messageId:n.id,role:n.role,at:n.created_at&&!Number.isNaN(Date.parse(n.created_at))?n.created_at:new Date().toISOString(),...r?{title:r}:{}})}if(!t){for(let e of u)a[e]||(a[e]=`offline`);o(a),c(p),i(e=>{let t={};for(let[n,i]of Object.entries(e)){let e=Number(n);r.has(e)&&a[e]===`ready`&&(t[e]=i)}return{...t,...f}}),d.length>0&&n(e=>{let t=[...e,...d];return t.length>_v&&t.splice(0,t.length-_v),t})}}function s(){r||=setInterval(()=>{a()},gv)}function d(){r&&clearInterval(r),r=null}function f(){document.visibilityState===`visible`?(a(),s()):d()}return a(),s(),document.addEventListener(`visibilitychange`,f),()=>{t=!0,d(),document.removeEventListener(`visibilitychange`,f)}},[u.join(`,`),(0,P.useMemo)(()=>e.map(e=>`${e.port}:${e.ok?`online`:`offline`}`).sort().join(`,`),[e])]),{events:t,titlesByPort:r,titleSupportByPort:a,busyPorts:s}}var Ev=1e4,Dv=200;function Ov(){let[e,t]=(0,P.useState)([]),[n,r]=(0,P.useState)(null),i=(0,P.useRef)(null);async function a(){try{let e=await ee(i.current);if(r(null),e.length===0)return;i.current=e[e.length-1].at,t(t=>{let n=[...t,...e];return n.length>Dv&&n.splice(0,n.length-Dv),n})}catch(e){r(e.message)}}return(0,P.useEffect)(()=>{let e=!1,t=null;async function n(){e||await a()}function r(){t||=setInterval(()=>{n()},Ev)}function i(){t&&clearInterval(t),t=null}function o(){document.visibilityState===`visible`?(n(),r()):i()}return n(),r(),document.addEventListener(`visibilitychange`,o),()=>{e=!0,i(),document.removeEventListener(`visibilitychange`,o)}},[]),{events:e,error:n,refresh:a}}function kv(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Av(e){(0,P.useEffect)(()=>{function t(t){let n=t.data;n?.type===`jaw-preview-stt-recording`&&n.action===`request`&&kv(t.origin)&&(e.status===`active`||e.status===`silent`||e.status===`paused`||e.status===`connecting`)&&e.end()}return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e.status,e.end])}function jv(e){(0,P.useEffect)(()=>{function t(t){if(!e.enabled)return;let n=t.data;if(!n||n.type!==`jaw-preview-shortcut`)return;let r=ar({key:n.key,altKey:!!n.altKey,ctrlKey:!1,metaKey:!1,shiftKey:!!n.shiftKey},e.keymap);r&&e.onAction(r)}return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e])}var Mv=76,Nv=8,Pv=96;function Fv(e){return e?e.scrollHeight-e.scrollTop-e.clientHeight<Pv:!0}function Iv(e){let t=(0,P.useRef)(null),n=(0,P.useRef)(!0),r=(0,P.useRef)(e.count),[{virtualItems:i,totalSize:a},o]=(0,P.useState)({virtualItems:[],totalSize:0}),f=(0,P.useRef)(null);f.current||=new d({count:e.count,getScrollElement:()=>t.current,estimateSize:e.estimateSize||(()=>Mv),overscan:Nv,getItemKey:e.getItemKey,indexAttribute:`data-jaw-ceo-idx`,useAnimationFrameWithResizeObserver:!0,observeElementRect:s,observeElementOffset:c,scrollToFn:l,measureElement:u,onChange:e=>{o({virtualItems:e.getVirtualItems(),totalSize:e.getTotalSize()})}});let p=f.current,m=(0,P.useCallback)(e=>{t.current=e,n.current=Fv(e),p._willUpdate()},[p]),h=(0,P.useCallback)(()=>{n.current=Fv(t.current)},[]),g=(0,P.useCallback)(e=>{e&&p.measureElement(e)},[p]);return(0,P.useEffect)(()=>p._didMount(),[p]),(0,P.useLayoutEffect)(()=>{p.setOptions({...p.options,count:e.count,getItemKey:e.getItemKey,estimateSize:e.estimateSize||(()=>Mv)}),p._willUpdate(),o({virtualItems:p.getVirtualItems(),totalSize:p.getTotalSize()})},[e.count,e.estimateSize,e.getItemKey,p]),(0,P.useLayoutEffect)(()=>{let t=r.current;r.current=e.count,e.count!==0&&(t>0&&!n.current||requestAnimationFrame(()=>{p.scrollToIndex(e.count-1,{align:`end`})}))},[e.count,p]),{scrollRef:m,onScroll:h,measureElement:g,virtualItems:i,totalSize:a}}async function Lv(e,t){let n=await e.text(),r=null;if(n.trim())try{r=JSON.parse(n)}catch{throw Error(`${t}: endpoint returned non-JSON; restart the dashboard server to load the Jaw CEO API`)}if(!e.ok||!r||r.ok===!1){let e=r&&r.ok===!1&&(r.error||r.message)||t;throw Error(e)}return r.data}async function Rv(e,t){return await Lv(await fetch(e),t)}async function zv(e,t={},n=`Jaw CEO request failed`){return await Lv(await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),n)}async function Bv(e,t={},n=`Jaw CEO request failed`){return await Lv(await fetch(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),n)}async function Vv(){return await Rv(`/api/jaw-ceo/state`,`Jaw CEO state fetch failed`)}async function Hv(){return await Rv(`/api/jaw-ceo/settings`,`Jaw CEO settings fetch failed`)}async function Uv(e){return await Bv(`/api/jaw-ceo/settings`,e,`Jaw CEO settings save failed`)}async function Wv(e){let t={text:e.text,selectedPort:e.selectedPort,inputMode:e.inputMode||`text`,responseMode:e.responseMode||`text`};return e.sessionId&&(t.sessionId=e.sessionId),await zv(`/api/jaw-ceo/message`,t,`Jaw CEO message failed`)}async function Gv(e){let t={};return e.ports!==void 0&&(t.ports=e.ports),e.events!==void 0&&(t.events=e.events),e.sinceCursor!==void 0&&(t.sinceCursor=e.sinceCursor),await zv(`/api/jaw-ceo/events/refresh`,t,`Jaw CEO event refresh failed`)}async function Kv(e,t){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/continue`,{mode:t},`Jaw CEO continue failed`)}async function qv(e,t=`short`){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/summarize`,{format:t},`Jaw CEO summarize failed`)}async function Jv(e,t){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/${t}`,{},`Jaw CEO pending update failed`)}async function Yv(e){let t={offerSdp:e.offerSdp,selectedPort:e.selectedPort,responseMode:e.responseMode||`voice`};return e.sessionId&&(t.sessionId=e.sessionId),await zv(`/api/jaw-ceo/voice/connect`,t,`Jaw CEO voice connect failed`)}async function Xv(e){return await zv(`/api/jaw-ceo/voice/${encodeURIComponent(e)}/close`,{},`Jaw CEO voice close failed`)}function Zv(e){if(e?.openaiKeyInvalid)return`Invalid saved key`;if(!e?.openaiKeySet)return`No key saved`;let t=e.openaiKeyLast4?`•••• ${e.openaiKeyLast4}`:`saved`;return e.openaiKeySource===`env`?`Env key ${t}`:e.openaiKeySource===`deps`?`Runtime key ${t}`:`Saved key ${t}`}function Qv(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(``),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(null),c=!!(e?.openaiKeyInvalid||e?.openaiKeySet&&e.openaiKeySource!==`env`);(0,P.useEffect)(()=>{let e=!1;return Hv().then(n=>{e||t(n)}).catch(t=>{e||s(t.message)}),()=>{e=!0}},[]);async function l(){let e=n.trim();if(e){a(!0);try{t(await Uv({openaiApiKey:e})),r(``),s(null)}catch(e){s(e.message)}finally{a(!1)}}}async function u(){a(!0);try{t(await Uv({clearOpenAiApiKey:!0})),r(``),s(null)}catch(e){s(e.message)}finally{a(!1)}}return(0,F.jsx)(`section`,{className:`jaw-ceo-settings-panel`,"aria-label":`Jaw CEO settings`,children:(0,F.jsxs)(`form`,{className:`jaw-ceo-settings-form`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-settings-status`,children:[(0,F.jsx)(`strong`,{children:`Realtime voice`}),(0,F.jsx)(`span`,{children:Zv(e)})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`OpenAI API key`}),(0,F.jsx)(`input`,{value:n,type:`password`,autoComplete:`off`,spellCheck:!1,placeholder:e?.openaiKeySet?`sk-... replace saved key`:`sk-...`,onChange:e=>r(e.target.value)})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-settings-meta`,children:[(0,F.jsx)(`span`,{children:e?.model||`gpt-realtime-2`}),(0,F.jsx)(`span`,{children:e?.voice||`marin`})]}),e?.openaiKeyInvalid?(0,F.jsx)(`p`,{className:`jaw-ceo-inline-error`,children:`Saved value is not an OpenAI API key. Paste a key that starts with sk-.`}):null,o?(0,F.jsx)(`p`,{className:`jaw-ceo-inline-error`,children:o}):null,(0,F.jsxs)(`div`,{className:`jaw-ceo-form-row`,children:[(0,F.jsx)(`button`,{type:`button`,disabled:i||!c,onClick:()=>void u(),children:`Clear saved`}),(0,F.jsx)(`button`,{type:`submit`,disabled:i||!n.trim(),children:i?`Saving`:`Save key`})]})]})})}function $v(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function ey(e){return e.summary||`Worker :${e.port} has a result ready.`}function ty(e){return[{label:e==null?`Inspect dashboard`:`Inspect :${e}`,text:e==null?`What needs attention on this dashboard right now?`:`What is worker :${e} doing right now?`},{label:`Summarize results`,text:`Summarize the worker results and tell me what needs action.`},{label:e==null?`Route work`:`Send to :${e}`,text:e==null?`Create or choose the right worker for this task: `:`Send this task to worker :${e}: `}]}function ny(e){let t=Array.isArray(e.ceo.state.transcript)?e.ceo.state.transcript:[],n=Array.isArray(e.ceo.state.watches)?e.ceo.state.watches:[],r=Array.isArray(e.ceo.audit)?e.ceo.audit:[],i=[...t.map(e=>({kind:`chat`,id:e.id,at:e.at,role:e.role,text:e.text})),...e.ceo.pending.filter(e=>e.status===`pending`||e.status===`spoken`).map(e=>({kind:`result`,id:`result-${e.completionKey}`,at:e.detectedAt,completion:e})),...n.map(e=>({kind:`watch`,id:`watch-${e.watchId}`,at:e.createdAt,watch:e})),...r.slice(-24).map(e=>({kind:`tool`,id:`audit-${e.id}`,at:e.at,record:e}))];return i.sort((e,t)=>{let n=Date.parse(e.at)-Date.parse(t.at);return n===0?e.id.localeCompare(t.id):n}),e.voice.lastTranscript&&i.push({kind:`live`,id:`live-voice-transcript`,at:new Date().toISOString(),text:e.voice.lastTranscript,eventType:e.voice.lastEventType}),i}function ry(e){if(!e)return 76;if(e.kind===`activity-group`)return 52;let t=Math.max(1,e.text.split(/\r?\n/).filter(Boolean).length);return Math.min(220,54+t*18)}function iy(e){let t=[],n=[];function r(){n.length!==0&&(t.push({kind:`activity-group`,id:`activity-${n[0].id}-${n.length}`,at:n[0].at,entries:n}),n=[])}for(let i of e)i.kind===`chat`||i.kind===`live`?(r(),t.push(i)):n.push(i);return r(),t}function ay(e){return e.kind===`result`?`subagent`:e.kind===`watch`?`thinking`:e.record.kind===`tool`?`tool`:e.record.kind===`completion`?`subagent`:`thinking`}function oy(e){return e.kind===`result`?`Worker :${e.completion.port} result`:e.kind===`watch`?`Listening to worker :${e.watch.port}`:e.record.kind===`completion`?`Worker completion`:e.record.kind===`docs_edit`?`Docs edit`:e.record.kind===`lifecycle`?`Lifecycle`:e.record.kind===`policy`?`Policy check`:e.record.action||`Tool use`}function sy(e){return e.kind===`result`?e.completion.resultText||ey(e.completion):e.kind===`watch`?`${e.watch.reason} · fallback ${e.watch.latestMessageFallback.mode}`:e.record.message}function cy(e){return e.kind===`result`?e.completion.detectedAt:e.kind===`watch`?e.watch.createdAt:e.record.at}function ly(e){return e.kind===`tool`&&!e.record.ok}function uy(e){let t=e.reduce((e,t)=>(e[ay(t)]+=1,e),{tool:0,thinking:0,subagent:0});return[t.tool>0?`Tool×${t.tool}`:null,t.thinking>0?`Thinking×${t.thinking}`:null,t.subagent>0?`Subagent×${t.subagent}`:null].filter(Boolean).join(` + `)}function dy(e){let t=e.text.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);if(t.length===0)return(0,F.jsx)(`p`,{children:`...`});let n=[],r=[];function i(){r.length!==0&&(n.push((0,F.jsx)(`ul`,{children:r.map((e,t)=>(0,F.jsx)(`li`,{children:e},`${e}-${t}`))},`ul-${n.length}`)),r=[])}return t.forEach((e,t)=>{let a=e.match(/^[-*]\s+(.+)$/);if(a){r.push(a[1]);return}i(),n.push((0,F.jsx)(`p`,{children:e},`p-${t}`))}),i(),(0,F.jsx)(F.Fragment,{children:n})}function fy(e){return e.tone===`tool`?(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M10.5 2.5 13 5l-2.4 2.4-1.2-1.2-4.8 4.8-1.7.2.2-1.7 4.8-4.8-1.1-1.1L9.2 1.2l1.3 1.3Z`})}):e.tone===`subagent`?(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M3 4.5h10v7H3z`}),(0,F.jsx)(`path`,{d:`M6 4.5V3h4v1.5M5.2 8h.1M10.7 8h.1`})]}):(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M3 4.5h10v7H5.7L3 13.4z`})})}function py(e){return(0,F.jsxs)(`section`,{className:`jaw-ceo-activity-shell`,"aria-label":`CEO activity`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-avatar`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`details`,{className:`jaw-ceo-activity-group`,children:[(0,F.jsxs)(`summary`,{children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-status`,"aria-hidden":`true`}),(0,F.jsx)(`strong`,{children:uy(e.entries)||`Activity`})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-activity-list`,children:e.entries.map(t=>{let n=ay(t);return(0,F.jsxs)(`article`,{className:`jaw-ceo-activity-row tone-${n}${ly(t)?` is-error`:``}`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-dot`,"aria-hidden":`true`}),(0,F.jsx)(`span`,{className:`jaw-ceo-activity-icon`,children:(0,F.jsx)(fy,{tone:n})}),(0,F.jsx)(`span`,{className:`jaw-ceo-activity-badge`,children:n}),(0,F.jsxs)(`div`,{className:`jaw-ceo-activity-copy`,children:[(0,F.jsx)(`strong`,{children:oy(t)}),(0,F.jsx)(`p`,{children:sy(t)}),(0,F.jsx)(`small`,{children:$v(cy(t))})]}),t.kind===`result`?(0,F.jsxs)(`div`,{className:`jaw-ceo-activity-actions`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>e.onOpenWorker(t.completion.port,t.completion.messageId),children:`Open`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.model.summarize(t.completion),children:`Summary`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.model.continueCompletion(t.completion),children:`Continue`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.voice.speakCompletion(t.completion),children:`Speak`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.ceo.ackCompletion(t.completion.completionKey),children:`Ack`})]}):(0,F.jsx)(`span`,{className:`jaw-ceo-trace-chip`,children:`Trace`})]},t.id)})})]})]})}function my(e){let t=e.entry;return t.kind===`activity-group`?(0,F.jsx)(py,{entries:t.entries,model:e.model,ceo:e.ceo,voice:e.voice,onOpenWorker:e.onOpenWorker}):t.kind===`chat`?(0,F.jsxs)(`article`,{className:`jaw-ceo-message-row role-${t.role}`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-message-avatar`,"aria-hidden":`true`,children:t.role===`user`?`You`:t.role===`ceo`?`CEO`:`Log`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-message-bubble`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-message-meta`,children:[(0,F.jsx)(`strong`,{children:t.role===`user`?`You`:t.role===`ceo`?`Jaw CEO`:`Tool output`}),(0,F.jsx)(`small`,{children:$v(t.at)})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-message-text`,children:(0,F.jsx)(dy,{text:t.text})})]})]}):t.kind===`live`?(0,F.jsxs)(`article`,{className:`jaw-ceo-message-row role-ceo is-live`,"aria-live":`polite`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-message-avatar is-live`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-message-bubble`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-message-meta`,children:[(0,F.jsx)(`strong`,{children:`Jaw CEO live`}),(0,F.jsx)(`small`,{children:t.eventType||`realtime`})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-message-text`,children:(0,F.jsx)(dy,{text:t.text})})]})]}):null}function hy(e){let t=(0,P.useMemo)(()=>iy(ny({model:e.model,ceo:e.ceo,voice:e.voice})),[e.model,e.ceo.state.transcript,e.ceo.pending,e.ceo.state.watches,e.ceo.audit,e.voice.lastTranscript,e.voice.lastEventType]),n=(0,P.useCallback)(e=>t[e]?.id||e,[t]),r=(0,P.useCallback)(e=>ry(t[e]),[t]),i=Iv({count:t.length,getItemKey:n,estimateSize:r});return(0,F.jsxs)(`section`,{className:`jaw-ceo-chat-panel`,"aria-label":`Jaw CEO chat`,children:[(0,F.jsx)(`div`,{ref:i.scrollRef,onScroll:i.onScroll,className:`jaw-ceo-chat-log jaw-ceo-timeline is-virtual`,"aria-live":`polite`,children:t.length===0?(0,F.jsxs)(`div`,{className:`jaw-ceo-empty-state`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-empty-kicker`,children:`Ready`}),(0,F.jsx)(`strong`,{children:e.selectedPort==null?`Dashboard context`:`Worker :${e.selectedPort} selected`}),(0,F.jsx)(`div`,{className:`jaw-ceo-quick-prompts`,children:ty(e.selectedPort).map(t=>(0,F.jsx)(`button`,{type:`button`,onClick:()=>e.model.setMessage(t.text),children:t.label},t.label))})]}):(0,F.jsx)(`div`,{className:`jaw-ceo-virtual-spacer`,style:{height:`${i.totalSize}px`},children:i.virtualItems.map(n=>{let r=t[n.index];return r?(0,F.jsx)(`div`,{ref:i.measureElement,className:`jaw-ceo-virtual-row`,"data-jaw-ceo-idx":n.index,style:{transform:`translateY(${n.start}px)`},children:(0,F.jsx)(my,{entry:r,model:e.model,ceo:e.ceo,voice:e.voice,onOpenWorker:e.onOpenWorker})},n.key):null})})}),(0,F.jsxs)(`form`,{className:`jaw-ceo-message-form`,onSubmit:t=>void e.model.submitMessage(t),children:[(0,F.jsx)(`textarea`,{value:e.model.message,rows:3,placeholder:`Send a task to the selected worker or ask about the dashboard.`,onChange:t=>e.model.setMessage(t.target.value)}),(0,F.jsxs)(`div`,{className:`jaw-ceo-form-row`,children:[(0,F.jsxs)(`select`,{value:e.model.responseMode,"aria-label":`Response mode`,onChange:t=>e.model.setResponseMode(t.target.value),children:[(0,F.jsx)(`option`,{value:`text`,children:`Text`}),(0,F.jsx)(`option`,{value:`voice`,children:`Voice`}),(0,F.jsx)(`option`,{value:`both`,children:`Both`}),(0,F.jsx)(`option`,{value:`silent`,children:`Silent`})]}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.ceo.busy||!e.model.message.trim(),children:`Send`})]})]})]})}function gy(e){return e.model.tab===`settings`?(0,F.jsx)(Qv,{}):(0,F.jsx)(hy,{model:e.model,ceo:e.ceo,voice:e.voice,selectedPort:e.selectedPort,onOpenWorker:e.onOpenWorker})}var _y=[{id:`chat`,label:`Chat`},{id:`settings`,label:`Settings`}];function vy(e){return(0,F.jsx)(`div`,{className:`jaw-ceo-tabs`,role:`tablist`,"aria-label":`Jaw CEO console tabs`,children:_y.map(t=>(0,F.jsx)(`button`,{type:`button`,role:`tab`,className:e.active===t.id?`is-active`:``,"aria-selected":e.active===t.id,onClick:()=>e.onChange(t.id),children:(0,F.jsx)(`span`,{children:t.label})},t.id))})}function yy(e){return async t=>{t.preventDefault();let n=e.message.trim();if(n){e.setMessage(``);try{await e.ceo.sendText(n,e.responseMode),e.setTab(`chat`)}catch{}}}}function by(e){return{summarize:async t=>{await e.ceo.summarizeCompletion(t.completionKey,`short`),await e.ceo.refresh(),e.setTab(`chat`)},continueCompletion:async t=>{let n=e.responseMode===`voice`||e.responseMode===`both`||e.responseMode===`silent`?e.responseMode:`text`;await e.ceo.continueCompletion(t.completionKey,n),await e.ceo.refresh(),e.setTab(`chat`)}}}function xy(e){let[t,n]=(0,P.useState)(`chat`),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(`text`),s=by({ceo:e.ceo,responseMode:a,setTab:n});return{tab:t,setTab:n,message:r,setMessage:i,responseMode:a,setResponseMode:o,submitMessage:yy({ceo:e.ceo,message:r,responseMode:a,setMessage:i,setTab:n}),...s}}var Sy=()=>(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M13.2 8a5.2 5.2 0 1 1-1.5-3.7`}),(0,F.jsx)(`path`,{d:`M13.2 3.2v3.2H10`})]}),Cy=()=>(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,width:`17`,height:`17`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`})});function wy(e){return e===`connecting`?`connecting`:e===`active`?`listening`:e===`silent`?`silent`:e===`paused`?`paused`:e===`sleeping`?`sleeping`:e===`disabled`?`disabled`:e===`error`?`error`:`idle`}function Ty(e){return e===`active`||e===`connecting`||e===`silent`}function Ey(e){return e===`active`||e===`connecting`||e===`silent`?`live`:e===`paused`||e===`sleeping`?`paused`:e===`disabled`||e===`error`?`issue`:`idle`}function Dy(e){let t=(0,P.useRef)(null),n=xy({ceo:e.ceo});if((0,P.useEffect)(()=>{if(!e.open)return;t.current?.focus();function n(t){if(t.key===`Escape`){if(Ty(e.voice.status)){t.preventDefault(),e.voice.stop();return}e.onClose()}}return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e]),!e.open)return null;let r=e.selectedPort==null?`Dashboard`:`Worker :${e.selectedPort}`,i=wy(e.voice.status);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`div`,{className:`jaw-ceo-console-overlay`,onClick:e.onClose,"aria-hidden":`true`}),(0,F.jsxs)(`aside`,{className:`jaw-ceo-console`,role:`dialog`,"aria-modal":`true`,"aria-label":`Jaw CEO console`,children:[(0,F.jsxs)(`header`,{className:`jaw-ceo-console-header`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-console-titlebar`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-console-mark status-${e.voice.status}`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-heading`,children:[(0,F.jsx)(`span`,{children:`Dashboard coordinator`}),(0,F.jsx)(`h3`,{children:`Jaw CEO`})]})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-header-actions`,children:[(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-icon-btn`,onClick:()=>void e.ceo.refresh(),"aria-label":`Refresh Jaw CEO`,children:(0,F.jsx)(Sy,{})}),(0,F.jsx)(`button`,{ref:t,type:`button`,className:`jaw-ceo-console-close`,onClick:e.onClose,"aria-label":`Close Jaw CEO`,children:(0,F.jsx)(Cy,{})})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-summary`,"aria-label":`Jaw CEO status summary`,children:[(0,F.jsx)(`span`,{children:r}),(0,F.jsx)(`span`,{children:`Single session`}),(0,F.jsxs)(`span`,{className:`voice-tone-${Ey(e.voice.status)}`,children:[`Voice `,i]})]})]}),(0,F.jsx)(vy,{active:n.tab,onChange:n.setTab}),(0,F.jsx)(`div`,{className:`jaw-ceo-console-body`,children:(0,F.jsx)(gy,{model:n,ceo:e.ceo,voice:e.voice,selectedPort:e.selectedPort,onOpenWorker:e.onOpenWorker})}),(0,F.jsxs)(`footer`,{className:`jaw-ceo-console-footer voice-${e.voice.status}`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-realtime-status`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-realtime-dot`,"aria-hidden":`true`}),(0,F.jsxs)(`span`,{children:[`Voice: `,i,e.voice.error?` - ${e.voice.error}`:``]}),e.voice.lastTranscript?(0,F.jsx)(`small`,{children:e.voice.lastTranscript}):e.voice.lastEventType?(0,F.jsx)(`small`,{children:e.voice.lastEventType}):null]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-voice-action`,onClick:()=>Ty(e.voice.status)?void e.voice.stop():void e.voice.talk(),children:Ty(e.voice.status)?`Stop voice`:`Start voice`})]})]})]})}var Oy=()=>(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M8 2.5a2 2 0 0 0-2 2v3a2 2 0 0 0 4 0v-3a2 2 0 0 0-2-2Z`}),(0,F.jsx)(`path`,{d:`M3.8 7.2a4.2 4.2 0 0 0 8.4 0`}),(0,F.jsx)(`path`,{d:`M8 11.4v2.1`})]});function ky(e){return e===`active`?`voice`:e===`connecting`?`joining`:e===`silent`?`listening`:e===`paused`?`paused`:e===`sleeping`?`sleep`:e===`disabled`?`off`:e===`error`?`error`:`ready`}function Ay(e){let t=e.voiceStatus===`active`||e.voiceStatus===`connecting`||e.voiceStatus===`silent`,n=e.error?`error`:ky(e.voiceStatus),r=e.error?`Jaw CEO error: ${e.error}`:`Open Jaw CEO. Single chat session, voice ${ky(e.voiceStatus)}.`;return(0,F.jsxs)(`div`,{className:`jaw-ceo-workbench-launcher${e.open?` is-open`:``}${t?` is-active`:``}${e.error?` is-error`:``}`,"aria-label":`Jaw CEO launcher`,children:[(0,F.jsxs)(`button`,{type:`button`,className:`jaw-ceo-workbench-button`,"aria-expanded":e.open,title:r,onClick:e.onOpenConsole,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-avatar status-${e.voiceStatus}`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsx)(`span`,{className:`jaw-ceo-workbench-label`,children:`CEO`}),(0,F.jsx)(`span`,{className:`jaw-ceo-workbench-status`,children:n})]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-workbench-icon`,"aria-label":t?`Stop Jaw CEO voice`:`Start Jaw CEO voice`,title:t?`Stop voice`:`Start voice`,disabled:e.busy,onClick:e.onToggleVoice,children:(0,F.jsx)(Oy,{})})]})}function jy(e){return e===`connecting`?`Connecting voice`:e===`silent`?`Listening`:`Voice active`}function My(e){if(e.status!==`connecting`&&e.status!==`active`&&e.status!==`silent`)return null;let t=jy(e.status),n=e.selectedPort==null?`Dashboard`:`Worker :${e.selectedPort}`;return(0,F.jsx)(`div`,{className:`jaw-ceo-voice-overlay status-${e.status}`,role:`status`,"aria-live":`polite`,children:(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-overlay-card`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-wave`,"aria-hidden":`true`,children:[(0,F.jsx)(`span`,{}),(0,F.jsx)(`span`,{}),(0,F.jsx)(`span`,{})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-overlay-copy`,children:[(0,F.jsx)(`strong`,{children:t}),(0,F.jsx)(`span`,{children:e.status===`silent`?`No speech detected. Session is still open.`:n}),e.lastTranscript?(0,F.jsx)(`small`,{children:e.lastTranscript}):e.lastEventType?(0,F.jsx)(`small`,{children:e.lastEventType}):null]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-voice-stop`,"aria-label":`Stop Jaw CEO voice`,onClick:e.onStop,children:`Stop`})]})})}var Ny=5e3;function Py(){return new Date().toISOString()}function Fy(e){return{session:{sessionId:`pending`,inputMode:`text`,responseMode:`text`,selectedPort:e,openedAt:Py(),lastUserActivityAt:Py(),voiceArmed:!1,frontendPresence:`visible`,autoRead:!1},transcript:[],watches:[],pending:[],auditTail:[],voice:{status:`idle`,sessionId:null,model:`gpt-realtime-2`,voice:`marin`,error:null}}}function Iy(e,t){let n=Fy(t);return{...n,...e,session:{...n.session,...e.session??{},selectedPort:e.session?.selectedPort??t},transcript:Array.isArray(e.transcript)?e.transcript:[],watches:Array.isArray(e.watches)?e.watches:[],pending:Array.isArray(e.pending)?e.pending:[],auditTail:Array.isArray(e.auditTail)?e.auditTail:[],voice:{...n.voice,...e.voice??{}}}}function Ly(e){return e.kind===`instance-completed`?`${e.kind}:${e.port}:${e.requestId||``}:${e.messageId||``}:${e.at}`:`${e.kind}:${e.port}:${e.messageId}:${e.role}:${e.at}`}function Ry(e){return e.kind===`instance-message`?{kind:`instance-message`,port:e.port,messageId:e.messageId,role:e.role,at:e.at}:null}function zy(e){let[t,n]=(0,P.useState)(()=>Fy(e.selectedPort)),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(null),[s,c]=(0,P.useState)(null),l=(0,P.useRef)(new Set),u=(0,P.useRef)(t);(0,P.useEffect)(()=>{u.current=t},[t]);let d=(0,P.useCallback)(async()=>{i(e=>e||`refresh`);try{let t=Iy(await Vv(),e.selectedPort),r=Array.from(new Set(t.watches.map(e=>e.port)));r.length>0&&await Gv({ports:r}),n(Iy(await Vv(),e.selectedPort)),o(null)}catch(e){o(e.message)}finally{i(e=>e===`refresh`?null:e)}},[e.selectedPort]);(0,P.useEffect)(()=>{if(!e.documentVisible)return;let t=!1,n=null;async function r(){t||await d()}return r(),n=setInterval(()=>{r()},Ny),()=>{t=!0,n&&clearInterval(n)}},[e.documentVisible,d]),(0,P.useEffect)(()=>{let t=[];for(let n of e.managerEvents){let e=Ry(n);if(!e)continue;let r=Ly(e);l.current.has(r)||(l.current.add(r),t.push(e))}t.length!==0&&(async()=>{try{await Gv({events:t}),await d()}catch(e){o(e.message)}})()},[e.managerEvents,d]);let f=(0,P.useCallback)(async(t,n=`text`)=>{i(`message`);try{let r=await Wv({text:t,responseMode:n,selectedPort:e.selectedPort,...u.current.session.sessionId===`pending`?{}:{sessionId:u.current.session.sessionId}});return c(r.data?.response||r.error?.message||r.message||`Jaw CEO message completed.`),await d(),r}catch(e){let t=e.message;throw o(t),e}finally{i(null)}},[e.selectedPort,d]),p=(0,P.useCallback)(async e=>{i(`ack:${e}`);try{await Jv(e,`ack`),await d()}finally{i(null)}},[d]),m=(0,P.useCallback)(async e=>{i(`dismiss:${e}`);try{await Jv(e,`dismiss`),await d()}finally{i(null)}},[d]);return{state:t,pending:t.pending,audit:t.auditTail,busy:r!==null,error:a,lastResponse:s,refresh:d,sendText:f,continueCompletion:Kv,summarizeCompletion:qv,ackCompletion:p,dismissCompletion:m}}var By={start:[523.25,659.25],silent:[392],stop:[659.25,392],error:[220,196]};function Vy(e){let t=window.AudioContext||window.webkitAudioContext;if(t)try{let n=new t,r=n.currentTime;By[e].forEach((t,i)=>{let a=n.createOscillator(),o=n.createGain(),s=r+i*.085;a.type=e===`silent`?`sine`:`triangle`,a.frequency.setValueAtTime(t,s),o.gain.setValueAtTime(1e-4,s),o.gain.exponentialRampToValueAtTime(e===`silent`?.015:.024,s+.012),o.gain.exponentialRampToValueAtTime(1e-4,s+.105),a.connect(o),o.connect(n.destination),a.start(s),a.stop(s+.12)}),window.setTimeout(()=>void n.close().catch(()=>void 0),420)}catch{}}async function Hy(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`Microphone capture is not available in this browser.`);let t=new RTCPeerConnection,n=t.createDataChannel(`oai-events`);n.onmessage=t=>{try{e.onRealtimeEvent(JSON.parse(t.data))}catch{e.onRealtimeEvent({type:`raw`,text:String(t.data)})}};let r=new MediaStream,i=document.createElement(`audio`);i.autoplay=!0,i.setAttribute(`playsinline`,``),i.srcObject=r,i.className=`jaw-ceo-voice-audio`,i.setAttribute(`aria-hidden`,`true`),document.body.appendChild(i),t.ontrack=e=>{for(let t of e.streams[0]?.getTracks()||[e.track])r.getTracks().includes(t)||r.addTrack(t)};let a=await navigator.mediaDevices.getUserMedia({audio:{noiseSuppression:!0,echoCancellation:!0,autoGainControl:!0}});for(let e of a.getTracks())t.addTrack(e,a);let o=await t.createOffer();if(await t.setLocalDescription(o),!o.sdp)throw Error(`Browser did not create a voice SDP offer.`);let s=await Yv({offerSdp:o.sdp,selectedPort:e.selectedPort,...e.sessionId?{sessionId:e.sessionId}:{},responseMode:`voice`});await t.setRemoteDescription({type:`answer`,sdp:s.answerSdp});function c(){n.close();for(let e of a.getTracks())e.stop();t.close(),i.remove()}function l(e){for(let t of a.getAudioTracks())t.enabled=e}return{sessionId:s.sessionId,peer:t,dataChannel:n,micStream:a,audio:i,setMicEnabled:l,close:c}}var Uy=4e3,Wy=3e4;function Gy(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.type||``);return typeof t.delta==`string`&&(n===`response.audio_transcript.delta`||n===`response.text.delta`||n===`response.output_text.delta`)?t.delta:typeof t.transcript==`string`?t.transcript:typeof t.text==`string`&&(n.includes(`transcript`)||n.includes(`text`))?t.text:typeof t.output==`string`?t.output:null}function Ky(e){return e===`response.audio_transcript.delta`||e===`response.text.delta`||e===`response.output_text.delta`}function qy(e){if(!e||typeof e!=`object`)return null;let t=e.type;return typeof t==`string`?t:null}function Jy(e){let[t,n]=(0,P.useState)(`idle`),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(null),[s,c]=(0,P.useState)(null),l=(0,P.useRef)(null),u=(0,P.useRef)(e),d=(0,P.useRef)(0),f=(0,P.useRef)(Date.now()),p=(0,P.useRef)(0),m=(0,P.useRef)(``);(0,P.useEffect)(()=>{u.current=e},[e]);function h(e,t){f.current=Date.now(),e&&o(e),t&&c(t.length>180?`${t.slice(0,177)}...`:t),n(e=>e===`silent`?`active`:e)}let g=(0,P.useCallback)(async()=>{d.current+=1;let e=l.current;l.current=null,e&&(e.close(),await Xv(e.sessionId).catch(()=>void 0)),n(`sleeping`)},[]),_=(0,P.useCallback)(async()=>{if(t===`connecting`&&!l.current){d.current+=1,Vy(`stop`),n(`paused`);return}l.current?.setMicEnabled(!1),Vy(`stop`),n(`paused`)},[t]),v=(0,P.useCallback)(async()=>{await g(),Vy(`stop`)},[g]),y=(0,P.useCallback)(async()=>{if(l.current){l.current.setMicEnabled(!0),f.current=Date.now(),i(null),Vy(`start`),n(`active`);return}if(t===`connecting`)return;let e=d.current+1;d.current=e,n(`connecting`),i(null),o(null),c(null),m.current=``,Vy(`start`);try{let t=await Hy({selectedPort:u.current.selectedPort,...u.current.sessionId?{sessionId:u.current.sessionId}:{},onRealtimeEvent:e=>{let t=qy(e),n=Gy(e),r=n&&Ky(t)?`${m.current}${n}`:n;n&&Ky(t)&&(m.current=r||``),t===`response.created`&&(m.current=``),h(t,r),r&&u.current.onTranscript(r)}});if(d.current!==e){t.close(),await Xv(t.sessionId).catch(()=>void 0);return}l.current=t,f.current=Date.now(),n(`active`)}catch(t){if(d.current!==e)return;i(t.message),Vy(`error`),n(t.message.includes(`OPENAI_API_KEY`)?`disabled`:`error`),l.current?.close(),l.current=null}},[t]),b=(0,P.useCallback)(async(e,t)=>{let n=e.trim();n&&await Wv({text:n,selectedPort:u.current.selectedPort,...u.current.sessionId?{sessionId:u.current.sessionId}:{},inputMode:`voice`,responseMode:t})},[]),x=(0,P.useCallback)(async e=>{await Kv(e.completionKey,`voice`),u.current.onSpokenCompletion(e.completionKey)},[]);return(0,P.useEffect)(()=>()=>{d.current+=1;let e=l.current;l.current=null,e&&(e.close(),Xv(e.sessionId).catch(()=>void 0))},[]),(0,P.useEffect)(()=>{if(e.documentVisible)return;let t=l.current;t&&(d.current+=1,l.current=null,t.close(),Xv(t.sessionId).catch(()=>void 0),n(`sleeping`))},[e.documentVisible]),(0,P.useEffect)(()=>{if(t!==`active`&&t!==`silent`)return;let e=window.setInterval(()=>{if(!l.current)return;let e=Date.now();e-f.current<Uy||(n(`silent`),e-p.current>=Wy&&(Vy(`silent`),p.current=e))},1e3);return()=>window.clearInterval(e)},[t]),e.autoRead,{status:t,error:r,lastEventType:a,lastTranscript:s,talk:y,stop:_,end:v,sendText:b,speakCompletion:x}}function Yy(){let[e,t]=(0,P.useState)(()=>typeof document>`u`||document.visibilityState===`visible`);return(0,P.useEffect)(()=>{function e(){t(document.visibilityState===`visible`)}return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Xy(e){let[t,n]=(0,P.useState)(!1),r=Yy(),i=(0,P.useMemo)(()=>[...e.managerEvents,...e.messageEvents],[e.managerEvents,e.messageEvents]),a=zy({selectedPort:e.selectedPort,documentVisible:r,managerEvents:i}),o=a.state.session.sessionId===`pending`?null:a.state.session.sessionId,s=Jy({selectedPort:e.selectedPort,...o?{sessionId:o}:{},autoRead:a.state.session.autoRead,documentVisible:r,onTranscript:()=>void 0,onSpokenCompletion:e=>{a.ackCompletion(e)}}),c=s.status===`active`||s.status===`connecting`||s.status===`silent`;return{voice:s,workbenchButton:(0,F.jsx)(Ay,{open:t,voiceStatus:s.status,busy:a.busy,error:a.error||s.error,onOpenConsole:()=>n(!0),onToggleVoice:()=>{c?s.stop():s.talk()}}),voiceOverlay:(0,F.jsx)(My,{status:s.status,selectedPort:e.selectedPort,lastEventType:s.lastEventType,lastTranscript:s.lastTranscript,onStop:()=>void s.stop()}),consoleContent:t?(0,F.jsx)(Dy,{open:!0,selectedPort:e.selectedPort,ceo:a,voice:s,onClose:()=>n(!1),onOpenWorker:e.onOpenWorker}):null}}function Zy(e,t){if(e.length===0)return e;let n=new Set(t.map(e=>e.profileId)),r=e.filter(e=>n.has(e));return r.length===e.length?e:r}function Qy(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(!0),[i,a]=(0,P.useState)(null),[o,s]=(0,P.useState)(``),[c,l]=(0,P.useState)(`all`),[u,d]=(0,P.useState)(``),[f,p]=(0,P.useState)(!1),[m,h]=(0,P.useState)(!1),[g,_]=(0,P.useState)(null),[v,b]=(0,P.useState)(null),[x,S]=(0,P.useState)(null),[ee,te]=(0,P.useState)(null),[C,ne]=(0,P.useState)([]),[re,ie]=(0,P.useState)(!1),[ae,oe]=(0,P.useState)(null),[se,le]=(0,P.useState)(`files`),[w,T]=(0,P.useState)(0),[ue,de]=(0,P.useState)(`display`),[fe,pe]=(0,P.useState)({kind:`overall`}),[me,E]=(0,P.useState)(`today`),[he,ge]=(0,P.useState)(()=>F_()),[_e,ve]=(0,P.useState)(0),[ye,be]=(0,P.useState)(!1),[Se,Ce]=(0,P.useState)(!1),[we,Te]=(0,P.useState)(null),Ee=(0,P.useCallback)(e=>{Te(e),Ce(!0)},[]);(0,P.useEffect)(()=>{I_(he)},[he]),z_({enabled:he,onUnload:()=>{ge(!1),be(!0)}}),(0,P.useEffect)(()=>{if(!ye||typeof document>`u`||document.hidden)return;let e=setTimeout(()=>be(!1),8e3);return()=>clearTimeout(e)},[ye]);let De=Z_(),D=Q_(),Oe=uv(e=>{m&&De.save({ui:{uiTheme:e}})}),ke=mv(),Ae=Ov(),je=e?.instances||[],Me=Tv(je),Ne=hv(De.save,t),Pe=(0,P.useMemo)(()=>e?.manager.profiles||[],[e]),Fe=(0,P.useMemo)(()=>{let e=new Set(Pe.map(e=>e.profileId));return C.filter(t=>e.has(t))},[C,Pe]),Ie=(0,P.useMemo)(()=>{let e=o.trim().toLowerCase();return je.filter(t=>c!==`all`&&t.status!==c||Fe.length>0&&(!t.profileId||!Fe.includes(t.profileId))?!1:e?[String(t.port),t.url,T_(t),t.version,t.workingDir,t.currentCli,t.currentModel,t.healthReason,t.label,t.group,t.profileId].some(t=>String(t||``).toLowerCase().includes(e)):!0)},[Fe,je,o,c]),Le=(0,P.useMemo)(()=>D.selectedPort==null?Ie.find(e=>e.ok)||null:je.find(e=>e.port===D.selectedPort)||null,[Ie,je,D.selectedPort]),Re=Xy({selectedPort:Le?.port??D.selectedPort??null,managerEvents:Ae.events,messageEvents:Me.events,onOpenWorker:Ze});Av(Re.voice),jv({enabled:D.dashboardShortcutsEnabled,keymap:D.dashboardShortcutKeymap,onAction:ft});let ze=D.activeDetailTab===`preview`&&D.sidebarMode===`instances`?Le?.port??null:null,Be=(0,P.useMemo)(()=>[...Ae.events,...Me.events],[Ae.events,Me.events]),Ve=iv({events:Be,activityDockCollapsed:D.activityDockCollapsed,setActivityDockCollapsed:D.setActivityDockCollapsed,saveUi:O,activePreviewPort:ze});function He(){let e=[`auto`,`light`,`dark`],t=e[(e.indexOf(Oe.theme)+1)%e.length];Oe.setTheme(t)}function Ue(){Le&&window.open(Le.url,`_blank`,`noopener,noreferrer`)}(0,P.useEffect)(()=>{document.documentElement.lang=D.locale},[D.locale]),(0,P.useEffect)(()=>{function e(e){e.key!==`?`||e.metaKey||e.ctrlKey||e.altKey||M_(e.target)||(e.preventDefault(),Ee(`shortcuts`))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Ee]);async function We(e=f){r(!0),a(null);try{let n=await y(e),r=Zy(C,n.manager.profiles||[]);r!==C&&(ne(r),De.save({activeProfileFilter:r})),t(n)}catch(e){a(e.message)}finally{r(!1)}}async function Ge(e){let n=await ce(e);n&&t(t=>t&&{...t,instances:t.instances.map(t=>t.port===e?n:t)})}H_(`instances`,()=>void We(),`app`),(0,P.useEffect)(()=>{async function e(){try{let e=await De.refresh(),t=e.registry.ui;D.setSelectedPort(t.selectedPort),D.setActiveDetailTab(t.selectedTab),D.setSidebarCollapsed(t.sidebarCollapsed),D.setActivityDockCollapsed(t.activityDockCollapsed),D.setActivityDockHeight(t.activityDockHeight);let n=A_(X_(window.location.search)??t.sidebarMode);D.setSidebarMode(n),n!==t.sidebarMode&&O({sidebarMode:n}),D.setNotesSelectedPath(t.notesSelectedPath),D.setNotesViewMode(t.notesViewMode),D.setNotesAuthoringMode(t.notesAuthoringMode??`plain`),D.setNotesWordWrap(t.notesWordWrap),D.setNotesTreeWidth(t.notesTreeWidth),D.setShowLatestActivityTitles(t.showLatestActivityTitles),D.setShowInlineLabelEditor(t.showInlineLabelEditor),D.setShowSidebarRuntimeLine(t.showSidebarRuntimeLine),D.setShowSelectedRowActions(t.showSelectedRowActions),D.setDashboardShortcutsEnabled(t.dashboardShortcutsEnabled),D.setDashboardShortcutKeymap(t.dashboardShortcutKeymap),D.setLocale(t.locale),Ve.hydrateSeenAt(t.activitySeenAt??null,t.activitySeenByPort||{}),ne(e.registry.activeProfileFilter||[]),Oe.syncFromRegistry(t.uiTheme)}finally{h(!0),await We()}}e()},[]);async function O(e){!m||e===void 0||await De.save({ui:e})}let Ke=(0,P.useMemo)(()=>je.reduce((e,t)=>(t.profileId&&(e[t.profileId]=(e[t.profileId]||0)+1),e),{}),[je]),qe=(0,P.useMemo)(()=>je.reduce((e,t)=>(e.total+=1,e[t.status]=(e[t.status]||0)+1,e),{total:0}),[je]);function Je(e){let t=C.includes(e)?C.filter(t=>t!==e):[...C,e];ne(t),De.save({activeProfileFilter:t})}function Ye(){return D.activeDetailTab!==`settings`||!re?!0:window.confirm(`Discard unsaved Settings changes?`)}function Xe(e){Ye()&&(ie(!1),Ve.markPortSeen(e.port),D.setSelectedPort(e.port),D.setActiveDetailTab(`preview`),D.setActivityDockCollapsed(!0),D.setDrawerOpen(!1),O({selectedPort:e.port,selectedTab:`preview`,activityDockCollapsed:!0}))}function Ze(e){let t=je.find(t=>t.port===e);t&&Xe(t)}function Qe(e){Ye()&&(ie(!1),Ve.markPortSeen(e.port),D.setSelectedPort(e.port),D.setDrawerOpen(!1),O({selectedPort:e.port}))}function $e(e){if(!(e!==`settings`&&!Ye())){if(e!==`settings`&&ie(!1),D.activeDetailTab===`preview`&&e!==`preview`){let e=D.selectedPort;e!=null&&Ve.markPortSeen(e)}if(D.setActiveDetailTab(e),e===`preview`){let t=D.selectedPort;t!=null&&Ve.markPortSeen(t),D.setActivityDockCollapsed(!0),O({selectedTab:e,activityDockCollapsed:!0});return}O({selectedTab:e})}}function et(){let e=!D.sidebarCollapsed;D.setSidebarCollapsed(e),O({sidebarCollapsed:e})}function tt(){if(D.activityDockCollapsed){Ve.openAndMarkSeen();return}Ve.closeAndPersistSeen()}function nt(e){D.setActivityDockHeight(e),O({activityDockHeight:e})}function rt(e){if(D.sidebarMode===`instances`&&e!==`instances`&&D.activeDetailTab===`preview`){let e=D.selectedPort;e!=null&&Ve.markPortSeen(e)}let t=A_(e);D.setSidebarMode(t),O({sidebarMode:t})}function k(e){D.setNotesSelectedPath(e),O({notesSelectedPath:e})}function it(){le(`search`),T(e=>e+1)}function at(e){D.setNotesViewMode(e),O({notesViewMode:e})}function ot(e){D.setNotesAuthoringMode(e),O({notesAuthoringMode:e})}function st(e){D.setNotesWordWrap(e),O({notesWordWrap:e})}function ct(e){D.setNotesTreeWidth(e),O({notesTreeWidth:e})}let lt=J_({active:D.sidebarMode===`notes`,selectedPath:D.notesSelectedPath,onSelectedPathChange:k}),A=D.notesSelectedPath?lt.index?.notes.find(e=>e.path===D.notesSelectedPath)??null:null;function ut(e){e.showLatestActivityTitles!==void 0&&D.setShowLatestActivityTitles(e.showLatestActivityTitles),e.showInlineLabelEditor!==void 0&&D.setShowInlineLabelEditor(e.showInlineLabelEditor),e.showSidebarRuntimeLine!==void 0&&D.setShowSidebarRuntimeLine(e.showSidebarRuntimeLine),e.showSelectedRowActions!==void 0&&D.setShowSelectedRowActions(e.showSelectedRowActions),e.dashboardShortcutsEnabled!==void 0&&D.setDashboardShortcutsEnabled(e.dashboardShortcutsEnabled),e.dashboardShortcutKeymap!==void 0&&D.setDashboardShortcutKeymap(e.dashboardShortcutKeymap),e.locale!==void 0&&D.setLocale(e.locale),O(e)}function dt(e){if(Ie.length===0)return;let t=Le?.port??null,n=t==null?-1:Ie.findIndex(e=>e.port===t),r=Ie[((n>=0?n:e>0?-1:0)+e+Ie.length)%Ie.length];r&&Qe(r)}function ft(e){if(e===`focusInstances`){rt(`instances`),D.setDrawerOpen(!1);return}if(e===`focusActiveSession`){let e=Le?.ok?Le:Ie.find(e=>e.ok)||null;e?Xe(e):rt(`instances`);return}if(e===`focusNotes`){rt(`notes`),D.setDrawerOpen(!1);return}if(e===`previousInstance`){dt(-1);return}e===`nextInstance`&&dt(1)}(0,P.useEffect)(()=>{function e(e){if((e.ctrlKey||e.metaKey)&&e.key===`f`){let t=document.querySelector(`.preview-frame`);if(t?.contentWindow){e.preventDefault(),t.contentWindow.postMessage({type:`jaw-preview-search`},`*`);return}}if(!D.dashboardShortcutsEnabled||sr(e.target))return;let t=ar(e,D.dashboardShortcutKeymap);t&&(e.preventDefault(),ft(t))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Ie,Le,D.dashboardShortcutsEnabled,D.dashboardShortcutKeymap,D.sidebarMode,D.activeDetailTab,re]);async function pt(e,t){let n=t.lifecycle;if(!n||e===`perm`&&!window.confirm(`Register :${t.port} as a persistent system service? It will auto-start on login and auto-restart on crash.`)||e===`unperm`&&!window.confirm(`Remove persistent service for :${t.port}? The instance will stop and won't auto-start.`))return;if(e===`stop`&&n.owner===`service`){if(!window.confirm(`Stop :${t.port}? This will also remove the persistent service.`))return}else if((e===`stop`||e===`restart`)&&!window.confirm(`${e} :${t.port}?`))return;if(!Ye())return;ie(!1);let r=t.uptime;_(t.port),b(null),S(t.port),te(e);try{let n=e===`start`?u:void 0,i=await xe(e,t.port,n),a=i.expectedStateAfter||(e===`start`||e===`perm`?`online`:e===`stop`||e===`unperm`?`offline`:`restart-detected`);(await $t({port:t.port,expected:a,previousUptime:r,fetchOnce:(e,t)=>ce(e,{signal:t})})).settled||b(`${i.message} (not yet reachable, refresh manually if needed)`),await We(),Zi({topics:[`instances`],reason:`instance:lifecycle`,source:`ui`,sourceId:`app`}),D.setSelectedPort(t.port)}catch(e){b(e.message)}finally{_(null),S(null),te(null)}}let mt=(0,F.jsx)(Ln,{error:i,loading:n,instances:je,filtered:Ie,selectedInstance:Le,data:e,lifecycleBusyPort:g,transitioningPort:x,transitionAction:ee,activityUnreadByPort:Ve.unreadByPort,latestTitleByPort:Me.titlesByPort,busyPorts:Me.busyPorts,showLatestActivityTitles:D.showLatestActivityTitles,showInlineLabelEditor:D.showInlineLabelEditor,showSidebarRuntimeLine:D.showSidebarRuntimeLine,showSelectedRowActions:D.showSelectedRowActions,profiles:Pe,getLabel:T_,formatUptime:E_,onSelect:Qe,onPreview:Xe,onMarkActivitySeen:Ve.markPortSeen,onInstanceLabelSave:Ne.saveInstanceLabel,onLifecycle:(e,t)=>void pt(e,t)}),ht=(0,F.jsx)(N_,{instance:Le,previewEnabled:he,onPreviewEnabledChange:ge,onPreviewRefresh:()=>ve(e=>e+1),onOpenHelpTopic:Ee}),gt=V_(D,Oe.theme),_t=B_(Me.titleSupportByPort);return(0,F.jsx)(j_,{view:D,palette:ke,theme:Oe,query:o,loading:n,showHidden:f,instances:je,selectedInstance:Le,data:e,summary:qe,scheduleGroup:me,boardView:fe,notesModel:lt,notesSelectedNote:A,notesDirtyPath:ae,notesSidebarMode:se,notesSearchFocusToken:w,settingsSection:ue,dashboardSettingsUi:gt,titleSupport:_t,activityEvents:Be,busyPorts:Me.busyPorts,titlesByPort:Me.titlesByPort,lifecycleMessage:v,error:i,registryMessage:De.error||Ne.error||Ae.error,workbenchHeader:ht,detailContent:t=>(0,F.jsx)(Tn,{instance:Le,data:e,activeTab:t,onSettingsDirtyChange:ie,onSettingsSaved:()=>{Le&&Ge(Le.port),Zi({topics:[`instances`],reason:`instance:settings-saved`,source:`ui`,sourceId:`app`})},onRegistryPatch:(e,t)=>{De.save({instances:{[String(e)]:t}}).then(()=>{We(),Zi({topics:[`instances`],reason:`instance:registry-patched`,source:`ui`,sourceId:`app`})})}}),instanceListContent:mt,drawerProfileFilters:(e=>e.length>0?(0,F.jsx)(`div`,{className:`profile-chip-strip drawer-chip-strip`,"aria-label":`Profile filters`,children:e.map(e=>(0,F.jsx)(Rn,{profile:e,active:C.includes(e.profileId),count:Ke[e.profileId]||0,onToggle:Je},e.profileId))}):null)(Pe),jawCeoWorkbenchButton:Re.workbenchButton,jawCeoVoiceOverlay:Re.voiceOverlay,jawCeoConsoleContent:Re.consoleContent,previewEnabled:he,previewRefreshKey:_e,autoUnloadNotice:ye,helpOpen:Se,helpTopic:we,setQuery:s,setShowHidden:p,setPreviewEnabled:ge,setAutoUnloadNotice:be,setHelpOpen:Ce,setHelpTopic:Te,onOpenHelpTopic:Ee,setNotesSidebarMode:le,setBoardView:pe,setScheduleGroup:E,setDashboardSettingsSection:de,load:We,cycleTheme:He,openSelectedInBrowser:Ue,handleSelectInstance:Qe,handleSidebarModeChange:rt,handleSidebarToggle:et,handleNotesSelectedPathChange:k,handleNotesViewModeChange:at,handleNotesAuthoringModeChange:ot,handleNotesWordWrapChange:st,handleNotesTreeWidthChange:ct,openNotesSidebarSearch:it,setNotesDirtyPath:oe,handleTabChange:$e,handleActivityToggle:tt,handleActivityHeight:nt,onDismissLifecycleMessage:()=>b(null),handleDashboardSettingsPatch:ut,activityUnreadOpenAndMarkSeen:Ve.openAndMarkSeen})}var $y=document.getElementById(`manager-root`);if(!$y)throw Error(`manager-root not found`);(0,Qt.createRoot)($y).render((0,F.jsx)(Qy,{}));
|
|
25
|
+
`:gp(e)?(s=2,c=2):yp(e)&&(s=1,c=1);++a<i.length;)o=o.concat(xp(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?mp(i[a+1]):c}));return hp(e)&&ap(t,e,hp)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function Cp(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){fp.lastIndex=a;let e=fp.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Tp(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function wp(e){return[String(e.value)]}function Tp(e,t,n){let r=[],i=0,a;for(;i<e.length;){pp.lastIndex=i;let n=pp.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function Ep(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Dp(e){return!!(e.properties||{}).hidden}function Op(e){return e.tagName===`td`||e.tagName===`th`}function kp(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Ap={},jp=[];function Mp(e){let t=e||Ap;return function(e,n){C(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:jp,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=bp(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=rp(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),Se})}}var Np={}.hasOwnProperty;function Pp(e,t){let n={type:`root`,children:[]},r=Fp({schema:t?{..._,...t}:_,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Fp(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Ip(e,n);case`doctype`:return Lp(e,n);case`element`:return Rp(e,n);case`root`:return zp(e,n);case`text`:return Bp(e,n);default:}}}function Ip(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return qp(r,t),r}}function Lp(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return qp(e,t),e}}function Rp(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Vp(e,t.children),i=Hp(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&Np.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return qp(o,t),o}function zp(e,t){let n={type:`root`,children:Vp(e,t.children)};return qp(n,t),n}function Bp(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return qp(n,t),n}function Vp(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Fp(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function Hp(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&Np.call(r,n)?r[n]:void 0,o=r&&Np.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(Np.call(s,l)){let t=s[l],n=Up(e,Jp(a,l),l,t);n??=Up(e,Jp(o,l),l,t),n!=null&&(c[l]=n)}if(i&&Np.call(i,n)){let e=i[n];for(l in e)Np.call(e,l)&&!Np.call(c,l)&&(c[l]=e[l])}return c}function Up(e,t,n,r){return t?Array.isArray(r)?Wp(e,t,n,r):Gp(e,t,n,r):void 0}function Wp(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Gp(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Gp(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Kp(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Kp(e,t,n){let r=e.schema.protocols&&Np.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function qp(e,t){let n=Ku(t);t.data&&(e.data=df(t.data)),n&&(e.position=n)}function Jp(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function Yp(e){return function(t){return Pp(t,e)}}function Xp(e){v(e,[/\r?\n|\r/g,Zp])}function Zp(){return{type:`break`}}function Qp(){return function(e){Xp(e)}}var $p=Yt();function em(e){let[t,n]=(0,P.useState)(!1),r=Ie(e.code,e.language),i=r.language||`text`;async function a(){try{await navigator.clipboard.writeText(e.code),n(!0),window.setTimeout(()=>n(!1),1200)}catch(e){console.error(`[notes:code-copy]`,e)}}return(0,F.jsxs)(`div`,{className:`notes-code-block`,children:[(0,F.jsx)(`div`,{className:`notes-code-header`,children:(0,F.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,F.jsx)(`pre`,{children:(0,F.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var tm=null;async function nm(){if(!tm){let e=(await i(()=>import(`./mermaid.core-DYHvk6Pd.js`),__vite__mapDeps([0]))).default;e.initialize({startOnLoad:!1,securityLevel:`strict`}),tm=e}return tm}function rm(e){let t=(0,P.useId)().replace(/[^a-zA-Z0-9_-]/g,``),[n,r]=(0,P.useState)({status:`loading`});return(0,P.useEffect)(()=>{let n=!1;async function i(){r({status:`loading`});try{let i=await nm(),s=o(e.code),c=`notes-mermaid-${t}`,l;try{({svg:l}=await i.render(c,s))}catch(e){let t=a(s);if(!t)throw e;({svg:l}=await i.render(`${c}-retry`,t))}n||r({status:`ready`,svg:l})}catch(e){n||r({status:`error`,message:e instanceof Error?e.message:`Mermaid render failed`})}}return i(),()=>{n=!0}},[e.code,t]),n.status===`ready`?(0,F.jsx)(`div`,{className:`notes-mermaid-block is-ready`,dangerouslySetInnerHTML:{__html:n.svg}}):n.status===`error`?(0,F.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,F.jsx)(`strong`,{children:`Mermaid render failed`}),(0,F.jsx)(`span`,{children:n.message}),(0,F.jsx)(`pre`,{children:(0,F.jsx)(`code`,{children:e.code})})]}):(0,F.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function im(e){return we(e)}function am(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];me.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=me.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(Fe(e,r))continue;let l=t.lookup.get(s[0])??he(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=_e(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,P.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=Oe(l);i.push((0,P.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function om(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return P.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=am(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,P.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var sm=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function cm(e){let t=sm.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function lm(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(lm).join(``):(0,P.isValidElement)(e)?lm(e.props.children):``}function um(e){return(0,P.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var dm=e=>{};function fm(e){let t=(0,P.useMemo)(()=>cm(e.markdown).body,[e.markdown]),n=(0,P.useMemo)(()=>({lookup:im(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??dm}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=e=>t=>{let{children:r,node:i,className:a,id:o,style:s}=t,c=om(r,n,e);return(0,P.createElement)(e,{className:a,id:o,style:s},c)};return(0,F.jsx)(kf,{skipHtml:!0,urlTransform:ue,remarkPlugins:[pe,Qp,Le],rehypePlugins:[[Yp,ye],Mp],components:{a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&Te(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,F.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,F.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=um(e),n=lm(e).replace(/\n$/,``);return t===`mermaid`?(0,F.jsx)(rm,{code:n}):(0,F.jsx)(em,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ve(e):``;return r?(0,F.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:r(`p`),li:r(`li`),h1:r(`h1`),h2:r(`h2`),h3:r(`h3`),h4:r(`h4`),h5:r(`h5`),h6:r(`h6`),blockquote:r(`blockquote`),td:r(`td`),th:r(`th`),em:r(`em`),strong:r(`strong`),del:r(`del`)},children:t})}function pm(e){return(0,F.jsx)(F.Fragment,{children:e.widgets.map(e=>(0,$p.createPortal)((0,F.jsx)(fm,{markdown:e.markdown}),e.shell,e.id))})}function mm(e,t,n){return n.selectionFrom<=t&&n.selectionTo>=e}function hm(e,t){return new TextEncoder().encode(e).byteLength<=t.maxSnippetBytes}function gm(e,t,n){e.length>=n.maxWidgets||mm(t.from,t.to,n)||hm(t.markdown,n)&&e.push(t)}function _m(e,t){if(e.length>t.largeNoteDisableThreshold)return[];let n=[],r=0;for(let i of e.matchAll(/^```([^\n`]*)\n[\s\S]*?\n```[ \t]*$/gm)){if(n.length>=t.maxWidgets)break;let e=i.index||0,a=e+i[0].length,o=(i[1]||``).trim().toLowerCase();if(o===`mermaid`){if(r>=t.maxMermaidWidgets)continue;r+=1}gm(n,{from:e,to:a,kind:o===`mermaid`?`mermaid`:`code`,markdown:i[0],block:!0},t)}for(let r of e.matchAll(/^\$\$\n[\s\S]*?\n\$\$[ \t]*$/gm)){if(n.length>=t.maxWidgets)break;let e=r.index||0;gm(n,{from:e,to:e+r[0].length,kind:`math-block`,markdown:r[0],block:!0},t)}for(let r of e.matchAll(/(^|[^$\\])(\$[^$\n]+\$)/g)){if(n.length>=t.maxWidgets)break;let e=r[1].length,i=(r.index||0)+e,a=r[2];gm(n,{from:i,to:i+a.length,kind:`math-inline`,markdown:a,block:!1},t)}return n.sort((e,t)=>e.from-t.from||e.to-t.to)}var vm=class e extends ut{constructor(e){super(),this.options=e}eq(t){return t instanceof e?this.options.id===t.options.id&&this.options.kind===t.options.kind&&this.options.markdown===t.options.markdown:!1}toDOM(){let e=document.createElement(this.options.block?`div`:`span`);return e.className=this.options.block?`cm-rich-widget cm-rich-block`:`cm-rich-widget cm-rich-inline`,e.dataset.richWidgetId=this.options.id,e.dataset.richWidgetKind=this.options.kind,this.options.registerWidget({id:this.options.id,kind:this.options.kind,markdown:this.options.markdown,shell:e}),queueMicrotask(this.options.requestMeasure),e}updateDOM(e){return this.options.registerWidget({id:this.options.id,kind:this.options.kind,markdown:this.options.markdown,shell:e}),queueMicrotask(this.options.requestMeasure),!0}destroy(){this.options.unregisterWidget(this.options.id)}get estimatedHeight(){return this.options.block?96:20}ignoreEvent(){return!1}},ym=50,bm=100,xm=5e4,Sm=5,Cm=1e6,wm=/^([ \t]*[-*+][ \t]+)\[([ xX])\]([ \t]*)(.*)$/,Tm=class e extends ut{constructor(e){super(),this.range=e}eq(t){return t instanceof e&&t.range.markerFrom===this.range.markerFrom&&t.range.checked===this.range.checked&&t.range.text===this.range.text}toDOM(e){let t=document.createElement(`label`);t.className=`cm-rich-task-widget`;let n=document.createElement(`input`);n.type=`checkbox`;let r=document.createElement(`span`);return t.append(n,r),this.syncDOM(t,e),t}updateDOM(e,t){return e.classList.contains(`cm-rich-task-widget`)?(this.syncDOM(e,t),!0):!1}destroy(e){let t=e.querySelector(`input[type="checkbox"]`);t&&(t.onchange=null)}ignoreEvent(e){return e.type===`mousedown`||e.type===`click`||e.type===`change`||e.type===`input`||e.type===`keydown`}syncDOM(e,t){let n=e.querySelector(`input[type="checkbox"]`),r=e.querySelector(`span`);!n||!r||(n.checked=this.range.checked,n.setAttribute(`aria-label`,this.range.text||(this.range.checked?`Checked task`:`Unchecked task`)),n.setAttribute(`aria-checked`,this.range.checked?`true`:`false`),n.onchange=()=>{t.dispatch({changes:{from:this.range.markerFrom,to:this.range.markerFrom+3,insert:n.checked?`[x]`:`[ ]`},userEvent:`input.task-toggle`})},r.textContent=this.range.text||`Task`)}};function Em(e){return`rich-${e.kind}-${e.from}-${e.to}-${e.markdown.length}`}function Dm(e){let t=[],n=e.selection.main,r=!1;for(let i=1;i<=e.doc.lines&&!(t.length>=bm);i+=1){let a=e.doc.line(i);if(/^```/.test(a.text.trim())){r=!r;continue}if(r||n.from<=a.to&&n.to>=a.from)continue;let o=a.text.match(wm);o&&t.push({from:a.from,to:a.to,markerFrom:a.from+o[1].length,checked:o[2].toLowerCase()===`x`,text:o[4].trim()})}return t}function Om(e,t){if(!t.enabled||!t.active)return jt.none;let n=e.selection.main,r=_m(e.doc.toString(),{selectionFrom:n.from,selectionTo:n.to,maxWidgets:ym,maxSnippetBytes:xm,maxMermaidWidgets:Sm,largeNoteDisableThreshold:Cm}),i=[];for(let t of Dm(e))i.push({from:t.from,to:t.to,decoration:jt.replace({widget:new Tm(t)})});for(let e of r)i.push({from:e.from,to:e.to,decoration:jt.replace({block:e.block,widget:new vm({id:Em(e),kind:e.kind,markdown:e.markdown,block:e.block,registerWidget:t.registerWidget,unregisterWidget:t.unregisterWidget,requestMeasure:t.requestMeasure})})});i.sort((e,t)=>{let n=e.from-t.from;if(n!==0)return n;let r=e.decoration.startSide-t.decoration.startSide;return r===0?e.to-t.to:r});let a=new Ge;for(let e of i)a.add(e.from,e.to,e.decoration);return a.finish()}function km(e){return He.define({create(t){return Om(t,e)},update(t,n){return n.docChanged||n.selection?Om(n.state,e):t.map(n.changes)},provide(e){return[A.decorations.from(e),A.atomicRanges.of(t=>t.state.field(e,!1)??jt.none)]}})}function Am(e){let t=document.createElement(`template`);return t.innerHTML=e,t.content.textContent||``}function jm(e){return A.domEventHandlers({paste(t,n){if(e&&be(t,n,e))return!0;if(t.clipboardData?.getData(`text/plain`))return!1;let r=t.clipboardData?.getData(`text/html`);return r?(t.preventDefault(),n.dispatch(n.state.replaceSelection(Am(r))),!0):!1},drop(t,n){return!!(e&&de(t,n,e))}})}function Mm(e){return(t,n,r,i)=>{let a=t.state.sliceDoc(i,i+2)===`]]`?i+2:i;t.dispatch({...zt(t.state,Ne(e),r,a),annotations:Vt.of(n)})}}function Nm(e){function t(t){let n=t.state.doc.lineAt(t.pos),r=Ee(t.state.sliceDoc(n.from,n.to),t.pos-n.from);if(!r)return null;let i=n.from+r.to-(r.hasClosingSuffix?2:0),a=Ae(e,r.query).map(e=>({label:e.title||e.path,detail:e.path,info:e.matchKind===`alias`?`Alias: ${e.aliases.join(`, `)}`:e.matchKind,type:`text`,apply:Mm(e),boost:e.score}));return a.length===0?null:{from:n.from+r.from,to:i,options:a,validFor:/^[^\]\n]*$/}}return Ht({activateOnTyping:!0,override:[t]})}var Pm=(0,P.lazy)(async()=>({default:(await i(()=>import(`./MilkdownWysiwygEditor-Otw40DDF.js`),__vite__mapDeps([0]))).MilkdownWysiwygEditor}));function Fm(e){let[t,n]=(0,P.useState)(()=>new Map),r=e.authoringMode===`wysiwyg`,i=(0,P.useCallback)(e=>{n(t=>{let n=new Map(t);return n.set(e.id,e),n})},[]),a=(0,P.useCallback)(e=>{n(t=>{if(!t.has(e))return t;let n=new Map(t);return n.delete(e),n})},[]),o=(0,P.useCallback)(()=>{window.dispatchEvent(new Event(`resize`))},[]),s=(0,P.useMemo)(()=>{let t=[ct.highest(Nt.of(Xl)),ql,Jl,Gt({codeLanguages:Kl}),Nm(e.notes),jm({notePath:e.notePath,onError:e=>console.warn(`[notes-image-paste]`,e)}),km({enabled:e.authoringMode===`rich`||e.authoringMode===`wysiwyg`,active:e.active,registerWidget:i,unregisterWidget:a,requestMeasure:o})];return e.wordWrap&&t.push(A.lineWrapping),t},[e.active,e.authoringMode,e.notePath,e.notes,e.wordWrap,i,o,a]);return r?(0,F.jsx)(`div`,{className:`notes-editor notes-wysiwyg-editor`,children:(0,F.jsx)(P.Suspense,{fallback:(0,F.jsx)(`div`,{className:`notes-wysiwyg-loading`,children:`Loading WYSIWYG editor...`}),children:(0,F.jsx)(Pm,{active:e.active,content:e.content,notePath:e.notePath,outgoing:e.outgoing,notes:e.notes,activeTag:e.activeTag,onChange:e.onChange,onTagSelect:e.onTagSelect,onWikiLinkNavigate:e.onWikiLinkNavigate})})}):(0,F.jsxs)(`div`,{className:`notes-editor`,children:[(0,F.jsx)(pm,{widgets:[...t.values()]}),(0,F.jsx)(Wl,{value:e.content,extensions:s,onChange:e.onChange,height:`100%`,basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0}})]})}function Im(e){return(0,F.jsx)(`article`,{className:`notes-preview`,children:(0,F.jsx)(fm,{markdown:e.markdown,outgoing:e.outgoing,notes:e.notes,onWikiLinkNavigate:e.onWikiLinkNavigate})})}function Lm(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.md`)?t.slice(0,-3):t}function Rm(e){let t=[],n=/\[\[([^\]]+)\]\]/g,r=0,i,a=0;for(;(i=n.exec(e))!==null;)i.index>r&&t.push(e.slice(r,i.index)),t.push((0,F.jsx)(`mark`,{className:`backlink-highlight`,children:`[[`+i[1]+`]]`},a++)),r=n.lastIndex;return r<e.length&&t.push(e.slice(r)),t}function zm(e){let[t,n]=(0,P.useState)(!1),r=(0,P.useCallback)(t=>{e.onNavigate(t)},[e.onNavigate]),i=e.backlinks.length;return(0,F.jsxs)(`div`,{className:`notes-backlinks-panel`,children:[(0,F.jsxs)(`button`,{className:`notes-backlinks-header`,onClick:()=>n(e=>!e),children:[(0,F.jsx)(`span`,{className:`notes-backlinks-chevron`,children:t?`▶`:`▼`}),(0,F.jsx)(`span`,{children:`Backlinks`}),(0,F.jsx)(`span`,{className:`notes-backlinks-count`,children:i})]}),!t&&(0,F.jsxs)(`div`,{className:`notes-backlinks-list`,children:[i===0&&(0,F.jsx)(`div`,{className:`notes-backlinks-empty`,children:`No backlinks found`}),e.backlinks.map((e,t)=>{let n=e.raw.length>120?e.raw.slice(0,120)+`...`:e.raw;return(0,F.jsxs)(`button`,{className:`notes-backlink-entry`,onClick:()=>r(e.sourcePath),children:[(0,F.jsx)(`span`,{className:`notes-backlink-title`,children:Lm(e.sourcePath)}),(0,F.jsxs)(`span`,{className:`notes-backlink-line`,children:[`L`,e.line]}),(0,F.jsx)(`span`,{className:`notes-backlink-context`,children:Rm(n)})]},`${e.sourcePath}:${e.line}:${t}`)})]})]})}function Bm(){return(0,F.jsxs)(`section`,{className:`notes-empty-state`,children:[(0,F.jsx)(`strong`,{children:`No notes yet`}),(0,F.jsx)(`span`,{children:`Create a markdown note from the file tree.`})]})}function Vm(e){let t=e.note;if(!t)return null;let n=t.aliases||[],r=t.tags||[],i=t.created,a=t.frontmatterError;return!a&&n.length===0&&r.length===0&&!i?null:(0,F.jsxs)(`div`,{className:`notes-frontmatter-strip`,"aria-label":`Note frontmatter`,children:[a&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-error`,role:`alert`,children:[`Frontmatter: `,a]}),n.length>0&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-section`,children:[(0,F.jsx)(`span`,{className:`notes-frontmatter-label`,children:`Aliases`}),(0,F.jsx)(`span`,{className:`notes-frontmatter-value`,children:n.join(`, `)})]}),i&&(0,F.jsxs)(`span`,{className:`notes-frontmatter-section`,children:[(0,F.jsx)(`span`,{className:`notes-frontmatter-label`,children:`Created`}),(0,F.jsx)(`span`,{className:`notes-frontmatter-value`,children:i})]}),r.length>0&&(0,F.jsx)(`span`,{className:`notes-frontmatter-section notes-frontmatter-tags`,children:r.map(t=>{let n=t===e.activeTag;return(0,F.jsxs)(`button`,{type:`button`,className:n?`notes-tag-chip is-active`:`notes-tag-chip`,"aria-pressed":n,title:n?`Clear filter: #${t}`:`Filter notes by #${t}`,onClick:()=>e.onTagClick(n?null:t),children:[`#`,t]},t)})})]})}var Hm=50;function Um(e){return e.trim().toLowerCase()}function Wm(e,t){let n=Um(e),r=Um(t);if(!r)return 1;if(n.startsWith(r))return 1e3-n.length;let i=n.indexOf(r);if(i>=0)return 700-i;let a=-1,o=0,s=0;for(let e of r){let t=n.indexOf(e,a+1);if(t<0)return null;o=t===a+1?o+1:0,s+=4+o*3-Math.min(t,40)*.1,a=t}return s}function Gm(e,t){let n=[{value:e.title,reason:`title`,boost:120},{value:e.path,reason:`path`,boost:40},...e.aliases.map(e=>({value:e,reason:`alias`,boost:80}))],r=null;for(let i of n){let n=Wm(i.value,t);if(n==null)continue;let a=n+i.boost;(!r||a>r.score)&&(r={note:e,score:a,reason:i.reason})}return r}function Km(e,t,n=Hm){let r=t.trim();return e.map(e=>Gm(e,r)).filter(e=>!!e).sort((e,t)=>t.score===e.score?e.note.path.localeCompare(t.note.path):t.score-e.score).slice(0,n)}function qm(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(0),a=(0,P.useRef)(null),o=(0,P.useRef)(null),s=(0,P.useMemo)(()=>Km(e.notes,t),[e.notes,t]),c=s[r]?`notes-quick-switcher-option-${r}`:void 0;(0,P.useEffect)(()=>{e.open&&(n(``),i(0),requestAnimationFrame(()=>a.current?.focus()))},[e.open]),(0,P.useEffect)(()=>{r>=s.length&&i(Math.max(0,s.length-1))},[r,s.length]),(0,P.useEffect)(()=>{(c?document.getElementById(c):null)?.scrollIntoView({block:`nearest`})},[c]);function l(){let t=s[r];t&&e.onSelect(t.note.path)}function u(t){t.key===`ArrowDown`?(t.preventDefault(),i(e=>Math.min(s.length-1,e+1))):t.key===`ArrowUp`?(t.preventDefault(),i(e=>Math.max(0,e-1))):t.key===`Enter`?(t.preventDefault(),l()):t.key===`Escape`&&(t.preventDefault(),e.onClose())}return e.open?(0,F.jsx)(`div`,{className:`notes-quick-switcher-backdrop`,role:`presentation`,onClick:e.onClose,children:(0,F.jsxs)(`section`,{className:`notes-quick-switcher`,role:`dialog`,"aria-modal":`true`,"aria-label":`Quick switch note`,onClick:e=>e.stopPropagation(),children:[(0,F.jsx)(`input`,{ref:a,className:`notes-quick-switcher-input`,type:`search`,placeholder:`Go to note`,value:t,onChange:e=>{n(e.currentTarget.value),i(0)},onKeyDown:u,"aria-label":`Quick switch note`,"aria-controls":`notes-quick-switcher-results`,"aria-activedescendant":c}),(0,F.jsxs)(`div`,{id:`notes-quick-switcher-results`,className:`notes-quick-switcher-list`,role:`listbox`,"aria-label":`Matching notes`,ref:o,children:[s.map((t,n)=>{let a=n===r,o=t.note.path===e.selectedPath;return(0,F.jsxs)(`button`,{id:`notes-quick-switcher-option-${n}`,type:`button`,role:`option`,"aria-selected":a,className:`notes-quick-switcher-item${a?` is-active`:``}${o?` is-current`:``}`,onMouseEnter:()=>i(n),onClick:()=>e.onSelect(t.note.path),children:[(0,F.jsx)(`span`,{className:`notes-quick-switcher-title`,children:t.note.title||t.note.path}),(0,F.jsx)(`span`,{className:`notes-quick-switcher-path`,children:t.note.path}),(0,F.jsx)(`span`,{className:`notes-quick-switcher-alias`,children:o?`Current note`:t.reason===`alias`?`Alias match`:t.reason===`path`?`Path match`:`Title match`})]},t.note.path)}),s.length===0&&(0,F.jsx)(`p`,{className:`notes-quick-switcher-empty`,children:`No matching notes.`})]}),(0,F.jsxs)(`footer`,{className:`notes-quick-switcher-footer`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Up/Down`}),` move`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Enter`}),` open`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Esc`}),` close`]})]})]})}):null}function Jm(e){return e instanceof g&&e.status===409&&e.code===`note_revision_conflict`}function Ym(e){return e?e.split(`/`).filter(Boolean).at(-1)||e:`No note selected`}function Xm(e,t,n){return!!e&&t&&!n}var Zm=[`raw`,`split`,`preview`,`wysiwyg`,`graph`];function Qm(e){return e===`raw`?`Raw`:e===`split`?`Split`:e===`preview`?`Preview`:e===`graph`?`Graph`:`WYSIWYG`}function $m(e,t){return e===`settings`?null:e===`graph`?`graph`:e===`split`?`split`:e===`preview`?`preview`:t===`wysiwyg`?`wysiwyg`:`raw`}function eh(e){function t(t){if(t===`graph`){e.onViewModeChange(`graph`);return}if(t===`split`){e.onViewModeChange(`split`),e.onAuthoringModeChange(`plain`);return}if(t===`preview`){e.onViewModeChange(`preview`);return}e.onViewModeChange(`raw`),e.onAuthoringModeChange(t===`wysiwyg`?`wysiwyg`:`plain`)}let n=$m(e.viewMode,e.authoringMode);return(0,F.jsxs)(`div`,{className:`notes-toolbar`,children:[(0,F.jsxs)(`div`,{className:`notes-toolbar-title`,children:[(0,F.jsx)(`strong`,{children:Ym(e.selectedPath)}),(0,F.jsx)(`span`,{children:e.conflict?`Conflict`:e.dirty?`Unsaved`:`Saved`})]}),(0,F.jsxs)(`div`,{className:`notes-toolbar-actions`,children:[(0,F.jsx)(`div`,{className:`notes-view-tabs`,role:`tablist`,"aria-label":`Notes view`,children:Zm.map(r=>(0,F.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===r,className:n===r?`is-active`:``,disabled:r===`graph`?!1:!e.selectedPath,onClick:()=>t(r),children:Qm(r)},r))}),(0,F.jsx)(`button`,{type:`button`,className:e.viewMode===`settings`?`is-active`:``,onClick:()=>e.onViewModeChange(`settings`),children:`Settings`}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onReload,disabled:!e.selectedPath||e.loading,children:`Refresh`}),(0,F.jsx)(`button`,{type:`button`,className:`notes-save-button`,onClick:e.onSave,disabled:!Xm(e.selectedPath,e.dirty,e.saving),children:e.saving?`Saving`:`Save`})]})]})}function th(e){return(e.metaKey||e.ctrlKey)&&!e.altKey}function nh(e){return typeof HTMLElement>`u`||!(e instanceof HTMLElement)?!1:!!e.closest(`[data-notes-palette]`)}function rh(e){return th(e)&&!e.shiftKey&&e.key.toLowerCase()===`p`&&!nh(e.target)}function ih(e){return th(e)&&e.shiftKey&&e.key.toLowerCase()===`p`}async function ah(){await Promise.resolve(),await new Promise(e=>setTimeout(e,0))}function oh(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(``),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(!1),[c,l]=(0,P.useState)(!1),[u,d]=(0,P.useState)(null),[f,p]=(0,P.useState)(null),m=(0,P.useRef)(``),h=(0,P.useRef)(!1),g=(0,P.useRef)(!1),_=(0,P.useCallback)(async e=>{s(!0),d(null),p(null);try{let n=await ke(e);t(n),m.current=n.content,h.current=!1,r(n.content),a(!1)}catch(e){d(e.message)}finally{s(!1)}},[]);function v(e){m.current=e,h.current=!0,r(e),a(!0)}return{file:e,content:n,dirty:i,loading:o,saving:c,error:u,conflict:f,setContent:v,load:_,save:(0,P.useCallback)(async()=>{if(await ah(),!e||!h.current||g.current)return;let n=m.current;g.current=!0,l(!0),d(null),p(null);try{let i=await fe({path:e.path,content:n,baseRevision:e.revision});t(i),m.current===n&&(m.current=i.content,h.current=!1,r(i.content),a(!1))}catch(r){if(Jm(r)){let i=e.revision;try{let n=await ke(e.path);i=n.revision,t(n)}catch{i=e.revision}p({localContent:n,remoteRevision:i,message:r.message})}else d(r.message)}finally{g.current=!1,l(!1)}},[e]),reloadFromDisk:(0,P.useCallback)(async()=>{e&&await _(e.path)},[e,_]),overwrite:(0,P.useCallback)(async()=>{if(await ah(),!e||g.current)return;let n=m.current;g.current=!0,l(!0),d(null);try{let i=await fe({path:e.path,content:n});t(i),m.current===n&&(m.current=i.content,h.current=!1,r(i.content),a(!1)),p(null)}catch(e){d(e.message)}finally{g.current=!1,l(!1)}},[e]),clearConflict:()=>p(null)}}var sh=(0,P.lazy)(async()=>({default:(await i(()=>import(`./NotesGraphView-CJuk9lKn.js`),[])).NotesGraphView})),ch=[`raw`,`preview`,`wysiwyg`],lh=/[/\\]/g;function uh(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.md`)?t.slice(0,-3):t}function dh(e,t){return e===`preview`?`preview`:t===`wysiwyg`?`wysiwyg`:`raw`}function fh(e){let t=oh(),n=(0,P.useRef)(!1),[r,i]=(0,P.useState)(!1);(0,P.useEffect)(()=>{e.selectedPath&&t.load(e.selectedPath)},[e.selectedPath]),(0,P.useEffect)(()=>{e.onDirtyPathChange(t.dirty?e.selectedPath:null)},[t.dirty,e.selectedPath]),(0,P.useEffect)(()=>{if(!e.active)return;function n(e){!(e.metaKey||e.ctrlKey)||e.key.toLowerCase()!==`s`||(e.preventDefault(),t.save())}return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[t.save,e.active]),(0,P.useEffect)(()=>{if(!e.active)return;function t(t){if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!==`e`)return;t.preventDefault();let n=dh(e.viewMode,e.authoringMode),r=ch[(ch.indexOf(n)+1)%ch.length];if(r===`preview`){e.onViewModeChange(`preview`);return}e.onViewModeChange(`raw`),e.onAuthoringModeChange(r===`wysiwyg`?`wysiwyg`:`plain`)}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active,e.viewMode,e.authoringMode,e.onViewModeChange,e.onAuthoringModeChange]),(0,P.useEffect)(()=>{if(!e.active)return;function t(t){!(t.metaKey||t.ctrlKey)||!t.shiftKey||t.key.toLowerCase()!==`f`||(t.preventDefault(),e.onOpenSidebarSearch())}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active,e.onOpenSidebarSearch]),(0,P.useEffect)(()=>{if(!e.active)return;function t(e){rh(e)&&(e.preventDefault(),i(e=>!e))}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active]);let a=e.selectedPath?t.saving?`Save in progress`:t.dirty?void 0:`No unsaved changes`:`No note selected`;Ji((0,P.useMemo)(()=>[{id:`workspace:save`,section:`File`,label:`Save note`,shortcut:`Cmd+S`,disabled:!Xm(e.selectedPath,t.dirty,t.saving),disabledReason:a,keywords:[`write`,`persist`],run:()=>void t.save()},{id:`workspace:reload`,section:`File`,label:`Reload note from disk`,keywords:[`refresh`,`discard`],disabled:!e.selectedPath,disabledReason:`No note selected`,run:()=>void t.reloadFromDisk()},{id:`workspace:view-raw`,section:`View`,label:`Switch to raw editor`,run:()=>{e.onViewModeChange(`raw`),e.onAuthoringModeChange(`plain`)}},{id:`workspace:view-split`,section:`View`,label:`Switch to split view`,run:()=>{e.onViewModeChange(`split`),e.onAuthoringModeChange(`plain`)}},{id:`workspace:view-preview`,section:`View`,label:`Switch to preview`,shortcut:`Cmd+E`,run:()=>e.onViewModeChange(`preview`)},{id:`workspace:view-wysiwyg`,section:`View`,label:`Switch to WYSIWYG editor`,run:()=>{e.onViewModeChange(`raw`),e.onAuthoringModeChange(`wysiwyg`)}},{id:`workspace:view-graph`,section:`View`,label:`Open graph view`,run:()=>e.onViewModeChange(`graph`)},{id:`workspace:open-settings`,section:`View`,label:`Open Notes settings`,run:()=>e.onViewModeChange(`settings`)},{id:`workspace:toggle-word-wrap`,section:`Editor`,label:e.wordWrap?`Disable word wrap`:`Enable word wrap`,run:()=>e.onWordWrapChange(!e.wordWrap)},{id:`workspace:open-search`,section:`Navigate`,label:`Search notes`,shortcut:`Cmd+Shift+F`,run:e.onOpenSidebarSearch},{id:`workspace:quick-switch-note`,section:`Navigate`,label:`Quick switch note`,shortcut:`Cmd+P`,run:()=>i(!0)}],[t.dirty,t.reloadFromDisk,t.save,t.saving,e.onAuthoringModeChange,e.onOpenSidebarSearch,e.onViewModeChange,e.onWordWrapChange,e.selectedPath,e.wordWrap,a]),e.active);async function o(t){if(n.current||!e.selectedPath)return;let r=t.currentTarget.value.trim().replace(lh,``),i=uh(e.selectedPath);if(!r||r===i){t.currentTarget.value=i;return}let a=e.selectedPath.split(`/`);a[a.length-1]=r.endsWith(`.md`)?r:`${r}.md`;let o=a.join(`/`);if(o===e.selectedPath){t.currentTarget.value=i;return}n.current=!0;try{await je(e.selectedPath,o),e.onSelectedPathChange(o),Zi({topics:[`notes`],reason:`note:title-renamed`,source:`ui`})}catch(e){console.warn(`[notes-rename]`,e),t.currentTarget.value=i}finally{n.current=!1}}let s=e.viewMode===`raw`||e.viewMode===`split`,c=e.viewMode===`preview`||e.viewMode===`split`,l=e.selectedPath&&e.vaultIndex?.outgoingLinks?.[e.selectedPath]||[],u=e.selectedPath&&e.vaultIndex?.backlinks?.[e.selectedPath]||[],d=e.vaultIndex?.notes||[],f=e.authoringMode===`wysiwyg`&&s;return(0,F.jsxs)(`section`,{className:`notes-workspace`,"aria-label":`Notes workspace`,children:[(0,F.jsxs)(`main`,{className:`notes-main notes-mode-${e.viewMode}`,children:[(0,F.jsx)(eh,{selectedPath:e.selectedPath,viewMode:e.viewMode,authoringMode:e.authoringMode,dirty:t.dirty,saving:t.saving,loading:t.loading,conflict:!!t.conflict,onViewModeChange:e.onViewModeChange,onAuthoringModeChange:e.onAuthoringModeChange,onSave:()=>void t.save(),onReload:()=>void t.reloadFromDisk()}),(0,F.jsxs)(`div`,{className:`notes-content`,children:[t.error&&(0,F.jsx)(`section`,{className:`state error-state`,children:t.error}),t.conflict&&(0,F.jsxs)(`section`,{className:`notes-conflict`,children:[(0,F.jsx)(`span`,{children:t.conflict.message}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void t.reloadFromDisk(),children:`Reload`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void t.overwrite(),children:`Overwrite`}),(0,F.jsx)(`button`,{type:`button`,onClick:t.clearConflict,children:`Keep local`})]}),e.viewMode===`settings`&&(0,F.jsxs)(`section`,{className:`notes-settings`,children:[(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`input`,{type:`checkbox`,checked:e.wordWrap,onChange:t=>e.onWordWrapChange(t.currentTarget.checked)}),`Word wrap`]}),(0,F.jsxs)(`label`,{children:[`Tree width`,(0,F.jsx)(`input`,{type:`range`,min:`220`,max:`420`,value:e.treeWidth,onChange:t=>e.onTreeWidthChange(Number(t.currentTarget.value))})]})]}),e.viewMode===`graph`&&(0,F.jsx)(P.Suspense,{fallback:(0,F.jsx)(`div`,{className:`notes-graph-loading`,children:`Loading graph...`}),children:(0,F.jsx)(sh,{graph:e.vaultIndex?.graph??{nodes:[],edges:[]},selectedPath:e.selectedPath,onNavigate:t=>{e.onSelectedPathChange(t),e.onViewModeChange(`raw`)}})}),!e.selectedPath&&e.viewMode!==`settings`&&e.viewMode!==`graph`&&(0,F.jsx)(Bm,{}),e.selectedPath&&e.viewMode!==`settings`&&e.viewMode!==`graph`&&(0,F.jsxs)(`div`,{className:`notes-document-grid`,children:[(0,F.jsx)(`input`,{className:`notes-inline-title`,defaultValue:uh(e.selectedPath),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},spellCheck:!1,"aria-label":`Note title`},e.selectedPath),!f&&(0,F.jsx)(Vm,{note:e.selectedNote,activeTag:e.tagFilter,onTagClick:e.onTagSelect}),s&&(0,F.jsx)(`div`,{className:`notes-editor-pane`,children:(0,F.jsx)(Fm,{active:e.active&&s,authoringMode:e.authoringMode,content:t.content,notePath:e.selectedPath,outgoing:l,notes:d,activeTag:e.tagFilter,wordWrap:e.wordWrap,onChange:t.setContent,onTagSelect:e.onTagSelect,onWikiLinkNavigate:e.onWikiLinkNavigate},e.selectedPath)}),c&&(0,F.jsx)(Im,{markdown:t.content,outgoing:l,notes:d,onWikiLinkNavigate:e.onWikiLinkNavigate})]})]}),e.viewMode!==`graph`&&e.viewMode!==`settings`&&e.selectedPath&&(0,F.jsx)(zm,{backlinks:u,onNavigate:e.onWikiLinkNavigate})]}),(0,F.jsx)(qm,{open:r,notes:e.vaultIndex?.notes||[],selectedPath:e.selectedPath,onClose:()=>i(!1),onSelect:t=>{e.onSelectedPathChange(t),i(!1)}})]})}var ph=`application/x-jaw-running-chip`;function mh(e,t,n){let r=[],i=new Set;for(let a of e){if(a.hidden)continue;let e=a.port;if(i.has(e))continue;i.add(e);let o=n.has(e),s=a.status===`online`,c=a.status===`error`;!o&&!s&&!c||r.push({port:e,label:a.label||a.instanceId||`Port ${e}`,activity:t[e]||null,state:o?`busy`:c?`error`:`online`})}return r}function hh(e){return JSON.stringify({port:e.port,label:e.label,activity:e.activity,state:e.state})}function gh(e){let t=e.dataTransfer.getData(ph);if(!t)return null;try{let e=JSON.parse(t);return typeof e.port==`number`?{port:e.port,label:typeof e.label==`string`?e.label:`Port ${e.port}`,activity:typeof e.activity==`string`?e.activity:null,state:e.state===`busy`||e.state===`error`?e.state:`online`}:null}catch{return null}}var _h=[{id:`backlog`,label:`Backlog`,policy:`Options not yet committed`},{id:`ready`,label:`Ready`,policy:`Pullable, clear enough to start`},{id:`active`,label:`In Progress`,policy:`Current WIP, keep starts limited`},{id:`review`,label:`Review`,policy:`Check output before delivery`},{id:`done`,label:`Done`,policy:`Delivered or no longer active`}];function vh(e){let t=(0,P.useMemo)(()=>mh(e.instances,e.titlesByPort,e.busyPorts),[e.instances,e.titlesByPort,e.busyPorts]);return(0,F.jsxs)(`nav`,{className:`dashboard-board-sidebar`,"aria-label":`Board lanes`,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-sidebar-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-sidebar-title`,children:`Board`}),(0,F.jsxs)(`span`,{className:`dashboard-board-sidebar-count`,children:[t.length,` running`]})]}),(0,F.jsxs)(`section`,{className:`dashboard-board-sidebar-running`,"aria-label":`Running instances`,children:[(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-section-title`,children:`Running`}),t.length===0?(0,F.jsx)(`p`,{className:`dashboard-board-sidebar-empty`,children:`No running instances`}):(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-running-list`,children:t.map(e=>(0,F.jsxs)(`div`,{className:`dashboard-board-running-chip`,"data-state":e.state,draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`copy`,t.dataTransfer.setData(ph,hh(e))},"aria-label":e.activity?`${e.label} — ${e.activity}`:e.label,children:[(0,F.jsxs)(`span`,{className:`dashboard-board-running-chip-port`,children:[`:`,e.port]}),(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-label`,children:e.label}),e.activity?(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-activity`,children:e.activity}):null,(0,F.jsx)(`span`,{className:`dashboard-board-running-chip-state`,"data-state":e.state,children:e.state})]},e.port))})]}),(0,F.jsx)(`div`,{className:`dashboard-board-sidebar-section-title`,children:`Lanes`}),(0,F.jsxs)(`ul`,{className:`dashboard-board-sidebar-list`,children:[(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-sidebar-item${e.view.kind===`overall`?` is-active`:``}`,onClick:()=>e.onViewChange({kind:`overall`}),"aria-pressed":e.view.kind===`overall`,children:[(0,F.jsx)(`span`,{children:`Overall`}),(0,F.jsx)(`small`,{children:`Five-column workflow`})]})}),_h.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-sidebar-item${e.view.kind===`lane`&&e.view.lane===t.id?` is-active`:``}`,onClick:()=>e.onViewChange({kind:`lane`,lane:t.id}),"aria-pressed":e.view.kind===`lane`&&e.view.lane===t.id,children:[(0,F.jsx)(`span`,{children:t.label}),(0,F.jsx)(`small`,{children:t.policy})]})},t.id))]})]})}function yh(e,t){if(e.port===null)return`no instance`;let n=t.get(e.port);return n?`:${n.port} ${n.label}`:`:${e.port}`}function bh(e){let t=_h.find(t=>t.id===e.lane),n=t?.label??`Lane`,r=t?.policy??``,i=e.cards.filter(e=>e.port!==null).length,a=e.cards.length-i;return(0,F.jsxs)(`div`,{className:`dashboard-board-lane-detail-shell`,"data-lane":e.lane,children:[(0,F.jsxs)(`aside`,{className:`dashboard-board-lane-detail-sidebar`,"aria-label":`${n} filters`,children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:n}),(0,F.jsx)(`small`,{children:r})]}),(0,F.jsxs)(`div`,{className:`dashboard-board-lane-detail-counts`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:e.cards.length}),` all`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:i}),` with instance`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`strong`,{children:a}),` no instance`]})]}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onBackToOverall,children:`Overall`})]}),(0,F.jsxs)(`section`,{className:`dashboard-board-lane-detail-content`,"aria-label":`${n} cards`,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-lane-detail-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(`h2`,{children:[`Board / `,n]}),(0,F.jsx)(`p`,{children:e.lane===`done`?`Done archive, shown as compact two-line rows.`:`Lane detail, shown as compact rows for scan and reuse.`})]}),(0,F.jsx)(`button`,{type:`button`,onClick:e.onBackToOverall,children:`Close`})]}),e.cards.length===0?(0,F.jsx)(`p`,{className:`dashboard-board-lane-detail-empty`,children:`No items in this lane`}):(0,F.jsx)(`ul`,{className:`dashboard-board-compact-list`,children:e.cards.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-compact-row`,onClick:()=>e.onOpenCard(t.id),children:[(0,F.jsx)(`span`,{className:`dashboard-board-compact-row-title`,children:t.summary||t.title}),(0,F.jsx)(`span`,{className:`dashboard-board-compact-row-instance`,children:yh(t,e.runningChipByPort)})]})},t.id))})]})]})}var xh=`/api/dashboard/board`;function Sh(e){return{...e,summary:e.summary??null,detail:e.detail??null}}async function Ch(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}return await e.json()}async function wh(){let e=await Ch(await fetch(`${xh}/tasks`,{credentials:`same-origin`,cache:`no-store`}));return Array.isArray(e.tasks)?e.tasks.map(Sh):[]}async function Th(e){return Sh((await Ch(await fetch(`${xh}/tasks`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(e)}))).task)}async function Eh(e,t){return Sh((await Ch(await fetch(`${xh}/tasks/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(t)}))).task)}async function Dh(e){await Ch(await fetch(`${xh}/tasks/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`same-origin`}))}function Oh(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(``);if((0,P.useEffect)(()=>{n(e.card?.title??``),i(e.card?.summary??``),o(e.card?.detail??``)},[e.card]),!e.card)return null;function s(n){if(n.preventDefault(),!e.card)return;let i=t.trim();i&&e.onSave(e.card.id,{title:i,summary:r,detail:a})}return(0,F.jsx)(`div`,{className:`dashboard-board-dialog-backdrop`,role:`presentation`,onMouseDown:t=>{t.target===t.currentTarget&&e.onClose()},children:(0,F.jsxs)(`form`,{className:`dashboard-board-dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`dashboard-board-dialog-title`,onSubmit:s,onKeyDown:t=>{t.key===`Escape`&&e.onClose()},children:[(0,F.jsxs)(`header`,{className:`dashboard-board-dialog-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`p`,{className:`dashboard-board-dialog-kicker`,children:`Kanban block`}),(0,F.jsx)(`h3`,{id:`dashboard-board-dialog-title`,children:`Edit card`})]}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-dialog-icon-button`,onClick:e.onClose,"aria-label":`Close card editor`,children:`×`})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`Title`}),(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:t,onChange:e=>n(e.currentTarget.value),maxLength:500,required:!0})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`One-line note`}),(0,F.jsx)(`input`,{type:`text`,value:r,onChange:e=>i(e.currentTarget.value),maxLength:500,placeholder:`Short visible memo for the card`})]}),(0,F.jsxs)(`label`,{className:`dashboard-board-dialog-field`,children:[(0,F.jsx)(`span`,{children:`Details`}),(0,F.jsx)(`textarea`,{value:a,onChange:e=>o(e.currentTarget.value),maxLength:2e4,rows:10,placeholder:`Write Markdown here. It is stored as raw text for now.`})]}),(0,F.jsxs)(`footer`,{className:`dashboard-board-dialog-footer`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-dialog-storage`,children:`Markdown`}),(0,F.jsxs)(`div`,{className:`dashboard-board-dialog-actions`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:e.onClose,children:`Cancel`}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.busy||!t.trim(),children:`Save`})]})]})]})})}var kh=`application/x-jaw-board-task`;function Ah(e){return e.kind===`open`?(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M7 4h-2.5a1.5 1.5 0 0 0-1.5 1.5v10a1.5 1.5 0 0 0 1.5 1.5h10a1.5 1.5 0 0 0 1.5-1.5V13`}),(0,F.jsx)(`path`,{d:`M10 3h7v7`}),(0,F.jsx)(`path`,{d:`M9 11 17 3`})]}):e.kind===`move`?(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M10 2v16`}),(0,F.jsx)(`path`,{d:`M6 6 10 2l4 4`}),(0,F.jsx)(`path`,{d:`m6 14 4 4 4-4`}),(0,F.jsx)(`path`,{d:`M2 10h16`}),(0,F.jsx)(`path`,{d:`m6 6-4 4 4 4`}),(0,F.jsx)(`path`,{d:`m14 6 4 4-4 4`})]}):(0,F.jsxs)(`svg`,{viewBox:`0 0 20 20`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,children:[(0,F.jsx)(`path`,{d:`M3 5h14`}),(0,F.jsx)(`path`,{d:`M8 5V3h4v2`}),(0,F.jsx)(`path`,{d:`M6 8v8`}),(0,F.jsx)(`path`,{d:`M10 8v8`}),(0,F.jsx)(`path`,{d:`M14 8v8`}),(0,F.jsx)(`path`,{d:`M5 5l1 13h8l1-13`})]})}function jh(e){return JSON.stringify({id:e.id,lane:e.lane})}function Mh(e){let t=e.dataTransfer.getData(kh);if(!t)return null;try{let e=JSON.parse(t);if(typeof e.id!=`string`)return null;let n=_h.find(t=>t.id===e.lane)?.id;return n?{id:e.id,lane:n}:null}catch{return null}}function Nh(e,t){return Array.from(e.dataTransfer.types).includes(t)}function Ph(e){return{id:e.id,title:e.title,summary:e.summary??null,detail:e.detail??null,lane:e.lane,port:e.port,source:e.source,persisted:!0}}function Fh(e){return e==null?null:e.trim()||null}function Ih(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(``),[s,c]=(0,P.useState)(!1),[l,u]=(0,P.useState)(null),[d,f]=(0,P.useState)(null),[p,m]=(0,P.useState)(null),[h,g]=(0,P.useState)(null),[_,v]=(0,P.useState)(!1),y=(0,P.useRef)(null),b=(0,P.useCallback)(async()=>{try{n(await wh())}catch{}},[]);(0,P.useEffect)(()=>{e.active&&b()},[e.active,b]),(0,P.useEffect)(()=>{if(!l)return;let e=e=>{y.current&&(y.current.contains(e.target)||u(null))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]);let x=(0,P.useCallback)(async e=>{let t=a.trim();if(!(!t||s)){c(!0);try{await Th({title:t,lane:e}),o(``),i(null),await b()}catch{}finally{c(!1)}}},[a,s,b]),S=(0,P.useCallback)(async(e,t)=>{u(null);try{await Eh(e,{lane:t}),await b()}catch{}},[b]),ee=(0,P.useCallback)(async e=>{try{await Dh(e),await b()}catch{}},[b]),te=(0,P.useCallback)(async(e,t)=>{if(!_){v(!0);try{let r=await Eh(e,t);n(n=>n.map(n=>n.id===e?{...n,...r,summary:t.summary===void 0?r.summary??n.summary:Fh(t.summary),detail:t.detail===void 0?r.detail??n.detail:Fh(t.detail)}:n)),g(null)}catch{}finally{v(!1)}}},[_]),C=(0,P.useCallback)(async(e,t)=>{try{await Eh(e,{port:t}),await b()}catch{}},[b]),ne=(0,P.useCallback)(async e=>{try{await Eh(e,{port:null}),await b()}catch{}},[b]),re=(0,P.useCallback)((e,t)=>{t.preventDefault(),f(null);let n=Mh(t);!n||n.lane===e||S(n.id,e)},[S]),ie=(0,P.useCallback)((e,t)=>{if(!Nh(t,`application/x-jaw-running-chip`))return;t.preventDefault(),t.stopPropagation(),m(null);let n=gh(t);n&&C(e,n.port)},[C]),ae=(0,P.useMemo)(()=>t.map(Ph),[t]),oe=(0,P.useMemo)(()=>{let e=h?ae.find(e=>e.id===h):null;return e?{id:e.id,title:e.title,summary:e.summary,detail:e.detail}:null},[ae,h]),se=(0,P.useMemo)(()=>mh(e.instances,e.titlesByPort,e.busyPorts),[e.instances,e.titlesByPort,e.busyPorts]),ce=(0,P.useMemo)(()=>new Map(se.map(e=>[e.port,e])),[se]),le=e.view.kind===`lane`?e.view.lane:null;return(0,F.jsxs)(`section`,{className:`dashboard-board-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-board-workspace-header`,children:[(0,F.jsxs)(`div`,{className:`dashboard-board-workspace-header-text`,children:[(0,F.jsx)(`h2`,{children:`Board`}),(0,F.jsx)(`p`,{className:`dashboard-board-workspace-subtitle`,children:`Create human-owned kanban blocks, then drag running instance blocks into a card to attach context without touching the instance itself.`})]}),(0,F.jsx)(`div`,{className:`dashboard-board-workspace-controls`,children:(0,F.jsx)(ui,{topic:`board`,label:`Open Board help`,onOpen:e.onOpenHelpTopic})})]}),le===null?(0,F.jsx)(`div`,{className:`dashboard-board-lanes`,children:_h.map(t=>{let n=ae.filter(e=>e.lane===t.id),c=t.id===`done`?n.slice(0,4):n,h=t.id===`done`?Math.max(0,n.length-4):0,_=r===t.id;return(0,F.jsxs)(`div`,{className:`dashboard-board-lane${d===t.id?` is-drop-target`:``}`,"data-lane":t.id,onDragOver:e=>{Nh(e,kh)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,d!==t.id&&f(t.id))},onDragLeave:()=>{d===t.id&&f(null)},onDrop:e=>re(t.id,e),children:[(0,F.jsxs)(`header`,{className:`dashboard-board-lane-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-board-lane-title`,children:t.label}),(0,F.jsx)(`span`,{className:`dashboard-board-lane-policy`,children:t.policy}),(0,F.jsx)(`span`,{className:`dashboard-board-lane-count`,children:n.length})]}),(0,F.jsxs)(`ul`,{className:`dashboard-board-lane-cards`,children:[n.length===0?(0,F.jsx)(`li`,{className:`dashboard-board-lane-empty`,children:`No items`}):c.map(e=>{let t=e.port===null?null:ce.get(e.port)??null;return(0,F.jsxs)(`li`,{className:`dashboard-board-card${p===e.id?` is-instance-drop-target`:``}`,"data-lane":e.lane,"data-source":e.source,"data-persisted":e.persisted?`true`:`false`,draggable:!0,onDragStart:t=>{t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(kh,jh(e))},onDragOver:t=>{Nh(t,`application/x-jaw-running-chip`)&&(t.preventDefault(),t.stopPropagation(),t.dataTransfer.dropEffect=`copy`,p!==e.id&&m(e.id))},onDragLeave:()=>{p===e.id&&m(null)},onDrop:t=>ie(e.id,t),children:[(0,F.jsx)(`span`,{className:`dashboard-board-card-title`,children:e.title}),e.summary?(0,F.jsx)(`span`,{className:`dashboard-board-card-summary`,title:e.summary,children:e.summary}):null,(0,F.jsx)(`div`,{className:`dashboard-board-card-instance-slot`,"data-empty":t?`false`:`true`,children:t?(0,F.jsxs)(`div`,{className:`dashboard-board-card-instance`,"data-state":t.state,draggable:!0,onDragStart:e=>{e.stopPropagation(),e.dataTransfer.effectAllowed=`copy`,e.dataTransfer.setData(ph,hh(t))},title:t.activity?`${t.label} — ${t.activity}`:t.label,children:[(0,F.jsxs)(`span`,{className:`dashboard-board-card-instance-port`,children:[`:`,t.port]}),(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-label`,children:t.label}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-instance-detach`,onClick:()=>void ne(e.id),"aria-label":`Detach :${t.port} from card`,title:`Detach instance`,children:`-`}),t.activity?(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-activity`,title:t.activity,children:t.activity}):null]}):(0,F.jsx)(`span`,{className:`dashboard-board-card-instance-empty`,children:`Drop a running instance here`})}),e.persisted?(0,F.jsxs)(`span`,{className:`dashboard-board-card-actions`,"data-open":l===e.id?`true`:`false`,children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>g(e.id),"aria-label":`Open card details`,title:`Open`,children:(0,F.jsx)(Ah,{kind:`open`})}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>u(t=>t===e.id?null:e.id),"aria-haspopup":`menu`,"aria-expanded":l===e.id,"aria-label":`Move card`,title:`Move`,children:(0,F.jsx)(Ah,{kind:`move`})}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-card-action`,"data-danger":`true`,onClick:()=>void ee(e.id),"aria-label":`Delete card`,title:`Delete`,children:(0,F.jsx)(Ah,{kind:`delete`})}),l===e.id&&(0,F.jsx)(`div`,{ref:y,className:`dashboard-board-popover`,role:`menu`,children:_h.map(t=>(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-popover-item${t.id===e.lane?` is-current`:``}`,role:`menuitem`,disabled:t.id===e.lane,onClick:()=>void S(e.id,t.id),children:[t.label,t.id===e.lane?` ✓`:``]},t.id))})]}):null]},e.id)}),h>0?(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-board-done-more`,onClick:()=>e.onViewChange({kind:`lane`,lane:`done`}),children:[(0,F.jsxs)(`span`,{children:[`+ `,h,` more done`]}),(0,F.jsx)(`small`,{children:`Open archive`})]})}):null]}),(0,F.jsx)(`div`,{className:`dashboard-board-lane-add`,children:_?(0,F.jsxs)(`form`,{className:`dashboard-board-add-composer`,onSubmit:e=>{e.preventDefault(),x(t.id)},children:[(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`New ${t.label} task`,disabled:s,"aria-label":`New task for ${t.label}`,onKeyDown:e=>{e.key===`Escape`&&(i(null),o(``))}}),(0,F.jsx)(`button`,{type:`submit`,disabled:s||!a.trim(),children:`Add`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{i(null),o(``)},"aria-label":`Cancel`,children:`×`})]}):(0,F.jsx)(`button`,{type:`button`,className:`dashboard-board-add-trigger`,onClick:()=>{i(t.id),o(``)},children:`+ Add task`})})]},t.id)})}):(0,F.jsx)(bh,{lane:le,cards:ae.filter(e=>e.lane===le),runningChipByPort:ce,onBackToOverall:()=>e.onViewChange({kind:`overall`}),onOpenCard:g}),(0,F.jsx)(Oh,{card:oe,busy:_,onClose:()=>g(null),onSave:te})]})}var Lh=[{id:`today`,label:`Today`},{id:`upcoming`,label:`Upcoming`},{id:`recurring`,label:`Recurring`},{id:`blocked`,label:`Blocked`}];function Rh(e){return(0,F.jsxs)(`nav`,{className:`dashboard-schedule-sidebar`,"aria-label":`Schedule groups`,children:[(0,F.jsx)(`header`,{className:`dashboard-schedule-sidebar-header`,children:(0,F.jsx)(`span`,{className:`dashboard-schedule-sidebar-title`,children:`Schedule`})}),(0,F.jsx)(`ul`,{className:`dashboard-schedule-sidebar-list`,children:Lh.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-sidebar-item${e.activeGroup===t.id?` is-active`:``}`,onClick:()=>e.onGroupChange(t.id),"aria-pressed":e.activeGroup===t.id,children:(0,F.jsx)(`span`,{children:t.label})})},t.id))})]})}var zh=`/api/dashboard/schedule`;async function Bh(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}return await e.json()}async function Vh(){let e=await Bh(await fetch(`${zh}/work`,{credentials:`same-origin`}));return Array.isArray(e.items)?e.items:[]}async function Hh(e){return(await Bh(await fetch(`${zh}/work`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(e)}))).item}async function Uh(e,t){return(await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify(t)}))).item}async function Wh(e){await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`same-origin`}))}async function Gh(e,t=[]){let n=await Bh(await fetch(`${zh}/work/${encodeURIComponent(e)}/dispatch`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`same-origin`,body:JSON.stringify({busyPorts:t})}));return{result:n.result,item:n.item}}async function Kh(){try{let e=await fetch(`/api/heartbeat`,{credentials:`same-origin`});if(!e.ok)return[];let t=await e.json();return Array.isArray(t.jobs)?t.jobs:[]}catch{return[]}}function qh(e){return e.cron?`cron ${e.cron}`:e.runAt?`at ${e.runAt}`:e.enabled?`manual`:`disabled`}function Jh(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)([]),[a,o]=(0,P.useState)(!1),[s,c]=(0,P.useState)(null),[l,u]=(0,P.useState)(``),[d,f]=(0,P.useState)(!1),[p,m]=(0,P.useState)({}),[h,g]=(0,P.useState)(null),_=(0,P.useRef)(null),v=(0,P.useCallback)(async()=>{try{i(await Vh())}catch{}},[]);(0,P.useEffect)(()=>{if(!e.active)return;let t=!1;return Promise.all([Kh(),Vh().catch(()=>[])]).then(([e,r])=>{t||(n(e),i(r),o(!0))}),()=>{t=!0}},[e.active]),(0,P.useEffect)(()=>{if(!h)return;let e=e=>{_.current&&(_.current.contains(e.target)||g(null))};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[h]);let y=(0,P.useCallback)(async e=>{let t=l.trim();if(!(!t||d)){f(!0);try{await Hh({title:t,group:e}),u(``),c(null),await v()}catch{}finally{f(!1)}}},[l,d,v]),b=(0,P.useCallback)(async(e,t)=>{g(null);try{await Uh(e,{group:t}),await v()}catch{}},[v]),x=(0,P.useCallback)(async e=>{try{await Wh(e),await v()}catch{}},[v]),S=(0,P.useCallback)(async t=>{try{let n=e.busyPorts,{result:r}=await Gh(t,Array.isArray(n)?n:n?Array.from(n):[]);m(e=>({...e,[t]:r})),await v()}catch{}},[e.busyPorts,v]);return(0,F.jsxs)(`section`,{className:`dashboard-schedule-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-schedule-workspace-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{children:`Automations`}),(0,F.jsx)(`p`,{className:`dashboard-schedule-workspace-subtitle`,children:`Manager-owned scheduled work. The dashboard ticks once a minute and dispatches due items.`})]}),(0,F.jsx)(ui,{topic:`schedule`,label:`Open Automations help`,onOpen:e.onOpenHelpTopic}),t.length>0?(0,F.jsxs)(`p`,{className:`dashboard-schedule-legacy-notice`,role:`note`,children:[`⚠️ `,t.length,` legacy heartbeat job(s) detected in this instance's `,(0,F.jsx)(`code`,{children:`heartbeat.json`}),`. They are no longer auto-fired by the manager — migrate them into Automations.`]}):null]}),(0,F.jsx)(`div`,{className:`dashboard-schedule-groups`,children:Lh.map(t=>{let n=r.filter(e=>e.group===t.id).filter(e=>e.enabled),i=n.length,o=s===t.id;return(0,F.jsxs)(`div`,{className:`dashboard-schedule-group${e.activeGroup===t.id?` is-focused`:``}`,children:[(0,F.jsxs)(`header`,{className:`dashboard-schedule-group-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-schedule-group-title`,children:t.label}),(0,F.jsx)(`span`,{className:`dashboard-schedule-group-count`,children:i})]}),(0,F.jsx)(`ul`,{className:`dashboard-schedule-items`,children:a?i===0?(0,F.jsx)(`li`,{className:`dashboard-schedule-empty`,children:`No items`}):(0,F.jsx)(F.Fragment,{children:n.map(e=>{let t=p[e.id],n=e.lastRunAt?`last ${e.lastRunAt.slice(11,16)}`:null,r=e.lastStatus||null;return(0,F.jsxs)(`li`,{className:`dashboard-schedule-item`,"data-persisted":`true`,"data-dispatch-status":t?.status||``,children:[(0,F.jsx)(`span`,{className:`dashboard-schedule-item-name`,children:e.title}),(0,F.jsxs)(`span`,{className:`dashboard-schedule-item-meta`,children:[qh(e),` • saved`,e.targetPort==null?``:` • :${e.targetPort}`,n?` • ${n}`:``,r?` • ${r}`:``,t?` • ${t.status}`:``]}),(0,F.jsxs)(`span`,{className:`dashboard-schedule-item-actions`,"data-open":h===e.id?`true`:`false`,children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-run-now`,onClick:()=>void S(e.id),"aria-label":`Run now`,title:`Dispatch to target instance (queued if busy)`,children:`Run`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-item-action`,onMouseDown:e=>e.stopPropagation(),onClick:()=>g(t=>t===e.id?null:e.id),"aria-haspopup":`menu`,"aria-expanded":h===e.id,"aria-label":`Move scheduled work`,children:`Move`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-item-action`,"data-danger":`true`,onClick:()=>void x(e.id),"aria-label":`Delete`,children:`Delete`}),h===e.id&&(0,F.jsx)(`div`,{ref:_,className:`dashboard-schedule-popover`,role:`menu`,children:Lh.map(t=>(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-schedule-popover-item${t.id===e.group?` is-current`:``}`,role:`menuitem`,disabled:t.id===e.group,onClick:()=>void b(e.id,t.id),children:[t.label,t.id===e.group?` ✓`:``]},t.id))})]})]},e.id)})}):(0,F.jsx)(`li`,{className:`dashboard-schedule-empty`,children:`Loading…`})}),(0,F.jsx)(`div`,{className:`dashboard-schedule-group-add`,children:o?(0,F.jsxs)(`form`,{className:`dashboard-schedule-add-composer`,onSubmit:e=>{e.preventDefault(),y(t.id)},children:[(0,F.jsx)(`input`,{autoFocus:!0,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`New ${t.label} item`,disabled:d,"aria-label":`New scheduled work for ${t.label}`,onKeyDown:e=>{e.key===`Escape`&&(c(null),u(``))}}),(0,F.jsx)(`button`,{type:`submit`,disabled:d||!l.trim(),children:`Add`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>{c(null),u(``)},"aria-label":`Cancel`,children:`×`})]}):(0,F.jsx)(`button`,{type:`button`,className:`dashboard-schedule-add-trigger`,onClick:()=>{c(t.id),u(``)},children:`+ Add scheduled work`})})]},t.id)})})]})}var Yh=1e3;function Xh(e,t){return Qh(e)-Qh(t)||tg(e)-tg(t)||$h(e)-$h(t)||eg(e)-eg(t)||Date.parse(e.sourceCreatedAt)-Date.parse(t.sourceCreatedAt)}function Zh(e,t){let n=e?.manualRank??null,r=t?.manualRank??null;return n===null&&r===null?Yh:n===null&&r!==null?r-Yh:n!==null&&r===null?n+Yh:n!==null&&r!==null?(n+r)/2:Yh}function Qh(e){return e.status===`focused`?0:1}function $h(e){return e.manualRank??2**53-1}function eg(e){let t=[e.remindAt,e.dueAt].filter(e=>!!e).map(e=>Date.parse(e)).filter(e=>Number.isFinite(e));return t.length>0?Math.min(...t):2**53-1}function tg(e){return e.priority===`high`?0:e.priority===`normal`?1:2}var ng=[{id:`urgentImportant`,title:`Important and Urgent`,tone:`red`},{id:`important`,title:`Important, Not Urgent`,tone:`green`},{id:`waiting`,title:`Waiting / Delegated`,tone:`amber`},{id:`later`,title:`Later`,tone:`blue`}],rg={urgentImportant:{listId:`today`,status:`open`,priority:`high`},important:{listId:`today`,status:`open`,priority:`normal`},waiting:{listId:`waiting`,status:`waiting`,priority:`normal`},later:{listId:`later`,status:`open`,priority:`low`}};function ig(e){return rg[e]}function ag(e){return e.status===`done`?null:e.status===`focused`?`urgentImportant`:e.status===`waiting`?`waiting`:e.listId===`later`||e.priority===`low`?`later`:e.priority===`high`?`urgentImportant`:`important`}function og(e,t){return t.filter(t=>ag(t)===e).sort(Xh)}function sg(e,t){return e===`matrix`?t.filter(e=>e.status!==`done`).sort(Xh):e===`done`?t.filter(e=>e.status===`done`).sort(Xh):e===`focused`?og(`urgentImportant`,t):e===`important`?og(`important`,t):e===`waiting`?og(`waiting`,t):e===`later`?og(`later`,t):t.filter(e=>e.status!==`done`).sort(Xh)}function cg(e,t){return sg(e,t).length}function lg(e,t=3){return e.filter(e=>e.status!==`done`).sort(Xh).slice(0,t)}var ug=`application/x-jaw-dashboard-reminder`;function dg(e){return Array.from(e.dataTransfer.types).includes(ug)}function fg(e){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)(null);function a(e,t){if(t.target instanceof HTMLElement&&t.target.closest(`input, textarea, button, [data-reminder-inline-edit="true"]`)){t.preventDefault();return}t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(ug,e.id),n(e.id)}function o(e,t){dg(t)&&(t.preventDefault(),t.dataTransfer.dropEffect=`move`,i(e))}function s(){i(null)}function c(t,r){if(!dg(r))return;r.preventDefault();let a=r.dataTransfer.getData(ug);n(null),i(null),a&&e(a,t)}function l(){n(null),i(null)}return{draggedId:t,dropTarget:r,start:a,over:o,leave:s,drop:c,end:l}}var pg=[{id:`matrix`,label:`Matrix`,detail:`Priority board`},{id:`focused`,label:`Focus`,detail:`Current item`},{id:`important`,label:`Important`,detail:`Not urgent`},{id:`waiting`,label:`Waiting`,detail:`Delegated`},{id:`later`,label:`Later`,detail:`Low urgency`},{id:`done`,label:`Done`,detail:`Completed items`}];function mg(e,t){return!!(e&&e.kind===t.kind&&e.beforeId===t.beforeId&&e.afterId===t.afterId)}function hg(e){return e.length>0?e[e.length-1]??null:null}function gg(e,t){return{kind:`priority`,beforeId:e[t-1]?.id??null,afterId:e[t]?.id??null}}function _g(e){return{kind:`priority`,beforeId:hg(e)?.id??null,afterId:null}}function vg(e,t,n){let r=e.filter(e=>e.id!==t),i=n.beforeId?r.find(e=>e.id===n.beforeId)??null:null,a=n.afterId?r.find(e=>e.id===n.afterId)??null:null;return i||a?{previous:i,next:a}:n.beforeId&&!n.afterId?{previous:hg(r),next:null}:!n.beforeId&&n.afterId?{previous:null,next:r[0]??null}:{previous:hg(r),next:null}}function yg(e){let t=_g(e.items),n=(t,n)=>e.drag.over(t,n),r=(t,n)=>e.drag.drop(t,n);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-sidebar-priority`,"data-drop-target":e.drag.dropTarget?.kind===`priority`?`true`:`false`,onDragOver:e=>n(t,e),onDragLeave:e.drag.leave,onDrop:e=>r(t,e),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Priority Order`}),(0,F.jsx)(`small`,{children:`drag to rank`})]}),(0,F.jsxs)(`ol`,{children:[e.items.map((t,i)=>{let a=gg(e.items,i);return(0,F.jsxs)(`li`,{draggable:!e.loading&&t.status!==`done`,"data-drop-target":mg(e.drag.dropTarget,a)?`true`:void 0,"data-reminder-drop-before-id":a.beforeId??void 0,"data-reminder-drop-after-id":a.afterId??void 0,onDragStart:n=>e.drag.start(t,n),onDragEnd:e.drag.end,onDragOver:e=>{e.stopPropagation(),n(a,e)},onDragLeave:t=>{t.stopPropagation(),e.drag.leave()},onDrop:e=>{e.stopPropagation(),r(a,e)},children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-sidebar-priority-index`,children:i+1}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`b`,{children:t.title}),(0,F.jsxs)(`small`,{children:[t.status,` • `,t.priority]})]})]},t.id)}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-sidebar-priority-empty`,children:`No open reminders`}):null]})]})}function bg(e){let t=e.items.filter(e=>e.status!==`done`).length,n=lg(e.items,5),r=fg((t,n)=>{if(n.kind!==`priority`)return;let{previous:r,next:i}=vg(lg(e.items,e.items.length),t,n);e.onUpdate(t,{manualRank:Zh(r,i)})});return(0,F.jsxs)(`nav`,{className:`dashboard-reminders-sidebar`,"aria-label":`Reminders views`,children:[(0,F.jsxs)(`header`,{className:`dashboard-reminders-sidebar-header`,children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-sidebar-title`,children:`Reminders`}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-refresh`,onClick:e.onRefresh,disabled:e.loading,children:e.loading?`Loading`:`Refresh`})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminders-source`,"data-state":`ok`,children:[t,` open / `,e.items.length,` total`]}),(0,F.jsx)(yg,{items:n,loading:e.loading,drag:r}),(0,F.jsx)(`ul`,{className:`dashboard-reminders-sidebar-list`,children:pg.map(t=>(0,F.jsx)(`li`,{children:(0,F.jsxs)(`button`,{type:`button`,className:`dashboard-reminders-sidebar-item${e.view===t.id?` is-active`:``}`,onClick:()=>e.onViewChange(t.id),"aria-pressed":e.view===t.id,children:[(0,F.jsx)(`span`,{children:t.label}),(0,F.jsx)(`small`,{children:t.detail}),(0,F.jsx)(`b`,{children:cg(t.id,e.items)})]})},t.id))})]})}function xg(e){let[t,n]=(0,P.useState)(!1),[r,i]=(0,P.useState)(e.item.title),a=(0,P.useRef)(null);(0,P.useEffect)(()=>{t||i(e.item.title)},[t,e.item.title]),(0,P.useEffect)(()=>{t&&a.current?.select()},[t]);function o(){let t=r.trim();if(n(!1),!t||t===e.item.title){i(e.item.title);return}e.onRename(e.item.id,t)}function s(){i(e.item.title),n(!1)}function c(e){e.key===`Enter`?(e.preventDefault(),o()):e.key===`Escape`&&(e.preventDefault(),s())}return t?(0,F.jsx)(`input`,{ref:a,"data-reminder-inline-edit":`true`,className:`dashboard-reminders-inline-title-input`,"aria-label":`Reminder title`,disabled:e.busy,value:r,onChange:e=>i(e.target.value),onBlur:o,onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),onKeyDown:c}):(0,F.jsx)(`span`,{className:`dashboard-reminders-inline-title`,onDoubleClick:e=>{e.preventDefault(),e.stopPropagation(),n(!0)},children:e.item.title})}function Sg(e){let[t,n]=(0,P.useState)(``),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(``),[s,c]=(0,P.useState)(``);(0,P.useEffect)(()=>{n(e.item?.title??``),i(e.item?.notes??``),o(Cg(e.item?.dueAt??null)),c(Cg(e.item?.remindAt??null))},[e.item]),(0,P.useEffect)(()=>{if(!e.item)return;let t=t=>{t.key===`Escape`&&e.onClose()};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]);let l=(0,P.useMemo)(()=>e.item?t.trim()!==e.item.title||r!==e.item.notes||a!==Cg(e.item.dueAt)||s!==Cg(e.item.remindAt):!1,[a,r,e.item,s,t]);if(!e.item)return null;let u=e.item;return(0,F.jsx)(`div`,{className:`dashboard-reminder-popover-scrim`,role:`presentation`,onMouseDown:e.onClose,children:(0,F.jsx)(`section`,{className:`dashboard-reminder-popover`,role:`dialog`,"aria-modal":`true`,"aria-label":`Reminder details`,onMouseDown:e=>e.stopPropagation(),children:(0,F.jsxs)(`form`,{onSubmit:n=>{if(n.preventDefault(),!u)return;let i=t.trim();if(!i)return;let o={};if(i!==u.title&&(o.title=i),r!==u.notes&&(o.notes=r),a!==Cg(u.dueAt)&&(o.dueAt=wg(a)),s!==Cg(u.remindAt)&&(o.remindAt=wg(s)),Object.keys(o).length===0){e.onClose();return}e.onSave(u.id,o)},children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Reminder details`}),(0,F.jsx)(`button`,{type:`button`,"aria-label":`Close reminder details`,onClick:e.onClose,children:`×`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Title`}),(0,F.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),"aria-label":`Reminder title`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Notes`}),(0,F.jsx)(`textarea`,{value:r,onChange:e=>i(e.target.value),"aria-label":`Reminder notes`,rows:6})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminder-popover-grid`,children:[(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Due`}),(0,F.jsx)(`input`,{type:`datetime-local`,value:a,onChange:e=>o(e.target.value),"aria-label":`Reminder due date`})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`Remind`}),(0,F.jsx)(`input`,{type:`datetime-local`,value:s,onChange:e=>c(e.target.value),"aria-label":`Reminder notification date`})]})]}),(0,F.jsxs)(`footer`,{children:[(0,F.jsx)(`button`,{type:`button`,onClick:e.onClose,children:`Cancel`}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.busy||!t.trim()||!l,children:`Save`})]})]})})})}function Cg(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=t.getTimezoneOffset()*6e4;return new Date(t.getTime()-n).toISOString().slice(0,16)}function wg(e){if(!e.trim())return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}var Tg={matrix:`Priority Matrix`,focused:`Focus`,important:`Important, Not Urgent`,waiting:`Waiting / Delegated`,later:`Later`,done:`Done`};function Eg(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString([],{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Dg(e){let t=[e.status,e.priority],n=Eg(e.remindAt),r=Eg(e.dueAt);return r&&t.push(`due ${r}`),n&&t.push(`remind ${n}`),e.linkedInstance&&t.push(e.linkedInstance),e.notificationStatus!==`pending`&&t.push(e.notificationStatus),t.join(` • `)}function Og(e,t){return!e||e.kind!==t.kind||e.beforeId!==t.beforeId||e.afterId!==t.afterId?!1:e.kind===`bucket`&&t.kind===`bucket`?e.bucket===t.bucket:!0}function kg(e,t,n){return{kind:`bucket`,bucket:e,beforeId:t[n-1]?.id??null,afterId:t[n]?.id??null}}function Ag(e,t,n){return{kind:`bucket`,bucket:e,beforeId:t[n]?.id??null,afterId:t[n+1]?.id??null}}function jg(e,t){return{kind:`bucket`,bucket:e,beforeId:Lg(t)?.id??null,afterId:null}}function Mg(e,t){return{kind:`priority`,beforeId:e[t-1]?.id??null,afterId:e[t]?.id??null}}function Ng(e,t){return{kind:`priority`,beforeId:e[t]?.id??null,afterId:e[t+1]?.id??null}}function Pg(e){return{kind:`priority`,beforeId:Lg(e)?.id??null,afterId:null}}function Fg(e){let t=e.currentTarget.getBoundingClientRect();return e.clientY>t.top+t.height/2}function Ig(e,t){return t.kind===`priority`?lg(e,e.length):og(t.bucket,e)}function Lg(e){return e.length>0?e[e.length-1]??null:null}function Rg(e,t,n){let r=e.filter(e=>e.id!==t),i=n.beforeId?r.find(e=>e.id===n.beforeId)??null:null,a=n.afterId?r.find(e=>e.id===n.afterId)??null:null;return i||a?{previous:i,next:a}:n.beforeId&&!n.afterId?{previous:Lg(r),next:null}:!n.beforeId&&n.afterId?{previous:null,next:r[0]??null}:{previous:Lg(r),next:null}}function zg(e){return e.feed.error?(0,F.jsx)(`p`,{className:`dashboard-reminders-status`,"data-state":`error`,children:e.feed.error}):(0,F.jsxs)(`p`,{className:`dashboard-reminders-status`,children:[e.feed.items.length,` reminder(s) stored in the dashboard database`]})}function Bg(e){let t=e.item.status===`done`,n=e.dropTarget?Og(e.activeDropTarget??null,e.dropTarget):!1;return(0,F.jsxs)(`li`,{className:`dashboard-reminders-row`,"data-priority":e.item.priority,"data-status":e.item.status,"data-drop-target":n?`true`:void 0,"data-reminder-drop-before-id":e.dropTarget?.beforeId??void 0,"data-reminder-drop-after-id":e.dropTarget?.afterId??void 0,draggable:!t&&!e.busy,onDragStart:t=>e.onDragStart?.(e.item,t),onDragEnd:e.onDragEnd,onDragOver:t=>{let n=e.resolveDropTarget?.(t)??e.dropTarget;n&&(t.stopPropagation(),e.onDragOverTarget?.(n,t))},onDragLeave:t=>{e.dropTarget&&(t.stopPropagation(),e.onDragLeaveTarget?.())},onDrop:t=>{let n=e.resolveDropTarget?.(t)??e.dropTarget;n&&(t.stopPropagation(),e.onDropTarget?.(n,t))},children:[(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-row-check`,"aria-label":t?`Mark open`:`Mark done`,onClick:()=>e.onToggleDone(e.item),children:t?`✓`:``}),(0,F.jsxs)(`span`,{className:`dashboard-reminders-row-content`,children:[(0,F.jsx)(xg,{item:e.item,busy:e.busy,onRename:e.onRename}),(0,F.jsx)(`small`,{children:Dg(e.item)})]}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-row-more`,"aria-label":`Open reminder details`,onClick:()=>e.onOpenDetails(e.item),children:`•••`}),e.item.priority===`high`?(0,F.jsx)(`span`,{className:`dashboard-reminders-row-flag`,"aria-label":`high priority`,children:`!`}):null]})}function Vg(e){let[t,n]=(0,P.useState)(``);return(0,F.jsxs)(`li`,{className:`dashboard-reminders-create-row`,children:[(0,F.jsx)(`span`,{"aria-hidden":`true`}),(0,F.jsx)(`form`,{onSubmit:r=>{r.preventDefault();let i=t.trim();i&&(e.onCreate({title:i,...rg[e.bucket]}),n(``))},children:(0,F.jsx)(`input`,{"aria-label":`Create ${e.bucket} reminder`,placeholder:`New reminder`,value:t,onChange:e=>n(e.target.value)})})]})}function Hg(e){let t=jg(e.section.id,e.items);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-quadrant`,"data-tone":e.section.tone,"data-drop-target":e.dropTarget?.kind===`bucket`&&e.dropTarget.bucket===e.section.id?`true`:`false`,onDragOver:n=>e.onDragOver(t,n),onDragLeave:e.onDragLeave,onDrop:n=>e.onDrop(t,n),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`h3`,{children:e.section.title}),(0,F.jsx)(`span`,{children:e.items.length})]}),(0,F.jsxs)(`ul`,{children:[e.items.map((t,n)=>{let r=kg(e.section.id,e.items,n);return(0,F.jsx)(Bg,{item:t,busy:e.busy,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,dropTarget:r,resolveDropTarget:t=>Fg(t)?Ag(e.section.id,e.items,n):r,activeDropTarget:e.dropTarget,onDragOverTarget:e.onDragOver,onDragLeaveTarget:e.onDragLeave,onDropTarget:e.onDrop},t.id)}),(0,F.jsx)(Vg,{bucket:e.section.id,onCreate:e.onCreate}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`No reminders`}):null]})]})}function Ug(e){return(0,F.jsxs)(`div`,{className:`dashboard-reminders-matrix-wrap`,children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-axis dashboard-reminders-axis-importance`,children:`Importance`}),(0,F.jsx)(`span`,{className:`dashboard-reminders-axis dashboard-reminders-axis-urgency`,children:`Urgency`}),(0,F.jsx)(`div`,{className:`dashboard-reminders-matrix-board`,children:ng.map(t=>(0,F.jsx)(Hg,{section:t,items:og(t.id,e.items),busy:e.busy,dropTarget:e.dropTarget,onCreate:e.onCreate,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,onDragOver:e.onDragOver,onDragLeave:e.onDragLeave,onDrop:e.onDrop},t.id))})]})}function Wg(e){let t=Pg(e.items);return(0,F.jsxs)(`section`,{className:`dashboard-reminders-top-priority`,"aria-label":`Top priority reminders`,"data-drop-target":e.dropTarget?.kind===`priority`?`true`:`false`,onDragOver:n=>e.onDragOver(t,n),onDragLeave:e.onDragLeave,onDrop:n=>e.onDrop(t,n),children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`span`,{children:`Top Priority 3`}),(0,F.jsxs)(`small`,{children:[e.items.length,`/3`]})]}),(0,F.jsxs)(`ol`,{children:[e.items.map((t,n)=>{let r=Mg(e.items,n);return(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`dashboard-reminders-top-index`,children:n+1}),(0,F.jsx)(Bg,{item:t,busy:e.busy,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd,dropTarget:r,resolveDropTarget:t=>Fg(t)?Ng(e.items,n):r,activeDropTarget:e.dropTarget,onDragOverTarget:e.onDragOver,onDragLeaveTarget:e.onDragLeave,onDropTarget:e.onDrop})]},t.id)}),e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-top-empty`,children:`No top priority reminders`}):null]})]})}function Gg(e){return(0,F.jsxs)(`div`,{className:`dashboard-reminders-smart-list`,"aria-busy":e.loading,children:[(0,F.jsxs)(`header`,{children:[(0,F.jsx)(`h3`,{children:e.title}),(0,F.jsx)(`span`,{children:e.items.length})]}),(0,F.jsx)(`ul`,{children:e.loading&&e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`Loading reminders...`}):e.items.length===0?(0,F.jsx)(`li`,{className:`dashboard-reminders-empty-row`,children:`No reminders`}):e.items.map(t=>(0,F.jsx)(Bg,{item:t,busy:e.loading,onToggleDone:e.onToggleDone,onRename:e.onRename,onOpenDetails:e.onOpenDetails,onDragStart:e.onDragStart,onDragEnd:e.onDragEnd},t.id))})]})}function Kg(e){let[t,n]=(0,P.useState)(null),r=sg(e.view,e.feed.items),i=Tg[e.view],a=lg(e.feed.items,3),o=fg((t,n)=>{let r=e.feed.items.find(e=>e.id===t);if(!r)return;let{previous:i,next:a}=Rg(Ig(e.feed.items,n),t,n),o=Zh(i,a);if(n.kind===`priority`){e.onUpdate(t,{manualRank:o});return}let s=ag(r)===n.bucket?{}:ig(n.bucket);e.onUpdate(t,{...s,manualRank:o})}),s=t=>{e.onUpdate(t.id,{status:t.status===`done`?`open`:`done`})},c=(t,n)=>{e.onUpdate(t,{title:n})};return(0,F.jsxs)(`section`,{className:`dashboard-reminders-workspace`,"aria-hidden":!e.active,children:[(0,F.jsxs)(`header`,{className:`dashboard-reminders-workspace-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h2`,{children:i}),(0,F.jsx)(zg,{feed:e.feed})]}),(0,F.jsxs)(`div`,{className:`dashboard-reminders-workspace-actions`,children:[(0,F.jsx)(ui,{topic:`reminders`,label:`Open Reminders help`,onOpen:e.onOpenHelpTopic}),(0,F.jsx)(`button`,{type:`button`,className:`dashboard-reminders-sync-button`,onClick:e.onRefresh,disabled:e.feed.loading,children:e.feed.loading?`Loading...`:`Refresh`})]})]}),e.view===`matrix`?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Wg,{items:a,busy:e.feed.loading,dropTarget:o.dropTarget,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end,onDragOver:o.over,onDragLeave:o.leave,onDrop:o.drop}),(0,F.jsx)(Ug,{items:r,busy:e.feed.loading,dropTarget:o.dropTarget,onCreate:e.onCreate,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end,onDragOver:o.over,onDragLeave:o.leave,onDrop:o.drop})]}):(0,F.jsx)(Gg,{title:i,items:r,loading:e.feed.loading,onToggleDone:s,onRename:c,onOpenDetails:n,onDragStart:o.start,onDragEnd:o.end}),(0,F.jsx)(Sg,{item:t,busy:e.feed.loading,onClose:()=>n(null),onSave:(t,r)=>{e.onUpdate(t,r),n(null)}})]})}var qg=`/api/dashboard/reminders`;async function Jg(e){if(!e.ok){let t=await e.text().catch(()=>``);throw Error(`${e.status} ${t||e.statusText}`)}if(!(e.headers.get(`content-type`)||``).includes(`application/json`))throw Error(`Reminders API is not available in the running dashboard server. Rebuild and restart the dashboard backend to enable sync.`);return await e.json()}function Yg(e){return{...e,notes:e.notes??``,manualRank:typeof e.manualRank==`number`&&Number.isFinite(e.manualRank)?e.manualRank:null,dueAt:e.dueAt??null,remindAt:e.remindAt??null,linkedInstance:e.linkedInstance??null,subtasks:Array.isArray(e.subtasks)?e.subtasks:[],notificationAttemptedAt:e.notificationAttemptedAt??null,notificationError:e.notificationError??null,instanceId:e.instanceId??null,messageId:e.messageId??null,turnIndex:e.turnIndex??null,port:e.port??null,threadKey:e.threadKey??null,sourceText:e.sourceText??null}}function Xg(e,t){if(`manualRank`in e&&!Object.hasOwn(t,`manualRank`))throw Error(`Manual reminder ordering requires the dashboard backend to be rebuilt and restarted.`)}async function Zg(){let e=await Jg(await fetch(qg,{credentials:`same-origin`,cache:`no-store`}));return{...e,items:Array.isArray(e.items)?e.items.map(Yg):[]}}async function Qg(e){return Yg((await Jg(await fetch(qg,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}))).item)}async function $g(e,t){let n=await Jg(await fetch(`${qg}/${encodeURIComponent(e)}`,{method:`PATCH`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}));return Xg(t,n.item),Yg(n.item)}function e_(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(!1),[a,o]=(0,P.useState)(null),s=(0,P.useCallback)(async()=>{i(!0),o(null);try{n((await Zg()).items||[])}catch(e){o(e.message)}finally{i(!1)}},[]),c=(0,P.useCallback)(async()=>{await s()},[s]),l=(0,P.useCallback)(async e=>{o(null);try{let t=await Qg(e);n(e=>[t,...e.filter(e=>e.id!==t.id)])}catch(e){o(e.message)}},[]),u=(0,P.useCallback)(async(e,t)=>{o(null);try{let r=await $g(e,t);n(t=>t.map(t=>t.id===e?r:t))}catch(e){o(e.message)}},[]);return(0,P.useEffect)(()=>{e.active&&s()},[e.active,s]),{items:t,loading:r,error:a,refresh:c,create:l,update:u}}function t_(e){return e.trim().toLowerCase()}function n_(e,t){let n=t_(e),r=t_(t);if(!r)return 1;if(n.startsWith(r))return 1e3-n.length;let i=n.indexOf(r);if(i>=0)return 700-i;let a=-1,o=0,s=0;for(let e of r){let t=n.indexOf(e,a+1);if(t<0)return null;o=t===a+1?o+1:0,s+=4+o*3-Math.min(t,40)*.1,a=t}return s}function r_(e,t){let n=[{value:e.label,boost:120},{value:e.section,boost:40},...(e.keywords||[]).map(e=>({value:e,boost:80}))],r=null;for(let i of n){let n=n_(i.value,t);if(n==null)continue;let a=n+i.boost;(!r||a>r.score)&&(r={command:e,score:a})}return r}function i_(e,t){return e.map(e=>r_(e,t.trim())).filter(e=>!!e).sort((e,t)=>{if(t.score!==e.score)return t.score-e.score;let n=e.command.section.localeCompare(t.command.section);return n===0?e.command.label.localeCompare(t.command.label):n})}function a_(e,t,n){return n<=0?0:Math.max(0,Math.min(n-1,e+t))}function o_(e){let t=qi(),[n,r]=(0,P.useState)(!1),[i,a]=(0,P.useState)(``),[o,s]=(0,P.useState)(0),c=(0,P.useRef)(null),l=(0,P.useMemo)(()=>i_(t,i),[t,i]),u=l[o]?`notes-command-palette-option-${o}`:void 0;(0,P.useEffect)(()=>{if(!e.active){r(!1);return}function t(e){ih(e)&&(e.preventDefault(),r(e=>!e))}return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e.active]),(0,P.useEffect)(()=>{n&&(a(``),s(0),requestAnimationFrame(()=>c.current?.focus()))},[n]),(0,P.useEffect)(()=>{o>=l.length&&s(Math.max(0,l.length-1))},[o,l.length]),(0,P.useEffect)(()=>{(u?document.getElementById(u):null)?.scrollIntoView({block:`nearest`})},[u]);function d(e){if(!e.disabled){r(!1);try{Promise.resolve(e.run()).catch(e=>{console.warn(`[notes-command-palette]`,e)})}catch(e){console.warn(`[notes-command-palette]`,e)}}}function f(){let e=l[o]?.command;e&&d(e)}function p(e){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`p`){e.preventDefault(),e.stopPropagation();return}e.key===`ArrowDown`?(e.preventDefault(),s(e=>a_(e,1,l.length))):e.key===`ArrowUp`?(e.preventDefault(),s(e=>a_(e,-1,l.length))):e.key===`Enter`?(e.preventDefault(),f()):e.key===`Escape`&&(e.preventDefault(),r(!1))}return n?(0,F.jsx)(`div`,{className:`notes-command-palette-backdrop`,role:`presentation`,onClick:()=>r(!1),"data-notes-palette":!0,children:(0,F.jsxs)(`section`,{className:`notes-command-palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Notes command palette`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,F.jsx)(`input`,{ref:c,className:`notes-command-palette-input`,type:`search`,placeholder:`Run command`,value:i,onChange:e=>{a(e.currentTarget.value),s(0)},onKeyDown:p,"aria-label":`Run Notes command`,"aria-controls":`notes-command-palette-results`,"aria-activedescendant":u}),(0,F.jsxs)(`div`,{id:`notes-command-palette-results`,className:`notes-command-palette-list`,role:`listbox`,"aria-label":`Matching commands`,children:[l.map((e,t)=>{let n=e.command,r=t===o;return(0,F.jsxs)(`button`,{id:`notes-command-palette-option-${t}`,type:`button`,role:`option`,"aria-selected":r,"aria-disabled":n.disabled||void 0,className:`notes-command-palette-item${r?` is-active`:``}${n.disabled?` is-disabled`:``}`,onMouseEnter:()=>s(t),onClick:()=>d(n),children:[(0,F.jsx)(`span`,{className:`notes-command-palette-title`,children:n.label}),(0,F.jsx)(`span`,{className:`notes-command-palette-meta`,children:n.disabledReason||n.section}),n.shortcut&&(0,F.jsx)(`kbd`,{className:`notes-command-palette-shortcut`,children:n.shortcut})]},n.id)}),l.length===0&&(0,F.jsx)(`p`,{className:`notes-command-palette-empty`,children:`No matching commands.`})]}),(0,F.jsxs)(`footer`,{className:`notes-command-palette-footer`,children:[(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Up/Down`}),` move`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Enter`}),` run`]}),(0,F.jsxs)(`span`,{children:[(0,F.jsx)(`kbd`,{children:`Esc`}),` close`]})]})]})}):null}function s_(e){return(0,F.jsx)(`section`,{className:`workspace-surface${e.active?` is-active`:``}`,hidden:!e.active,"aria-hidden":!e.active,children:e.children})}function c_(e){let[t,n]=(0,P.useState)(`matrix`),r=e_({active:e.sidebarMode===`reminders`}),i=!!(e.notesModel.tagFilter&&e.notesSelectedPath&&e.notesSelectedNote&&!e.notesSelectedNote.tags?.includes(e.notesModel.tagFilter));return(0,F.jsxs)(Ki,{children:[e.jawCeoVoiceOverlay,(0,F.jsx)(Jr,{sidebarCollapsed:e.sidebarCollapsed,inspectorCollapsed:e.activityDockCollapsed,inspectorHeight:e.activityDockCollapsed?48:e.activityDockHeight,drawerOpen:e.drawerOpen,onCloseDrawer:e.onCloseDrawer,navigator:(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Wr,{onlineCount:e.onlineCount,collapsed:e.sidebarCollapsed,mode:e.sidebarMode,scheduleWorkspaceEnabled:e.scheduleWorkspaceEnabled,remindersWorkspaceEnabled:e.remindersWorkspaceEnabled,onModeChange:e.onSidebarModeChange,onToggleSidebar:e.onToggleSidebar,helpOpen:e.helpOpen,onToggleHelp:e.onToggleHelp}),(0,F.jsx)(`div`,{id:`manager-sidebar-list`,className:`manager-sidebar-list`,children:e.sidebarMode===`settings`?(0,F.jsx)(li,{activeSection:e.settingsSection,locale:e.locale,onSectionChange:e.onSettingsSectionChange}):e.sidebarMode===`notes`?(0,F.jsx)(ua,{tree:e.notesModel.filteredTree,loading:e.notesModel.loading,error:e.notesModel.error,notesRoot:e.notesModel.notesRoot,selectedPath:e.notesSelectedPath,dirtyPath:e.notesDirtyPath,treeWidth:e.notesTreeWidth,mode:e.notesSidebarMode,searchFocusToken:e.notesSearchFocusToken,tagFilter:e.notesModel.tagFilter,selectedHiddenByFilter:i,onModeChange:e.onNotesSidebarModeChange,onOpenSearch:e.onOpenNotesSearch,onSelectedPathChange:e.onNotesSelectedPathChange,onRefreshTree:e.notesModel.refresh,onClearTagFilter:()=>e.notesModel.setTagFilter(null)}):e.sidebarMode===`board`?(0,F.jsx)(vh,{view:e.boardView,onViewChange:e.onBoardViewChange,instances:e.instances,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts}):e.scheduleWorkspaceEnabled&&e.sidebarMode===`schedule`?(0,F.jsx)(Rh,{activeGroup:e.scheduleGroup,onGroupChange:e.onScheduleGroupChange}):e.remindersWorkspaceEnabled&&e.sidebarMode===`reminders`?(0,F.jsx)(bg,{view:t,onViewChange:n,items:r.items,loading:r.loading,onRefresh:()=>void r.refresh(),onUpdate:(e,t)=>void r.update(e,t)}):(0,F.jsx)(Pr,{active:e.selectedInstance,hiddenCount:e.instances.filter(e=>e.hidden).length,collapsed:e.sidebarCollapsed,children:e.instanceListContent})})]}),workbench:(0,F.jsxs)(`div`,{className:`workspace-surface-stack`,children:[(0,F.jsx)(o_,{active:e.sidebarMode===`notes`}),e.lifecycleMessage&&(0,F.jsxs)(`section`,{className:`state lifecycle-state`,role:`status`,children:[(0,F.jsx)(`span`,{children:e.lifecycleMessage}),(0,F.jsx)(`button`,{type:`button`,className:`state-dismiss`,"aria-label":`Dismiss lifecycle message`,onClick:e.onDismissLifecycleMessage,children:`X`})]}),(0,F.jsxs)(`div`,{className:`workspace-surface-layer`,children:[(0,F.jsx)(s_,{active:e.sidebarMode===`instances`,children:(0,F.jsx)(qr,{mode:e.activeDetailTab,onModeChange:e.onDetailTabChange,header:e.workbenchHeader,modeActions:e.jawCeoWorkbenchButton,overview:e.detailContent(`overview`),preview:(0,F.jsx)(oi,{instance:e.selectedInstance,data:e.data,enabled:e.previewEnabled,active:e.sidebarMode===`instances`&&e.activeDetailTab===`preview`,refreshKey:e.previewRefreshKey,theme:e.previewTheme}),logs:e.detailContent(`logs`),settings:e.detailContent(`settings`)})}),(0,F.jsx)(s_,{active:e.sidebarMode===`notes`,children:(0,F.jsx)(fh,{active:e.sidebarMode===`notes`,selectedPath:e.notesSelectedPath,selectedNote:e.notesSelectedNote,vaultIndex:e.notesModel.index,viewMode:e.notesViewMode,authoringMode:e.notesAuthoringMode,wordWrap:e.notesWordWrap,treeWidth:e.notesTreeWidth,tagFilter:e.notesModel.tagFilter,onOpenSidebarSearch:e.onOpenNotesSearch,onSelectedPathChange:e.onNotesSelectedPathChange,onDirtyPathChange:e.onNotesDirtyPathChange,onViewModeChange:e.onNotesViewModeChange,onAuthoringModeChange:e.onNotesAuthoringModeChange,onWordWrapChange:e.onNotesWordWrapChange,onTreeWidthChange:e.onNotesTreeWidthChange,onTagSelect:e.notesModel.setTagFilter,onWikiLinkNavigate:e.onNotesSelectedPathChange})}),(0,F.jsx)(s_,{active:e.sidebarMode===`settings`,children:(0,F.jsx)(xi,{activeSection:e.settingsSection,ui:e.dashboardSettingsUi,titleSupport:e.titleSupport,onUiPatch:e.onDashboardSettingsPatch,onOpenHelpTopic:e.onOpenHelpTopic})}),(0,F.jsx)(s_,{active:e.sidebarMode===`board`,children:(0,F.jsx)(Ih,{active:e.sidebarMode===`board`,view:e.boardView,onViewChange:e.onBoardViewChange,instances:e.instances,selectedPort:e.selectedInstance?.port??null,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts,onOpenHelpTopic:e.onOpenHelpTopic})}),e.scheduleWorkspaceEnabled?(0,F.jsx)(s_,{active:e.sidebarMode===`schedule`,children:(0,F.jsx)(Jh,{active:e.sidebarMode===`schedule`,activeGroup:e.scheduleGroup,busyPorts:e.busyPorts,onOpenHelpTopic:e.onOpenHelpTopic})}):null,e.remindersWorkspaceEnabled?(0,F.jsx)(s_,{active:e.sidebarMode===`reminders`,children:(0,F.jsx)(Kg,{active:e.sidebarMode===`reminders`,view:t,feed:r,onRefresh:()=>void r.refresh(),onCreate:e=>void r.create(e),onUpdate:(e,t)=>void r.update(e,t),onOpenHelpTopic:e.onOpenHelpTopic})}):null]})]}),inspector:(0,F.jsx)(jr,{collapsed:e.activityDockCollapsed,height:e.activityDockHeight,loading:e.loading,error:e.error,lifecycleMessage:e.lifecycleMessage,selectedInstance:e.selectedInstance,registryMessage:e.registryMessage,events:e.managerEvents,onToggle:e.onToggleActivity,onHeightChange:e.onActivityHeightChange}),sidePanel:e.jawCeoConsoleContent,mobileNav:(0,F.jsx)(Fr,{activeTab:e.activeDetailTab,onOpenInstances:e.onOpenDrawer,onSelectTab:e.onSelectTab,onToggleActivity:e.onToggleActivityFromMobile}),drawer:(0,F.jsx)(Nr,{open:e.drawerOpen,profileFilters:e.drawerProfileFilters,onClose:e.onCloseDrawer,children:e.instanceListContent})})]})}var l_=5e3,u_=1572864,d_=24,f_=`jaw.metricsPanelCollapsed`;async function p_(){let e=await fetch(`/api/dashboard/electron-metrics`);if(!e.ok)throw Error(`electron-metrics failed: ${e.status}`);return await e.json()}function m_(e){return e>=1024*1024?`${(e/1024/1024).toFixed(2)} GB`:`${(e/1024).toFixed(1)} MB`}function h_(e){return e.length>d_?`${e.slice(0,d_-1)}…`:e}function g_(){if(typeof localStorage>`u`)return!1;try{return localStorage.getItem(f_)===`true`}catch{return!1}}function __(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(f_,e?`true`:`false`)}catch{}}function v_(e={}){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(()=>g_());if((0,P.useEffect)(()=>{__(a)},[a]),(0,P.useEffect)(()=>{let e=!1,t=null,r=async()=>{try{let t=await p_();if(e)return;t.available?(n(!0),i(t.snapshot)):(n(!1),i(null))}catch{e||n(!1)}e||(t=setTimeout(r,l_))};return r(),()=>{e=!0,t&&clearTimeout(t)}},[]),t!==!0)return null;if(!r)return(0,F.jsxs)(`div`,{className:`electron-metrics-panel electron-metrics-panel--empty`,"aria-label":`Electron process metrics`,children:[(0,F.jsx)(`div`,{className:`electron-metrics-header`,children:(0,F.jsx)(`span`,{className:`electron-metrics-title`,children:`Desktop metrics`})}),(0,F.jsx)(`div`,{className:`electron-metrics-empty`,children:`awaiting first sample…`})]});let s=[...r.processes].sort((e,t)=>t.rssKb-e.rssKb).slice(0,3),c=r.rssTotalKb>=u_;return(0,F.jsxs)(`div`,{className:`electron-metrics-panel${c?` electron-metrics-panel--warn`:``}`,"aria-label":`Electron process metrics`,children:[(0,F.jsxs)(`div`,{className:`electron-metrics-header`,children:[(0,F.jsx)(`span`,{className:`electron-metrics-title`,children:`Desktop metrics`}),(0,F.jsx)(`button`,{type:`button`,className:`electron-metrics-toggle`,onClick:()=>o(e=>!e),"aria-expanded":!a,"aria-label":a?`Expand metrics panel`:`Collapse metrics panel`,children:a?`▸`:`▾`})]}),!a&&(0,F.jsxs)(`div`,{className:`electron-metrics-body`,children:[c&&(0,F.jsxs)(`div`,{className:`electron-metrics-warn`,children:[(0,F.jsxs)(`span`,{role:`alert`,children:[`Electron RSS total exceeds `,m_(1572864),`.`]}),e.onUnloadPreview&&(0,F.jsx)(`button`,{type:`button`,className:`electron-metrics-unload-btn`,onClick:()=>e.onUnloadPreview?.(),children:`Unload preview`})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`renderers`}),(0,F.jsx)(`span`,{children:r.rendererCount})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`processes`}),(0,F.jsx)(`span`,{children:r.processes.length})]}),(0,F.jsxs)(`div`,{className:`electron-metrics-row`,children:[(0,F.jsx)(`span`,{children:`RSS total`}),(0,F.jsx)(`span`,{children:m_(r.rssTotalKb)})]}),(0,F.jsx)(`div`,{className:`electron-metrics-divider`,"aria-hidden":`true`}),(0,F.jsx)(`div`,{className:`electron-metrics-subtitle`,children:`top by RSS`}),(0,F.jsx)(`ul`,{className:`electron-metrics-list`,children:s.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`electron-metrics-proc`,children:h_(e.name?`${e.type} · ${e.name}`:e.type)}),(0,F.jsx)(`span`,{className:`electron-metrics-proc-rss`,children:m_(e.rssKb)})]},e.pid))})]})]})}var y_=new Set([`notes`,`instances`]);function b_(e){let t=e;return t?.type===`dashboard.invalidate`&&Array.isArray(t.topics)&&t.topics.every(e=>y_.has(e))}function x_(){return(0,P.useEffect)(()=>{function e(e){b_(e.data)&&Zi({...e.data,source:`iframe`})}return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[]),null}var S_=3e4;function C_(){let e=(0,P.useRef)(Date.now());return(0,P.useEffect)(()=>{function t(){document.visibilityState===`visible`&&(Date.now()-e.current<S_||(e.current=Date.now(),Zi({topics:[`notes`,`instances`],reason:`visibility:tab-returned`,source:`visibility`})))}return document.addEventListener(`visibilitychange`,t),()=>document.removeEventListener(`visibilitychange`,t)},[]),null}function w_(e,t){return(e.split(`/`).filter(Boolean).pop()||e).replace(/^\.?cli-jaw-(\d+)-[a-f0-9]{7,}$/i,`cli-jaw $1`).replace(/^\.?cli-jaw-(\d+)$/i,`cli-jaw $1`)||`cli-jaw ${t}`}function T_(e){if(e.label)return e.label;let t=e.instanceId||e.homeDisplay||``;return w_(t.split(`/`).filter(Boolean).pop()||t,e.port)}function E_(e){if(e==null)return`n/a`;let t=Math.floor(e/60);if(t<1)return`${Math.round(e)}s`;let n=Math.floor(t/60);return n<1?`${t}m`:`${n}h ${t%60}m`}var D_=new Set([`schedule`]),O_={BASE_URL:`/dist/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1}.VITE_CLI_JAW_EXPERIMENTAL_DASHBOARD===`1`;function k_(e){return D_.has(e)}function A_(e){return e===`schedule`&&O_||e===`reminders`?e:k_(e)?`instances`:e}function j_(e){return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(x_,{}),(0,F.jsx)(C_,{}),(0,F.jsx)(Zn,{sidebarCollapsed:e.view.sidebarCollapsed,commandBar:(0,F.jsx)(Gn,{query:e.query,loading:e.loading,onQueryChange:e.setQuery,onRefresh:()=>void e.load(),onOpenDrawer:()=>e.view.setDrawerOpen(!0),theme:e.theme.theme,onThemeChange:e.theme.setTheme,onOpenPalette:e.palette.toggle}),workspace:(0,F.jsx)(c_,{sidebarCollapsed:e.view.sidebarCollapsed,activityDockCollapsed:e.view.activityDockCollapsed,activityDockHeight:e.view.activityDockHeight,drawerOpen:e.view.drawerOpen,onCloseDrawer:()=>e.view.setDrawerOpen(!1),onlineCount:e.summary.online||0,sidebarMode:e.view.sidebarMode,scheduleWorkspaceEnabled:O_,remindersWorkspaceEnabled:!0,onSidebarModeChange:e.handleSidebarModeChange,onToggleSidebar:e.handleSidebarToggle,helpOpen:e.helpOpen,onToggleHelp:()=>{e.setHelpTopic(null),e.setHelpOpen(e=>!e)},onOpenHelpTopic:e.onOpenHelpTopic,settingsSection:e.settingsSection,locale:e.view.locale,onSettingsSectionChange:e.setDashboardSettingsSection,notesModel:e.notesModel,notesSelectedPath:e.view.notesSelectedPath,notesSelectedNote:e.notesSelectedNote,notesDirtyPath:e.notesDirtyPath,notesTreeWidth:e.view.notesTreeWidth,notesSidebarMode:e.notesSidebarMode,notesSearchFocusToken:e.notesSearchFocusToken,notesViewMode:e.view.notesViewMode,notesAuthoringMode:e.view.notesAuthoringMode,notesWordWrap:e.view.notesWordWrap,onNotesSidebarModeChange:e.setNotesSidebarMode,onOpenNotesSearch:e.openNotesSidebarSearch,onNotesSelectedPathChange:e.handleNotesSelectedPathChange,onNotesDirtyPathChange:e.setNotesDirtyPath,onNotesViewModeChange:e.handleNotesViewModeChange,onNotesAuthoringModeChange:e.handleNotesAuthoringModeChange,onNotesWordWrapChange:e.handleNotesWordWrapChange,onNotesTreeWidthChange:e.handleNotesTreeWidthChange,boardView:e.boardView,onBoardViewChange:e.setBoardView,scheduleGroup:e.scheduleGroup,onScheduleGroupChange:e.setScheduleGroup,instances:e.instances,selectedInstance:e.selectedInstance,data:e.data,titlesByPort:e.titlesByPort,busyPorts:e.busyPorts,activeDetailTab:e.view.activeDetailTab,onDetailTabChange:e.handleTabChange,workbenchHeader:e.workbenchHeader,detailContent:e.detailContent,previewEnabled:e.previewEnabled,previewRefreshKey:e.previewRefreshKey,previewTheme:e.theme.resolved,lifecycleMessage:e.lifecycleMessage,onDismissLifecycleMessage:e.onDismissLifecycleMessage,instanceListContent:e.instanceListContent,loading:e.loading,jawCeoWorkbenchButton:e.jawCeoWorkbenchButton,jawCeoVoiceOverlay:e.jawCeoVoiceOverlay,jawCeoConsoleContent:e.jawCeoConsoleContent,error:e.error,registryMessage:e.registryMessage,managerEvents:e.activityEvents,onToggleActivity:e.handleActivityToggle,onActivityHeightChange:e.handleActivityHeight,onOpenDrawer:()=>e.view.setDrawerOpen(!0),onSelectTab:e.handleTabChange,onToggleActivityFromMobile:e.activityUnreadOpenAndMarkSeen,drawerProfileFilters:e.drawerProfileFilters,dashboardSettingsUi:e.dashboardSettingsUi,titleSupport:e.titleSupport,onDashboardSettingsPatch:e.handleDashboardSettingsPatch}),activityHeight:e.view.activityDockCollapsed?48:e.view.activityDockHeight}),(0,F.jsx)(Xn,{open:e.palette.open,onClose:e.palette.close,instances:e.instances,getLabel:T_,onSelectInstance:e.handleSelectInstance,theme:e.theme.theme,onCycleTheme:e.cycleTheme,onRefresh:()=>void e.load(),onToggleHidden:()=>{let t=!e.showHidden;e.setShowHidden(t),e.load(t)},showHidden:e.showHidden,onOpenSelected:e.openSelectedInBrowser,selectedInstance:e.selectedInstance}),(0,F.jsx)(v_,{onUnloadPreview:()=>e.setPreviewEnabled(!1)}),(0,F.jsx)(yr,{open:e.helpOpen,topic:e.helpTopic??e.view.sidebarMode,onClose:()=>e.setHelpOpen(!1)}),e.autoUnloadNotice&&(0,F.jsxs)(`div`,{className:`preview-auto-unload-notice`,role:`status`,children:[`Preview was unloaded after 5 minutes of inactivity. Toggle the preview switch to re-enable.`,(0,F.jsx)(`button`,{type:`button`,className:`preview-auto-unload-dismiss`,"aria-label":`Dismiss preview auto-unload notice`,onClick:()=>e.setAutoUnloadNotice(!1),children:`x`})]})]})}function M_(e){if(!(e instanceof HTMLElement))return!1;if(e.isContentEditable)return!0;let t=e.tagName.toLowerCase();return t===`input`||t===`textarea`||t===`select`?!0:!!e.closest(`[contenteditable="true"], .cm-editor, .ProseMirror, [data-milkdown-root]`)}function N_(e){let t=e.instance,n=!!t?.ok,r=e.previewEnabled?`Preview on`:`Preview off`,i=!!(t||e.onOpenHelpTopic);return(0,F.jsxs)(`div`,{className:`detail-header`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`p`,{className:`eyebrow`,children:`Selected instance`}),(0,F.jsx)(`h2`,{children:t?T_(t):`No instance selected`}),(0,F.jsx)(`span`,{children:t?.workingDir||t?.url||`Select an online instance to inspect it.`}),t?.projectDirs&&t.projectDirs.length>0&&(0,F.jsxs)(`div`,{className:`project-dirs`,children:[(0,F.jsx)(`span`,{className:`label`,children:`Projects:`}),t.projectDirs.map((e,t)=>(0,F.jsx)(`span`,{className:`project-dir`,title:e,children:e.split(/[/\\]/).slice(-2).join(`/`)},t))]})]}),i&&(0,F.jsxs)(`div`,{className:`detail-header-actions`,children:[e.onOpenHelpTopic?(0,F.jsx)(ui,{topic:`instances`,label:`Open Instances help`,onOpen:e.onOpenHelpTopic}):null,t?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{className:`preview-inline-status ${t.ok&&e.previewEnabled?`is-ready`:`is-unavailable`}`,"aria-label":t.ok&&e.previewEnabled?`Preview ready`:`Preview unavailable`,title:t.ok&&e.previewEnabled?`Preview ready`:`Preview unavailable`}),(0,F.jsxs)(`button`,{type:`button`,className:`preview-switch ${e.previewEnabled?`is-on`:`is-off`}`,role:`switch`,"aria-checked":e.previewEnabled,disabled:!n,onClick:()=>e.onPreviewEnabledChange(!e.previewEnabled),children:[(0,F.jsx)(`span`,{className:`preview-switch-track`,"aria-hidden":`true`}),(0,F.jsx)(`span`,{children:r})]}),(0,F.jsx)(`button`,{type:`button`,className:`preview-refresh-button`,disabled:!n||!e.previewEnabled,onClick:e.onPreviewRefresh,children:`Refresh`}),(0,F.jsxs)(`a`,{className:`open-link`,href:t.url,target:`_blank`,rel:`noreferrer`,children:[(0,F.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,stroke:`currentColor`,strokeWidth:`2`,fill:`none`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}),(0,F.jsx)(`polyline`,{points:`15 3 21 3 21 9`}),(0,F.jsx)(`line`,{x1:`10`,y1:`14`,x2:`21`,y2:`3`})]}),`Open`]})]}):null]})]})}var P_=`jaw.previewEnabled`;function F_(){if(typeof localStorage>`u`)return!1;try{let e=localStorage.getItem(P_);return e===null?!1:e===`true`}catch{return!1}}function I_(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(P_,e?`true`:`false`)}catch{}}var L_=300*1e3;function R_(e){let{onUnload:t,idleMs:n,doc:r,setTimeout:i,clearTimeout:a,now:o}=e,s=null,c=null,l=!1,u=()=>{l||(l=!0,t())},d=()=>{c=o(),s=i(()=>{s=null,u()},n)},f=()=>{s!==null&&(a(s),s=null)},p=()=>{if(l)return;if(r.hidden){c===null&&d();return}let e=c===null?0:o()-c;f(),c=null,e>=n&&u()};return r.hidden&&d(),r.addEventListener(`visibilitychange`,p),r.addEventListener(`resume`,p),()=>{r.removeEventListener(`visibilitychange`,p),r.removeEventListener(`resume`,p),f()}}function z_(e){let{enabled:t,onUnload:n,idleMs:r=L_}=e,i=(0,P.useRef)(n);i.current=n,(0,P.useEffect)(()=>{if(t&&!(typeof document>`u`))return R_({onUnload:()=>i.current(),idleMs:r,doc:document,setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),now:()=>Date.now()})},[t,r])}function B_(e){let t={ready:0,legacy:0,offline:0,byPort:e};for(let n of Object.values(e))t[n]+=1;return t}function V_(e,t){return{selectedPort:e.selectedPort,selectedTab:e.activeDetailTab,sidebarCollapsed:e.sidebarCollapsed,activityDockCollapsed:e.activityDockCollapsed,activityDockHeight:e.activityDockHeight,activitySeenAt:null,activitySeenByPort:{},uiTheme:t,locale:e.locale,sidebarMode:e.sidebarMode,notesSelectedPath:e.notesSelectedPath,notesViewMode:e.notesViewMode,notesAuthoringMode:e.notesAuthoringMode,notesWordWrap:e.notesWordWrap,notesTreeWidth:e.notesTreeWidth,showLatestActivityTitles:e.showLatestActivityTitles,showInlineLabelEditor:e.showInlineLabelEditor,showSidebarRuntimeLine:e.showSidebarRuntimeLine,showSelectedRowActions:e.showSelectedRowActions,dashboardShortcutsEnabled:e.dashboardShortcutsEnabled,dashboardShortcutKeymap:e.dashboardShortcutKeymap}}function H_(e,t,n){let r=(0,P.useRef)(t);r.current=t;let i=(0,P.useRef)(void 0);(0,P.useEffect)(()=>Qi(e,()=>{clearTimeout(i.current),i.current=setTimeout(()=>r.current(),100)},n),[e,n])}var U_=5e3;function W_(e){let t=(0,P.useRef)(null);(0,P.useEffect)(()=>{if(!e)return;let n=!1;async function r(){try{let e=await m();if(n)return;t.current!==null&&e!==t.current&&Zi({topics:[`notes`],reason:`notes:external-change`,source:`visibility`,sourceId:`external-sync`}),t.current=e}catch{}}r();let i=setInterval(()=>void r(),U_);return()=>{n=!0,clearInterval(i)}},[e])}function G_(e){for(let t of e){if(t.kind===`file`)return t.path;let e=G_(t.children||[]);if(e)return e}return null}function K_(e,t){for(let n of e)if(n.kind===`file`&&n.path===t||K_(n.children||[],t))return!0;return!1}function q_(e,t){let n=[];for(let r of e){if(r.kind===`file`){t.has(r.path)&&n.push(r);continue}let e=q_(r.children||[],t);e.length>0&&n.push({...r,children:e})}return n}function J_(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(!1),[s,c]=(0,P.useState)(null),[l,u]=(0,P.useState)(null),[d,f]=(0,P.useState)(null),p=(0,P.useRef)(0),m=(0,P.useRef)(e.selectedPath),h=(0,P.useRef)(e.onSelectedPathChange);m.current=e.selectedPath,h.current=e.onSelectedPathChange,W_(e.active),(0,P.useEffect)(()=>{!e.active||l||T().then(e=>u(e.root)).catch(()=>{})},[e.active,l]);let g=(0,P.useCallback)(async(e=m.current)=>{let t=p.current+1;p.current=t,o(!0),c(null);try{let[r,a]=await Promise.all([ae(),le()]);if(t!==p.current)return;n(r),i(a);let o=e&&K_(r,e)?e:G_(r);o!==m.current&&h.current(o)}catch(e){t===p.current&&c(e.message)}finally{t===p.current&&o(!1)}},[]);return H_(`notes`,()=>{e.active&&g()},`notes-sidebar`),(0,P.useEffect)(()=>{e.active&&g()},[e.active,g]),{tree:t,filteredTree:(0,P.useMemo)(()=>{if(!d||!r)return t;let e=new Set;for(let t of r.notes)t.tags&&t.tags.includes(d)&&e.add(t.path);return e.size===0?[]:q_(t,e)},[d,t,r]),index:r,loading:a,error:s,notesRoot:l,tagFilter:d,setTagFilter:f,refresh:g}}var Y_=new Set([`instances`,`board`,`schedule`,`reminders`,`notes`,`settings`]);function X_(e){let t=new URLSearchParams(e).get(`sidebar`);return Y_.has(t)?t:null}function Z_(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(null),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(null),c=(0,P.useCallback)(e=>(t(e.registry),r(e.status),s(e.status.error),e),[]);return{registry:e,status:n,saving:i,error:o,apply:c,refresh:(0,P.useCallback)(async()=>{try{return c(await Pe())}catch(e){throw s(e.message),e}},[c]),save:(0,P.useCallback)(async e=>{a(!0);try{return c(await De(e))}catch(e){return s(e.message),null}finally{a(!1)}},[c])}}function Q_(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(`overview`),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(!1),[c,l]=(0,P.useState)(!1),[u,d]=(0,P.useState)(150),[f,p]=(0,P.useState)(`instances`),[m,h]=(0,P.useState)(null),[g,_]=(0,P.useState)(`raw`),[v,y]=(0,P.useState)(`plain`),[b,x]=(0,P.useState)(!0),[S,ee]=(0,P.useState)(280),[te,C]=(0,P.useState)(!0),[ne,re]=(0,P.useState)(!0),[ie,ae]=(0,P.useState)(!0),[oe,se]=(0,P.useState)(!0),[ce,le]=(0,P.useState)(!0),[w,T]=(0,P.useState)({...$n}),[ue,de]=(0,P.useState)(`ko`);function fe(e){T(nr(e))}return{selectedPort:e,setSelectedPort:t,activeDetailTab:n,setActiveDetailTab:r,drawerOpen:i,setDrawerOpen:a,sidebarCollapsed:o,setSidebarCollapsed:s,activityDockCollapsed:c,setActivityDockCollapsed:l,activityDockHeight:u,setActivityDockHeight:d,sidebarMode:f,setSidebarMode:p,notesSelectedPath:m,setNotesSelectedPath:h,notesViewMode:g,setNotesViewMode:_,notesAuthoringMode:v,setNotesAuthoringMode:y,notesWordWrap:b,setNotesWordWrap:x,notesTreeWidth:S,setNotesTreeWidth:ee,showLatestActivityTitles:te,setShowLatestActivityTitles:C,showInlineLabelEditor:ne,setShowInlineLabelEditor:re,showSidebarRuntimeLine:ie,setShowSidebarRuntimeLine:ae,showSelectedRowActions:oe,setShowSelectedRowActions:se,dashboardShortcutsEnabled:ce,setDashboardShortcutsEnabled:le,dashboardShortcutKeymap:w,setDashboardShortcutKeymap:fe,locale:ue,setLocale:de}}function $_(e){return e.kind===`instance-message`&&e.role===`assistant`}function ev(e){if(e.kind===`instance-message`)return[e.kind,e.port,e.messageId].join(`|`);let t=`port`in e?String(e.port):``,n=`message`in e?e.message:`reason`in e&&typeof e.reason==`string`?e.reason:``;return[e.kind,t,e.at,n].join(`|`)}function tv(e){return e.reduce((e,t)=>e?Date.parse(t.at)>Date.parse(e)?t.at:e:t.at,null)}function nv(e,t){return tv(e.filter(e=>`port`in e&&e.port===t))}function rv(e,t,n={},r=null){let i=new Set,a={};for(let t of e){if(!(`port`in t)||r!=null&&t.port===r||!$_(t))continue;let e=n[t.port]||null;if(e&&Date.parse(t.at)<=Date.parse(e))continue;let o=ev(t);i.has(o)||(i.add(o),a[t.port]=(a[t.port]||0)+1)}return a}function iv(e){let[t,n]=(0,P.useState)(null),[r,i]=(0,P.useState)({}),a=(0,P.useMemo)(()=>rv(e.events,t,r,e.activePreviewPort),[e.events,t,r,e.activePreviewPort]);function o(e,t){n(e),i(Object.fromEntries(Object.entries(t).map(([e,t])=>[Number(e),t])))}function s(t){let n=nv(e.events,t);if(!n)return;let a=r[t]||null;if(a&&Date.parse(n)<=Date.parse(a))return;let o={...r,[t]:n};i(o),e.saveUi({activitySeenByPort:Object.fromEntries(Object.entries(o).map(([e,t])=>[String(e),t]))})}function c(){let t=tv(e.events),a={...r};for(let t of e.events){if(!(`port`in t))continue;let e=a[t.port];(!e||Date.parse(t.at)>Date.parse(e))&&(a[t.port]=t.at)}n(t),i(a),e.setActivityDockCollapsed(!1),e.saveUi({activityDockCollapsed:!1,activitySeenAt:t,activitySeenByPort:Object.fromEntries(Object.entries(a).map(([e,t])=>[String(e),t]))})}function l(){e.setActivityDockCollapsed(!0),e.saveUi({activityDockCollapsed:!0,activitySeenAt:t,activitySeenByPort:Object.fromEntries(Object.entries(r).map(([e,t])=>[String(e),t]))})}return{unreadByPort:a,hydrateSeenAt:o,markPortSeen:s,openAndMarkSeen:c,closeAndPersistSeen:l}}var av=[`auto`,`dark`,`light`];function ov(e){return typeof e==`string`&&av.includes(e)}function sv(){if(typeof document>`u`)return`auto`;let e=document.documentElement.getAttribute(`data-theme`);return ov(e)?e:`auto`}var cv=`jaw.uiTheme`;function lv(e){if(!(typeof document>`u`)){document.documentElement.setAttribute(`data-theme`,e);try{typeof localStorage<`u`&&localStorage.setItem(cv,e)}catch{}}}function uv(e){let[t,n]=(0,P.useState)(sv),[r,i]=(0,P.useState)(()=>dv(t));return(0,P.useEffect)(()=>{lv(t),i(dv(t))},[t]),(0,P.useEffect)(()=>{if(t!==`auto`||typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-color-scheme: light)`),n=()=>i(e.matches?`light`:`dark`);return typeof e.addEventListener==`function`?(e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)):(e.addListener(n),()=>e.removeListener(n))},[t]),{theme:t,resolved:r,setTheme:(0,P.useCallback)(t=>{ov(t)&&(n(t),lv(t),i(dv(t)),e(t))},[e]),syncFromRegistry:(0,P.useCallback)(e=>{ov(e)&&(n(e),lv(e),i(dv(e)))},[])}}function dv(e){return e===`dark`?`dark`:e===`light`||typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function fv(){return typeof navigator>`u`?!1:/Mac|iPod|iPhone|iPad/.test(navigator.platform||``)}function pv(e){return e.key!==`k`&&e.key!==`K`?!1:fv()?e.metaKey:e.ctrlKey}function mv(){let[e,t]=(0,P.useState)(!1),n=(0,P.useCallback)(()=>t(e=>!e),[]),r=(0,P.useCallback)(()=>t(!1),[]);return(0,P.useEffect)(()=>{function e(e){pv(e)&&(e.preventDefault(),t(e=>!e))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),{open:e,setOpen:t,toggle:n,close:r}}function hv(e,t){let[n,r]=(0,P.useState)(null);return{error:n,saveInstanceLabel:(0,P.useCallback)(async(n,i)=>{let a=i?.trim()||null;if(!await e({instances:{[String(n)]:{label:a}}})){let e=`instance label save failed`;throw r(e),Error(e)}r(null),t(e=>e&&{...e,instances:e.instances.map(e=>e.port===n?{...e,label:a}:e)})},[e,t])}}var gv=5e3,_v=200;function vv(e){if(!e)return null;if(`latestAssistant`in e){let t=e.latestAssistant,n=e.activity;return!t||!n||n.role!==`assistant`||n.messageId!==t.id?null:t}return e.role===`assistant`&&Number.isInteger(e.id)?e:null}function yv(e){return!e||!(`activity`in e)?null:e.activity?.title||null}function bv(e){return e&&(`activity`in e||`latestAssistant`in e)?`ready`:`legacy`}var xv=120*6e4;function Sv(e){let t=e.includes(`T`)?e:e.replace(` `,`T`);return Date.parse(t.endsWith(`Z`)?t:t+`Z`)}function Cv(e){if(!e||!(`activity`in e))return!1;let t=e.activity;if(!t||t.role!==`user`)return!1;let n=Sv(t.updatedAt);return Number.isNaN(n)?!1:Date.now()-n<xv}async function wv(e){let t=await fetch(`/i/${e}/api/messages/latest?includeContent=1`);if(!t.ok)return{latest:null,title:null,support:`offline`,busy:!1};let n=await t.json();return{latest:vv(n.data),title:yv(n.data),support:bv(n.data),busy:Cv(n.data)}}function Tv(e){let[t,n]=(0,P.useState)([]),[r,i]=(0,P.useState)({}),[a,o]=(0,P.useState)({}),[s,c]=(0,P.useState)(new Set),l=(0,P.useRef)({}),u=(0,P.useMemo)(()=>e.filter(e=>e.ok).map(e=>e.port).sort((e,t)=>e-t),[e]);return(0,P.useEffect)(()=>{let t=!1,r=null;async function a(){if(t)return;let r=new Set(e.map(e=>e.port)),a={};for(let t of e)t.ok||(a[t.port]=`offline`);if(u.length===0){o(a),i(e=>Object.fromEntries(Object.entries(e).filter(([e])=>r.has(Number(e)))));return}let s=await Promise.allSettled(u.map(async e=>({port:e,...await wv(e)}))),d=[],f={},p=new Set;for(let e of s){if(e.status!==`fulfilled`)continue;let{port:t,latest:n,title:r,support:i,busy:o}=e.value;if(o&&p.add(t),a[t]=i,r&&(f[t]=r),!n)continue;let s=l.current[t];l.current[t]=n.id,!(s==null||n.id<=s)&&d.push({kind:`instance-message`,port:t,messageId:n.id,role:n.role,at:n.created_at&&!Number.isNaN(Date.parse(n.created_at))?n.created_at:new Date().toISOString(),...r?{title:r}:{}})}if(!t){for(let e of u)a[e]||(a[e]=`offline`);o(a),c(p),i(e=>{let t={};for(let[n,i]of Object.entries(e)){let e=Number(n);r.has(e)&&a[e]===`ready`&&(t[e]=i)}return{...t,...f}}),d.length>0&&n(e=>{let t=[...e,...d];return t.length>_v&&t.splice(0,t.length-_v),t})}}function s(){r||=setInterval(()=>{a()},gv)}function d(){r&&clearInterval(r),r=null}function f(){document.visibilityState===`visible`?(a(),s()):d()}return a(),s(),document.addEventListener(`visibilitychange`,f),()=>{t=!0,d(),document.removeEventListener(`visibilitychange`,f)}},[u.join(`,`),(0,P.useMemo)(()=>e.map(e=>`${e.port}:${e.ok?`online`:`offline`}`).sort().join(`,`),[e])]),{events:t,titlesByPort:r,titleSupportByPort:a,busyPorts:s}}var Ev=1e4,Dv=200;function Ov(){let[e,t]=(0,P.useState)([]),[n,r]=(0,P.useState)(null),i=(0,P.useRef)(null);async function a(){try{let e=await ee(i.current);if(r(null),e.length===0)return;i.current=e[e.length-1].at,t(t=>{let n=[...t,...e];return n.length>Dv&&n.splice(0,n.length-Dv),n})}catch(e){r(e.message)}}return(0,P.useEffect)(()=>{let e=!1,t=null;async function n(){e||await a()}function r(){t||=setInterval(()=>{n()},Ev)}function i(){t&&clearInterval(t),t=null}function o(){document.visibilityState===`visible`?(n(),r()):i()}return n(),r(),document.addEventListener(`visibilitychange`,o),()=>{e=!0,i(),document.removeEventListener(`visibilitychange`,o)}},[]),{events:e,error:n,refresh:a}}function kv(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function Av(e){(0,P.useEffect)(()=>{function t(t){let n=t.data;n?.type===`jaw-preview-stt-recording`&&n.action===`request`&&kv(t.origin)&&(e.status===`active`||e.status===`silent`||e.status===`paused`||e.status===`connecting`)&&e.end()}return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e.status,e.end])}function jv(e){(0,P.useEffect)(()=>{function t(t){if(!e.enabled)return;let n=t.data;if(!n||n.type!==`jaw-preview-shortcut`)return;let r=ar({key:n.key,altKey:!!n.altKey,ctrlKey:!1,metaKey:!1,shiftKey:!!n.shiftKey},e.keymap);r&&e.onAction(r)}return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e])}var Mv=76,Nv=8,Pv=96;function Fv(e){return e?e.scrollHeight-e.scrollTop-e.clientHeight<Pv:!0}function Iv(e){let t=(0,P.useRef)(null),n=(0,P.useRef)(!0),r=(0,P.useRef)(e.count),[{virtualItems:i,totalSize:a},o]=(0,P.useState)({virtualItems:[],totalSize:0}),f=(0,P.useRef)(null);f.current||=new d({count:e.count,getScrollElement:()=>t.current,estimateSize:e.estimateSize||(()=>Mv),overscan:Nv,getItemKey:e.getItemKey,indexAttribute:`data-jaw-ceo-idx`,useAnimationFrameWithResizeObserver:!0,observeElementRect:s,observeElementOffset:c,scrollToFn:l,measureElement:u,onChange:e=>{o({virtualItems:e.getVirtualItems(),totalSize:e.getTotalSize()})}});let p=f.current,m=(0,P.useCallback)(e=>{t.current=e,n.current=Fv(e),p._willUpdate()},[p]),h=(0,P.useCallback)(()=>{n.current=Fv(t.current)},[]),g=(0,P.useCallback)(e=>{e&&p.measureElement(e)},[p]);return(0,P.useEffect)(()=>p._didMount(),[p]),(0,P.useLayoutEffect)(()=>{p.setOptions({...p.options,count:e.count,getItemKey:e.getItemKey,estimateSize:e.estimateSize||(()=>Mv)}),p._willUpdate(),o({virtualItems:p.getVirtualItems(),totalSize:p.getTotalSize()})},[e.count,e.estimateSize,e.getItemKey,p]),(0,P.useLayoutEffect)(()=>{let t=r.current;r.current=e.count,e.count!==0&&(t>0&&!n.current||requestAnimationFrame(()=>{p.scrollToIndex(e.count-1,{align:`end`})}))},[e.count,p]),{scrollRef:m,onScroll:h,measureElement:g,virtualItems:i,totalSize:a}}async function Lv(e,t){let n=await e.text(),r=null;if(n.trim())try{r=JSON.parse(n)}catch{throw Error(`${t}: endpoint returned non-JSON; restart the dashboard server to load the Jaw CEO API`)}if(!e.ok||!r||r.ok===!1){let e=r&&r.ok===!1&&(r.error||r.message)||t;throw Error(e)}return r.data}async function Rv(e,t){return await Lv(await fetch(e),t)}async function zv(e,t={},n=`Jaw CEO request failed`){return await Lv(await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),n)}async function Bv(e,t={},n=`Jaw CEO request failed`){return await Lv(await fetch(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),n)}async function Vv(){return await Rv(`/api/jaw-ceo/state`,`Jaw CEO state fetch failed`)}async function Hv(){return await Rv(`/api/jaw-ceo/settings`,`Jaw CEO settings fetch failed`)}async function Uv(e){return await Bv(`/api/jaw-ceo/settings`,e,`Jaw CEO settings save failed`)}async function Wv(e){let t={text:e.text,selectedPort:e.selectedPort,inputMode:e.inputMode||`text`,responseMode:e.responseMode||`text`};return e.sessionId&&(t.sessionId=e.sessionId),await zv(`/api/jaw-ceo/message`,t,`Jaw CEO message failed`)}async function Gv(e){let t={};return e.ports!==void 0&&(t.ports=e.ports),e.events!==void 0&&(t.events=e.events),e.sinceCursor!==void 0&&(t.sinceCursor=e.sinceCursor),await zv(`/api/jaw-ceo/events/refresh`,t,`Jaw CEO event refresh failed`)}async function Kv(e,t){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/continue`,{mode:t},`Jaw CEO continue failed`)}async function qv(e,t=`short`){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/summarize`,{format:t},`Jaw CEO summarize failed`)}async function Jv(e,t){return await zv(`/api/jaw-ceo/pending/${encodeURIComponent(e)}/${t}`,{},`Jaw CEO pending update failed`)}async function Yv(e){let t={offerSdp:e.offerSdp,selectedPort:e.selectedPort,responseMode:e.responseMode||`voice`};return e.sessionId&&(t.sessionId=e.sessionId),await zv(`/api/jaw-ceo/voice/connect`,t,`Jaw CEO voice connect failed`)}async function Xv(e){return await zv(`/api/jaw-ceo/voice/${encodeURIComponent(e)}/close`,{},`Jaw CEO voice close failed`)}function Zv(e){if(e?.openaiKeyInvalid)return`Invalid saved key`;if(!e?.openaiKeySet)return`No key saved`;let t=e.openaiKeyLast4?`•••• ${e.openaiKeyLast4}`:`saved`;return e.openaiKeySource===`env`?`Env key ${t}`:e.openaiKeySource===`deps`?`Runtime key ${t}`:`Saved key ${t}`}function Qv(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(``),[i,a]=(0,P.useState)(!1),[o,s]=(0,P.useState)(null),c=!!(e?.openaiKeyInvalid||e?.openaiKeySet&&e.openaiKeySource!==`env`);(0,P.useEffect)(()=>{let e=!1;return Hv().then(n=>{e||t(n)}).catch(t=>{e||s(t.message)}),()=>{e=!0}},[]);async function l(){let e=n.trim();if(e){a(!0);try{t(await Uv({openaiApiKey:e})),r(``),s(null)}catch(e){s(e.message)}finally{a(!1)}}}async function u(){a(!0);try{t(await Uv({clearOpenAiApiKey:!0})),r(``),s(null)}catch(e){s(e.message)}finally{a(!1)}}return(0,F.jsx)(`section`,{className:`jaw-ceo-settings-panel`,"aria-label":`Jaw CEO settings`,children:(0,F.jsxs)(`form`,{className:`jaw-ceo-settings-form`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-settings-status`,children:[(0,F.jsx)(`strong`,{children:`Realtime voice`}),(0,F.jsx)(`span`,{children:Zv(e)})]}),(0,F.jsxs)(`label`,{children:[(0,F.jsx)(`span`,{children:`OpenAI API key`}),(0,F.jsx)(`input`,{value:n,type:`password`,autoComplete:`off`,spellCheck:!1,placeholder:e?.openaiKeySet?`sk-... replace saved key`:`sk-...`,onChange:e=>r(e.target.value)})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-settings-meta`,children:[(0,F.jsx)(`span`,{children:e?.model||`gpt-realtime-2`}),(0,F.jsx)(`span`,{children:e?.voice||`marin`})]}),e?.openaiKeyInvalid?(0,F.jsx)(`p`,{className:`jaw-ceo-inline-error`,children:`Saved value is not an OpenAI API key. Paste a key that starts with sk-.`}):null,o?(0,F.jsx)(`p`,{className:`jaw-ceo-inline-error`,children:o}):null,(0,F.jsxs)(`div`,{className:`jaw-ceo-form-row`,children:[(0,F.jsx)(`button`,{type:`button`,disabled:i||!c,onClick:()=>void u(),children:`Clear saved`}),(0,F.jsx)(`button`,{type:`submit`,disabled:i||!n.trim(),children:i?`Saving`:`Save key`})]})]})})}function $v(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString()}function ey(e){return e.summary||`Worker :${e.port} has a result ready.`}function ty(e){return[{label:e==null?`Inspect dashboard`:`Inspect :${e}`,text:e==null?`What needs attention on this dashboard right now?`:`What is worker :${e} doing right now?`},{label:`Summarize results`,text:`Summarize the worker results and tell me what needs action.`},{label:e==null?`Route work`:`Send to :${e}`,text:e==null?`Create or choose the right worker for this task: `:`Send this task to worker :${e}: `}]}function ny(e){let t=Array.isArray(e.ceo.state.transcript)?e.ceo.state.transcript:[],n=Array.isArray(e.ceo.state.watches)?e.ceo.state.watches:[],r=Array.isArray(e.ceo.audit)?e.ceo.audit:[],i=[...t.map(e=>({kind:`chat`,id:e.id,at:e.at,role:e.role,text:e.text})),...e.ceo.pending.filter(e=>e.status===`pending`||e.status===`spoken`).map(e=>({kind:`result`,id:`result-${e.completionKey}`,at:e.detectedAt,completion:e})),...n.map(e=>({kind:`watch`,id:`watch-${e.watchId}`,at:e.createdAt,watch:e})),...r.slice(-24).map(e=>({kind:`tool`,id:`audit-${e.id}`,at:e.at,record:e}))];return i.sort((e,t)=>{let n=Date.parse(e.at)-Date.parse(t.at);return n===0?e.id.localeCompare(t.id):n}),e.voice.lastTranscript&&i.push({kind:`live`,id:`live-voice-transcript`,at:new Date().toISOString(),text:e.voice.lastTranscript,eventType:e.voice.lastEventType}),i}function ry(e){if(!e)return 76;if(e.kind===`activity-group`)return 52;let t=Math.max(1,e.text.split(/\r?\n/).filter(Boolean).length);return Math.min(220,54+t*18)}function iy(e){let t=[],n=[];function r(){n.length!==0&&(t.push({kind:`activity-group`,id:`activity-${n[0].id}-${n.length}`,at:n[0].at,entries:n}),n=[])}for(let i of e)i.kind===`chat`||i.kind===`live`?(r(),t.push(i)):n.push(i);return r(),t}function ay(e){return e.kind===`result`?`subagent`:e.kind===`watch`?`thinking`:e.record.kind===`tool`?`tool`:e.record.kind===`completion`?`subagent`:`thinking`}function oy(e){return e.kind===`result`?`Worker :${e.completion.port} result`:e.kind===`watch`?`Listening to worker :${e.watch.port}`:e.record.kind===`completion`?`Worker completion`:e.record.kind===`docs_edit`?`Docs edit`:e.record.kind===`lifecycle`?`Lifecycle`:e.record.kind===`policy`?`Policy check`:e.record.action||`Tool use`}function sy(e){return e.kind===`result`?e.completion.resultText||ey(e.completion):e.kind===`watch`?`${e.watch.reason} · fallback ${e.watch.latestMessageFallback.mode}`:e.record.message}function cy(e){return e.kind===`result`?e.completion.detectedAt:e.kind===`watch`?e.watch.createdAt:e.record.at}function ly(e){return e.kind===`tool`&&!e.record.ok}function uy(e){let t=e.reduce((e,t)=>(e[ay(t)]+=1,e),{tool:0,thinking:0,subagent:0});return[t.tool>0?`Tool×${t.tool}`:null,t.thinking>0?`Thinking×${t.thinking}`:null,t.subagent>0?`Subagent×${t.subagent}`:null].filter(Boolean).join(` + `)}function dy(e){let t=e.text.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);if(t.length===0)return(0,F.jsx)(`p`,{children:`...`});let n=[],r=[];function i(){r.length!==0&&(n.push((0,F.jsx)(`ul`,{children:r.map((e,t)=>(0,F.jsx)(`li`,{children:e},`${e}-${t}`))},`ul-${n.length}`)),r=[])}return t.forEach((e,t)=>{let a=e.match(/^[-*]\s+(.+)$/);if(a){r.push(a[1]);return}i(),n.push((0,F.jsx)(`p`,{children:e},`p-${t}`))}),i(),(0,F.jsx)(F.Fragment,{children:n})}function fy(e){return e.tone===`tool`?(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M10.5 2.5 13 5l-2.4 2.4-1.2-1.2-4.8 4.8-1.7.2.2-1.7 4.8-4.8-1.1-1.1L9.2 1.2l1.3 1.3Z`})}):e.tone===`subagent`?(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M3 4.5h10v7H3z`}),(0,F.jsx)(`path`,{d:`M6 4.5V3h4v1.5M5.2 8h.1M10.7 8h.1`})]}):(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M3 4.5h10v7H5.7L3 13.4z`})})}function py(e){return(0,F.jsxs)(`section`,{className:`jaw-ceo-activity-shell`,"aria-label":`CEO activity`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-avatar`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`details`,{className:`jaw-ceo-activity-group`,children:[(0,F.jsxs)(`summary`,{children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-status`,"aria-hidden":`true`}),(0,F.jsx)(`strong`,{children:uy(e.entries)||`Activity`})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-activity-list`,children:e.entries.map(t=>{let n=ay(t);return(0,F.jsxs)(`article`,{className:`jaw-ceo-activity-row tone-${n}${ly(t)?` is-error`:``}`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-activity-dot`,"aria-hidden":`true`}),(0,F.jsx)(`span`,{className:`jaw-ceo-activity-icon`,children:(0,F.jsx)(fy,{tone:n})}),(0,F.jsx)(`span`,{className:`jaw-ceo-activity-badge`,children:n}),(0,F.jsxs)(`div`,{className:`jaw-ceo-activity-copy`,children:[(0,F.jsx)(`strong`,{children:oy(t)}),(0,F.jsx)(`p`,{children:sy(t)}),(0,F.jsx)(`small`,{children:$v(cy(t))})]}),t.kind===`result`?(0,F.jsxs)(`div`,{className:`jaw-ceo-activity-actions`,children:[(0,F.jsx)(`button`,{type:`button`,onClick:()=>e.onOpenWorker(t.completion.port,t.completion.messageId),children:`Open`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.model.summarize(t.completion),children:`Summary`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.model.continueCompletion(t.completion),children:`Continue`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.voice.speakCompletion(t.completion),children:`Speak`}),(0,F.jsx)(`button`,{type:`button`,onClick:()=>void e.ceo.ackCompletion(t.completion.completionKey),children:`Ack`})]}):(0,F.jsx)(`span`,{className:`jaw-ceo-trace-chip`,children:`Trace`})]},t.id)})})]})]})}function my(e){let t=e.entry;return t.kind===`activity-group`?(0,F.jsx)(py,{entries:t.entries,model:e.model,ceo:e.ceo,voice:e.voice,onOpenWorker:e.onOpenWorker}):t.kind===`chat`?(0,F.jsxs)(`article`,{className:`jaw-ceo-message-row role-${t.role}`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-message-avatar`,"aria-hidden":`true`,children:t.role===`user`?`You`:t.role===`ceo`?`CEO`:`Log`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-message-bubble`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-message-meta`,children:[(0,F.jsx)(`strong`,{children:t.role===`user`?`You`:t.role===`ceo`?`Jaw CEO`:`Tool output`}),(0,F.jsx)(`small`,{children:$v(t.at)})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-message-text`,children:(0,F.jsx)(dy,{text:t.text})})]})]}):t.kind===`live`?(0,F.jsxs)(`article`,{className:`jaw-ceo-message-row role-ceo is-live`,"aria-live":`polite`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-message-avatar is-live`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-message-bubble`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-message-meta`,children:[(0,F.jsx)(`strong`,{children:`Jaw CEO live`}),(0,F.jsx)(`small`,{children:t.eventType||`realtime`})]}),(0,F.jsx)(`div`,{className:`jaw-ceo-message-text`,children:(0,F.jsx)(dy,{text:t.text})})]})]}):null}function hy(e){let t=(0,P.useMemo)(()=>iy(ny({model:e.model,ceo:e.ceo,voice:e.voice})),[e.model,e.ceo.state.transcript,e.ceo.pending,e.ceo.state.watches,e.ceo.audit,e.voice.lastTranscript,e.voice.lastEventType]),n=(0,P.useCallback)(e=>t[e]?.id||e,[t]),r=(0,P.useCallback)(e=>ry(t[e]),[t]),i=Iv({count:t.length,getItemKey:n,estimateSize:r});return(0,F.jsxs)(`section`,{className:`jaw-ceo-chat-panel`,"aria-label":`Jaw CEO chat`,children:[(0,F.jsx)(`div`,{ref:i.scrollRef,onScroll:i.onScroll,className:`jaw-ceo-chat-log jaw-ceo-timeline is-virtual`,"aria-live":`polite`,children:t.length===0?(0,F.jsxs)(`div`,{className:`jaw-ceo-empty-state`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-empty-kicker`,children:`Ready`}),(0,F.jsx)(`strong`,{children:e.selectedPort==null?`Dashboard context`:`Worker :${e.selectedPort} selected`}),(0,F.jsx)(`div`,{className:`jaw-ceo-quick-prompts`,children:ty(e.selectedPort).map(t=>(0,F.jsx)(`button`,{type:`button`,onClick:()=>e.model.setMessage(t.text),children:t.label},t.label))})]}):(0,F.jsx)(`div`,{className:`jaw-ceo-virtual-spacer`,style:{height:`${i.totalSize}px`},children:i.virtualItems.map(n=>{let r=t[n.index];return r?(0,F.jsx)(`div`,{ref:i.measureElement,className:`jaw-ceo-virtual-row`,"data-jaw-ceo-idx":n.index,style:{transform:`translateY(${n.start}px)`},children:(0,F.jsx)(my,{entry:r,model:e.model,ceo:e.ceo,voice:e.voice,onOpenWorker:e.onOpenWorker})},n.key):null})})}),(0,F.jsxs)(`form`,{className:`jaw-ceo-message-form`,onSubmit:t=>void e.model.submitMessage(t),children:[(0,F.jsx)(`textarea`,{value:e.model.message,rows:3,placeholder:`Send a task to the selected worker or ask about the dashboard.`,onChange:t=>e.model.setMessage(t.target.value)}),(0,F.jsxs)(`div`,{className:`jaw-ceo-form-row`,children:[(0,F.jsxs)(`select`,{value:e.model.responseMode,"aria-label":`Response mode`,onChange:t=>e.model.setResponseMode(t.target.value),children:[(0,F.jsx)(`option`,{value:`text`,children:`Text`}),(0,F.jsx)(`option`,{value:`voice`,children:`Voice`}),(0,F.jsx)(`option`,{value:`both`,children:`Both`}),(0,F.jsx)(`option`,{value:`silent`,children:`Silent`})]}),(0,F.jsx)(`button`,{type:`submit`,disabled:e.ceo.busy||!e.model.message.trim(),children:`Send`})]})]})]})}function gy(e){return e.model.tab===`settings`?(0,F.jsx)(Qv,{}):(0,F.jsx)(hy,{model:e.model,ceo:e.ceo,voice:e.voice,selectedPort:e.selectedPort,onOpenWorker:e.onOpenWorker})}var _y=[{id:`chat`,label:`Chat`},{id:`settings`,label:`Settings`}];function vy(e){return(0,F.jsx)(`div`,{className:`jaw-ceo-tabs`,role:`tablist`,"aria-label":`Jaw CEO console tabs`,children:_y.map(t=>(0,F.jsx)(`button`,{type:`button`,role:`tab`,className:e.active===t.id?`is-active`:``,"aria-selected":e.active===t.id,onClick:()=>e.onChange(t.id),children:(0,F.jsx)(`span`,{children:t.label})},t.id))})}function yy(e){return async t=>{t.preventDefault();let n=e.message.trim();if(n){e.setMessage(``);try{await e.ceo.sendText(n,e.responseMode),e.setTab(`chat`)}catch{}}}}function by(e){return{summarize:async t=>{await e.ceo.summarizeCompletion(t.completionKey,`short`),await e.ceo.refresh(),e.setTab(`chat`)},continueCompletion:async t=>{let n=e.responseMode===`voice`||e.responseMode===`both`||e.responseMode===`silent`?e.responseMode:`text`;await e.ceo.continueCompletion(t.completionKey,n),await e.ceo.refresh(),e.setTab(`chat`)}}}function xy(e){let[t,n]=(0,P.useState)(`chat`),[r,i]=(0,P.useState)(``),[a,o]=(0,P.useState)(`text`),s=by({ceo:e.ceo,responseMode:a,setTab:n});return{tab:t,setTab:n,message:r,setMessage:i,responseMode:a,setResponseMode:o,submitMessage:yy({ceo:e.ceo,message:r,responseMode:a,setMessage:i,setTab:n}),...s}}var Sy=()=>(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M13.2 8a5.2 5.2 0 1 1-1.5-3.7`}),(0,F.jsx)(`path`,{d:`M13.2 3.2v3.2H10`})]}),Cy=()=>(0,F.jsx)(`svg`,{viewBox:`0 0 16 16`,width:`17`,height:`17`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`,"aria-hidden":`true`,children:(0,F.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`})});function wy(e){return e===`connecting`?`connecting`:e===`active`?`listening`:e===`silent`?`silent`:e===`paused`?`paused`:e===`sleeping`?`sleeping`:e===`disabled`?`disabled`:e===`error`?`error`:`idle`}function Ty(e){return e===`active`||e===`connecting`||e===`silent`}function Ey(e){return e===`active`||e===`connecting`||e===`silent`?`live`:e===`paused`||e===`sleeping`?`paused`:e===`disabled`||e===`error`?`issue`:`idle`}function Dy(e){let t=(0,P.useRef)(null),n=xy({ceo:e.ceo});if((0,P.useEffect)(()=>{if(!e.open)return;t.current?.focus();function n(t){if(t.key===`Escape`){if(Ty(e.voice.status)){t.preventDefault(),e.voice.stop();return}e.onClose()}}return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e]),!e.open)return null;let r=e.selectedPort==null?`Dashboard`:`Worker :${e.selectedPort}`,i=wy(e.voice.status);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`div`,{className:`jaw-ceo-console-overlay`,onClick:e.onClose,"aria-hidden":`true`}),(0,F.jsxs)(`aside`,{className:`jaw-ceo-console`,role:`dialog`,"aria-modal":`true`,"aria-label":`Jaw CEO console`,children:[(0,F.jsxs)(`header`,{className:`jaw-ceo-console-header`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-console-titlebar`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-console-mark status-${e.voice.status}`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-heading`,children:[(0,F.jsx)(`span`,{children:`Dashboard coordinator`}),(0,F.jsx)(`h3`,{children:`Jaw CEO`})]})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-header-actions`,children:[(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-icon-btn`,onClick:()=>void e.ceo.refresh(),"aria-label":`Refresh Jaw CEO`,children:(0,F.jsx)(Sy,{})}),(0,F.jsx)(`button`,{ref:t,type:`button`,className:`jaw-ceo-console-close`,onClick:e.onClose,"aria-label":`Close Jaw CEO`,children:(0,F.jsx)(Cy,{})})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-console-summary`,"aria-label":`Jaw CEO status summary`,children:[(0,F.jsx)(`span`,{children:r}),(0,F.jsx)(`span`,{children:`Single session`}),(0,F.jsxs)(`span`,{className:`voice-tone-${Ey(e.voice.status)}`,children:[`Voice `,i]})]})]}),(0,F.jsx)(vy,{active:n.tab,onChange:n.setTab}),(0,F.jsx)(`div`,{className:`jaw-ceo-console-body`,children:(0,F.jsx)(gy,{model:n,ceo:e.ceo,voice:e.voice,selectedPort:e.selectedPort,onOpenWorker:e.onOpenWorker})}),(0,F.jsxs)(`footer`,{className:`jaw-ceo-console-footer voice-${e.voice.status}`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-realtime-status`,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-realtime-dot`,"aria-hidden":`true`}),(0,F.jsxs)(`span`,{children:[`Voice: `,i,e.voice.error?` - ${e.voice.error}`:``]}),e.voice.lastTranscript?(0,F.jsx)(`small`,{children:e.voice.lastTranscript}):e.voice.lastEventType?(0,F.jsx)(`small`,{children:e.voice.lastEventType}):null]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-voice-action`,onClick:()=>Ty(e.voice.status)?void e.voice.stop():void e.voice.talk(),children:Ty(e.voice.status)?`Stop voice`:`Start voice`})]})]})]})}var Oy=()=>(0,F.jsxs)(`svg`,{viewBox:`0 0 16 16`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,F.jsx)(`path`,{d:`M8 2.5a2 2 0 0 0-2 2v3a2 2 0 0 0 4 0v-3a2 2 0 0 0-2-2Z`}),(0,F.jsx)(`path`,{d:`M3.8 7.2a4.2 4.2 0 0 0 8.4 0`}),(0,F.jsx)(`path`,{d:`M8 11.4v2.1`})]});function ky(e){return e===`active`?`voice`:e===`connecting`?`joining`:e===`silent`?`listening`:e===`paused`?`paused`:e===`sleeping`?`sleep`:e===`disabled`?`off`:e===`error`?`error`:`ready`}function Ay(e){let t=e.voiceStatus===`active`||e.voiceStatus===`connecting`||e.voiceStatus===`silent`,n=e.error?`error`:ky(e.voiceStatus),r=e.error?`Jaw CEO error: ${e.error}`:`Open Jaw CEO. Single chat session, voice ${ky(e.voiceStatus)}.`;return(0,F.jsxs)(`div`,{className:`jaw-ceo-workbench-launcher${e.open?` is-open`:``}${t?` is-active`:``}${e.error?` is-error`:``}`,"aria-label":`Jaw CEO launcher`,children:[(0,F.jsxs)(`button`,{type:`button`,className:`jaw-ceo-workbench-button`,"aria-expanded":e.open,title:r,onClick:e.onOpenConsole,children:[(0,F.jsx)(`span`,{className:`jaw-ceo-avatar status-${e.voiceStatus}`,"aria-hidden":`true`,children:`CEO`}),(0,F.jsx)(`span`,{className:`jaw-ceo-workbench-label`,children:`CEO`}),(0,F.jsx)(`span`,{className:`jaw-ceo-workbench-status`,children:n})]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-workbench-icon`,"aria-label":t?`Stop Jaw CEO voice`:`Start Jaw CEO voice`,title:t?`Stop voice`:`Start voice`,disabled:e.busy,onClick:e.onToggleVoice,children:(0,F.jsx)(Oy,{})})]})}function jy(e){return e===`connecting`?`Connecting voice`:e===`silent`?`Listening`:`Voice active`}function My(e){if(e.status!==`connecting`&&e.status!==`active`&&e.status!==`silent`)return null;let t=jy(e.status),n=e.selectedPort==null?`Dashboard`:`Worker :${e.selectedPort}`;return(0,F.jsx)(`div`,{className:`jaw-ceo-voice-overlay status-${e.status}`,role:`status`,"aria-live":`polite`,children:(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-overlay-card`,children:[(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-wave`,"aria-hidden":`true`,children:[(0,F.jsx)(`span`,{}),(0,F.jsx)(`span`,{}),(0,F.jsx)(`span`,{})]}),(0,F.jsxs)(`div`,{className:`jaw-ceo-voice-overlay-copy`,children:[(0,F.jsx)(`strong`,{children:t}),(0,F.jsx)(`span`,{children:e.status===`silent`?`No speech detected. Session is still open.`:n}),e.lastTranscript?(0,F.jsx)(`small`,{children:e.lastTranscript}):e.lastEventType?(0,F.jsx)(`small`,{children:e.lastEventType}):null]}),(0,F.jsx)(`button`,{type:`button`,className:`jaw-ceo-voice-stop`,"aria-label":`Stop Jaw CEO voice`,onClick:e.onStop,children:`Stop`})]})})}var Ny=5e3;function Py(){return new Date().toISOString()}function Fy(e){return{session:{sessionId:`pending`,inputMode:`text`,responseMode:`text`,selectedPort:e,openedAt:Py(),lastUserActivityAt:Py(),voiceArmed:!1,frontendPresence:`visible`,autoRead:!1},transcript:[],watches:[],pending:[],auditTail:[],voice:{status:`idle`,sessionId:null,model:`gpt-realtime-2`,voice:`marin`,error:null}}}function Iy(e,t){let n=Fy(t);return{...n,...e,session:{...n.session,...e.session??{},selectedPort:e.session?.selectedPort??t},transcript:Array.isArray(e.transcript)?e.transcript:[],watches:Array.isArray(e.watches)?e.watches:[],pending:Array.isArray(e.pending)?e.pending:[],auditTail:Array.isArray(e.auditTail)?e.auditTail:[],voice:{...n.voice,...e.voice??{}}}}function Ly(e){return e.kind===`instance-completed`?`${e.kind}:${e.port}:${e.requestId||``}:${e.messageId||``}:${e.at}`:`${e.kind}:${e.port}:${e.messageId}:${e.role}:${e.at}`}function Ry(e){return e.kind===`instance-message`?{kind:`instance-message`,port:e.port,messageId:e.messageId,role:e.role,at:e.at}:null}function zy(e){let[t,n]=(0,P.useState)(()=>Fy(e.selectedPort)),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(null),[s,c]=(0,P.useState)(null),l=(0,P.useRef)(new Set),u=(0,P.useRef)(t);(0,P.useEffect)(()=>{u.current=t},[t]);let d=(0,P.useCallback)(async()=>{i(e=>e||`refresh`);try{let t=Iy(await Vv(),e.selectedPort),r=Array.from(new Set(t.watches.map(e=>e.port)));r.length>0&&await Gv({ports:r}),n(Iy(await Vv(),e.selectedPort)),o(null)}catch(e){o(e.message)}finally{i(e=>e===`refresh`?null:e)}},[e.selectedPort]);(0,P.useEffect)(()=>{if(!e.documentVisible)return;let t=!1,n=null;async function r(){t||await d()}return r(),n=setInterval(()=>{r()},Ny),()=>{t=!0,n&&clearInterval(n)}},[e.documentVisible,d]),(0,P.useEffect)(()=>{let t=[];for(let n of e.managerEvents){let e=Ry(n);if(!e)continue;let r=Ly(e);l.current.has(r)||(l.current.add(r),t.push(e))}t.length!==0&&(async()=>{try{await Gv({events:t}),await d()}catch(e){o(e.message)}})()},[e.managerEvents,d]);let f=(0,P.useCallback)(async(t,n=`text`)=>{i(`message`);try{let r=await Wv({text:t,responseMode:n,selectedPort:e.selectedPort,...u.current.session.sessionId===`pending`?{}:{sessionId:u.current.session.sessionId}});return c(r.data?.response||r.error?.message||r.message||`Jaw CEO message completed.`),await d(),r}catch(e){let t=e.message;throw o(t),e}finally{i(null)}},[e.selectedPort,d]),p=(0,P.useCallback)(async e=>{i(`ack:${e}`);try{await Jv(e,`ack`),await d()}finally{i(null)}},[d]),m=(0,P.useCallback)(async e=>{i(`dismiss:${e}`);try{await Jv(e,`dismiss`),await d()}finally{i(null)}},[d]);return{state:t,pending:t.pending,audit:t.auditTail,busy:r!==null,error:a,lastResponse:s,refresh:d,sendText:f,continueCompletion:Kv,summarizeCompletion:qv,ackCompletion:p,dismissCompletion:m}}var By={start:[523.25,659.25],silent:[392],stop:[659.25,392],error:[220,196]};function Vy(e){let t=window.AudioContext||window.webkitAudioContext;if(t)try{let n=new t,r=n.currentTime;By[e].forEach((t,i)=>{let a=n.createOscillator(),o=n.createGain(),s=r+i*.085;a.type=e===`silent`?`sine`:`triangle`,a.frequency.setValueAtTime(t,s),o.gain.setValueAtTime(1e-4,s),o.gain.exponentialRampToValueAtTime(e===`silent`?.015:.024,s+.012),o.gain.exponentialRampToValueAtTime(1e-4,s+.105),a.connect(o),o.connect(n.destination),a.start(s),a.stop(s+.12)}),window.setTimeout(()=>void n.close().catch(()=>void 0),420)}catch{}}async function Hy(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`Microphone capture is not available in this browser.`);let t=new RTCPeerConnection,n=t.createDataChannel(`oai-events`);n.onmessage=t=>{try{e.onRealtimeEvent(JSON.parse(t.data))}catch{e.onRealtimeEvent({type:`raw`,text:String(t.data)})}};let r=new MediaStream,i=document.createElement(`audio`);i.autoplay=!0,i.setAttribute(`playsinline`,``),i.srcObject=r,i.className=`jaw-ceo-voice-audio`,i.setAttribute(`aria-hidden`,`true`),document.body.appendChild(i),t.ontrack=e=>{for(let t of e.streams[0]?.getTracks()||[e.track])r.getTracks().includes(t)||r.addTrack(t)};let a=await navigator.mediaDevices.getUserMedia({audio:{noiseSuppression:!0,echoCancellation:!0,autoGainControl:!0}});for(let e of a.getTracks())t.addTrack(e,a);let o=await t.createOffer();if(await t.setLocalDescription(o),!o.sdp)throw Error(`Browser did not create a voice SDP offer.`);let s=await Yv({offerSdp:o.sdp,selectedPort:e.selectedPort,...e.sessionId?{sessionId:e.sessionId}:{},responseMode:`voice`});await t.setRemoteDescription({type:`answer`,sdp:s.answerSdp});function c(){n.close();for(let e of a.getTracks())e.stop();t.close(),i.remove()}function l(e){for(let t of a.getAudioTracks())t.enabled=e}return{sessionId:s.sessionId,peer:t,dataChannel:n,micStream:a,audio:i,setMicEnabled:l,close:c}}var Uy=4e3,Wy=3e4;function Gy(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.type||``);return typeof t.delta==`string`&&(n===`response.audio_transcript.delta`||n===`response.text.delta`||n===`response.output_text.delta`)?t.delta:typeof t.transcript==`string`?t.transcript:typeof t.text==`string`&&(n.includes(`transcript`)||n.includes(`text`))?t.text:typeof t.output==`string`?t.output:null}function Ky(e){return e===`response.audio_transcript.delta`||e===`response.text.delta`||e===`response.output_text.delta`}function qy(e){if(!e||typeof e!=`object`)return null;let t=e.type;return typeof t==`string`?t:null}function Jy(e){let[t,n]=(0,P.useState)(`idle`),[r,i]=(0,P.useState)(null),[a,o]=(0,P.useState)(null),[s,c]=(0,P.useState)(null),l=(0,P.useRef)(null),u=(0,P.useRef)(e),d=(0,P.useRef)(0),f=(0,P.useRef)(Date.now()),p=(0,P.useRef)(0),m=(0,P.useRef)(``);(0,P.useEffect)(()=>{u.current=e},[e]);function h(e,t){f.current=Date.now(),e&&o(e),t&&c(t.length>180?`${t.slice(0,177)}...`:t),n(e=>e===`silent`?`active`:e)}let g=(0,P.useCallback)(async()=>{d.current+=1;let e=l.current;l.current=null,e&&(e.close(),await Xv(e.sessionId).catch(()=>void 0)),n(`sleeping`)},[]),_=(0,P.useCallback)(async()=>{if(t===`connecting`&&!l.current){d.current+=1,Vy(`stop`),n(`paused`);return}l.current?.setMicEnabled(!1),Vy(`stop`),n(`paused`)},[t]),v=(0,P.useCallback)(async()=>{await g(),Vy(`stop`)},[g]),y=(0,P.useCallback)(async()=>{if(l.current){l.current.setMicEnabled(!0),f.current=Date.now(),i(null),Vy(`start`),n(`active`);return}if(t===`connecting`)return;let e=d.current+1;d.current=e,n(`connecting`),i(null),o(null),c(null),m.current=``,Vy(`start`);try{let t=await Hy({selectedPort:u.current.selectedPort,...u.current.sessionId?{sessionId:u.current.sessionId}:{},onRealtimeEvent:e=>{let t=qy(e),n=Gy(e),r=n&&Ky(t)?`${m.current}${n}`:n;n&&Ky(t)&&(m.current=r||``),t===`response.created`&&(m.current=``),h(t,r),r&&u.current.onTranscript(r)}});if(d.current!==e){t.close(),await Xv(t.sessionId).catch(()=>void 0);return}l.current=t,f.current=Date.now(),n(`active`)}catch(t){if(d.current!==e)return;i(t.message),Vy(`error`),n(t.message.includes(`OPENAI_API_KEY`)?`disabled`:`error`),l.current?.close(),l.current=null}},[t]),b=(0,P.useCallback)(async(e,t)=>{let n=e.trim();n&&await Wv({text:n,selectedPort:u.current.selectedPort,...u.current.sessionId?{sessionId:u.current.sessionId}:{},inputMode:`voice`,responseMode:t})},[]),x=(0,P.useCallback)(async e=>{await Kv(e.completionKey,`voice`),u.current.onSpokenCompletion(e.completionKey)},[]);return(0,P.useEffect)(()=>()=>{d.current+=1;let e=l.current;l.current=null,e&&(e.close(),Xv(e.sessionId).catch(()=>void 0))},[]),(0,P.useEffect)(()=>{if(e.documentVisible)return;let t=l.current;t&&(d.current+=1,l.current=null,t.close(),Xv(t.sessionId).catch(()=>void 0),n(`sleeping`))},[e.documentVisible]),(0,P.useEffect)(()=>{if(t!==`active`&&t!==`silent`)return;let e=window.setInterval(()=>{if(!l.current)return;let e=Date.now();e-f.current<Uy||(n(`silent`),e-p.current>=Wy&&(Vy(`silent`),p.current=e))},1e3);return()=>window.clearInterval(e)},[t]),e.autoRead,{status:t,error:r,lastEventType:a,lastTranscript:s,talk:y,stop:_,end:v,sendText:b,speakCompletion:x}}function Yy(){let[e,t]=(0,P.useState)(()=>typeof document>`u`||document.visibilityState===`visible`);return(0,P.useEffect)(()=>{function e(){t(document.visibilityState===`visible`)}return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]),e}function Xy(e){let[t,n]=(0,P.useState)(!1),r=Yy(),i=(0,P.useMemo)(()=>[...e.managerEvents,...e.messageEvents],[e.managerEvents,e.messageEvents]),a=zy({selectedPort:e.selectedPort,documentVisible:r,managerEvents:i}),o=a.state.session.sessionId===`pending`?null:a.state.session.sessionId,s=Jy({selectedPort:e.selectedPort,...o?{sessionId:o}:{},autoRead:a.state.session.autoRead,documentVisible:r,onTranscript:()=>void 0,onSpokenCompletion:e=>{a.ackCompletion(e)}}),c=s.status===`active`||s.status===`connecting`||s.status===`silent`;return{voice:s,workbenchButton:(0,F.jsx)(Ay,{open:t,voiceStatus:s.status,busy:a.busy,error:a.error||s.error,onOpenConsole:()=>n(!0),onToggleVoice:()=>{c?s.stop():s.talk()}}),voiceOverlay:(0,F.jsx)(My,{status:s.status,selectedPort:e.selectedPort,lastEventType:s.lastEventType,lastTranscript:s.lastTranscript,onStop:()=>void s.stop()}),consoleContent:t?(0,F.jsx)(Dy,{open:!0,selectedPort:e.selectedPort,ceo:a,voice:s,onClose:()=>n(!1),onOpenWorker:e.onOpenWorker}):null}}function Zy(e,t){if(e.length===0)return e;let n=new Set(t.map(e=>e.profileId)),r=e.filter(e=>n.has(e));return r.length===e.length?e:r}function Qy(){let[e,t]=(0,P.useState)(null),[n,r]=(0,P.useState)(!0),[i,a]=(0,P.useState)(null),[o,s]=(0,P.useState)(``),[c,l]=(0,P.useState)(`all`),[u,d]=(0,P.useState)(``),[f,p]=(0,P.useState)(!1),[m,h]=(0,P.useState)(!1),[g,_]=(0,P.useState)(null),[v,b]=(0,P.useState)(null),[x,S]=(0,P.useState)(null),[ee,te]=(0,P.useState)(null),[C,ne]=(0,P.useState)([]),[re,ie]=(0,P.useState)(!1),[ae,oe]=(0,P.useState)(null),[se,le]=(0,P.useState)(`files`),[w,T]=(0,P.useState)(0),[ue,de]=(0,P.useState)(`display`),[fe,pe]=(0,P.useState)({kind:`overall`}),[me,E]=(0,P.useState)(`today`),[he,ge]=(0,P.useState)(()=>F_()),[_e,ve]=(0,P.useState)(0),[ye,be]=(0,P.useState)(!1),[Se,Ce]=(0,P.useState)(!1),[we,Te]=(0,P.useState)(null),Ee=(0,P.useCallback)(e=>{Te(e),Ce(!0)},[]);(0,P.useEffect)(()=>{I_(he)},[he]),z_({enabled:he,onUnload:()=>{ge(!1),be(!0)}}),(0,P.useEffect)(()=>{if(!ye||typeof document>`u`||document.hidden)return;let e=setTimeout(()=>be(!1),8e3);return()=>clearTimeout(e)},[ye]);let De=Z_(),D=Q_(),Oe=uv(e=>{m&&De.save({ui:{uiTheme:e}})}),ke=mv(),Ae=Ov(),je=e?.instances||[],Me=Tv(je),Ne=hv(De.save,t),Pe=(0,P.useMemo)(()=>e?.manager.profiles||[],[e]),Fe=(0,P.useMemo)(()=>{let e=new Set(Pe.map(e=>e.profileId));return C.filter(t=>e.has(t))},[C,Pe]),Ie=(0,P.useMemo)(()=>{let e=o.trim().toLowerCase();return je.filter(t=>c!==`all`&&t.status!==c||Fe.length>0&&(!t.profileId||!Fe.includes(t.profileId))?!1:e?[String(t.port),t.url,T_(t),t.version,t.workingDir,t.currentCli,t.currentModel,t.healthReason,t.label,t.group,t.profileId].some(t=>String(t||``).toLowerCase().includes(e)):!0)},[Fe,je,o,c]),Le=(0,P.useMemo)(()=>D.selectedPort==null?Ie.find(e=>e.ok)||null:je.find(e=>e.port===D.selectedPort)||null,[Ie,je,D.selectedPort]),Re=Xy({selectedPort:Le?.port??D.selectedPort??null,managerEvents:Ae.events,messageEvents:Me.events,onOpenWorker:Ze});Av(Re.voice),jv({enabled:D.dashboardShortcutsEnabled,keymap:D.dashboardShortcutKeymap,onAction:ft});let ze=D.activeDetailTab===`preview`&&D.sidebarMode===`instances`?Le?.port??null:null,Be=(0,P.useMemo)(()=>[...Ae.events,...Me.events],[Ae.events,Me.events]),Ve=iv({events:Be,activityDockCollapsed:D.activityDockCollapsed,setActivityDockCollapsed:D.setActivityDockCollapsed,saveUi:O,activePreviewPort:ze});function He(){let e=[`auto`,`light`,`dark`],t=e[(e.indexOf(Oe.theme)+1)%e.length];Oe.setTheme(t)}function Ue(){Le&&window.open(Le.url,`_blank`,`noopener,noreferrer`)}(0,P.useEffect)(()=>{document.documentElement.lang=D.locale},[D.locale]),(0,P.useEffect)(()=>{function e(e){e.key!==`?`||e.metaKey||e.ctrlKey||e.altKey||M_(e.target)||(e.preventDefault(),Ee(`shortcuts`))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Ee]);async function We(e=f){r(!0),a(null);try{let n=await y(e),r=Zy(C,n.manager.profiles||[]);r!==C&&(ne(r),De.save({activeProfileFilter:r})),t(n)}catch(e){a(e.message)}finally{r(!1)}}async function Ge(e){let n=await ce(e);n&&t(t=>t&&{...t,instances:t.instances.map(t=>t.port===e?n:t)})}H_(`instances`,()=>void We(),`app`),(0,P.useEffect)(()=>{async function e(){try{let e=await De.refresh(),t=e.registry.ui;D.setSelectedPort(t.selectedPort),D.setActiveDetailTab(t.selectedTab),D.setSidebarCollapsed(t.sidebarCollapsed),D.setActivityDockCollapsed(t.activityDockCollapsed),D.setActivityDockHeight(t.activityDockHeight);let n=A_(X_(window.location.search)??t.sidebarMode);D.setSidebarMode(n),n!==t.sidebarMode&&O({sidebarMode:n}),D.setNotesSelectedPath(t.notesSelectedPath),D.setNotesViewMode(t.notesViewMode),D.setNotesAuthoringMode(t.notesAuthoringMode??`plain`),D.setNotesWordWrap(t.notesWordWrap),D.setNotesTreeWidth(t.notesTreeWidth),D.setShowLatestActivityTitles(t.showLatestActivityTitles),D.setShowInlineLabelEditor(t.showInlineLabelEditor),D.setShowSidebarRuntimeLine(t.showSidebarRuntimeLine),D.setShowSelectedRowActions(t.showSelectedRowActions),D.setDashboardShortcutsEnabled(t.dashboardShortcutsEnabled),D.setDashboardShortcutKeymap(t.dashboardShortcutKeymap),D.setLocale(t.locale),Ve.hydrateSeenAt(t.activitySeenAt??null,t.activitySeenByPort||{}),ne(e.registry.activeProfileFilter||[]),Oe.syncFromRegistry(t.uiTheme)}finally{h(!0),await We()}}e()},[]);async function O(e){!m||e===void 0||await De.save({ui:e})}let Ke=(0,P.useMemo)(()=>je.reduce((e,t)=>(t.profileId&&(e[t.profileId]=(e[t.profileId]||0)+1),e),{}),[je]),qe=(0,P.useMemo)(()=>je.reduce((e,t)=>(e.total+=1,e[t.status]=(e[t.status]||0)+1,e),{total:0}),[je]);function Je(e){let t=C.includes(e)?C.filter(t=>t!==e):[...C,e];ne(t),De.save({activeProfileFilter:t})}function Ye(){return D.activeDetailTab!==`settings`||!re?!0:window.confirm(`Discard unsaved Settings changes?`)}function Xe(e){Ye()&&(ie(!1),Ve.markPortSeen(e.port),D.setSelectedPort(e.port),D.setActiveDetailTab(`preview`),D.setActivityDockCollapsed(!0),D.setDrawerOpen(!1),O({selectedPort:e.port,selectedTab:`preview`,activityDockCollapsed:!0}))}function Ze(e){let t=je.find(t=>t.port===e);t&&Xe(t)}function Qe(e){Ye()&&(ie(!1),Ve.markPortSeen(e.port),D.setSelectedPort(e.port),D.setDrawerOpen(!1),O({selectedPort:e.port}))}function $e(e){if(!(e!==`settings`&&!Ye())){if(e!==`settings`&&ie(!1),D.activeDetailTab===`preview`&&e!==`preview`){let e=D.selectedPort;e!=null&&Ve.markPortSeen(e)}if(D.setActiveDetailTab(e),e===`preview`){let t=D.selectedPort;t!=null&&Ve.markPortSeen(t),D.setActivityDockCollapsed(!0),O({selectedTab:e,activityDockCollapsed:!0});return}O({selectedTab:e})}}function et(){let e=!D.sidebarCollapsed;D.setSidebarCollapsed(e),O({sidebarCollapsed:e})}function tt(){if(D.activityDockCollapsed){Ve.openAndMarkSeen();return}Ve.closeAndPersistSeen()}function nt(e){D.setActivityDockHeight(e),O({activityDockHeight:e})}function rt(e){if(D.sidebarMode===`instances`&&e!==`instances`&&D.activeDetailTab===`preview`){let e=D.selectedPort;e!=null&&Ve.markPortSeen(e)}let t=A_(e);D.setSidebarMode(t),O({sidebarMode:t})}function k(e){D.setNotesSelectedPath(e),O({notesSelectedPath:e})}function it(){le(`search`),T(e=>e+1)}function at(e){D.setNotesViewMode(e),O({notesViewMode:e})}function ot(e){D.setNotesAuthoringMode(e),O({notesAuthoringMode:e})}function st(e){D.setNotesWordWrap(e),O({notesWordWrap:e})}function ct(e){D.setNotesTreeWidth(e),O({notesTreeWidth:e})}let lt=J_({active:D.sidebarMode===`notes`,selectedPath:D.notesSelectedPath,onSelectedPathChange:k}),A=D.notesSelectedPath?lt.index?.notes.find(e=>e.path===D.notesSelectedPath)??null:null;function ut(e){e.showLatestActivityTitles!==void 0&&D.setShowLatestActivityTitles(e.showLatestActivityTitles),e.showInlineLabelEditor!==void 0&&D.setShowInlineLabelEditor(e.showInlineLabelEditor),e.showSidebarRuntimeLine!==void 0&&D.setShowSidebarRuntimeLine(e.showSidebarRuntimeLine),e.showSelectedRowActions!==void 0&&D.setShowSelectedRowActions(e.showSelectedRowActions),e.dashboardShortcutsEnabled!==void 0&&D.setDashboardShortcutsEnabled(e.dashboardShortcutsEnabled),e.dashboardShortcutKeymap!==void 0&&D.setDashboardShortcutKeymap(e.dashboardShortcutKeymap),e.locale!==void 0&&D.setLocale(e.locale),O(e)}function dt(e){if(Ie.length===0)return;let t=Le?.port??null,n=t==null?-1:Ie.findIndex(e=>e.port===t),r=Ie[((n>=0?n:e>0?-1:0)+e+Ie.length)%Ie.length];r&&Qe(r)}function ft(e){if(e===`focusInstances`){rt(`instances`),D.setDrawerOpen(!1);return}if(e===`focusActiveSession`){let e=Le?.ok?Le:Ie.find(e=>e.ok)||null;e?Xe(e):rt(`instances`);return}if(e===`focusNotes`){rt(`notes`),D.setDrawerOpen(!1);return}if(e===`previousInstance`){dt(-1);return}e===`nextInstance`&&dt(1)}(0,P.useEffect)(()=>{function e(e){if((e.ctrlKey||e.metaKey)&&e.key===`f`){let t=document.querySelector(`.preview-frame`);if(t?.contentWindow){e.preventDefault(),t.contentWindow.postMessage({type:`jaw-preview-search`},`*`);return}}if(!D.dashboardShortcutsEnabled||sr(e.target))return;let t=ar(e,D.dashboardShortcutKeymap);t&&(e.preventDefault(),ft(t))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[Ie,Le,D.dashboardShortcutsEnabled,D.dashboardShortcutKeymap,D.sidebarMode,D.activeDetailTab,re]);async function pt(e,t){let n=t.lifecycle;if(!n||e===`perm`&&!window.confirm(`Register :${t.port} as a persistent system service? It will auto-start on login and auto-restart on crash.`)||e===`unperm`&&!window.confirm(`Remove persistent service for :${t.port}? The instance will stop and won't auto-start.`))return;if(e===`stop`&&n.owner===`service`){if(!window.confirm(`Stop :${t.port}? This will also remove the persistent service.`))return}else if((e===`stop`||e===`restart`)&&!window.confirm(`${e} :${t.port}?`))return;if(!Ye())return;ie(!1);let r=t.uptime;_(t.port),b(null),S(t.port),te(e);try{let n=e===`start`?u:void 0,i=await xe(e,t.port,n),a=i.expectedStateAfter||(e===`start`||e===`perm`?`online`:e===`stop`||e===`unperm`?`offline`:`restart-detected`);(await $t({port:t.port,expected:a,previousUptime:r,fetchOnce:(e,t)=>ce(e,{signal:t})})).settled||b(`${i.message} (not yet reachable, refresh manually if needed)`),await We(),Zi({topics:[`instances`],reason:`instance:lifecycle`,source:`ui`,sourceId:`app`}),D.setSelectedPort(t.port)}catch(e){b(e.message)}finally{_(null),S(null),te(null)}}let mt=(0,F.jsx)(Ln,{error:i,loading:n,instances:je,filtered:Ie,selectedInstance:Le,data:e,lifecycleBusyPort:g,transitioningPort:x,transitionAction:ee,activityUnreadByPort:Ve.unreadByPort,latestTitleByPort:Me.titlesByPort,busyPorts:Me.busyPorts,showLatestActivityTitles:D.showLatestActivityTitles,showInlineLabelEditor:D.showInlineLabelEditor,showSidebarRuntimeLine:D.showSidebarRuntimeLine,showSelectedRowActions:D.showSelectedRowActions,profiles:Pe,getLabel:T_,formatUptime:E_,onSelect:Qe,onPreview:Xe,onMarkActivitySeen:Ve.markPortSeen,onInstanceLabelSave:Ne.saveInstanceLabel,onLifecycle:(e,t)=>void pt(e,t)}),ht=(0,F.jsx)(N_,{instance:Le,previewEnabled:he,onPreviewEnabledChange:ge,onPreviewRefresh:()=>ve(e=>e+1),onOpenHelpTopic:Ee}),gt=V_(D,Oe.theme),_t=B_(Me.titleSupportByPort);return(0,F.jsx)(j_,{view:D,palette:ke,theme:Oe,query:o,loading:n,showHidden:f,instances:je,selectedInstance:Le,data:e,summary:qe,scheduleGroup:me,boardView:fe,notesModel:lt,notesSelectedNote:A,notesDirtyPath:ae,notesSidebarMode:se,notesSearchFocusToken:w,settingsSection:ue,dashboardSettingsUi:gt,titleSupport:_t,activityEvents:Be,busyPorts:Me.busyPorts,titlesByPort:Me.titlesByPort,lifecycleMessage:v,error:i,registryMessage:De.error||Ne.error||Ae.error,workbenchHeader:ht,detailContent:t=>(0,F.jsx)(Tn,{instance:Le,data:e,activeTab:t,onSettingsDirtyChange:ie,onSettingsSaved:()=>{Le&&Ge(Le.port),Zi({topics:[`instances`],reason:`instance:settings-saved`,source:`ui`,sourceId:`app`})},onRegistryPatch:(e,t)=>{De.save({instances:{[String(e)]:t}}).then(()=>{We(),Zi({topics:[`instances`],reason:`instance:registry-patched`,source:`ui`,sourceId:`app`})})}}),instanceListContent:mt,drawerProfileFilters:(e=>e.length>0?(0,F.jsx)(`div`,{className:`profile-chip-strip drawer-chip-strip`,"aria-label":`Profile filters`,children:e.map(e=>(0,F.jsx)(Rn,{profile:e,active:C.includes(e.profileId),count:Ke[e.profileId]||0,onToggle:Je},e.profileId))}):null)(Pe),jawCeoWorkbenchButton:Re.workbenchButton,jawCeoVoiceOverlay:Re.voiceOverlay,jawCeoConsoleContent:Re.consoleContent,previewEnabled:he,previewRefreshKey:_e,autoUnloadNotice:ye,helpOpen:Se,helpTopic:we,setQuery:s,setShowHidden:p,setPreviewEnabled:ge,setAutoUnloadNotice:be,setHelpOpen:Ce,setHelpTopic:Te,onOpenHelpTopic:Ee,setNotesSidebarMode:le,setBoardView:pe,setScheduleGroup:E,setDashboardSettingsSection:de,load:We,cycleTheme:He,openSelectedInBrowser:Ue,handleSelectInstance:Qe,handleSidebarModeChange:rt,handleSidebarToggle:et,handleNotesSelectedPathChange:k,handleNotesViewModeChange:at,handleNotesAuthoringModeChange:ot,handleNotesWordWrapChange:st,handleNotesTreeWidthChange:ct,openNotesSidebarSearch:it,setNotesDirtyPath:oe,handleTabChange:$e,handleActivityToggle:tt,handleActivityHeight:nt,onDismissLifecycleMessage:()=>b(null),handleDashboardSettingsPatch:ut,activityUnreadOpenAndMarkSeen:Ve.openAndMarkSeen})}var $y=document.getElementById(`manager-root`);if(!$y)throw Error(`manager-root not found`);(0,Qt.createRoot)($y).render((0,F.jsx)(Qy,{}));
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<link rel="icon" type="image/png" href="/dist/assets/icon-192-CwXPIYF5.png">
|
|
7
7
|
<title>Jaw Manager</title>
|
|
8
8
|
<script src="/manager/theme-boot.js"></script>
|
|
9
|
-
<script type="module" crossorigin src="/dist/assets/manager-
|
|
9
|
+
<script type="module" crossorigin src="/dist/assets/manager-C5e1IxEN.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/dist/assets/vendor-render-Bjnw0wQ6.css">
|
|
11
11
|
<link rel="stylesheet" crossorigin href="/dist/assets/manager-B2NWzG7j.css">
|
|
12
12
|
</head>
|
|
@@ -58,10 +58,10 @@ export function NotesGraphView(props: NotesGraphViewProps) {
|
|
|
58
58
|
svg.call(zoom);
|
|
59
59
|
|
|
60
60
|
const simulation = d3.forceSimulation(nodes)
|
|
61
|
-
.force('link', d3.forceLink(edges).id((d
|
|
61
|
+
.force('link', d3.forceLink<SimNode, SimEdge>(edges).id((d) => d.id).distance(80))
|
|
62
62
|
.force('charge', d3.forceManyBody().strength(-120))
|
|
63
63
|
.force('center', d3.forceCenter(width / 2, height / 2))
|
|
64
|
-
.force('collision', d3.forceCollide().radius((d
|
|
64
|
+
.force('collision', d3.forceCollide<SimNode>().radius((d) =>
|
|
65
65
|
radiusScale(connectionCount(d.id, graph.edges)) + 4,
|
|
66
66
|
));
|
|
67
67
|
|
|
@@ -116,11 +116,11 @@ export function NotesGraphView(props: NotesGraphViewProps) {
|
|
|
116
116
|
|
|
117
117
|
simulation.on('tick', () => {
|
|
118
118
|
link
|
|
119
|
-
.attr('x1', (d
|
|
120
|
-
.attr('y1', (d
|
|
121
|
-
.attr('x2', (d
|
|
122
|
-
.attr('y2', (d
|
|
123
|
-
node.attr('transform', (d
|
|
119
|
+
.attr('x1', (d) => (d.source as SimNode).x ?? 0)
|
|
120
|
+
.attr('y1', (d) => (d.source as SimNode).y ?? 0)
|
|
121
|
+
.attr('x2', (d) => (d.target as SimNode).x ?? 0)
|
|
122
|
+
.attr('y2', (d) => (d.target as SimNode).y ?? 0);
|
|
123
|
+
node.attr('transform', (d) => `translate(${d.x ?? 0},${d.y ?? 0})`);
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
return () => { simulation.stop(); };
|