dsh-plugin-live2d-stage 0.5.1

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 (69) hide show
  1. package/README.md +86 -0
  2. package/assets/core.js +9 -0
  3. package/assets/floating.html +1 -0
  4. package/assets/floating.js +285 -0
  5. package/assets/icon.webp +0 -0
  6. package/assets/shaders/fragshadersrcalphablend.frag +54 -0
  7. package/assets/shaders/fragshadersrccolorblend.frag +298 -0
  8. package/assets/shaders/fragshadersrccopy.frag +18 -0
  9. package/assets/shaders/fragshadersrcmaskinvertedpremultipliedalpha.frag +29 -0
  10. package/assets/shaders/fragshadersrcmaskpremultipliedalpha.frag +29 -0
  11. package/assets/shaders/fragshadersrcpremultipliedalpha.frag +23 -0
  12. package/assets/shaders/fragshadersrcpremultipliedalphablend.frag +67 -0
  13. package/assets/shaders/fragshadersrcsetupmask.frag +25 -0
  14. package/assets/shaders/vertshadersrc.vert +19 -0
  15. package/assets/shaders/vertshadersrcblend.vert +31 -0
  16. package/assets/shaders/vertshadersrccopy.vert +17 -0
  17. package/assets/shaders/vertshadersrcmasked.vert +22 -0
  18. package/assets/shaders/vertshadersrcsetupmask.vert +21 -0
  19. package/character/hiyori/hiyori_free_t08.2048/texture_00.png +0 -0
  20. package/character/hiyori/hiyori_free_t08.cdi3.json +276 -0
  21. package/character/hiyori/hiyori_free_t08.moc3 +0 -0
  22. package/character/hiyori/hiyori_free_t08.model3.json +72 -0
  23. package/character/hiyori/hiyori_free_t08.physics3.json +631 -0
  24. package/character/hiyori/motion/hiyori_m01.motion3.json +951 -0
  25. package/character/hiyori/motion/hiyori_m02.motion3.json +1238 -0
  26. package/character/hiyori/motion/hiyori_m03.motion3.json +1035 -0
  27. package/character/hiyori/motion/hiyori_m04.motion3.json +776 -0
  28. package/character/hiyori/motion/hiyori_m05.motion3.json +1462 -0
  29. package/character/hiyori/motion/hiyori_m06.motion3.json +727 -0
  30. package/character/hiyori/motion/hiyori_m07.motion3.json +874 -0
  31. package/character/hiyori/motion/hiyori_m08.motion3.json +755 -0
  32. package/cordis.patch.yml +3 -0
  33. package/lib/chat.mjs +9 -0
  34. package/lib/client.js +20810 -0
  35. package/lib/floating.mjs +25 -0
  36. package/lib/index.mjs +85 -0
  37. package/lib/native/Live2DFloating.exe +0 -0
  38. package/lib/native/Microsoft.Web.WebView2.Core.dll +0 -0
  39. package/lib/native/Microsoft.Web.WebView2.Wpf.dll +0 -0
  40. package/lib/native/WebView2-LICENSE.txt +27 -0
  41. package/lib/native/WebView2-NOTICE.txt +85 -0
  42. package/lib/native/WebView2Loader.dll +0 -0
  43. package/lib/store.cjs +11064 -0
  44. package/licenses/Cubism-Core.md +7 -0
  45. package/licenses/Cubism-Framework.md +45 -0
  46. package/licenses/Cubism-NOTICE.md +38 -0
  47. package/licenses/Cubism-Samples.md +67 -0
  48. package/licenses/bluebird.txt +21 -0
  49. package/licenses/core-util-is.txt +19 -0
  50. package/licenses/duplexer2.txt +26 -0
  51. package/licenses/fs-extra.txt +15 -0
  52. package/licenses/graceful-fs.txt +15 -0
  53. package/licenses/inherits.txt +16 -0
  54. package/licenses/jsonfile.txt +15 -0
  55. package/licenses/lucide.txt +43 -0
  56. package/licenses/node-int64.txt +19 -0
  57. package/licenses/process-nextick-args.txt +19 -0
  58. package/licenses/react-dom.txt +21 -0
  59. package/licenses/react.txt +21 -0
  60. package/licenses/readable-stream.txt +47 -0
  61. package/licenses/safe-buffer.txt +21 -0
  62. package/licenses/scheduler.txt +21 -0
  63. package/licenses/string_decoder.txt +48 -0
  64. package/licenses/universalify.txt +20 -0
  65. package/licenses/unzipper.txt +25 -0
  66. package/licenses/util-deprecate.txt +24 -0
  67. package/locale/en.json +6 -0
  68. package/locale/zh-CN.json +6 -0
  69. package/package.json +77 -0
