@vxnus/siduri 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtin-manifests.js +7 -1
- package/dist/configurators/body.js +26 -10
- package/dist/configurators.test.js +8 -2
- package/dist/generator.js +12 -3
- package/dist/generator.test.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/release-check.js +2 -2
- package/dist/web-dist/404/index.html +1 -1
- package/dist/web-dist/404.html +1 -1
- package/dist/web-dist/__next.__PAGE__.txt +1 -1
- package/dist/web-dist/__next._full.txt +1 -1
- package/dist/web-dist/__next._tree.txt +1 -1
- package/dist/web-dist/_next/static/chunks/1eusi7dzngpy3.js +30 -0
- package/dist/web-dist/_not-found/__next._full.txt +1 -1
- package/dist/web-dist/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web-dist/_not-found/__next._tree.txt +1 -1
- package/dist/web-dist/_not-found/index.html +1 -1
- package/dist/web-dist/_not-found/index.txt +1 -1
- package/dist/web-dist/chat/__next._full.txt +2 -2
- package/dist/web-dist/chat/__next._tree.txt +1 -1
- package/dist/web-dist/chat/__next.chat.__PAGE__.txt +2 -2
- package/dist/web-dist/chat/index.html +1 -1
- package/dist/web-dist/chat/index.txt +2 -2
- package/dist/web-dist/index.html +1 -1
- package/dist/web-dist/index.txt +1 -1
- package/dist/web-dist/operator/__next._full.txt +1 -1
- package/dist/web-dist/operator/__next._tree.txt +1 -1
- package/dist/web-dist/operator/__next.operator.__PAGE__.txt +1 -1
- package/dist/web-dist/operator/index.html +1 -1
- package/dist/web-dist/operator/index.txt +1 -1
- package/package.json +1 -1
- package/dist/web-dist/_next/static/chunks/39nefv-hczfy7.js +0 -30
- package/dist/web-dist/live2d/akaituno/akaituno.8192/texture_00.png +0 -0
- package/dist/web-dist/live2d/akaituno/akaituno.cdi3.json +0 -296
- package/dist/web-dist/live2d/akaituno/akaituno.moc3 +0 -0
- package/dist/web-dist/live2d/akaituno/akaituno.model3.json +0 -42
- package/dist/web-dist/live2d/akaituno/akaituno.physics3.json +0 -839
- package/dist/web-dist/live2d/akaituno/eye_color.exp3.json +0 -12
- package/dist/web-dist/live2d/akaituno/eyes_zetubou.exp3.json +0 -12
- package/dist/web-dist/live2d/akaituno/face_aozame.exp3.json +0 -12
- package/dist/web-dist/live2d/akaituno/hair_open.exp3.json +0 -12
- /package/dist/web-dist/_next/static/{i9YV06HVZxr6wJWWxhUhB → fySnDRfSgiBzStXXyXjTp}/_buildManifest.js +0 -0
- /package/dist/web-dist/_next/static/{i9YV06HVZxr6wJWWxhUhB → fySnDRfSgiBzStXXyXjTp}/_clientMiddlewareManifest.js +0 -0
- /package/dist/web-dist/_next/static/{i9YV06HVZxr6wJWWxhUhB → fySnDRfSgiBzStXXyXjTp}/_ssgManifest.js +0 -0
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12650,e=>{"use strict";var t=e.i(7863),r=e.i(61507),a=e.i(51523);function i({onSelectPrompt:e,className:r=""}){return(0,t.jsxs)("div",{className:`chat-empty-state ${r}`,"data-testid":"preferences-starter",children:[(0,t.jsx)("div",{className:"siduri-orb",children:"✦"}),(0,t.jsx)("h2",{children:"Teach Siduri your preferences."}),(0,t.jsx)("p",{children:"Choose a starting point, replace the blanks, and send it. Nothing becomes memory until you approve the receipt."}),(0,t.jsxs)("div",{className:"starter-prompts onboarding-prompts",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>e("Call me [preferred name]."),children:[(0,t.jsx)("span",{children:"Identity"}),"Preferred name or title"]}),(0,t.jsxs)("button",{type:"button",onClick:()=>e("My timezone is [timezone] and my preferred language is [language]."),children:[(0,t.jsx)("span",{children:"Localization"}),"Timezone and language"]}),(0,t.jsxs)("button",{type:"button",onClick:()=>e("My preferred response style is [concise / detailed / technical]."),children:[(0,t.jsx)("span",{children:"Response style"}),"Tone and verbosity"]}),(0,t.jsxs)("button",{type:"button",onClick:()=>e("I am interested in [topics or domains of interest]."),children:[(0,t.jsx)("span",{children:"Knowledge"}),"Topics of interest"]})]}),(0,t.jsx)("p",{className:"onboarding-privacy",children:"Teach Siduri preferences explicitly. Information is stored in private memory only after you approve the receipt."})]})}function s(e){return"number"!=typeof e||isNaN(e)||e<0?0:e>1?1:e}class n{expression="neutral";action="idle";state="idle";speechId;lipSyncValue=0;reducedMotion=!1;actionStartTime=0;stateStartTime=0;lastUpdateTime=Date.now();constructor(e){e&&this.updateConfig(e)}updateConfig(e){e.expression&&e.expression!==this.expression&&(this.expression=e.expression),e.action&&e.action!==this.action&&(this.action=e.action,this.actionStartTime=Date.now()),e.state&&e.state!==this.state&&(this.state=e.state,this.stateStartTime=Date.now()),void 0!==e.speechId&&(this.speechId=e.speechId),void 0!==e.lipSyncValue&&(this.lipSyncValue=s(e.lipSyncValue)),void 0!==e.reducedMotion&&(this.reducedMotion=e.reducedMotion)}setReducedMotion(e){this.reducedMotion=e}setExpression(e){this.expression=e}setAction(e){this.action=e,this.actionStartTime=Date.now()}setState(e){this.state=e,this.stateStartTime=Date.now()}setLipSync(e){this.lipSyncValue=s(e)}calculateFrameParameters(e=Date.now()){this.lastUpdateTime,this.lastUpdateTime=e;let t=this.reducedMotion?.2:(Math.sin(e/1800)+1)*.5,r=this.reducedMotion?0:2.5*Math.sin(e/2400),a=this.reducedMotion?0:1.8*Math.cos(e/3200),i=this.reducedMotion?0:1.2*Math.sin(e/4e3),n=function(e){if(!e)return{angleX:0,angleY:0,angleZ:0,bodyAngleX:0,eyeBallX:0,eyeBallY:0,speed:1};switch(e.toLowerCase().trim()){case"nod":return{angleX:0,angleY:-12,angleZ:2,bodyAngleX:0,eyeBallX:0,eyeBallY:-.2,speed:2.5};case"wave":return{angleX:8,angleY:4,angleZ:-5,bodyAngleX:5,eyeBallX:.2,eyeBallY:.1,speed:1.8};case"listen":return{angleX:-5,angleY:2,angleZ:4,bodyAngleX:-2,eyeBallX:.1,eyeBallY:.1,speed:1};case"talk":return{angleX:2,angleY:-2,angleZ:0,bodyAngleX:0,eyeBallX:0,eyeBallY:0,speed:1.5};default:return{angleX:0,angleY:0,angleZ:0,bodyAngleX:0,eyeBallX:0,eyeBallY:0,speed:1}}}(this.action),o=(e-this.actionStartTime)/1e3,l=0,c=0,d=0,u=0;this.reducedMotion?"nod"===this.action?c=.5*n.angleY:"wave"===this.action?(l=.5*n.angleX,u=.5*n.bodyAngleX):"listen"===this.action&&(d=.5*n.angleZ,l=.5*n.angleX):"nod"===this.action?c=Math.sin(o*Math.PI*3)*n.angleY:"wave"===this.action?(d=Math.sin(o*Math.PI*2.4)*n.angleZ,l=n.angleX,u=n.bodyAngleX):"listen"===this.action?(d=n.angleZ,l=n.angleX):"talk"===this.action&&(c=2*Math.sin(4*o));let m=0;if("speaking"===this.state){let t=function(e,t){if("number"==typeof t&&!isNaN(t)&&t>0)return s(t);let r=e/1e3;return s(Math.max(0,.45*Math.sin(14*r)+.25*Math.sin(22*r)+.2*Math.sin(8*r)+.1))}(e,this.lipSyncValue);m=this.reducedMotion?.6*t:t}let h=e%4e3/4e3,p=1;return h>.95&&(p=Math.abs(Math.sin((h-.95)/.05*Math.PI-Math.PI/2))),{mouthOpenY:m,angleX:r+l,angleY:a+c,angleZ:i+d,bodyAngleX:u,breath:t,eyeOpenL:p,eyeOpenR:p}}reset(){this.expression="neutral",this.action="idle",this.state="idle",this.lipSyncValue=0,this.speechId=void 0}}async function o(e="/live2d/live2dcubismcore.min.js"){return window.Live2DCubismCore?window.Live2DCubismCore:new Promise((t,r)=>{let a=document.querySelector(`script[src="${e}"]`);if(a)return window.Live2DCubismCore?t(window.Live2DCubismCore):(a.addEventListener("load",()=>t(window.Live2DCubismCore)),void a.addEventListener("error",t=>r(Error(`Failed to load Cubism Core from ${e}: ${t}`))));let i=document.createElement("script");i.src=e,i.async=!0,i.onload=()=>{window.Live2DCubismCore?t(window.Live2DCubismCore):r(Error("Live2DCubismCore global not found after script load"))},i.onerror=()=>{let e="https://cubism.live2d.com/sdk-web/cubismcore/live2dcubismcore.min.js";console.warn(`[Live2D] Failed to load local Cubism Core, attempting fallback: ${e}`);let a=document.createElement("script");a.src=e,a.async=!0,a.onload=()=>{window.Live2DCubismCore?t(window.Live2DCubismCore):r(Error("Live2DCubismCore global not found after fallback load"))},a.onerror=e=>r(Error(`Failed to load Cubism Core from both local and remote sources: ${e}`)),document.head.appendChild(a)},document.head.appendChild(i)})}async function l(e){let t=e.lastIndexOf("/"),r=-1!==t?e.slice(0,t+1):"",a=await fetch(e);if(!a.ok)throw Error(`Failed to fetch model manifest from ${e} (${a.status})`);let i=await a.json();if(!i.FileReferences||!i.FileReferences.Moc)throw Error(`Invalid model3.json: missing Moc file reference in ${e}`);let s=r+i.FileReferences.Moc,n=await fetch(s);if(!n.ok)throw Error(`Failed to fetch .moc3 file from ${s} (${n.status})`);let o=await n.arrayBuffer(),l=(i.FileReferences.Textures||[]).map(e=>r+e),c=await Promise.all(l.map(e=>new Promise((t,r)=>{let a=new Image;a.crossOrigin="anonymous",a.onload=()=>t(a),a.onerror=t=>r(Error(`Failed to load texture from ${e}`)),a.src=e}))),d=new Map;return i.FileReferences.Expressions&&i.FileReferences.Expressions.length>0&&await Promise.all(i.FileReferences.Expressions.map(async e=>{try{let t=r+e.File,a=await fetch(t);if(a.ok){let t=await a.json();d.set(e.File,t),e.Name&&d.set(e.Name,t)}}catch{}})),{model3:i,mocBuffer:o,textures:c,expressions:d,basePath:r}}let c=`
|
|
2
|
-
attribute vec2 a_position;
|
|
3
|
-
attribute vec2 a_texCoord;
|
|
4
|
-
uniform mat4 u_matrix;
|
|
5
|
-
varying vec2 v_texCoord;
|
|
6
|
-
void main() {
|
|
7
|
-
gl_Position = u_matrix * vec4(a_position.x, a_position.y, 0.0, 1.0);
|
|
8
|
-
v_texCoord = vec2(a_texCoord.x, 1.0 - a_texCoord.y);
|
|
9
|
-
}
|
|
10
|
-
`,d=`
|
|
11
|
-
precision mediump float;
|
|
12
|
-
uniform sampler2D u_texture;
|
|
13
|
-
uniform float u_opacity;
|
|
14
|
-
varying vec2 v_texCoord;
|
|
15
|
-
void main() {
|
|
16
|
-
vec4 color = texture2D(u_texture, v_texCoord);
|
|
17
|
-
gl_FragColor = color * u_opacity;
|
|
18
|
-
}
|
|
19
|
-
`,u=`
|
|
20
|
-
precision mediump float;
|
|
21
|
-
uniform sampler2D u_texture;
|
|
22
|
-
varying vec2 v_texCoord;
|
|
23
|
-
void main() {
|
|
24
|
-
vec4 color = texture2D(u_texture, v_texCoord);
|
|
25
|
-
if (color.a < 0.1) {
|
|
26
|
-
discard;
|
|
27
|
-
}
|
|
28
|
-
gl_FragColor = vec4(1.0);
|
|
29
|
-
}
|
|
30
|
-
`;function m(e,t,r){let a=e.createShader(t);if(!a)throw Error("Failed to create shader");if(e.shaderSource(a,r),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 h{canvas;gl=null;program=null;maskProgram=null;vertexBuffer=null;uvBuffer=null;indexBuffer=null;aPositionLocation=-1;aTexCoordLocation=-1;uMatrixLocation=null;uTextureLocation=null;uOpacityLocation=null;maskAPositionLocation=-1;maskATexCoordLocation=-1;maskUMatrixLocation=null;maskUTextureLocation=null;textures=[];moc=null;model=null;core=null;paramIndices=new Map;isDisposed=!1;constructor(e){this.canvas=e}modelBounds={minX:-.39,maxX:.4,minY:-.98,maxY:.18,width:.79,height:1.16,centerX:.006,centerY:-.4};initialize(e,t){this.core=e;let r={alpha:!0,premultipliedAlpha:!0,preserveDrawingBuffer:!1,antialias:!0,stencil:!0},a=this.canvas.getContext("webgl",r)||this.canvas.getContext("experimental-webgl",r)||this.canvas.getContext("webgl2",r);if(!a)throw Error("WebGL is not supported in this browser environment");this.gl=a;let i=m(a,a.VERTEX_SHADER,c),s=m(a,a.FRAGMENT_SHADER,d),n=a.createProgram();if(!n)throw Error("Failed to create WebGL program");if(a.attachShader(n,i),a.attachShader(n,s),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=m(a,a.FRAGMENT_SHADER,u),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 h=this.model.parameters.ids;for(let e=0;e<h.length;e++)this.paramIndices.set(h[e],e);this.initializeNeutralMouth(),this.model.update(),this.calculateModelBounds()}initializeNeutralMouth(){this.model&&(this.setParamDirect("ParamMouthOpenY",0),this.setParamDirect("ParamMouthForm",0))}setParamDirect(e,t){let r=this.paramIndices.get(e);if(void 0!==r&&this.model){let e=this.model.parameters.minimumValues[r],a=this.model.parameters.maximumValues[r];this.model.parameters.values[r]=Math.max(e,Math.min(a,t))}}calculateModelBounds(){if(!this.model)return;let e=this.model.drawables,t=e.count,r=1/0,a=-1/0,i=1/0,s=-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<r&&(r=n),n>a&&(a=n),o<i&&(i=o),o>s&&(s=o)}}r!==1/0&&a!==-1/0&&i!==1/0&&s!==-1/0&&(this.modelBounds={minX:r,maxX:a,minY:i,maxY:s,width:a-r,height:s-i,centerX:(r+a)/2,centerY:(i+s)/2})}getModelBounds(){return{...this.modelBounds}}setParam(e,t,r=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)*r}}render(e,t=Date.now()){let r;if(this.isDisposed||!this.gl||!this.model||!this.program)return;let a=this.gl,i=this.canvas.width,s=this.canvas.height;if(0===i||0===s)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,s),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/s,c=this.modelBounds.width,d=this.modelBounds.height,u=this.modelBounds.centerX,m=this.modelBounds.centerY,h=(r=l>=c/d?1.84/d:1.84/c*l)/l,p=new Float32Array([h,0,0,0,0,r,0,0,0,0,1,0,-u*h,-m*r,0,1]);a.uniformMatrix4fv(this.uMatrixLocation,!1,p),a.uniform1i(this.uTextureLocation,0);let f=this.model.drawables,x=f.count,v=f.renderOrders,g=[];for(let e=0;e<x;e++)g.push(e);g.sort((e,t)=>v[e]-v[t]),a.enableVertexAttribArray(this.aPositionLocation),a.enableVertexAttribArray(this.aTexCoordLocation);let b=(e,t)=>{let r=void 0!==t?t:f.opacities[e];if(r<=.001)return;let i=f.textureIndices[e],s=this.textures[i];if(!s)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,s),a.uniform1f(this.uOpacityLocation,r);let n=f.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=f.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=f.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)},y=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=f.textureIndices[e],r=this.textures[t];if(!r)return;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,r);let i=f.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 s=f.vertexUvs[e];a.bindBuffer(a.ARRAY_BUFFER,this.uvBuffer),a.bufferData(a.ARRAY_BUFFER,s,a.DYNAMIC_DRAW),a.vertexAttribPointer(this.maskATexCoordLocation,2,a.FLOAT,!1,0,0);let n=f.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)},E=-1;for(let e of g)if(!(f.opacities[e]<=.001))if(f.maskCounts[e]>0){let t=f.masks[e][0];t!==E&&(E=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),y(t),a.colorMask(!0,!0,!0,!0)),a.stencilFunc(a.EQUAL,1,255),a.stencilOp(a.KEEP,a.KEEP,a.KEEP),b(e)}else -1!==E&&(a.disable(a.STENCIL_TEST),E=-1),b(e);-1!==E&&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 p({modelUrl:e="/live2d/akaituno/akaituno.model3.json",expression:a="neutral",action:i="idle",state:s="idle",speechId:c,lipSyncValue:d,durationMs:u,className:m="",onStatusChange:f}){let x=(0,r.useRef)(null),v=(0,r.useRef)(null),g=(0,r.useRef)(new n({expression:a,action:i,state:s,speechId:c,lipSyncValue:d,durationMs:u})),b=(0,r.useRef)(null),y=(0,r.useRef)(null),[E,P]=(0,r.useState)("loading"),[w,A]=(0,r.useState)(null),[_,j]=(0,r.useState)(0);return(0,r.useEffect)(()=>{if(!window.matchMedia)return;let e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=()=>{g.current.setReducedMotion(e.matches)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,r.useEffect)(()=>{g.current.updateConfig({expression:a,action:i,state:s,speechId:c,lipSyncValue:d,durationMs:u})},[a,i,s,c,d,u]),(0,r.useEffect)(()=>{let t=!1,r=null;async function a(){if(v.current&&x.current){P("loading"),f?.("loading"),A(null);try{let a=await o();if(t)return;let i=await l(e);if(t)return;let s=v.current;if(!s)return;let n=new h(s);n.initialize(a,i),b.current=n;let c=()=>{if(!x.current||!v.current)return;let e=x.current.getBoundingClientRect();if(e.width<=0||e.height<=0)return;let t=Math.min(window.devicePixelRatio||1,2),r=Math.max(1,Math.floor(e.width*t)),a=Math.max(1,Math.floor(e.height*t));(v.current.width!==r||v.current.height!==a)&&(v.current.width=r,v.current.height=a)};c(),(r=new ResizeObserver(c)).observe(x.current);let d=()=>{t||(b.current&&b.current.render(g.current,performance.now()),y.current=requestAnimationFrame(d))};y.current=requestAnimationFrame(d),P("ready"),f?.("ready")}catch(r){if(t)return;let e=r?.message||"Failed to initialize Live2D avatar";console.warn("[AvatarCanvas] Initialization error:",r),P("error"),A("Avatar unavailable in this browser."),f?.("error",e)}}}a();let i=v.current,s=e=>{e.preventDefault(),console.warn("[AvatarCanvas] WebGL context lost"),y.current&&cancelAnimationFrame(y.current),P("error"),A("WebGL context lost.")},n=()=>{console.log("[AvatarCanvas] WebGL context restored, re-initializing..."),a()};return i&&(i.addEventListener("webglcontextlost",s,!1),i.addEventListener("webglcontextrestored",n,!1)),()=>{t=!0,y.current&&(cancelAnimationFrame(y.current),y.current=null),r&&r.disconnect(),i&&(i.removeEventListener("webglcontextlost",s),i.removeEventListener("webglcontextrestored",n)),b.current&&(b.current.dispose(),b.current=null)}},[e,_,f]),(0,t.jsxs)("div",{ref:x,"data-testid":"avatar-canvas-container",className:`relative w-full h-full min-h-0 flex items-center justify-center overflow-hidden bg-transparent ${m}`,"aria-label":"Live2D Companion Presence",children:[(0,t.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"===E?"opacity-100":"opacity-0"}`}),"loading"===E&&(0,t.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,t.jsx)("div",{className:"siduri-glyph w-10 h-10 text-base animate-pulse motion-reduce:animate-none",children:"✦"}),(0,t.jsx)("span",{className:"text-[11px] font-mono tracking-widest uppercase text-[var(--siduri-ember-light)]",children:"Initializing Presence..."})]}),"error"===E&&(0,t.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,t.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,t.jsx)("p",{className:"text-xs font-sans text-[var(--siduri-text-secondary)] mb-1",children:w||"Avatar unavailable in this browser."}),(0,t.jsx)("span",{className:"text-[10px] font-mono text-[var(--siduri-text-dim)] mb-3",children:"Conversational text mode remains active"}),(0,t.jsx)("button",{type:"button",onClick:()=>j(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 f=e.i(94108);let x="siduri.chat.conversations.v1";function v(){return"u">typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`${Date.now()}-${Math.random()}`}function g(e){return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit"}).format(e)}e.s(["default",0,function(){let[e,s]=(0,r.useState)([]),[n,o]=(0,r.useState)(null),[l,c]=(0,r.useState)(""),[d,u]=(0,r.useState)("connecting"),[m,h]=(0,r.useState)(!1),[b,y]=(0,r.useState)(!1),[E,P]=(0,r.useState)(!1),[w,A]=(0,r.useState)(!1),[_,j]=(0,r.useState)(null),T=(0,r.useRef)(null),L=(0,r.useRef)(null),R=(0,r.useMemo)(()=>e.find(e=>e.id===n)??null,[n,e]);function C(){return{id:v(),title:"New conversation",messages:[],updatedAt:Date.now()}}function N(e,t){s(r=>r.map(r=>r.id===e?t(r):r))}async function M(e){e.preventDefault();let t=l.trim();if(!t||m)return;if(/\[[^\]]+\]/.test(t))return void u("replace the blanks first");let r=R;r||(r=C(),s(e=>[r,...e]),o(r.id));let a={id:v(),role:"user",content:t,createdAt:Date.now()},i=[...r.messages,a],n=0===r.messages.length?t.slice(0,42):r.title;N(r.id,e=>({...e,title:n,messages:i,updatedAt:Date.now()})),c(""),h(!0),u("thinking");try{let e=await (0,f.postJson)("/chat",{id:"default",message:t,role:"VIEWER",history:r.messages.slice(-20).map(e=>({role:e.role,content:e.content}))});if("error"in e)throw Error(e.error);let a=e.response,i=e.metadata?.memory_proposals,s=e.metadata?.behavioral_proposals,n={id:v(),role:"assistant",content:a.subtitle_en,spokenJa:a.spoken_ja,evidenceIds:a.evidence_ids,memoryProposals:i,behavioralProposals:s,createdAt:Date.now()};N(r.id,e=>({...e,messages:[...e.messages,n],updatedAt:Date.now()}));let o=e.metadata?.events?.filter(e=>"avatar"===e.kind&&("APPROVED"===e.approval||!e.approval));if(o&&o.length>0){let t=o[o.length-1],r=e.response?.speech_id;L.current&&clearTimeout(L.current),j({eventId:t.event_id,expression:t.expression||"neutral",action:t.action||"talk",state:"speaking",speechId:r,durationMs:t.durationMs});let a=t.durationMs||4500;L.current=setTimeout(()=>{j(e=>e?{...e,state:"idle",action:"idle"}:null)},a)}u("online")}catch(t){let e={id:v(),role:"assistant",content:`I couldn’t reach the orchestrator. ${String(t)}`,createdAt:Date.now()};N(r.id,t=>({...t,messages:[...t.messages,e],updatedAt:Date.now()})),u("offline")}finally{h(!1)}}(0,r.useEffect)(()=>()=>{L.current&&clearTimeout(L.current)},[]),(0,r.useEffect)(()=>{let e=function(){try{let e=JSON.parse(window.localStorage.getItem(x)??"[]");return Array.isArray(e)?e:[]}catch{return[]}}();s(e),o(e[0]?.id??null),y(!0),(0,f.fetchApi)("/health").then(()=>u("online")).catch(()=>u("offline"))},[]),(0,r.useEffect)(()=>{b&&window.localStorage.setItem(x,JSON.stringify(e))},[e,b]),(0,r.useEffect)(()=>{T.current?.scrollTo({top:T.current.scrollHeight,behavior:"smooth"})},[n,R?.messages.length,m]);let S=R?.messages??[],D=S.at(-1)?.evidenceIds?.length??0;async function B(e,t,r){if(R)try{await (0,f.postJson)(`/memory/proposals/${r}`,{id:t,companionId:"default"});let a="approve"===r?"approved":"rejected";N(R.id,r=>({...r,messages:r.messages.map(r=>r.id===e&&r.memoryProposals?{...r,memoryProposals:r.memoryProposals.map(e=>e.proposal_id===t?{...e,status:a}:e)}:r)}))}catch(e){console.error(e)}}async function k(e,t,r){if(R)try{await (0,f.postJson)(`/memory/behavioral/${r}`,{id:t,companionId:"default"});let a="approve"===r?"confirmed":"rejected";N(R.id,r=>({...r,messages:r.messages.map(r=>r.id===e&&r.behavioralProposals?{...r,behavioralProposals:r.behavioralProposals.map(e=>e.directive_id===t?{...e,status:a}:e)}:r)}))}catch(e){console.error(e)}}return(0,t.jsxs)("div",{className:`chat-app ${E?"sidebar-collapsed":""}`,children:[(0,t.jsxs)("aside",{className:"chat-sidebar","aria-label":"Conversation history",children:[(0,t.jsxs)("div",{className:"chat-sidebar-top",children:[(0,t.jsxs)("a",{className:"chat-brand",href:"/chat",children:[(0,t.jsx)("span",{className:"chat-brand-mark",children:"S"}),(0,t.jsx)("span",{children:"SIDURI"})]}),(0,t.jsx)("button",{className:"sidebar-collapse",type:"button",onClick:()=>P(e=>!e),"aria-label":E?"Expand sidebar":"Collapse sidebar",children:E?"→":"←"})]}),(0,t.jsxs)("button",{className:"new-chat-button",type:"button",onClick:function(){let e=C();s(t=>[e,...t]),o(e.id),c(""),u("online")},children:[(0,t.jsx)("span",{children:"+"})," New conversation"]}),(0,t.jsxs)("div",{className:"history-heading",children:[(0,t.jsx)("span",{children:"Recent conversations"}),(0,t.jsx)("span",{children:e.length})]}),(0,t.jsx)("div",{className:"conversation-list",children:b?0===e.length?(0,t.jsx)("p",{className:"history-empty",children:"Your private conversations will appear here."}):e.slice().sort((e,t)=>t.updatedAt-e.updatedAt).map(r=>(0,t.jsxs)("div",{className:`conversation-row ${r.id===n?"selected":""}`,children:[(0,t.jsxs)("button",{type:"button",className:"conversation-select",onClick:()=>o(r.id),children:[(0,t.jsx)("span",{className:"conversation-title",children:r.title}),(0,t.jsx)("span",{className:"conversation-date",children:g(r.updatedAt)})]}),(0,t.jsx)("button",{type:"button",className:"conversation-delete",onClick:()=>(function(t){if(s(e=>e.filter(e=>e.id!==t)),n===t){let r=e.find(e=>e.id!==t);o(r?.id??null)}})(r.id),"aria-label":`Delete ${r.title}`,children:"×"})]},r.id)):(0,t.jsx)("p",{className:"history-empty",children:"Loading history…"})}),(0,t.jsx)("div",{className:"sidebar-footer",children:(0,t.jsxs)("a",{className:"sidebar-console",href:"/operator",children:[(0,t.jsx)("span",{children:"⌘"}),(0,t.jsx)("span",{children:"Operator console"}),(0,t.jsx)("b",{children:"↗"})]})})]}),(0,t.jsxs)("main",{className:"chat-workspace",children:[(0,t.jsxs)("div",{className:"chat-top-status flex items-center gap-2.5",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>A(e=>!e),className:`connection-pill cursor-pointer transition-all focus-visible:ring-1 focus-visible:ring-[var(--siduri-border-ember)] outline-none ${w?"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":w,title:w?"Disable Avatar Presence":"Enable Avatar Presence",children:[(0,t.jsx)("span",{className:`status-light ${w?"online":""}`}),(0,t.jsx)("span",{children:"Presence"})]}),(0,t.jsxs)("span",{className:"connection-pill",children:[(0,t.jsx)("span",{className:`status-light ${"online"===d?"online":""}`}),d]})]}),(0,t.jsx)("div",{className:"flex flex-col flex-1 min-h-0 w-full overflow-hidden relative",children:(0,t.jsxs)("section",{className:"conversation-surface","aria-label":"Private chat",children:[(0,t.jsxs)("div",{ref:T,className:`conversation-scroll ${w?"presence-active":""}`,"aria-live":"polite",children:[w?(0,t.jsx)("div",{className:"avatar-presence-area","data-testid":"avatar-presence-area",children:(0,t.jsx)(p,{expression:_?.expression||"neutral",action:_?.action||"idle",state:_?.state||"idle",speechId:_?.speechId,lipSyncValue:_?.lipSyncValue,durationMs:_?.durationMs,className:"w-full h-full"})}):0===S.length?(0,t.jsx)(i,{onSelectPrompt:e=>c(e)}):S.map(e=>(0,t.jsxs)("article",{className:`platform-message ${e.role}`,children:[(0,t.jsx)("div",{className:"message-avatar",children:"user"===e.role?"U":"S"}),(0,t.jsxs)("div",{className:"message-body",children:[(0,t.jsxs)("div",{className:"message-meta",children:[(0,t.jsx)("span",{children:"user"===e.role?"You":"Siduri"}),(0,t.jsx)("time",{children:g(e.createdAt)})]}),(0,t.jsx)("p",{className:"message-primary",children:"assistant"===e.role?e.spokenJa??e.content:e.content}),"assistant"===e.role&&e.spokenJa&&(0,t.jsx)("p",{className:"message-translation",children:e.content}),e.evidenceIds&&e.evidenceIds.length>0&&(0,t.jsxs)("span",{className:"evidence-chip",children:[e.evidenceIds.length," evidence link",1===e.evidenceIds.length?"":"s"]}),e.memoryProposals&&e.memoryProposals.length>0&&(0,t.jsx)("div",{className:"memory-receipts",children:e.memoryProposals.map(r=>(0,t.jsxs)("div",{className:`memory-receipt status-${r.status}`,children:[(0,t.jsxs)("strong",{children:["Remember",r.claim_type?` (${r.claim_type})`:"",":"]})," ",(0,a.formatClaimReceipt)(r),(0,t.jsx)("div",{className:"receipt-actions",children:"pending"===r.status?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:()=>B(e.id,r.proposal_id,"approve"),children:"Approve"}),(0,t.jsx)("button",{type:"button",onClick:()=>B(e.id,r.proposal_id,"reject"),children:"Reject"})]}):(0,t.jsx)("span",{children:r.status.toUpperCase()})})]},r.proposal_id))}),e.behavioralProposals&&e.behavioralProposals.length>0&&(0,t.jsx)("div",{className:"memory-receipts",children:e.behavioralProposals.map(r=>(0,t.jsxs)("div",{className:`memory-receipt status-${r.status}`,children:[(0,t.jsxs)("strong",{children:["Runtime effect [",r.knowledge_domain??r.domain," ","→ ",r.runtime_effect??r.memory_class,"]:"]})," ",(0,a.formatRuntimeEffect)(r),(0,t.jsx)("div",{className:"receipt-actions",children:"pending"===r.status?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:()=>k(e.id,r.directive_id,"approve"),children:"Approve"}),(0,t.jsx)("button",{type:"button",onClick:()=>k(e.id,r.directive_id,"reject"),children:"Reject"})]}):(0,t.jsx)("span",{children:r.status.toUpperCase()})})]},r.directive_id))})]})]},e.id)),m&&!w&&(0,t.jsxs)("div",{className:"platform-message assistant thinking-message",children:[(0,t.jsx)("div",{className:"message-avatar",children:"S"}),(0,t.jsxs)("div",{className:"message-body",children:[(0,t.jsxs)("div",{className:"message-meta",children:[(0,t.jsx)("span",{children:"Siduri"}),(0,t.jsx)("span",{className:"thinking-label",children:"thinking"})]}),(0,t.jsxs)("div",{className:"thinking-dots",children:[(0,t.jsx)("i",{}),(0,t.jsx)("i",{}),(0,t.jsx)("i",{})]})]})]})]}),(0,t.jsxs)("form",{className:"platform-composer",onSubmit:M,children:[(0,t.jsx)("textarea",{value:l,onChange:e=>c(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.currentTarget.form?.requestSubmit())},placeholder:"Message Siduri…",rows:1,maxLength:4e3,"aria-label":"Message Siduri",disabled:m}),(0,t.jsxs)("div",{className:"composer-bottom",children:[(0,t.jsxs)("span",{children:["Private local session ·"," ",D?`${D} evidence link${1===D?"":"s"}`:"No evidence attached"]}),(0,t.jsx)("button",{type:"submit",disabled:m||!l.trim(),"aria-label":"Send message",children:m?"":"↑"})]})]})]})}),(0,t.jsx)("p",{className:"chat-disclaimer",children:"Siduri can be uncertain. Verify important details against the evidence."})]})]})}],12650)},94108,e=>{"use strict";var t=e.i(72619);let r=t.default.env.NEXT_PUBLIC_API_URL||"";async function a(e,t){return fetch(`${r}${e}`,t)}async function i(e,t){let r=await a(e,t);if(!r.ok)throw Error(`${e} returned ${r.status}`);return r.json()}async function s(e,t){let r=await a(e,{method:"POST",headers:t?{"Content-Type":"application/json"}:void 0,body:t?"string"==typeof t?t:JSON.stringify(t):void 0});if(!r.ok)throw Error(await r.text().catch(()=>r.statusText));return r.json().catch(()=>({}))}async function n(e,t){let r=await a(e,{method:"POST",headers:t?{"Content-Type":"application/json"}:void 0,body:t?"string"==typeof t?t:JSON.stringify(t):void 0});if(!r.ok)throw Error(await r.text().catch(()=>r.statusText))}t.default.env.NEXT_PUBLIC_WS_URL||(window.location.protocol,window.location.host),e.s(["fetchApi",0,a,"getJson",0,i,"postAction",0,n,"postJson",0,s])},51523,e=>{"use strict";let t=new Set(["siduri","self","companion"]),r=new Set(["primary_user","user","actor","master","master_private"]);function a(e){return e.replace(/[._]+/g," ").replace(/\s+/g," ").trim()}function i(e){let t=e.trim();return t&&!/[.!?]$/.test(t)?`${t}.`:t}function s(e){let s=e.subject?.trim()??"",n=s.toLowerCase(),o=e.predicate?.trim()??"",l=o.toLowerCase(),c=e.value?.trim()??"";if(!s||!o||!c)return i(e.content??c);if(t.has(n))return"name"===l?i(`Companion name is ${c}`):i(`Companion ${a(o)} is ${c}`);if(r.has(n))return"name"===l?i(`User name is ${c}`):"preferred_address"===l?i(`User preferred address is ${c}`):"relationship_to_siduri"===l||"relationship"===l?i(`User role configured as ${c}`):i(`User ${a(o)} is ${c}`);if(n.startsWith("primary_user.")||n.startsWith("user.")){let e=n.startsWith("primary_user.")?"primary_user.":"user.",t=a(s.slice(e.length)),r="uid"===l||"id"===l?"ID":a(o);return i(`User ${t} ${r} is ${c}`)}let d=a(s);return i(`${/s$/i.test(d)?`${d}'`:`${d}'s`} ${a(o)} is ${c}`)}e.s(["formatClaimReceipt",0,s,"formatRuntimeEffect",0,function(e){let n=e.subject?.trim().toLowerCase()??"",o=e.predicate?.trim().toLowerCase()??"",l=e.value?.trim()??"",c=e.behavior?.instruction?.trim()??"";return"behavioral"===e.memory_class&&c?i(c):t.has(n)&&"name"===o?i(`Set companion identity/name to ${l}`):t.has(n)?i(`Set companion ${a(o)} to ${l}`):r.has(n)&&("relationship_to_siduri"===o||"relationship"===o)?i(`Set user role to ${l}`):r.has(n)&&"name"===o?i(`Set user name to ${l}`):s(e)}])}]);
|
|
Binary file
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Version": 3,
|
|
3
|
-
"Parameters": [
|
|
4
|
-
{
|
|
5
|
-
"Id": "ParamAngleX",
|
|
6
|
-
"GroupId": "",
|
|
7
|
-
"Name": "角度 X"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"Id": "ParamAngleY",
|
|
11
|
-
"GroupId": "",
|
|
12
|
-
"Name": "角度 Y"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"Id": "ParamAngleZ",
|
|
16
|
-
"GroupId": "",
|
|
17
|
-
"Name": "角度 Z"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"Id": "ParamEyeROpen",
|
|
21
|
-
"GroupId": "",
|
|
22
|
-
"Name": "右目 開閉"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"Id": "ParamEyeRSmile",
|
|
26
|
-
"GroupId": "",
|
|
27
|
-
"Name": "右目 笑顔"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"Id": "ParamEyeLOpen",
|
|
31
|
-
"GroupId": "",
|
|
32
|
-
"Name": "左目 開閉"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"Id": "ParamEyeLSmile",
|
|
36
|
-
"GroupId": "",
|
|
37
|
-
"Name": "左目 笑顔"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"Id": "ParamEyeBallX",
|
|
41
|
-
"GroupId": "",
|
|
42
|
-
"Name": "目玉 X"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"Id": "ParamEyeBallY",
|
|
46
|
-
"GroupId": "",
|
|
47
|
-
"Name": "目玉 Y"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"Id": "ParamBrowLY",
|
|
51
|
-
"GroupId": "",
|
|
52
|
-
"Name": "左眉 上下"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"Id": "ParamBrowRY",
|
|
56
|
-
"GroupId": "",
|
|
57
|
-
"Name": "右眉 上下"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"Id": "ParamBrowLX",
|
|
61
|
-
"GroupId": "",
|
|
62
|
-
"Name": "左眉 左右"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"Id": "ParamBrowRX",
|
|
66
|
-
"GroupId": "",
|
|
67
|
-
"Name": "右眉 左右"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"Id": "ParamBrowLAngle",
|
|
71
|
-
"GroupId": "",
|
|
72
|
-
"Name": "左眉 角度"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"Id": "ParamBrowRAngle",
|
|
76
|
-
"GroupId": "",
|
|
77
|
-
"Name": "右眉 角度"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"Id": "ParamBrowLForm",
|
|
81
|
-
"GroupId": "",
|
|
82
|
-
"Name": "左眉 変形"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"Id": "ParamBrowRForm",
|
|
86
|
-
"GroupId": "",
|
|
87
|
-
"Name": "右眉 変形"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"Id": "ParamMouthForm",
|
|
91
|
-
"GroupId": "",
|
|
92
|
-
"Name": "口 変形"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"Id": "ParamMouthOpenY",
|
|
96
|
-
"GroupId": "",
|
|
97
|
-
"Name": "口 開閉"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"Id": "ParamCheek",
|
|
101
|
-
"GroupId": "",
|
|
102
|
-
"Name": "照れ"
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"Id": "ParamBodyAngleX",
|
|
106
|
-
"GroupId": "",
|
|
107
|
-
"Name": "体の回転 X"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"Id": "ParamBodyAngleY",
|
|
111
|
-
"GroupId": "",
|
|
112
|
-
"Name": "体の回転 Y"
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"Id": "ParamBodyAngleZ",
|
|
116
|
-
"GroupId": "",
|
|
117
|
-
"Name": "体の回転 Z"
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"Id": "ParamBreath",
|
|
121
|
-
"GroupId": "",
|
|
122
|
-
"Name": "呼吸"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"Id": "ParamHairFront",
|
|
126
|
-
"GroupId": "",
|
|
127
|
-
"Name": "髪揺れ 前"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"Id": "Param",
|
|
131
|
-
"GroupId": "",
|
|
132
|
-
"Name": "横1"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"Id": "Param2",
|
|
136
|
-
"GroupId": "",
|
|
137
|
-
"Name": "横2"
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
"Id": "Param3",
|
|
141
|
-
"GroupId": "",
|
|
142
|
-
"Name": "縦1"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"Id": "Param4",
|
|
146
|
-
"GroupId": "",
|
|
147
|
-
"Name": "縦2"
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"Id": "ParamHairBack",
|
|
151
|
-
"GroupId": "",
|
|
152
|
-
"Name": "髪揺れ 後"
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"Id": "ParamHairSide",
|
|
156
|
-
"GroupId": "",
|
|
157
|
-
"Name": "イヤリング揺れ1"
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
"Id": "ParamHairSide2",
|
|
161
|
-
"GroupId": "",
|
|
162
|
-
"Name": "イヤリング揺れ2"
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
"Id": "ParamHairSide3",
|
|
166
|
-
"GroupId": "",
|
|
167
|
-
"Name": "イヤリング揺れ3"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"Id": "ParamHairSide4",
|
|
171
|
-
"GroupId": "",
|
|
172
|
-
"Name": "イヤリング揺れ4"
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"Id": "Param5",
|
|
176
|
-
"GroupId": "",
|
|
177
|
-
"Name": "フードフリル揺れX"
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
"Id": "Param6",
|
|
181
|
-
"GroupId": "",
|
|
182
|
-
"Name": "フードフリル揺れY"
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"Id": "Param7",
|
|
186
|
-
"GroupId": "",
|
|
187
|
-
"Name": "フリル揺れX"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"Id": "Param8",
|
|
191
|
-
"GroupId": "",
|
|
192
|
-
"Name": "フリル揺れY"
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"Id": "Param15",
|
|
196
|
-
"GroupId": "",
|
|
197
|
-
"Name": "瞳拡大縮小→"
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
"Id": "Param16",
|
|
201
|
-
"GroupId": "",
|
|
202
|
-
"Name": "瞳拡大縮小←"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"Id": "Param13",
|
|
206
|
-
"GroupId": "",
|
|
207
|
-
"Name": "ハイライト→揺れ"
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"Id": "Param14",
|
|
211
|
-
"GroupId": "",
|
|
212
|
-
"Name": "ハイライト←揺れ"
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"Id": "Param9",
|
|
216
|
-
"GroupId": "",
|
|
217
|
-
"Name": "★ハイライトなし"
|
|
218
|
-
},
|
|
219
|
-
{
|
|
220
|
-
"Id": "Param10",
|
|
221
|
-
"GroupId": "",
|
|
222
|
-
"Name": "★青ざめ"
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
"Id": "Param11",
|
|
226
|
-
"GroupId": "",
|
|
227
|
-
"Name": "★前髪"
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
"Id": "Param12",
|
|
231
|
-
"GroupId": "",
|
|
232
|
-
"Name": "★瞳カラー"
|
|
233
|
-
}
|
|
234
|
-
],
|
|
235
|
-
"ParameterGroups": [],
|
|
236
|
-
"Parts": [
|
|
237
|
-
{
|
|
238
|
-
"Id": "Part",
|
|
239
|
-
"Name": "レイヤーセット1"
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"Id": "Part2",
|
|
243
|
-
"Name": "髪"
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
"Id": "Part3",
|
|
247
|
-
"Name": "目"
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
"Id": "Part4",
|
|
251
|
-
"Name": "くち"
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
"Id": "Part6",
|
|
255
|
-
"Name": "髪の影"
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
"Id": "Part7",
|
|
259
|
-
"Name": "イヤリング→"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"Id": "Part8",
|
|
263
|
-
"Name": "イヤリング←"
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
"Id": "Part5",
|
|
267
|
-
"Name": "くちガイド"
|
|
268
|
-
}
|
|
269
|
-
],
|
|
270
|
-
"CombinedParameters": [
|
|
271
|
-
[
|
|
272
|
-
"ParamAngleX",
|
|
273
|
-
"ParamAngleY"
|
|
274
|
-
],
|
|
275
|
-
[
|
|
276
|
-
"ParamEyeBallX",
|
|
277
|
-
"ParamEyeBallY"
|
|
278
|
-
],
|
|
279
|
-
[
|
|
280
|
-
"ParamMouthForm",
|
|
281
|
-
"ParamMouthOpenY"
|
|
282
|
-
],
|
|
283
|
-
[
|
|
284
|
-
"Param",
|
|
285
|
-
"Param2"
|
|
286
|
-
],
|
|
287
|
-
[
|
|
288
|
-
"Param3",
|
|
289
|
-
"Param4"
|
|
290
|
-
],
|
|
291
|
-
[
|
|
292
|
-
"Param7",
|
|
293
|
-
"Param8"
|
|
294
|
-
]
|
|
295
|
-
]
|
|
296
|
-
}
|
|
Binary file
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"Version": 3,
|
|
3
|
-
"FileReferences": {
|
|
4
|
-
"Moc": "akaituno.moc3",
|
|
5
|
-
"Textures": [
|
|
6
|
-
"akaituno.8192/texture_00.png"
|
|
7
|
-
],
|
|
8
|
-
"Physics": "akaituno.physics3.json",
|
|
9
|
-
"DisplayInfo": "akaituno.cdi3.json",
|
|
10
|
-
"Expressions": [
|
|
11
|
-
{
|
|
12
|
-
"Name": "目_絶望",
|
|
13
|
-
"File": "eyes_zetubou.exp3.json"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"Name": "あおざめ顔",
|
|
17
|
-
"File": "face_aozame.exp3.json"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"Name": "ひらく前髪",
|
|
21
|
-
"File": "hair_open.exp3.json"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"Name": "いろの目",
|
|
25
|
-
"File": "eye_color.exp3.json"
|
|
26
|
-
}
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"Groups": [
|
|
30
|
-
{
|
|
31
|
-
"Target": "Parameter",
|
|
32
|
-
"Name": "LipSync",
|
|
33
|
-
"Ids": []
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"Target": "Parameter",
|
|
37
|
-
"Name": "EyeBlink",
|
|
38
|
-
"Ids": []
|
|
39
|
-
}
|
|
40
|
-
],
|
|
41
|
-
"HitAreas": []
|
|
42
|
-
}
|