siduri 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/builtin-manifests.js +11 -11
  3. package/dist/configurators/archive.d.ts +0 -4
  4. package/dist/configurators/archive.js +0 -5
  5. package/dist/configurators/index.d.ts +0 -1
  6. package/dist/configurators/index.js +0 -1
  7. package/dist/configurators.test.js +3 -3
  8. package/dist/generator.js +2 -2
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/runtime-parity.test.js +3 -3
  12. package/dist/web-dist/404/index.html +1 -1
  13. package/dist/web-dist/404.html +1 -1
  14. package/dist/web-dist/__next.__PAGE__.txt +1 -1
  15. package/dist/web-dist/__next._full.txt +1 -1
  16. package/dist/web-dist/__next._tree.txt +1 -1
  17. package/dist/web-dist/_next/static/chunks/app/chat/{page-c2c01bacc6562e40.js → page-4d90641844cd9fed.js} +1 -1
  18. package/dist/web-dist/_not-found/__next._full.txt +1 -1
  19. package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +1 -1
  20. package/dist/web-dist/_not-found/__next._tree.txt +1 -1
  21. package/dist/web-dist/_not-found/index.html +1 -1
  22. package/dist/web-dist/_not-found/index.txt +1 -1
  23. package/dist/web-dist/chat/__next._full.txt +2 -2
  24. package/dist/web-dist/chat/__next._tree.txt +1 -1
  25. package/dist/web-dist/chat/__next.chat.__PAGE__.txt +2 -2
  26. package/dist/web-dist/chat/index.html +1 -1
  27. package/dist/web-dist/chat/index.txt +2 -2
  28. package/dist/web-dist/index.html +1 -1
  29. package/dist/web-dist/index.txt +1 -1
  30. package/dist/web-dist/operator/__next._full.txt +1 -1
  31. package/dist/web-dist/operator/__next._tree.txt +1 -1
  32. package/dist/web-dist/operator/__next.operator.__PAGE__.txt +1 -1
  33. package/dist/web-dist/operator/index.html +1 -1
  34. package/dist/web-dist/operator/index.txt +1 -1
  35. package/package.json +1 -1
  36. /package/dist/web-dist/_next/static/{TAssFHX71jXsDINzGLNGT → 6myq7R-xRemzP7dQD6m1Q}/_buildManifest.js +0 -0
  37. /package/dist/web-dist/_next/static/{TAssFHX71jXsDINzGLNGT → 6myq7R-xRemzP7dQD6m1Q}/_ssgManifest.js +0 -0
@@ -27,7 +27,7 @@ void main() {
27
27
  }
28
28
  gl_FragColor = vec4(1.0);
29
29
  }