package/lib/chat.mjs ADDED
@@ -0,0 +1,9 @@
1
+ export class StageChat {
2
+ constructor(ctx){this.ctx=ctx;this.errors=new Map();ctx.on?.('api-session/error',(id,error)=>{this.errors.set(id,String(error));if(this.errors.size>100)this.errors.delete(this.errors.keys().next().value);});}
3
+ controller(){if(!this.ctx.sessionController)throw new Error('宿主会话服务尚未就绪');return this.ctx.sessionController;}
4
+ async list(){const result=await this.controller().list({},new AbortController().signal);const workspaces=(this.ctx.workspaceRegistry?.list()??[]).map(w=>({workspaceId:w.id,title:w.title,path:w.path,sessionIds:[...w.sessionIds]}));return {...result,workspaces,items:result.items.map(s=>({...s,workspaceId:workspaces.find(w=>w.sessionIds.includes(s.sessionId))?.workspaceId??null}))};}
5
+ async visibleSession(id,workspaceId){const data=await this.list();const session=data.items.find(s=>s.sessionId===id);if(!session)throw new Error('该会话不在当前 Harness 的可用会话列表中,请重新选择');if(workspaceId&&session.workspaceId!==workspaceId)throw new Error('会话不属于所选 Harness 工作区');return session;}
6
+
7
+ async history(id){if(typeof id!=='string'||!id||id.length>200)throw new Error('请选择对话');await this.visibleSession(id);const view=await this.controller().inspect(id,new AbortController().signal);const messages=view.events.filter(e=>['user/message','assistant/message'].includes(e.type)).slice(-100).map(e=>{const m=e.type==='user/message'?e.data:e.data.message;return {id:m.id,role:m.role,text:(m.content??[]).filter(p=>p.type==='text').map(p=>p.text).join('\n')};}).filter(m=>m.text);return {sessionId:id,messages,running:this.ctx.agents?.get(id)?.status==='running',error:this.errors.get(id)||''};}
8
+ async send(data){if(typeof data.text!=='string'||!data.text.trim()||data.text.length>32000)throw new Error('请输入 1–32000 个字符');if(typeof data.requestId!=='string'||!/^[a-zA-Z0-9-]{1,80}$/.test(data.requestId))throw new Error('无效消息标识');if(data.sessionId!==undefined&&(typeof data.sessionId!=='string'||data.sessionId.length>200))throw new Error('无效对话');const controller=this.controller();let id=data.sessionId;if(data.workspaceId!==undefined&&(typeof data.workspaceId!=='string'||data.workspaceId.length>200))throw new Error('无效工作区');if(id){await this.visibleSession(id,data.workspaceId);}else{if(!data.workspaceId||!this.ctx.workspaceRegistry?.get(data.workspaceId))throw new Error('请先选择当前 Harness 的工作区,再新建对话');const created=await controller.create({sessionId:'live2d-'+data.requestId,workspaceId:data.workspaceId});id=created.sessionId;}this.errors.delete(id);await controller.prompt({sessionId:id,requestId:data.requestId,content:[{type:'text',text:data.text.trim()}],mode:'followup',clientTimeZone:data.timeZone||'Asia/Shanghai'},new AbortController().signal);return {accepted:true,sessionId:id};}
9
+ }