natroc 0.0.6 → 0.0.7
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 +1 -1
- package/server/dist/agent/auto-improver.d.ts +33 -0
- package/server/dist/agent/auto-improver.js +125 -0
- package/server/dist/agent/auto-improver.js.map +1 -0
- package/server/dist/agent/home-context.js +81 -14
- package/server/dist/agent/home-context.js.map +1 -1
- package/server/dist/agent/improvement-engine.d.ts +1 -0
- package/server/dist/agent/improvement-engine.js +18 -0
- package/server/dist/agent/improvement-engine.js.map +1 -1
- package/server/dist/agent/tools/types.d.ts +6 -0
- package/server/dist/agent/tools/write-file.js +11 -1
- package/server/dist/agent/tools/write-file.js.map +1 -1
- package/server/dist/config/natroc-config.d.ts +6 -0
- package/server/dist/config/natroc-config.js +22 -0
- package/server/dist/config/natroc-config.js.map +1 -1
- package/server/dist/gateway/agent-service.d.ts +15 -1
- package/server/dist/gateway/agent-service.js +58 -6
- package/server/dist/gateway/agent-service.js.map +1 -1
- package/server/dist/gateway/gateway.js +7 -0
- package/server/dist/gateway/gateway.js.map +1 -1
- package/server/dist/gateway/rpc/agent.js +47 -0
- package/server/dist/gateway/rpc/agent.js.map +1 -1
- package/server/dist/gateway/rpc/conversations.js +11 -2
- package/server/dist/gateway/rpc/conversations.js.map +1 -1
- package/server/dist/runtime.d.ts +2 -0
- package/server/dist/runtime.js.map +1 -1
- package/server/dist/storage/auth-repository.d.ts +5 -0
- package/server/dist/storage/auth-repository.js +6 -0
- package/server/dist/storage/auth-repository.js.map +1 -1
- package/server/dist/storage/memory-repository.d.ts +8 -0
- package/server/dist/storage/memory-repository.js +49 -26
- package/server/dist/storage/memory-repository.js.map +1 -1
- package/ui/dist/assets/{index-BiU8FgKo.js → index-C9vuE6UQ.js} +1 -1
- package/ui/dist/assets/index-DHIA01cO.css +2 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-Dosh6wwG.css +0 -2
|
@@ -111,4 +111,4 @@ For more information, see https://radix-ui.com/primitives/docs/components/${t.do
|
|
|
111
111
|
`))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:`
|
|
112
112
|
`,...a.current()});return/^[\t ]/.test(l)&&(l=bR(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}ER.peek=DR;function ER(e){return e.value||``}function DR(){return`<`}OR.peek=kR;function OR(e,t,n,r){let i=_R(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function kR(){return`!`}AR.peek=jR;function AR(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function jR(){return`!`}MR.peek=NR;function MR(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a<n.unsafe.length;){let e=n.unsafe[a],t=n.compilePattern(e),i;if(e.atBreak)for(;i=t.exec(r);){let e=i.index;r.charCodeAt(e)===10&&r.charCodeAt(e-1)===13&&e--,r=r.slice(0,e)+` `+r.slice(i.index+1)}}return i+r+i}function NR(){return"`"}function PR(e,t){let n=sM(e);return!!(!t.options.resourceLink&&e.url&&!e.title&&e.children&&e.children.length===1&&e.children[0].type===`text`&&(n===e.url||`mailto:`+n===e.url)&&/^[a-z][a-z+.-]+:/i.test(e.url)&&!/[\0- <>\u007F]/.test(e.url))}FR.peek=IR;function FR(e,t,n,r){let i=_R(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(PR(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function IR(e,t,n){return PR(e,n)?`<`:`[`}LR.peek=RR;function LR(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function RR(){return`[`}function zR(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function BR(e){let t=zR(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function VR(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function HR(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function UR(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?VR(n):zR(n),s=e.ordered?o===`.`?`)`:`.`:BR(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),HR(n)===o&&t){let t=-1;for(;++t<e.children.length;){let n=e.children[t];if(n&&n.type===`listItem`&&n.children&&n.children[0]&&n.children[0].type===`thematicBreak`){c=!0;break}}}}c&&(o=s),n.bulletCurrent=o;let l=n.containerFlow(e,r);return n.bulletLastUsed=o,n.bulletCurrent=a,i(),l}function WR(e){let t=e.options.listItemIndent||`one`;if(t!==`tab`&&t!==`one`&&t!==`mixed`)throw Error("Cannot serialize items with `"+t+"` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`");return t}function GR(e,t,n,r){let i=WR(n),a=n.bulletCurrent||zR(n);t&&t.type===`list`&&t.ordered&&(a=(typeof t.start==`number`&&t.start>-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function KR(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var qR=eI([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function JR(e,t,n,r){return(e.children.some(function(e){return qR(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function YR(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}XR.peek=ZR;function XR(e,t,n,r){let i=YR(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=xR(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=bR(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=xR(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+bR(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function ZR(e,t,n){return n.options.strong||`*`}function QR(e,t,n,r){return n.safe(e.value,r)}function $R(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function ez(e,t,n){let r=(HR(n)+(n.options.ruleSpaces?` `:``)).repeat($R(n));return n.options.ruleSpaces?r.slice(0,-1):r}var tz={blockquote:sR,break:dR,code:hR,definition:vR,emphasis:SR,hardBreak:dR,heading:TR,html:ER,image:OR,imageReference:AR,inlineCode:MR,link:FR,linkReference:LR,list:UR,listItem:GR,paragraph:KR,root:JR,strong:XR,text:QR,thematicBreak:ez};function nz(){return{enter:{table:rz,tableData:sz,tableHeader:sz,tableRow:az},exit:{codeText:cz,table:iz,tableData:oz,tableHeader:oz,tableRow:oz}}}function rz(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function iz(e){this.exit(e),this.data.inTable=void 0}function az(e){this.enter({type:`tableRow`,children:[]},e)}function oz(e){this.exit(e)}function sz(e){this.enter({type:`tableCell`,children:[]},e)}function cz(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,lz));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function lz(e,t){return t===`|`?t:e}function uz(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:`
|
|
113
113
|
`,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(`
|
|
114
|
-
`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return iR(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=tz.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function dz(){return{exit:{taskListCheckValueChecked:pz,taskListCheckValueUnchecked:pz,paragraph:mz}}}function fz(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:hz}}}function pz(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function mz(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function hz(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=tz.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function gz(){return[SL(),KL(),ZL(),nz(),dz()]}function _z(e){return{extensions:[CL(),qL(e),QL(),uz(e),fz()]}}var vz={tokenize:Mz,partial:!0},yz={tokenize:Nz,partial:!0},bz={tokenize:Pz,partial:!0},xz={tokenize:Fz,partial:!0},Sz={tokenize:Iz,partial:!0},Cz={name:`wwwAutolink`,tokenize:Az,previous:Lz},wz={name:`protocolAutolink`,tokenize:jz,previous:Rz},Tz={name:`emailAutolink`,tokenize:kz,previous:zz},Ez={};function Dz(){return{text:Ez}}for(var Oz=48;Oz<123;)Ez[Oz]=Tz,Oz++,Oz===58?Oz=65:Oz===91&&(Oz=97);Ez[43]=Tz,Ez[45]=Tz,Ez[46]=Tz,Ez[95]=Tz,Ez[72]=[Tz,wz],Ez[104]=[Tz,wz],Ez[87]=[Tz,Cz],Ez[119]=[Tz,Cz];function kz(e,t,n){let r=this,i,a;return o;function o(t){return!Bz(t)||!zz.call(r,r.previous)||Vz(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return Bz(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check(Sz,u,l)(t):t===45||t===95||SM(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&xM(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function Az(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!Lz.call(r,r.previous)||Vz(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(vz,e.attempt(yz,e.attempt(bz,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function jz(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&Rz.call(r,r.previous)&&!Vz(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(xM(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||wM(t)||OM(t)||jM(t)||AM(t)?n(t):e.attempt(yz,e.attempt(bz,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function Mz(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function Nz(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(xz,c,s)(t):t===null||OM(t)||jM(t)||t!==45&&AM(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function Pz(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(xz,t,a)(o):o===null||OM(o)||jM(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function Fz(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||OM(o)||jM(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||OM(e)||jM(e)?t(e):r(e)}function a(e){return xM(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):xM(t)?(e.consume(t),o):n(t)}}function Iz(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return SM(e)?n(e):t(e)}}function Lz(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||OM(e)}function Rz(e){return!xM(e)}function zz(e){return!(e===47||Bz(e))}function Bz(e){return e===43||e===45||e===46||e===95||SM(e)}function Vz(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var Hz={tokenize:Xz,partial:!0};function Uz(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:qz,continuation:{tokenize:Jz},exit:Yz}},text:{91:{name:`gfmFootnoteCall`,tokenize:Kz},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:Wz,resolveTo:Gz}}}}function Wz(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=bM(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function Gz(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function Kz(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||OM(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(bM(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return OM(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function qz(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||OM(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=bM(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return OM(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),PM(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function Jz(e,t,n){return e.check(YM,t,e.attempt(Hz,t,n))}function Yz(e){e.exit(`gfmFootnoteDefinition`)}function Xz(e,t,n){let r=this;return PM(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function Zz(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&pM(o,o.length,0,HM(s,e.slice(r+1,n),t)),pM(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),pM(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=VM(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=VM(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var Qz=class{constructor(){this.map=[]}add(e,t,n){$z(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function $z(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function eB(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function tB(){return{flow:{null:{name:`table`,tokenize:nB,resolveAll:rB}}}}function nB(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):$(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):kM(t)?PM(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||OM(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,kM(t)?PM(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return kM(t)?PM(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||$(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return kM(t)?PM(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||$(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||$(n)?(e.exit(`tableRow`),t(n)):kM(n)?PM(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||OM(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function rB(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new Qz;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(aB(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=iB(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=iB(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=iB(f,t,o,i,n,d)):(o[0]=o[1],d=iB(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&aB(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=eB(t.events,n))}return e}function iB(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},oB(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=oB(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=oB(t.events,n[2]),a=oB(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},oB(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function aB(e,t,n,r,i){let a=[],o=oB(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function oB(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var sB={name:`tasklistCheck`,tokenize:lB};function cB(){return{text:{91:sB}}}function lB(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return OM(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return $(r)?t(r):kM(r)?e.check({tokenize:uB},t,n)(r):n(r)}}function uB(e,t,n){return PM(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function dB(e){return gM([Dz(),Uz(),Zz(e),tB(),cB()])}var fB={};function pB(e){let t=this,n=e||fB,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(dB(n)),a.push(gz()),o.push(_z(n))}function mB({content:e,className:t}){return(0,C.jsx)(`div`,{className:K(`space-y-3 break-words text-foreground`,`[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-4`,`[&_blockquote]:border-l-2 [&_blockquote]:border-border [&_blockquote]:pl-4 [&_blockquote]:text-muted-foreground`,`[&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[0.85em]`,`[&_h1]:text-xl [&_h1]:font-semibold [&_h2]:text-lg [&_h2]:font-semibold [&_h3]:font-semibold`,`[&_li]:ml-5 [&_ol]:list-decimal [&_ul]:list-disc`,`[&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-muted [&_pre]:p-3 [&_pre_code]:bg-transparent [&_pre_code]:p-0`,`[&_table]:w-full [&_table]:border-collapse [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_th]:py-1 [&_th]:text-left`,t),children:(0,C.jsx)(lL,{remarkPlugins:[pB],children:e})})}function hB(e){return!Number.isFinite(e)||e<=0?`0.0s`:e<1?`${e.toFixed(1)}s`:`${Math.round(e)}s`}function gB(e){return e===void 0?`Thought`:`Thought for ${hB(e)}`}function _B({durationSeconds:e,isOpen:t=!1,isThinking:n=!1,onToggle:r,reasoningText:i=``}){let a=Fk(),o=i.trim().length>0;if(!o&&!n&&e===void 0)return null;let s=n?`Thinking...`:gB(e),c=a?{duration:0}:{duration:.18,ease:[.23,1,.32,1]};return(0,C.jsxs)(`div`,{className:`mb-2 text-xs text-muted-foreground`,children:[(0,C.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:r,className:`inline-flex items-center gap-1.5 text-left font-medium text-muted-foreground transition-colors duration-150 ease-[var(--natroc-ease-out)] hover:text-foreground`,children:[(0,C.jsx)(Ke,{className:`size-3.5 shrink-0`}),n?(0,C.jsx)(kA,{text:s,duration:1.4}):(0,C.jsx)(`span`,{children:s}),(0,C.jsx)(X.span,{"aria-hidden":`true`,animate:{rotate:t?180:0},transition:c,className:`inline-flex`,children:(0,C.jsx)(Ye,{className:`size-3.5 shrink-0`})})]}),(0,C.jsx)(zD,{initial:!1,children:t&&o&&(0,C.jsx)(X.div,{initial:a?!1:{height:0,opacity:0,y:-4},animate:{height:`auto`,opacity:1,y:0},exit:a?{opacity:0}:{height:0,opacity:0},transition:c,className:`overflow-hidden`,children:(0,C.jsx)(`div`,{className:`mt-1 pl-5`,children:(0,C.jsx)(mB,{content:i,className:K(`space-y-1 text-xs leading-relaxed text-muted-foreground`,`[&_p]:my-0 [&_pre]:my-1 [&_pre]:rounded-md [&_pre]:border [&_pre]:border-border/60 [&_pre]:bg-muted/40 [&_pre]:p-2`)})})},`reasoning-content`)})]})}function vB({events:e}){return e.length===0?null:(0,C.jsx)(`div`,{className:`mb-2 flex flex-col gap-1.5`,children:e.map(e=>(0,C.jsx)(yB,{event:e},e.id))})}function yB({event:e}){let[t,n]=(0,b.useState)(!1);return(0,C.jsxs)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-muted/30 text-xs`,children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2 text-left`,children:[(0,C.jsx)(bB,{status:e.status}),(0,C.jsx)(`span`,{className:`shrink-0 font-medium text-foreground`,children:e.name}),(0,C.jsx)(`span`,{className:`truncate text-muted-foreground`,children:xB(e.args)}),e.risk===`high`&&(0,C.jsx)(`span`,{className:`shrink-0 rounded bg-amber-500/15 px-1.5 py-0.5 text-[0.65rem] font-medium text-amber-600 dark:text-amber-400`,children:`high risk`}),(0,C.jsx)(Ye,{className:K(`ml-auto h-4 w-4 shrink-0 text-muted-foreground transition-transform`,t&&`rotate-180`)})]}),t&&(0,C.jsx)(`div`,{className:`border-t border-border px-3 py-2`,children:(0,C.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words text-[0.7rem] leading-relaxed text-muted-foreground`,children:e.output??`Running...`})})]})}function bB({status:e}){return e===`running`?(0,C.jsx)(`span`,{className:`h-3.5 w-3.5 shrink-0 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground`}):e===`error`?(0,C.jsx)(qt,{className:`h-4 w-4 shrink-0 text-destructive`}):(0,C.jsx)(Je,{className:`h-4 w-4 shrink-0 text-green-600 dark:text-green-400`})}function xB(e){let t=Object.entries(e).map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(` · `);return t.length>90?`${t.slice(0,90)}…`:t}var SB={id:`ollama`,listModels:CB};async function CB(){return(await J.call(`providers.models`,{provider:`ollama`})).models??[]}var wB={id:`openrouter`,listModels:TB};async function TB(){return(await J.call(`providers.models`,{provider:`openrouter`})).models??[]}var EB={openrouter:wB,ollama:SB};function DB(e){return EB[e]}function OB(e){return DB(e).listModels()}async function kB(){try{return(await J.call(`providers.list`)).providers?.find(e=>e.isActive)??null}catch{return null}}async function AB(e){return(await J.call(`conversations.messages`,{conversationId:e})).messages??[]}function jB(e,t){return new Promise((n,r)=>{t.onStart?.(),J.stream(`agent.chat`,e,{onEvent:e=>{let n=e;switch(n.type){case`text`:t.onText(n.delta);break;case`reasoning`:t.onReasoning(n.delta);break;case`step`:t.onStep?.();break;case`tool_call`:t.onToolCall?.({id:n.id,name:n.name,args:n.args,risk:n.risk});break;case`tool_result`:t.onToolResult?.({id:n.id,status:n.status,output:n.output});break;case`metadata`:break}},onEnd:e=>{t.onDone(e),n()},onError:e=>r(e)})})}function MB(e,t,n){return t||(n&&e.some(e=>e.id===n)?n:e[0]?.id??n??void 0)}function NB(e,t){return!t||e.some(e=>e.id===t)?e:[{id:t,name:t},...e]}var PB=[`medium`,`low`,`auto`,`high`,`minimal`,`xhigh`];function FB(e){let t=e.replace(/[_-]+/g,` `).trim();return t.toLowerCase()===`xhigh`?`Extra High`:t.split(/\s+/).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function IB(e){return e?.thinking?.supported?e.thinking.efforts.map(e=>({value:e,label:FB(e)})):[]}function LB(e,t){return t&&e.some(e=>e.value===t)?t:PB.find(t=>e.some(e=>e.value===t))??e[0]?.value}var RB=`The agent finished without a visible response. Please try again.`;function zB(){let[e,t]=(0,b.useState)([]),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(),[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)(),[f,p]=(0,b.useState)(),[m,h]=(0,b.useState)(!1),g=(0,b.useRef)(null),_=o?.baseUrl??null,v=o?.defaultModel??null,y=o?.id,x=o?.provider,S=(0,b.useMemo)(()=>NB(c,u),[c,u]),C=(0,b.useMemo)(()=>S.find(e=>e.id===u),[S,u]),w=(0,b.useMemo)(()=>IB(C),[C]),T=(0,b.useMemo)(()=>!y||!x?null:{baseUrl:_,defaultModel:v,id:y,provider:x},[_,v,y,x]),E=(0,b.useCallback)(async()=>{s(await kB())},[]),D=(0,b.useCallback)(async e=>{r(!0);try{let n=await AB(e);a(e),t(n.map(e=>{let t=typeof e.thinkingDurationMs==`number`?Math.max(0,Math.round(e.thinkingDurationMs/100)/10):void 0;return{id:e.id,role:e.role,text:e.content,reasoningText:e.reasoningText??void 0,isReasoningOpen:!1,isThinking:!1,thinkingDurationSeconds:t,toolEvents:(e.toolEvents??[]).map(e=>({id:e.id,name:e.name,args:e.args,risk:e.risk,status:e.status,output:e.output})),files:[]}}))}catch(e){t([{id:crypto.randomUUID(),role:`error`,text:e instanceof Error?e.message:`Failed to load conversation.`,files:[]}])}finally{r(!1)}},[]),O=(0,b.useCallback)(async()=>{let e=window.location.pathname.match(/^\/chat\/(.+)$/)?.[1];e&&await D(e)},[D]);return(0,b.useEffect)(()=>{E(),O();let e=()=>{E()},n=e=>{let t=e;t.detail?.id&&D(t.detail.id)},r=()=>{a(void 0),t([])};return window.addEventListener(`natroc:provider-updated`,e),window.addEventListener(`natroc:conversation-selected`,n),window.addEventListener(`natroc:new-conversation`,r),()=>{window.removeEventListener(`natroc:provider-updated`,e),window.removeEventListener(`natroc:conversation-selected`,n),window.removeEventListener(`natroc:new-conversation`,r)}},[D,O,E]),(0,b.useEffect)(()=>{if(!T){g.current=null,l([]),d(void 0),p(void 0);return}let e=T,t=BB(e),n=g.current===t,r=!1;g.current=t,n||(l([]),d(void 0),p(void 0));async function i(){h(!0);try{let t=await OB(e.provider);if(r)return;l(t),d(r=>MB(t,n?r:void 0,e.defaultModel))}catch{if(r)return;n||l([]),d(t=>n?t??e.defaultModel??void 0:e.defaultModel??void 0)}finally{r||h(!1)}}return i(),()=>{r=!0}},[T]),(0,b.useEffect)(()=>{p(e=>LB(w,e))},[w]),{activeProvider:o,handleSend:async(e,c,l)=>{let d=e.trim();if(!d||n)return;let f=l?.thinkingEffort?{enabled:!0,effort:l.thinkingEffort}:void 0,p=(c??[]).map(e=>({name:e.name,url:URL.createObjectURL(e)})),m=crypto.randomUUID();t(e=>[...e,{id:m,role:`user`,text:d,files:p}]),r(!0);let h=crypto.randomUUID(),g=null,_=0,v,y=()=>{g===null&&(g=performance.now())},b=()=>(g!==null&&(_+=(performance.now()-g)/1e3,g=null,v=_),v);try{let e=o??await kB();if(!e)throw Error(`Connect OpenRouter or Ollama before sending a message.`);await jB({conversationId:i,message:d,model:u,thinking:f},{onStart(){t(e=>[...e,VB(h)])},onStep(){t(e=>e.map(e=>e.id===h?{...e,text:``}:e))},onText(e){t(t=>t.map(t=>t.id===h?{...t,text:t.text+e,isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??t.thinkingDurationSeconds}:t))},onToolCall(e){t(t=>t.map(t=>t.id===h?{...t,text:``,isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??t.thinkingDurationSeconds,toolEvents:[...t.toolEvents??[],{id:e.id,name:e.name,args:e.args,risk:e.risk,status:`running`}]}:t))},onToolResult(e){t(t=>t.map(t=>t.id===h?{...t,toolEvents:(t.toolEvents??[]).map(t=>t.id===e.id?{...t,status:e.status,output:e.output}:t)}:t))},onReasoning(e){y(),t(t=>t.map(t=>t.id===h?{...t,reasoningText:`${t.reasoningText??``}${e}`,isLoading:!1,isThinking:!0,thinkingDurationSeconds:void 0}:t))},onDone(n){a(n.conversationId),window.dispatchEvent(new Event(`natroc:conversation-updated`)),s(e),t(e=>e.map(e=>e.id===h?{...e,text:HB(n.content,e.text),isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??e.thinkingDurationSeconds}:e))}})}catch(e){t(t=>[...t.filter(e=>e.id!==h||!!(e.text||e.reasoningText||e.toolEvents&&e.toolEvents.length>0)).map(e=>e.id===h?{...e,isThinking:!1,thinkingDurationSeconds:b()??e.thinkingDurationSeconds}:e),{id:crypto.randomUUID(),role:`error`,text:e instanceof Error?e.message:`Failed to send message.`,files:[]}])}finally{r(!1)}},handleToggleReasoning:e=>{t(t=>t.map(t=>t.id===e?{...t,isReasoningOpen:!t.isReasoningOpen}:t))},isEmpty:e.length===0,isLoading:n,isLoadingModels:m,messages:e,modelOptions:S,selectedModel:u,selectedThinkingEffort:f,setSelectedModel:d,setSelectedThinkingEffort:p,thinkingEffortOptions:w}}function BB(e){return`${e.provider}:${e.id}:${e.baseUrl??``}`}function VB(e){return{id:e,role:`assistant`,text:``,reasoningText:``,isReasoningOpen:!1,isLoading:!0,isThinking:!1,thinkingDurationSeconds:void 0,toolEvents:[],files:[]}}function HB(e,t){return e.trim()?e:t.trim()?t:RB}function UB({clientHeight:e,scrollHeight:t}){return Math.max(0,t-e)}var WB=48,GB=360;function KB(){let{activeProvider:e,handleSend:t,handleToggleReasoning:n,isEmpty:r,isLoading:i,isLoadingModels:a,messages:o,modelOptions:s,selectedModel:c,selectedThinkingEffort:l,setSelectedModel:u,setSelectedThinkingEffort:d,thinkingEffortOptions:f}=zB(),p=(0,b.useRef)(null),m=(0,b.useRef)(!0),h=(0,b.useRef)(!1),g=(0,b.useRef)(null),[_,v]=(0,b.useState)(!0),[y,x]=(0,b.useState)(!1),S=(0,b.useCallback)((e=`auto`)=>{let t=p.current;t&&(t.scrollTo({top:UB(t),behavior:e}),v(!0))},[]),w=(0,b.useCallback)(()=>{let e=p.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<=WB;if(h.current){m.current=!0,v(t);return}m.current=t,v(t)},[]),T=(0,b.useCallback)(()=>{m.current=!0,h.current=!0,x(!0),g.current!==null&&window.clearTimeout(g.current);let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;S(e?`auto`:`smooth`);let t=()=>{S(),h.current=!1,x(!1),g.current=null};if(e){t();return}g.current=window.setTimeout(t,GB)},[S]),E=(0,b.useCallback)((e,n,r)=>{m.current=!0,v(!0),t(e,n,r),requestAnimationFrame(()=>S())},[t,S]);return(0,b.useEffect)(()=>{if(r){m.current=!0;let e=window.setTimeout(()=>{v(!0)},0);return()=>window.clearTimeout(e)}if(!m.current)return;let e=requestAnimationFrame(()=>S());return()=>cancelAnimationFrame(e)},[r,o,S]),(0,b.useEffect)(()=>()=>{g.current!==null&&window.clearTimeout(g.current),h.current=!1},[]),(0,C.jsxs)(`div`,{className:K(`flex h-full min-h-0 w-full flex-col items-center gap-4 overflow-hidden`,r?`justify-center`:`justify-end`),children:[!r&&(0,C.jsx)(`div`,{ref:p,onScroll:w,className:`flex min-h-0 w-full max-w-2xl flex-1 scrollbar-none flex-col gap-3 overflow-y-auto py-4 [&::-webkit-scrollbar]:hidden`,children:o.map(e=>(0,C.jsxs)(`div`,{className:K(`natroc-message-enter text-sm leading-relaxed`,e.role===`user`&&`self-end rounded-2xl border border-border bg-muted/40 px-4 py-2`,e.role===`assistant`&&`w-full self-start py-1`,e.role===`error`&&`self-start rounded-2xl border border-destructive/30 bg-destructive/10 px-4 py-2 text-destructive`),children:[e.role===`assistant`&&(e.reasoningText||e.isThinking||e.thinkingDurationSeconds!==void 0)&&(0,C.jsx)(_B,{durationSeconds:e.thinkingDurationSeconds,isOpen:e.isReasoningOpen,isThinking:e.isThinking,reasoningText:e.reasoningText,onToggle:()=>n(e.id)}),e.role===`assistant`&&e.toolEvents&&e.toolEvents.length>0&&(0,C.jsx)(vB,{events:e.toolEvents}),e.role===`assistant`&&e.isLoading&&!e.text&&!e.reasoningText&&!e.toolEvents?.length&&(0,C.jsx)(OA,{}),e.text&&(e.role===`assistant`?(0,C.jsx)(mB,{content:e.text}):(0,C.jsx)(`p`,{className:`whitespace-pre-wrap`,children:e.text})),e.files.length>0&&(0,C.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:e.files.map(e=>(0,C.jsx)(`img`,{src:e.url,alt:e.name,className:`h-20 w-20 rounded-lg object-cover`},e.url))})]},e.id))}),(0,C.jsxs)(`div`,{className:`flex w-full max-w-2xl shrink-0 flex-col items-center gap-3`,children:[r&&(0,C.jsxs)(`div`,{className:`natroc-stagger flex max-w-2xl flex-col items-center gap-3 text-center`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground md:text-3xl`,children:`Good morning! May this beautiful morning lead you to progress. Have a productive day ahead.`}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e?`Using ${e.displayName}${c?` · ${c}`:``}`:`Connect OpenRouter or Ollama to start chatting.`})]}),(0,C.jsxs)(`div`,{className:`relative w-full`,children:[(!_||y)&&(0,C.jsx)(`div`,{className:`pointer-events-none absolute bottom-full left-0 z-10 mb-2 flex w-full justify-center`,children:(0,C.jsx)(`button`,{type:`button`,"aria-label":i?`Follow agent stream`:`Scroll to latest message`,onClick:T,className:K(`natroc-soft-panel pointer-events-auto inline-flex h-8 w-8 items-center justify-center rounded-full border border-border bg-card text-muted-foreground shadow-[0_8px_24px_rgba(0,0,0,0.14)] transition-[background-color,color,transform] duration-150 ease-[var(--natroc-ease-out)] hover:bg-muted hover:text-foreground active:scale-[0.96] motion-reduce:active:scale-100`,y&&`natroc-jump-to-latest`),children:(0,C.jsx)($e,{className:`h-4 w-4`})})}),(0,C.jsx)(DA,{onSend:E,isLoading:i,placeholder:`Write a message...`,selectedModel:c,modelOptions:s,onModelChange:u,isModelLoading:a,isModelDisabled:!e,thinkingEffortOptions:f,selectedThinkingEffort:l,onThinkingEffortChange:d})]})]})]})}var qB=[`image/png`,`image/jpeg`,`image/webp`],JB=2*1024*1024;function YB(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)({status:`loading`}),[i,a]=(0,b.useState)({status:`idle`}),[o,s]=(0,b.useState)({status:`idle`}),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)({currentPassword:``,newPassword:``,confirmPassword:``}),f=(0,b.useRef)(null),p=(0,b.useCallback)(e=>{t(e),window.dispatchEvent(new CustomEvent(`natroc:user-updated`,{detail:e}))},[]),m=(0,b.useCallback)(async()=>{r({status:`loading`});try{let e=await J_();if(!e){r({status:`error`,message:`Account session is not available.`});return}t(e),r({status:`idle`})}catch(e){r({status:`error`,message:e instanceof Error?e.message:`Failed to load account.`})}},[]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{m()},0);return()=>window.clearTimeout(e)},[m]);let h=async e=>{let t=e.currentTarget.files?.[0];if(e.currentTarget.value=``,!(!t||i.status===`loading`)){if(!ZB(t.type)){me.error(`Profile picture must be PNG, JPEG, or WebP.`),a({status:`error`,message:`Profile picture must be PNG, JPEG, or WebP.`});return}if(t.size>JB){me.error(`Profile picture must be 2MB or smaller.`),a({status:`error`,message:`Profile picture must be 2MB or smaller.`});return}a({status:`loading`});try{let e=await QB(t);l(e),p((await Z_({dataUrl:e})).user),l(null),me.success(`Profile picture updated.`),a({status:`success`,message:`Profile picture updated.`})}catch(e){let t=$B(e,`Failed to update profile picture.`);l(null),me.error(t),a({status:`error`,message:t})}}},g=async()=>{if(!(i.status===`loading`||!e?.avatarUrl)){a({status:`loading`});try{p((await Z_({dataUrl:null})).user),me.success(`Profile picture removed.`),a({status:`success`,message:`Profile picture removed.`})}catch(e){let t=$B(e,`Failed to remove profile picture.`);me.error(t),a({status:`error`,message:t})}}},_=async e=>{if(e.preventDefault(),o.status!==`loading`){if(u.newPassword!==u.confirmPassword){me.error(`New password and confirmation do not match.`),s({status:`error`,message:`New password and confirmation do not match.`});return}s({status:`loading`});try{p((await X_({currentPassword:u.currentPassword,newPassword:u.newPassword})).user),d({currentPassword:``,newPassword:``,confirmPassword:``}),me.success(`Password updated.`),s({status:`success`,message:`Password updated.`})}catch(e){let t=$B(e,`Failed to update password.`);me.error(t),s({status:`error`,message:t})}}},v=e?.fullName.trim().charAt(0).toUpperCase()||`N`,y=c??e?.avatarUrl,x=i.status===`loading`,S=o.status===`loading`;return n.status===`loading`?(0,C.jsx)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] items-center justify-center text-sm text-muted-foreground`,children:`Loading account...`}):!e||n.status===`error`?(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] flex-col items-center justify-center gap-3`,children:[(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:n.message??`Failed to load account.`}),(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void m(),children:[(0,C.jsx)(Ft,{}),`Retry`]})]}):(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Account Settings`}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.username})]}),(0,C.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(0,0.8fr)_minmax(0,1.2fr)]`,children:[(0,C.jsx)(`section`,{className:`natroc-soft-panel rounded-lg border border-border bg-card p-4`,children:(0,C.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,C.jsxs)(C_,{className:`size-20`,children:[y&&(0,C.jsx)(w_,{src:y,alt:e.fullName}),(0,C.jsx)(T_,{className:`text-xl`,children:v})]}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(`h2`,{className:`font-medium`,children:`Profile Picture`}),(0,C.jsx)(`p`,{className:`mt-1 truncate text-sm text-muted-foreground`,children:e.fullName}),(0,C.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(q,{type:`button`,variant:`secondary`,onClick:()=>f.current?.click(),disabled:x,children:[(0,C.jsx)(ht,{}),`Choose image`]}),(0,C.jsxs)(q,{type:`button`,variant:`ghost`,onClick:()=>void g(),disabled:x||!e.avatarUrl,children:[(0,C.jsx)(Ht,{}),`Remove`]})]}),(0,C.jsx)(`input`,{ref:f,type:`file`,className:`hidden`,accept:qB.join(`,`),onChange:h}),(0,C.jsx)(XB,{state:i})]})]})}),(0,C.jsxs)(`form`,{className:`natroc-soft-panel rounded-lg border border-border bg-card p-4`,onSubmit:_,children:[(0,C.jsxs)(`div`,{className:`mb-5 flex items-center gap-2`,children:[(0,C.jsx)(St,{className:`size-4 text-muted-foreground`}),(0,C.jsx)(`h2`,{className:`font-medium`,children:`Password`})]}),(0,C.jsxs)(`div`,{className:`grid gap-4`,children:[(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-current-password`,children:`Current password`}),(0,C.jsx)(jg,{id:`account-current-password`,type:`password`,autoComplete:`current-password`,value:u.currentPassword,onChange:e=>d(t=>({...t,currentPassword:e.currentTarget.value})),required:!0})]}),(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-new-password`,children:`New password`}),(0,C.jsx)(jg,{id:`account-new-password`,type:`password`,autoComplete:`new-password`,minLength:6,value:u.newPassword,onChange:e=>d(t=>({...t,newPassword:e.currentTarget.value})),required:!0})]}),(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-confirm-password`,children:`Confirm new password`}),(0,C.jsx)(jg,{id:`account-confirm-password`,type:`password`,autoComplete:`new-password`,minLength:6,value:u.confirmPassword,onChange:e=>d(t=>({...t,confirmPassword:e.currentTarget.value})),required:!0})]})]}),(0,C.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,C.jsx)(XB,{state:o}),(0,C.jsx)(q,{type:`submit`,disabled:S||!u.currentPassword||!u.newPassword||!u.confirmPassword,children:S?`Saving...`:`Save password`})]})]})]})]})}function XB({state:e}){return e.message?(0,C.jsx)(`p`,{className:K(`mt-3 text-sm`,e.status===`error`?`text-destructive`:`text-muted-foreground`),children:e.message}):null}function ZB(e){return qB.some(t=>t===e)}function QB(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{if(typeof r.result==`string`){t(r.result);return}n(Error(`Unable to read profile picture.`))},r.onerror=()=>n(Error(`Unable to read profile picture.`)),r.readAsDataURL(e)})}function $B(e,t){return e instanceof Error?e.message:t}async function eV(){return await J.call(`auth.bootstrap`)}function tV({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`field-group`,className:K(`group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4`,e),...t})}var nV=wg(`group/field flex w-full gap-2 data-[invalid=true]:text-destructive`,{variants:{orientation:{vertical:`flex-col *:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`,responsive:`flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`}},defaultVariants:{orientation:`vertical`}});function rV({className:e,orientation:t=`vertical`,...n}){return(0,C.jsx)(`div`,{role:`group`,"data-slot":`field`,"data-orientation":t,className:K(nV({orientation:t}),e),...n})}function iV({className:e,...t}){return(0,C.jsx)(vv,{"data-slot":`field-label`,className:K(`group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10`,`has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col`,e),...t})}function aV({className:e,...t}){return(0,C.jsx)(`p`,{"data-slot":`field-description`,className:K(`text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5`,`last:mt-0 nth-last-2:-mt-1`,`[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,e),...t})}function oV({className:e,children:t,errors:n,...r}){let i=(0,b.useMemo)(()=>{if(t)return t;if(!n?.length)return null;let e=[...new Map(n.map(e=>[e?.message,e])).values()];return e?.length==1?e[0]?.message:(0,C.jsx)(`ul`,{className:`ml-4 flex list-disc flex-col gap-1`,children:e.map((e,t)=>e?.message&&(0,C.jsx)(`li`,{children:e.message},t))})},[t,n]);return i?(0,C.jsx)(`div`,{role:`alert`,"data-slot":`field-error`,className:K(`text-sm font-normal text-destructive`,e),...r,children:i}):null}var sV=[{cx:48,cy:68},{cx:104,cy:36},{cx:152,cy:72},{cx:86,cy:130},{cx:164,cy:154}],cV=[`M48 68L104 36L152 72`,`M48 68L86 130L164 154`,`M104 36L86 130L152 72L164 154`];function lV(){let e=Fk();return(0,C.jsxs)(X.svg,{"aria-hidden":`true`,viewBox:`0 0 212 188`,className:`h-full w-full text-foreground`,fill:`none`,initial:e?!1:{opacity:0,y:8},animate:e?void 0:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsx)(`rect`,{x:`18`,y:`18`,width:`176`,height:`152`,rx:`18`,fill:`oklch(0.98 0.004 250 / 0.7)`,stroke:`oklch(0.48 0.02 250 / 0.16)`}),(0,C.jsx)(`path`,{d:`M42 156h128`,stroke:`oklch(0.48 0.02 250 / 0.16)`,strokeLinecap:`round`}),cV.map((t,n)=>(0,C.jsx)(X.path,{d:t,stroke:`oklch(0.62 0.08 218 / 0.58)`,strokeWidth:`2`,strokeLinecap:`round`,initial:e?!1:{pathLength:.2,opacity:.35},animate:e?void 0:{pathLength:[.2,1,.2],opacity:[.32,.72,.32]},transition:{delay:n*.16,duration:2.6,repeat:1/0,ease:[.22,1,.36,1]}},t)),sV.map((t,n)=>(0,C.jsxs)(X.g,{animate:e?void 0:{scale:[1,1.08,1],opacity:[.78,1,.78]},transition:{delay:n*.12,duration:2,repeat:1/0,ease:`easeInOut`},style:{originX:t.cx,originY:t.cy},children:[(0,C.jsx)(`circle`,{cx:t.cx,cy:t.cy,r:`12`,fill:`oklch(0.96 0.01 250)`,stroke:`oklch(0.46 0.04 250 / 0.28)`}),(0,C.jsx)(`circle`,{cx:t.cx,cy:t.cy,r:`4`,fill:`oklch(0.62 0.08 218)`})]},`${t.cx}-${t.cy}`)),(0,C.jsx)(X.rect,{x:`68`,y:`79`,width:`76`,height:`35`,rx:`12`,fill:`oklch(0.18 0.012 250)`,animate:e?void 0:{y:[79,76,79]},transition:{duration:3,repeat:1/0,ease:[.22,1,.36,1]}}),(0,C.jsx)(X.path,{d:`M88 96h36`,stroke:`oklch(0.82 0.1 190)`,strokeWidth:`3`,strokeLinecap:`round`,animate:e?void 0:{opacity:[.45,1,.45]},transition:{duration:1.8,repeat:1/0,ease:`easeInOut`}})]})}function uV({brandName:e=`Natroc`,className:t,errorMessage:n,isLoading:r=!1,logo:i=(0,C.jsx)(Pv,{}),onForgotPassword:a,onRegister:o,onSubmit:s}){let[c,l]=(0,b.useState)({password:``,username:``}),[u,d]=(0,b.useState)(!1),f=c.username.trim().length>0&&c.password.trim().length>0&&!r;return(0,C.jsx)(`main`,{className:K(`grid h-dvh max-h-dvh min-h-0 overflow-hidden bg-background text-foreground`,t),children:(0,C.jsxs)(`div`,{className:`grid min-h-0 lg:grid-cols-[minmax(24rem,0.9fr)_minmax(0,1.1fr)]`,children:[(0,C.jsx)(`section`,{className:`flex min-h-0 items-center justify-center px-4 py-6 sm:px-6 lg:px-10`,children:(0,C.jsxs)(X.div,{className:`flex w-full max-w-sm flex-col gap-7`,initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,C.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg border bg-card text-foreground`,children:i}),(0,C.jsxs)(`div`,{className:`flex flex-col`,children:[(0,C.jsx)(`span`,{className:`text-base leading-tight font-semibold`,children:e}),(0,C.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Agent workspace`})]})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-normal`,children:`Welcome back`}),(0,C.jsx)(`p`,{className:`max-w-[46ch] text-sm leading-6 text-muted-foreground`,children:`Sign in with your workspace username and password.`})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),f&&s?.({password:c.password,username:c.username.trim()})},className:`flex flex-col gap-5`,children:[(0,C.jsxs)(tV,{children:[(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`login-username`,children:`Username`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Kt,{})}),(0,C.jsx)(_v,{id:`login-username`,autoComplete:`username`,placeholder:`your.username`,value:c.username,onChange:e=>l(t=>({...t,username:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`login-password`,children:`Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`login-password`,autoComplete:`current-password`,placeholder:`Enter password`,type:u?`text`:`password`,value:c.password,onChange:e=>l(t=>({...t,password:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":u?`Hide password`:`Show password`,onClick:()=>d(e=>!e),size:`icon-xs`,children:u?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]}),(0,C.jsx)(aV,{children:`Use the account assigned to your Natroc workspace.`})]})]}),(0,C.jsx)(zD,{children:n&&(0,C.jsx)(X.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2,ease:[.22,1,.36,1]},children:(0,C.jsx)(oV,{children:n})})}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(q,{type:`button`,variant:`ghost`,className:`px-0`,onClick:a,disabled:!a||r,children:`Forgot password?`}),(0,C.jsxs)(q,{type:`submit`,disabled:!f,children:[r?`Signing in...`:`Sign in`,(0,C.jsx)(Ve,{"data-icon":`inline-end`})]})]})]}),o&&(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Don't have an account?`,` `,(0,C.jsx)(`button`,{type:`button`,onClick:o,className:`font-medium text-foreground underline-offset-4 hover:underline`,children:`Create one`})]})]})}),(0,C.jsxs)(`section`,{className:`relative hidden min-h-0 overflow-hidden border-l bg-muted/30 lg:block`,children:[(0,C.jsx)(`div`,{className:`absolute inset-0 bg-[linear-gradient(oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px),linear-gradient(90deg,oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px)] [mask-image:radial-gradient(ellipse_at_center,black_18%,transparent_72%)] bg-[size:38px_38px]`}),(0,C.jsxs)(`div`,{className:`relative flex h-full flex-col justify-center px-14`,children:[(0,C.jsx)(X.div,{className:`mx-auto aspect-[1.12] w-full max-w-md`,initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.22,1,.36,1]},children:(0,C.jsx)(lV,{})}),(0,C.jsxs)(`div`,{className:`mx-auto flex max-w-md flex-col gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Secure access for every user`}),(0,C.jsx)(`p`,{className:`text-sm leading-6 text-muted-foreground`,children:`Natroc keeps the interface quiet while your agent handles the busy work behind the workspace.`})]})]})]})]})})}function dV(){let[e,t]=(0,b.useState)(``),[n,r]=(0,b.useState)(!1);return(0,C.jsx)(uV,{onSubmit:async e=>{r(!0),t(``);try{L_((await K_(e.username,e.password)).token),window.location.assign(`/`)}catch(e){t(e instanceof Error?e.message:`Sign in failed.`)}finally{r(!1)}},isLoading:n,errorMessage:e,onRegister:()=>window.location.assign(`/register`)})}var fV=[{detail:`Human-readable profile identity`,label:`Full Name`},{detail:`Workspace handle for agent access`,label:`Username`},{detail:`Verified secret before submit`,label:`Password`}],pV=[mt,Kt,_t];function mV(){let e=Fk();return(0,C.jsxs)(`div`,{className:`mx-auto flex w-full max-w-md flex-col gap-6`,children:[(0,C.jsxs)(X.div,{"aria-hidden":`true`,className:`relative mx-auto aspect-square w-full max-w-[22rem]`,initial:e?!1:{opacity:0,y:8},animate:e?void 0:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsx)(X.div,{className:`absolute inset-6 rounded-full border border-border`,animate:e?void 0:{rotate:360},transition:{duration:18,repeat:1/0,ease:`linear`}}),(0,C.jsx)(X.div,{className:`absolute inset-14 rounded-full border border-dashed border-border`,animate:e?void 0:{rotate:-360},transition:{duration:24,repeat:1/0,ease:`linear`}}),(0,C.jsxs)(X.div,{className:`absolute inset-x-16 top-16 flex flex-col gap-3 rounded-lg border bg-background p-4 shadow-sm`,animate:e?void 0:{y:[-3,3,-3]},transition:{duration:3.2,repeat:1/0,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`div`,{className:`flex size-9 items-center justify-center rounded-lg bg-muted text-foreground`,children:(0,C.jsx)(ct,{className:`size-4`})}),(0,C.jsx)(`span`,{className:`rounded-md border px-2 py-1 text-xs text-muted-foreground`,children:`user.create`})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`span`,{className:`h-2 w-3/4 rounded-sm bg-foreground/80`}),(0,C.jsx)(`span`,{className:`h-2 w-1/2 rounded-sm bg-muted-foreground/45`})]}),(0,C.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`}),(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`}),(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`})]})]}),(0,C.jsx)(X.div,{className:`absolute top-12 left-1 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[-2,4,-2]},transition:{duration:2.8,repeat:1/0,ease:`easeInOut`},children:`Full Name`}),(0,C.jsx)(X.div,{className:`absolute top-28 right-2 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[3,-3,3]},transition:{duration:3,repeat:1/0,ease:`easeInOut`},children:`Username`}),(0,C.jsx)(X.div,{className:`absolute bottom-14 left-12 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[-1,4,-1]},transition:{duration:3.4,repeat:1/0,ease:`easeInOut`},children:`Password`})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-2`,children:fV.map((t,n)=>{let r=pV[n];return(0,C.jsxs)(X.div,{className:`flex items-center gap-3 rounded-lg border bg-background px-3 py-2 shadow-sm`,initial:e?!1:{opacity:0,y:6},animate:e?void 0:{opacity:1,y:0},transition:{delay:.08*n,duration:.28,ease:[.22,1,.36,1]},children:[(0,C.jsx)(`div`,{className:`flex size-8 items-center justify-center rounded-md bg-muted`,children:(0,C.jsx)(r,{className:`size-4`})}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(`p`,{className:`truncate text-sm font-medium`,children:t.label}),(0,C.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:t.detail})]}),(0,C.jsx)(Je,{className:`size-4 text-muted-foreground`})]},t.label)})})]})}function hV({brandName:e=`Natroc`,className:t,errorMessage:n,isLoading:r=!1,logo:i=(0,C.jsx)(Pv,{}),onLogin:a,onSubmit:o}){let[s,c]=(0,b.useState)({confirmPassword:``,fullName:``,password:``,username:``}),[l,u]=(0,b.useState)(!1),[d,f]=(0,b.useState)(!1),p=s.confirmPassword.length>0&&s.password!==s.confirmPassword,m=s.fullName.trim().length>0&&s.username.trim().length>0&&s.password.length>0&&s.confirmPassword.length>0&&!p&&!r;return(0,C.jsx)(`main`,{className:K(`grid h-dvh max-h-dvh min-h-0 overflow-hidden bg-background text-foreground`,t),children:(0,C.jsxs)(`div`,{className:`grid min-h-0 lg:grid-cols-[minmax(24rem,0.9fr)_minmax(0,1.1fr)]`,children:[(0,C.jsx)(`section`,{className:`flex min-h-0 items-center justify-center px-4 py-5 sm:px-6 lg:px-10`,children:(0,C.jsxs)(X.div,{className:`flex w-full max-w-sm flex-col gap-6`,initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,C.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg border bg-card text-foreground`,children:i}),(0,C.jsxs)(`div`,{className:`flex flex-col`,children:[(0,C.jsx)(`span`,{className:`text-base leading-tight font-semibold`,children:e}),(0,C.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`User access`})]})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-normal`,children:`Create account`}),(0,C.jsx)(`p`,{className:`max-w-[48ch] text-sm leading-6 text-muted-foreground`,children:`Register a user profile for access to the Natroc workspace.`})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),m&&o?.({confirmPassword:s.confirmPassword,fullName:s.fullName.trim(),password:s.password,username:s.username.trim()})},className:`flex flex-col gap-5`,children:[(0,C.jsxs)(tV,{children:[(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-full-name`,children:`Full Name`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(mt,{})}),(0,C.jsx)(_v,{id:`register-full-name`,autoComplete:`name`,placeholder:`Full name`,value:s.fullName,onChange:e=>c(t=>({...t,fullName:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-username`,children:`Username`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Kt,{})}),(0,C.jsx)(_v,{id:`register-username`,autoComplete:`username`,placeholder:`your.username`,value:s.username,onChange:e=>c(t=>({...t,username:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-password`,children:`Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`register-password`,autoComplete:`new-password`,placeholder:`Create password`,type:l?`text`:`password`,value:s.password,onChange:e=>c(t=>({...t,password:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":l?`Hide password`:`Show password`,onClick:()=>u(e=>!e),size:`icon-xs`,children:l?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]})]}),(0,C.jsxs)(rV,{"data-invalid":p,children:[(0,C.jsx)(iV,{htmlFor:`register-confirm-password`,children:`Confirm Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`register-confirm-password`,"aria-invalid":p,autoComplete:`new-password`,placeholder:`Confirm password`,type:d?`text`:`password`,value:s.confirmPassword,onChange:e=>c(t=>({...t,confirmPassword:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":d?`Hide confirm password`:`Show confirm password`,onClick:()=>f(e=>!e),size:`icon-xs`,children:d?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]}),p?(0,C.jsx)(oV,{children:`Passwords do not match.`}):(0,C.jsx)(aV,{children:`Use the same password to confirm access.`})]})]}),(0,C.jsx)(zD,{children:n&&(0,C.jsx)(X.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2,ease:[.22,1,.36,1]},children:(0,C.jsx)(oV,{children:n})})}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(q,{type:`button`,variant:`ghost`,className:`px-0`,onClick:a,disabled:!a||r,children:`Sign in instead`}),(0,C.jsxs)(q,{type:`submit`,disabled:!m,children:[r?`Creating...`:`Create account`,(0,C.jsx)(Ve,{"data-icon":`inline-end`})]})]})]})]})}),(0,C.jsxs)(`section`,{className:`relative hidden min-h-0 overflow-hidden border-l bg-muted/30 lg:block`,children:[(0,C.jsx)(`div`,{className:`absolute inset-0 bg-[linear-gradient(oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px),linear-gradient(90deg,oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px)] [mask-image:radial-gradient(ellipse_at_center,black_18%,transparent_72%)] bg-[size:38px_38px]`}),(0,C.jsxs)(`div`,{className:`relative flex h-full flex-col justify-center px-14`,children:[(0,C.jsx)(mV,{}),(0,C.jsxs)(`div`,{className:`mx-auto flex max-w-md flex-col gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Account identity for every user`}),(0,C.jsx)(`p`,{className:`text-sm leading-6 text-muted-foreground`,children:`Keep identity simple: a real name, a workspace username, and a password verified before submit.`})]})]})]})]})})}function gV(){let[e,t]=(0,b.useState)(``),[n,r]=(0,b.useState)(!1);return(0,C.jsx)(hV,{onSubmit:async e=>{if(e.password!==e.confirmPassword){t(`Passwords do not match.`);return}r(!0),t(``);try{L_((await q_({username:e.username,fullName:e.fullName,password:e.password})).token),window.location.assign(`/`)}catch(e){t(e instanceof Error?e.message:`Registration failed.`)}finally{r(!1)}},isLoading:n,errorMessage:e,onLogin:()=>window.location.assign(`/login`)})}var _V=wg(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function vV({className:e,variant:t=`default`,asChild:n=!1,...r}){return(0,C.jsx)(n?$t:`span`,{"data-slot":`badge`,"data-variant":t,className:K(_V({variant:t}),e),...r})}async function yV(){return J.call(`agent.status`)}async function bV(e){let t=e?.trim();return(await J.call(`agent.memory`,t?{query:t}:{})).entries??[]}async function xV(e=`pending`){return(await J.call(`agent.proposals.list`,{status:e})).proposals??[]}async function SV(e){return J.call(`agent.proposals.approve`,{id:e})}async function CV(e){return J.call(`agent.proposals.reject`,{id:e})}async function wV(){return(await J.call(`agent.improve`,{})).proposals??[]}function TV(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)([]),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)({error:null,isLoading:!0}),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)(!1),g=(0,b.useCallback)(async()=>{d({error:null,isLoading:!0});try{let[e,n,i]=await Promise.all([yV(),bV(o),xV()]);t(e),r(n),a(i)}catch(e){d({error:e instanceof Error?e.message:`Failed to load agent state.`,isLoading:!1});return}d({error:null,isLoading:!1})},[o]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(e)},[g]);let _=async e=>{p(e);try{await SV(e),await g()}finally{p(null)}},v=async e=>{p(e);try{await CV(e),await g()}finally{p(null)}};return(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,C.jsx)(Ge,{className:`size-4`}),(0,C.jsx)(`span`,{className:`text-sm font-medium`,children:`Agent runtime`})]}),(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Natroc is alive locally`})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void g(),disabled:u.isLoading,children:[(0,C.jsx)(Ft,{className:K(u.isLoading&&`animate-spin`)}),`Refresh`]}),(0,C.jsxs)(q,{onClick:async()=>{h(!0),l(null);try{l(`Created ${(await wV()).length} pending proposal(s).`),await g()}catch(e){l(e instanceof Error?e.message:`Improvement review failed.`)}finally{h(!1)}},disabled:m,children:[(0,C.jsx)(zt,{className:K(m&&`animate-pulse`)}),`Improve`]})]})]}),u.error&&(0,C.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive`,children:u.error}),c&&(0,C.jsx)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-muted/40 px-4 py-3 text-sm text-muted-foreground`,children:c}),(0,C.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,C.jsx)(EV,{status:e}),(0,C.jsx)(DV,{status:e}),(0,C.jsx)(OV,{status:e})]}),(0,C.jsxs)(`div`,{className:`grid min-h-0 gap-5 xl:grid-cols-[minmax(0,1.05fr)_minmax(360px,0.95fr)]`,children:[(0,C.jsxs)(`section`,{className:`flex min-h-0 flex-col gap-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Pending proposals`}),(0,C.jsx)(vV,{variant:`secondary`,children:i.length})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-3`,children:i.length===0?(0,C.jsx)(MV,{text:`No pending proposals.`}):i.map(e=>(0,C.jsx)(AV,{proposal:e,isBusy:f===e.id,onApprove:_,onReject:v},e.id))})]}),(0,C.jsxs)(`section`,{className:`flex min-h-0 flex-col gap-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Approved memory`}),(0,C.jsxs)(`div`,{className:`relative w-56`,children:[(0,C.jsx)(It,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,C.jsx)(jg,{value:o,onChange:e=>s(e.target.value),placeholder:`Search memory`,className:`h-9 rounded-lg border-transparent bg-muted/80 pl-9`})]})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-3`,children:n.length===0?(0,C.jsx)(MV,{text:`No approved memory.`}):n.map(e=>(0,C.jsx)(jV,{entry:e},e.id))})]})]})]})}function EV({status:e}){return(0,C.jsx)(kV,{icon:(0,C.jsx)(Ge,{className:`size-4`}),label:`Runtime`,value:e?.providers.active?.displayName??`No provider`,detail:e?.providers.active?.defaultModel??`Model not selected`})}function DV({status:e}){let t=e?.homeFiles.filter(e=>e.exists).length??0,n=e?.homeFiles.length??0;return(0,C.jsx)(kV,{icon:(0,C.jsx)(pt,{className:`size-4`}),label:`Home`,value:e?.paths?.homeDir??`~/.natroc/home`,detail:`${t}/${n} files ready`})}function OV({status:e}){return(0,C.jsx)(kV,{icon:(0,C.jsx)(it,{className:`size-4`}),label:`Memory`,value:`${e?.counts.memories??0} approved`,detail:`${e?.counts.pendingProposals??0} pending proposal(s)`})}function kV({detail:e,icon:t,label:n,value:r}){return(0,C.jsxs)(`div`,{className:`natroc-soft-panel min-w-0 rounded-lg border border-border bg-muted/30 p-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[t,(0,C.jsx)(`span`,{children:n})]}),(0,C.jsx)(`p`,{className:`mt-3 truncate text-sm font-semibold`,children:r}),(0,C.jsx)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground`,children:e})]})}function AV({isBusy:e,onApprove:t,onReject:n,proposal:r}){return(0,C.jsx)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-background/60 p-4`,children:(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,C.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(vV,{variant:`secondary`,children:r.kind}),(0,C.jsx)(`h3`,{className:`text-sm font-semibold`,children:r.title})]}),(0,C.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:r.content}),(0,C.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground/80`,children:r.reason})]}),(0,C.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,C.jsx)(q,{size:`icon`,variant:`secondary`,disabled:e,onClick:()=>void t(r.id),"aria-label":`Approve proposal`,children:(0,C.jsx)(Je,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,disabled:e,onClick:()=>void n(r.id),"aria-label":`Reject proposal`,children:(0,C.jsx)(qt,{})})]})]})})}function jV({entry:e}){return(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/60 p-4`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(vV,{variant:`secondary`,children:e.kind}),(0,C.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.title})]}),(0,C.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:e.content})]})}function MV({text:e}){return(0,C.jsx)(`div`,{className:`rounded-lg border border-dashed border-border px-4 py-8 text-center text-sm text-muted-foreground`,children:e})}function NV({className:e,size:t=`default`,...n}){return(0,C.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:K(`group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl`,e),...n})}function PV({className:e,size:t=`default`,...n}){return(0,C.jsxs)(`div`,{className:K(`group/native-select relative w-fit has-[select:disabled]:opacity-50`,e),"data-slot":`native-select-wrapper`,"data-size":t,children:[(0,C.jsx)(`select`,{"data-slot":`native-select`,"data-size":t,className:`h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,...n}),(0,C.jsx)(Ye,{className:`pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none`,"aria-hidden":`true`,"data-slot":`native-select-icon`})]})}function FV({className:e,...t}){return(0,C.jsx)(`option`,{"data-slot":`native-select-option`,className:K(`bg-[Canvas] text-[CanvasText]`,e),...t})}function IV({className:e,size:t=`default`,...n}){return(0,C.jsx)(Ip,{"data-slot":`switch`,"data-size":t,className:K(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...n,children:(0,C.jsx)(Lp,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`})})}function LV({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full overflow-x-auto`,children:(0,C.jsx)(`table`,{"data-slot":`table`,className:K(`w-full caption-bottom text-sm`,e),...t})})}function RV({className:e,...t}){return(0,C.jsx)(`thead`,{"data-slot":`table-header`,className:K(`[&_tr]:border-b`,e),...t})}function zV({className:e,...t}){return(0,C.jsx)(`tbody`,{"data-slot":`table-body`,className:K(`[&_tr:last-child]:border-0`,e),...t})}function BV({className:e,...t}){return(0,C.jsx)(`tr`,{"data-slot":`table-row`,className:K(`border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted`,e),...t})}function VV({className:e,...t}){return(0,C.jsx)(`th`,{"data-slot":`table-head`,className:K(`h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0`,e),...t})}function HV({className:e,...t}){return(0,C.jsx)(`td`,{"data-slot":`table-cell`,className:K(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function UV({className:e,orientation:t=`horizontal`,...n}){return(0,C.jsx)(em,{"data-slot":`tabs`,"data-orientation":t,className:K(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var WV=wg(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function GV({className:e,variant:t=`default`,...n}){return(0,C.jsx)(tm,{"data-slot":`tabs-list`,"data-variant":t,className:K(WV({variant:t}),e),...n})}function KV({className:e,...t}){return(0,C.jsx)(nm,{"data-slot":`tabs-trigger`,className:K(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,e),...t})}function qV({className:e,...t}){return(0,C.jsx)(rm,{"data-slot":`tabs-content`,className:K(`flex-1 text-sm outline-none`,e),...t})}async function JV(){return(await J.call(`agents.list`)).agents??[]}async function YV(e){return(await J.call(`agents.create`,e)).agent}async function XV(e,t){return(await J.call(`agents.update`,{id:e,...t})).agent}async function ZV(e){await J.call(`agents.delete`,{id:e})}async function QV(e){return(await J.call(`agents.setDefault`,{id:e})).agent}async function $V(){return(await J.call(`usage.summary`)).summary}async function eH(){return(await J.call(`usage.detail`,{limit:100})).events??[]}async function tH(){return(await J.call(`channels.accounts.list`)).accounts??[]}async function nH(e){return(await J.call(`channels.accounts.create`,e)).account}async function rH(e){return(await J.call(`channels.accounts.connect`,{id:e})).account}async function iH(e){return(await J.call(`channels.accounts.disconnect`,{id:e})).account}async function aH(e){await J.call(`channels.accounts.delete`,{id:e})}async function oH(){return(await J.call(`channels.bindings.list`)).bindings??[]}async function sH(e){return(await J.call(`channels.bindings.create`,e)).binding}async function cH(e){await J.call(`channels.bindings.delete`,{id:e})}async function lH(){return(await J.call(`home.files.list`)).files}async function uH(e){return(await J.call(`home.file.read`,{name:e})).content}async function dH(e,t){return(await J.call(`home.file.write`,{name:e,content:t})).file}var fH={name:``,description:``,defaultProvider:``,defaultModel:``,workspace:``,systemPrompt:``,configJson:`{}`,isEnabled:!0,isDefault:!1},pH={channel:`telegram`,displayName:``,accountRef:``,token:``,allowlist:``};function mH(){let[e,t]=(0,b.useState)(()=>TH()),[n,r]=(0,b.useState)([]),[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)([]),[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)([]),[f,p]=(0,b.useState)({error:null,isLoading:!0}),m=(0,b.useCallback)(async()=>{p({error:null,isLoading:!0});try{let[e,t,n,i,o]=await Promise.all([JV(),$V(),eH(),tH(),oH()]);r(e),a(t),s(n),l(i),d(o),p({error:null,isLoading:!1})}catch(e){p({error:e instanceof Error?e.message:`Failed to load config data.`,isLoading:!1})}},[]);return(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{m()},0);return()=>window.clearTimeout(e)},[m]),(0,C.jsxs)(`section`,{className:`natroc-enter flex w-full flex-1 flex-col gap-5`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,C.jsx)(Rt,{className:`size-4`}),(0,C.jsx)(`span`,{className:`text-sm font-medium`,children:`Config`})]}),(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Agent, usage, and channel control`})]}),(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void m(),disabled:f.isLoading,children:[(0,C.jsx)(Ft,{className:K(f.isLoading&&`animate-spin`)}),`Refresh`]})]}),f.error&&(0,C.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive`,children:f.error}),(0,C.jsxs)(UV,{value:e,onValueChange:e=>{if(!EH(e))return;t(e);let n=new URL(window.location.href);n.searchParams.set(`tab`,e),window.history.replaceState(null,``,n)},className:`gap-5`,children:[(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsxs)(GV,{children:[(0,C.jsxs)(KV,{value:`agents`,children:[(0,C.jsx)(We,{}),`Agents`]}),(0,C.jsxs)(KV,{value:`usage`,children:[(0,C.jsx)(qe,{}),`Usage`]}),(0,C.jsxs)(KV,{value:`channels`,children:[(0,C.jsx)(Nt,{}),`Channels`]})]})}),(0,C.jsx)(qV,{value:`agents`,className:`space-y-5`,children:(0,C.jsx)(hH,{agents:n,onRefresh:m})}),(0,C.jsx)(qV,{value:`usage`,children:(0,C.jsx)(_H,{summary:i,events:o})}),(0,C.jsx)(qV,{value:`channels`,children:(0,C.jsx)(vH,{agents:n,accounts:c,bindings:u,onRefresh:m})})]})]})}function hH({agents:e,onRefresh:t}){let[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(fH),[o,s]=(0,b.useState)(null),c=e.find(e=>e.id===n)??null,l=()=>{r(null),a(fH),s(null)},u=e=>{r(e.id),a({name:e.name,description:e.description,defaultProvider:e.defaultProvider??``,defaultModel:e.defaultModel??``,workspace:e.workspace??``,systemPrompt:e.systemPrompt,configJson:JSON.stringify(e.config??{},null,2),isEnabled:e.isEnabled,isDefault:e.isDefault}),s(null)};return(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(360px,0.72fr)_minmax(0,1.28fr)]`,children:[(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:c?`Edit agent`:`Create agent`}),(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[e.length,` configured`]})]}),n&&(0,C.jsx)(q,{variant:`ghost`,onClick:l,children:`New`})]}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),s(null);let r;try{let e=JSON.parse(i.configJson||`{}`);r=e&&typeof e==`object`&&!Array.isArray(e)?e:{}}catch{s(`Config JSON is invalid.`);return}let a={name:i.name,description:i.description,defaultProvider:i.defaultProvider||null,defaultModel:DH(i.defaultModel),workspace:DH(i.workspace),systemPrompt:i.systemPrompt,config:r,isEnabled:i.isEnabled,isDefault:i.isDefault};n?(await XV(n,a),s(`Agent updated.`)):(await YV(a),s(`Agent created.`)),await t(),n||l()},children:[(0,C.jsx)(xH,{label:`Name`,children:(0,C.jsx)(jg,{value:i.name,onChange:e=>a(t=>({...t,name:e.target.value})),required:!0})}),(0,C.jsx)(xH,{label:`Description`,children:(0,C.jsx)(dv,{value:i.description,onChange:e=>a(t=>({...t,description:e.target.value})),className:`min-h-20`})}),(0,C.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,C.jsx)(xH,{label:`Provider`,children:(0,C.jsxs)(PV,{className:`w-full`,value:i.defaultProvider,onChange:e=>a(t=>({...t,defaultProvider:e.target.value})),children:[(0,C.jsx)(FV,{value:``,children:`Active provider`}),(0,C.jsx)(FV,{value:`openrouter`,children:`OpenRouter`}),(0,C.jsx)(FV,{value:`ollama`,children:`Ollama`})]})}),(0,C.jsx)(xH,{label:`Model`,children:(0,C.jsx)(jg,{value:i.defaultModel,onChange:e=>a(t=>({...t,defaultModel:e.target.value})),placeholder:`Provider default`})})]}),(0,C.jsx)(xH,{label:`Workspace`,children:(0,C.jsx)(jg,{value:i.workspace,onChange:e=>a(t=>({...t,workspace:e.target.value})),placeholder:`Optional path`})}),(0,C.jsx)(xH,{label:`System prompt`,children:(0,C.jsx)(dv,{value:i.systemPrompt,onChange:e=>a(t=>({...t,systemPrompt:e.target.value})),className:`min-h-24`})}),(0,C.jsx)(xH,{label:`Config JSON`,children:(0,C.jsx)(dv,{value:i.configJson,onChange:e=>a(t=>({...t,configJson:e.target.value})),className:`min-h-24 font-mono text-xs`})}),(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,C.jsx)(SH,{label:`Enabled`,checked:i.isEnabled,onCheckedChange:e=>a(t=>({...t,isEnabled:e}))}),(0,C.jsx)(SH,{label:`Default`,checked:i.isDefault,onCheckedChange:e=>a(t=>({...t,isDefault:e}))})]}),o&&(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o}),(0,C.jsxs)(q,{type:`submit`,children:[(0,C.jsx)(Pt,{}),c?`Update`:`Create`]})]})]}),(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Agents`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:e.length===0?(0,C.jsx)(wH,{text:`No agents configured.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Name`}),(0,C.jsx)(VV,{children:`Provider`}),(0,C.jsx)(VV,{children:`Status`}),(0,C.jsx)(VV,{className:`text-right`,children:`Actions`})]})}),(0,C.jsx)(zV,{children:e.map(e=>(0,C.jsxs)(BV,{children:[(0,C.jsxs)(HV,{className:`min-w-52 whitespace-normal`,children:[(0,C.jsx)(`div`,{className:`font-medium`,children:e.name}),(0,C.jsx)(`div`,{className:`line-clamp-2 text-xs text-muted-foreground`,children:e.description||`No description`})]}),(0,C.jsxs)(HV,{children:[e.defaultProvider??`active`,(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.defaultModel??`default model`})]}),(0,C.jsx)(HV,{children:(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[e.isDefault&&(0,C.jsx)(vV,{variant:`secondary`,children:`default`}),(0,C.jsx)(vV,{variant:e.isEnabled?`default`:`outline`,children:e.isEnabled?`enabled`:`disabled`})]})}),(0,C.jsx)(HV,{children:(0,C.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Edit agent`,onClick:()=>u(e),children:(0,C.jsx)(Mt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Set default agent`,disabled:e.isDefault,onClick:()=>void QV(e.id).then(t),children:(0,C.jsx)(Vt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete agent`,onClick:()=>void ZV(e.id).then(t),children:(0,C.jsx)(Ht,{})})]})})]},e.id))})]})})]})]}),(0,C.jsx)(TV,{}),(0,C.jsx)(gH,{})]})}function gH(){let[e,t]=(0,b.useState)([]),[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!0),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(null),g=(0,b.useCallback)(async()=>{d(!0);try{t(await lH())}finally{d(!1)}},[]);(0,b.useEffect)(()=>{g()},[g]);let _=(0,b.useCallback)(async e=>{r(e),h(null);let t=await uH(e);a(t),s(t)},[]),v=async()=>{if(n){p(!0),h(null);try{await dH(n,i),s(i),await g(),h(`Saved.`)}catch(e){h(e instanceof Error?e.message:`Save failed.`)}finally{p(!1)}}},y=async()=>{let e=c.trim();if(!e.toLowerCase().endsWith(`.md`)){h(`File name must end with .md`);return}p(!0),h(null);try{await dH(e,`# ${e.replace(/\.md$/i,``)}\n\n`),l(``),await g(),await _(e),h(`Created.`)}catch(e){h(e instanceof Error?e.message:`Create failed.`)}finally{p(!1)}},x=n!==null&&i!==o;return(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Workspace files`}),(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Markdown files in `,(0,C.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs`,children:`~/.natroc/home/`}),` — visible to every agent.`]})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(jg,{value:c,onChange:e=>l(e.target.value),placeholder:`NEW_FILE.md`,className:`h-8 w-44`}),(0,C.jsxs)(q,{variant:`secondary`,size:`sm`,onClick:()=>void y(),disabled:f||c.trim().length===0,children:[(0,C.jsx)(Pt,{}),`Create`]}),(0,C.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>void g(),disabled:u,children:(0,C.jsx)(Ft,{className:K(u&&`animate-spin`)})})]})]}),(0,C.jsxs)(`div`,{className:`mt-4 grid gap-4 lg:grid-cols-[240px_minmax(0,1fr)]`,children:[(0,C.jsxs)(`div`,{className:`space-y-1`,children:[e.length===0&&!u&&(0,C.jsx)(wH,{text:`No markdown files yet.`}),e.map(e=>(0,C.jsxs)(`button`,{type:`button`,onClick:()=>void _(e.name),className:K(`flex w-full flex-col items-start rounded-md border px-3 py-2 text-left text-sm transition`,n===e.name?`border-primary bg-primary/10`:`border-border hover:bg-muted`),children:[(0,C.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,C.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.sizeBytes/10)/100),` KB`]})]},e.name))]}),(0,C.jsx)(`div`,{className:`space-y-3`,children:n?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(dv,{value:i,onChange:e=>a(e.target.value),className:`min-h-[280px] font-mono text-xs`,spellCheck:!1}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[x?`Unsaved changes`:`Up to date`,m&&(0,C.jsx)(`span`,{className:`ml-2 text-foreground`,children:m})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>a(o),disabled:!x||f,children:`Revert`}),(0,C.jsx)(q,{size:`sm`,onClick:()=>void v(),disabled:!x||f,children:f?`Saving...`:`Save`})]})]})]}):(0,C.jsx)(wH,{text:`Select a file to view or edit it.`})})]})]})}function _H({events:e,summary:t}){let n=t?.totals;return(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:[(0,C.jsx)(bH,{label:`Requests`,value:kH(n?.requests)}),(0,C.jsx)(bH,{label:`Tokens`,value:kH(n?.totalTokens)}),(0,C.jsx)(bH,{label:`Known`,value:kH(n?.knownRequests)}),(0,C.jsx)(bH,{label:`Unknown`,value:kH(n?.unknownRequests)})]}),(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-2`,children:[(0,C.jsx)(yH,{title:`By provider`,rows:t?.byProvider??[],labelKey:`provider`}),(0,C.jsx)(yH,{title:`By channel`,rows:t?.byChannel??[],labelKey:`channel`})]}),(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Request detail`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:e.length===0?(0,C.jsx)(wH,{text:`No usage events yet.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Time`}),(0,C.jsx)(VV,{children:`Provider`}),(0,C.jsx)(VV,{children:`Model`}),(0,C.jsx)(VV,{children:`Channel`}),(0,C.jsx)(VV,{children:`Tokens`}),(0,C.jsx)(VV,{children:`Status`})]})}),(0,C.jsx)(zV,{children:e.map(e=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:AH(e.createdAt)}),(0,C.jsx)(HV,{children:e.provider}),(0,C.jsx)(HV,{children:e.model}),(0,C.jsx)(HV,{children:e.channel}),(0,C.jsx)(HV,{children:kH(e.totalTokens)}),(0,C.jsx)(HV,{children:(0,C.jsx)(vV,{variant:e.usageStatus===`actual`?`default`:`outline`,children:e.usageStatus})})]},e.id))})]})})]})]})}function vH({accounts:e,agents:t,bindings:n,onRefresh:r}){let[i,a]=(0,b.useState)(pH),[o,s]=(0,b.useState)({accountId:``,agentId:``,peer:`*`});return(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(360px,0.72fr)_minmax(0,1.28fr)]`,children:[(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(CH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Add channel`}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),await nH({channel:i.channel,displayName:i.displayName,accountRef:DH(i.accountRef),token:DH(i.token),allowlist:OH(i.allowlist)}),a(pH),await r()},children:[(0,C.jsx)(xH,{label:`Channel`,children:(0,C.jsxs)(PV,{className:`w-full`,value:i.channel,onChange:e=>a(t=>({...t,channel:e.target.value})),children:[(0,C.jsx)(FV,{value:`telegram`,children:`Telegram`}),(0,C.jsx)(FV,{value:`whatsapp`,children:`WhatsApp`})]})}),(0,C.jsx)(xH,{label:`Display name`,children:(0,C.jsx)(jg,{value:i.displayName,onChange:e=>a(t=>({...t,displayName:e.target.value})),required:!0})}),(0,C.jsx)(xH,{label:`Account ref`,children:(0,C.jsx)(jg,{value:i.accountRef,onChange:e=>a(t=>({...t,accountRef:e.target.value})),placeholder:`@bot or phone/JID`})}),(0,C.jsx)(xH,{label:`Token`,children:(0,C.jsx)(jg,{value:i.token,onChange:e=>a(t=>({...t,token:e.target.value})),type:`password`,placeholder:`Telegram only`})}),(0,C.jsx)(xH,{label:`Allowlist`,children:(0,C.jsx)(jg,{value:i.allowlist,onChange:e=>a(t=>({...t,allowlist:e.target.value})),placeholder:`12345, *`})}),(0,C.jsxs)(q,{type:`submit`,children:[(0,C.jsx)(Pt,{}),`Add`]})]})]}),(0,C.jsxs)(CH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Bind agent`}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),await sH({accountId:o.accountId,agentId:o.agentId,peer:o.peer,isEnabled:!0}),s({accountId:``,agentId:``,peer:`*`}),await r()},children:[(0,C.jsx)(xH,{label:`Account`,children:(0,C.jsxs)(PV,{className:`w-full`,value:o.accountId,onChange:e=>s(t=>({...t,accountId:e.target.value})),required:!0,children:[(0,C.jsx)(FV,{value:``,children:`Select account`}),e.map(e=>(0,C.jsx)(FV,{value:e.id,children:e.displayName},e.id))]})}),(0,C.jsx)(xH,{label:`Agent`,children:(0,C.jsxs)(PV,{className:`w-full`,value:o.agentId,onChange:e=>s(t=>({...t,agentId:e.target.value})),required:!0,children:[(0,C.jsx)(FV,{value:``,children:`Select agent`}),t.map(e=>(0,C.jsx)(FV,{value:e.id,children:e.name},e.id))]})}),(0,C.jsx)(xH,{label:`Peer`,children:(0,C.jsx)(jg,{value:o.peer,onChange:e=>s(t=>({...t,peer:e.target.value})),required:!0})}),(0,C.jsxs)(q,{type:`submit`,disabled:!e.length||!t.length,children:[(0,C.jsx)(Nt,{}),`Bind`]})]})]})]}),(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Accounts`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4 space-y-3`,children:e.length===0?(0,C.jsx)(wH,{text:`No channel accounts configured.`}):e.map(e=>(0,C.jsx)(NV,{className:`gap-0 rounded-lg border-border bg-background/60 p-4 py-4 shadow-none`,children:(0,C.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(`h3`,{className:`font-medium`,children:e.displayName}),(0,C.jsx)(vV,{variant:`secondary`,children:e.channel}),(0,C.jsx)(vV,{variant:e.status===`connected`?`default`:`outline`,children:e.status})]}),(0,C.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e.accountRef??`No account ref`}),typeof e.metadata.qr==`string`&&(0,C.jsx)(`p`,{className:`mt-2 break-all rounded-lg bg-muted/50 p-2 font-mono text-xs text-muted-foreground`,children:e.metadata.qr}),e.lastError&&(0,C.jsx)(`p`,{className:`mt-2 text-sm text-destructive`,children:e.lastError})]}),(0,C.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[e.status===`connected`?(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Disconnect channel`,onClick:()=>void iH(e.id).then(r),children:(0,C.jsx)(Wt,{})}):(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Connect channel`,onClick:()=>void rH(e.id).then(r),children:(0,C.jsx)(Nt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete channel`,onClick:()=>void aH(e.id).then(r),children:(0,C.jsx)(Ht,{})})]})]})},e.id))})]}),(0,C.jsxs)(CH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Bindings`}),(0,C.jsx)(vV,{variant:`secondary`,children:n.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:n.length===0?(0,C.jsx)(wH,{text:`No channel bindings configured.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Peer`}),(0,C.jsx)(VV,{children:`Account`}),(0,C.jsx)(VV,{children:`Agent`}),(0,C.jsx)(VV,{className:`text-right`,children:`Actions`})]})}),(0,C.jsx)(zV,{children:n.map(n=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:n.peer}),(0,C.jsx)(HV,{children:jH(e,n.accountId)}),(0,C.jsx)(HV,{children:MH(t,n.agentId)}),(0,C.jsx)(HV,{children:(0,C.jsx)(`div`,{className:`flex justify-end`,children:(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete binding`,onClick:()=>void cH(n.id).then(r),children:(0,C.jsx)(Ht,{})})})})]},n.id))})]})})]})]})]})}function yH({labelKey:e,rows:t,title:n}){return(0,C.jsxs)(CH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:n}),(0,C.jsx)(`div`,{className:`mt-4`,children:t.length===0?(0,C.jsx)(wH,{text:`No usage breakdown yet.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Name`}),(0,C.jsx)(VV,{children:`Requests`}),(0,C.jsx)(VV,{children:`Tokens`})]})}),(0,C.jsx)(zV,{children:t.map(t=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:String(t[e]??`unknown`)}),(0,C.jsx)(HV,{children:kH(t.requests)}),(0,C.jsx)(HV,{children:kH(t.totalTokens)})]},String(t[e])))})]})})]})}function bH({label:e,value:t}){return(0,C.jsxs)(NV,{className:`gap-0 rounded-lg border-border bg-muted/30 p-4 py-4 shadow-none`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e}),(0,C.jsx)(`p`,{className:`mt-2 text-xl font-semibold`,children:t})]})}function xH({children:e,label:t}){return(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(vv,{htmlFor:(0,b.useMemo)(()=>`${t.toLowerCase().replace(/\s+/g,`-`)}-${crypto.randomUUID()}`,[t]),children:t}),e]})}function SH({checked:e,label:t,onCheckedChange:n}){return(0,C.jsxs)(vv,{className:`flex items-center gap-2 text-sm`,children:[(0,C.jsx)(IV,{checked:e,onCheckedChange:n}),t]})}function CH({children:e}){return(0,C.jsx)(NV,{className:`natroc-soft-panel gap-0 rounded-lg border-border bg-background/70 p-4 py-4 shadow-none`,children:e})}function wH({text:e}){return(0,C.jsx)(`div`,{className:`rounded-lg border border-dashed border-border px-4 py-8 text-center text-sm text-muted-foreground`,children:e})}function TH(){let e=new URLSearchParams(window.location.search).get(`tab`);return EH(e)?e:`agents`}function EH(e){return e===`agents`||e===`usage`||e===`channels`}function DH(e){return e.trim()||null}function OH(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function kH(e){return new Intl.NumberFormat().format(e??0)}function AH(e){return new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}function jH(e,t){return e.find(e=>e.id===t)?.displayName??`Unknown`}function MH(e,t){return e.find(e=>e.id===t)?.name??`Unknown`}function NH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty`,className:K(`flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance`,e),...t})}function PH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-header`,className:K(`flex max-w-sm flex-col items-center gap-2`,e),...t})}var FH=wg(`mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,{variants:{variant:{default:`bg-transparent`,icon:`flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4`}},defaultVariants:{variant:`default`}});function IH({className:e,variant:t=`default`,...n}){return(0,C.jsx)(`div`,{"data-slot":`empty-icon`,"data-variant":t,className:K(FH({variant:t,className:e})),...n})}function LH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-title`,className:K(`font-heading text-sm font-medium tracking-tight`,e),...t})}function RH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-description`,className:K(`text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,e),...t})}function zH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-content`,className:K(`flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance`,e),...t})}async function BH(){return(await J.call(`projects.list`)).projects??[]}async function VH(e,t){return(await J.call(`projects.create`,{name:e,description:t})).project}async function HH(e){await J.call(`projects.delete`,{id:e})}var UH=[`Activity`,`Name`,`Created`];function WH(e,t){let n=[...e];return t===`Name`?n.sort((e,t)=>e.name.localeCompare(t.name)):t===`Created`?n.sort((e,t)=>t.createdAt.localeCompare(e.createdAt)):n.sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function GH(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleDateString()}function KH(e){return(0,C.jsxs)(`svg`,{viewBox:`0 0 96 96`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,"aria-hidden":`true`,...e,children:[(0,C.jsx)(`rect`,{x:`28`,y:`14`,width:`22`,height:`22`,rx:`1`}),(0,C.jsx)(`rect`,{x:`51`,y:`13`,width:`22`,height:`22`,rx:`1`}),(0,C.jsx)(`rect`,{x:`51`,y:`38`,width:`22`,height:`20`,rx:`1`}),(0,C.jsx)(`path`,{d:`M59 62V51a4 4 0 0 1 8 0v11`}),(0,C.jsx)(`path`,{d:`M67 58V49a4 4 0 0 1 8 0v14`}),(0,C.jsx)(`path`,{d:`M75 60v-8a4 4 0 0 1 8 0v15`}),(0,C.jsx)(`path`,{d:`M83 61v-6a4 4 0 0 1 8 0v17c0 10-6 16-17 16H55a4 4 0 0 1-4-4V62a4 4 0 0 1 8 0v10`}),(0,C.jsx)(`path`,{d:`M51 72h12`})]})}function qH(){let[e,t]=(0,b.useState)(`Activity`),[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(!0),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!1),[f,p]=(0,b.useState)(``),[m,h]=(0,b.useState)(``),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(``),x=(0,b.useCallback)(async()=>{s(!0),l(``);try{a(await BH())}catch(e){l(e instanceof Error?e.message:`Failed to load projects.`)}finally{s(!1)}},[]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{x()});return()=>window.clearTimeout(e)},[x]);let S=()=>d(!0),w=()=>{p(``),h(``),y(``)},T=e=>{d(e),e||w()},E=async e=>{if(e.preventDefault(),!(!f.trim()||g)){_(!0),y(``);try{let e=await VH(f.trim(),m.trim());a(t=>[e,...t]),d(!1),w()}catch(e){y(e instanceof Error?e.message:`Failed to create project.`)}finally{_(!1)}}},D=async e=>{a(t=>t.filter(t=>t.id!==e));try{await HH(e)}catch{x()}},O=WH(i.filter(e=>{let t=n.trim().toLowerCase();return t?e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t):!0}),e);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`natroc-stagger flex flex-col gap-5`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Projects`}),(0,C.jsxs)(`div`,{className:`flex items-center gap-3 self-start sm:self-auto`,children:[(0,C.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground`,children:`Sort by`}),(0,C.jsxs)(E_,{children:[(0,C.jsx)(D_,{asChild:!0,children:(0,C.jsxs)(q,{variant:`secondary`,children:[e,(0,C.jsx)(Ye,{})]})}),(0,C.jsx)(O_,{align:`end`,className:`w-36`,children:(0,C.jsx)(j_,{value:e,onValueChange:e=>t(e),children:UH.map(e=>(0,C.jsx)(M_,{value:e,children:e},e))})})]}),(0,C.jsx)(q,{onClick:S,children:`New project`})]})]}),(0,C.jsxs)(`div`,{className:`relative`,children:[(0,C.jsx)(It,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,C.jsx)(jg,{"aria-label":`Search projects`,placeholder:`Search projects...`,value:n,onChange:e=>r(e.target.value),className:`h-10 rounded-lg border-transparent bg-muted/80 pl-9 text-sm focus-visible:border-ring dark:bg-muted/80`})]})]}),o?(0,C.jsx)(`div`,{className:`flex flex-1 items-center justify-center py-12 text-sm text-muted-foreground`,children:`Loading projects...`}):c?(0,C.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 py-12`,children:[(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:c}),(0,C.jsx)(q,{variant:`secondary`,onClick:()=>void x(),children:`Try again`})]}):O.length===0?(0,C.jsx)(`div`,{className:`natroc-enter flex flex-1 items-center justify-center py-12`,children:(0,C.jsxs)(NH,{className:`max-w-md border-0 p-0`,children:[(0,C.jsxs)(PH,{children:[(0,C.jsx)(IH,{className:`mb-3 text-foreground`,children:(0,C.jsx)(KH,{className:`size-20`})}),(0,C.jsx)(LH,{children:i.length===0?`Looking to start a project?`:`No projects match your search`}),(0,C.jsx)(RH,{children:`Upload materials, set custom instructions, and organize conversations in one space.`})]}),(0,C.jsx)(zH,{children:(0,C.jsx)(q,{variant:`secondary`,onClick:S,children:`New project`})})]})}):(0,C.jsx)(`div`,{className:`natroc-stagger grid gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:O.map(e=>(0,C.jsxs)(`div`,{className:`natroc-soft-panel flex flex-col gap-2 rounded-lg border border-border bg-card p-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsx)(`h3`,{className:`font-medium break-words`,children:e.name}),(0,C.jsx)(q,{variant:`ghost`,size:`icon`,"aria-label":`Delete ${e.name}`,onClick:()=>void D(e.id),children:(0,C.jsx)(Ht,{className:`text-muted-foreground`})})]}),e.description&&(0,C.jsx)(`p`,{className:`line-clamp-3 text-sm text-muted-foreground`,children:e.description}),(0,C.jsxs)(`p`,{className:`mt-auto text-xs text-muted-foreground`,children:[`Created `,GH(e.createdAt)]})]},e.id))})]}),(0,C.jsx)(nv,{open:u,onOpenChange:T,children:(0,C.jsxs)(ov,{className:`gap-6 rounded-lg p-6 sm:max-w-[520px]`,children:[(0,C.jsx)(lv,{className:`pr-8 text-2xl font-semibold`,children:`Create a project`}),(0,C.jsxs)(`div`,{className:`natroc-soft-panel rounded-lg bg-muted/80 p-4 dark:bg-background/80`,children:[(0,C.jsx)(`h2`,{className:`text-sm font-semibold`,children:`How to use projects`}),(0,C.jsxs)(uv,{className:`mt-3 space-y-3 text-sm leading-relaxed`,children:[(0,C.jsx)(`p`,{children:`Projects help organize your work and leverage knowledge across multiple conversations. Upload docs, code, and files to create themed collections that Natroc can reference again and again.`}),(0,C.jsx)(`p`,{children:`Start by creating a memorable title and description to organize your project. You can always edit it later.`})]})]}),(0,C.jsxs)(`form`,{className:`natroc-stagger flex flex-col gap-6`,onSubmit:E,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`project-name`,children:`What are you working on?`}),(0,C.jsx)(jg,{id:`project-name`,placeholder:`Name your project`,value:f,onChange:e=>p(e.target.value),className:`border-transparent bg-muted/80 dark:bg-muted/80`})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`project-description`,children:`What are you trying to achieve?`}),(0,C.jsx)(dv,{id:`project-description`,placeholder:`Describe your project, goals, subject, etc...`,value:m,onChange:e=>h(e.target.value),className:`min-h-20 resize-none border-transparent bg-muted/80 dark:bg-muted/80`})]}),v&&(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:v}),(0,C.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,C.jsx)(iv,{asChild:!0,children:(0,C.jsx)(q,{type:`button`,variant:`secondary`,children:`Cancel`})}),(0,C.jsx)(q,{type:`submit`,disabled:!f.trim()||g,children:g?`Creating...`:`Create project`})]})]})]})})]})}var JH=new Set([`/login`,`/register`,`/onboarding/register`]);function YH(){let[e,t]=(0,b.useState)(window.location.pathname),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(!0);return(0,b.useEffect)(()=>{let e=!1;eV().then(t=>{e||(a(t.hasUsers),r(!0))}).catch(()=>{e||(a(!0),r(!0))});let n=()=>t(window.location.pathname);return window.addEventListener(`popstate`,n),window.addEventListener(`natroc:navigate`,n),()=>{e=!0,window.removeEventListener(`popstate`,n),window.removeEventListener(`natroc:navigate`,n)}},[]),n?!i&&!JH.has(e)?(window.history.replaceState(null,``,`/onboarding/register`),(0,C.jsx)(rA,{})):e===`/login`?(0,C.jsx)(dV,{}):e===`/register`?(0,C.jsx)(gV,{}):e===`/onboarding/register`?(0,C.jsx)(rA,{}):z_()?e===y_.home.path||e.startsWith(`/chat/`)?(0,C.jsx)(Kv,{children:(0,C.jsx)(KB,{})}):e===y_.projects.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(qH,{})}):e===`/agent`?(window.location.replace(`/config?tab=agents`),null):e===y_.config.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(mH,{})}):e===y_.account.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(YB,{})}):(0,C.jsx)(Hk,{}):(0,C.jsx)(dV,{}):null}(0,x.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(b.StrictMode,{children:(0,C.jsxs)(j,{children:[(0,C.jsx)(vg,{children:(0,C.jsx)(YH,{})}),(0,C.jsx)(Jt,{position:`top-right`,richColors:!0})]})}));
|
|
114
|
+
`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return iR(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=tz.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function dz(){return{exit:{taskListCheckValueChecked:pz,taskListCheckValueUnchecked:pz,paragraph:mz}}}function fz(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:hz}}}function pz(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function mz(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function hz(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=tz.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function gz(){return[SL(),KL(),ZL(),nz(),dz()]}function _z(e){return{extensions:[CL(),qL(e),QL(),uz(e),fz()]}}var vz={tokenize:Mz,partial:!0},yz={tokenize:Nz,partial:!0},bz={tokenize:Pz,partial:!0},xz={tokenize:Fz,partial:!0},Sz={tokenize:Iz,partial:!0},Cz={name:`wwwAutolink`,tokenize:Az,previous:Lz},wz={name:`protocolAutolink`,tokenize:jz,previous:Rz},Tz={name:`emailAutolink`,tokenize:kz,previous:zz},Ez={};function Dz(){return{text:Ez}}for(var Oz=48;Oz<123;)Ez[Oz]=Tz,Oz++,Oz===58?Oz=65:Oz===91&&(Oz=97);Ez[43]=Tz,Ez[45]=Tz,Ez[46]=Tz,Ez[95]=Tz,Ez[72]=[Tz,wz],Ez[104]=[Tz,wz],Ez[87]=[Tz,Cz],Ez[119]=[Tz,Cz];function kz(e,t,n){let r=this,i,a;return o;function o(t){return!Bz(t)||!zz.call(r,r.previous)||Vz(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return Bz(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check(Sz,u,l)(t):t===45||t===95||SM(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&xM(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function Az(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!Lz.call(r,r.previous)||Vz(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(vz,e.attempt(yz,e.attempt(bz,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function jz(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&Rz.call(r,r.previous)&&!Vz(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(xM(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||wM(t)||OM(t)||jM(t)||AM(t)?n(t):e.attempt(yz,e.attempt(bz,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function Mz(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function Nz(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(xz,c,s)(t):t===null||OM(t)||jM(t)||t!==45&&AM(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function Pz(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(xz,t,a)(o):o===null||OM(o)||jM(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function Fz(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||OM(o)||jM(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||OM(e)||jM(e)?t(e):r(e)}function a(e){return xM(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):xM(t)?(e.consume(t),o):n(t)}}function Iz(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return SM(e)?n(e):t(e)}}function Lz(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||OM(e)}function Rz(e){return!xM(e)}function zz(e){return!(e===47||Bz(e))}function Bz(e){return e===43||e===45||e===46||e===95||SM(e)}function Vz(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var Hz={tokenize:Xz,partial:!0};function Uz(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:qz,continuation:{tokenize:Jz},exit:Yz}},text:{91:{name:`gfmFootnoteCall`,tokenize:Kz},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:Wz,resolveTo:Gz}}}}function Wz(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=bM(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function Gz(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function Kz(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||OM(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(bM(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return OM(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function qz(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||OM(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=bM(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return OM(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),PM(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function Jz(e,t,n){return e.check(YM,t,e.attempt(Hz,t,n))}function Yz(e){e.exit(`gfmFootnoteDefinition`)}function Xz(e,t,n){let r=this;return PM(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function Zz(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&pM(o,o.length,0,HM(s,e.slice(r+1,n),t)),pM(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),pM(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=VM(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=VM(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var Qz=class{constructor(){this.map=[]}add(e,t,n){$z(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function $z(e,t,n,r){let i=0;if(!(n===0&&r.length===0)){for(;i<e.map.length;){if(e.map[i][0]===t){e.map[i][1]+=n,e.map[i][2].push(...r);return}i+=1}e.map.push([t,n,r])}}function eB(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function tB(){return{flow:{null:{name:`table`,tokenize:nB,resolveAll:rB}}}}function nB(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):$(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):kM(t)?PM(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||OM(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,kM(t)?PM(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return kM(t)?PM(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||$(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return kM(t)?PM(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||$(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||$(n)?(e.exit(`tableRow`),t(n)):kM(n)?PM(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||OM(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function rB(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new Qz;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(aB(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=iB(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=iB(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=iB(f,t,o,i,n,d)):(o[0]=o[1],d=iB(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&aB(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=eB(t.events,n))}return e}function iB(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},oB(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=oB(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=oB(t.events,n[2]),a=oB(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},oB(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function aB(e,t,n,r,i){let a=[],o=oB(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function oB(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var sB={name:`tasklistCheck`,tokenize:lB};function cB(){return{text:{91:sB}}}function lB(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return OM(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return $(r)?t(r):kM(r)?e.check({tokenize:uB},t,n)(r):n(r)}}function uB(e,t,n){return PM(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function dB(e){return gM([Dz(),Uz(),Zz(e),tB(),cB()])}var fB={};function pB(e){let t=this,n=e||fB,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(dB(n)),a.push(gz()),o.push(_z(n))}function mB({content:e,className:t}){return(0,C.jsx)(`div`,{className:K(`space-y-3 break-words text-foreground`,`[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-4`,`[&_blockquote]:border-l-2 [&_blockquote]:border-border [&_blockquote]:pl-4 [&_blockquote]:text-muted-foreground`,`[&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[0.85em]`,`[&_h1]:text-xl [&_h1]:font-semibold [&_h2]:text-lg [&_h2]:font-semibold [&_h3]:font-semibold`,`[&_li]:ml-5 [&_ol]:list-decimal [&_ul]:list-disc`,`[&_pre]:overflow-x-auto [&_pre]:rounded-lg [&_pre]:bg-muted [&_pre]:p-3 [&_pre_code]:bg-transparent [&_pre_code]:p-0`,`[&_table]:w-full [&_table]:border-collapse [&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1 [&_th]:border [&_th]:border-border [&_th]:px-2 [&_th]:py-1 [&_th]:text-left`,t),children:(0,C.jsx)(lL,{remarkPlugins:[pB],children:e})})}function hB(e){return!Number.isFinite(e)||e<=0?`0.0s`:e<1?`${e.toFixed(1)}s`:`${Math.round(e)}s`}function gB(e){return e===void 0?`Thought`:`Thought for ${hB(e)}`}function _B({durationSeconds:e,isOpen:t=!1,isThinking:n=!1,onToggle:r,reasoningText:i=``}){let a=Fk(),o=i.trim().length>0;if(!o&&!n&&e===void 0)return null;let s=n?`Thinking...`:gB(e),c=a?{duration:0}:{duration:.18,ease:[.23,1,.32,1]};return(0,C.jsxs)(`div`,{className:`mb-2 text-xs text-muted-foreground`,children:[(0,C.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:r,className:`inline-flex items-center gap-1.5 text-left font-medium text-muted-foreground transition-colors duration-150 ease-[var(--natroc-ease-out)] hover:text-foreground`,children:[(0,C.jsx)(Ke,{className:`size-3.5 shrink-0`}),n?(0,C.jsx)(kA,{text:s,duration:1.4}):(0,C.jsx)(`span`,{children:s}),(0,C.jsx)(X.span,{"aria-hidden":`true`,animate:{rotate:t?180:0},transition:c,className:`inline-flex`,children:(0,C.jsx)(Ye,{className:`size-3.5 shrink-0`})})]}),(0,C.jsx)(zD,{initial:!1,children:t&&o&&(0,C.jsx)(X.div,{initial:a?!1:{height:0,opacity:0,y:-4},animate:{height:`auto`,opacity:1,y:0},exit:a?{opacity:0}:{height:0,opacity:0},transition:c,className:`overflow-hidden`,children:(0,C.jsx)(`div`,{className:`mt-1 pl-5`,children:(0,C.jsx)(mB,{content:i,className:K(`space-y-1 text-xs leading-relaxed text-muted-foreground`,`[&_p]:my-0 [&_pre]:my-1 [&_pre]:rounded-md [&_pre]:border [&_pre]:border-border/60 [&_pre]:bg-muted/40 [&_pre]:p-2`)})})},`reasoning-content`)})]})}function vB({events:e}){return e.length===0?null:(0,C.jsx)(`div`,{className:`mb-2 flex flex-col gap-1.5`,children:e.map(e=>(0,C.jsx)(yB,{event:e},e.id))})}function yB({event:e}){let[t,n]=(0,b.useState)(!1);return(0,C.jsxs)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-muted/30 text-xs`,children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2 text-left`,children:[(0,C.jsx)(bB,{status:e.status}),(0,C.jsx)(`span`,{className:`shrink-0 font-medium text-foreground`,children:e.name}),(0,C.jsx)(`span`,{className:`truncate text-muted-foreground`,children:xB(e.args)}),e.risk===`high`&&(0,C.jsx)(`span`,{className:`shrink-0 rounded bg-amber-500/15 px-1.5 py-0.5 text-[0.65rem] font-medium text-amber-600 dark:text-amber-400`,children:`high risk`}),(0,C.jsx)(Ye,{className:K(`ml-auto h-4 w-4 shrink-0 text-muted-foreground transition-transform`,t&&`rotate-180`)})]}),t&&(0,C.jsx)(`div`,{className:`border-t border-border px-3 py-2`,children:(0,C.jsx)(`pre`,{className:`overflow-x-auto whitespace-pre-wrap break-words text-[0.7rem] leading-relaxed text-muted-foreground`,children:e.output??`Running...`})})]})}function bB({status:e}){return e===`running`?(0,C.jsx)(`span`,{className:`h-3.5 w-3.5 shrink-0 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-muted-foreground`}):e===`error`?(0,C.jsx)(qt,{className:`h-4 w-4 shrink-0 text-destructive`}):(0,C.jsx)(Je,{className:`h-4 w-4 shrink-0 text-green-600 dark:text-green-400`})}function xB(e){let t=Object.entries(e).map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(` · `);return t.length>90?`${t.slice(0,90)}…`:t}var SB={id:`ollama`,listModels:CB};async function CB(){return(await J.call(`providers.models`,{provider:`ollama`})).models??[]}var wB={id:`openrouter`,listModels:TB};async function TB(){return(await J.call(`providers.models`,{provider:`openrouter`})).models??[]}var EB={openrouter:wB,ollama:SB};function DB(e){return EB[e]}function OB(e){return DB(e).listModels()}async function kB(){try{return(await J.call(`providers.list`)).providers?.find(e=>e.isActive)??null}catch{return null}}async function AB(e){return(await J.call(`conversations.messages`,{conversationId:e})).messages??[]}function jB(e,t){return new Promise((n,r)=>{t.onStart?.(),J.stream(`agent.chat`,e,{onEvent:e=>{let n=e;switch(n.type){case`text`:t.onText(n.delta);break;case`reasoning`:t.onReasoning(n.delta);break;case`step`:t.onStep?.();break;case`tool_call`:t.onToolCall?.({id:n.id,name:n.name,args:n.args,risk:n.risk});break;case`tool_result`:t.onToolResult?.({id:n.id,status:n.status,output:n.output});break;case`metadata`:break}},onEnd:e=>{t.onDone(e),n()},onError:e=>r(e)})})}function MB(e,t,n){return t||(n&&e.some(e=>e.id===n)?n:e[0]?.id??n??void 0)}function NB(e,t){return!t||e.some(e=>e.id===t)?e:[{id:t,name:t},...e]}var PB=[`medium`,`low`,`auto`,`high`,`minimal`,`xhigh`];function FB(e){let t=e.replace(/[_-]+/g,` `).trim();return t.toLowerCase()===`xhigh`?`Extra High`:t.split(/\s+/).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function IB(e){return e?.thinking?.supported?e.thinking.efforts.map(e=>({value:e,label:FB(e)})):[]}function LB(e,t){return t&&e.some(e=>e.value===t)?t:PB.find(t=>e.some(e=>e.value===t))??e[0]?.value}var RB=`The agent finished without a visible response. Please try again.`;function zB(){let[e,t]=(0,b.useState)([]),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(),[o,s]=(0,b.useState)(null),[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)(),[f,p]=(0,b.useState)(),[m,h]=(0,b.useState)(!1),g=(0,b.useRef)(null),_=o?.baseUrl??null,v=o?.defaultModel??null,y=o?.id,x=o?.provider,S=(0,b.useMemo)(()=>NB(c,u),[c,u]),C=(0,b.useMemo)(()=>S.find(e=>e.id===u),[S,u]),w=(0,b.useMemo)(()=>IB(C),[C]),T=(0,b.useMemo)(()=>!y||!x?null:{baseUrl:_,defaultModel:v,id:y,provider:x},[_,v,y,x]),E=(0,b.useCallback)(async()=>{s(await kB())},[]),D=(0,b.useCallback)(async e=>{r(!0);try{let n=await AB(e);a(e),t(n.map(e=>{let t=typeof e.thinkingDurationMs==`number`?Math.max(0,Math.round(e.thinkingDurationMs/100)/10):void 0;return{id:e.id,role:e.role,text:e.content,reasoningText:e.reasoningText??void 0,isReasoningOpen:!1,isThinking:!1,thinkingDurationSeconds:t,toolEvents:(e.toolEvents??[]).map(e=>({id:e.id,name:e.name,args:e.args,risk:e.risk,status:e.status,output:e.output})),files:[]}}))}catch(e){t([{id:crypto.randomUUID(),role:`error`,text:e instanceof Error?e.message:`Failed to load conversation.`,files:[]}])}finally{r(!1)}},[]),O=(0,b.useCallback)(async()=>{let e=window.location.pathname.match(/^\/chat\/(.+)$/)?.[1];e&&await D(e)},[D]);return(0,b.useEffect)(()=>{E(),O();let e=()=>{E()},n=e=>{let t=e;t.detail?.id&&D(t.detail.id)},r=()=>{a(void 0),t([])};return window.addEventListener(`natroc:provider-updated`,e),window.addEventListener(`natroc:conversation-selected`,n),window.addEventListener(`natroc:new-conversation`,r),()=>{window.removeEventListener(`natroc:provider-updated`,e),window.removeEventListener(`natroc:conversation-selected`,n),window.removeEventListener(`natroc:new-conversation`,r)}},[D,O,E]),(0,b.useEffect)(()=>{if(!T){g.current=null,l([]),d(void 0),p(void 0);return}let e=T,t=BB(e),n=g.current===t,r=!1;g.current=t,n||(l([]),d(void 0),p(void 0));async function i(){h(!0);try{let t=await OB(e.provider);if(r)return;l(t),d(r=>MB(t,n?r:void 0,e.defaultModel))}catch{if(r)return;n||l([]),d(t=>n?t??e.defaultModel??void 0:e.defaultModel??void 0)}finally{r||h(!1)}}return i(),()=>{r=!0}},[T]),(0,b.useEffect)(()=>{p(e=>LB(w,e))},[w]),{activeProvider:o,handleSend:async(e,c,l)=>{let d=e.trim();if(!d||n)return;let f=l?.thinkingEffort?{enabled:!0,effort:l.thinkingEffort}:void 0,p=(c??[]).map(e=>({name:e.name,url:URL.createObjectURL(e)})),m=crypto.randomUUID();t(e=>[...e,{id:m,role:`user`,text:d,files:p}]),r(!0);let h=crypto.randomUUID(),g=null,_=0,v,y=()=>{g===null&&(g=performance.now())},b=()=>(g!==null&&(_+=(performance.now()-g)/1e3,g=null,v=_),v);try{let e=o??await kB();if(!e)throw Error(`Connect OpenRouter or Ollama before sending a message.`);await jB({conversationId:i,message:d,model:u,thinking:f},{onStart(){t(e=>[...e,VB(h)])},onStep(){t(e=>e.map(e=>e.id===h?{...e,text:``}:e))},onText(e){t(t=>t.map(t=>t.id===h?{...t,text:t.text+e,isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??t.thinkingDurationSeconds}:t))},onToolCall(e){t(t=>t.map(t=>t.id===h?{...t,text:``,isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??t.thinkingDurationSeconds,toolEvents:[...t.toolEvents??[],{id:e.id,name:e.name,args:e.args,risk:e.risk,status:`running`}]}:t))},onToolResult(e){t(t=>t.map(t=>t.id===h?{...t,toolEvents:(t.toolEvents??[]).map(t=>t.id===e.id?{...t,status:e.status,output:e.output}:t)}:t))},onReasoning(e){y(),t(t=>t.map(t=>t.id===h?{...t,reasoningText:`${t.reasoningText??``}${e}`,isLoading:!1,isThinking:!0,thinkingDurationSeconds:void 0}:t))},onDone(n){a(n.conversationId),window.dispatchEvent(new Event(`natroc:conversation-updated`)),s(e),t(e=>e.map(e=>e.id===h?{...e,text:HB(n.content,e.text),isLoading:!1,isThinking:!1,thinkingDurationSeconds:b()??e.thinkingDurationSeconds}:e))}})}catch(e){t(t=>[...t.filter(e=>e.id!==h||!!(e.text||e.reasoningText||e.toolEvents&&e.toolEvents.length>0)).map(e=>e.id===h?{...e,isThinking:!1,thinkingDurationSeconds:b()??e.thinkingDurationSeconds}:e),{id:crypto.randomUUID(),role:`error`,text:e instanceof Error?e.message:`Failed to send message.`,files:[]}])}finally{r(!1)}},handleToggleReasoning:e=>{t(t=>t.map(t=>t.id===e?{...t,isReasoningOpen:!t.isReasoningOpen}:t))},isEmpty:e.length===0,isLoading:n,isLoadingModels:m,messages:e,modelOptions:S,selectedModel:u,selectedThinkingEffort:f,setSelectedModel:d,setSelectedThinkingEffort:p,thinkingEffortOptions:w}}function BB(e){return`${e.provider}:${e.id}:${e.baseUrl??``}`}function VB(e){return{id:e,role:`assistant`,text:``,reasoningText:``,isReasoningOpen:!1,isLoading:!0,isThinking:!1,thinkingDurationSeconds:void 0,toolEvents:[],files:[]}}function HB(e,t){return e.trim()?e:t.trim()?t:RB}function UB({clientHeight:e,scrollHeight:t}){return Math.max(0,t-e)}var WB=48,GB=360;function KB(){let{activeProvider:e,handleSend:t,handleToggleReasoning:n,isEmpty:r,isLoading:i,isLoadingModels:a,messages:o,modelOptions:s,selectedModel:c,selectedThinkingEffort:l,setSelectedModel:u,setSelectedThinkingEffort:d,thinkingEffortOptions:f}=zB(),p=(0,b.useRef)(null),m=(0,b.useRef)(!0),h=(0,b.useRef)(!1),g=(0,b.useRef)(null),[_,v]=(0,b.useState)(!0),[y,x]=(0,b.useState)(!1),S=(0,b.useCallback)((e=`auto`)=>{let t=p.current;t&&(t.scrollTo({top:UB(t),behavior:e}),v(!0))},[]),w=(0,b.useCallback)(()=>{let e=p.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<=WB;if(h.current){m.current=!0,v(t);return}m.current=t,v(t)},[]),T=(0,b.useCallback)(()=>{m.current=!0,h.current=!0,x(!0),g.current!==null&&window.clearTimeout(g.current);let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;S(e?`auto`:`smooth`);let t=()=>{S(),h.current=!1,x(!1),g.current=null};if(e){t();return}g.current=window.setTimeout(t,GB)},[S]),E=(0,b.useCallback)((e,n,r)=>{m.current=!0,v(!0),t(e,n,r),requestAnimationFrame(()=>S())},[t,S]);return(0,b.useEffect)(()=>{if(r){m.current=!0;let e=window.setTimeout(()=>{v(!0)},0);return()=>window.clearTimeout(e)}if(!m.current)return;let e=requestAnimationFrame(()=>S());return()=>cancelAnimationFrame(e)},[r,o,S]),(0,b.useEffect)(()=>()=>{g.current!==null&&window.clearTimeout(g.current),h.current=!1},[]),(0,C.jsxs)(`div`,{className:K(`flex h-full min-h-0 w-full flex-col items-center gap-4 overflow-hidden`,r?`justify-center`:`justify-end`),children:[!r&&(0,C.jsx)(`div`,{ref:p,onScroll:w,className:`flex min-h-0 w-full max-w-2xl flex-1 scrollbar-none flex-col gap-3 overflow-y-auto py-4 [&::-webkit-scrollbar]:hidden`,children:o.map(e=>(0,C.jsxs)(`div`,{className:K(`natroc-message-enter text-sm leading-relaxed`,e.role===`user`&&`self-end rounded-2xl border border-border bg-muted/40 px-4 py-2`,e.role===`assistant`&&`w-full self-start py-1`,e.role===`error`&&`self-start rounded-2xl border border-destructive/30 bg-destructive/10 px-4 py-2 text-destructive`),children:[e.role===`assistant`&&(e.reasoningText||e.isThinking||e.thinkingDurationSeconds!==void 0)&&(0,C.jsx)(_B,{durationSeconds:e.thinkingDurationSeconds,isOpen:e.isReasoningOpen,isThinking:e.isThinking,reasoningText:e.reasoningText,onToggle:()=>n(e.id)}),e.role===`assistant`&&e.toolEvents&&e.toolEvents.length>0&&(0,C.jsx)(vB,{events:e.toolEvents}),e.role===`assistant`&&e.isLoading&&!e.text&&!e.reasoningText&&!e.toolEvents?.length&&(0,C.jsx)(OA,{}),e.text&&(e.role===`assistant`?(0,C.jsx)(mB,{content:e.text}):(0,C.jsx)(`p`,{className:`whitespace-pre-wrap`,children:e.text})),e.files.length>0&&(0,C.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:e.files.map(e=>(0,C.jsx)(`img`,{src:e.url,alt:e.name,className:`h-20 w-20 rounded-lg object-cover`},e.url))})]},e.id))}),(0,C.jsxs)(`div`,{className:`flex w-full max-w-2xl shrink-0 flex-col items-center gap-3`,children:[r&&(0,C.jsxs)(`div`,{className:`natroc-stagger flex max-w-2xl flex-col items-center gap-3 text-center`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground md:text-3xl`,children:`Good morning! May this beautiful morning lead you to progress. Have a productive day ahead.`}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e?`Using ${e.displayName}${c?` · ${c}`:``}`:`Connect OpenRouter or Ollama to start chatting.`})]}),(0,C.jsxs)(`div`,{className:`relative w-full`,children:[(!_||y)&&(0,C.jsx)(`div`,{className:`pointer-events-none absolute bottom-full left-0 z-10 mb-2 flex w-full justify-center`,children:(0,C.jsx)(`button`,{type:`button`,"aria-label":i?`Follow agent stream`:`Scroll to latest message`,onClick:T,className:K(`natroc-soft-panel pointer-events-auto inline-flex h-8 w-8 items-center justify-center rounded-full border border-border bg-card text-muted-foreground shadow-[0_8px_24px_rgba(0,0,0,0.14)] transition-[background-color,color,transform] duration-150 ease-[var(--natroc-ease-out)] hover:bg-muted hover:text-foreground active:scale-[0.96] motion-reduce:active:scale-100`,y&&`natroc-jump-to-latest`),children:(0,C.jsx)($e,{className:`h-4 w-4`})})}),(0,C.jsx)(DA,{onSend:E,isLoading:i,placeholder:`Write a message...`,selectedModel:c,modelOptions:s,onModelChange:u,isModelLoading:a,isModelDisabled:!e,thinkingEffortOptions:f,selectedThinkingEffort:l,onThinkingEffortChange:d})]})]})]})}var qB=[`image/png`,`image/jpeg`,`image/webp`],JB=2*1024*1024;function YB(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)({status:`loading`}),[i,a]=(0,b.useState)({status:`idle`}),[o,s]=(0,b.useState)({status:`idle`}),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)({currentPassword:``,newPassword:``,confirmPassword:``}),f=(0,b.useRef)(null),p=(0,b.useCallback)(e=>{t(e),window.dispatchEvent(new CustomEvent(`natroc:user-updated`,{detail:e}))},[]),m=(0,b.useCallback)(async()=>{r({status:`loading`});try{let e=await J_();if(!e){r({status:`error`,message:`Account session is not available.`});return}t(e),r({status:`idle`})}catch(e){r({status:`error`,message:e instanceof Error?e.message:`Failed to load account.`})}},[]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{m()},0);return()=>window.clearTimeout(e)},[m]);let h=async e=>{let t=e.currentTarget.files?.[0];if(e.currentTarget.value=``,!(!t||i.status===`loading`)){if(!ZB(t.type)){me.error(`Profile picture must be PNG, JPEG, or WebP.`),a({status:`error`,message:`Profile picture must be PNG, JPEG, or WebP.`});return}if(t.size>JB){me.error(`Profile picture must be 2MB or smaller.`),a({status:`error`,message:`Profile picture must be 2MB or smaller.`});return}a({status:`loading`});try{let e=await QB(t);l(e),p((await Z_({dataUrl:e})).user),l(null),me.success(`Profile picture updated.`),a({status:`success`,message:`Profile picture updated.`})}catch(e){let t=$B(e,`Failed to update profile picture.`);l(null),me.error(t),a({status:`error`,message:t})}}},g=async()=>{if(!(i.status===`loading`||!e?.avatarUrl)){a({status:`loading`});try{p((await Z_({dataUrl:null})).user),me.success(`Profile picture removed.`),a({status:`success`,message:`Profile picture removed.`})}catch(e){let t=$B(e,`Failed to remove profile picture.`);me.error(t),a({status:`error`,message:t})}}},_=async e=>{if(e.preventDefault(),o.status!==`loading`){if(u.newPassword!==u.confirmPassword){me.error(`New password and confirmation do not match.`),s({status:`error`,message:`New password and confirmation do not match.`});return}s({status:`loading`});try{p((await X_({currentPassword:u.currentPassword,newPassword:u.newPassword})).user),d({currentPassword:``,newPassword:``,confirmPassword:``}),me.success(`Password updated.`),s({status:`success`,message:`Password updated.`})}catch(e){let t=$B(e,`Failed to update password.`);me.error(t),s({status:`error`,message:t})}}},v=e?.fullName.trim().charAt(0).toUpperCase()||`N`,y=c??e?.avatarUrl,x=i.status===`loading`,S=o.status===`loading`;return n.status===`loading`?(0,C.jsx)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] items-center justify-center text-sm text-muted-foreground`,children:`Loading account...`}):!e||n.status===`error`?(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] flex-col items-center justify-center gap-3`,children:[(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:n.message??`Failed to load account.`}),(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void m(),children:[(0,C.jsx)(Ft,{}),`Retry`]})]}):(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Account Settings`}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e.username})]}),(0,C.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(0,0.8fr)_minmax(0,1.2fr)]`,children:[(0,C.jsx)(`section`,{className:`natroc-soft-panel rounded-lg border border-border bg-card p-4`,children:(0,C.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,C.jsxs)(C_,{className:`size-20`,children:[y&&(0,C.jsx)(w_,{src:y,alt:e.fullName}),(0,C.jsx)(T_,{className:`text-xl`,children:v})]}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(`h2`,{className:`font-medium`,children:`Profile Picture`}),(0,C.jsx)(`p`,{className:`mt-1 truncate text-sm text-muted-foreground`,children:e.fullName}),(0,C.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(q,{type:`button`,variant:`secondary`,onClick:()=>f.current?.click(),disabled:x,children:[(0,C.jsx)(ht,{}),`Choose image`]}),(0,C.jsxs)(q,{type:`button`,variant:`ghost`,onClick:()=>void g(),disabled:x||!e.avatarUrl,children:[(0,C.jsx)(Ht,{}),`Remove`]})]}),(0,C.jsx)(`input`,{ref:f,type:`file`,className:`hidden`,accept:qB.join(`,`),onChange:h}),(0,C.jsx)(XB,{state:i})]})]})}),(0,C.jsxs)(`form`,{className:`natroc-soft-panel rounded-lg border border-border bg-card p-4`,onSubmit:_,children:[(0,C.jsxs)(`div`,{className:`mb-5 flex items-center gap-2`,children:[(0,C.jsx)(St,{className:`size-4 text-muted-foreground`}),(0,C.jsx)(`h2`,{className:`font-medium`,children:`Password`})]}),(0,C.jsxs)(`div`,{className:`grid gap-4`,children:[(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-current-password`,children:`Current password`}),(0,C.jsx)(jg,{id:`account-current-password`,type:`password`,autoComplete:`current-password`,value:u.currentPassword,onChange:e=>d(t=>({...t,currentPassword:e.currentTarget.value})),required:!0})]}),(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-new-password`,children:`New password`}),(0,C.jsx)(jg,{id:`account-new-password`,type:`password`,autoComplete:`new-password`,minLength:6,value:u.newPassword,onChange:e=>d(t=>({...t,newPassword:e.currentTarget.value})),required:!0})]}),(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`account-confirm-password`,children:`Confirm new password`}),(0,C.jsx)(jg,{id:`account-confirm-password`,type:`password`,autoComplete:`new-password`,minLength:6,value:u.confirmPassword,onChange:e=>d(t=>({...t,confirmPassword:e.currentTarget.value})),required:!0})]})]}),(0,C.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,C.jsx)(XB,{state:o}),(0,C.jsx)(q,{type:`submit`,disabled:S||!u.currentPassword||!u.newPassword||!u.confirmPassword,children:S?`Saving...`:`Save password`})]})]})]})]})}function XB({state:e}){return e.message?(0,C.jsx)(`p`,{className:K(`mt-3 text-sm`,e.status===`error`?`text-destructive`:`text-muted-foreground`),children:e.message}):null}function ZB(e){return qB.some(t=>t===e)}function QB(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{if(typeof r.result==`string`){t(r.result);return}n(Error(`Unable to read profile picture.`))},r.onerror=()=>n(Error(`Unable to read profile picture.`)),r.readAsDataURL(e)})}function $B(e,t){return e instanceof Error?e.message:t}async function eV(){return await J.call(`auth.bootstrap`)}function tV({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`field-group`,className:K(`group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4`,e),...t})}var nV=wg(`group/field flex w-full gap-2 data-[invalid=true]:text-destructive`,{variants:{orientation:{vertical:`flex-col *:w-full [&>.sr-only]:w-auto`,horizontal:`flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`,responsive:`flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px`}},defaultVariants:{orientation:`vertical`}});function rV({className:e,orientation:t=`vertical`,...n}){return(0,C.jsx)(`div`,{role:`group`,"data-slot":`field`,"data-orientation":t,className:K(nV({orientation:t}),e),...n})}function iV({className:e,...t}){return(0,C.jsx)(vv,{"data-slot":`field-label`,className:K(`group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10`,`has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col`,e),...t})}function aV({className:e,...t}){return(0,C.jsx)(`p`,{"data-slot":`field-description`,className:K(`text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5`,`last:mt-0 nth-last-2:-mt-1`,`[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,e),...t})}function oV({className:e,children:t,errors:n,...r}){let i=(0,b.useMemo)(()=>{if(t)return t;if(!n?.length)return null;let e=[...new Map(n.map(e=>[e?.message,e])).values()];return e?.length==1?e[0]?.message:(0,C.jsx)(`ul`,{className:`ml-4 flex list-disc flex-col gap-1`,children:e.map((e,t)=>e?.message&&(0,C.jsx)(`li`,{children:e.message},t))})},[t,n]);return i?(0,C.jsx)(`div`,{role:`alert`,"data-slot":`field-error`,className:K(`text-sm font-normal text-destructive`,e),...r,children:i}):null}var sV=[{cx:48,cy:68},{cx:104,cy:36},{cx:152,cy:72},{cx:86,cy:130},{cx:164,cy:154}],cV=[`M48 68L104 36L152 72`,`M48 68L86 130L164 154`,`M104 36L86 130L152 72L164 154`];function lV(){let e=Fk();return(0,C.jsxs)(X.svg,{"aria-hidden":`true`,viewBox:`0 0 212 188`,className:`h-full w-full text-foreground`,fill:`none`,initial:e?!1:{opacity:0,y:8},animate:e?void 0:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsx)(`rect`,{x:`18`,y:`18`,width:`176`,height:`152`,rx:`18`,fill:`oklch(0.98 0.004 250 / 0.7)`,stroke:`oklch(0.48 0.02 250 / 0.16)`}),(0,C.jsx)(`path`,{d:`M42 156h128`,stroke:`oklch(0.48 0.02 250 / 0.16)`,strokeLinecap:`round`}),cV.map((t,n)=>(0,C.jsx)(X.path,{d:t,stroke:`oklch(0.62 0.08 218 / 0.58)`,strokeWidth:`2`,strokeLinecap:`round`,initial:e?!1:{pathLength:.2,opacity:.35},animate:e?void 0:{pathLength:[.2,1,.2],opacity:[.32,.72,.32]},transition:{delay:n*.16,duration:2.6,repeat:1/0,ease:[.22,1,.36,1]}},t)),sV.map((t,n)=>(0,C.jsxs)(X.g,{animate:e?void 0:{scale:[1,1.08,1],opacity:[.78,1,.78]},transition:{delay:n*.12,duration:2,repeat:1/0,ease:`easeInOut`},style:{originX:t.cx,originY:t.cy},children:[(0,C.jsx)(`circle`,{cx:t.cx,cy:t.cy,r:`12`,fill:`oklch(0.96 0.01 250)`,stroke:`oklch(0.46 0.04 250 / 0.28)`}),(0,C.jsx)(`circle`,{cx:t.cx,cy:t.cy,r:`4`,fill:`oklch(0.62 0.08 218)`})]},`${t.cx}-${t.cy}`)),(0,C.jsx)(X.rect,{x:`68`,y:`79`,width:`76`,height:`35`,rx:`12`,fill:`oklch(0.18 0.012 250)`,animate:e?void 0:{y:[79,76,79]},transition:{duration:3,repeat:1/0,ease:[.22,1,.36,1]}}),(0,C.jsx)(X.path,{d:`M88 96h36`,stroke:`oklch(0.82 0.1 190)`,strokeWidth:`3`,strokeLinecap:`round`,animate:e?void 0:{opacity:[.45,1,.45]},transition:{duration:1.8,repeat:1/0,ease:`easeInOut`}})]})}function uV({brandName:e=`Natroc`,className:t,errorMessage:n,isLoading:r=!1,logo:i=(0,C.jsx)(Pv,{}),onForgotPassword:a,onRegister:o,onSubmit:s}){let[c,l]=(0,b.useState)({password:``,username:``}),[u,d]=(0,b.useState)(!1),f=c.username.trim().length>0&&c.password.trim().length>0&&!r;return(0,C.jsx)(`main`,{className:K(`grid h-dvh max-h-dvh min-h-0 overflow-hidden bg-background text-foreground`,t),children:(0,C.jsxs)(`div`,{className:`grid min-h-0 lg:grid-cols-[minmax(24rem,0.9fr)_minmax(0,1.1fr)]`,children:[(0,C.jsx)(`section`,{className:`flex min-h-0 items-center justify-center px-4 py-6 sm:px-6 lg:px-10`,children:(0,C.jsxs)(X.div,{className:`flex w-full max-w-sm flex-col gap-7`,initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,C.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg border bg-card text-foreground`,children:i}),(0,C.jsxs)(`div`,{className:`flex flex-col`,children:[(0,C.jsx)(`span`,{className:`text-base leading-tight font-semibold`,children:e}),(0,C.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Agent workspace`})]})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-normal`,children:`Welcome back`}),(0,C.jsx)(`p`,{className:`max-w-[46ch] text-sm leading-6 text-muted-foreground`,children:`Sign in with your workspace username and password.`})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),f&&s?.({password:c.password,username:c.username.trim()})},className:`flex flex-col gap-5`,children:[(0,C.jsxs)(tV,{children:[(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`login-username`,children:`Username`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Kt,{})}),(0,C.jsx)(_v,{id:`login-username`,autoComplete:`username`,placeholder:`your.username`,value:c.username,onChange:e=>l(t=>({...t,username:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`login-password`,children:`Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`login-password`,autoComplete:`current-password`,placeholder:`Enter password`,type:u?`text`:`password`,value:c.password,onChange:e=>l(t=>({...t,password:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":u?`Hide password`:`Show password`,onClick:()=>d(e=>!e),size:`icon-xs`,children:u?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]}),(0,C.jsx)(aV,{children:`Use the account assigned to your Natroc workspace.`})]})]}),(0,C.jsx)(zD,{children:n&&(0,C.jsx)(X.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2,ease:[.22,1,.36,1]},children:(0,C.jsx)(oV,{children:n})})}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(q,{type:`button`,variant:`ghost`,className:`px-0`,onClick:a,disabled:!a||r,children:`Forgot password?`}),(0,C.jsxs)(q,{type:`submit`,disabled:!f,children:[r?`Signing in...`:`Sign in`,(0,C.jsx)(Ve,{"data-icon":`inline-end`})]})]})]}),o&&(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Don't have an account?`,` `,(0,C.jsx)(`button`,{type:`button`,onClick:o,className:`font-medium text-foreground underline-offset-4 hover:underline`,children:`Create one`})]})]})}),(0,C.jsxs)(`section`,{className:`relative hidden min-h-0 overflow-hidden border-l bg-muted/30 lg:block`,children:[(0,C.jsx)(`div`,{className:`absolute inset-0 bg-[linear-gradient(oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px),linear-gradient(90deg,oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px)] [mask-image:radial-gradient(ellipse_at_center,black_18%,transparent_72%)] bg-[size:38px_38px]`}),(0,C.jsxs)(`div`,{className:`relative flex h-full flex-col justify-center px-14`,children:[(0,C.jsx)(X.div,{className:`mx-auto aspect-[1.12] w-full max-w-md`,initial:{opacity:0,scale:.98},animate:{opacity:1,scale:1},transition:{duration:.4,ease:[.22,1,.36,1]},children:(0,C.jsx)(lV,{})}),(0,C.jsxs)(`div`,{className:`mx-auto flex max-w-md flex-col gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Secure access for every user`}),(0,C.jsx)(`p`,{className:`text-sm leading-6 text-muted-foreground`,children:`Natroc keeps the interface quiet while your agent handles the busy work behind the workspace.`})]})]})]})]})})}function dV(){let[e,t]=(0,b.useState)(``),[n,r]=(0,b.useState)(!1);return(0,C.jsx)(uV,{onSubmit:async e=>{r(!0),t(``);try{L_((await K_(e.username,e.password)).token),window.location.assign(`/`)}catch(e){t(e instanceof Error?e.message:`Sign in failed.`)}finally{r(!1)}},isLoading:n,errorMessage:e,onRegister:()=>window.location.assign(`/register`)})}var fV=[{detail:`Human-readable profile identity`,label:`Full Name`},{detail:`Workspace handle for agent access`,label:`Username`},{detail:`Verified secret before submit`,label:`Password`}],pV=[mt,Kt,_t];function mV(){let e=Fk();return(0,C.jsxs)(`div`,{className:`mx-auto flex w-full max-w-md flex-col gap-6`,children:[(0,C.jsxs)(X.div,{"aria-hidden":`true`,className:`relative mx-auto aspect-square w-full max-w-[22rem]`,initial:e?!1:{opacity:0,y:8},animate:e?void 0:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsx)(X.div,{className:`absolute inset-6 rounded-full border border-border`,animate:e?void 0:{rotate:360},transition:{duration:18,repeat:1/0,ease:`linear`}}),(0,C.jsx)(X.div,{className:`absolute inset-14 rounded-full border border-dashed border-border`,animate:e?void 0:{rotate:-360},transition:{duration:24,repeat:1/0,ease:`linear`}}),(0,C.jsxs)(X.div,{className:`absolute inset-x-16 top-16 flex flex-col gap-3 rounded-lg border bg-background p-4 shadow-sm`,animate:e?void 0:{y:[-3,3,-3]},transition:{duration:3.2,repeat:1/0,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`div`,{className:`flex size-9 items-center justify-center rounded-lg bg-muted text-foreground`,children:(0,C.jsx)(ct,{className:`size-4`})}),(0,C.jsx)(`span`,{className:`rounded-md border px-2 py-1 text-xs text-muted-foreground`,children:`user.create`})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`span`,{className:`h-2 w-3/4 rounded-sm bg-foreground/80`}),(0,C.jsx)(`span`,{className:`h-2 w-1/2 rounded-sm bg-muted-foreground/45`})]}),(0,C.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`}),(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`}),(0,C.jsx)(`span`,{className:`h-8 rounded-md border bg-muted/50`})]})]}),(0,C.jsx)(X.div,{className:`absolute top-12 left-1 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[-2,4,-2]},transition:{duration:2.8,repeat:1/0,ease:`easeInOut`},children:`Full Name`}),(0,C.jsx)(X.div,{className:`absolute top-28 right-2 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[3,-3,3]},transition:{duration:3,repeat:1/0,ease:`easeInOut`},children:`Username`}),(0,C.jsx)(X.div,{className:`absolute bottom-14 left-12 rounded-lg border bg-background px-3 py-2 text-xs font-medium shadow-sm`,animate:e?void 0:{y:[-1,4,-1]},transition:{duration:3.4,repeat:1/0,ease:`easeInOut`},children:`Password`})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-2`,children:fV.map((t,n)=>{let r=pV[n];return(0,C.jsxs)(X.div,{className:`flex items-center gap-3 rounded-lg border bg-background px-3 py-2 shadow-sm`,initial:e?!1:{opacity:0,y:6},animate:e?void 0:{opacity:1,y:0},transition:{delay:.08*n,duration:.28,ease:[.22,1,.36,1]},children:[(0,C.jsx)(`div`,{className:`flex size-8 items-center justify-center rounded-md bg-muted`,children:(0,C.jsx)(r,{className:`size-4`})}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(`p`,{className:`truncate text-sm font-medium`,children:t.label}),(0,C.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,children:t.detail})]}),(0,C.jsx)(Je,{className:`size-4 text-muted-foreground`})]},t.label)})})]})}function hV({brandName:e=`Natroc`,className:t,errorMessage:n,isLoading:r=!1,logo:i=(0,C.jsx)(Pv,{}),onLogin:a,onSubmit:o}){let[s,c]=(0,b.useState)({confirmPassword:``,fullName:``,password:``,username:``}),[l,u]=(0,b.useState)(!1),[d,f]=(0,b.useState)(!1),p=s.confirmPassword.length>0&&s.password!==s.confirmPassword,m=s.fullName.trim().length>0&&s.username.trim().length>0&&s.password.length>0&&s.confirmPassword.length>0&&!p&&!r;return(0,C.jsx)(`main`,{className:K(`grid h-dvh max-h-dvh min-h-0 overflow-hidden bg-background text-foreground`,t),children:(0,C.jsxs)(`div`,{className:`grid min-h-0 lg:grid-cols-[minmax(24rem,0.9fr)_minmax(0,1.1fr)]`,children:[(0,C.jsx)(`section`,{className:`flex min-h-0 items-center justify-center px-4 py-5 sm:px-6 lg:px-10`,children:(0,C.jsxs)(X.div,{className:`flex w-full max-w-sm flex-col gap-6`,initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.35,ease:[.22,1,.36,1]},children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,C.jsx)(`span`,{className:`flex size-10 items-center justify-center rounded-lg border bg-card text-foreground`,children:i}),(0,C.jsxs)(`div`,{className:`flex flex-col`,children:[(0,C.jsx)(`span`,{className:`text-base leading-tight font-semibold`,children:e}),(0,C.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`User access`})]})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-normal`,children:`Create account`}),(0,C.jsx)(`p`,{className:`max-w-[48ch] text-sm leading-6 text-muted-foreground`,children:`Register a user profile for access to the Natroc workspace.`})]}),(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),m&&o?.({confirmPassword:s.confirmPassword,fullName:s.fullName.trim(),password:s.password,username:s.username.trim()})},className:`flex flex-col gap-5`,children:[(0,C.jsxs)(tV,{children:[(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-full-name`,children:`Full Name`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(mt,{})}),(0,C.jsx)(_v,{id:`register-full-name`,autoComplete:`name`,placeholder:`Full name`,value:s.fullName,onChange:e=>c(t=>({...t,fullName:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-username`,children:`Username`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Kt,{})}),(0,C.jsx)(_v,{id:`register-username`,autoComplete:`username`,placeholder:`your.username`,value:s.username,onChange:e=>c(t=>({...t,username:e.target.value}))})]})]}),(0,C.jsxs)(rV,{children:[(0,C.jsx)(iV,{htmlFor:`register-password`,children:`Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`register-password`,autoComplete:`new-password`,placeholder:`Create password`,type:l?`text`:`password`,value:s.password,onChange:e=>c(t=>({...t,password:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":l?`Hide password`:`Show password`,onClick:()=>u(e=>!e),size:`icon-xs`,children:l?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]})]}),(0,C.jsxs)(rV,{"data-invalid":p,children:[(0,C.jsx)(iV,{htmlFor:`register-confirm-password`,children:`Confirm Password`}),(0,C.jsxs)(fv,{children:[(0,C.jsx)(mv,{children:(0,C.jsx)(Ct,{})}),(0,C.jsx)(_v,{id:`register-confirm-password`,"aria-invalid":p,autoComplete:`new-password`,placeholder:`Confirm password`,type:d?`text`:`password`,value:s.confirmPassword,onChange:e=>c(t=>({...t,confirmPassword:e.target.value}))}),(0,C.jsx)(mv,{align:`inline-end`,children:(0,C.jsx)(gv,{"aria-label":d?`Hide confirm password`:`Show confirm password`,onClick:()=>f(e=>!e),size:`icon-xs`,children:d?(0,C.jsx)(ot,{}):(0,C.jsx)(st,{})})})]}),p?(0,C.jsx)(oV,{children:`Passwords do not match.`}):(0,C.jsx)(aV,{children:`Use the same password to confirm access.`})]})]}),(0,C.jsx)(zD,{children:n&&(0,C.jsx)(X.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2,ease:[.22,1,.36,1]},children:(0,C.jsx)(oV,{children:n})})}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(q,{type:`button`,variant:`ghost`,className:`px-0`,onClick:a,disabled:!a||r,children:`Sign in instead`}),(0,C.jsxs)(q,{type:`submit`,disabled:!m,children:[r?`Creating...`:`Create account`,(0,C.jsx)(Ve,{"data-icon":`inline-end`})]})]})]})]})}),(0,C.jsxs)(`section`,{className:`relative hidden min-h-0 overflow-hidden border-l bg-muted/30 lg:block`,children:[(0,C.jsx)(`div`,{className:`absolute inset-0 bg-[linear-gradient(oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px),linear-gradient(90deg,oklch(0.48_0.02_250_/_0.08)_1px,transparent_1px)] [mask-image:radial-gradient(ellipse_at_center,black_18%,transparent_72%)] bg-[size:38px_38px]`}),(0,C.jsxs)(`div`,{className:`relative flex h-full flex-col justify-center px-14`,children:[(0,C.jsx)(mV,{}),(0,C.jsxs)(`div`,{className:`mx-auto flex max-w-md flex-col gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Account identity for every user`}),(0,C.jsx)(`p`,{className:`text-sm leading-6 text-muted-foreground`,children:`Keep identity simple: a real name, a workspace username, and a password verified before submit.`})]})]})]})]})})}function gV(){let[e,t]=(0,b.useState)(``),[n,r]=(0,b.useState)(!1);return(0,C.jsx)(hV,{onSubmit:async e=>{if(e.password!==e.confirmPassword){t(`Passwords do not match.`);return}r(!0),t(``);try{L_((await q_({username:e.username,fullName:e.fullName,password:e.password})).token),window.location.assign(`/`)}catch(e){t(e instanceof Error?e.message:`Registration failed.`)}finally{r(!1)}},isLoading:n,errorMessage:e,onLogin:()=>window.location.assign(`/login`)})}var _V=wg(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function vV({className:e,variant:t=`default`,asChild:n=!1,...r}){return(0,C.jsx)(n?$t:`span`,{"data-slot":`badge`,"data-variant":t,className:K(_V({variant:t}),e),...r})}async function yV(){return J.call(`agent.status`)}async function bV(e){let t=e?.trim();return(await J.call(`agent.memory`,t?{query:t}:{})).entries??[]}async function xV(e=`pending`){return(await J.call(`agent.proposals.list`,{status:e})).proposals??[]}async function SV(e){return J.call(`agent.proposals.approve`,{id:e})}async function CV(e){return J.call(`agent.proposals.reject`,{id:e})}async function wV(){return(await J.call(`agent.improve`,{})).proposals??[]}function TV(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)([]),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(null),[u,d]=(0,b.useState)({error:null,isLoading:!0}),[f,p]=(0,b.useState)(null),[m,h]=(0,b.useState)(!1),g=(0,b.useCallback)(async()=>{d({error:null,isLoading:!0});try{let[e,n,i]=await Promise.all([yV(),bV(o),xV()]);t(e),r(n),a(i)}catch(e){d({error:e instanceof Error?e.message:`Failed to load agent state.`,isLoading:!1});return}d({error:null,isLoading:!1})},[o]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(e)},[g]);let _=async e=>{p(e);try{await SV(e),await g()}finally{p(null)}},v=async e=>{p(e);try{await CV(e),await g()}finally{p(null)}};return(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,C.jsx)(Ge,{className:`size-4`}),(0,C.jsx)(`span`,{className:`text-sm font-medium`,children:`Agent runtime`})]}),(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Natroc is alive locally`})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void g(),disabled:u.isLoading,children:[(0,C.jsx)(Ft,{className:K(u.isLoading&&`animate-spin`)}),`Refresh`]}),(0,C.jsxs)(q,{onClick:async()=>{h(!0),l(null);try{l(`Created ${(await wV()).length} pending proposal(s).`),await g()}catch(e){l(e instanceof Error?e.message:`Improvement review failed.`)}finally{h(!1)}},disabled:m,children:[(0,C.jsx)(zt,{className:K(m&&`animate-pulse`)}),`Improve`]})]})]}),u.error&&(0,C.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive`,children:u.error}),c&&(0,C.jsx)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-muted/40 px-4 py-3 text-sm text-muted-foreground`,children:c}),(0,C.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,C.jsx)(EV,{status:e}),(0,C.jsx)(DV,{status:e}),(0,C.jsx)(OV,{status:e})]}),(0,C.jsxs)(`div`,{className:`grid min-h-0 gap-5 xl:grid-cols-[minmax(0,1.05fr)_minmax(360px,0.95fr)]`,children:[(0,C.jsxs)(`section`,{className:`flex min-h-0 flex-col gap-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Pending proposals`}),(0,C.jsx)(vV,{variant:`secondary`,children:i.length})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-3`,children:i.length===0?(0,C.jsx)(MV,{text:`No pending proposals.`}):i.map(e=>(0,C.jsx)(AV,{proposal:e,isBusy:f===e.id,onApprove:_,onReject:v},e.id))})]}),(0,C.jsxs)(`section`,{className:`flex min-h-0 flex-col gap-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Approved memory`}),(0,C.jsxs)(`div`,{className:`relative w-56`,children:[(0,C.jsx)(It,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,C.jsx)(jg,{value:o,onChange:e=>s(e.target.value),placeholder:`Search memory`,className:`h-9 rounded-lg border-transparent bg-muted/80 pl-9`})]})]}),(0,C.jsx)(`div`,{className:`flex flex-col gap-3`,children:n.length===0?(0,C.jsx)(MV,{text:`No approved memory.`}):n.map(e=>(0,C.jsx)(jV,{entry:e},e.id))})]})]})]})}function EV({status:e}){return(0,C.jsx)(kV,{icon:(0,C.jsx)(Ge,{className:`size-4`}),label:`Runtime`,value:e?.providers.active?.displayName??`No provider`,detail:e?.providers.active?.defaultModel??`Model not selected`})}function DV({status:e}){let t=e?.homeFiles.filter(e=>e.exists).length??0,n=e?.homeFiles.length??0;return(0,C.jsx)(kV,{icon:(0,C.jsx)(pt,{className:`size-4`}),label:`Home`,value:e?.paths?.homeDir??`~/.natroc/home`,detail:`${t}/${n} files ready`})}function OV({status:e}){return(0,C.jsx)(kV,{icon:(0,C.jsx)(it,{className:`size-4`}),label:`Memory`,value:`${e?.counts.memories??0} approved`,detail:`${e?.counts.pendingProposals??0} pending proposal(s)`})}function kV({detail:e,icon:t,label:n,value:r}){return(0,C.jsxs)(`div`,{className:`natroc-soft-panel min-w-0 rounded-lg border border-border bg-muted/30 p-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-muted-foreground`,children:[t,(0,C.jsx)(`span`,{children:n})]}),(0,C.jsx)(`p`,{className:`mt-3 truncate text-sm font-semibold`,children:r}),(0,C.jsx)(`p`,{className:`mt-1 truncate text-xs text-muted-foreground`,children:e})]})}function AV({isBusy:e,onApprove:t,onReject:n,proposal:r}){return(0,C.jsx)(`div`,{className:`natroc-soft-panel rounded-lg border border-border bg-background/60 p-4`,children:(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,C.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(vV,{variant:`secondary`,children:r.kind}),(0,C.jsx)(`h3`,{className:`text-sm font-semibold`,children:r.title})]}),(0,C.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:r.content}),(0,C.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground/80`,children:r.reason})]}),(0,C.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,C.jsx)(q,{size:`icon`,variant:`secondary`,disabled:e,onClick:()=>void t(r.id),"aria-label":`Approve proposal`,children:(0,C.jsx)(Je,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,disabled:e,onClick:()=>void n(r.id),"aria-label":`Reject proposal`,children:(0,C.jsx)(qt,{})})]})]})})}function jV({entry:e}){return(0,C.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/60 p-4`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(vV,{variant:`secondary`,children:e.kind}),(0,C.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.title})]}),(0,C.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:e.content})]})}function MV({text:e}){return(0,C.jsx)(`div`,{className:`rounded-lg border border-dashed border-border px-4 py-8 text-center text-sm text-muted-foreground`,children:e})}function NV({className:e,size:t=`default`,...n}){return(0,C.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:K(`group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl`,e),...n})}function PV({className:e,size:t=`default`,...n}){return(0,C.jsxs)(`div`,{className:K(`group/native-select relative w-fit has-[select:disabled]:opacity-50`,e),"data-slot":`native-select-wrapper`,"data-size":t,children:[(0,C.jsx)(`select`,{"data-slot":`native-select`,"data-size":t,className:`h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,...n}),(0,C.jsx)(Ye,{className:`pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none`,"aria-hidden":`true`,"data-slot":`native-select-icon`})]})}function FV({className:e,...t}){return(0,C.jsx)(`option`,{"data-slot":`native-select-option`,className:K(`bg-[Canvas] text-[CanvasText]`,e),...t})}function IV({className:e,size:t=`default`,...n}){return(0,C.jsx)(Ip,{"data-slot":`switch`,"data-size":t,className:K(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...n,children:(0,C.jsx)(Lp,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`})})}function LV({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full overflow-x-auto`,children:(0,C.jsx)(`table`,{"data-slot":`table`,className:K(`w-full caption-bottom text-sm`,e),...t})})}function RV({className:e,...t}){return(0,C.jsx)(`thead`,{"data-slot":`table-header`,className:K(`[&_tr]:border-b`,e),...t})}function zV({className:e,...t}){return(0,C.jsx)(`tbody`,{"data-slot":`table-body`,className:K(`[&_tr:last-child]:border-0`,e),...t})}function BV({className:e,...t}){return(0,C.jsx)(`tr`,{"data-slot":`table-row`,className:K(`border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted`,e),...t})}function VV({className:e,...t}){return(0,C.jsx)(`th`,{"data-slot":`table-head`,className:K(`h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0`,e),...t})}function HV({className:e,...t}){return(0,C.jsx)(`td`,{"data-slot":`table-cell`,className:K(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,e),...t})}function UV({className:e,orientation:t=`horizontal`,...n}){return(0,C.jsx)(em,{"data-slot":`tabs`,"data-orientation":t,className:K(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var WV=wg(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function GV({className:e,variant:t=`default`,...n}){return(0,C.jsx)(tm,{"data-slot":`tabs-list`,"data-variant":t,className:K(WV({variant:t}),e),...n})}function KV({className:e,...t}){return(0,C.jsx)(nm,{"data-slot":`tabs-trigger`,className:K(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,e),...t})}function qV({className:e,...t}){return(0,C.jsx)(rm,{"data-slot":`tabs-content`,className:K(`flex-1 text-sm outline-none`,e),...t})}async function JV(){return(await J.call(`agents.list`)).agents??[]}async function YV(e){return(await J.call(`agents.create`,e)).agent}async function XV(e,t){return(await J.call(`agents.update`,{id:e,...t})).agent}async function ZV(e){await J.call(`agents.delete`,{id:e})}async function QV(e){return(await J.call(`agents.setDefault`,{id:e})).agent}async function $V(){return(await J.call(`usage.summary`)).summary}async function eH(){return(await J.call(`usage.detail`,{limit:100})).events??[]}async function tH(){return(await J.call(`channels.accounts.list`)).accounts??[]}async function nH(e){return(await J.call(`channels.accounts.create`,e)).account}async function rH(e){return(await J.call(`channels.accounts.connect`,{id:e})).account}async function iH(e){return(await J.call(`channels.accounts.disconnect`,{id:e})).account}async function aH(e){await J.call(`channels.accounts.delete`,{id:e})}async function oH(){return(await J.call(`channels.bindings.list`)).bindings??[]}async function sH(e){return(await J.call(`channels.bindings.create`,e)).binding}async function cH(e){await J.call(`channels.bindings.delete`,{id:e})}async function lH(){return(await J.call(`home.files.list`)).files}async function uH(e){return(await J.call(`home.file.read`,{name:e})).content}async function dH(e,t){return(await J.call(`home.file.write`,{name:e,content:t})).file}async function fH(){return(await J.call(`agent.autoImprove.status`)).status}async function pH(e){return(await J.call(`agent.autoImprove.toggle`,e)).status}async function mH(){return(await J.call(`agent.autoImprove.runNow`)).status}var hH={name:``,description:``,defaultProvider:``,defaultModel:``,workspace:``,systemPrompt:``,configJson:`{}`,isEnabled:!0,isDefault:!1},gH={channel:`telegram`,displayName:``,accountRef:``,token:``,allowlist:``};function _H(){let[e,t]=(0,b.useState)(()=>kH()),[n,r]=(0,b.useState)([]),[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)([]),[c,l]=(0,b.useState)([]),[u,d]=(0,b.useState)([]),[f,p]=(0,b.useState)({error:null,isLoading:!0}),m=(0,b.useCallback)(async()=>{p({error:null,isLoading:!0});try{let[e,t,n,i,o]=await Promise.all([JV(),$V(),eH(),tH(),oH()]);r(e),a(t),s(n),l(i),d(o),p({error:null,isLoading:!1})}catch(e){p({error:e instanceof Error?e.message:`Failed to load config data.`,isLoading:!1})}},[]);return(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{m()},0);return()=>window.clearTimeout(e)},[m]),(0,C.jsxs)(`section`,{className:`natroc-enter flex w-full flex-1 flex-col gap-5`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,C.jsx)(Rt,{className:`size-4`}),(0,C.jsx)(`span`,{className:`text-sm font-medium`,children:`Config`})]}),(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Agent, usage, and channel control`})]}),(0,C.jsxs)(q,{variant:`secondary`,onClick:()=>void m(),disabled:f.isLoading,children:[(0,C.jsx)(Ft,{className:K(f.isLoading&&`animate-spin`)}),`Refresh`]})]}),f.error&&(0,C.jsx)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/10 px-4 py-3 text-sm text-destructive`,children:f.error}),(0,C.jsxs)(UV,{value:e,onValueChange:e=>{if(!AH(e))return;t(e);let n=new URL(window.location.href);n.searchParams.set(`tab`,e),window.history.replaceState(null,``,n)},className:`gap-5`,children:[(0,C.jsx)(`div`,{className:`flex justify-center`,children:(0,C.jsxs)(GV,{children:[(0,C.jsxs)(KV,{value:`agents`,children:[(0,C.jsx)(We,{}),`Agents`]}),(0,C.jsxs)(KV,{value:`usage`,children:[(0,C.jsx)(qe,{}),`Usage`]}),(0,C.jsxs)(KV,{value:`channels`,children:[(0,C.jsx)(Nt,{}),`Channels`]})]})}),(0,C.jsx)(qV,{value:`agents`,className:`space-y-5`,children:(0,C.jsx)(vH,{agents:n,onRefresh:m})}),(0,C.jsx)(qV,{value:`usage`,children:(0,C.jsx)(xH,{summary:i,events:o})}),(0,C.jsx)(qV,{value:`channels`,children:(0,C.jsx)(SH,{agents:n,accounts:c,bindings:u,onRefresh:m})})]})]})}function vH({agents:e,onRefresh:t}){let[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(hH),[o,s]=(0,b.useState)(null),c=e.find(e=>e.id===n)??null,l=()=>{r(null),a(hH),s(null)},u=e=>{r(e.id),a({name:e.name,description:e.description,defaultProvider:e.defaultProvider??``,defaultModel:e.defaultModel??``,workspace:e.workspace??``,systemPrompt:e.systemPrompt,configJson:JSON.stringify(e.config??{},null,2),isEnabled:e.isEnabled,isDefault:e.isDefault}),s(null)};return(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(360px,0.72fr)_minmax(0,1.28fr)]`,children:[(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:c?`Edit agent`:`Create agent`}),(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[e.length,` configured`]})]}),n&&(0,C.jsx)(q,{variant:`ghost`,onClick:l,children:`New`})]}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),s(null);let r;try{let e=JSON.parse(i.configJson||`{}`);r=e&&typeof e==`object`&&!Array.isArray(e)?e:{}}catch{s(`Config JSON is invalid.`);return}let a={name:i.name,description:i.description,defaultProvider:i.defaultProvider||null,defaultModel:jH(i.defaultModel),workspace:jH(i.workspace),systemPrompt:i.systemPrompt,config:r,isEnabled:i.isEnabled,isDefault:i.isDefault};n?(await XV(n,a),s(`Agent updated.`)):(await YV(a),s(`Agent created.`)),await t(),n||l()},children:[(0,C.jsx)(TH,{label:`Name`,children:(0,C.jsx)(jg,{value:i.name,onChange:e=>a(t=>({...t,name:e.target.value})),required:!0})}),(0,C.jsx)(TH,{label:`Description`,children:(0,C.jsx)(dv,{value:i.description,onChange:e=>a(t=>({...t,description:e.target.value})),className:`min-h-20`})}),(0,C.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,C.jsx)(TH,{label:`Provider`,children:(0,C.jsxs)(PV,{className:`w-full`,value:i.defaultProvider,onChange:e=>a(t=>({...t,defaultProvider:e.target.value})),children:[(0,C.jsx)(FV,{value:``,children:`Active provider`}),(0,C.jsx)(FV,{value:`openrouter`,children:`OpenRouter`}),(0,C.jsx)(FV,{value:`ollama`,children:`Ollama`})]})}),(0,C.jsx)(TH,{label:`Model`,children:(0,C.jsx)(jg,{value:i.defaultModel,onChange:e=>a(t=>({...t,defaultModel:e.target.value})),placeholder:`Provider default`})})]}),(0,C.jsx)(TH,{label:`Workspace`,children:(0,C.jsx)(jg,{value:i.workspace,onChange:e=>a(t=>({...t,workspace:e.target.value})),placeholder:`Optional path`})}),(0,C.jsx)(TH,{label:`System prompt`,children:(0,C.jsx)(dv,{value:i.systemPrompt,onChange:e=>a(t=>({...t,systemPrompt:e.target.value})),className:`min-h-24`})}),(0,C.jsx)(TH,{label:`Config JSON`,children:(0,C.jsx)(dv,{value:i.configJson,onChange:e=>a(t=>({...t,configJson:e.target.value})),className:`min-h-24 font-mono text-xs`})}),(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,C.jsx)(EH,{label:`Enabled`,checked:i.isEnabled,onCheckedChange:e=>a(t=>({...t,isEnabled:e}))}),(0,C.jsx)(EH,{label:`Default`,checked:i.isDefault,onCheckedChange:e=>a(t=>({...t,isDefault:e}))})]}),o&&(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o}),(0,C.jsxs)(q,{type:`submit`,children:[(0,C.jsx)(Pt,{}),c?`Update`:`Create`]})]})]}),(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Agents`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:e.length===0?(0,C.jsx)(OH,{text:`No agents configured.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Name`}),(0,C.jsx)(VV,{children:`Provider`}),(0,C.jsx)(VV,{children:`Status`}),(0,C.jsx)(VV,{className:`text-right`,children:`Actions`})]})}),(0,C.jsx)(zV,{children:e.map(e=>(0,C.jsxs)(BV,{children:[(0,C.jsxs)(HV,{className:`min-w-52 whitespace-normal`,children:[(0,C.jsx)(`div`,{className:`font-medium`,children:e.name}),(0,C.jsx)(`div`,{className:`line-clamp-2 text-xs text-muted-foreground`,children:e.description||`No description`})]}),(0,C.jsxs)(HV,{children:[e.defaultProvider??`active`,(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.defaultModel??`default model`})]}),(0,C.jsx)(HV,{children:(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[e.isDefault&&(0,C.jsx)(vV,{variant:`secondary`,children:`default`}),(0,C.jsx)(vV,{variant:e.isEnabled?`default`:`outline`,children:e.isEnabled?`enabled`:`disabled`})]})}),(0,C.jsx)(HV,{children:(0,C.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Edit agent`,onClick:()=>u(e),children:(0,C.jsx)(Mt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Set default agent`,disabled:e.isDefault,onClick:()=>void QV(e.id).then(t),children:(0,C.jsx)(Vt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete agent`,onClick:()=>void ZV(e.id).then(t),children:(0,C.jsx)(Ht,{})})]})})]},e.id))})]})})]})]}),(0,C.jsx)(TV,{}),(0,C.jsx)(yH,{}),(0,C.jsx)(bH,{})]})}function yH(){let[e,t]=(0,b.useState)(null),[n,r]=(0,b.useState)(0),[i,a]=(0,b.useState)(!1),[o,s]=(0,b.useState)(!1),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(null);(0,b.useEffect)(()=>{let e=!1;return fH().then(n=>{e||(t(n),l(String(Math.round(n.intervalMs/6e4))))}).catch(()=>void 0),()=>{e=!0}},[n]);let f=(0,b.useCallback)(()=>{r(e=>e+1)},[]),p=async(t,n)=>{if(e){a(!0),d(null);try{await pH({[t]:n}),f()}catch(e){d(e instanceof Error?e.message:`Toggle failed.`)}finally{a(!1)}}},m=async()=>{let e=Number(c);if(!Number.isFinite(e)||e<1){d(`Interval must be at least 1 minute.`);return}a(!0),d(null);try{await pH({intervalMs:Math.floor(e*6e4)}),f()}catch(e){d(e instanceof Error?e.message:`Update failed.`)}finally{a(!1)}},h=async()=>{s(!0),d(null);try{t(await mH()),d(`Cycle ran.`)}catch(e){d(e instanceof Error?e.message:`Run failed.`)}finally{s(!1)}};return(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Self-Improvement`}),(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Background reflection cycles that update memory and workspace files autonomously. Writes are sandboxed to`,` `,(0,C.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs`,children:`~/.natroc/home/`}),`.`]})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(q,{variant:`secondary`,size:`sm`,onClick:()=>void h(),disabled:o||!e?.enabled,children:o?`Running…`:`Run now`}),(0,C.jsx)(q,{variant:`ghost`,size:`sm`,onClick:f,disabled:i,children:(0,C.jsx)(Ft,{})})]})]}),!e&&(0,C.jsx)(`p`,{className:`mt-4 text-sm text-muted-foreground`,children:`Loading status…`}),e&&(0,C.jsxs)(`div`,{className:`mt-4 grid gap-3 sm:grid-cols-2`,children:[(0,C.jsx)(EH,{label:`Enabled`,description:`Periodic reflection cycles run when on.`,checked:e.enabled,disabled:i,onCheckedChange:e=>void p(`enabled`,e)}),(0,C.jsx)(EH,{label:`Kill switch`,description:`Aborts every upcoming cycle, even while enabled.`,checked:e.killSwitch,disabled:i,onCheckedChange:e=>void p(`killSwitch`,e)}),(0,C.jsx)(EH,{label:`Run after each conversation`,description:`Short distill pass right after every user-facing turn.`,checked:e.runAfterEachConversation,disabled:i,onCheckedChange:e=>void p(`runAfterEachConversation`,e)}),(0,C.jsx)(TH,{label:`Interval (minutes)`,children:(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(jg,{type:`number`,min:1,value:c,onChange:e=>l(e.target.value),onBlur:()=>void m(),className:`h-8 w-24`,disabled:i}),(0,C.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[Math.round(e.intervalMs/6e4),` min`]})]})}),(0,C.jsxs)(`div`,{className:`sm:col-span-2 mt-1 rounded-md border border-border bg-background/50 p-3 text-xs`,children:[(0,C.jsx)(`div`,{className:`font-medium`,children:`Last cycle`}),(0,C.jsxs)(`div`,{className:`mt-1 grid gap-x-3 gap-y-0.5 text-muted-foreground sm:grid-cols-2`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`span`,{className:`text-foreground`,children:`Status: `}),e.lastCycleStatus??`never run`]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`span`,{className:`text-foreground`,children:`At: `}),e.lastCycleAt?new Date(e.lastCycleAt).toLocaleString():`—`]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`span`,{className:`text-foreground`,children:`Duration: `}),e.lastCycleDurationMs===null?`—`:`${(e.lastCycleDurationMs/1e3).toFixed(1)}s`]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`span`,{className:`text-foreground`,children:`Reason: `}),e.lastCycleReason??`—`]}),(0,C.jsxs)(`div`,{className:`sm:col-span-2`,children:[(0,C.jsx)(`span`,{className:`text-foreground`,children:`In flight: `}),e.inFlightUserIds.length,` user(s)`]})]})]}),u&&(0,C.jsx)(`p`,{className:`sm:col-span-2 text-xs text-muted-foreground`,children:u})]})]})}function bH(){let[e,t]=(0,b.useState)([]),[n,r]=(0,b.useState)(null),[i,a]=(0,b.useState)(``),[o,s]=(0,b.useState)(``),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!0),[f,p]=(0,b.useState)(!1),[m,h]=(0,b.useState)(null),[g,_]=(0,b.useState)(0),v=(0,b.useCallback)(()=>{_(e=>e+1)},[]);(0,b.useEffect)(()=>{let e=!1;return lH().then(n=>{e||(t(n),d(!1))}).catch(()=>{e||d(!1)}),()=>{e=!0}},[g]);let y=(0,b.useCallback)(async e=>{r(e),h(null);let t=await uH(e);a(t),s(t)},[]),x=async()=>{if(n){p(!0),h(null);try{await dH(n,i),s(i),v(),h(`Saved.`)}catch(e){h(e instanceof Error?e.message:`Save failed.`)}finally{p(!1)}}},S=async()=>{let e=c.trim();if(!e.toLowerCase().endsWith(`.md`)){h(`File name must end with .md`);return}p(!0),h(null);try{await dH(e,`# ${e.replace(/\.md$/i,``)}\n\n`),l(``),v(),await y(e),h(`Created.`)}catch(e){h(e instanceof Error?e.message:`Create failed.`)}finally{p(!1)}},w=n!==null&&i!==o;return(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Workspace files`}),(0,C.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Markdown files in `,(0,C.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 text-xs`,children:`~/.natroc/home/`}),` — visible to every agent.`]})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(jg,{value:c,onChange:e=>l(e.target.value),placeholder:`NEW_FILE.md`,className:`h-8 w-44`}),(0,C.jsxs)(q,{variant:`secondary`,size:`sm`,onClick:()=>void S(),disabled:f||c.trim().length===0,children:[(0,C.jsx)(Pt,{}),`Create`]}),(0,C.jsx)(q,{variant:`ghost`,size:`sm`,onClick:v,disabled:u,children:(0,C.jsx)(Ft,{className:K(u&&`animate-spin`)})})]})]}),(0,C.jsxs)(`div`,{className:`mt-4 grid gap-4 lg:grid-cols-[240px_minmax(0,1fr)]`,children:[(0,C.jsxs)(`div`,{className:`space-y-1`,children:[e.length===0&&!u&&(0,C.jsx)(OH,{text:`No markdown files yet.`}),e.map(e=>(0,C.jsxs)(`button`,{type:`button`,onClick:()=>void y(e.name),className:K(`flex w-full flex-col items-start rounded-md border px-3 py-2 text-left text-sm transition`,n===e.name?`border-primary bg-primary/10`:`border-border hover:bg-muted`),children:[(0,C.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,C.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.sizeBytes/10)/100),` KB`]})]},e.name))]}),(0,C.jsx)(`div`,{className:`space-y-3`,children:n?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(dv,{value:i,onChange:e=>a(e.target.value),className:`min-h-[280px] font-mono text-xs`,spellCheck:!1}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[w?`Unsaved changes`:`Up to date`,m&&(0,C.jsx)(`span`,{className:`ml-2 text-foreground`,children:m})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(q,{variant:`ghost`,size:`sm`,onClick:()=>a(o),disabled:!w||f,children:`Revert`}),(0,C.jsx)(q,{size:`sm`,onClick:()=>void x(),disabled:!w||f,children:f?`Saving...`:`Save`})]})]})]}):(0,C.jsx)(OH,{text:`Select a file to view or edit it.`})})]})]})}function xH({events:e,summary:t}){let n=t?.totals;return(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:[(0,C.jsx)(wH,{label:`Requests`,value:NH(n?.requests)}),(0,C.jsx)(wH,{label:`Tokens`,value:NH(n?.totalTokens)}),(0,C.jsx)(wH,{label:`Known`,value:NH(n?.knownRequests)}),(0,C.jsx)(wH,{label:`Unknown`,value:NH(n?.unknownRequests)})]}),(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-2`,children:[(0,C.jsx)(CH,{title:`By provider`,rows:t?.byProvider??[],labelKey:`provider`}),(0,C.jsx)(CH,{title:`By channel`,rows:t?.byChannel??[],labelKey:`channel`})]}),(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Request detail`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:e.length===0?(0,C.jsx)(OH,{text:`No usage events yet.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Time`}),(0,C.jsx)(VV,{children:`Provider`}),(0,C.jsx)(VV,{children:`Model`}),(0,C.jsx)(VV,{children:`Channel`}),(0,C.jsx)(VV,{children:`Tokens`}),(0,C.jsx)(VV,{children:`Status`})]})}),(0,C.jsx)(zV,{children:e.map(e=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:PH(e.createdAt)}),(0,C.jsx)(HV,{children:e.provider}),(0,C.jsx)(HV,{children:e.model}),(0,C.jsx)(HV,{children:e.channel}),(0,C.jsx)(HV,{children:NH(e.totalTokens)}),(0,C.jsx)(HV,{children:(0,C.jsx)(vV,{variant:e.usageStatus===`actual`?`default`:`outline`,children:e.usageStatus})})]},e.id))})]})})]})]})}function SH({accounts:e,agents:t,bindings:n,onRefresh:r}){let[i,a]=(0,b.useState)(gH),[o,s]=(0,b.useState)({accountId:``,agentId:``,peer:`*`});return(0,C.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(360px,0.72fr)_minmax(0,1.28fr)]`,children:[(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(DH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Add channel`}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),await nH({channel:i.channel,displayName:i.displayName,accountRef:jH(i.accountRef),token:jH(i.token),allowlist:MH(i.allowlist)}),a(gH),await r()},children:[(0,C.jsx)(TH,{label:`Channel`,children:(0,C.jsxs)(PV,{className:`w-full`,value:i.channel,onChange:e=>a(t=>({...t,channel:e.target.value})),children:[(0,C.jsx)(FV,{value:`telegram`,children:`Telegram`}),(0,C.jsx)(FV,{value:`whatsapp`,children:`WhatsApp`})]})}),(0,C.jsx)(TH,{label:`Display name`,children:(0,C.jsx)(jg,{value:i.displayName,onChange:e=>a(t=>({...t,displayName:e.target.value})),required:!0})}),(0,C.jsx)(TH,{label:`Account ref`,children:(0,C.jsx)(jg,{value:i.accountRef,onChange:e=>a(t=>({...t,accountRef:e.target.value})),placeholder:`@bot or phone/JID`})}),(0,C.jsx)(TH,{label:`Token`,children:(0,C.jsx)(jg,{value:i.token,onChange:e=>a(t=>({...t,token:e.target.value})),type:`password`,placeholder:`Telegram only`})}),(0,C.jsx)(TH,{label:`Allowlist`,children:(0,C.jsx)(jg,{value:i.allowlist,onChange:e=>a(t=>({...t,allowlist:e.target.value})),placeholder:`12345, *`})}),(0,C.jsxs)(q,{type:`submit`,children:[(0,C.jsx)(Pt,{}),`Add`]})]})]}),(0,C.jsxs)(DH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Bind agent`}),(0,C.jsxs)(`form`,{className:`mt-4 space-y-3`,onSubmit:async e=>{e.preventDefault(),await sH({accountId:o.accountId,agentId:o.agentId,peer:o.peer,isEnabled:!0}),s({accountId:``,agentId:``,peer:`*`}),await r()},children:[(0,C.jsx)(TH,{label:`Account`,children:(0,C.jsxs)(PV,{className:`w-full`,value:o.accountId,onChange:e=>s(t=>({...t,accountId:e.target.value})),required:!0,children:[(0,C.jsx)(FV,{value:``,children:`Select account`}),e.map(e=>(0,C.jsx)(FV,{value:e.id,children:e.displayName},e.id))]})}),(0,C.jsx)(TH,{label:`Agent`,children:(0,C.jsxs)(PV,{className:`w-full`,value:o.agentId,onChange:e=>s(t=>({...t,agentId:e.target.value})),required:!0,children:[(0,C.jsx)(FV,{value:``,children:`Select agent`}),t.map(e=>(0,C.jsx)(FV,{value:e.id,children:e.name},e.id))]})}),(0,C.jsx)(TH,{label:`Peer`,children:(0,C.jsx)(jg,{value:o.peer,onChange:e=>s(t=>({...t,peer:e.target.value})),required:!0})}),(0,C.jsxs)(q,{type:`submit`,disabled:!e.length||!t.length,children:[(0,C.jsx)(Nt,{}),`Bind`]})]})]})]}),(0,C.jsxs)(`div`,{className:`space-y-5`,children:[(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Accounts`}),(0,C.jsx)(vV,{variant:`secondary`,children:e.length})]}),(0,C.jsx)(`div`,{className:`mt-4 space-y-3`,children:e.length===0?(0,C.jsx)(OH,{text:`No channel accounts configured.`}):e.map(e=>(0,C.jsx)(NV,{className:`gap-0 rounded-lg border-border bg-background/60 p-4 py-4 shadow-none`,children:(0,C.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsx)(`h3`,{className:`font-medium`,children:e.displayName}),(0,C.jsx)(vV,{variant:`secondary`,children:e.channel}),(0,C.jsx)(vV,{variant:e.status===`connected`?`default`:`outline`,children:e.status})]}),(0,C.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e.accountRef??`No account ref`}),typeof e.metadata.qr==`string`&&(0,C.jsx)(`p`,{className:`mt-2 break-all rounded-lg bg-muted/50 p-2 font-mono text-xs text-muted-foreground`,children:e.metadata.qr}),e.lastError&&(0,C.jsx)(`p`,{className:`mt-2 text-sm text-destructive`,children:e.lastError})]}),(0,C.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[e.status===`connected`?(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Disconnect channel`,onClick:()=>void iH(e.id).then(r),children:(0,C.jsx)(Wt,{})}):(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Connect channel`,onClick:()=>void rH(e.id).then(r),children:(0,C.jsx)(Nt,{})}),(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete channel`,onClick:()=>void aH(e.id).then(r),children:(0,C.jsx)(Ht,{})})]})]})},e.id))})]}),(0,C.jsxs)(DH,{children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:`Bindings`}),(0,C.jsx)(vV,{variant:`secondary`,children:n.length})]}),(0,C.jsx)(`div`,{className:`mt-4`,children:n.length===0?(0,C.jsx)(OH,{text:`No channel bindings configured.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Peer`}),(0,C.jsx)(VV,{children:`Account`}),(0,C.jsx)(VV,{children:`Agent`}),(0,C.jsx)(VV,{className:`text-right`,children:`Actions`})]})}),(0,C.jsx)(zV,{children:n.map(n=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:n.peer}),(0,C.jsx)(HV,{children:FH(e,n.accountId)}),(0,C.jsx)(HV,{children:IH(t,n.agentId)}),(0,C.jsx)(HV,{children:(0,C.jsx)(`div`,{className:`flex justify-end`,children:(0,C.jsx)(q,{size:`icon`,variant:`ghost`,"aria-label":`Delete binding`,onClick:()=>void cH(n.id).then(r),children:(0,C.jsx)(Ht,{})})})})]},n.id))})]})})]})]})]})}function CH({labelKey:e,rows:t,title:n}){return(0,C.jsxs)(DH,{children:[(0,C.jsx)(`h2`,{className:`text-base font-semibold`,children:n}),(0,C.jsx)(`div`,{className:`mt-4`,children:t.length===0?(0,C.jsx)(OH,{text:`No usage breakdown yet.`}):(0,C.jsxs)(LV,{children:[(0,C.jsx)(RV,{children:(0,C.jsxs)(BV,{children:[(0,C.jsx)(VV,{children:`Name`}),(0,C.jsx)(VV,{children:`Requests`}),(0,C.jsx)(VV,{children:`Tokens`})]})}),(0,C.jsx)(zV,{children:t.map(t=>(0,C.jsxs)(BV,{children:[(0,C.jsx)(HV,{children:String(t[e]??`unknown`)}),(0,C.jsx)(HV,{children:NH(t.requests)}),(0,C.jsx)(HV,{children:NH(t.totalTokens)})]},String(t[e])))})]})})]})}function wH({label:e,value:t}){return(0,C.jsxs)(NV,{className:`gap-0 rounded-lg border-border bg-muted/30 p-4 py-4 shadow-none`,children:[(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e}),(0,C.jsx)(`p`,{className:`mt-2 text-xl font-semibold`,children:t})]})}function TH({children:e,label:t}){return(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(vv,{htmlFor:(0,b.useMemo)(()=>`${t.toLowerCase().replace(/\s+/g,`-`)}-${crypto.randomUUID()}`,[t]),children:t}),e]})}function EH({checked:e,label:t,description:n,disabled:r,onCheckedChange:i}){return(0,C.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,C.jsxs)(vv,{className:`flex items-center gap-2 text-sm`,children:[(0,C.jsx)(IV,{checked:e,disabled:r,onCheckedChange:i}),t]}),n&&(0,C.jsx)(`p`,{className:`pl-11 text-xs text-muted-foreground`,children:n})]})}function DH({children:e}){return(0,C.jsx)(NV,{className:`natroc-soft-panel gap-0 rounded-lg border-border bg-background/70 p-4 py-4 shadow-none`,children:e})}function OH({text:e}){return(0,C.jsx)(`div`,{className:`rounded-lg border border-dashed border-border px-4 py-8 text-center text-sm text-muted-foreground`,children:e})}function kH(){let e=new URLSearchParams(window.location.search).get(`tab`);return AH(e)?e:`agents`}function AH(e){return e===`agents`||e===`usage`||e===`channels`}function jH(e){return e.trim()||null}function MH(e){return e.split(`,`).map(e=>e.trim()).filter(Boolean)}function NH(e){return new Intl.NumberFormat().format(e??0)}function PH(e){return new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}function FH(e,t){return e.find(e=>e.id===t)?.displayName??`Unknown`}function IH(e,t){return e.find(e=>e.id===t)?.name??`Unknown`}function LH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty`,className:K(`flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance`,e),...t})}function RH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-header`,className:K(`flex max-w-sm flex-col items-center gap-2`,e),...t})}var zH=wg(`mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,{variants:{variant:{default:`bg-transparent`,icon:`flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4`}},defaultVariants:{variant:`default`}});function BH({className:e,variant:t=`default`,...n}){return(0,C.jsx)(`div`,{"data-slot":`empty-icon`,"data-variant":t,className:K(zH({variant:t,className:e})),...n})}function VH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-title`,className:K(`font-heading text-sm font-medium tracking-tight`,e),...t})}function HH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-description`,className:K(`text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary`,e),...t})}function UH({className:e,...t}){return(0,C.jsx)(`div`,{"data-slot":`empty-content`,className:K(`flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance`,e),...t})}async function WH(){return(await J.call(`projects.list`)).projects??[]}async function GH(e,t){return(await J.call(`projects.create`,{name:e,description:t})).project}async function KH(e){await J.call(`projects.delete`,{id:e})}var qH=[`Activity`,`Name`,`Created`];function JH(e,t){let n=[...e];return t===`Name`?n.sort((e,t)=>e.name.localeCompare(t.name)):t===`Created`?n.sort((e,t)=>t.createdAt.localeCompare(e.createdAt)):n.sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function YH(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleDateString()}function XH(e){return(0,C.jsxs)(`svg`,{viewBox:`0 0 96 96`,fill:`none`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`3`,"aria-hidden":`true`,...e,children:[(0,C.jsx)(`rect`,{x:`28`,y:`14`,width:`22`,height:`22`,rx:`1`}),(0,C.jsx)(`rect`,{x:`51`,y:`13`,width:`22`,height:`22`,rx:`1`}),(0,C.jsx)(`rect`,{x:`51`,y:`38`,width:`22`,height:`20`,rx:`1`}),(0,C.jsx)(`path`,{d:`M59 62V51a4 4 0 0 1 8 0v11`}),(0,C.jsx)(`path`,{d:`M67 58V49a4 4 0 0 1 8 0v14`}),(0,C.jsx)(`path`,{d:`M75 60v-8a4 4 0 0 1 8 0v15`}),(0,C.jsx)(`path`,{d:`M83 61v-6a4 4 0 0 1 8 0v17c0 10-6 16-17 16H55a4 4 0 0 1-4-4V62a4 4 0 0 1 8 0v10`}),(0,C.jsx)(`path`,{d:`M51 72h12`})]})}function ZH(){let[e,t]=(0,b.useState)(`Activity`),[n,r]=(0,b.useState)(``),[i,a]=(0,b.useState)([]),[o,s]=(0,b.useState)(!0),[c,l]=(0,b.useState)(``),[u,d]=(0,b.useState)(!1),[f,p]=(0,b.useState)(``),[m,h]=(0,b.useState)(``),[g,_]=(0,b.useState)(!1),[v,y]=(0,b.useState)(``),x=(0,b.useCallback)(async()=>{s(!0),l(``);try{a(await WH())}catch(e){l(e instanceof Error?e.message:`Failed to load projects.`)}finally{s(!1)}},[]);(0,b.useEffect)(()=>{let e=window.setTimeout(()=>{x()});return()=>window.clearTimeout(e)},[x]);let S=()=>d(!0),w=()=>{p(``),h(``),y(``)},T=e=>{d(e),e||w()},E=async e=>{if(e.preventDefault(),!(!f.trim()||g)){_(!0),y(``);try{let e=await GH(f.trim(),m.trim());a(t=>[e,...t]),d(!1),w()}catch(e){y(e instanceof Error?e.message:`Failed to create project.`)}finally{_(!1)}}},D=async e=>{a(t=>t.filter(t=>t.id!==e));try{await KH(e)}catch{x()}},O=JH(i.filter(e=>{let t=n.trim().toLowerCase();return t?e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t):!0}),e);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`section`,{className:`natroc-enter flex min-h-[calc(100svh-7rem)] w-full flex-col gap-6`,children:[(0,C.jsxs)(`div`,{className:`natroc-stagger flex flex-col gap-5`,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between`,children:[(0,C.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Projects`}),(0,C.jsxs)(`div`,{className:`flex items-center gap-3 self-start sm:self-auto`,children:[(0,C.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground`,children:`Sort by`}),(0,C.jsxs)(E_,{children:[(0,C.jsx)(D_,{asChild:!0,children:(0,C.jsxs)(q,{variant:`secondary`,children:[e,(0,C.jsx)(Ye,{})]})}),(0,C.jsx)(O_,{align:`end`,className:`w-36`,children:(0,C.jsx)(j_,{value:e,onValueChange:e=>t(e),children:qH.map(e=>(0,C.jsx)(M_,{value:e,children:e},e))})})]}),(0,C.jsx)(q,{onClick:S,children:`New project`})]})]}),(0,C.jsxs)(`div`,{className:`relative`,children:[(0,C.jsx)(It,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-muted-foreground`}),(0,C.jsx)(jg,{"aria-label":`Search projects`,placeholder:`Search projects...`,value:n,onChange:e=>r(e.target.value),className:`h-10 rounded-lg border-transparent bg-muted/80 pl-9 text-sm focus-visible:border-ring dark:bg-muted/80`})]})]}),o?(0,C.jsx)(`div`,{className:`flex flex-1 items-center justify-center py-12 text-sm text-muted-foreground`,children:`Loading projects...`}):c?(0,C.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-3 py-12`,children:[(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:c}),(0,C.jsx)(q,{variant:`secondary`,onClick:()=>void x(),children:`Try again`})]}):O.length===0?(0,C.jsx)(`div`,{className:`natroc-enter flex flex-1 items-center justify-center py-12`,children:(0,C.jsxs)(LH,{className:`max-w-md border-0 p-0`,children:[(0,C.jsxs)(RH,{children:[(0,C.jsx)(BH,{className:`mb-3 text-foreground`,children:(0,C.jsx)(XH,{className:`size-20`})}),(0,C.jsx)(VH,{children:i.length===0?`Looking to start a project?`:`No projects match your search`}),(0,C.jsx)(HH,{children:`Upload materials, set custom instructions, and organize conversations in one space.`})]}),(0,C.jsx)(UH,{children:(0,C.jsx)(q,{variant:`secondary`,onClick:S,children:`New project`})})]})}):(0,C.jsx)(`div`,{className:`natroc-stagger grid gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:O.map(e=>(0,C.jsxs)(`div`,{className:`natroc-soft-panel flex flex-col gap-2 rounded-lg border border-border bg-card p-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsx)(`h3`,{className:`font-medium break-words`,children:e.name}),(0,C.jsx)(q,{variant:`ghost`,size:`icon`,"aria-label":`Delete ${e.name}`,onClick:()=>void D(e.id),children:(0,C.jsx)(Ht,{className:`text-muted-foreground`})})]}),e.description&&(0,C.jsx)(`p`,{className:`line-clamp-3 text-sm text-muted-foreground`,children:e.description}),(0,C.jsxs)(`p`,{className:`mt-auto text-xs text-muted-foreground`,children:[`Created `,YH(e.createdAt)]})]},e.id))})]}),(0,C.jsx)(nv,{open:u,onOpenChange:T,children:(0,C.jsxs)(ov,{className:`gap-6 rounded-lg p-6 sm:max-w-[520px]`,children:[(0,C.jsx)(lv,{className:`pr-8 text-2xl font-semibold`,children:`Create a project`}),(0,C.jsxs)(`div`,{className:`natroc-soft-panel rounded-lg bg-muted/80 p-4 dark:bg-background/80`,children:[(0,C.jsx)(`h2`,{className:`text-sm font-semibold`,children:`How to use projects`}),(0,C.jsxs)(uv,{className:`mt-3 space-y-3 text-sm leading-relaxed`,children:[(0,C.jsx)(`p`,{children:`Projects help organize your work and leverage knowledge across multiple conversations. Upload docs, code, and files to create themed collections that Natroc can reference again and again.`}),(0,C.jsx)(`p`,{children:`Start by creating a memorable title and description to organize your project. You can always edit it later.`})]})]}),(0,C.jsxs)(`form`,{className:`natroc-stagger flex flex-col gap-6`,onSubmit:E,children:[(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`project-name`,children:`What are you working on?`}),(0,C.jsx)(jg,{id:`project-name`,placeholder:`Name your project`,value:f,onChange:e=>p(e.target.value),className:`border-transparent bg-muted/80 dark:bg-muted/80`})]}),(0,C.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,C.jsx)(vv,{htmlFor:`project-description`,children:`What are you trying to achieve?`}),(0,C.jsx)(dv,{id:`project-description`,placeholder:`Describe your project, goals, subject, etc...`,value:m,onChange:e=>h(e.target.value),className:`min-h-20 resize-none border-transparent bg-muted/80 dark:bg-muted/80`})]}),v&&(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:v}),(0,C.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,C.jsx)(iv,{asChild:!0,children:(0,C.jsx)(q,{type:`button`,variant:`secondary`,children:`Cancel`})}),(0,C.jsx)(q,{type:`submit`,disabled:!f.trim()||g,children:g?`Creating...`:`Create project`})]})]})]})})]})}var QH=new Set([`/login`,`/register`,`/onboarding/register`]);function $H(){let[e,t]=(0,b.useState)(window.location.pathname),[n,r]=(0,b.useState)(!1),[i,a]=(0,b.useState)(!0);return(0,b.useEffect)(()=>{let e=!1;eV().then(t=>{e||(a(t.hasUsers),r(!0))}).catch(()=>{e||(a(!0),r(!0))});let n=()=>t(window.location.pathname);return window.addEventListener(`popstate`,n),window.addEventListener(`natroc:navigate`,n),()=>{e=!0,window.removeEventListener(`popstate`,n),window.removeEventListener(`natroc:navigate`,n)}},[]),n?!i&&!QH.has(e)?(window.history.replaceState(null,``,`/onboarding/register`),(0,C.jsx)(rA,{})):e===`/login`?(0,C.jsx)(dV,{}):e===`/register`?(0,C.jsx)(gV,{}):e===`/onboarding/register`?(0,C.jsx)(rA,{}):z_()?e===y_.home.path||e.startsWith(`/chat/`)?(0,C.jsx)(Kv,{children:(0,C.jsx)(KB,{})}):e===y_.projects.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(ZH,{})}):e===`/agent`?(window.location.replace(`/config?tab=agents`),null):e===y_.config.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(_H,{})}):e===y_.account.path?(0,C.jsx)(Kv,{children:(0,C.jsx)(YB,{})}):(0,C.jsx)(Hk,{}):(0,C.jsx)(dV,{}):null}(0,x.createRoot)(document.getElementById(`root`)).render((0,C.jsx)(b.StrictMode,{children:(0,C.jsxs)(j,{children:[(0,C.jsx)(vg,{children:(0,C.jsx)($H,{})}),(0,C.jsx)(Jt,{position:`top-right`,richColors:!0})]})}));
|