30
- `;function p(e,t,s){let a=e.createShader(t);if(!a)throw Error("Failed to create shader");if(e.shaderSource(a,s),e.compileShader(a),!e.getShaderParameter(a,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(a);throw e.deleteShader(a),Error(`Shader compilation error: ${t}`)}return a}class x{constructor(e){this.gl=null,this.program=null,this.maskProgram=null,this.vertexBuffer=null,this.uvBuffer=null,this.indexBuffer=null,this.aPositionLocation=-1,this.aTexCoordLocation=-1,this.uMatrixLocation=null,this.uTextureLocation=null,this.uOpacityLocation=null,this.maskAPositionLocation=-1,this.maskATexCoordLocation=-1,this.maskUMatrixLocation=null,this.maskUTextureLocation=null,this.textures=[],this.moc=null,this.model=null,this.core=null,this.paramIndices=new Map,this.isDisposed=!1,this.modelBounds={minX:-.39,maxX:.4,minY:-.98,maxY:.18,width:.79,height:1.16,centerX:.006,centerY:-.4},this.canvas=e}initialize(e,t){this.core=e;let s={alpha:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,antialias:!0,stencil:!0},a=this.canvas.getContext("webgl",s)||this.canvas.getContext("experimental-webgl",s)||this.canvas.getContext("webgl2",s);if(!a)throw Error("WebGL is not supported in this browser environment");this.gl=a;let i=p(a,a.VERTEX_SHADER,m),r=p(a,a.FRAGMENT_SHADER,u),n=a.createProgram();if(!n)throw Error("Failed to create WebGL program");if(a.attachShader(n,i),a.attachShader(n,r),a.linkProgram(n),!a.getProgramParameter(n,a.LINK_STATUS))throw Error(`Program link error: ${a.getProgramInfoLog(n)}`);this.program=n,this.aPositionLocation=a.getAttribLocation(n,"a_position"),this.aTexCoordLocation=a.getAttribLocation(n,"a_texCoord"),this.uMatrixLocation=a.getUniformLocation(n,"u_matrix"),this.uTextureLocation=a.getUniformLocation(n,"u_texture"),this.uOpacityLocation=a.getUniformLocation(n,"u_opacity");let o=p(a,a.FRAGMENT_SHADER,h),l=a.createProgram();if(!l)throw Error("Failed to create Mask WebGL program");if(a.attachShader(l,i),a.attachShader(l,o),a.linkProgram(l),!a.getProgramParameter(l,a.LINK_STATUS))throw Error(`Mask Program link error: ${a.getProgramInfoLog(l)}`);if(this.maskProgram=l,this.maskAPositionLocation=a.getAttribLocation(l,"a_position"),this.maskATexCoordLocation=a.getAttribLocation(l,"a_texCoord"),this.maskUMatrixLocation=a.getUniformLocation(l,"u_matrix"),this.maskUTextureLocation=a.getUniformLocation(l,"u_texture"),this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1),this.textures=t.textures.map(e=>{let t=a.createTexture();if(!t)throw Error("Failed to create WebGL texture");return a.bindTexture(a.TEXTURE_2D,t),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,e),a.generateMipmap(a.TEXTURE_2D),t}),this.moc=e.Moc.fromArrayBuffer(t.mocBuffer),!this.moc)throw Error("Failed to create Live2D Moc from ArrayBuffer");if(this.model=e.Model.fromMoc(this.moc),!this.model)throw Error("Failed to create Live2D Model from Moc");let c=this.model.parameters.ids;for(let e=0;e<c.length;e++)this.paramIndices.set(c[e],e);this.initializeNeutralMouth(),this.model.update(),this.calculateModelBounds()}initializeNeutralMouth(){this.model&&(this.setParamDirect("ParamMouthOpenY",0),this.setParamDirect("ParamMouthForm",0))}setParamDirect(e,t){let s=this.paramIndices.get(e);if(void 0!==s&&this.model){let e=this.model.parameters.minimumValues[s],a=this.model.parameters.maximumValues[s];this.model.parameters.values[s]=Math.max(e,Math.min(a,t))}}calculateModelBounds(){if(!this.model)return;let e=this.model.drawables,t=e.count,s=1/0,a=-1/0,i=1/0,r=-1/0;for(let n=0;n<t;n++){let t=e.vertexPositions[n];if(t&&0!==t.length)for(let e=0;e<t.length;e+=2){let n=t[e],o=t[e+1];n<s&&(s=n),n>a&&(a=n),o<i&&(i=o),o>r&&(r=o)}}s!==1/0&&a!==-1/0&&i!==1/0&&r!==-1/0&&(this.modelBounds={minX:s,maxX:a,minY:i,maxY:r,width:a-s,height:r-i,centerX:(s+a)/2,centerY:(i+r)/2})}getModelBounds(){return{...this.modelBounds}}setParam(e,t,s=1){let a=this.paramIndices.get(e);if(void 0!==a&&this.model){let e=this.model.parameters.values[a],i=Math.max(this.model.parameters.minimumValues[a],Math.min(this.model.parameters.maximumValues[a],t));this.model.parameters.values[a]=e+(i-e)*s}}render(e,t=Date.now()){let s;if(this.isDisposed||!this.gl||!this.model||!this.program)return;let a=this.gl,i=this.canvas.width,r=this.canvas.height;if(0===i||0===r)return;let n=e.calculateFrameParameters(t);this.setParam("ParamAngleX",n.angleX,.2),this.setParam("ParamAngleY",n.angleY,.2),this.setParam("ParamAngleZ",n.angleZ,.2),this.setParam("ParamBodyAngleX",n.bodyAngleX,.15),this.setParam("ParamBreath",n.breath,.3),this.setParam("ParamEyeLOpen",n.eyeOpenL,.4),this.setParam("ParamEyeROpen",n.eyeOpenR,.4),this.setParam("ParamMouthOpenY",n.mouthOpenY,.35);let o=function(e){if(!e)return"neutral";switch(e.toLowerCase().trim()){case"surprised":return"face_aozame.exp3.json";case"concerned":case"thinking":return"eyes_zetubou.exp3.json";case"happy":return"hair_open.exp3.json";default:return"neutral"}}(e.expression);"face_aozame.exp3.json"===o?(this.setParam("Param10",1,.2),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)):"eyes_zetubou.exp3.json"===o?(this.setParam("Param9",1,.2),this.setParam("Param10",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)):"hair_open.exp3.json"===o?(this.setParam("Param11",1,.2),this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param12",0,.15)):"eye_color.exp3.json"===o?(this.setParam("Param12",1,.2),this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15)):(this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)),this.model.update(),a.viewport(0,0,i,r),a.clearColor(0,0,0,0),a.clear(a.COLOR_BUFFER_BIT|a.STENCIL_BUFFER_BIT),a.enable(a.BLEND),a.blendFunc(a.ONE,a.ONE_MINUS_SRC_ALPHA),a.useProgram(this.program);let l=i/r,c=this.modelBounds.width,d=this.modelBounds.height,m=this.modelBounds.centerX,u=this.modelBounds.centerY,h=(s=l>=c/d?1.84/d:1.84/c*l)/l,p=new Float32Array([h,0,0,0,0,s,0,0,0,0,1,0,-m*h,-u*s,0,1]);a.uniformMatrix4fv(this.uMatrixLocation,!1,p),a.uniform1i(this.uTextureLocation,0);let x=this.model.drawables,f=x.count,v=x.renderOrders,b=[];for(let e=0;e<f;e++)b.push(e);b.sort((e,t)=>v[e]-v[t]),a.enableVertexAttribArray(this.aPositionLocation),a.enableVertexAttribArray(this.aTexCoordLocation);let g=(e,t)=>{let s=void 0!==t?t:x.opacities[e];if(s<=.001)return;let i=x.textureIndices[e],r=this.textures[i];if(!r)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r),a.uniform1f(this.uOpacityLocation,s);let n=x.vertexPositions[e];a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,n,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.aPositionLocation,2,a.FLOAT,!1,0,0);let o=x.vertexUvs[e];a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,o,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.aTexCoordLocation,2,a.FLOAT,!1,0,0);let l=x.indices[e];a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,l,a.DYNAMIC_DRAW),a.drawElements(a.TRIANGLES,l.length,a.UNSIGNED_SHORT,0)},j=e=>{if(!this.maskProgram)return;a.useProgram(this.maskProgram),a.uniformMatrix4fv(this.maskUMatrixLocation,!1,p),a.uniform1i(this.maskUTextureLocation,0),a.enableVertexAttribArray(this.maskAPositionLocation),a.enableVertexAttribArray(this.maskATexCoordLocation);let t=x.textureIndices[e],s=this.textures[t];if(!s)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,s);let i=x.vertexPositions[e];a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,i,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.maskAPositionLocation,2,a.FLOAT,!1,0,0);let r=x.vertexUvs[e];a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,r,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.maskATexCoordLocation,2,a.FLOAT,!1,0,0);let n=x.indices[e];a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,n,a.DYNAMIC_DRAW),a.drawElements(a.TRIANGLES,n.length,a.UNSIGNED_SHORT,0),a.useProgram(this.program),a.enableVertexAttribArray(this.aPositionLocation),a.enableVertexAttribArray(this.aTexCoordLocation)},y=-1;for(let e of b)if(!(x.opacities[e]<=.001))if(x.maskCounts[e]>0){let t=x.masks[e][0];t!==y&&(y=t,a.enable(a.STENCIL_TEST),a.stencilMask(255),a.clear(a.STENCIL_BUFFER_BIT),a.stencilFunc(a.ALWAYS,1,255),a.stencilOp(a.KEEP,a.KEEP,a.REPLACE),a.colorMask(!1,!1,!1,!1),j(t),a.colorMask(!0,!0,!0,!0)),a.stencilFunc(a.EQUAL,1,255),a.stencilOp(a.KEEP,a.KEEP,a.KEEP),g(e)}else -1!==y&&(a.disable(a.STENCIL_TEST),y=-1),g(e);-1!==y&&a.disable(a.STENCIL_TEST)}dispose(){if(this.isDisposed=!0,this.gl){for(let e of this.textures)this.gl.deleteTexture(e);this.textures=[],this.vertexBuffer&&this.gl.deleteBuffer(this.vertexBuffer),this.uvBuffer&&this.gl.deleteBuffer(this.uvBuffer),this.indexBuffer&&this.gl.deleteBuffer(this.indexBuffer),this.program&&this.gl.deleteProgram(this.program)}this.model&&"function"==typeof this.model.release&&this.model.release(),this.moc&&"function"==typeof this.moc.release&&this.moc.release(),this.model=null,this.moc=null,this.gl=null}}function f({modelUrl:e,expression:t="neutral",action:s="idle",state:r="idle",speechId:n,lipSyncValue:o,durationMs:m,className:u="",onStatusChange:h}){let p=(0,i.useRef)(null),v=(0,i.useRef)(null),b=(0,i.useRef)(new l({expression:t,action:s,state:r,speechId:n,lipSyncValue:o,durationMs:m})),g=(0,i.useRef)(null),j=(0,i.useRef)(null),[y,N]=(0,i.useState)("loading"),[w,C]=(0,i.useState)(null),[k,P]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=()=>{b.current.setReducedMotion(e.matches)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{b.current.updateConfig({expression:t,action:s,state:r,speechId:n,lipSyncValue:o,durationMs:m})},[t,s,r,n,o,m]),(0,i.useEffect)(()=>{let t=!1,s=null;async function a(){if(v.current&&p.current){if(!e){N("error"),C("No Live2D model configured. Place model in assets/body/<name>/"),h?.("error","No Live2D model URL specified");return}N("loading"),h?.("loading"),C(null);try{let a=await c();if(t)return;let i=await d(e);if(t)return;let r=v.current;if(!r)return;let n=new x(r);n.initialize(a,i),g.current=n;let o=()=>{if(!p.current||!v.current)return;let e=p.current.getBoundingClientRect();if(e.width<=0||e.height<=0)return;let t=Math.min(window.devicePixelRatio||1,2),s=Math.max(1,Math.floor(e.width*t)),a=Math.max(1,Math.floor(e.height*t));(v.current.width!==s||v.current.height!==a)&&(v.current.width=s,v.current.height=a)};o(),(s=new ResizeObserver(o)).observe(p.current);let l=()=>{t||(g.current&&g.current.render(b.current,performance.now()),j.current=requestAnimationFrame(l))};j.current=requestAnimationFrame(l),N("ready"),h?.("ready")}catch(s){if(t)return;let e=s?.message||"Failed to initialize Live2D avatar";console.warn("[AvatarCanvas] Initialization error:",s),N("error"),C("Avatar model unavailable or failed to load."),h?.("error",e)}}}a();let i=v.current,r=e=>{e.preventDefault(),console.warn("[AvatarCanvas] WebGL context lost"),j.current&&cancelAnimationFrame(j.current),N("error"),C("WebGL context lost.")},n=()=>{console.log("[AvatarCanvas] WebGL context restored, re-initializing..."),a()};return i&&(i.addEventListener("webglcontextlost",r,!1),i.addEventListener("webglcontextrestored",n,!1)),()=>{t=!0,j.current&&(cancelAnimationFrame(j.current),j.current=null),s&&s.disconnect(),i&&(i.removeEventListener("webglcontextlost",r),i.removeEventListener("webglcontextrestored",n)),g.current&&(g.current.dispose(),g.current=null)}},[e,k,h]),(0,a.jsxs)("div",{ref:p,"data-testid":"avatar-canvas-container",className:`relative w-full h-full min-h-0 flex items-center justify-center overflow-hidden bg-transparent ${u}`,"aria-label":"Live2D Companion Presence",children:[(0,a.jsx)("canvas",{ref:v,role:"img","data-testid":"avatar-webgl-canvas","aria-label":"Live2D companion presence",style:{width:"100%",height:"100%",display:"block"},className:`absolute inset-0 w-full h-full block transition-opacity duration-500 ${"ready"===y?"opacity-100":"opacity-0"}`}),"loading"===y&&(0,a.jsxs)("div",{role:"status","aria-live":"polite",className:"absolute inset-0 flex flex-col items-center justify-center gap-3 bg-[#0b0b0e]/90 text-[var(--siduri-text-muted)]",children:[(0,a.jsx)("div",{className:"siduri-glyph w-10 h-10 text-base animate-pulse motion-reduce:animate-none",children:"✦"}),(0,a.jsx)("span",{className:"text-[11px] font-mono tracking-widest uppercase text-[var(--siduri-ember-light)]",children:"Initializing Presence..."})]}),"error"===y&&(0,a.jsxs)("div",{role:"alert","aria-live":"polite",className:"absolute inset-0 flex flex-col items-center justify-center p-6 text-center bg-[#0b0b0e]/95 text-[var(--siduri-text-muted)]",children:[(0,a.jsx)("div",{className:"w-8 h-8 rounded-full border border-[var(--siduri-border-subtle)] grid place-items-center text-xs text-[var(--siduri-text-dim)] mb-2 font-mono",children:"!"}),(0,a.jsx)("p",{className:"text-xs font-sans text-[var(--siduri-text-secondary)] mb-1",children:w||"Avatar unavailable in this browser."}),(0,a.jsx)("span",{className:"text-[10px] font-mono text-[var(--siduri-text-dim)] mb-3",children:"Conversational text mode remains active"}),(0,a.jsx)("button",{type:"button",onClick:()=>P(e=>e+1),className:"px-3 py-1 text-[11px] font-mono tracking-wider uppercase rounded border border-[var(--siduri-border-subtle)] hover:border-[var(--siduri-border-ember)] text-[var(--siduri-text-secondary)] hover:text-[var(--siduri-text-primary)] transition-colors focus-visible:ring-1 focus-visible:ring-[var(--siduri-border-ember)] outline-none","aria-label":"Retry avatar initialization",children:"Retry"})]})]})}var v=s(2914);function b({modelUrl:e,expression:t="neutral",action:r="idle",state:n="idle",speechId:o,lipSyncValue:l,durationMs:c,className:d="",vrmConfig:m,onStatusChange:u}){let h=(0,i.useRef)(null),p=(0,i.useRef)(null),x=(0,i.useRef)(null),[f,v]=(0,i.useState)("loading"),[g,j]=(0,i.useState)(null);return(0,i.useEffect)(()=>{x.current&&x.current.updateState({expression:t,action:r,state:n,speechId:o,lipSyncValue:l,lookAtMode:m?.lookAtMode||"camera"})},[t,r,n,o,l,m]),(0,i.useEffect)(()=>{let t=!1,a=null;return async function(){if(p.current&&h.current){if(!e){v("error");let e="No VRM model URL specified. Place model (.vrm) in assets/body/<name>/";j(e),u?.("error",e);return}v("loading"),u?.("loading"),j(null);try{let i=p.current,{VRMController:r}=await Promise.all([s.e(389),s.e(368),s.e(672),s.e(411),s.e(202)]).then(s.bind(s,7202));if(t)return;let n=new r(i,m);if(x.current=n,await n.loadModel(e),t)return void n.dispose();let o=()=>{if(!h.current||!p.current)return;let e=h.current.getBoundingClientRect();e.width<=0||e.height<=0||n.resize(e.width,e.height)};o(),(a=new ResizeObserver(o)).observe(h.current),n.startLoop(),v("ready"),u?.("ready")}catch(s){if(t)return;let e=s?.message||"Failed to initialize 3D VRM avatar canvas";console.error("[VRM] Initialization error:",s),v("error"),j(e),u?.("error",e)}}}(),()=>{t=!0,a&&a.disconnect(),x.current&&(x.current.dispose(),x.current=null)}},[e]),(0,a.jsxs)("div",{ref:h,className:`relative w-full h-full flex items-center justify-center overflow-hidden select-none bg-transparent ${d}`,"data-testid":"vrm-canvas-container",children:[(0,a.jsx)("canvas",{ref:p,className:"w-full h-full block touch-none","data-testid":"vrm-canvas-element"}),"loading"===f&&(0,a.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center bg-black/40 backdrop-blur-xs text-xs font-mono text-[var(--siduri-text-secondary)] pointer-events-none transition-opacity",children:[(0,a.jsx)("div",{className:"w-6 h-6 rounded-full border-2 border-[var(--siduri-ember)] border-t-transparent animate-spin mb-2"}),(0,a.jsx)("span",{children:"Loading 3D VRM avatar..."})]}),"error"===f&&(0,a.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center p-6 text-center bg-black/60 text-xs font-mono text-red-400",children:[(0,a.jsx)("span",{className:"font-semibold mb-1",children:"Avatar Error"}),(0,a.jsx)("span",{className:"opacity-80 max-w-sm",children:g})]})]})}var g=s(8839);let j="siduri.chat.conversations.v1";function y(){return`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function N(e){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(e)}function w(e){if("[interrupted]"===e.content)return{...e,content:"",interrupted:!0,interruptionReason:"interrupted"};if(e.content&&e.content.endsWith(" [interrupted]"))return{...e,content:e.content.slice(0,-14).trim(),interrupted:!0,interruptionReason:"interrupted"};if(e.content&&e.content.startsWith("I couldn’t reach the orchestrator. ")){let t=e.content.slice(35);return{...e,content:"",error:t}}return e}function C(e){switch(e){case"client_disconnect":return{label:"Disconnected",text:"Response stopped due to connection close.",hint:"The connection to the companion service closed prematurely."};case"user_stop":return{label:"Stopped",text:"Response stopped by user.",hint:"Generation was manually cancelled via the stop control."};case"user_barge_in":return{label:"Interrupted",text:"Response interrupted by new message.",hint:"Generation was cancelled because a new prompt was submitted."};case"timeout":return{label:"Timed Out",text:"Response timed out.",hint:"The request exceeded the allotted time limit before finishing."};default:return{label:"Interrupted",text:"Response was interrupted.",hint:e&&"interrupted"!==e?`Reason: ${e}`:void 0}}}function k(){let e,t,s,o,l,c,d,m,[u,h]=(0,i.useState)([]),[p,x]=(0,i.useState)(null),[k,P]=(0,i.useState)(""),[A,E]=(0,i.useState)("connecting"),[L,R]=(0,i.useState)(!1),[S,_]=(0,i.useState)(!1),[T,I]=(0,i.useState)(!1),[D,M]=(0,i.useState)(!1),[B,F]=(0,i.useState)(!1),[U,$]=(0,i.useState)(!1),[z,O]=(0,i.useState)(null),[X,Y]=(0,i.useState)(void 0),[W,V]=(0,i.useState)("unknown"),[q,G]=(0,i.useState)(void 0),[Z,H]=(0,i.useState)("hybrid"),[K,J]=(0,i.useState)("hybrid"),[Q,ee]=(0,i.useState)("off"),[et,es]=(0,i.useState)("Siduri"),[ea,ei]=(0,i.useState)(null),[er,en]=(0,i.useState)(!1),[eo,el]=(0,i.useState)(null),[ec,ed]=(0,i.useState)({}),[em,eu]=(0,i.useState)(null),eh=(0,i.useRef)(null),[ep,ex]=(0,i.useState)({}),[ef,ev]=(0,i.useState)({}),[eb,eg]=(0,i.useState)(null),ej=(0,i.useRef)(null),ey=(0,i.useRef)(null),eN=(0,i.useRef)(null),ew=(0,i.useMemo)(()=>u.find(e=>e.id===p)??null,[p,u]);function eC(){return{id:y(),title:"New conversation",messages:[],updatedAt:Date.now()}}function ek(e,t){h(s=>s.map(s=>s.id===e?t(s):s))}async function eP(e){e.preventDefault();let t=k.trim();if(!t)return;if(/\[[^\]]+\]/.test(t))return void E("replace the blanks first");L&&eN.current&&(eN.current.abort("user_barge_in"),eN.current=null,(0,g.Uo)("default","user_barge_in"));let s=ew;s||(s=eC(),h(e=>[s,...e]),x(s.id));let a=s.messages.filter(e=>!("assistant"===e.role&&!e.content.trim()&&!e.error&&!e.interrupted)),i={id:y(),role:"user",content:t,createdAt:Date.now()},r=y(),n=[...a,i,{id:r,role:"assistant",content:"",createdAt:Date.now()}],o=0===s.messages.length?t.slice(0,42):s.title;ek(s.id,e=>({...e,title:o,messages:n,updatedAt:Date.now()})),P(""),R(!0),E("streaming");let l=new AbortController;eN.current=l;try{await (0,g.ZB)("/chat/stream",{id:"default",message:t,medium:"web",mode:Z,subtitleLanguage:"off"!==Q?Q:void 0,history:s.messages.slice(-20).map(e=>({role:e.role,content:e.content}))},{onStaged:e=>{e?.mode&&("casual"===e.mode||"teach"===e.mode||"hybrid"===e.mode)&&J(e.mode)},onAvatar:e=>{let t=e.speech_id;ey.current&&clearTimeout(ey.current),O({eventId:e.event_id,expression:e.expression||"neutral",action:e.action||"talk",state:"speaking",speechId:t,durationMs:e.durationMs});let s=e.durationMs||4500;ey.current=setTimeout(()=>{O(e=>e?{...e,state:"idle",action:"idle"}:null)},s)},onChunk:e=>{e.deltaText&&ek(s.id,t=>({...t,messages:t.messages.map(t=>t.id===r?{...t,content:t.content+e.deltaText}:t)})),(e.expression||e.action)&&O(t=>t?{...t,expression:e.expression||t.expression,action:e.action||t.action}:null)},onDone:e=>{e?.metadata?.mode&&("casual"===e.metadata.mode||"teach"===e.metadata.mode||"hybrid"===e.metadata.mode)&&J(e.metadata.mode);let t=e.response||{},a=e.metadata?.memory_proposals,i=e.metadata?.behavioral_proposals,n=t.citations||e.metadata?.citations||[],o=t.gate||e.metadata?.gate;ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,content:e.content||t.subtitle_en||t.subtitle_ja||"",subtitle:t.subtitle,subtitleLanguage:t.subtitle_language||("off"!==Q?Q:void 0),subtitles:t.subtitles,spokenJa:t.spoken_ja,evidenceIds:t.evidence_ids||(n.length>0?n.map(e=>e.evidence_id||e.evidenceId).filter(Boolean):void 0),citations:n.length>0?n:void 0,gate:o,memoryProposals:a,behavioralProposals:i}:e),updatedAt:Date.now()})),E("online")},onInterrupted:e=>{let t=e?.reason||l.signal.reason||"interrupted";ek(s.id,e=>{let s=e.messages.find(e=>e.id===r);return"user_barge_in"!==t||s&&s.content.trim()?{...e,messages:e.messages.map(e=>e.id===r?{...e,interrupted:!0,interruptionReason:"string"==typeof t?t:"interrupted"}:e),updatedAt:Date.now()}:{...e,messages:e.messages.filter(e=>e.id!==r),updatedAt:Date.now()}}),E("online")},onError:e=>{let t=e?.message||String(e)||"Unknown error";ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,error:t}:e),updatedAt:Date.now()})),E("offline")}},l.signal)}catch(e){if(!l.signal.aborted){let t=e?.message||String(e)||"Connection error";ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,error:t}:e),updatedAt:Date.now()})),E("offline")}}finally{eN.current===l&&(eN.current=null),R(!1)}}(0,i.useEffect)(()=>()=>{ey.current&&clearTimeout(ey.current),eN.current&&eN.current.abort("unmounted")},[]),(0,i.useEffect)(()=>{let e=function(){try{let e=JSON.parse(window.localStorage.getItem(j)??"[]");if(!Array.isArray(e))return[];return e.map(e=>({...e,messages:(e.messages||[]).map(w)}))}catch{return[]}}();h(e),x(e[0]?.id??null);try{let e=localStorage.getItem("siduri.chat.subtitleLanguage");e&&ee(e)}catch{}_(!0),(0,g.Zq)("/health").then(async e=>{if(e.ok){let t=await e.json().catch(()=>({}));E("online"),t.organs?.body?.modelUrl&&(Y(t.organs.body.modelUrl),t.organs.body.modelUrl.toLowerCase().endsWith(".vrm")?V("vrm"):V("live2d")),(0,g.Zq)("/body/snapshot").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.snapshot&&(t.snapshot.modelUrl&&Y(t.snapshot.modelUrl),t.snapshot.format&&V(t.snapshot.format),t.snapshot.vrmOptions&&G(t.snapshot.vrmOptions))}else t.organs?.body?.modelUrl||(0,g.Zq)("/api/models/body").then(async e=>{if(e.ok){let t=(await e.json().catch(()=>({}))).models||[],s=t.find(e=>"default"!==e);s?(Y(`/assets/body/${s}/model.model3.json`),V("live2d")):t.length>0&&"default"!==t[0]&&(Y(`/assets/body/${t[0]}/model.model3.json`),V("live2d"))}}).catch(()=>{})}).catch(()=>{})}else E("online")}).catch(()=>E("offline")),(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.name&&es(t.name)}else(0,g.Zq)("/me").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.name&&es(t.name)}}).catch(()=>{})}).catch(()=>{}),(0,g.Zq)("/teach/detected-self").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.detected&&(sessionStorage.getItem(`siduri.dismissedSelf:${t.filename}`)||ei(t))}}).catch(()=>{})},[]),(0,i.useEffect)(()=>{S&&window.localStorage.setItem(j,JSON.stringify(u))},[u,S]),(0,i.useEffect)(()=>{ej.current?.scrollTo({top:ej.current.scrollHeight,behavior:"smooth"})},[p,ew?.messages.length,L]);let eA=ew?.messages??[],eE=eA.at(-1)?.evidenceIds?.length??0;async function eL(e,t,s){if(ew)try{let a=await (0,g.B2)(`/self/directives/${s}`,{id:t,companionId:"default"}).catch(()=>(0,g.B2)(`/memory/proposals/${s}`,{id:t,companionId:"default"})),i=a?.status||("approve"===s?"approved":"rejected");if("approve"===s){a?.name&&es(a.name);let s=ew.messages.find(t=>t.id===e),i=s?.memoryProposals?.find(e=>(e.proposal_id||e.id)===t),r=s?.memoryProposals?.find(e=>"name"===(e.predicate||"").toLowerCase()&&!(e.subject||"").toLowerCase().startsWith("actor:")&&"user"!==(e.subject||"").toLowerCase()&&"primary_user"!==(e.subject||"").toLowerCase()),n=(i?.subject||"").toLowerCase(),o=(i?.predicate||"").toLowerCase(),l=!n.startsWith("actor:")&&"user"!==n&&"primary_user"!==n&&"owner"!==n&&"creator"!==n;"name"===o&&l&&i?.value?es(i.value):r?.value&&es(r.value),(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.name&&es(t.name)}}).catch(()=>{})}ek(ew.id,s=>({...s,messages:s.messages.map(s=>s.id===e&&s.memoryProposals?{...s,memoryProposals:s.memoryProposals.map(e=>(e.proposal_id||e.id)===t?{...e,status:i}:e)}:s)}))}catch(e){console.error("Failed to update memory proposal:",e)}}async function eR(e,t,s){if(ew)try{let a=await (0,g.B2)(`/self/directives/${s}`,{id:t,companionId:"default"}).catch(()=>(0,g.B2)(`/memory/behavioral/${s}`,{id:t,companionId:"default"})),i=a?.status||("approve"===s?"active":"rejected");if("approve"===s){a?.name&&es(a.name);let s=ew.messages.find(t=>t.id===e),i=s?.behavioralProposals?.find(e=>(e.directive_id||e.id)===t),r=i?.directive||i?.value||i?.behavior?.instruction||"";if(r){let e=r.match(/^(?:address\s+companion\s+as|your\s+name\s+is|call\s+yourself|acknowledge\s+name\s+as|companion\s+name\s+is)\s+["“']?([^"”'.]+)["”']?/i);e?.[1]?.trim()&&es(e[1].trim())}(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.name&&es(t.name)}}).catch(()=>{})}ek(ew.id,s=>({...s,messages:s.messages.map(s=>s.id===e&&s.behavioralProposals?{...s,behavioralProposals:s.behavioralProposals.map(e=>(e.directive_id||e.id)===t?{...e,status:i}:e)}:s)}))}catch(e){console.error("Failed to update behavioral proposal:",e)}}function eS(e){if(!e?.manifest)return;let t=e.scannedDirectives||e.manifest?.directives||[];return{manifest:e.manifest,scannedDirectives:t,compiledBy:e.compiledBy||"parser",status:"pending"}}function e_(e,t){let s={};t.scannedDirectives.forEach(e=>{s[e.id]=e.approvedByDefault??e.scanResult?.safe??!0}),ed(t=>({...t,[e]:s}))}async function eT(e){let t=e.target.files?.[0];if(!t)return;e.target&&(e.target.value="");let s=await t.text(),a=t.name,i=ew;i||(i=eC(),h(e=>[i,...e]),x(i.id));let r={id:y(),role:"user",content:"Teach Siduri from this persona file.",selfAttachment:{filename:a},createdAt:Date.now()},n=y(),o={id:n,role:"assistant",content:"",createdAt:Date.now()};ek(i.id,e=>({...e,title:0===e.messages.length?`Persona: ${a}`:e.title,messages:[...e.messages,r,o],updatedAt:Date.now()})),R(!0),E("streaming");try{let e=await (0,g.B2)("/teach/upload-self",{content:s,companionId:"default"});if(e&&e.isValid&&e.manifest){let t=eS(e),s=t?.manifest?.identity?.name||t?.manifest?.name||"persona",r=t?.scannedDirectives?.length??0,o="brain"===e.compiledBy?"AI Cognitive Compiler":"Manifest Parser",l=`I've reviewed **${a}** and compiled the persona **"${s}"** using the ${o}.
30
+ `;function p(e,t,s){let a=e.createShader(t);if(!a)throw Error("Failed to create shader");if(e.shaderSource(a,s),e.compileShader(a),!e.getShaderParameter(a,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(a);throw e.deleteShader(a),Error(`Shader compilation error: ${t}`)}return a}class x{constructor(e){this.gl=null,this.program=null,this.maskProgram=null,this.vertexBuffer=null,this.uvBuffer=null,this.indexBuffer=null,this.aPositionLocation=-1,this.aTexCoordLocation=-1,this.uMatrixLocation=null,this.uTextureLocation=null,this.uOpacityLocation=null,this.maskAPositionLocation=-1,this.maskATexCoordLocation=-1,this.maskUMatrixLocation=null,this.maskUTextureLocation=null,this.textures=[],this.moc=null,this.model=null,this.core=null,this.paramIndices=new Map,this.isDisposed=!1,this.modelBounds={minX:-.39,maxX:.4,minY:-.98,maxY:.18,width:.79,height:1.16,centerX:.006,centerY:-.4},this.canvas=e}initialize(e,t){this.core=e;let s={alpha:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,antialias:!0,stencil:!0},a=this.canvas.getContext("webgl",s)||this.canvas.getContext("experimental-webgl",s)||this.canvas.getContext("webgl2",s);if(!a)throw Error("WebGL is not supported in this browser environment");this.gl=a;let i=p(a,a.VERTEX_SHADER,m),r=p(a,a.FRAGMENT_SHADER,u),n=a.createProgram();if(!n)throw Error("Failed to create WebGL program");if(a.attachShader(n,i),a.attachShader(n,r),a.linkProgram(n),!a.getProgramParameter(n,a.LINK_STATUS))throw Error(`Program link error: ${a.getProgramInfoLog(n)}`);this.program=n,this.aPositionLocation=a.getAttribLocation(n,"a_position"),this.aTexCoordLocation=a.getAttribLocation(n,"a_texCoord"),this.uMatrixLocation=a.getUniformLocation(n,"u_matrix"),this.uTextureLocation=a.getUniformLocation(n,"u_texture"),this.uOpacityLocation=a.getUniformLocation(n,"u_opacity");let o=p(a,a.FRAGMENT_SHADER,h),l=a.createProgram();if(!l)throw Error("Failed to create Mask WebGL program");if(a.attachShader(l,i),a.attachShader(l,o),a.linkProgram(l),!a.getProgramParameter(l,a.LINK_STATUS))throw Error(`Mask Program link error: ${a.getProgramInfoLog(l)}`);if(this.maskProgram=l,this.maskAPositionLocation=a.getAttribLocation(l,"a_position"),this.maskATexCoordLocation=a.getAttribLocation(l,"a_texCoord"),this.maskUMatrixLocation=a.getUniformLocation(l,"u_matrix"),this.maskUTextureLocation=a.getUniformLocation(l,"u_texture"),this.vertexBuffer=a.createBuffer(),this.uvBuffer=a.createBuffer(),this.indexBuffer=a.createBuffer(),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1),this.textures=t.textures.map(e=>{let t=a.createTexture();if(!t)throw Error("Failed to create WebGL texture");return a.bindTexture(a.TEXTURE_2D,t),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR_MIPMAP_NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,e),a.generateMipmap(a.TEXTURE_2D),t}),this.moc=e.Moc.fromArrayBuffer(t.mocBuffer),!this.moc)throw Error("Failed to create Live2D Moc from ArrayBuffer");if(this.model=e.Model.fromMoc(this.moc),!this.model)throw Error("Failed to create Live2D Model from Moc");let c=this.model.parameters.ids;for(let e=0;e<c.length;e++)this.paramIndices.set(c[e],e);this.initializeNeutralMouth(),this.model.update(),this.calculateModelBounds()}initializeNeutralMouth(){this.model&&(this.setParamDirect("ParamMouthOpenY",0),this.setParamDirect("ParamMouthForm",0))}setParamDirect(e,t){let s=this.paramIndices.get(e);if(void 0!==s&&this.model){let e=this.model.parameters.minimumValues[s],a=this.model.parameters.maximumValues[s];this.model.parameters.values[s]=Math.max(e,Math.min(a,t))}}calculateModelBounds(){if(!this.model)return;let e=this.model.drawables,t=e.count,s=1/0,a=-1/0,i=1/0,r=-1/0;for(let n=0;n<t;n++){let t=e.vertexPositions[n];if(t&&0!==t.length)for(let e=0;e<t.length;e+=2){let n=t[e],o=t[e+1];n<s&&(s=n),n>a&&(a=n),o<i&&(i=o),o>r&&(r=o)}}s!==1/0&&a!==-1/0&&i!==1/0&&r!==-1/0&&(this.modelBounds={minX:s,maxX:a,minY:i,maxY:r,width:a-s,height:r-i,centerX:(s+a)/2,centerY:(i+r)/2})}getModelBounds(){return{...this.modelBounds}}setParam(e,t,s=1){let a=this.paramIndices.get(e);if(void 0!==a&&this.model){let e=this.model.parameters.values[a],i=Math.max(this.model.parameters.minimumValues[a],Math.min(this.model.parameters.maximumValues[a],t));this.model.parameters.values[a]=e+(i-e)*s}}render(e,t=Date.now()){let s;if(this.isDisposed||!this.gl||!this.model||!this.program)return;let a=this.gl,i=this.canvas.width,r=this.canvas.height;if(0===i||0===r)return;let n=e.calculateFrameParameters(t);this.setParam("ParamAngleX",n.angleX,.2),this.setParam("ParamAngleY",n.angleY,.2),this.setParam("ParamAngleZ",n.angleZ,.2),this.setParam("ParamBodyAngleX",n.bodyAngleX,.15),this.setParam("ParamBreath",n.breath,.3),this.setParam("ParamEyeLOpen",n.eyeOpenL,.4),this.setParam("ParamEyeROpen",n.eyeOpenR,.4),this.setParam("ParamMouthOpenY",n.mouthOpenY,.35);let o=function(e){if(!e)return"neutral";switch(e.toLowerCase().trim()){case"surprised":return"face_aozame.exp3.json";case"concerned":case"thinking":return"eyes_zetubou.exp3.json";case"happy":return"hair_open.exp3.json";default:return"neutral"}}(e.expression);"face_aozame.exp3.json"===o?(this.setParam("Param10",1,.2),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)):"eyes_zetubou.exp3.json"===o?(this.setParam("Param9",1,.2),this.setParam("Param10",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)):"hair_open.exp3.json"===o?(this.setParam("Param11",1,.2),this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param12",0,.15)):"eye_color.exp3.json"===o?(this.setParam("Param12",1,.2),this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15)):(this.setParam("Param10",0,.15),this.setParam("Param9",0,.15),this.setParam("Param11",0,.15),this.setParam("Param12",0,.15)),this.model.update(),a.viewport(0,0,i,r),a.clearColor(0,0,0,0),a.clear(a.COLOR_BUFFER_BIT|a.STENCIL_BUFFER_BIT),a.enable(a.BLEND),a.blendFunc(a.ONE,a.ONE_MINUS_SRC_ALPHA),a.useProgram(this.program);let l=i/r,c=this.modelBounds.width,d=this.modelBounds.height,m=this.modelBounds.centerX,u=this.modelBounds.centerY,h=(s=l>=c/d?1.84/d:1.84/c*l)/l,p=new Float32Array([h,0,0,0,0,s,0,0,0,0,1,0,-m*h,-u*s,0,1]);a.uniformMatrix4fv(this.uMatrixLocation,!1,p),a.uniform1i(this.uTextureLocation,0);let x=this.model.drawables,f=x.count,v=x.renderOrders,b=[];for(let e=0;e<f;e++)b.push(e);b.sort((e,t)=>v[e]-v[t]),a.enableVertexAttribArray(this.aPositionLocation),a.enableVertexAttribArray(this.aTexCoordLocation);let g=(e,t)=>{let s=void 0!==t?t:x.opacities[e];if(s<=.001)return;let i=x.textureIndices[e],r=this.textures[i];if(!r)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r),a.uniform1f(this.uOpacityLocation,s);let n=x.vertexPositions[e];a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,n,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.aPositionLocation,2,a.FLOAT,!1,0,0);let o=x.vertexUvs[e];a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,o,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.aTexCoordLocation,2,a.FLOAT,!1,0,0);let l=x.indices[e];a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,l,a.DYNAMIC_DRAW),a.drawElements(a.TRIANGLES,l.length,a.UNSIGNED_SHORT,0)},j=e=>{if(!this.maskProgram)return;a.useProgram(this.maskProgram),a.uniformMatrix4fv(this.maskUMatrixLocation,!1,p),a.uniform1i(this.maskUTextureLocation,0),a.enableVertexAttribArray(this.maskAPositionLocation),a.enableVertexAttribArray(this.maskATexCoordLocation);let t=x.textureIndices[e],s=this.textures[t];if(!s)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,s);let i=x.vertexPositions[e];a.bindBuffer(a.ARRAY_BUFFER,this.vertexBuffer),a.bufferData(a.ARRAY_BUFFER,i,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.maskAPositionLocation,2,a.FLOAT,!1,0,0);let r=x.vertexUvs[e];a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,r,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.maskATexCoordLocation,2,a.FLOAT,!1,0,0);let n=x.indices[e];a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,this.indexBuffer),a.bufferData(a.ELEMENT_ARRAY_BUFFER,n,a.DYNAMIC_DRAW),a.drawElements(a.TRIANGLES,n.length,a.UNSIGNED_SHORT,0),a.useProgram(this.program),a.enableVertexAttribArray(this.aPositionLocation),a.enableVertexAttribArray(this.aTexCoordLocation)},y=-1;for(let e of b)if(!(x.opacities[e]<=.001))if(x.maskCounts[e]>0){let t=x.masks[e][0];t!==y&&(y=t,a.enable(a.STENCIL_TEST),a.stencilMask(255),a.clear(a.STENCIL_BUFFER_BIT),a.stencilFunc(a.ALWAYS,1,255),a.stencilOp(a.KEEP,a.KEEP,a.REPLACE),a.colorMask(!1,!1,!1,!1),j(t),a.colorMask(!0,!0,!0,!0)),a.stencilFunc(a.EQUAL,1,255),a.stencilOp(a.KEEP,a.KEEP,a.KEEP),g(e)}else -1!==y&&(a.disable(a.STENCIL_TEST),y=-1),g(e);-1!==y&&a.disable(a.STENCIL_TEST)}dispose(){if(this.isDisposed=!0,this.gl){for(let e of this.textures)this.gl.deleteTexture(e);this.textures=[],this.vertexBuffer&&this.gl.deleteBuffer(this.vertexBuffer),this.uvBuffer&&this.gl.deleteBuffer(this.uvBuffer),this.indexBuffer&&this.gl.deleteBuffer(this.indexBuffer),this.program&&this.gl.deleteProgram(this.program)}this.model&&"function"==typeof this.model.release&&this.model.release(),this.moc&&"function"==typeof this.moc.release&&this.moc.release(),this.model=null,this.moc=null,this.gl=null}}function f({modelUrl:e,expression:t="neutral",action:s="idle",state:r="idle",speechId:n,lipSyncValue:o,durationMs:m,className:u="",onStatusChange:h}){let p=(0,i.useRef)(null),v=(0,i.useRef)(null),b=(0,i.useRef)(new l({expression:t,action:s,state:r,speechId:n,lipSyncValue:o,durationMs:m})),g=(0,i.useRef)(null),j=(0,i.useRef)(null),[y,N]=(0,i.useState)("loading"),[w,C]=(0,i.useState)(null),[k,P]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=()=>{b.current.setReducedMotion(e.matches)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{b.current.updateConfig({expression:t,action:s,state:r,speechId:n,lipSyncValue:o,durationMs:m})},[t,s,r,n,o,m]),(0,i.useEffect)(()=>{let t=!1,s=null;async function a(){if(v.current&&p.current){if(!e){N("error"),C("No Live2D model configured. Place model in assets/body/<name>/"),h?.("error","No Live2D model URL specified");return}N("loading"),h?.("loading"),C(null);try{let a=await c();if(t)return;let i=await d(e);if(t)return;let r=v.current;if(!r)return;let n=new x(r);n.initialize(a,i),g.current=n;let o=()=>{if(!p.current||!v.current)return;let e=p.current.getBoundingClientRect();if(e.width<=0||e.height<=0)return;let t=Math.min(window.devicePixelRatio||1,2),s=Math.max(1,Math.floor(e.width*t)),a=Math.max(1,Math.floor(e.height*t));(v.current.width!==s||v.current.height!==a)&&(v.current.width=s,v.current.height=a)};o(),(s=new ResizeObserver(o)).observe(p.current);let l=()=>{t||(g.current&&g.current.render(b.current,performance.now()),j.current=requestAnimationFrame(l))};j.current=requestAnimationFrame(l),N("ready"),h?.("ready")}catch(s){if(t)return;let e=s?.message||"Failed to initialize Live2D avatar";console.warn("[AvatarCanvas] Initialization error:",s),N("error"),C("Avatar model unavailable or failed to load."),h?.("error",e)}}}a();let i=v.current,r=e=>{e.preventDefault(),console.warn("[AvatarCanvas] WebGL context lost"),j.current&&cancelAnimationFrame(j.current),N("error"),C("WebGL context lost.")},n=()=>{console.log("[AvatarCanvas] WebGL context restored, re-initializing..."),a()};return i&&(i.addEventListener("webglcontextlost",r,!1),i.addEventListener("webglcontextrestored",n,!1)),()=>{t=!0,j.current&&(cancelAnimationFrame(j.current),j.current=null),s&&s.disconnect(),i&&(i.removeEventListener("webglcontextlost",r),i.removeEventListener("webglcontextrestored",n)),g.current&&(g.current.dispose(),g.current=null)}},[e,k,h]),(0,a.jsxs)("div",{ref:p,"data-testid":"avatar-canvas-container",className:`relative w-full h-full min-h-0 flex items-center justify-center overflow-hidden bg-transparent ${u}`,"aria-label":"Live2D Companion Presence",children:[(0,a.jsx)("canvas",{ref:v,role:"img","data-testid":"avatar-webgl-canvas","aria-label":"Live2D companion presence",style:{width:"100%",height:"100%",display:"block"},className:`absolute inset-0 w-full h-full block transition-opacity duration-500 ${"ready"===y?"opacity-100":"opacity-0"}`}),"loading"===y&&(0,a.jsxs)("div",{role:"status","aria-live":"polite",className:"absolute inset-0 flex flex-col items-center justify-center gap-3 bg-[#0b0b0e]/90 text-[var(--siduri-text-muted)]",children:[(0,a.jsx)("div",{className:"siduri-glyph w-10 h-10 text-base animate-pulse motion-reduce:animate-none",children:"✦"}),(0,a.jsx)("span",{className:"text-[11px] font-mono tracking-widest uppercase text-[var(--siduri-ember-light)]",children:"Initializing Presence..."})]}),"error"===y&&(0,a.jsxs)("div",{role:"alert","aria-live":"polite",className:"absolute inset-0 flex flex-col items-center justify-center p-6 text-center bg-[#0b0b0e]/95 text-[var(--siduri-text-muted)]",children:[(0,a.jsx)("div",{className:"w-8 h-8 rounded-full border border-[var(--siduri-border-subtle)] grid place-items-center text-xs text-[var(--siduri-text-dim)] mb-2 font-mono",children:"!"}),(0,a.jsx)("p",{className:"text-xs font-sans text-[var(--siduri-text-secondary)] mb-1",children:w||"Avatar unavailable in this browser."}),(0,a.jsx)("span",{className:"text-[10px] font-mono text-[var(--siduri-text-dim)] mb-3",children:"Conversational text mode remains active"}),(0,a.jsx)("button",{type:"button",onClick:()=>P(e=>e+1),className:"px-3 py-1 text-[11px] font-mono tracking-wider uppercase rounded border border-[var(--siduri-border-subtle)] hover:border-[var(--siduri-border-ember)] text-[var(--siduri-text-secondary)] hover:text-[var(--siduri-text-primary)] transition-colors focus-visible:ring-1 focus-visible:ring-[var(--siduri-border-ember)] outline-none","aria-label":"Retry avatar initialization",children:"Retry"})]})]})}var v=s(2914);function b({modelUrl:e,expression:t="neutral",action:r="idle",state:n="idle",speechId:o,lipSyncValue:l,durationMs:c,className:d="",vrmConfig:m,onStatusChange:u}){let h=(0,i.useRef)(null),p=(0,i.useRef)(null),x=(0,i.useRef)(null),[f,v]=(0,i.useState)("loading"),[g,j]=(0,i.useState)(null);return(0,i.useEffect)(()=>{x.current&&x.current.updateState({expression:t,action:r,state:n,speechId:o,lipSyncValue:l,lookAtMode:m?.lookAtMode||"camera"})},[t,r,n,o,l,m]),(0,i.useEffect)(()=>{let t=!1,a=null;return async function(){if(p.current&&h.current){if(!e){v("error");let e="No VRM model URL specified. Place model (.vrm) in assets/body/<name>/";j(e),u?.("error",e);return}v("loading"),u?.("loading"),j(null);try{let i=p.current,{VRMController:r}=await Promise.all([s.e(389),s.e(368),s.e(672),s.e(411),s.e(202)]).then(s.bind(s,7202));if(t)return;let n=new r(i,m);if(x.current=n,await n.loadModel(e),t)return void n.dispose();let o=()=>{if(!h.current||!p.current)return;let e=h.current.getBoundingClientRect();e.width<=0||e.height<=0||n.resize(e.width,e.height)};o(),(a=new ResizeObserver(o)).observe(h.current),n.startLoop(),v("ready"),u?.("ready")}catch(s){if(t)return;let e=s?.message||"Failed to initialize 3D VRM avatar canvas";console.error("[VRM] Initialization error:",s),v("error"),j(e),u?.("error",e)}}}(),()=>{t=!0,a&&a.disconnect(),x.current&&(x.current.dispose(),x.current=null)}},[e]),(0,a.jsxs)("div",{ref:h,className:`relative w-full h-full flex items-center justify-center overflow-hidden select-none bg-transparent ${d}`,"data-testid":"vrm-canvas-container",children:[(0,a.jsx)("canvas",{ref:p,className:"w-full h-full block touch-none","data-testid":"vrm-canvas-element"}),"loading"===f&&(0,a.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center bg-black/40 backdrop-blur-xs text-xs font-mono text-[var(--siduri-text-secondary)] pointer-events-none transition-opacity",children:[(0,a.jsx)("div",{className:"w-6 h-6 rounded-full border-2 border-[var(--siduri-ember)] border-t-transparent animate-spin mb-2"}),(0,a.jsx)("span",{children:"Loading 3D VRM avatar..."})]}),"error"===f&&(0,a.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center p-6 text-center bg-black/60 text-xs font-mono text-red-400",children:[(0,a.jsx)("span",{className:"font-semibold mb-1",children:"Avatar Error"}),(0,a.jsx)("span",{className:"opacity-80 max-w-sm",children:g})]})]})}var g=s(8839);let j="siduri.chat.conversations.v1";function y(){return`${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function N(e){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(e)}function w(e){if("[interrupted]"===e.content)return{...e,content:"",interrupted:!0,interruptionReason:"interrupted"};if(e.content&&e.content.endsWith(" [interrupted]"))return{...e,content:e.content.slice(0,-14).trim(),interrupted:!0,interruptionReason:"interrupted"};if(e.content&&e.content.startsWith("I couldn’t reach the orchestrator. ")){let t=e.content.slice(35);return{...e,content:"",error:t}}return e}function C(e){switch(e){case"client_disconnect":return{label:"Disconnected",text:"Response stopped due to connection close.",hint:"The connection to the companion service closed prematurely."};case"user_stop":return{label:"Stopped",text:"Response stopped by user.",hint:"Generation was manually cancelled via the stop control."};case"user_barge_in":return{label:"Interrupted",text:"Response interrupted by new message.",hint:"Generation was cancelled because a new prompt was submitted."};case"timeout":return{label:"Timed Out",text:"Response timed out.",hint:"The request exceeded the allotted time limit before finishing."};default:return{label:"Interrupted",text:"Response was interrupted.",hint:e&&"interrupted"!==e?`Reason: ${e}`:void 0}}}function k(){let e,t,s,o,l,c,d,m,[u,h]=(0,i.useState)([]),[p,x]=(0,i.useState)(null),[k,P]=(0,i.useState)(""),[A,E]=(0,i.useState)("connecting"),[L,R]=(0,i.useState)(!1),[S,_]=(0,i.useState)(!1),[T,I]=(0,i.useState)(!1),[D,M]=(0,i.useState)(!1),[B,F]=(0,i.useState)(!1),[U,$]=(0,i.useState)(!1),[z,O]=(0,i.useState)(null),[X,Y]=(0,i.useState)(void 0),[W,V]=(0,i.useState)("unknown"),[q,G]=(0,i.useState)(void 0),[Z,H]=(0,i.useState)("hybrid"),[K,J]=(0,i.useState)("hybrid"),[Q,ee]=(0,i.useState)("off"),[et,es]=(0,i.useState)("Siduri"),[ea,ei]=(0,i.useState)(null),[er,en]=(0,i.useState)(!1),[eo,el]=(0,i.useState)(null),[ec,ed]=(0,i.useState)({}),[em,eu]=(0,i.useState)(null),eh=(0,i.useRef)(null),[ep,ex]=(0,i.useState)({}),[ef,ev]=(0,i.useState)({}),[eb,eg]=(0,i.useState)(null),ej=(0,i.useRef)(null),ey=(0,i.useRef)(null),eN=(0,i.useRef)(null),ew=(0,i.useMemo)(()=>u.find(e=>e.id===p)??null,[p,u]);function eC(){return{id:y(),title:"New conversation",messages:[],updatedAt:Date.now()}}function ek(e,t){h(s=>s.map(s=>s.id===e?t(s):s))}async function eP(e){e.preventDefault();let t=k.trim();if(!t)return;if(/\[[^\]]+\]/.test(t))return void E("replace the blanks first");L&&eN.current&&(eN.current.abort("user_barge_in"),eN.current=null,(0,g.Uo)("default","user_barge_in"));let s=ew;s||(s=eC(),h(e=>[s,...e]),x(s.id));let a=s.messages.filter(e=>!("assistant"===e.role&&!e.content.trim()&&!e.error&&!e.interrupted)),i={id:y(),role:"user",content:t,createdAt:Date.now()},r=y(),n=[...a,i,{id:r,role:"assistant",content:"",createdAt:Date.now()}],o=0===s.messages.length?t.slice(0,42):s.title;ek(s.id,e=>({...e,title:o,messages:n,updatedAt:Date.now()})),P(""),R(!0),E("streaming");let l=new AbortController;eN.current=l;try{await (0,g.ZB)("/chat/stream",{id:"default",message:t,medium:"web",mode:Z,subtitleLanguage:"off"!==Q?Q:void 0,history:s.messages.slice(-20).map(e=>({role:e.role,content:e.content}))},{onStaged:e=>{e?.mode&&("casual"===e.mode||"teach"===e.mode||"hybrid"===e.mode)&&J(e.mode)},onAvatar:e=>{let t=e.speech_id;ey.current&&clearTimeout(ey.current),O({eventId:e.event_id,expression:e.expression||"neutral",action:e.action||"talk",state:"speaking",speechId:t,durationMs:e.durationMs});let s=e.durationMs||4500;ey.current=setTimeout(()=>{O(e=>e?{...e,state:"idle",action:"idle"}:null)},s)},onChunk:e=>{e.deltaText&&ek(s.id,t=>({...t,messages:t.messages.map(t=>t.id===r?{...t,content:t.content+e.deltaText}:t)})),(e.expression||e.action)&&O(t=>t?{...t,expression:e.expression||t.expression,action:e.action||t.action}:null)},onDone:e=>{e?.metadata?.mode&&("casual"===e.metadata.mode||"teach"===e.metadata.mode||"hybrid"===e.metadata.mode)&&J(e.metadata.mode);let t=e.response||{},a=e.metadata?.claim_proposals||e.metadata?.memory_proposals,i=e.metadata?.behavioral_proposals,n=t.citations||e.metadata?.citations||[],o=t.gate||e.metadata?.gate;ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,content:e.content||t.subtitle_en||t.subtitle_ja||"",subtitle:t.subtitle,subtitleLanguage:t.subtitle_language||("off"!==Q?Q:void 0),subtitles:t.subtitles,spokenJa:t.spoken_ja,evidenceIds:t.evidence_ids||(n.length>0?n.map(e=>e.evidence_id||e.evidenceId).filter(Boolean):void 0),citations:n.length>0?n:void 0,gate:o,memoryProposals:a,behavioralProposals:i}:e),updatedAt:Date.now()})),E("online")},onInterrupted:e=>{let t=e?.reason||l.signal.reason||"interrupted";ek(s.id,e=>{let s=e.messages.find(e=>e.id===r);return"user_barge_in"!==t||s&&s.content.trim()?{...e,messages:e.messages.map(e=>e.id===r?{...e,interrupted:!0,interruptionReason:"string"==typeof t?t:"interrupted"}:e),updatedAt:Date.now()}:{...e,messages:e.messages.filter(e=>e.id!==r),updatedAt:Date.now()}}),E("online")},onError:e=>{let t=e?.message||String(e)||"Unknown error";ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,error:t}:e),updatedAt:Date.now()})),E("offline")}},l.signal)}catch(e){if(!l.signal.aborted){let t=e?.message||String(e)||"Connection error";ek(s.id,e=>({...e,messages:e.messages.map(e=>e.id===r?{...e,error:t}:e),updatedAt:Date.now()})),E("offline")}}finally{eN.current===l&&(eN.current=null),R(!1)}}(0,i.useEffect)(()=>()=>{ey.current&&clearTimeout(ey.current),eN.current&&eN.current.abort("unmounted")},[]),(0,i.useEffect)(()=>{let e=function(){try{let e=JSON.parse(window.localStorage.getItem(j)??"[]");if(!Array.isArray(e))return[];return e.map(e=>({...e,messages:(e.messages||[]).map(w)}))}catch{return[]}}();h(e),x(e[0]?.id??null);try{let e=localStorage.getItem("siduri.chat.subtitleLanguage");e&&ee(e)}catch{}_(!0),(0,g.Zq)("/health").then(async e=>{if(e.ok){let t=await e.json().catch(()=>({}));E("online"),t.organs?.body?.modelUrl&&(Y(t.organs.body.modelUrl),t.organs.body.modelUrl.toLowerCase().endsWith(".vrm")?V("vrm"):V("live2d")),(0,g.Zq)("/body/snapshot").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.snapshot&&(t.snapshot.modelUrl&&Y(t.snapshot.modelUrl),t.snapshot.format&&V(t.snapshot.format),t.snapshot.vrmOptions&&G(t.snapshot.vrmOptions))}else t.organs?.body?.modelUrl||(0,g.Zq)("/api/models/body").then(async e=>{if(e.ok){let t=(await e.json().catch(()=>({}))).models||[],s=t.find(e=>"default"!==e);s?(Y(`/assets/body/${s}/model.model3.json`),V("live2d")):t.length>0&&"default"!==t[0]&&(Y(`/assets/body/${t[0]}/model.model3.json`),V("live2d"))}}).catch(()=>{})}).catch(()=>{})}else E("online")}).catch(()=>E("offline")),(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.name&&es(t.name)}else(0,g.Zq)("/me").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.name&&es(t.name)}}).catch(()=>{})}).catch(()=>{}),(0,g.Zq)("/teach/detected-self").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t&&t.detected&&(sessionStorage.getItem(`siduri.dismissedSelf:${t.filename}`)||ei(t))}}).catch(()=>{})},[]),(0,i.useEffect)(()=>{S&&window.localStorage.setItem(j,JSON.stringify(u))},[u,S]),(0,i.useEffect)(()=>{ej.current?.scrollTo({top:ej.current.scrollHeight,behavior:"smooth"})},[p,ew?.messages.length,L]);let eA=ew?.messages??[],eE=eA.at(-1)?.evidenceIds?.length??0;async function eL(e,t,s){if(ew)try{let a=await (0,g.B2)(`/self/directives/${s}`,{id:t,companionId:"default"}).catch(()=>(0,g.B2)(`/memory/proposals/${s}`,{id:t,companionId:"default"})),i=a?.status||("approve"===s?"approved":"rejected");if("approve"===s){a?.name&&es(a.name);let s=ew.messages.find(t=>t.id===e),i=s?.memoryProposals?.find(e=>(e.proposal_id||e.id)===t),r=s?.memoryProposals?.find(e=>"name"===(e.predicate||"").toLowerCase()&&!(e.subject||"").toLowerCase().startsWith("actor:")&&"user"!==(e.subject||"").toLowerCase()&&"primary_user"!==(e.subject||"").toLowerCase()),n=(i?.subject||"").toLowerCase(),o=(i?.predicate||"").toLowerCase(),l=!n.startsWith("actor:")&&"user"!==n&&"primary_user"!==n&&"owner"!==n&&"creator"!==n;"name"===o&&l&&i?.value?es(i.value):r?.value&&es(r.value),(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.name&&es(t.name)}}).catch(()=>{})}ek(ew.id,s=>({...s,messages:s.messages.map(s=>s.id===e&&s.memoryProposals?{...s,memoryProposals:s.memoryProposals.map(e=>(e.proposal_id||e.id)===t?{...e,status:i}:e)}:s)}))}catch(e){console.error("Failed to update memory proposal:",e)}}async function eR(e,t,s){if(ew)try{let a=await (0,g.B2)(`/self/directives/${s}`,{id:t,companionId:"default"}).catch(()=>(0,g.B2)(`/memory/behavioral/${s}`,{id:t,companionId:"default"})),i=a?.status||("approve"===s?"active":"rejected");if("approve"===s){a?.name&&es(a.name);let s=ew.messages.find(t=>t.id===e),i=s?.behavioralProposals?.find(e=>(e.directive_id||e.id)===t),r=i?.directive||i?.value||i?.behavior?.instruction||"";if(r){let e=r.match(/^(?:address\s+companion\s+as|your\s+name\s+is|call\s+yourself|acknowledge\s+name\s+as|companion\s+name\s+is)\s+["“']?([^"”'.]+)["”']?/i);e?.[1]?.trim()&&es(e[1].trim())}(0,g.Zq)("/teach/identity").then(async e=>{if(e.ok){let t=await e.json().catch(()=>null);t?.name&&es(t.name)}}).catch(()=>{})}ek(ew.id,s=>({...s,messages:s.messages.map(s=>s.id===e&&s.behavioralProposals?{...s,behavioralProposals:s.behavioralProposals.map(e=>(e.directive_id||e.id)===t?{...e,status:i}:e)}:s)}))}catch(e){console.error("Failed to update behavioral proposal:",e)}}function eS(e){if(!e?.manifest)return;let t=e.scannedDirectives||e.manifest?.directives||[];return{manifest:e.manifest,scannedDirectives:t,compiledBy:e.compiledBy||"parser",status:"pending"}}function e_(e,t){let s={};t.scannedDirectives.forEach(e=>{s[e.id]=e.approvedByDefault??e.scanResult?.safe??!0}),ed(t=>({...t,[e]:s}))}async function eT(e){let t=e.target.files?.[0];if(!t)return;e.target&&(e.target.value="");let s=await t.text(),a=t.name,i=ew;i||(i=eC(),h(e=>[i,...e]),x(i.id));let r={id:y(),role:"user",content:"Teach Siduri from this persona file.",selfAttachment:{filename:a},createdAt:Date.now()},n=y(),o={id:n,role:"assistant",content:"",createdAt:Date.now()};ek(i.id,e=>({...e,title:0===e.messages.length?`Persona: ${a}`:e.title,messages:[...e.messages,r,o],updatedAt:Date.now()})),R(!0),E("streaming");try{let e=await (0,g.B2)("/teach/upload-self",{content:s,companionId:"default"});if(e&&e.isValid&&e.manifest){let t=eS(e),s=t?.manifest?.identity?.name||t?.manifest?.name||"persona",r=t?.scannedDirectives?.length??0,o="brain"===e.compiledBy?"AI Cognitive Compiler":"Manifest Parser",l=`I've reviewed **${a}** and compiled the persona **"${s}"** using the ${o}.
31
31
 
32
32
  Found **${r} behavioral directive${1!==r?"s":""}**. Review and approve the directives below.`;ek(i.id,e=>({...e,messages:e.messages.map(e=>e.id===n?{...e,content:l,selfProposal:t}:e),updatedAt:Date.now()})),t&&e_(n,t),"teach"!==Z&&(H("teach"),J("teach"))}else{let t=e?.errors?.join("\n")||"Invalid persona or .self package format";ek(i.id,e=>({...e,messages:e.messages.map(e=>e.id===n?{...e,error:t,content:"Could not compile this persona file."}:e),updatedAt:Date.now()}))}}catch(t){let e=`Failed to parse persona file: ${t.message}`;ek(i.id,t=>({...t,messages:t.messages.map(t=>t.id===n?{...t,error:e,content:"Could not compile this persona file."}:t),updatedAt:Date.now()}))}finally{R(!1),E("online")}}async function eI(e,t){let s=Object.entries(ec[e]||{}).filter(([,e])=>e).map(([e])=>e);eu(e);try{let a=await (0,g.B2)("/teach/install-self",{companionId:"default",manifest:t.manifest,approvedDirectiveIds:s});if(a&&a.success){let a=t.manifest?.identity?.name||t.manifest?.name;a&&es(a),ew&&ek(ew.id,t=>({...t,messages:t.messages.map(t=>t.id===e?{...t,selfProposal:{...t.selfProposal,status:"installed"}}:t)})),el(`Installed '${t.manifest.name}' ethos (${s.length} directives active).`),setTimeout(()=>el(null),6e3),en(!0),ea?.filename&&sessionStorage.setItem(`siduri.dismissedSelf:${ea.filename}`,"true")}else alert(a?.error||"Failed to install .self package")}catch(e){alert(`Install error: ${e.message}`)}finally{eu(null)}}return(0,a.jsxs)("div",{className:`chat-app ${T?"sidebar-collapsed":""} ${D?"mobile-drawer-open":""}`,children:[D&&(0,a.jsx)("div",{className:"chat-backdrop",onClick:()=>M(!1),"aria-hidden":"true"}),(0,a.jsxs)("aside",{className:"chat-sidebar","aria-label":"Conversation history",children:[(0,a.jsxs)("div",{className:"chat-sidebar-top",children:[(0,a.jsxs)("a",{className:"chat-brand",href:"/chat",children:[(0,a.jsx)("span",{className:"chat-brand-mark",children:"S"}),(0,a.jsx)("span",{children:"SIDURI"})]}),(0,a.jsx)("button",{className:"sidebar-collapse",type:"button",onClick:()=>I(e=>!e),"aria-label":T?"Expand sidebar":"Collapse sidebar",children:T?(0,a.jsx)(v.fl,{size:14}):(0,a.jsx)(v.A6,{size:14})}),(0,a.jsx)("button",{className:"mobile-drawer-close flex items-center justify-center",type:"button",onClick:()=>M(!1),"aria-label":"Close conversation drawer",children:(0,a.jsx)(v.US,{size:14})})]}),(0,a.jsxs)("button",{className:"new-chat-button flex items-center gap-1.5",type:"button",onClick:()=>{let e;e=eC(),h(t=>[e,...t]),x(e.id),P(""),E("online"),M(!1)},children:[(0,a.jsx)(v.c1,{size:13,className:"shrink-0"}),(0,a.jsx)("span",{children:"New conversation"})]}),(0,a.jsxs)("div",{className:"history-heading",children:[(0,a.jsx)("span",{children:"Recent conversations"}),(0,a.jsx)("span",{children:u.length})]}),(0,a.jsx)("div",{className:"conversation-list",children:S?0===u.length?(0,a.jsx)("p",{className:"history-empty",children:"Your private conversations will appear here."}):u.slice().sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>(0,a.jsxs)("div",{className:`conversation-row ${e.id===p?"selected":""}`,children:[(0,a.jsxs)("button",{type:"button",className:"conversation-select",onClick:()=>{x(e.id),M(!1)},children:[(0,a.jsx)("span",{className:"conversation-title",children:e.title}),(0,a.jsx)("span",{className:"conversation-date",children:N(e.updatedAt)})]}),(0,a.jsx)("button",{type:"button",className:"conversation-delete flex items-center justify-center",onClick:t=>{t.stopPropagation();var s=e.id;if(h(e=>e.filter(e=>e.id!==s)),p===s){let e=u.find(e=>e.id!==s);x(e?.id??null)}},"aria-label":`Delete ${e.title}`,children:(0,a.jsx)(v.US,{size:12})})]},e.id)):(0,a.jsx)("p",{className:"history-empty",children:"Loading history…"})}),(0,a.jsxs)("div",{className:"sidebar-footer",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>{M(!1),F(!0)},className:"sidebar-settings-btn md:hidden flex items-center gap-1.5",children:[(0,a.jsx)(v.Ze,{size:14,className:"shrink-0"}),(0,a.jsxs)("span",{className:"truncate",children:["Preferences (",Z,"off"!==Q?` \xb7 ${Q.toUpperCase()}`:"",")"]})]}),(0,a.jsxs)("a",{className:"sidebar-console",href:"/operator",children:[(0,a.jsx)(v.t$,{size:13,className:"shrink-0"}),(0,a.jsx)("span",{children:"Operator console"}),(0,a.jsx)("b",{children:(0,a.jsx)(v.pT,{size:12})})]})]})]}),(0,a.jsxs)("main",{className:"chat-workspace",children:[(0,a.jsxs)("header",{className:"chat-header",children:[(0,a.jsxs)("div",{className:"chat-header-brand-group",children:[(0,a.jsx)("button",{type:"button",className:"mobile-menu-toggle flex items-center justify-center",onClick:()=>M(!0),"aria-label":"Open conversation menu",children:(0,a.jsx)(v.ZB,{size:16})}),(0,a.jsxs)("a",{href:"/chat",className:"chat-header-title",children:[(0,a.jsx)("span",{className:"chat-brand-mark",children:"S"}),(0,a.jsx)("span",{className:"font-bold tracking-widest text-xs hidden xs:inline",children:"SIDURI"})]})]}),(0,a.jsxs)("div",{className:"chat-header-actions flex items-center gap-1.5 sm:gap-2.5",children:[(0,a.jsxs)("button",{type:"button",onClick:()=>$(e=>!e),className:`connection-pill cursor-pointer transition-all focus-visible:ring-1 focus-visible:ring-[var(--siduri-border-ember)] outline-none ${U?"border-[var(--siduri-border-ember)] bg-[var(--siduri-tint-med)] text-[var(--siduri-ember-highlight)]":"hover:border-[var(--siduri-border-ember)] text-[var(--siduri-text-secondary)]"}`,"aria-label":"Toggle avatar presence","aria-expanded":U,title:U?"Disable Avatar Presence":"Enable Avatar Presence",children:[(0,a.jsx)("span",{className:`status-light ${U?"online":""}`}),(0,a.jsx)("span",{className:"text-xs",children:"Presence"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>F(!0),className:`connection-pill cursor-pointer transition-all md:hidden flex items-center gap-1.5 ${"off"!==Q||"hybrid"!==Z?"border-[var(--siduri-border-ember)] bg-[var(--siduri-tint-med)] text-[var(--siduri-ember-highlight)]":"hover:border-[var(--siduri-border-ember)] text-[var(--siduri-text-secondary)]"}`,"aria-label":"Open chat preferences",title:"Preferences & Subtitles",children:[(0,a.jsx)(v.Ze,{size:12,className:"shrink-0"}),(0,a.jsx)("span",{className:"text-xs font-mono font-medium tracking-wide",children:"hybrid"!==Z&&"off"!==Q?`${Z.slice(0,4)}\xb7${Q.slice(0,2).toUpperCase()}`:"hybrid"!==Z?Z:"off"!==Q?`CC:${Q.slice(0,2).toUpperCase()}`:"Options"})]}),(0,a.jsxs)("div",{className:`connection-pill hidden md:flex items-center gap-1 sm:gap-1.5 transition-all focus-within:ring-1 focus-within:ring-[var(--siduri-border-ember)] ${"off"!==Q?"border-[var(--siduri-border-ember)] bg-[var(--siduri-tint-med)] text-[var(--siduri-ember-highlight)]":"hover:border-[var(--siduri-border-ember)] text-[var(--siduri-text-secondary)]"}`,title:"Subtitle translation language",children:[(0,a.jsx)("span",{className:`status-light ${"off"!==Q?"online":""}`}),(0,a.jsx)("span",{className:"text-[10px] uppercase font-mono tracking-wider opacity-60",children:"Subtitles:"}),(0,a.jsxs)("select",{value:["off","en","ja","id","es","zh","ko","fr","de"].includes(Q)?Q:"custom-selected",onChange:e=>{let t=e.target.value;if("custom"===t){let e=prompt("Enter subtitle language code or name (e.g. it, ru, de, pt, vi):");if(e&&e.trim()){let t=e.trim().toLowerCase();ee(t);try{localStorage.setItem("siduri.chat.subtitleLanguage",t)}catch{}}}else if("custom-selected"!==t){ee(t);try{localStorage.setItem("siduri.chat.subtitleLanguage",t)}catch{}}},className:"bg-transparent text-xs text-[var(--siduri-text-primary)] font-medium outline-none cursor-pointer border-none p-0","aria-label":"Select subtitle language",children:[(0,a.jsx)("option",{value:"off",className:"bg-[#121214] text-white",children:"Subtitles: Off"}),(0,a.jsx)("option",{value:"en",className:"bg-[#121214] text-white",children:"English (EN)"}),(0,a.jsx)("option",{value:"ja",className:"bg-[#121214] text-white",children:"Japanese (JA)"}),(0,a.jsx)("option",{value:"id",className:"bg-[#121214] text-white",children:"Indonesian (ID)"}),(0,a.jsx)("option",{value:"es",className:"bg-[#121214] text-white",children:"Spanish (ES)"}),(0,a.jsx)("option",{value:"zh",className:"bg-[#121214] text-white",children:"Chinese (ZH)"}),(0,a.jsx)("option",{value:"ko",className:"bg-[#121214] text-white",children:"Korean (KO)"}),(0,a.jsx)("option",{value:"fr",className:"bg-[#121214] text-white",children:"French (FR)"}),(0,a.jsx)("option",{value:"de",className:"bg-[#121214] text-white",children:"German (DE)"}),!["off","en","ja","id","es","zh","ko","fr","de"].includes(Q)&&(0,a.jsx)("option",{value:"custom-selected",className:"bg-[#121214] text-white",children:Q.toUpperCase()}),(0,a.jsx)("option",{value:"custom",className:"bg-[#121214] text-white",children:"Other..."})]})]}),(0,a.jsxs)("span",{className:"connection-pill hidden lg:inline-flex",title:`Status: ${A}`,children:[(0,a.jsx)("span",{className:`status-light ${"online"===A?"online":""}`}),(0,a.jsx)("span",{className:"text-xs",children:A})]}),(0,a.jsxs)("div",{className:"connection-pill hidden md:flex items-center gap-1 sm:gap-1.5",title:"Operating interaction mode",children:[(0,a.jsx)("span",{className:"text-[10px] uppercase font-mono tracking-wider opacity-60",children:"Mode:"}),(0,a.jsxs)("select",{value:Z,onChange:e=>H(e.target.value),className:"bg-transparent text-xs text-[var(--siduri-text-primary)] font-medium outline-none cursor-pointer border-none p-0","aria-label":"Select interaction mode",children:[(0,a.jsx)("option",{value:"hybrid",className:"bg-[#121214] text-white",children:"Hybrid (Default)"}),(0,a.jsx)("option",{value:"teach",className:"bg-[#121214] text-white",children:"Teach"}),(0,a.jsx)("option",{value:"casual",className:"bg-[#121214] text-white",children:"Casual"})]})]})]})]}),ea&&!er&&(0,a.jsxs)("div",{"data-testid":"detected-self-banner",className:"bg-[#1c1814] border-b border-[var(--siduri-border-ember)] px-4 py-2.5 flex flex-wrap items-center justify-between gap-3 text-xs text-[#f1e6d0] z-20 shadow-md animate-fade-in",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,a.jsx)(v.qD,{size:18,className:"text-[var(--siduri-ember-highlight)] shrink-0"}),(0,a.jsxs)("span",{children:[(0,a.jsx)("strong",{children:".self file detected on path:"})," ",(0,a.jsx)("code",{className:"px-1.5 py-0.5 rounded bg-black/50 text-[var(--siduri-ember-highlight)] font-mono font-medium border border-[var(--siduri-border-subtle)]",children:ea.filename}),ea.alreadyInstalled?(0,a.jsx)("span",{className:"ml-1.5 text-[var(--siduri-text-muted)] text-[11px]",children:"(already imported)"}):null," — Import to companion ethos & directives?"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 ml-auto",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{en(!0),ea.filename&&sessionStorage.setItem(`siduri.dismissedSelf:${ea.filename}`,"true")},className:"px-2.5 py-1 rounded text-[var(--siduri-text-muted)] hover:text-white hover:bg-white/5 transition-colors cursor-pointer",children:"Dismiss"}),(0,a.jsx)("button",{type:"button",onClick:function(){if(!ea?.parsed)return;"teach"!==Z&&(H("teach"),J("teach"));let e=ew;e||(e=eC(),h(t=>[e,...t]),x(e.id));let t=eS(ea.parsed);if(!t)return;let s=t.manifest?.identity?.name||t.manifest?.name||"persona",a=y(),i=y(),r=`I've reviewed **${ea.filename}** detected on your companion path and compiled the persona **"${s}"**.
33
33
 
@@ -9,7 +9,7 @@ c:I[6886,[],"default",1]
9
9
  :HL["/_next/static/css/ceeb8e5596664b11.css","style"]
10
10
  :HL["https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","style"]
11
11
  7:X
12
- 0:{"P":null,"c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"TAssFHX71jXsDINzGLNGT"}
12
+ 0:{"P":null,"c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"6myq7R-xRemzP7dQD6m1Q"}
13
13
  7:C
14
14
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]
15
15
  d:I[3366,[],"IconMark"]
@@ -11,7 +11,7 @@ c:I[356,[],""]
11
11
  6:X
12
12
  e:X
13
13
  e:C
14
- 0:{"buildId":"TAssFHX71jXsDINzGLNGT","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Siduri — Local-First Companion"}],["$","meta","1",{"name":"description","content":"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?7715e5163ea8ac02","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L9","6",{}]]}]}]}],null]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]}]]}]]}],"isPartial":"$@f","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@10","rootVaryParams":null,"needsRuntimeRequest":"$@11"}
14
+ 0:{"buildId":"6myq7R-xRemzP7dQD6m1Q","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Siduri — Local-First Companion"}],["$","meta","1",{"name":"description","content":"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?7715e5163ea8ac02","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$L9","6",{}]]}]}]}],null]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]}]]}]]}],"isPartial":"$@f","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@10","rootVaryParams":null,"needsRuntimeRequest":"$@11"}
15
15
  4:null
16
16
  6:300
17
17
  11:true
@@ -1,3 +1,3 @@
1
1
  :HL["/_next/static/css/ceeb8e5596664b11.css","style"]
2
2
  :HL["https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","style"]
3
- 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"TAssFHX71jXsDINzGLNGT"}
3
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"6myq7R-xRemzP7dQD6m1Q"}
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"TAssFHX71jXsDINzGLNGT\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="h-full antialiased dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"/><link rel="stylesheet" href="/_next/static/css/ceeb8e5596664b11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9073f434bc17ce16.js"/><script src="/_next/static/chunks/563b947f-8e2871a2ab7cd91e.js" async=""></script><script src="/_next/static/chunks/136-1d10af93b770a1c8.js" async=""></script><script src="/_next/static/chunks/main-app-9e6a144626e5a5b9.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0b0b0e"/><title>Siduri — Local-First Companion</title><meta name="description" content="Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."/><link rel="icon" href="/favicon.ico?7715e5163ea8ac02" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" href="/apple-touch-icon.png"/><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Noto+Serif+JP:wght@400;500;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-9073f434bc17ce16.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8766,[],\"\"]\n3:I[356,[],\"\"]\n4:I[5127,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[5127,[],\"ViewportBoundary\"]\na:I[5127,[],\"MetadataBoundary\"]\nc:I[6886,[],\"default\",1]\n:HL[\"/_next/static/css/ceeb8e5596664b11.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"style\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ceeb8e5596664b11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full antialiased dark\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500\u0026family=Noto+Sans+JP:wght@400;500;700\u0026family=Noto+Serif+JP:wght@400;500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"6myq7R-xRemzP7dQD6m1Q\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0b0b0e\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[3366,[],\"IconMark\"]\n6:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Siduri — Local-First Companion\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?7715e5163ea8ac02\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}],[\"$\",\"$Ld\",\"6\",{}]]\n"])</script></body></html>
@@ -9,7 +9,7 @@ c:I[6886,[],"default",1]
9
9
  :HL["/_next/static/css/ceeb8e5596664b11.css","style"]
10
10
  :HL["https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","style"]
11
11
  7:X
12
- 0:{"P":null,"c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"TAssFHX71jXsDINzGLNGT"}
12
+ 0:{"P":null,"c":["","_not-found",""],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$7"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],null]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"6myq7R-xRemzP7dQD6m1Q"}
13
13
  7:C
14
14
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]
15
15
  d:I[3366,[],"IconMark"]
@@ -1,7 +1,7 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[8766,[],""]
3
3
  3:I[356,[],""]
4
- 4:I[3592,["426","static/chunks/426-9f7f6e7fffd4c3c3.js","457","static/chunks/app/chat/page-c2c01bacc6562e40.js"],"default"]
4
+ 4:I[3592,["426","static/chunks/426-9f7f6e7fffd4c3c3.js","457","static/chunks/app/chat/page-4d90641844cd9fed.js"],"default"]
5
5
  5:I[5127,[],"OutletBoundary"]
6
6
  6:"$Sreact.suspense"
7
7
  9:I[5127,[],"ViewportBoundary"]
@@ -10,7 +10,7 @@ d:I[6886,[],"default",1]
10
10
  :HL["/_next/static/css/ceeb8e5596664b11.css","style"]
11
11
  :HL["https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","style"]
12
12
  8:X
13
- 0:{"P":null,"c":["","chat",""],"q":"","i":false,"f":[[["",{"children":["chat",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{}],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"TAssFHX71jXsDINzGLNGT"}
13
+ 0:{"P":null,"c":["","chat",""],"q":"","i":false,"f":[[["",{"children":["chat",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{}],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[null,["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"6myq7R-xRemzP7dQD6m1Q"}
14
14
  8:C
15
15
  a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]
16
16
  e:I[3366,[],"IconMark"]
@@ -1,3 +1,3 @@
1
1
  :HL["/_next/static/css/ceeb8e5596664b11.css","style"]
2
2
  :HL["https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","style"]
3
- 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"TAssFHX71jXsDINzGLNGT"}
3
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"chat","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"6myq7R-xRemzP7dQD6m1Q"}
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[3592,["426","static/chunks/426-9f7f6e7fffd4c3c3.js","457","static/chunks/app/chat/page-c2c01bacc6562e40.js"],"default"]
2
+ 2:I[3592,["426","static/chunks/426-9f7f6e7fffd4c3c3.js","457","static/chunks/app/chat/page-4d90641844cd9fed.js"],"default"]
3
3
  3:I[5127,[],"OutletBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  8:I[5127,[],"ViewportBoundary"]
@@ -12,7 +12,7 @@ d:I[356,[],""]
12
12
  7:X
13
13
  f:X
14
14
  f:C
15
- 0:{"buildId":"TAssFHX71jXsDINzGLNGT","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],null,["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":"$@6","staleTime":"$7","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$L8",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Siduri — Local-First Companion"}],["$","meta","1",{"name":"description","content":"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?7715e5163ea8ac02","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$La","6",{}]]}]}]}],null]}],"isPartial":"$@b","staleTime":"$7","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}]}]]}],"isPartial":"$@e","staleTime":"$7","varyParams":"$f"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":"$@10","staleTime":"$7","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@11","rootVaryParams":null,"needsRuntimeRequest":"$@12"}
15
+ 0:{"buildId":"6myq7R-xRemzP7dQD6m1Q","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],null,["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":"$@6","staleTime":"$7","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$L8",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content"}],["$","meta","2",{"name":"theme-color","content":"#0b0b0e"}]]}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Siduri — Local-First Companion"}],["$","meta","1",{"name":"description","content":"Siduri — a local-first companion with explicit memory, grounded knowledge, and optional presence."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?7715e5163ea8ac02","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","5",{"rel":"apple-touch-icon","href":"/apple-touch-icon.png"}],["$","$La","6",{}]]}]}]}],null]}],"isPartial":"$@b","staleTime":"$7","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}]}]]}],"isPartial":"$@e","staleTime":"$7","varyParams":"$f"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ceeb8e5596664b11.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"h-full antialiased dark","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Noto+Sans+JP:wght@400;500;700&family=Noto+Serif+JP:wght@400;500;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"className":"min-h-full flex flex-col bg-[#0b0b0e] text-[#eee8df] selection:bg-[#d99a68]/30 selection:text-[#f4c28d]","children":["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}],"isPartial":"$@10","staleTime":"$7","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@11","rootVaryParams":null,"needsRuntimeRequest":"$@12"}
16
16
  5:null
17
17
  7:300
18
18
  12:true