agentworkshop 0.7.2 → 0.7.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.
Files changed (130) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B9Yie5HN.js +2 -0
  3. package/.output/public/_nuxt/CN7Zh8GQ.js +1 -0
  4. package/.output/public/_nuxt/CdSgfcYR.js +1 -0
  5. package/.output/public/_nuxt/CdfAP_IH2.js +1 -0
  6. package/.output/public/_nuxt/ChnfyQHz.js +1 -0
  7. package/.output/public/_nuxt/{BkKYf8xY.js → CyygA0q4.js} +4 -4
  8. package/.output/public/_nuxt/{Bz40vyZS.js → DFnGFEav.js} +7 -7
  9. package/.output/public/_nuxt/Xaf_HIR3.js +1 -0
  10. package/.output/public/_nuxt/ZugRk0CM2.js +4 -0
  11. package/.output/public/_nuxt/builds/latest.json +1 -1
  12. package/.output/public/_nuxt/builds/meta/55c10854-ee0e-4be4-924b-a1b0e100fe11.json +1 -0
  13. package/.output/public/_nuxt/{default.iGJy9dP-.css → default.D17kXlD6.css} +1 -1
  14. package/.output/public/_nuxt/monitor.CmwpEUCI.css +1 -0
  15. package/.output/public/_nuxt/yIKY_V1P.js +1 -0
  16. package/.output/server/chunks/_/nitro.mjs +1144 -933
  17. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  18. package/.output/server/chunks/build/{TownView-BkHxMiwZ.mjs → TownView-Bl8Gkcxi.mjs} +3 -3
  19. package/.output/server/chunks/build/{TownView-BkHxMiwZ.mjs.map → TownView-Bl8Gkcxi.mjs.map} +1 -1
  20. package/.output/server/chunks/build/{_id_-Bna1_JuB.mjs → _id_-CWLFGZjV.mjs} +2 -2
  21. package/.output/server/chunks/build/{_id_-Bna1_JuB.mjs.map → _id_-CWLFGZjV.mjs.map} +1 -1
  22. package/.output/server/chunks/build/_id_-GnRJPykX.mjs +1 -1
  23. package/.output/server/chunks/build/{_wsId_-CzLDGT_V.mjs → _wsId_-BhQMjyHG.mjs} +3 -4
  24. package/.output/server/chunks/build/{_wsId_-CzLDGT_V.mjs.map → _wsId_-BhQMjyHG.mjs.map} +1 -1
  25. package/.output/server/chunks/build/{daq-CmeM4u5u.mjs → daq-BOgpn9sl.mjs} +4 -5
  26. package/.output/server/chunks/build/daq-BOgpn9sl.mjs.map +1 -0
  27. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs +1 -1
  28. package/.output/server/chunks/build/{default-Dt6xLdpd.mjs → default-CKJWhkot.mjs} +60 -17
  29. package/.output/server/chunks/build/{default-Dt6xLdpd.mjs.map → default-CKJWhkot.mjs.map} +1 -1
  30. package/.output/server/chunks/build/{logs-CUQt1z7D.mjs → logs-Dyk0I2I9.mjs} +3 -4
  31. package/.output/server/chunks/build/logs-Dyk0I2I9.mjs.map +1 -0
  32. package/.output/server/chunks/build/{monitor-yNoV98rf.mjs → monitor-KW8WLOJd.mjs} +34 -33
  33. package/.output/server/chunks/build/{monitor-yNoV98rf.mjs.map → monitor-KW8WLOJd.mjs.map} +1 -1
  34. package/.output/server/chunks/build/{town-BN4vQPb8.mjs → town-_4tEEEVW.mjs} +3 -4
  35. package/.output/server/chunks/build/town-_4tEEEVW.mjs.map +1 -0
  36. package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs +1 -1
  37. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs +1 -1
  38. package/.output/server/chunks/build/{useWorkshopWs-xcdeiSmJ.mjs → useWorkshopWs-B3j5wIAK.mjs} +177 -3
  39. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +1 -0
  40. package/.output/server/chunks/build/{workshop-CLhwe5eo.mjs → workshop-k0XZTFKg.mjs} +2 -3
  41. package/.output/server/chunks/build/workshop-k0XZTFKg.mjs.map +1 -0
  42. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +8 -2
  43. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  44. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  45. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
  46. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +32 -0
  47. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -0
  48. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +56 -0
  49. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -0
  50. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  51. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  52. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  53. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  54. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  55. package/.output/server/chunks/routes/renderer.mjs +2 -2
  56. package/.output/server/chunks/virtual/entry.mjs +17 -11
  57. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  58. package/.output/server/package.json +1 -1
  59. package/README.md +435 -434
  60. package/app/components/AppHeader.vue +138 -0
  61. package/app/composables/workshop/useWorkshopWs.ts +4 -0
  62. package/app/pages/monitor.vue +17 -1
  63. package/app/stores/workshop/hitl.ts +80 -0
  64. package/bin/aw.mjs +0 -0
  65. package/cli/commands/tui.mjs +19 -0
  66. package/config.yml +134 -134
  67. package/docs/tui.md +43 -0
  68. package/i18n/locales/en.ts +3 -0
  69. package/i18n/locales/zh-CN.ts +3 -0
  70. package/package.json +140 -144
  71. package/scripts/_spike-pitui.mjs +116 -0
  72. package/scripts/e2e-hitl-live.mjs +323 -0
  73. package/scripts/e2e-line-live.mjs +144 -0
  74. package/scripts/test-hitl-registry.ts +112 -0
  75. package/scripts/test-tui-commands.mjs +131 -0
  76. package/scripts/test-tui-reducers.mjs +72 -0
  77. package/scripts/tsconfig.json +14 -0
  78. package/scripts/tui-smoke.mjs +91 -0
  79. package/server/api/plugins/[name]/[...path].ts +10 -1
  80. package/server/api/workshop/hitl/pending.get.ts +28 -0
  81. package/server/api/workshop/hitl/respond.post.ts +67 -0
  82. package/server/api/workshop/ws.ts +30 -1
  83. package/server/data/daqs.json +69 -17
  84. package/server/data/dcw-lines.json +21 -0
  85. package/server/data/dcw-products.json +42 -0
  86. package/server/data/dcw-recipes.json +168 -0
  87. package/server/data/dcw-rollback.json +133 -1
  88. package/server/data/dcw-runs.json +162 -108
  89. package/server/data/dcw-writes.json +180 -0
  90. package/server/data/dcws.json +427 -275
  91. package/server/data/line-runs.json +21 -1
  92. package/server/plugins/workshop.ts +7 -0
  93. package/server/services/workshop/agents/harness-terminal.ts +92 -25
  94. package/server/services/workshop/agents/hitl-registry.ts +181 -0
  95. package/server/services/workshop/agents/tool-approvals.ts +15 -0
  96. package/server/services/workshop/scene-events.ts +19 -9
  97. package/shared/workshop-protocol.ts +37 -0
  98. package/tui/README.md +65 -0
  99. package/tui/aw-tui.mjs +356 -0
  100. package/tui/commands/index.mjs +250 -0
  101. package/tui/components/chat-log.mjs +42 -0
  102. package/tui/components/hitl-card.mjs +36 -0
  103. package/tui/components/monitor-pane.mjs +39 -0
  104. package/tui/components/root.mjs +53 -0
  105. package/tui/components/status-bar.mjs +29 -0
  106. package/tui/lib/api.mjs +82 -0
  107. package/tui/lib/config.mjs +58 -0
  108. package/tui/lib/reducers.mjs +218 -0
  109. package/tui/lib/state.mjs +80 -0
  110. package/tui/lib/virtual-terminal.mjs +48 -0
  111. package/tui/lib/ws.mjs +124 -0
  112. package/tui/theme.mjs +38 -0
  113. package/.output/public/_nuxt/B7V9IfTL.js +0 -1
  114. package/.output/public/_nuxt/BE5QyG5J2.js +0 -1
  115. package/.output/public/_nuxt/BuKI8z-5.js +0 -1
  116. package/.output/public/_nuxt/D0C5Q0di.js +0 -1
  117. package/.output/public/_nuxt/DC-QMEk1.js +0 -2
  118. package/.output/public/_nuxt/DEkQ0qQ02.js +0 -1
  119. package/.output/public/_nuxt/builds/meta/4d990d25-ebbb-4fe4-a23b-3d28c7f42fee.json +0 -1
  120. package/.output/public/_nuxt/dt2tKE95.js +0 -4
  121. package/.output/public/_nuxt/i_MKObHo.js +0 -1
  122. package/.output/public/_nuxt/monitor.41fCD6TB.css +0 -1
  123. package/.output/public/_nuxt/tpDMVY5w.js +0 -1
  124. package/.output/server/chunks/build/connection-Dc0fn6yd.mjs +0 -120
  125. package/.output/server/chunks/build/connection-Dc0fn6yd.mjs.map +0 -1
  126. package/.output/server/chunks/build/daq-CmeM4u5u.mjs.map +0 -1
  127. package/.output/server/chunks/build/logs-CUQt1z7D.mjs.map +0 -1
  128. package/.output/server/chunks/build/town-BN4vQPb8.mjs.map +0 -1
  129. package/.output/server/chunks/build/useWorkshopWs-xcdeiSmJ.mjs.map +0 -1
  130. package/.output/server/chunks/build/workshop-CLhwe5eo.mjs.map +0 -1
@@ -1167,7 +1167,7 @@ var unseal = async (_crypto, sealed, password, options) => {
1167
1167
  return null;
1168
1168
  };
1169
1169
 
1170
- function o(n){throw new Error(`${n} is not implemented yet!`)}let i$1 = class i extends EventEmitter{__unenv__={};readableEncoding=null;readableEnded=true;readableFlowing=false;readableHighWaterMark=0;readableLength=0;readableObjectMode=false;readableAborted=false;readableDidRead=false;closed=false;errored=null;readable=false;destroyed=false;static from(e,t){return new i(t)}constructor(e){super();}_read(e){}read(e){}setEncoding(e){return this}pause(){return this}resume(){return this}isPaused(){return true}unpipe(e){return this}unshift(e,t){}wrap(e){return this}push(e,t){return false}_destroy(e,t){this.removeAllListeners();}destroy(e){return this.destroyed=true,this._destroy(e),this}pipe(e,t){return {}}compose(e,t){throw new Error("Method not implemented.")}[Symbol.asyncDispose](){return this.destroy(),Promise.resolve()}async*[Symbol.asyncIterator](){throw o("Readable.asyncIterator")}iterator(e){throw o("Readable.iterator")}map(e,t){throw o("Readable.map")}filter(e,t){throw o("Readable.filter")}forEach(e,t){throw o("Readable.forEach")}reduce(e,t,r){throw o("Readable.reduce")}find(e,t){throw o("Readable.find")}findIndex(e,t){throw o("Readable.findIndex")}some(e,t){throw o("Readable.some")}toArray(e){throw o("Readable.toArray")}every(e,t){throw o("Readable.every")}flatMap(e,t){throw o("Readable.flatMap")}drop(e,t){throw o("Readable.drop")}take(e,t){throw o("Readable.take")}asIndexedPairs(e){throw o("Readable.asIndexedPairs")}};let l$1 = class l extends EventEmitter{__unenv__={};writable=true;writableEnded=false;writableFinished=false;writableHighWaterMark=0;writableLength=0;writableObjectMode=false;writableCorked=0;closed=false;errored=null;writableNeedDrain=false;writableAborted=false;destroyed=false;_data;_encoding="utf8";constructor(e){super();}pipe(e,t){return {}}_write(e,t,r){if(this.writableEnded){r&&r();return}if(this._data===void 0)this._data=e;else {const s=typeof this._data=="string"?Buffer$1.from(this._data,this._encoding||t||"utf8"):this._data,a=typeof e=="string"?Buffer$1.from(e,t||this._encoding||"utf8"):e;this._data=Buffer$1.concat([s,a]);}this._encoding=t,r&&r();}_writev(e,t){}_destroy(e,t){}_final(e){}write(e,t,r){const s=typeof t=="string"?this._encoding:"utf8",a=typeof t=="function"?t:typeof r=="function"?r:void 0;return this._write(e,s,a),true}setDefaultEncoding(e){return this}end(e,t,r){const s=typeof e=="function"?e:typeof t=="function"?t:typeof r=="function"?r:void 0;if(this.writableEnded)return s&&s(),this;const a=e===s?void 0:e;if(a){const u=t===s?void 0:t;this.write(a,u);}return this.writableEnded=true,this.writableFinished=true,this.emit("close"),this.emit("finish"),s&&s(),this}cork(){}uncork(){}destroy(e){return this.destroyed=true,delete this._data,this.removeAllListeners(),this}compose(e,t){throw new Error("Method not implemented.")}[Symbol.asyncDispose](){return Promise.resolve()}};const c$1=class c{allowHalfOpen=true;_destroy;constructor(e=new i$1,t=new l$1){Object.assign(this,e),Object.assign(this,t),this._destroy=m(e._destroy,t._destroy);}};function _(){return Object.assign(c$1.prototype,i$1.prototype),Object.assign(c$1.prototype,l$1.prototype),c$1}function m(...n){return function(...e){for(const t of n)t(...e);}}const g$q=_();class A extends g$q{__unenv__={};bufferSize=0;bytesRead=0;bytesWritten=0;connecting=false;destroyed=false;pending=false;localAddress="";localPort=0;remoteAddress="";remoteFamily="";remotePort=0;autoSelectFamilyAttemptedAddresses=[];readyState="readOnly";constructor(e){super();}write(e,t,r){return false}connect(e,t,r){return this}end(e,t,r){return this}setEncoding(e){return this}pause(){return this}resume(){return this}setTimeout(e,t){return this}setNoDelay(e){return this}setKeepAlive(e,t){return this}address(){return {}}unref(){return this}ref(){return this}destroySoon(){this.destroy();}resetAndDestroy(){const e=new Error("ERR_SOCKET_CLOSED");return e.code="ERR_SOCKET_CLOSED",this.destroy(e),this}}class y extends i$1{aborted=false;httpVersion="1.1";httpVersionMajor=1;httpVersionMinor=1;complete=true;connection;socket;headers={};trailers={};method="GET";url="/";statusCode=200;statusMessage="";closed=false;errored=null;readable=false;constructor(e){super(),this.socket=this.connection=e||new A;}get rawHeaders(){const e=this.headers,t=[];for(const r in e)if(Array.isArray(e[r]))for(const s of e[r])t.push(r,s);else t.push(r,e[r]);return t}get rawTrailers(){return []}setTimeout(e,t){return this}get headersDistinct(){return p(this.headers)}get trailersDistinct(){return p(this.trailers)}}function p(n){const e={};for(const[t,r]of Object.entries(n))t&&(e[t]=(Array.isArray(r)?r:[r]).filter(Boolean));return e}class w extends l$1{statusCode=200;statusMessage="";upgrading=false;chunkedEncoding=false;shouldKeepAlive=false;useChunkedEncodingByDefault=false;sendDate=false;finished=false;headersSent=false;strictContentLength=false;connection=null;socket=null;req;_headers={};constructor(e){super(),this.req=e;}assignSocket(e){e._httpMessage=this,this.socket=e,this.connection=e,this.emit("socket",e),this._flush();}_flush(){this.flushHeaders();}detachSocket(e){}writeContinue(e){}writeHead(e,t,r){e&&(this.statusCode=e),typeof t=="string"&&(this.statusMessage=t,t=void 0);const s=r||t;if(s&&!Array.isArray(s))for(const a in s)this.setHeader(a,s[a]);return this.headersSent=true,this}writeProcessing(){}setTimeout(e,t){return this}appendHeader(e,t){e=e.toLowerCase();const r=this._headers[e],s=[...Array.isArray(r)?r:[r],...Array.isArray(t)?t:[t]].filter(Boolean);return this._headers[e]=s.length>1?s:s[0],this}setHeader(e,t){return this._headers[e.toLowerCase()]=t,this}setHeaders(e){for(const[t,r]of Object.entries(e))this.setHeader(t,r);return this}getHeader(e){return this._headers[e.toLowerCase()]}getHeaders(){return this._headers}getHeaderNames(){return Object.keys(this._headers)}hasHeader(e){return e.toLowerCase()in this._headers}removeHeader(e){delete this._headers[e.toLowerCase()];}addTrailers(e){}flushHeaders(){}writeEarlyHints(e,t){typeof t=="function"&&t();}}const E=(()=>{const n=function(){};return n.prototype=Object.create(null),n})();function R(n={}){const e=new E,t=Array.isArray(n)||H(n)?n:Object.entries(n);for(const[r,s]of t)if(s){if(e[r]===void 0){e[r]=s;continue}e[r]=[...Array.isArray(e[r])?e[r]:[e[r]],...Array.isArray(s)?s:[s]];}return e}function H(n){return typeof n?.entries=="function"}function v(n={}){if(n instanceof Headers)return n;const e=new Headers;for(const[t,r]of Object.entries(n))if(r!==void 0){if(Array.isArray(r)){for(const s of r)e.append(t,String(s));continue}e.set(t,String(r));}return e}const S=new Set([101,204,205,304]);async function b(n,e){const t=new y,r=new w(t);t.url=e.url?.toString()||"/";let s;if(!t.url.startsWith("/")){const d=new URL(t.url);s=d.host,t.url=d.pathname+d.search+d.hash;}t.method=e.method||"GET",t.headers=R(e.headers||{}),t.headers.host||(t.headers.host=e.host||s||"localhost"),t.connection.encrypted=t.connection.encrypted||e.protocol==="https",t.body=e.body||null,t.__unenv__=e.context,await n(t,r);let a=r._data;(S.has(r.statusCode)||t.method.toUpperCase()==="HEAD")&&(a=null,delete r._headers["content-length"]);const u={status:r.statusCode,statusText:r.statusMessage,headers:r._headers,body:a};return t.destroy(),r.destroy(),u}async function C(n,e,t={}){try{const r=await b(n,{url:e,...t});return new Response(r.body,{status:r.status,statusText:r.statusText,headers:v(r.headers)})}catch(r){return new Response(r.toString(),{status:Number.parseInt(r.statusCode||r.code)||500,statusText:r.statusText})}}
1170
+ function o(n){throw new Error(`${n} is not implemented yet!`)}let i$1 = class i extends EventEmitter{__unenv__={};readableEncoding=null;readableEnded=true;readableFlowing=false;readableHighWaterMark=0;readableLength=0;readableObjectMode=false;readableAborted=false;readableDidRead=false;closed=false;errored=null;readable=false;destroyed=false;static from(e,t){return new i(t)}constructor(e){super();}_read(e){}read(e){}setEncoding(e){return this}pause(){return this}resume(){return this}isPaused(){return true}unpipe(e){return this}unshift(e,t){}wrap(e){return this}push(e,t){return false}_destroy(e,t){this.removeAllListeners();}destroy(e){return this.destroyed=true,this._destroy(e),this}pipe(e,t){return {}}compose(e,t){throw new Error("Method not implemented.")}[Symbol.asyncDispose](){return this.destroy(),Promise.resolve()}async*[Symbol.asyncIterator](){throw o("Readable.asyncIterator")}iterator(e){throw o("Readable.iterator")}map(e,t){throw o("Readable.map")}filter(e,t){throw o("Readable.filter")}forEach(e,t){throw o("Readable.forEach")}reduce(e,t,r){throw o("Readable.reduce")}find(e,t){throw o("Readable.find")}findIndex(e,t){throw o("Readable.findIndex")}some(e,t){throw o("Readable.some")}toArray(e){throw o("Readable.toArray")}every(e,t){throw o("Readable.every")}flatMap(e,t){throw o("Readable.flatMap")}drop(e,t){throw o("Readable.drop")}take(e,t){throw o("Readable.take")}asIndexedPairs(e){throw o("Readable.asIndexedPairs")}};let l$1 = class l extends EventEmitter{__unenv__={};writable=true;writableEnded=false;writableFinished=false;writableHighWaterMark=0;writableLength=0;writableObjectMode=false;writableCorked=0;closed=false;errored=null;writableNeedDrain=false;writableAborted=false;destroyed=false;_data;_encoding="utf8";constructor(e){super();}pipe(e,t){return {}}_write(e,t,r){if(this.writableEnded){r&&r();return}if(this._data===void 0)this._data=e;else {const s=typeof this._data=="string"?Buffer$1.from(this._data,this._encoding||t||"utf8"):this._data,a=typeof e=="string"?Buffer$1.from(e,t||this._encoding||"utf8"):e;this._data=Buffer$1.concat([s,a]);}this._encoding=t,r&&r();}_writev(e,t){}_destroy(e,t){}_final(e){}write(e,t,r){const s=typeof t=="string"?this._encoding:"utf8",a=typeof t=="function"?t:typeof r=="function"?r:void 0;return this._write(e,s,a),true}setDefaultEncoding(e){return this}end(e,t,r){const s=typeof e=="function"?e:typeof t=="function"?t:typeof r=="function"?r:void 0;if(this.writableEnded)return s&&s(),this;const a=e===s?void 0:e;if(a){const u=t===s?void 0:t;this.write(a,u);}return this.writableEnded=true,this.writableFinished=true,this.emit("close"),this.emit("finish"),s&&s(),this}cork(){}uncork(){}destroy(e){return this.destroyed=true,delete this._data,this.removeAllListeners(),this}compose(e,t){throw new Error("Method not implemented.")}[Symbol.asyncDispose](){return Promise.resolve()}};const c$1=class c{allowHalfOpen=true;_destroy;constructor(e=new i$1,t=new l$1){Object.assign(this,e),Object.assign(this,t),this._destroy=m(e._destroy,t._destroy);}};function _(){return Object.assign(c$1.prototype,i$1.prototype),Object.assign(c$1.prototype,l$1.prototype),c$1}function m(...n){return function(...e){for(const t of n)t(...e);}}const g$r=_();class A extends g$r{__unenv__={};bufferSize=0;bytesRead=0;bytesWritten=0;connecting=false;destroyed=false;pending=false;localAddress="";localPort=0;remoteAddress="";remoteFamily="";remotePort=0;autoSelectFamilyAttemptedAddresses=[];readyState="readOnly";constructor(e){super();}write(e,t,r){return false}connect(e,t,r){return this}end(e,t,r){return this}setEncoding(e){return this}pause(){return this}resume(){return this}setTimeout(e,t){return this}setNoDelay(e){return this}setKeepAlive(e,t){return this}address(){return {}}unref(){return this}ref(){return this}destroySoon(){this.destroy();}resetAndDestroy(){const e=new Error("ERR_SOCKET_CLOSED");return e.code="ERR_SOCKET_CLOSED",this.destroy(e),this}}class y extends i$1{aborted=false;httpVersion="1.1";httpVersionMajor=1;httpVersionMinor=1;complete=true;connection;socket;headers={};trailers={};method="GET";url="/";statusCode=200;statusMessage="";closed=false;errored=null;readable=false;constructor(e){super(),this.socket=this.connection=e||new A;}get rawHeaders(){const e=this.headers,t=[];for(const r in e)if(Array.isArray(e[r]))for(const s of e[r])t.push(r,s);else t.push(r,e[r]);return t}get rawTrailers(){return []}setTimeout(e,t){return this}get headersDistinct(){return p(this.headers)}get trailersDistinct(){return p(this.trailers)}}function p(n){const e={};for(const[t,r]of Object.entries(n))t&&(e[t]=(Array.isArray(r)?r:[r]).filter(Boolean));return e}class w extends l$1{statusCode=200;statusMessage="";upgrading=false;chunkedEncoding=false;shouldKeepAlive=false;useChunkedEncodingByDefault=false;sendDate=false;finished=false;headersSent=false;strictContentLength=false;connection=null;socket=null;req;_headers={};constructor(e){super(),this.req=e;}assignSocket(e){e._httpMessage=this,this.socket=e,this.connection=e,this.emit("socket",e),this._flush();}_flush(){this.flushHeaders();}detachSocket(e){}writeContinue(e){}writeHead(e,t,r){e&&(this.statusCode=e),typeof t=="string"&&(this.statusMessage=t,t=void 0);const s=r||t;if(s&&!Array.isArray(s))for(const a in s)this.setHeader(a,s[a]);return this.headersSent=true,this}writeProcessing(){}setTimeout(e,t){return this}appendHeader(e,t){e=e.toLowerCase();const r=this._headers[e],s=[...Array.isArray(r)?r:[r],...Array.isArray(t)?t:[t]].filter(Boolean);return this._headers[e]=s.length>1?s:s[0],this}setHeader(e,t){return this._headers[e.toLowerCase()]=t,this}setHeaders(e){for(const[t,r]of Object.entries(e))this.setHeader(t,r);return this}getHeader(e){return this._headers[e.toLowerCase()]}getHeaders(){return this._headers}getHeaderNames(){return Object.keys(this._headers)}hasHeader(e){return e.toLowerCase()in this._headers}removeHeader(e){delete this._headers[e.toLowerCase()];}addTrailers(e){}flushHeaders(){}writeEarlyHints(e,t){typeof t=="function"&&t();}}const E=(()=>{const n=function(){};return n.prototype=Object.create(null),n})();function R(n={}){const e=new E,t=Array.isArray(n)||H(n)?n:Object.entries(n);for(const[r,s]of t)if(s){if(e[r]===void 0){e[r]=s;continue}e[r]=[...Array.isArray(e[r])?e[r]:[e[r]],...Array.isArray(s)?s:[s]];}return e}function H(n){return typeof n?.entries=="function"}function v(n={}){if(n instanceof Headers)return n;const e=new Headers;for(const[t,r]of Object.entries(n))if(r!==void 0){if(Array.isArray(r)){for(const s of r)e.append(t,String(s));continue}e.set(t,String(r));}return e}const S=new Set([101,204,205,304]);async function b(n,e){const t=new y,r=new w(t);t.url=e.url?.toString()||"/";let s;if(!t.url.startsWith("/")){const d=new URL(t.url);s=d.host,t.url=d.pathname+d.search+d.hash;}t.method=e.method||"GET",t.headers=R(e.headers||{}),t.headers.host||(t.headers.host=e.host||s||"localhost"),t.connection.encrypted=t.connection.encrypted||e.protocol==="https",t.body=e.body||null,t.__unenv__=e.context,await n(t,r);let a=r._data;(S.has(r.statusCode)||t.method.toUpperCase()==="HEAD")&&(a=null,delete r._headers["content-length"]);const u={status:r.statusCode,statusText:r.statusMessage,headers:r._headers,body:a};return t.destroy(),r.destroy(),u}async function C(n,e,t={}){try{const r=await b(n,{url:e,...t});return new Response(r.body,{status:r.status,statusText:r.statusText,headers:v(r.headers)})}catch(r){return new Response(r.toString(),{status:Number.parseInt(r.statusCode||r.code)||500,statusText:r.statusText})}}
1171
1171
 
1172
1172
  function hasProp(obj, prop) {
1173
1173
  try {
@@ -5106,7 +5106,7 @@ function _expandFromEnv(value) {
5106
5106
  const _inlineRuntimeConfig = {
5107
5107
  "app": {
5108
5108
  "baseURL": "/",
5109
- "buildId": "4d990d25-ebbb-4fe4-a23b-3d28c7f42fee",
5109
+ "buildId": "55c10854-ee0e-4be4-924b-a1b0e100fe11",
5110
5110
  "buildAssetsDir": "/_nuxt/",
5111
5111
  "cdnURL": ""
5112
5112
  },
@@ -5136,7 +5136,7 @@ const _inlineRuntimeConfig = {
5136
5136
  "public": {
5137
5137
  "appName": "AgentWorkShop",
5138
5138
  "appTitle": "AgentWorkShop",
5139
- "version": "0.7.2",
5139
+ "version": "0.7.4",
5140
5140
  "description": "基于 Nuxt 4 的配置驱动运行范式",
5141
5141
  "mode": "dev",
5142
5142
  "apiBase": "/api",
@@ -6117,14 +6117,14 @@ function publicAssetsURL(...path) {
6117
6117
  return path.length ? joinRelativeURL(publicBase, ...path) : publicBase;
6118
6118
  }
6119
6119
 
6120
- var __defProp$C = Object.defineProperty;
6121
- var __defNormalProp$C = (obj, key, value) => key in obj ? __defProp$C(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6122
- var __publicField$C = (obj, key, value) => __defNormalProp$C(obj, typeof key !== "symbol" ? key + "" : key, value);
6120
+ var __defProp$D = Object.defineProperty;
6121
+ var __defNormalProp$D = (obj, key, value) => key in obj ? __defProp$D(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6122
+ var __publicField$D = (obj, key, value) => __defNormalProp$D(obj, typeof key !== "symbol" ? key + "" : key, value);
6123
6123
  class AppError extends Error {
6124
6124
  constructor(status, code, message) {
6125
6125
  super(message);
6126
- __publicField$C(this, "status");
6127
- __publicField$C(this, "code");
6126
+ __publicField$D(this, "status");
6127
+ __publicField$D(this, "code");
6128
6128
  this.name = "AppError";
6129
6129
  this.status = status;
6130
6130
  this.code = code;
@@ -6545,7 +6545,7 @@ function validatePluginModule(mod, source) {
6545
6545
  // 错误隔离:单插件装载/执行失败记入 failures,绝不拖垮主服务。
6546
6546
  // ============================================================
6547
6547
 
6548
- const g$p = globalThis;
6548
+ const g$q = globalThis;
6549
6549
 
6550
6550
  function log$r() {
6551
6551
  return {
@@ -6620,7 +6620,7 @@ function discoverPluginDirs(cwd = process.cwd()) {
6620
6620
  * 装载插件宿主(idempotent;nitro 启动期调用一次)。
6621
6621
  */
6622
6622
  async function initPluginHost({ cwd = process.cwd(), packageRoot } = {}) {
6623
- if (g$p.__awPluginHost) return g$p.__awPluginHost
6623
+ if (g$q.__awPluginHost) return g$q.__awPluginHost
6624
6624
  const logger = log$r();
6625
6625
  const homeDir = modePaths(cwd).homeDir;
6626
6626
  const host = {
@@ -6638,7 +6638,7 @@ async function initPluginHost({ cwd = process.cwd(), packageRoot } = {}) {
6638
6638
  packageRoot,
6639
6639
  logger,
6640
6640
  };
6641
- g$p.__awPluginHost = host;
6641
+ g$q.__awPluginHost = host;
6642
6642
 
6643
6643
  // 有效配置(只读面;引擎/模式解析从运行根动态加载)
6644
6644
  let config = null;
@@ -6932,32 +6932,32 @@ function ensureStateWatcher(host) {
6932
6932
 
6933
6933
  /** 单例访问(未初始化返回 null —— 桥接点据此快速 no-op) */
6934
6934
  function getPluginHost() {
6935
- return g$p.__awPluginHost ?? null
6935
+ return g$q.__awPluginHost ?? null
6936
6936
  }
6937
6937
 
6938
6938
  /** scene-events 桥:全部无频道实时事件 → 插件 event:<type> */
6939
6939
  function emitPluginEvent(type, payload) {
6940
- void g$p.__awPluginHost?.bus.emit(`event:${type}`, payload);
6940
+ void g$q.__awPluginHost?.bus.emit(`event:${type}`, payload);
6941
6941
  }
6942
6942
 
6943
6943
  /** DAQ 下发级采样钩子(与 WS daq.reading 同点、同节拍语义) */
6944
6944
  function emitDaqSample(payload) {
6945
- void g$p.__awPluginHost?.bus.emit('daq:sample', payload);
6945
+ void g$q.__awPluginHost?.bus.emit('daq:sample', payload);
6946
6946
  }
6947
6947
 
6948
6948
  /** 帧观察钩子(v2 多形态信号;载荷只含元数据/指标/预览,不含 blob) */
6949
6949
  function emitDaqFrame(payload) {
6950
- void g$p.__awPluginHost?.bus.emit('daq:frame', payload);
6950
+ void g$q.__awPluginHost?.bus.emit('daq:frame', payload);
6951
6951
  }
6952
6952
 
6953
6953
  /** 写控 ACK 后观察钩子 */
6954
6954
  function emitDcwWrite(payload) {
6955
- void g$p.__awPluginHost?.bus.emit('dcw:write', payload);
6955
+ void g$q.__awPluginHost?.bus.emit('dcw:write', payload);
6956
6956
  }
6957
6957
 
6958
6958
  /** 产线启停钩子 */
6959
6959
  function emitLineLifecycle(kind, payload) {
6960
- void g$p.__awPluginHost?.bus.emit(kind, payload);
6960
+ void g$q.__awPluginHost?.bus.emit(kind, payload);
6961
6961
  }
6962
6962
 
6963
6963
  /** 客户端脚本读取(免鉴权只读端点用;越界路径拒绝) */
@@ -7005,10 +7005,10 @@ async function shutdownPluginHost() {
7005
7005
  }
7006
7006
 
7007
7007
  const AEP_VERSION$1 = 1;
7008
- const g$o = globalThis;
7008
+ const g$p = globalThis;
7009
7009
  function peers() {
7010
7010
  var _a;
7011
- return (_a = g$o.__sceneEventPeers) != null ? _a : g$o.__sceneEventPeers = /* @__PURE__ */ new Set();
7011
+ return (_a = g$p.__sceneEventPeers) != null ? _a : g$p.__sceneEventPeers = /* @__PURE__ */ new Set();
7012
7012
  }
7013
7013
  function registerScenePeer(peer) {
7014
7014
  peers().add(peer);
@@ -7022,15 +7022,18 @@ function sceneEventPeerCount() {
7022
7022
  function broadcastSceneEvent(type, payload) {
7023
7023
  emitPluginEvent(type, payload);
7024
7024
  if (peers().size === 0) return;
7025
- const e = {
7026
- v: AEP_VERSION$1,
7027
- type,
7028
- seq: 0,
7029
- at: (/* @__PURE__ */ new Date()).toISOString(),
7030
- channelId: "",
7031
- payload
7032
- };
7033
- const frame = JSON.stringify(e);
7025
+ const frame = JSON.stringify({ v: AEP_VERSION$1, type, seq: 0, at: (/* @__PURE__ */ new Date()).toISOString(), channelId: "", payload });
7026
+ for (const peer of peers()) {
7027
+ try {
7028
+ peer.send(frame);
7029
+ } catch {
7030
+ peers().delete(peer);
7031
+ }
7032
+ }
7033
+ }
7034
+ function broadcastPeerEvent(type, payload) {
7035
+ if (peers().size === 0) return;
7036
+ const frame = JSON.stringify({ v: AEP_VERSION$1, type, seq: 0, at: (/* @__PURE__ */ new Date()).toISOString(), channelId: "", payload });
7034
7037
  for (const peer of peers()) {
7035
7038
  try {
7036
7039
  peer.send(frame);
@@ -7042,19 +7045,20 @@ function broadcastSceneEvent(type, payload) {
7042
7045
 
7043
7046
  const sceneEvents = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
7044
7047
  __proto__: null,
7048
+ broadcastPeerEvent: broadcastPeerEvent,
7045
7049
  broadcastSceneEvent: broadcastSceneEvent,
7046
7050
  registerScenePeer: registerScenePeer,
7047
7051
  sceneEventPeerCount: sceneEventPeerCount,
7048
7052
  unregisterScenePeer: unregisterScenePeer
7049
7053
  }, Symbol.toStringTag, { value: 'Module' }));
7050
7054
 
7051
- const g$n = globalThis;
7055
+ const g$o = globalThis;
7052
7056
  function bindOpsRepos(repos) {
7053
- g$n.__opsRepos = repos;
7057
+ g$o.__opsRepos = repos;
7054
7058
  }
7055
7059
  function getOps() {
7056
7060
  var _a;
7057
- return (_a = g$n.__opsRepos) != null ? _a : null;
7061
+ return (_a = g$o.__opsRepos) != null ? _a : null;
7058
7062
  }
7059
7063
  function audit(entry) {
7060
7064
  var _a;
@@ -7721,7 +7725,7 @@ function securityHitlTimeoutMs() {
7721
7725
  return Number((_a = effective()["security.hitl_timeout_ms"]) != null ? _a : 18e4);
7722
7726
  }
7723
7727
 
7724
- const g$m = globalThis;
7728
+ const g$n = globalThis;
7725
7729
  const DB_FILES = ["workshop.sqlite", "users.sqlite", "daq-timeseries.sqlite"];
7726
7730
  async function backupOne(src, target) {
7727
7731
  const db = new DatabaseSync(src);
@@ -7758,13 +7762,13 @@ async function backupOnce(dataDir) {
7758
7762
  }
7759
7763
  }
7760
7764
  console.log("[backup] \u5FEB\u7167\u5B8C\u6210 \u2192", backupDir);
7761
- g$m.__awBackupLastAt = (/* @__PURE__ */ new Date()).toISOString();
7765
+ g$n.__awBackupLastAt = (/* @__PURE__ */ new Date()).toISOString();
7762
7766
  }
7763
7767
  function backupPlugin() {
7764
7768
  var _a, _b;
7765
7769
  const backupCfg = backupSettings();
7766
7770
  if (backupCfg.disabled) return;
7767
- if (g$m.__awBackupTimer) return;
7771
+ if (g$n.__awBackupTimer) return;
7768
7772
  const dataDir = ensureDataDir();
7769
7773
  const first = setTimeout(() => {
7770
7774
  try {
@@ -7783,7 +7787,7 @@ function backupPlugin() {
7783
7787
  }
7784
7788
  }, hours * 36e5);
7785
7789
  (_b = timer.unref) == null ? void 0 : _b.call(timer);
7786
- g$m.__awBackupTimer = timer;
7790
+ g$n.__awBackupTimer = timer;
7787
7791
  }
7788
7792
 
7789
7793
  const LEVELS = { debug: 10, info: 20, warn: 30, error: 40 };
@@ -7830,10 +7834,10 @@ function createLogger(scope) {
7830
7834
 
7831
7835
  const log$q = createLogger("daq.infra");
7832
7836
  const execFileAsync = promisify(execFile);
7833
- const g$l = globalThis;
7837
+ const g$m = globalThis;
7834
7838
  function state$1() {
7835
7839
  var _a;
7836
- return (_a = g$l.__daqInfra) != null ? _a : g$l.__daqInfra = {
7840
+ return (_a = g$m.__daqInfra) != null ? _a : g$m.__daqInfra = {
7837
7841
  cfg: { startInfrastructure: "auto", mqtt: { host: "127.0.0.1", port: 1883 }, timescale: { host: "127.0.0.1", port: 5432, user: "postgres", password: "awshop", database: "awshop" } },
7838
7842
  status: { mqttOnline: false, tsdbOnline: false, objectStoreOnline: false, degraded: true, warning: "", startedBy: "none", lastCheckAt: (/* @__PURE__ */ new Date()).toISOString() }
7839
7843
  };
@@ -7965,18 +7969,18 @@ function scheduleAutoReconnect(onRestored) {
7965
7969
  (_b = (_a = st.retryTimer).unref) == null ? void 0 : _b.call(_a);
7966
7970
  }
7967
7971
 
7968
- var __defProp$B = Object.defineProperty;
7969
- var __defNormalProp$B = (obj, key, value) => key in obj ? __defProp$B(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7970
- var __publicField$B = (obj, key, value) => __defNormalProp$B(obj, typeof key !== "symbol" ? key + "" : key, value);
7972
+ var __defProp$C = Object.defineProperty;
7973
+ var __defNormalProp$C = (obj, key, value) => key in obj ? __defProp$C(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7974
+ var __publicField$C = (obj, key, value) => __defNormalProp$C(obj, typeof key !== "symbol" ? key + "" : key, value);
7971
7975
  const log$p = createLogger("daq.tsdb.sqlite");
7972
7976
  const DB_PATH$9 = join(ensureDataDir(), "daq-timeseries.sqlite");
7973
7977
  class SqliteTimeSeriesAdapter {
7974
7978
  constructor() {
7975
- __publicField$B(this, "backend", "sqlite-emulated");
7976
- __publicField$B(this, "db", null);
7979
+ __publicField$C(this, "backend", "sqlite-emulated");
7980
+ __publicField$C(this, "db", null);
7977
7981
  /** 启动清理水位(daq.tsRetentionH;env DAQ_TS_RETENTION_H 兼容) */
7978
- __publicField$B(this, "retentionH", daqRuntimeSettings().tsRetentionH);
7979
- __publicField$B(this, "retentionTimer", null);
7982
+ __publicField$C(this, "retentionH", daqRuntimeSettings().tsRetentionH);
7983
+ __publicField$C(this, "retentionTimer", null);
7980
7984
  }
7981
7985
  async init() {
7982
7986
  var _a, _b;
@@ -8245,20 +8249,20 @@ function asObject$1(v) {
8245
8249
  return v && typeof v === "object" ? v : {};
8246
8250
  }
8247
8251
 
8248
- var __defProp$A = Object.defineProperty;
8249
- var __defNormalProp$A = (obj, key, value) => key in obj ? __defProp$A(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8250
- var __publicField$A = (obj, key, value) => __defNormalProp$A(obj, typeof key !== "symbol" ? key + "" : key, value);
8252
+ var __defProp$B = Object.defineProperty;
8253
+ var __defNormalProp$B = (obj, key, value) => key in obj ? __defProp$B(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8254
+ var __publicField$B = (obj, key, value) => __defNormalProp$B(obj, typeof key !== "symbol" ? key + "" : key, value);
8251
8255
  const requirePg = createRequire(globalThis._importMeta_.url);
8252
8256
  class TimescaleAdapter {
8253
8257
  constructor(url) {
8254
- __publicField$A(this, "url", url);
8255
- __publicField$A(this, "backend", "timescale");
8256
- __publicField$A(this, "pool", null);
8257
- __publicField$A(this, "retentionTimer", null);
8258
+ __publicField$B(this, "url", url);
8259
+ __publicField$B(this, "backend", "timescale");
8260
+ __publicField$B(this, "pool", null);
8261
+ __publicField$B(this, "retentionTimer", null);
8258
8262
  /** 保留期(daq.tsRetentionH;env DAQ_TS_RETENTION_H 兼容) */
8259
- __publicField$A(this, "retentionH", daqRuntimeSettings().tsRetentionH);
8263
+ __publicField$B(this, "retentionH", daqRuntimeSettings().tsRetentionH);
8260
8264
  /** 帧保留期(daq.frameRetentionH;env DAQ_FRAME_RETENTION_H 兼容) */
8261
- __publicField$A(this, "frameRetentionH", daqRuntimeSettings().frameRetentionH);
8265
+ __publicField$B(this, "frameRetentionH", daqRuntimeSettings().frameRetentionH);
8262
8266
  }
8263
8267
  async init() {
8264
8268
  var _a, _b;
@@ -8515,7 +8519,7 @@ function tsToMs(v) {
8515
8519
  }
8516
8520
 
8517
8521
  const log$o = createLogger("daq.tsdb");
8518
- const g$k = globalThis;
8522
+ const g$l = globalThis;
8519
8523
  function makeFallback$1(reason) {
8520
8524
  const dev = new SqliteTimeSeriesAdapter();
8521
8525
  dev.init();
@@ -8524,7 +8528,7 @@ function makeFallback$1(reason) {
8524
8528
  }
8525
8529
  const tsdbReady = (() => {
8526
8530
  var _a;
8527
- const st = (_a = g$k.__daqTsdbState) != null ? _a : g$k.__daqTsdbState = {};
8531
+ const st = (_a = g$l.__daqTsdbState) != null ? _a : g$l.__daqTsdbState = {};
8528
8532
  if (!st.current) {
8529
8533
  const url = process.env.DAQ_TSDB_URL;
8530
8534
  if (!url) {
@@ -8538,8 +8542,8 @@ const tsdbReady = (() => {
8538
8542
  () => log$o.info("[daq-tsdb] TimescaleDB \u5C31\u7EEA:", url.replace(/\/\/[^@]*@/, "//***@")),
8539
8543
  (err) => {
8540
8544
  var _a2;
8541
- if (((_a2 = g$k.__daqTsdbState) == null ? void 0 : _a2.current) === adapter) {
8542
- g$k.__daqTsdbState.current = makeFallback$1(err instanceof Error ? err.message : String(err));
8545
+ if (((_a2 = g$l.__daqTsdbState) == null ? void 0 : _a2.current) === adapter) {
8546
+ g$l.__daqTsdbState.current = makeFallback$1(err instanceof Error ? err.message : String(err));
8543
8547
  }
8544
8548
  }
8545
8549
  );
@@ -8549,7 +8553,7 @@ const tsdbReady = (() => {
8549
8553
  })();
8550
8554
  function getTsdb() {
8551
8555
  var _a;
8552
- const st = (_a = g$k.__daqTsdbState) != null ? _a : g$k.__daqTsdbState = {};
8556
+ const st = (_a = g$l.__daqTsdbState) != null ? _a : g$l.__daqTsdbState = {};
8553
8557
  let cur = st.current;
8554
8558
  if (!cur) {
8555
8559
  cur = new SqliteTimeSeriesAdapter();
@@ -8561,7 +8565,7 @@ function getTsdb() {
8561
8565
  }
8562
8566
  async function rebuildTsdb(online, url) {
8563
8567
  var _a, _b, _c;
8564
- const st = (_a = g$k.__daqTsdbState) != null ? _a : g$k.__daqTsdbState = {};
8568
+ const st = (_a = g$l.__daqTsdbState) != null ? _a : g$l.__daqTsdbState = {};
8565
8569
  const swap = (next) => {
8566
8570
  var _a2;
8567
8571
  const old = st.current;
@@ -8603,13 +8607,13 @@ const index = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
8603
8607
  tsdbReady: tsdbReady
8604
8608
  }, Symbol.toStringTag, { value: 'Module' }));
8605
8609
 
8606
- var __defProp$z = Object.defineProperty;
8607
- var __defNormalProp$z = (obj, key, value) => key in obj ? __defProp$z(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8608
- var __publicField$z = (obj, key, value) => __defNormalProp$z(obj, key + "" , value);
8610
+ var __defProp$A = Object.defineProperty;
8611
+ var __defNormalProp$A = (obj, key, value) => key in obj ? __defProp$A(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8612
+ var __publicField$A = (obj, key, value) => __defNormalProp$A(obj, key + "" , value);
8609
8613
  const ROOT = resolve$1(join(ensureDataDir(), "daq-objects"));
8610
8614
  class DiskObjectAdapter {
8611
8615
  constructor() {
8612
- __publicField$z(this, "backend", "disk");
8616
+ __publicField$A(this, "backend", "disk");
8613
8617
  }
8614
8618
  async init() {
8615
8619
  await mkdir(ROOT, { recursive: true });
@@ -8632,15 +8636,15 @@ class DiskObjectAdapter {
8632
8636
  }
8633
8637
  }
8634
8638
 
8635
- var __defProp$y = Object.defineProperty;
8636
- var __defNormalProp$y = (obj, key, value) => key in obj ? __defProp$y(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8637
- var __publicField$y = (obj, key, value) => __defNormalProp$y(obj, typeof key !== "symbol" ? key + "" : key, value);
8639
+ var __defProp$z = Object.defineProperty;
8640
+ var __defNormalProp$z = (obj, key, value) => key in obj ? __defProp$z(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8641
+ var __publicField$z = (obj, key, value) => __defNormalProp$z(obj, typeof key !== "symbol" ? key + "" : key, value);
8638
8642
  const reqOs = createRequire(globalThis._importMeta_.url);
8639
8643
  class MinioObjectAdapter {
8640
8644
  constructor(opts) {
8641
- __publicField$y(this, "opts", opts);
8642
- __publicField$y(this, "backend", "minio");
8643
- __publicField$y(this, "client", null);
8645
+ __publicField$z(this, "opts", opts);
8646
+ __publicField$z(this, "backend", "minio");
8647
+ __publicField$z(this, "client", null);
8644
8648
  }
8645
8649
  async init() {
8646
8650
  const mod = reqOs("minio");
@@ -8675,7 +8679,7 @@ class MinioObjectAdapter {
8675
8679
  }
8676
8680
 
8677
8681
  const log$n = createLogger("daq.objectstore");
8678
- const g$j = globalThis;
8682
+ const g$k = globalThis;
8679
8683
  function parseObjectStoreUrl(url) {
8680
8684
  try {
8681
8685
  const u = new URL(url);
@@ -8699,7 +8703,7 @@ function makeFallback(reason) {
8699
8703
  }
8700
8704
  function getObjectStore() {
8701
8705
  var _a;
8702
- const st = (_a = g$j.__daqObjectStoreState) != null ? _a : g$j.__daqObjectStoreState = {};
8706
+ const st = (_a = g$k.__daqObjectStoreState) != null ? _a : g$k.__daqObjectStoreState = {};
8703
8707
  let cur = st.current;
8704
8708
  if (!cur) {
8705
8709
  cur = new DiskObjectAdapter();
@@ -8711,7 +8715,7 @@ function getObjectStore() {
8711
8715
  }
8712
8716
  async function rebuildObjectStore(online, url) {
8713
8717
  var _a, _b, _c;
8714
- const st = (_a = g$j.__daqObjectStoreState) != null ? _a : g$j.__daqObjectStoreState = {};
8718
+ const st = (_a = g$k.__daqObjectStoreState) != null ? _a : g$k.__daqObjectStoreState = {};
8715
8719
  const swap = (next) => {
8716
8720
  var _a2;
8717
8721
  const old = st.current;
@@ -8746,20 +8750,20 @@ async function rebuildObjectStore(online, url) {
8746
8750
  log$n.info(`[daq-objectstore] MinIO \u5C31\u7EEA(${parsed.endPoint}:${parsed.port}/${parsed.bucket})`);
8747
8751
  }
8748
8752
 
8749
- var __defProp$x = Object.defineProperty;
8750
- var __defNormalProp$x = (obj, key, value) => key in obj ? __defProp$x(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8751
- var __publicField$x = (obj, key, value) => __defNormalProp$x(obj, typeof key !== "symbol" ? key + "" : key, value);
8753
+ var __defProp$y = Object.defineProperty;
8754
+ var __defNormalProp$y = (obj, key, value) => key in obj ? __defProp$y(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8755
+ var __publicField$y = (obj, key, value) => __defNormalProp$y(obj, typeof key !== "symbol" ? key + "" : key, value);
8752
8756
  const log$m = createLogger("daq.queue");
8753
8757
  const QUEUE_CAP = 1e4;
8754
8758
  const PUMP_INTERVAL = 250;
8755
8759
  class InProcQueueAdapter {
8756
8760
  constructor() {
8757
- __publicField$x(this, "backend", "inproc");
8758
- __publicField$x(this, "queue", []);
8759
- __publicField$x(this, "consumers", /* @__PURE__ */ new Set());
8760
- __publicField$x(this, "pump", null);
8761
+ __publicField$y(this, "backend", "inproc");
8762
+ __publicField$y(this, "queue", []);
8763
+ __publicField$y(this, "consumers", /* @__PURE__ */ new Set());
8764
+ __publicField$y(this, "pump", null);
8761
8765
  /** 拥塞丢弃计数(观测用;正常远低于队列容量) */
8762
- __publicField$x(this, "dropped", 0);
8766
+ __publicField$y(this, "dropped", 0);
8763
8767
  }
8764
8768
  get lost() {
8765
8769
  return this.dropped;
@@ -8798,9 +8802,9 @@ class InProcQueueAdapter {
8798
8802
  }
8799
8803
  }
8800
8804
 
8801
- var __defProp$w = Object.defineProperty;
8802
- var __defNormalProp$w = (obj, key, value) => key in obj ? __defProp$w(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8803
- var __publicField$w = (obj, key, value) => __defNormalProp$w(obj, typeof key !== "symbol" ? key + "" : key, value);
8805
+ var __defProp$x = Object.defineProperty;
8806
+ var __defNormalProp$x = (obj, key, value) => key in obj ? __defProp$x(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8807
+ var __publicField$x = (obj, key, value) => __defNormalProp$x(obj, typeof key !== "symbol" ? key + "" : key, value);
8804
8808
  const log$l = createLogger("daq.mqtt");
8805
8809
  const requireMqtt = createRequire(globalThis._importMeta_.url);
8806
8810
  const TOPIC_ROOT = "aw/daq";
@@ -8809,16 +8813,16 @@ const TOPIC_WILDCARD = `${TOPIC_ROOT}/+/sample`;
8809
8813
  const OFFLINE_CAP = 2e3;
8810
8814
  class MqttQueueAdapter {
8811
8815
  constructor(url) {
8812
- __publicField$w(this, "url", url);
8813
- __publicField$w(this, "backend", "mqtt");
8814
- __publicField$w(this, "client", null);
8815
- __publicField$w(this, "consumers", /* @__PURE__ */ new Set());
8816
- __publicField$w(this, "published", 0);
8817
- __publicField$w(this, "received", 0);
8816
+ __publicField$x(this, "url", url);
8817
+ __publicField$x(this, "backend", "mqtt");
8818
+ __publicField$x(this, "client", null);
8819
+ __publicField$x(this, "consumers", /* @__PURE__ */ new Set());
8820
+ __publicField$x(this, "published", 0);
8821
+ __publicField$x(this, "received", 0);
8818
8822
  /** 断连窗口未发布计数(仪表可见的队列层丢弃) */
8819
- __publicField$w(this, "lostCount", 0);
8823
+ __publicField$x(this, "lostCount", 0);
8820
8824
  /** 断连离线缓冲(重连后按原序补发;带上限防内存无限涨) */
8821
- __publicField$w(this, "offline", []);
8825
+ __publicField$x(this, "offline", []);
8822
8826
  }
8823
8827
  get lost() {
8824
8828
  return this.lostCount;
@@ -8886,36 +8890,36 @@ class MqttQueueAdapter {
8886
8890
  }
8887
8891
 
8888
8892
  const log$k = createLogger("daq.queue");
8889
- const g$i = globalThis;
8893
+ const g$j = globalThis;
8890
8894
  async function getDaqQueue() {
8891
- if (!g$i.__daqQueue) {
8892
- g$i.__daqQueue = new InProcQueueAdapter();
8893
- await g$i.__daqQueue.init();
8895
+ if (!g$j.__daqQueue) {
8896
+ g$j.__daqQueue = new InProcQueueAdapter();
8897
+ await g$j.__daqQueue.init();
8894
8898
  log$k.info("[daq-queue] \u8FDB\u7A0B\u5185 mock \u961F\u5217\u5C31\u7EEA(\u542F\u52A8\u63D2\u4EF6\u5C06\u6309 infra \u72B6\u6001\u88C5\u914D MQTT)");
8895
8899
  }
8896
- return g$i.__daqQueue;
8900
+ return g$j.__daqQueue;
8897
8901
  }
8898
8902
  async function rebuildDaqQueue(online, url) {
8899
8903
  var _a;
8900
8904
  if (!online || !url) {
8901
- if (((_a = g$i.__daqQueue) == null ? void 0 : _a.backend) !== "inproc") {
8902
- g$i.__daqQueue = new InProcQueueAdapter();
8903
- await g$i.__daqQueue.init();
8905
+ if (((_a = g$j.__daqQueue) == null ? void 0 : _a.backend) !== "inproc") {
8906
+ g$j.__daqQueue = new InProcQueueAdapter();
8907
+ await g$j.__daqQueue.init();
8904
8908
  log$k.warn("[daq-queue] \u964D\u7EA7\u8FDB\u7A0B\u5185\u961F\u5217");
8905
8909
  }
8906
- return g$i.__daqQueue;
8910
+ return g$j.__daqQueue;
8907
8911
  }
8908
8912
  try {
8909
8913
  const adapter = new MqttQueueAdapter(url);
8910
8914
  await adapter.init();
8911
- g$i.__daqQueue = adapter;
8915
+ g$j.__daqQueue = adapter;
8912
8916
  log$k.info("[daq-queue] MQTT \u961F\u5217\u5C31\u7EEA:", url);
8913
8917
  return adapter;
8914
8918
  } catch (err) {
8915
8919
  log$k.error("[daq-queue] MQTT \u521D\u59CB\u5316\u5931\u8D25,\u56DE\u9000\u8FDB\u7A0B\u5185\u961F\u5217:", err instanceof Error ? err.message : err);
8916
- g$i.__daqQueue = new InProcQueueAdapter();
8917
- await g$i.__daqQueue.init();
8918
- return g$i.__daqQueue;
8920
+ g$j.__daqQueue = new InProcQueueAdapter();
8921
+ await g$j.__daqQueue.init();
8922
+ return g$j.__daqQueue;
8919
8923
  }
8920
8924
  }
8921
8925
 
@@ -9169,9 +9173,9 @@ function resizeGray(src, w, h, tw, th) {
9169
9173
  return out;
9170
9174
  }
9171
9175
 
9172
- var __defProp$v = Object.defineProperty;
9173
- var __defNormalProp$v = (obj, key, value) => key in obj ? __defProp$v(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9174
- var __publicField$v = (obj, key, value) => __defNormalProp$v(obj, typeof key !== "symbol" ? key + "" : key, value);
9176
+ var __defProp$w = Object.defineProperty;
9177
+ var __defNormalProp$w = (obj, key, value) => key in obj ? __defProp$w(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9178
+ var __publicField$w = (obj, key, value) => __defNormalProp$w(obj, typeof key !== "symbol" ? key + "" : key, value);
9175
9179
  var _a$2, _b$1, _c$1, _d;
9176
9180
  const log$j = createLogger("daq.drivers");
9177
9181
  const reqNative$1 = createRequire(globalThis._importMeta_.url);
@@ -9180,10 +9184,10 @@ const hashPhase = (id) => {
9180
9184
  for (const c of id) h = (h * 31 + c.charCodeAt(0)) % 628;
9181
9185
  return h;
9182
9186
  };
9183
- const g$h = globalThis;
9187
+ const g$i = globalThis;
9184
9188
  function mockStates() {
9185
9189
  var _a2;
9186
- return (_a2 = g$h.__daqMockStates) != null ? _a2 : g$h.__daqMockStates = /* @__PURE__ */ new Map();
9190
+ return (_a2 = g$i.__daqMockStates) != null ? _a2 : g$i.__daqMockStates = /* @__PURE__ */ new Map();
9187
9191
  }
9188
9192
  const mockDaqDriver = {
9189
9193
  kind: "mock",
@@ -9792,8 +9796,8 @@ const httpDaqDriver = {
9792
9796
  };
9793
9797
  class PlannedProtocolStub {
9794
9798
  constructor(kind, hint) {
9795
- __publicField$v(this, "kind", kind);
9796
- __publicField$v(this, "hint", hint);
9799
+ __publicField$w(this, "kind", kind);
9800
+ __publicField$w(this, "hint", hint);
9797
9801
  }
9798
9802
  async available() {
9799
9803
  return false;
@@ -9847,9 +9851,9 @@ async function probeDriverAvailability() {
9847
9851
  return out;
9848
9852
  }
9849
9853
 
9850
- var __defProp$u = Object.defineProperty;
9851
- var __defNormalProp$u = (obj, key, value) => key in obj ? __defProp$u(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9852
- var __publicField$u = (obj, key, value) => __defNormalProp$u(obj, typeof key !== "symbol" ? key + "" : key, value);
9854
+ var __defProp$v = Object.defineProperty;
9855
+ var __defNormalProp$v = (obj, key, value) => key in obj ? __defProp$v(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9856
+ var __publicField$v = (obj, key, value) => __defNormalProp$v(obj, typeof key !== "symbol" ? key + "" : key, value);
9853
9857
  const log$i = createLogger("daq.templates");
9854
9858
  const bad$1 = (msg) => new AppError(400, ErrorCodes.VALIDATION_ERROR, msg);
9855
9859
  const DB_PATH$8 = join(ensureDataDir(), "daq-templates.json");
@@ -9923,9 +9927,9 @@ function normalize$1(input, prev) {
9923
9927
  }
9924
9928
  class DaqTemplateRegistry {
9925
9929
  constructor() {
9926
- __publicField$u(this, "customs");
9930
+ __publicField$v(this, "customs");
9927
9931
  /** 插件注册模板(内存态,键 = 模板 key;插件热重载同名覆盖;不经 REST 增删) */
9928
- __publicField$u(this, "pluginTpls", /* @__PURE__ */ new Map());
9932
+ __publicField$v(this, "pluginTpls", /* @__PURE__ */ new Map());
9929
9933
  this.customs = load$7();
9930
9934
  }
9931
9935
  /** 全目录:内置在前(统一打 builtin 标记),插件模板居中(打 plugin 标记),自定义在后 */
@@ -10006,11 +10010,11 @@ class DaqTemplateRegistry {
10006
10010
  }
10007
10011
  }
10008
10012
  }
10009
- const g$g = globalThis;
10013
+ const g$h = globalThis;
10010
10014
  function getDaqTemplateRegistry() {
10011
10015
  var _a;
10012
- (_a = g$g.__daqTemplateRegistry) != null ? _a : g$g.__daqTemplateRegistry = new DaqTemplateRegistry();
10013
- return g$g.__daqTemplateRegistry;
10016
+ (_a = g$h.__daqTemplateRegistry) != null ? _a : g$h.__daqTemplateRegistry = new DaqTemplateRegistry();
10017
+ return g$h.__daqTemplateRegistry;
10014
10018
  }
10015
10019
  function listDaqTemplates() {
10016
10020
  return getDaqTemplateRegistry().all();
@@ -10026,45 +10030,45 @@ const daqTemplates = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProper
10026
10030
  listDaqTemplates: listDaqTemplates
10027
10031
  }, Symbol.toStringTag, { value: 'Module' }));
10028
10032
 
10029
- var __defProp$t = Object.defineProperty;
10030
- var __defNormalProp$t = (obj, key, value) => key in obj ? __defProp$t(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10031
- var __publicField$t = (obj, key, value) => __defNormalProp$t(obj, typeof key !== "symbol" ? key + "" : key, value);
10033
+ var __defProp$u = Object.defineProperty;
10034
+ var __defNormalProp$u = (obj, key, value) => key in obj ? __defProp$u(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10035
+ var __publicField$u = (obj, key, value) => __defNormalProp$u(obj, typeof key !== "symbol" ? key + "" : key, value);
10032
10036
  class DaqNode {
10033
10037
  constructor(o) {
10034
- __publicField$t(this, "id");
10038
+ __publicField$u(this, "id");
10035
10039
  /** 模板引用(daq-<key> 形态;域缺省来源) */
10036
- __publicField$t(this, "templateRef");
10037
- __publicField$t(this, "name");
10038
- __publicField$t(this, "driver");
10039
- __publicField$t(this, "enabled");
10040
+ __publicField$u(this, "templateRef");
10041
+ __publicField$u(this, "name");
10042
+ __publicField$u(this, "driver");
10043
+ __publicField$u(this, "enabled");
10040
10044
  /** null = 跟随 controller 全局周期 */
10041
- __publicField$t(this, "intervalMs");
10045
+ __publicField$u(this, "intervalMs");
10042
10046
  /** WS 实时下发(消费)间隔;null = 跟随全局,0 = 每帧(随采样节拍) */
10043
- __publicField$t(this, "publishIntervalMs");
10044
- __publicField$t(this, "unit");
10045
- __publicField$t(this, "decimals");
10046
- __publicField$t(this, "min");
10047
- __publicField$t(this, "max");
10048
- __publicField$t(this, "warnLow");
10049
- __publicField$t(this, "warnHigh");
10050
- __publicField$t(this, "deviceBindingId");
10051
- __publicField$t(this, "driverConfig");
10052
- __publicField$t(this, "transform");
10053
- __publicField$t(this, "posX");
10054
- __publicField$t(this, "posZ");
10047
+ __publicField$u(this, "publishIntervalMs");
10048
+ __publicField$u(this, "unit");
10049
+ __publicField$u(this, "decimals");
10050
+ __publicField$u(this, "min");
10051
+ __publicField$u(this, "max");
10052
+ __publicField$u(this, "warnLow");
10053
+ __publicField$u(this, "warnHigh");
10054
+ __publicField$u(this, "deviceBindingId");
10055
+ __publicField$u(this, "driverConfig");
10056
+ __publicField$u(this, "transform");
10057
+ __publicField$u(this, "posX");
10058
+ __publicField$u(this, "posZ");
10055
10059
  /** 所属产线('' = 未分配;采集门控/场景光晕按产线隔离) */
10056
- __publicField$t(this, "lineId", "");
10060
+ __publicField$u(this, "lineId", "");
10057
10061
  /** 节点级采集语义备注(覆盖模板 semantics) */
10058
- __publicField$t(this, "semantics");
10059
- __publicField$t(this, "value");
10060
- __publicField$t(this, "state", "offline");
10061
- __publicField$t(this, "lastAt", null);
10062
+ __publicField$u(this, "semantics");
10063
+ __publicField$u(this, "value");
10064
+ __publicField$u(this, "state", "offline");
10065
+ __publicField$u(this, "lastAt", null);
10062
10066
  /** 最近一次采样失败原因(连接/超时/PLC 异常分类文案;成功采样后清空) */
10063
- __publicField$t(this, "lastError", null);
10067
+ __publicField$u(this, "lastError", null);
10064
10068
  /** 去抖候选态(连续 3 帧一致才切换;alarm/offline 立即生效,安全优先) */
10065
- __publicField$t(this, "stateCand", null);
10066
- __publicField$t(this, "stateCandN", 0);
10067
- __publicField$t(this, "createdAt");
10069
+ __publicField$u(this, "stateCand", null);
10070
+ __publicField$u(this, "stateCandN", 0);
10071
+ __publicField$u(this, "createdAt");
10068
10072
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
10069
10073
  const tpl = findDaqTemplate(daqKeyFromRef(o.templateRef));
10070
10074
  this.id = o.id;
@@ -10237,25 +10241,25 @@ class DaqNode {
10237
10241
  }
10238
10242
  }
10239
10243
 
10240
- var __defProp$s = Object.defineProperty;
10241
- var __defNormalProp$s = (obj, key, value) => key in obj ? __defProp$s(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10242
- var __publicField$s = (obj, key, value) => __defNormalProp$s(obj, typeof key !== "symbol" ? key + "" : key, value);
10244
+ var __defProp$t = Object.defineProperty;
10245
+ var __defNormalProp$t = (obj, key, value) => key in obj ? __defProp$t(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10246
+ var __publicField$t = (obj, key, value) => __defNormalProp$t(obj, typeof key !== "symbol" ? key + "" : key, value);
10243
10247
  const ERR_THROTTLE_MS = 3e4;
10244
10248
  const PUBLISH_INTERVAL_MAX = 6e4;
10245
10249
  class DaqNodeRuntime {
10246
10250
  constructor(node, host) {
10247
- __publicField$s(this, "node", node);
10248
- __publicField$s(this, "host", host);
10251
+ __publicField$t(this, "node", node);
10252
+ __publicField$t(this, "host", host);
10249
10253
  /** 采样时点(epoch ms;-Inf = 立即到期) */
10250
- __publicField$s(this, "lastSampleAt", Number.NEGATIVE_INFINITY);
10254
+ __publicField$t(this, "lastSampleAt", Number.NEGATIVE_INFINITY);
10251
10255
  /** WS 下发时点(0 = 立即可发) */
10252
- __publicField$s(this, "lastPublishAt", 0);
10256
+ __publicField$t(this, "lastPublishAt", 0);
10253
10257
  /** 已消费样本时间轴(乱序防御游标) */
10254
- __publicField$s(this, "lastIngestAt", 0);
10258
+ __publicField$t(this, "lastIngestAt", 0);
10255
10259
  /** 上次故障广播时刻 */
10256
- __publicField$s(this, "errAt", 0);
10260
+ __publicField$t(this, "errAt", 0);
10257
10261
  /** 采样在飞互斥(本节点串行;慢驱动不叠采也不阻塞邻居) */
10258
- __publicField$s(this, "sampling", false);
10262
+ __publicField$t(this, "sampling", false);
10259
10263
  }
10260
10264
  /** 元数据变更/网关重配后重置节拍(变化即刻生效,不等旧周期到期) */
10261
10265
  rearm() {
@@ -10372,9 +10376,9 @@ class DaqNodeRuntime {
10372
10376
  }
10373
10377
  }
10374
10378
 
10375
- var __defProp$r = Object.defineProperty;
10376
- var __defNormalProp$r = (obj, key, value) => key in obj ? __defProp$r(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10377
- var __publicField$r = (obj, key, value) => __defNormalProp$r(obj, typeof key !== "symbol" ? key + "" : key, value);
10379
+ var __defProp$s = Object.defineProperty;
10380
+ var __defNormalProp$s = (obj, key, value) => key in obj ? __defProp$s(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10381
+ var __publicField$s = (obj, key, value) => __defNormalProp$s(obj, typeof key !== "symbol" ? key + "" : key, value);
10378
10382
  const log$h = createLogger("daq.node-repo");
10379
10383
  const DB_PATH$7 = process.cwd().endsWith("server") ? "data/daqs.json" : path.join(process.cwd(), "server", "data", "daqs.json");
10380
10384
  function load$6() {
@@ -10388,8 +10392,8 @@ function load$6() {
10388
10392
  }
10389
10393
  class DaqNodeRepo {
10390
10394
  constructor() {
10391
- __publicField$r(this, "list");
10392
- __publicField$r(this, "flushTimer", null);
10395
+ __publicField$s(this, "list");
10396
+ __publicField$s(this, "flushTimer", null);
10393
10397
  this.list = load$6();
10394
10398
  }
10395
10399
  /** 磁盘 ↔ 内存同构:全量对象快照(启动恢复 / 诊断导出) */
@@ -10450,13 +10454,13 @@ const daqNode_repo = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProper
10450
10454
  getDaqNodeRepo: getDaqNodeRepo
10451
10455
  }, Symbol.toStringTag, { value: 'Module' }));
10452
10456
 
10453
- const g$f = globalThis;
10457
+ const g$g = globalThis;
10454
10458
  function bindDaqHostPorts(ports) {
10455
- g$f.__daqHostPorts = ports;
10459
+ g$g.__daqHostPorts = ports;
10456
10460
  }
10457
10461
  function getDaqHostPorts() {
10458
10462
  var _a;
10459
- return (_a = g$f.__daqHostPorts) != null ? _a : null;
10463
+ return (_a = g$g.__daqHostPorts) != null ? _a : null;
10460
10464
  }
10461
10465
 
10462
10466
  const log$g = createLogger("daq.frames");
@@ -10594,10 +10598,10 @@ const qualityGate = {
10594
10598
  }
10595
10599
  };
10596
10600
  const builtin = new Map([resample, deriveMetric, zones, thumbnail, qualityGate].map((p) => [p.name, p]));
10597
- const g$e = globalThis;
10601
+ const g$f = globalThis;
10598
10602
  function registry$2() {
10599
10603
  var _a;
10600
- return (_a = g$e.__daqFrameProcessors) != null ? _a : g$e.__daqFrameProcessors = /* @__PURE__ */ new Map();
10604
+ return (_a = g$f.__daqFrameProcessors) != null ? _a : g$f.__daqFrameProcessors = /* @__PURE__ */ new Map();
10601
10605
  }
10602
10606
  function registerFrameProcessor(p) {
10603
10607
  if (builtin.has(p.name)) log$g.warn(`[daq-frames] \u63D2\u4EF6\u5904\u7406\u5668\u8986\u76D6\u5185\u7F6E:\u300C${p.name}\u300D`);
@@ -10633,7 +10637,7 @@ function daqObjectKey(nodeId, tsMs, ext) {
10633
10637
 
10634
10638
  const RETRIES = 3;
10635
10639
  const ESCALATE_SWEEP_MS = 6e4;
10636
- const g$d = globalThis;
10640
+ const g$e = globalThis;
10637
10641
  async function postWebhook(payload, url) {
10638
10642
  var _a, _b;
10639
10643
  try {
@@ -10672,7 +10676,7 @@ function notifyAlarm(payload) {
10672
10676
  }
10673
10677
  function startAlarmEscalator() {
10674
10678
  var _a;
10675
- if (g$d.__awAlarmEscalator) return;
10679
+ if (g$e.__awAlarmEscalator) return;
10676
10680
  const escalateMin = Math.max(1, daqRuntimeSettings().alarmEscalateMinutes);
10677
10681
  const timer = setInterval(() => {
10678
10682
  var _a2;
@@ -10699,7 +10703,7 @@ function startAlarmEscalator() {
10699
10703
  }
10700
10704
  }, ESCALATE_SWEEP_MS);
10701
10705
  (_a = timer.unref) == null ? void 0 : _a.call(timer);
10702
- g$d.__awAlarmEscalator = timer;
10706
+ g$e.__awAlarmEscalator = timer;
10703
10707
  }
10704
10708
  function newAlarmId() {
10705
10709
  return `al-${randomUUID$1().slice(0, 8)}`;
@@ -10760,9 +10764,9 @@ function attachDaqPluginBridge() {
10760
10764
  );
10761
10765
  }
10762
10766
 
10763
- var __defProp$q = Object.defineProperty;
10764
- var __defNormalProp$q = (obj, key, value) => key in obj ? __defProp$q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10765
- var __publicField$q = (obj, key, value) => __defNormalProp$q(obj, typeof key !== "symbol" ? key + "" : key, value);
10767
+ var __defProp$r = Object.defineProperty;
10768
+ var __defNormalProp$r = (obj, key, value) => key in obj ? __defProp$r(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10769
+ var __publicField$r = (obj, key, value) => __defNormalProp$r(obj, typeof key !== "symbol" ? key + "" : key, value);
10766
10770
  const log$f = createLogger("daq.controller");
10767
10771
  attachDaqPluginBridge();
10768
10772
  const TSDB_FLUSH_MS = 500;
@@ -10772,40 +10776,40 @@ const TSDB_WRITE_RETRIES = 3;
10772
10776
  const FRAME_PREVIEW_POINTS = 64;
10773
10777
  class DaqController {
10774
10778
  constructor() {
10775
- __publicField$q(this, "repo", getDaqNodeRepo());
10776
- __publicField$q(this, "broadcast", null);
10777
- __publicField$q(this, "timer", null);
10779
+ __publicField$r(this, "repo", getDaqNodeRepo());
10780
+ __publicField$r(this, "broadcast", null);
10781
+ __publicField$r(this, "timer", null);
10778
10782
  /** 边缘运行时注册表(节点 id → 独立运行时;网关统一管理生命周期) */
10779
- __publicField$q(this, "runtimes", /* @__PURE__ */ new Map());
10783
+ __publicField$r(this, "runtimes", /* @__PURE__ */ new Map());
10780
10784
  /** TSDB 批量缓冲(consumer 攒批 → 定窗刷盘;上限背压,满丢最旧;产线窗口内逐样本打标) */
10781
- __publicField$q(this, "tsdbBuffer", []);
10785
+ __publicField$r(this, "tsdbBuffer", []);
10782
10786
  /** 帧攒批缓冲(v2:向量/图像元数据;与样本同窗刷盘) */
10783
- __publicField$q(this, "frameBuffer", []);
10787
+ __publicField$r(this, "frameBuffer", []);
10784
10788
  /** 帧指标告警态(nodeId::metricKey → ok/warn/alarm;边沿触发) */
10785
- __publicField$q(this, "metricStates", /* @__PURE__ */ new Map());
10786
- __publicField$q(this, "tsdbFlushTimer", null);
10789
+ __publicField$r(this, "metricStates", /* @__PURE__ */ new Map());
10790
+ __publicField$r(this, "tsdbFlushTimer", null);
10787
10791
  /** 单 in-flight 写:写库中不叠写(promise 链串行化) */
10788
- __publicField$q(this, "tsdbWriting", false);
10792
+ __publicField$r(this, "tsdbWriting", false);
10789
10793
  /** 消费侧真实丢弃计数:乱序迟到帧 */
10790
- __publicField$q(this, "lateDropped", 0);
10794
+ __publicField$r(this, "lateDropped", 0);
10791
10795
  /** 写库侧丢弃计数(重试耗尽/缓冲溢出) */
10792
- __publicField$q(this, "tsdbDropped", 0);
10793
- __publicField$q(this, "queueInit", null);
10796
+ __publicField$r(this, "tsdbDropped", 0);
10797
+ __publicField$r(this, "queueInit", null);
10794
10798
  /** 当前队列的消费退订(rebuild 后重挂) */
10795
- __publicField$q(this, "queueUnsub", null);
10799
+ __publicField$r(this, "queueUnsub", null);
10796
10800
  /** 管线就绪前生产者静默(队列/消费必须先在位) */
10797
- __publicField$q(this, "pipelineReady", false);
10798
- __publicField$q(this, "running", true);
10799
- __publicField$q(this, "defaultIntervalMs", 1e3);
10801
+ __publicField$r(this, "pipelineReady", false);
10802
+ __publicField$r(this, "running", true);
10803
+ __publicField$r(this, "defaultIntervalMs", 1e3);
10800
10804
  /** 全局缺省 WS 下发间隔(节点 publishIntervalMs=null 跟随;0 = 随采样节拍) */
10801
- __publicField$q(this, "defaultPublishIntervalMs", 0);
10802
- __publicField$q(this, "producedCount", 0);
10803
- __publicField$q(this, "consumedCount", 0);
10804
- __publicField$q(this, "storedCount", 0);
10805
+ __publicField$r(this, "defaultPublishIntervalMs", 0);
10806
+ __publicField$r(this, "producedCount", 0);
10807
+ __publicField$r(this, "consumedCount", 0);
10808
+ __publicField$r(this, "storedCount", 0);
10805
10809
  /** 帧入库计数(v2:daq_frames 行数) */
10806
- __publicField$q(this, "framesStored", 0);
10810
+ __publicField$r(this, "framesStored", 0);
10807
10811
  /** runtime host:网关注入的服务面(采样/入队/管线/告警/全局缺省) */
10808
- __publicField$q(this, "host", {
10812
+ __publicField$r(this, "host", {
10809
10813
  defaults: () => this.runtimeDefaults(),
10810
10814
  sample: (node, now) => this.sampleNode(node, now),
10811
10815
  publishSample: (env) => this.publishSample(env),
@@ -10817,12 +10821,12 @@ class DaqController {
10817
10821
  });
10818
10822
  // ---------- S5:报警持久化/外送/确认 ----------
10819
10823
  /** 累计报警次数(R4 指标暴露) */
10820
- __publicField$q(this, "alarmsRaised", 0);
10824
+ __publicField$r(this, "alarmsRaised", 0);
10821
10825
  /** 绑定设备端到端回写:通道值进入 DeviceTwin.telemetry(键名 = 模板 telemetryKey 数据,缺省 templateKey);
10822
10826
  * 状态随行:节点 alarm 派生自用户设置的量程/预警带(数据驱动),透传给孪生而非让孪生按硬编码阈值猜 */
10823
- __publicField$q(this, "pendingBackfill", /* @__PURE__ */ new Map());
10827
+ __publicField$r(this, "pendingBackfill", /* @__PURE__ */ new Map());
10824
10828
  /** 遥测 WS 推送(1s/设备节流):孪生状态/遥测事件化直推,前端全量轮询降级为断线兜底 */
10825
- __publicField$q(this, "twinPushAt", /* @__PURE__ */ new Map());
10829
+ __publicField$r(this, "twinPushAt", /* @__PURE__ */ new Map());
10826
10830
  }
10827
10831
  // ---------- 生命周期 ----------
10828
10832
  ensureLoop() {
@@ -11545,7 +11549,7 @@ class DaqController {
11545
11549
  this.syncRuntimes();
11546
11550
  }
11547
11551
  }
11548
- const g$c = globalThis;
11552
+ const g$d = globalThis;
11549
11553
  let g_queueBackend = "inproc";
11550
11554
  function g_queueLost() {
11551
11555
  var _a;
@@ -11554,8 +11558,8 @@ function g_queueLost() {
11554
11558
  }
11555
11559
  function getDaqController() {
11556
11560
  var _a;
11557
- (_a = g$c.__daqController) != null ? _a : g$c.__daqController = new DaqController();
11558
- return g$c.__daqController;
11561
+ (_a = g$d.__daqController) != null ? _a : g$d.__daqController = new DaqController();
11562
+ return g$d.__daqController;
11559
11563
  }
11560
11564
  function bindDaqBroadcast(fn) {
11561
11565
  getDaqController().setBroadcast(fn);
@@ -11698,7 +11702,7 @@ function runRetentionSweep(db) {
11698
11702
  return out;
11699
11703
  }
11700
11704
 
11701
- const g$b = globalThis;
11705
+ const g$c = globalThis;
11702
11706
  function sweepOnce(dataDir) {
11703
11707
  const dbPath = resolve$1(dataDir, "workshop.sqlite");
11704
11708
  if (!existsSync(dbPath)) return;
@@ -11715,7 +11719,7 @@ function sweepOnce(dataDir) {
11715
11719
  function retentionPlugin() {
11716
11720
  var _a, _b;
11717
11721
  if (retentionSettings().disabled) return;
11718
- if (g$b.__awRetentionTimer) return;
11722
+ if (g$c.__awRetentionTimer) return;
11719
11723
  const dataDir = ensureDataDir();
11720
11724
  const first = setTimeout(() => {
11721
11725
  try {
@@ -11733,7 +11737,7 @@ function retentionPlugin() {
11733
11737
  }
11734
11738
  }, 24 * 36e5);
11735
11739
  (_b = timer.unref) == null ? void 0 : _b.call(timer);
11736
- g$b.__awRetentionTimer = timer;
11740
+ g$c.__awRetentionTimer = timer;
11737
11741
  }
11738
11742
 
11739
11743
  const KNOWN_DEFAULT_PASSWORDS = /* @__PURE__ */ new Set([
@@ -11751,9 +11755,9 @@ function securityPlugin() {
11751
11755
  }
11752
11756
  }
11753
11757
 
11754
- var __defProp$p = Object.defineProperty;
11755
- var __defNormalProp$p = (obj, key, value) => key in obj ? __defProp$p(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11756
- var __publicField$p = (obj, key, value) => __defNormalProp$p(obj, typeof key !== "symbol" ? key + "" : key, value);
11758
+ var __defProp$q = Object.defineProperty;
11759
+ var __defNormalProp$q = (obj, key, value) => key in obj ? __defProp$q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11760
+ var __publicField$q = (obj, key, value) => __defNormalProp$q(obj, typeof key !== "symbol" ? key + "" : key, value);
11757
11761
  const PUBLIC_FIELDS = {
11758
11762
  "server.host": "serverHost",
11759
11763
  "server.dev.port": "devPort",
@@ -11774,20 +11778,20 @@ const ROOT_FIELDS = {
11774
11778
  const DAQ_PREFIX = "daq.";
11775
11779
  class SystemConfigService {
11776
11780
  constructor(root) {
11777
- __publicField$p(this, "root", root);
11778
- __publicField$p(this, "descriptors", []);
11779
- __publicField$p(this, "map", /* @__PURE__ */ new Map());
11780
- __publicField$p(this, "overrides", {});
11781
- __publicField$p(this, "envOverrides", {});
11782
- __publicField$p(this, "effective", {});
11783
- __publicField$p(this, "sources", {});
11784
- __publicField$p(this, "listeners", /* @__PURE__ */ new Set());
11785
- __publicField$p(this, "configPath", "");
11786
- __publicField$p(this, "settingsPath", "");
11787
- __publicField$p(this, "watcher", []);
11788
- __publicField$p(this, "reloadTimer", null);
11789
- __publicField$p(this, "disposed", false);
11790
- __publicField$p(this, "applyWarned", false);
11781
+ __publicField$q(this, "root", root);
11782
+ __publicField$q(this, "descriptors", []);
11783
+ __publicField$q(this, "map", /* @__PURE__ */ new Map());
11784
+ __publicField$q(this, "overrides", {});
11785
+ __publicField$q(this, "envOverrides", {});
11786
+ __publicField$q(this, "effective", {});
11787
+ __publicField$q(this, "sources", {});
11788
+ __publicField$q(this, "listeners", /* @__PURE__ */ new Set());
11789
+ __publicField$q(this, "configPath", "");
11790
+ __publicField$q(this, "settingsPath", "");
11791
+ __publicField$q(this, "watcher", []);
11792
+ __publicField$q(this, "reloadTimer", null);
11793
+ __publicField$q(this, "disposed", false);
11794
+ __publicField$q(this, "applyWarned", false);
11791
11795
  this.configPath = join(root, "config.yml");
11792
11796
  this.settingsPath = join(root, "data", "runtime-settings.json");
11793
11797
  }
@@ -14057,6 +14061,133 @@ function createApprovalRequestRepo(db) {
14057
14061
  };
14058
14062
  }
14059
14063
 
14064
+ var __defProp$p = Object.defineProperty;
14065
+ var __defNormalProp$p = (obj, key, value) => key in obj ? __defProp$p(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14066
+ var __publicField$p = (obj, key, value) => __defNormalProp$p(obj, typeof key !== "symbol" ? key + "" : key, value);
14067
+ class HitlRegistryService {
14068
+ constructor() {
14069
+ /** key = `${kind}:${id}`;value 为 AepHitlItem(parkDeadline 单独存,避免污染协议对象) */
14070
+ __publicField$p(this, "items", /* @__PURE__ */ new Map());
14071
+ __publicField$p(this, "parkDeadline", /* @__PURE__ */ new Map());
14072
+ __publicField$p(this, "listeners", /* @__PURE__ */ new Map());
14073
+ /** agentId → { channelId, agentName }(插件装配 repos 后注入;避免反向依赖 manager) */
14074
+ __publicField$p(this, "resolver", null);
14075
+ }
14076
+ configureResolver(fn) {
14077
+ this.resolver = fn;
14078
+ }
14079
+ key(kind, id) {
14080
+ return `${kind}:${id}`;
14081
+ }
14082
+ /** 登记(幂等:同 kind+id 重复登记只更新 parkDeadline,不重发事件) */
14083
+ register(input) {
14084
+ var _a, _b, _c, _d, _e;
14085
+ const key = this.key(input.kind, input.id);
14086
+ const existing = this.items.get(key);
14087
+ if (existing) return;
14088
+ let channelId = (_a = input.channelId) != null ? _a : "";
14089
+ let agentName = (_b = input.agentName) != null ? _b : "";
14090
+ if ((!channelId || !agentName) && this.resolver) {
14091
+ try {
14092
+ const resolved = this.resolver(input.agentId);
14093
+ channelId = channelId || (resolved == null ? void 0 : resolved.channelId) || "";
14094
+ agentName = agentName || (resolved == null ? void 0 : resolved.agentName) || "";
14095
+ } catch {
14096
+ }
14097
+ }
14098
+ const item = {
14099
+ kind: input.kind,
14100
+ id: input.id,
14101
+ channelId,
14102
+ agentId: input.agentId,
14103
+ agentName: agentName || input.agentId.slice(0, 8),
14104
+ pid: input.pid,
14105
+ method: input.method,
14106
+ title: input.title,
14107
+ detail: input.detail,
14108
+ options: input.options,
14109
+ message: input.message,
14110
+ createdAt: (_c = input.createdAt) != null ? _c : (/* @__PURE__ */ new Date()).toISOString(),
14111
+ expiresAt: (_d = input.expiresAt) != null ? _d : null
14112
+ };
14113
+ this.items.set(key, item);
14114
+ this.parkDeadline.set(key, (_e = item.expiresAt) != null ? _e : null);
14115
+ this.emit({ type: "hitl.request", payload: item, agentId: item.agentId });
14116
+ }
14117
+ /**
14118
+ * 落定(幂等:未登记的 key 返回 false —— 上层据此实现 409 ALREADY_RESOLVED)。
14119
+ * outcome:answered(人类已答复/批准/拒绝)/ cancelled(人工放弃或 omp 撤销)/ expired(超时)。
14120
+ */
14121
+ resolve(kind, id, outcome, by) {
14122
+ const key = this.key(kind, id);
14123
+ const item = this.items.get(key);
14124
+ if (!item) return false;
14125
+ this.items.delete(key);
14126
+ this.parkDeadline.delete(key);
14127
+ const payload = {
14128
+ kind,
14129
+ id,
14130
+ channelId: item.channelId,
14131
+ agentId: item.agentId,
14132
+ outcome,
14133
+ by
14134
+ };
14135
+ this.emit({ type: "hitl.resolved", payload, agentId: item.agentId });
14136
+ return true;
14137
+ }
14138
+ /** 查询单条(应答路由用:取 pid / channelId / method) */
14139
+ find(kind, id) {
14140
+ var _a;
14141
+ return (_a = this.items.get(this.key(kind, id))) != null ? _a : null;
14142
+ }
14143
+ /** park 截止更新(harness-terminal 订阅者增减时静默修正;null = 计时暂停) */
14144
+ setParkDeadline(kind, id, expiresAt) {
14145
+ const key = this.key(kind, id);
14146
+ if (!this.items.has(key)) return;
14147
+ this.parkDeadline.set(key, expiresAt);
14148
+ const item = this.items.get(key);
14149
+ item.expiresAt = expiresAt;
14150
+ }
14151
+ /** 全局(或指定 channel)待处理快照 */
14152
+ snapshot(channelId) {
14153
+ return [...this.items.values()].filter((i) => !channelId || i.channelId === channelId);
14154
+ }
14155
+ /** per-channel 事件订阅(ws hub ensureStream 时接线;返回退订函数) */
14156
+ subscribe(channelId, fn) {
14157
+ let set = this.listeners.get(channelId);
14158
+ if (!set) {
14159
+ set = /* @__PURE__ */ new Set();
14160
+ this.listeners.set(channelId, set);
14161
+ }
14162
+ set.add(fn);
14163
+ return () => {
14164
+ set.delete(fn);
14165
+ if (set.size === 0) this.listeners.delete(channelId);
14166
+ };
14167
+ }
14168
+ emit(e) {
14169
+ const channelId = e.payload.channelId;
14170
+ const set = channelId ? this.listeners.get(channelId) : void 0;
14171
+ if (!set) return;
14172
+ for (const fn of set) {
14173
+ try {
14174
+ fn(e);
14175
+ } catch {
14176
+ }
14177
+ }
14178
+ }
14179
+ }
14180
+ const g$b = globalThis;
14181
+ function getHitlRegistry() {
14182
+ var _a;
14183
+ (_a = g$b.__hitlRegistry) != null ? _a : g$b.__hitlRegistry = new HitlRegistryService();
14184
+ return g$b.__hitlRegistry;
14185
+ }
14186
+ const configureHitlResolver = (fn) => getHitlRegistry().configureResolver(fn);
14187
+ function subscribeHitlEvents(channelId, fn) {
14188
+ return getHitlRegistry().subscribe(channelId, fn);
14189
+ }
14190
+
14060
14191
  const DB_PATH$6 = join(ensureDataDir(), "users.sqlite");
14061
14192
  const SCHEMA_SQL = `
14062
14193
  CREATE TABLE IF NOT EXISTS users (
@@ -14895,6 +15026,14 @@ function bindStreamSubscriptions(manager, stream) {
14895
15026
  publish(manager, stream, "agent.member", e, { agentId: e.agentId });
14896
15027
  }));
14897
15028
  }
15029
+ function bindHitlSubscription(manager, stream) {
15030
+ var _a2;
15031
+ (_a2 = stream.hitlUnsub) == null ? void 0 : _a2.call(stream);
15032
+ stream.hitlUnsub = subscribeHitlEvents(stream.channelId, (e) => {
15033
+ publish(manager, stream, e.type, e.payload, { agentId: e.agentId });
15034
+ broadcastPeerEvent(e.type, e.payload);
15035
+ });
15036
+ }
14898
15037
  function rebindStreamIfStale(manager, stream) {
14899
15038
  var _a2;
14900
15039
  const currentBus = (_a2 = internalsOf(manager).buses.get(stream.channelId)) != null ? _a2 : null;
@@ -14961,6 +15100,13 @@ function closeStream(manager, channelId) {
14961
15100
  } catch {
14962
15101
  }
14963
15102
  }
15103
+ if (stream.hitlUnsub) {
15104
+ try {
15105
+ stream.hitlUnsub();
15106
+ } catch {
15107
+ }
15108
+ stream.hitlUnsub = null;
15109
+ }
14964
15110
  streams.delete(channelId);
14965
15111
  for (const peer of stream.peers) {
14966
15112
  (_a2 = peerChannels.get(peer)) == null ? void 0 : _a2.delete(channelId);
@@ -14976,6 +15122,7 @@ function ensureStream(manager, channelId) {
14976
15122
  const existing = streams.get(channelId);
14977
15123
  if (existing) {
14978
15124
  rebindStreamIfStale(manager, existing);
15125
+ bindHitlSubscription(manager, existing);
14979
15126
  return existing;
14980
15127
  }
14981
15128
  const initSeq = internalsOf(manager).deps.repos.channelEvents.maxSeq(channelId);
@@ -14986,11 +15133,13 @@ function ensureStream(manager, channelId) {
14986
15133
  ringBytes: 0,
14987
15134
  peers: /* @__PURE__ */ new Set(),
14988
15135
  unsubs: [],
15136
+ hitlUnsub: null,
14989
15137
  busRef: (_a2 = internalsOf(manager).buses.get(channelId)) != null ? _a2 : null,
14990
15138
  dbBuffer: [],
14991
15139
  dbFlushTimer: null
14992
15140
  };
14993
15141
  bindStreamSubscriptions(manager, stream);
15142
+ bindHitlSubscription(manager, stream);
14994
15143
  stream.busRef = (_b2 = internalsOf(manager).buses.get(channelId)) != null ? _b2 : null;
14995
15144
  streams.set(channelId, stream);
14996
15145
  return stream;
@@ -16199,20 +16348,65 @@ function handleUiRequest(session, frame) {
16199
16348
  const method = frame.method;
16200
16349
  if (method === "cancel") {
16201
16350
  const targetId = String((_a2 = frame.targetId) != null ? _a2 : "");
16202
- if (session.pendingHitl && session.pendingHitl.id === targetId) session.pendingHitl = null;
16351
+ if (session.pendingHitl && session.pendingHitl.id === targetId) {
16352
+ session.pendingHitl = null;
16353
+ clearParkTimer(session);
16354
+ getHitlRegistry().resolve("omp-dialog", targetId, "cancelled");
16355
+ }
16203
16356
  return;
16204
16357
  }
16205
16358
  const view = hitlViewOf(frame);
16206
16359
  if (!view) return;
16207
16360
  session.pendingHitl = view;
16208
- if (session.listeners.size === 0) {
16209
- respondUi(session, { id: view.id, cancelled: true });
16210
- pushFrame(session, {
16211
- type: "__terminal_notice",
16212
- level: "warning",
16213
- message: `HITL \u5BF9\u8BDD\u6846(${view.method} "${view.title.slice(0, 40)}")\u65E0\u4EBA\u63A5\u5165,\u5DF2\u81EA\u52A8\u53D6\u6D88`
16214
- });
16361
+ getHitlRegistry().register({
16362
+ kind: "omp-dialog",
16363
+ id: view.id,
16364
+ agentId: session.meta.agentId,
16365
+ agentName: session.meta.name,
16366
+ channelId: session.meta.channelId,
16367
+ pid: session.meta.pid,
16368
+ method: view.method,
16369
+ title: view.title,
16370
+ options: view.options,
16371
+ message: view.message
16372
+ });
16373
+ if (session.listeners.size === 0) armParkTimer(session);
16374
+ }
16375
+ const HITL_PARK_MS = () => securityHitlTimeoutMs();
16376
+ function clearParkTimer(session) {
16377
+ if (session.parkTimer) {
16378
+ clearTimeout(session.parkTimer);
16379
+ session.parkTimer = null;
16380
+ }
16381
+ }
16382
+ function armParkTimer(session) {
16383
+ var _a2, _b;
16384
+ clearParkTimer(session);
16385
+ if (!session.pendingHitl || session.listeners.size > 0) return;
16386
+ const ttl = HITL_PARK_MS();
16387
+ if (ttl <= 0) {
16388
+ expirePendingHitl(session, true);
16389
+ return;
16215
16390
  }
16391
+ getHitlRegistry().setParkDeadline("omp-dialog", session.pendingHitl.id, new Date(Date.now() + ttl).toISOString());
16392
+ session.parkTimer = setTimeout(() => {
16393
+ session.parkTimer = null;
16394
+ if (session.pendingHitl && session.listeners.size === 0) expirePendingHitl(session);
16395
+ }, ttl);
16396
+ (_b = (_a2 = session.parkTimer).unref) == null ? void 0 : _b.call(_a2);
16397
+ }
16398
+ function expirePendingHitl(session, immediate = false) {
16399
+ const hitl = session.pendingHitl;
16400
+ if (!hitl) return;
16401
+ session.pendingHitl = null;
16402
+ clearParkTimer(session);
16403
+ getHitlRegistry().resolve("omp-dialog", hitl.id, "expired");
16404
+ respondUi(session, { id: hitl.id, cancelled: true });
16405
+ pushFrame(session, {
16406
+ type: "__terminal_notice",
16407
+ level: "warning",
16408
+ message: immediate ? `HITL \u5BF9\u8BDD\u6846(${hitl.method} "${hitl.title.slice(0, 40)}")\u65E0\u4EBA\u63A5\u5165,\u5DF2\u81EA\u52A8\u53D6\u6D88` : `HITL \u5BF9\u8BDD\u6846(${hitl.method} "${hitl.title.slice(0, 40)}")park \u8D85\u65F6\u65E0\u4EBA\u5904\u7406,\u5DF2\u81EA\u52A8\u53D6\u6D88`
16409
+ });
16216
16410
  }
16217
16411
  function attachTerminalTap(client, meta) {
16218
16412
  var _a2, _b;
@@ -16236,6 +16430,7 @@ function attachTerminalTap(client, meta) {
16236
16430
  alive: true,
16237
16431
  exitCode: null,
16238
16432
  pendingHitl: null,
16433
+ parkTimer: null,
16239
16434
  unsubRaw: null,
16240
16435
  batch: [],
16241
16436
  batchTimer: null
@@ -16280,7 +16475,11 @@ function markTerminalSessionExit(pid, exitCode) {
16280
16475
  detachTerminalTap(pid);
16281
16476
  session.alive = false;
16282
16477
  session.exitCode = exitCode;
16283
- session.pendingHitl = null;
16478
+ if (session.pendingHitl) {
16479
+ getHitlRegistry().resolve("omp-dialog", session.pendingHitl.id, "cancelled");
16480
+ session.pendingHitl = null;
16481
+ }
16482
+ clearParkTimer(session);
16284
16483
  session.running = false;
16285
16484
  session.streaming = false;
16286
16485
  flushNow(session);
@@ -16345,18 +16544,15 @@ function terminalSessionSnapshot(pid) {
16345
16544
  function subscribeTerminal(pid, listener) {
16346
16545
  const session = sessions.get(pid);
16347
16546
  if (!session) return null;
16547
+ const wasEmpty = session.listeners.size === 0;
16348
16548
  session.listeners.add(listener);
16549
+ if (wasEmpty && session.pendingHitl) {
16550
+ clearParkTimer(session);
16551
+ getHitlRegistry().setParkDeadline("omp-dialog", session.pendingHitl.id, null);
16552
+ }
16349
16553
  return () => {
16350
16554
  session.listeners.delete(listener);
16351
- if (session.listeners.size === 0 && session.pendingHitl) {
16352
- const hitl = session.pendingHitl;
16353
- respondUi(session, { id: hitl.id, cancelled: true });
16354
- pushFrame(session, {
16355
- type: "__terminal_notice",
16356
- level: "warning",
16357
- message: `\u89C2\u770B\u8005\u5DF2\u5168\u90E8\u79BB\u5F00,HITL \u5BF9\u8BDD\u6846(${hitl.method} "${hitl.title.slice(0, 40)}")\u81EA\u52A8\u53D6\u6D88`
16358
- });
16359
- }
16555
+ if (session.listeners.size === 0 && session.pendingHitl) armParkTimer(session);
16360
16556
  };
16361
16557
  }
16362
16558
  async function sendTerminalInput(pid, text) {
@@ -16410,6 +16606,7 @@ function respondTerminalUi(pid, response) {
16410
16606
  function respondUi(session, response) {
16411
16607
  var _a2;
16412
16608
  if (session.pendingHitl && session.pendingHitl.id === response.id) session.pendingHitl = null;
16609
+ clearParkTimer(session);
16413
16610
  const frame = { type: "extension_ui_response", id: response.id };
16414
16611
  if (response.cancelled) {
16415
16612
  frame.cancelled = true;
@@ -16423,6 +16620,7 @@ function respondUi(session, response) {
16423
16620
  } catch (err) {
16424
16621
  log$c.error(`[harness-terminal] extension_ui_response \u5199\u5165\u5931\u8D25(pid=${session.meta.pid}):`, err);
16425
16622
  }
16623
+ getHitlRegistry().resolve("omp-dialog", response.id, response.cancelled ? "cancelled" : "answered");
16426
16624
  }
16427
16625
 
16428
16626
  const cache = /* @__PURE__ */ new Map();
@@ -16663,6 +16861,15 @@ class ToolApprovalService {
16663
16861
  decidedBy: "",
16664
16862
  decidedName: ""
16665
16863
  };
16864
+ getHitlRegistry().register({
16865
+ kind: "dcw-approval",
16866
+ id: approval.id,
16867
+ agentId: approval.agentId,
16868
+ title: `${approval.kind.toUpperCase()} \u4E0B\u53D1\u5BA1\u6279`,
16869
+ detail: approval.detail,
16870
+ createdAt: approval.createdAt,
16871
+ expiresAt: approval.expiresAt
16872
+ });
16666
16873
  return new Promise((resolve) => {
16667
16874
  var _a;
16668
16875
  const timer = setTimeout(() => {
@@ -16672,6 +16879,7 @@ class ToolApprovalService {
16672
16879
  approval.decidedAt = (/* @__PURE__ */ new Date()).toISOString();
16673
16880
  approval.comment = "\u5BA1\u6279\u8D85\u65F6\u672A\u5904\u7406,\u9ED8\u8BA4\u62D2\u7EDD,\u6307\u4EE4\u672A\u6267\u884C";
16674
16881
  this.remember(approval);
16882
+ getHitlRegistry().resolve("dcw-approval", approval.id, "expired");
16675
16883
  resolve({ approved: false, comment: approval.comment, id: approval.id });
16676
16884
  }, TIMEOUT_MS());
16677
16885
  (_a = timer.unref) == null ? void 0 : _a.call(timer);
@@ -16689,6 +16897,7 @@ class ToolApprovalService {
16689
16897
  entry.approval.decidedBy = decidedBy;
16690
16898
  entry.approval.decidedName = decidedName;
16691
16899
  this.remember(entry.approval);
16900
+ getHitlRegistry().resolve("dcw-approval", id, "answered", decidedBy || void 0);
16692
16901
  entry.resolve({ approved, comment: entry.approval.comment, id });
16693
16902
  return entry.approval;
16694
16903
  }
@@ -16707,6 +16916,7 @@ class ToolApprovalService {
16707
16916
  entry.approval.comment = "\u7ED1\u5B9A\u5DF2\u89E3\u9664,\u5BA1\u6279\u5931\u6548";
16708
16917
  entry.approval.decidedAt = (/* @__PURE__ */ new Date()).toISOString();
16709
16918
  this.remember(entry.approval);
16919
+ getHitlRegistry().resolve("dcw-approval", id, "cancelled");
16710
16920
  entry.resolve({ approved: false, comment: entry.approval.comment, id });
16711
16921
  n++;
16712
16922
  }
@@ -26809,6 +27019,10 @@ function workshopPlugin(nitroApp) {
26809
27019
  const deps = { repos, implFactory: createAgentImpl, db };
26810
27020
  const manager = createAgentChannelManager(deps);
26811
27021
  globalThis.__workshopManager = manager;
27022
+ configureHitlResolver((agentId) => {
27023
+ const row = repos.channelAgents.findById(agentId);
27024
+ return row ? { channelId: row.channelId, agentName: row.name } : null;
27025
+ });
26812
27026
  manager.restore();
26813
27027
  void ensureAllEventRecorders(manager).catch((err) => console.error("[workshop] \u4E8B\u4EF6\u5F55\u5236\u5668\u521D\u59CB\u5316\u5931\u8D25:", err));
26814
27028
  const idleSweepMs = workshopSettings().idle_sweep_ms;
@@ -26835,13 +27049,6 @@ workshopPlugin
26835
27049
  ];
26836
27050
 
26837
27051
  const assets = {
26838
- "/_nuxt/2LwEn9gX.js": {
26839
- "type": "text/javascript; charset=utf-8",
26840
- "etag": "\"548e-d/wW0XgblFvF2ZmqI6QmEPUI+0w\"",
26841
- "mtime": "2026-09-03T16:52:30.234Z",
26842
- "size": 21646,
26843
- "path": "../public/_nuxt/2LwEn9gX.js"
26844
- },
26845
27052
  "/favicon.svg": {
26846
27053
  "type": "image/svg+xml",
26847
27054
  "etag": "\"333-aFlSVm0gS1OwJAKmnnSly7X0FJ0\"",
@@ -26849,1249 +27056,1249 @@ const assets = {
26849
27056
  "size": 819,
26850
27057
  "path": "../public/favicon.svg"
26851
27058
  },
27059
+ "/_nuxt/2LwEn9gX.js": {
27060
+ "type": "text/javascript; charset=utf-8",
27061
+ "etag": "\"548e-d/wW0XgblFvF2ZmqI6QmEPUI+0w\"",
27062
+ "mtime": "2026-09-04T04:30:50.549Z",
27063
+ "size": 21646,
27064
+ "path": "../public/_nuxt/2LwEn9gX.js"
27065
+ },
26852
27066
  "/_nuxt/7ZABjMRh2.js": {
26853
27067
  "type": "text/javascript; charset=utf-8",
26854
27068
  "etag": "\"3a06-vfWCeCuQModyMp+Xi4gZEB3CxnI\"",
26855
- "mtime": "2026-09-03T16:52:30.235Z",
27069
+ "mtime": "2026-09-04T04:30:50.549Z",
26856
27070
  "size": 14854,
26857
27071
  "path": "../public/_nuxt/7ZABjMRh2.js"
26858
27072
  },
26859
27073
  "/_nuxt/agents.BJwgTLFZ.css": {
26860
27074
  "type": "text/css; charset=utf-8",
26861
27075
  "etag": "\"35b-ZsP4Yk5oNeMefP2PDhf6ga/NjEw\"",
26862
- "mtime": "2026-09-03T16:52:30.255Z",
27076
+ "mtime": "2026-09-04T04:30:50.568Z",
26863
27077
  "size": 859,
26864
27078
  "path": "../public/_nuxt/agents.BJwgTLFZ.css"
26865
27079
  },
26866
- "/_nuxt/9X0fVBD7.js": {
26867
- "type": "text/javascript; charset=utf-8",
26868
- "etag": "\"3d68-dpaiop+2vd/2C5Gh1mxTjRk6P6w\"",
26869
- "mtime": "2026-09-03T16:52:30.235Z",
26870
- "size": 15720,
26871
- "path": "../public/_nuxt/9X0fVBD7.js"
26872
- },
26873
27080
  "/_nuxt/36oeS8_R2.js": {
26874
27081
  "type": "text/javascript; charset=utf-8",
26875
27082
  "etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
26876
- "mtime": "2026-09-03T16:52:30.234Z",
27083
+ "mtime": "2026-09-04T04:30:50.549Z",
26877
27084
  "size": 214,
26878
27085
  "path": "../public/_nuxt/36oeS8_R2.js"
26879
27086
  },
27087
+ "/_nuxt/9X0fVBD7.js": {
27088
+ "type": "text/javascript; charset=utf-8",
27089
+ "etag": "\"3d68-dpaiop+2vd/2C5Gh1mxTjRk6P6w\"",
27090
+ "mtime": "2026-09-04T04:30:50.550Z",
27091
+ "size": 15720,
27092
+ "path": "../public/_nuxt/9X0fVBD7.js"
27093
+ },
26880
27094
  "/_nuxt/B6M2WJWm2.js": {
26881
27095
  "type": "text/javascript; charset=utf-8",
26882
27096
  "etag": "\"92-HewTRGUKJSuRw0kFs5RC2k2x4sk\"",
26883
- "mtime": "2026-09-03T16:52:30.235Z",
27097
+ "mtime": "2026-09-04T04:30:50.550Z",
26884
27098
  "size": 146,
26885
27099
  "path": "../public/_nuxt/B6M2WJWm2.js"
26886
27100
  },
27101
+ "/_nuxt/B9aPoQvt.js": {
27102
+ "type": "text/javascript; charset=utf-8",
27103
+ "etag": "\"469c-iKeDALdd9GdkRbr7YkPyLiRiPm0\"",
27104
+ "mtime": "2026-09-04T04:30:50.551Z",
27105
+ "size": 18076,
27106
+ "path": "../public/_nuxt/B9aPoQvt.js"
27107
+ },
27108
+ "/_nuxt/BBrRELH32.js": {
27109
+ "type": "text/javascript; charset=utf-8",
27110
+ "etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
27111
+ "mtime": "2026-09-04T04:30:50.551Z",
27112
+ "size": 1468,
27113
+ "path": "../public/_nuxt/BBrRELH32.js"
27114
+ },
26887
27115
  "/_nuxt/B4GHHF6d2.js": {
26888
27116
  "type": "text/javascript; charset=utf-8",
26889
27117
  "etag": "\"6a1f-sgKC+rBlgDrFN2xJnNBcsQFFelY\"",
26890
- "mtime": "2026-09-03T16:52:30.235Z",
27118
+ "mtime": "2026-09-04T04:30:50.550Z",
26891
27119
  "size": 27167,
26892
27120
  "path": "../public/_nuxt/B4GHHF6d2.js"
26893
27121
  },
26894
- "/_nuxt/B7V9IfTL.js": {
27122
+ "/_nuxt/BCipft_k2.js": {
26895
27123
  "type": "text/javascript; charset=utf-8",
26896
- "etag": "\"21bb-WNOATwmMACC/INep96wHvyKusZ8\"",
26897
- "mtime": "2026-09-03T16:52:30.235Z",
26898
- "size": 8635,
26899
- "path": "../public/_nuxt/B7V9IfTL.js"
27124
+ "etag": "\"144-2D+eSx4+11AuVi/8yHxyPvkJ3L4\"",
27125
+ "mtime": "2026-09-04T04:30:50.551Z",
27126
+ "size": 324,
27127
+ "path": "../public/_nuxt/BCipft_k2.js"
26900
27128
  },
26901
27129
  "/_nuxt/BbQornXa.js": {
26902
27130
  "type": "text/javascript; charset=utf-8",
26903
27131
  "etag": "\"20d2-fXnSrm+6nw+8ZWjtQ/dLscMx2uc\"",
26904
- "mtime": "2026-09-03T16:52:30.239Z",
27132
+ "mtime": "2026-09-04T04:30:50.554Z",
26905
27133
  "size": 8402,
26906
27134
  "path": "../public/_nuxt/BbQornXa.js"
26907
27135
  },
26908
- "/_nuxt/BBrRELH32.js": {
27136
+ "/_nuxt/BF9XPEuw.js": {
26909
27137
  "type": "text/javascript; charset=utf-8",
26910
- "etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
26911
- "mtime": "2026-09-03T16:52:30.236Z",
26912
- "size": 1468,
26913
- "path": "../public/_nuxt/BBrRELH32.js"
27138
+ "etag": "\"21a2-h/t9I4kWzgCaeW8bpn6JW7nfaow\"",
27139
+ "mtime": "2026-09-04T04:30:50.552Z",
27140
+ "size": 8610,
27141
+ "path": "../public/_nuxt/BF9XPEuw.js"
26914
27142
  },
26915
- "/_nuxt/B9aPoQvt.js": {
27143
+ "/_nuxt/BfGc7TJp.js": {
26916
27144
  "type": "text/javascript; charset=utf-8",
26917
- "etag": "\"469c-iKeDALdd9GdkRbr7YkPyLiRiPm0\"",
26918
- "mtime": "2026-09-03T16:52:30.236Z",
26919
- "size": 18076,
26920
- "path": "../public/_nuxt/B9aPoQvt.js"
27145
+ "etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
27146
+ "mtime": "2026-09-04T04:30:50.555Z",
27147
+ "size": 245,
27148
+ "path": "../public/_nuxt/BfGc7TJp.js"
26921
27149
  },
26922
- "/_nuxt/BDUjyaF4.js": {
27150
+ "/_nuxt/BeIfu4N3.js": {
26923
27151
  "type": "text/javascript; charset=utf-8",
26924
- "etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
26925
- "mtime": "2026-09-03T16:52:30.236Z",
26926
- "size": 74057,
26927
- "path": "../public/_nuxt/BDUjyaF4.js"
26928
- },
26929
- "/_nuxt/BCipft_k2.js": {
26930
- "type": "text/javascript; charset=utf-8",
26931
- "etag": "\"144-2D+eSx4+11AuVi/8yHxyPvkJ3L4\"",
26932
- "mtime": "2026-09-03T16:52:30.236Z",
26933
- "size": 324,
26934
- "path": "../public/_nuxt/BCipft_k2.js"
27152
+ "etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
27153
+ "mtime": "2026-09-04T04:30:50.555Z",
27154
+ "size": 48265,
27155
+ "path": "../public/_nuxt/BeIfu4N3.js"
26935
27156
  },
26936
- "/_nuxt/BE5QyG5J2.js": {
27157
+ "/_nuxt/B9Yie5HN.js": {
26937
27158
  "type": "text/javascript; charset=utf-8",
26938
- "etag": "\"a09-92sH0EppYph8z6pqhl6Y9RYhj/A\"",
26939
- "mtime": "2026-09-03T16:52:30.236Z",
26940
- "size": 2569,
26941
- "path": "../public/_nuxt/BE5QyG5J2.js"
27159
+ "etag": "\"1cbf1-HqLW61KV02Wuu7T+ZR+Urryqh6Y\"",
27160
+ "mtime": "2026-09-04T04:30:50.550Z",
27161
+ "size": 117745,
27162
+ "path": "../public/_nuxt/B9Yie5HN.js"
26942
27163
  },
26943
- "/_nuxt/BfGc7TJp.js": {
27164
+ "/_nuxt/BFYNhG9S.js": {
26944
27165
  "type": "text/javascript; charset=utf-8",
26945
- "etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
26946
- "mtime": "2026-09-03T16:52:30.240Z",
26947
- "size": 245,
26948
- "path": "../public/_nuxt/BfGc7TJp.js"
27166
+ "etag": "\"9141-81iSu9pJRw8QX6Mxx5nKGoYfOM4\"",
27167
+ "mtime": "2026-09-04T04:30:50.552Z",
27168
+ "size": 37185,
27169
+ "path": "../public/_nuxt/BFYNhG9S.js"
26949
27170
  },
26950
- "/_nuxt/BF9XPEuw.js": {
27171
+ "/_nuxt/BDUjyaF4.js": {
26951
27172
  "type": "text/javascript; charset=utf-8",
26952
- "etag": "\"21a2-h/t9I4kWzgCaeW8bpn6JW7nfaow\"",
26953
- "mtime": "2026-09-03T16:52:30.236Z",
26954
- "size": 8610,
26955
- "path": "../public/_nuxt/BF9XPEuw.js"
27173
+ "etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
27174
+ "mtime": "2026-09-04T04:30:50.552Z",
27175
+ "size": 74057,
27176
+ "path": "../public/_nuxt/BDUjyaF4.js"
26956
27177
  },
26957
- "/_nuxt/BeIfu4N3.js": {
27178
+ "/_nuxt/BJvGPTpC.js": {
26958
27179
  "type": "text/javascript; charset=utf-8",
26959
- "etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
26960
- "mtime": "2026-09-03T16:52:30.239Z",
26961
- "size": 48265,
26962
- "path": "../public/_nuxt/BeIfu4N3.js"
27180
+ "etag": "\"42-6OgDQPLMWuyWnNFiZTnZejSK/qg\"",
27181
+ "mtime": "2026-09-04T04:30:50.553Z",
27182
+ "size": 66,
27183
+ "path": "../public/_nuxt/BJvGPTpC.js"
26963
27184
  },
26964
27185
  "/_nuxt/BH0Z05CS.js": {
26965
27186
  "type": "text/javascript; charset=utf-8",
26966
27187
  "etag": "\"3e50-bq0ofbhbxAyIm4IxDv0TFutS97A\"",
26967
- "mtime": "2026-09-03T16:52:30.238Z",
27188
+ "mtime": "2026-09-04T04:30:50.553Z",
26968
27189
  "size": 15952,
26969
27190
  "path": "../public/_nuxt/BH0Z05CS.js"
26970
27191
  },
26971
- "/_nuxt/BFYNhG9S.js": {
27192
+ "/_nuxt/Bsc69G4x.js": {
26972
27193
  "type": "text/javascript; charset=utf-8",
26973
- "etag": "\"9141-81iSu9pJRw8QX6Mxx5nKGoYfOM4\"",
26974
- "mtime": "2026-09-03T16:52:30.237Z",
26975
- "size": 37185,
26976
- "path": "../public/_nuxt/BFYNhG9S.js"
27194
+ "etag": "\"10b9b-CeedCLRo4KPs11whWlwTGF4MhLk\"",
27195
+ "mtime": "2026-09-04T04:30:50.555Z",
27196
+ "size": 68507,
27197
+ "path": "../public/_nuxt/Bsc69G4x.js"
26977
27198
  },
26978
27199
  "/_nuxt/Bi6AiCuP.js": {
26979
27200
  "type": "text/javascript; charset=utf-8",
26980
27201
  "etag": "\"496e-oqHtafCqQjIHhroTpVe4NdP44vE\"",
26981
- "mtime": "2026-09-03T16:52:30.240Z",
27202
+ "mtime": "2026-09-04T04:30:50.555Z",
26982
27203
  "size": 18798,
26983
27204
  "path": "../public/_nuxt/Bi6AiCuP.js"
26984
27205
  },
26985
- "/_nuxt/BJvGPTpC.js": {
26986
- "type": "text/javascript; charset=utf-8",
26987
- "etag": "\"42-6OgDQPLMWuyWnNFiZTnZejSK/qg\"",
26988
- "mtime": "2026-09-03T16:52:30.238Z",
26989
- "size": 66,
26990
- "path": "../public/_nuxt/BJvGPTpC.js"
26991
- },
26992
- "/_nuxt/BkKYf8xY.js": {
27206
+ "/_nuxt/BrIJiJSN.js": {
26993
27207
  "type": "text/javascript; charset=utf-8",
26994
- "etag": "\"3baa4-ZNb8BvoKftJNDzoUOP+IRVxkMQg\"",
26995
- "mtime": "2026-09-03T16:52:30.234Z",
26996
- "size": 244388,
26997
- "path": "../public/_nuxt/BkKYf8xY.js"
27208
+ "etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
27209
+ "mtime": "2026-09-04T04:30:50.555Z",
27210
+ "size": 331450,
27211
+ "path": "../public/_nuxt/BrIJiJSN.js"
26998
27212
  },
26999
27213
  "/_nuxt/BFjGV-RV2.js": {
27000
27214
  "type": "text/javascript; charset=utf-8",
27001
27215
  "etag": "\"a0340-NzvTqyczSJgnuw9pjPQnLX42sAE\"",
27002
- "mtime": "2026-09-03T16:52:30.237Z",
27216
+ "mtime": "2026-09-04T04:30:50.553Z",
27003
27217
  "size": 656192,
27004
27218
  "path": "../public/_nuxt/BFjGV-RV2.js"
27005
27219
  },
27006
27220
  "/_nuxt/BGkumHZ32.js": {
27007
27221
  "type": "text/javascript; charset=utf-8",
27008
27222
  "etag": "\"14a0a8-FkCiOKvl5+p8em/4UNCrmbDN4qY\"",
27009
- "mtime": "2026-09-03T16:52:30.238Z",
27223
+ "mtime": "2026-09-04T04:30:50.553Z",
27010
27224
  "size": 1351848,
27011
27225
  "path": "../public/_nuxt/BGkumHZ32.js"
27012
27226
  },
27013
27227
  "/_nuxt/BSCpFtzG.js": {
27014
27228
  "type": "text/javascript; charset=utf-8",
27015
27229
  "etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
27016
- "mtime": "2026-09-03T16:52:30.238Z",
27230
+ "mtime": "2026-09-04T04:30:50.554Z",
27017
27231
  "size": 78744,
27018
27232
  "path": "../public/_nuxt/BSCpFtzG.js"
27019
27233
  },
27020
- "/_nuxt/BrIJiJSN.js": {
27021
- "type": "text/javascript; charset=utf-8",
27022
- "etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
27023
- "mtime": "2026-09-03T16:52:30.240Z",
27024
- "size": 331450,
27025
- "path": "../public/_nuxt/BrIJiJSN.js"
27026
- },
27027
27234
  "/_nuxt/BSSUlJnx2.js": {
27028
27235
  "type": "text/javascript; charset=utf-8",
27029
27236
  "etag": "\"5f5-t0OMayeEXY7fEaFUOlppJZZQvtM\"",
27030
- "mtime": "2026-09-03T16:52:30.238Z",
27237
+ "mtime": "2026-09-04T04:30:50.554Z",
27031
27238
  "size": 1525,
27032
27239
  "path": "../public/_nuxt/BSSUlJnx2.js"
27033
27240
  },
27034
- "/_nuxt/Bsc69G4x.js": {
27035
- "type": "text/javascript; charset=utf-8",
27036
- "etag": "\"10b9b-CeedCLRo4KPs11whWlwTGF4MhLk\"",
27037
- "mtime": "2026-09-03T16:52:30.240Z",
27038
- "size": 68507,
27039
- "path": "../public/_nuxt/Bsc69G4x.js"
27040
- },
27041
- "/_nuxt/BuKI8z-5.js": {
27241
+ "/_nuxt/BUxYN2mw.js": {
27042
27242
  "type": "text/javascript; charset=utf-8",
27043
- "etag": "\"9962-5cpxNhCh2a64bkYnWq+6y1OW+z4\"",
27044
- "mtime": "2026-09-03T16:52:30.240Z",
27045
- "size": 39266,
27046
- "path": "../public/_nuxt/BuKI8z-5.js"
27243
+ "etag": "\"1d2b-imErvR08IoUb6Oyd9b7/yZw9bss\"",
27244
+ "mtime": "2026-09-04T04:30:50.554Z",
27245
+ "size": 7467,
27246
+ "path": "../public/_nuxt/BUxYN2mw.js"
27047
27247
  },
27048
27248
  "/_nuxt/BUcmySDa2.js": {
27049
27249
  "type": "text/javascript; charset=utf-8",
27050
27250
  "etag": "\"1d27c-MrwgQiovFUP0UVtMJ1LdEF/IrEs\"",
27051
- "mtime": "2026-09-03T16:52:30.239Z",
27251
+ "mtime": "2026-09-04T04:30:50.554Z",
27052
27252
  "size": 119420,
27053
27253
  "path": "../public/_nuxt/BUcmySDa2.js"
27054
27254
  },
27055
- "/_nuxt/BUxYN2mw.js": {
27056
- "type": "text/javascript; charset=utf-8",
27057
- "etag": "\"1d2b-imErvR08IoUb6Oyd9b7/yZw9bss\"",
27058
- "mtime": "2026-09-03T16:52:30.239Z",
27059
- "size": 7467,
27060
- "path": "../public/_nuxt/BUxYN2mw.js"
27061
- },
27062
27255
  "/_nuxt/Bxh5nf8j.js": {
27063
27256
  "type": "text/javascript; charset=utf-8",
27064
27257
  "etag": "\"20cd-xBG7XpkdBjW7zZsLXaS7Psed7UI\"",
27065
- "mtime": "2026-09-03T16:52:30.241Z",
27258
+ "mtime": "2026-09-04T04:30:50.556Z",
27066
27259
  "size": 8397,
27067
27260
  "path": "../public/_nuxt/Bxh5nf8j.js"
27068
27261
  },
27069
- "/_nuxt/Bxgaym6j.js": {
27070
- "type": "text/javascript; charset=utf-8",
27071
- "etag": "\"b22d-jpQEJ8C8fn6hY8V4GH9ThGbOrfo\"",
27072
- "mtime": "2026-09-03T16:52:30.241Z",
27073
- "size": 45613,
27074
- "path": "../public/_nuxt/Bxgaym6j.js"
27075
- },
27076
27262
  "/_nuxt/By-LNp3k.js": {
27077
27263
  "type": "text/javascript; charset=utf-8",
27078
27264
  "etag": "\"628-YzaHtvEl3od6eW8W/0li6P/WuA4\"",
27079
- "mtime": "2026-09-03T16:52:30.241Z",
27265
+ "mtime": "2026-09-04T04:30:50.556Z",
27080
27266
  "size": 1576,
27081
27267
  "path": "../public/_nuxt/By-LNp3k.js"
27082
27268
  },
27269
+ "/_nuxt/Bxgaym6j.js": {
27270
+ "type": "text/javascript; charset=utf-8",
27271
+ "etag": "\"b22d-jpQEJ8C8fn6hY8V4GH9ThGbOrfo\"",
27272
+ "mtime": "2026-09-04T04:30:50.556Z",
27273
+ "size": 45613,
27274
+ "path": "../public/_nuxt/Bxgaym6j.js"
27275
+ },
27083
27276
  "/_nuxt/ByGNWgAr.js": {
27084
27277
  "type": "text/javascript; charset=utf-8",
27085
27278
  "etag": "\"a6ef-i08VwpGBmCrbpxIYs6NCjsMcsLM\"",
27086
- "mtime": "2026-09-03T16:52:30.242Z",
27279
+ "mtime": "2026-09-04T04:30:50.556Z",
27087
27280
  "size": 42735,
27088
27281
  "path": "../public/_nuxt/ByGNWgAr.js"
27089
27282
  },
27090
- "/_nuxt/Ce1zyNYu.js": {
27283
+ "/_nuxt/CdfAP_IH2.js": {
27091
27284
  "type": "text/javascript; charset=utf-8",
27092
- "etag": "\"1aa4-M2wqiS1A05NQaxZt2Lkrl4z5KSs\"",
27093
- "mtime": "2026-09-03T16:52:30.244Z",
27094
- "size": 6820,
27095
- "path": "../public/_nuxt/Ce1zyNYu.js"
27285
+ "etag": "\"5162-RGdD9vrWrwYW+Y9dylnQ3btpJkA\"",
27286
+ "mtime": "2026-09-04T04:30:50.558Z",
27287
+ "size": 20834,
27288
+ "path": "../public/_nuxt/CdfAP_IH2.js"
27096
27289
  },
27097
27290
  "/_nuxt/C9f8QMp12.js": {
27098
27291
  "type": "text/javascript; charset=utf-8",
27099
27292
  "etag": "\"1896-VcRRXhZEm21djPt3FTvlq+iUccI\"",
27100
- "mtime": "2026-09-03T16:52:30.242Z",
27293
+ "mtime": "2026-09-04T04:30:50.556Z",
27101
27294
  "size": 6294,
27102
27295
  "path": "../public/_nuxt/C9f8QMp12.js"
27103
27296
  },
27104
- "/_nuxt/ChEKFMxj.js": {
27105
- "type": "text/javascript; charset=utf-8",
27106
- "etag": "\"18b-iQWgRD/SAefQcUmBu8DMSobJ8mI\"",
27107
- "mtime": "2026-09-03T16:52:30.244Z",
27108
- "size": 395,
27109
- "path": "../public/_nuxt/ChEKFMxj.js"
27110
- },
27111
- "/_nuxt/Bz40vyZS.js": {
27297
+ "/_nuxt/CdSgfcYR.js": {
27112
27298
  "type": "text/javascript; charset=utf-8",
27113
- "etag": "\"25f37-E/eVOfw2BMzbvReXIfb8tHZmIlk\"",
27114
- "mtime": "2026-09-03T16:52:30.242Z",
27115
- "size": 155447,
27116
- "path": "../public/_nuxt/Bz40vyZS.js"
27299
+ "etag": "\"2427-i01sLt6fsO7mcF6NUt/ezhVoFXY\"",
27300
+ "mtime": "2026-09-04T04:30:50.558Z",
27301
+ "size": 9255,
27302
+ "path": "../public/_nuxt/CdSgfcYR.js"
27117
27303
  },
27118
27304
  "/_nuxt/channel-templates.lkqEYlWY.css": {
27119
27305
  "type": "text/css; charset=utf-8",
27120
27306
  "etag": "\"846-xsPqrbRlt2uxmbSxMrjhPhB1/BQ\"",
27121
- "mtime": "2026-09-03T16:52:30.255Z",
27307
+ "mtime": "2026-09-04T04:30:50.568Z",
27122
27308
  "size": 2118,
27123
27309
  "path": "../public/_nuxt/channel-templates.lkqEYlWY.css"
27124
27310
  },
27311
+ "/_nuxt/Ce1zyNYu.js": {
27312
+ "type": "text/javascript; charset=utf-8",
27313
+ "etag": "\"1aa4-M2wqiS1A05NQaxZt2Lkrl4z5KSs\"",
27314
+ "mtime": "2026-09-04T04:30:50.558Z",
27315
+ "size": 6820,
27316
+ "path": "../public/_nuxt/Ce1zyNYu.js"
27317
+ },
27318
+ "/_nuxt/ChEKFMxj.js": {
27319
+ "type": "text/javascript; charset=utf-8",
27320
+ "etag": "\"18b-iQWgRD/SAefQcUmBu8DMSobJ8mI\"",
27321
+ "mtime": "2026-09-04T04:30:50.559Z",
27322
+ "size": 395,
27323
+ "path": "../public/_nuxt/ChEKFMxj.js"
27324
+ },
27325
+ "/_nuxt/ChnfyQHz.js": {
27326
+ "type": "text/javascript; charset=utf-8",
27327
+ "etag": "\"665-FgIxFQ3vFyM9CSQU6ox2ApoM7LI\"",
27328
+ "mtime": "2026-09-04T04:30:50.559Z",
27329
+ "size": 1637,
27330
+ "path": "../public/_nuxt/ChnfyQHz.js"
27331
+ },
27125
27332
  "/_nuxt/Cno6kYiO2.js": {
27126
27333
  "type": "text/javascript; charset=utf-8",
27127
27334
  "etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
27128
- "mtime": "2026-09-03T16:52:30.245Z",
27335
+ "mtime": "2026-09-04T04:30:50.559Z",
27129
27336
  "size": 242,
27130
27337
  "path": "../public/_nuxt/Cno6kYiO2.js"
27131
27338
  },
27339
+ "/_nuxt/CN7Zh8GQ.js": {
27340
+ "type": "text/javascript; charset=utf-8",
27341
+ "etag": "\"9963-pPk6CpuIYBRmRu997Sw+o/u7J7Y\"",
27342
+ "mtime": "2026-09-04T04:30:50.557Z",
27343
+ "size": 39267,
27344
+ "path": "../public/_nuxt/CN7Zh8GQ.js"
27345
+ },
27132
27346
  "/_nuxt/CNs_Ozdc2.js": {
27133
27347
  "type": "text/javascript; charset=utf-8",
27134
27348
  "etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
27135
- "mtime": "2026-09-03T16:52:30.242Z",
27349
+ "mtime": "2026-09-04T04:30:50.557Z",
27136
27350
  "size": 27,
27137
27351
  "path": "../public/_nuxt/CNs_Ozdc2.js"
27138
27352
  },
27139
- "/_nuxt/CrFGZYVB2.js": {
27353
+ "/_nuxt/CUxV8Bw_.js": {
27140
27354
  "type": "text/javascript; charset=utf-8",
27141
- "etag": "\"1fd9-h9Klnky7cwjw32+pRNI7dtuWAO4\"",
27142
- "mtime": "2026-09-03T16:52:30.245Z",
27143
- "size": 8153,
27144
- "path": "../public/_nuxt/CrFGZYVB2.js"
27355
+ "etag": "\"62a-JJmAaKSZHLMwk9ceZyT0UorTARk\"",
27356
+ "mtime": "2026-09-04T04:30:50.557Z",
27357
+ "size": 1578,
27358
+ "path": "../public/_nuxt/CUxV8Bw_.js"
27145
27359
  },
27146
27360
  "/_nuxt/CfIXY-ET.js": {
27147
27361
  "type": "text/javascript; charset=utf-8",
27148
27362
  "etag": "\"28a2f-wT9I8KiLCqQ9ynK+e7t0thS24kQ\"",
27149
- "mtime": "2026-09-03T16:52:30.244Z",
27363
+ "mtime": "2026-09-04T04:30:50.558Z",
27150
27364
  "size": 166447,
27151
27365
  "path": "../public/_nuxt/CfIXY-ET.js"
27152
27366
  },
27153
- "/_nuxt/CUxV8Bw_.js": {
27154
- "type": "text/javascript; charset=utf-8",
27155
- "etag": "\"62a-JJmAaKSZHLMwk9ceZyT0UorTARk\"",
27156
- "mtime": "2026-09-03T16:52:30.243Z",
27157
- "size": 1578,
27158
- "path": "../public/_nuxt/CUxV8Bw_.js"
27159
- },
27160
27367
  "/_nuxt/CS8R0_J3.js": {
27161
27368
  "type": "text/javascript; charset=utf-8",
27162
27369
  "etag": "\"359a-Ke/WCceSRrJsHLFPhkn1KXVg1m8\"",
27163
- "mtime": "2026-09-03T16:52:30.243Z",
27370
+ "mtime": "2026-09-04T04:30:50.557Z",
27164
27371
  "size": 13722,
27165
27372
  "path": "../public/_nuxt/CS8R0_J3.js"
27166
27373
  },
27374
+ "/_nuxt/CrFGZYVB2.js": {
27375
+ "type": "text/javascript; charset=utf-8",
27376
+ "etag": "\"1fd9-h9Klnky7cwjw32+pRNI7dtuWAO4\"",
27377
+ "mtime": "2026-09-04T04:30:50.559Z",
27378
+ "size": 8153,
27379
+ "path": "../public/_nuxt/CrFGZYVB2.js"
27380
+ },
27167
27381
  "/_nuxt/CWKEp1wx2.js": {
27168
27382
  "type": "text/javascript; charset=utf-8",
27169
27383
  "etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
27170
- "mtime": "2026-09-03T16:52:30.243Z",
27384
+ "mtime": "2026-09-04T04:30:50.557Z",
27171
27385
  "size": 1365,
27172
27386
  "path": "../public/_nuxt/CWKEp1wx2.js"
27173
27387
  },
27174
27388
  "/_nuxt/CXLI50Sq.js": {
27175
27389
  "type": "text/javascript; charset=utf-8",
27176
27390
  "etag": "\"1f3a-hlX9ru6jZckxtwzbcBYyr7wgyrY\"",
27177
- "mtime": "2026-09-03T16:52:30.243Z",
27391
+ "mtime": "2026-09-04T04:30:50.557Z",
27178
27392
  "size": 7994,
27179
27393
  "path": "../public/_nuxt/CXLI50Sq.js"
27180
27394
  },
27181
27395
  "/_nuxt/CXmkVXS5.js": {
27182
27396
  "type": "text/javascript; charset=utf-8",
27183
27397
  "etag": "\"24f7-tR+DK2JkbdIBud+YvEMouhp170U\"",
27184
- "mtime": "2026-09-03T16:52:30.244Z",
27398
+ "mtime": "2026-09-04T04:30:50.558Z",
27185
27399
  "size": 9463,
27186
27400
  "path": "../public/_nuxt/CXmkVXS5.js"
27187
27401
  },
27402
+ "/_nuxt/CyygA0q4.js": {
27403
+ "type": "text/javascript; charset=utf-8",
27404
+ "etag": "\"3bb30-wNRelmgDMW2M+QWkeqCO4tMJ6ko\"",
27405
+ "mtime": "2026-09-04T04:30:50.549Z",
27406
+ "size": 244528,
27407
+ "path": "../public/_nuxt/CyygA0q4.js"
27408
+ },
27409
+ "/_nuxt/D5KJ7_0V.js": {
27410
+ "type": "text/javascript; charset=utf-8",
27411
+ "etag": "\"56ab-vqOxu4dfOFWqC1pao4/du5wXWFk\"",
27412
+ "mtime": "2026-09-04T04:30:50.560Z",
27413
+ "size": 22187,
27414
+ "path": "../public/_nuxt/D5KJ7_0V.js"
27415
+ },
27188
27416
  "/_nuxt/C_gFA2H_2.js": {
27189
27417
  "type": "text/javascript; charset=utf-8",
27190
27418
  "etag": "\"89e-FjJprk7cJxDm6dF45I+PCzGIcG8\"",
27191
- "mtime": "2026-09-03T16:52:30.244Z",
27419
+ "mtime": "2026-09-04T04:30:50.558Z",
27192
27420
  "size": 2206,
27193
27421
  "path": "../public/_nuxt/C_gFA2H_2.js"
27194
27422
  },
27195
27423
  "/_nuxt/D-Ne4C9a.js": {
27196
27424
  "type": "text/javascript; charset=utf-8",
27197
27425
  "etag": "\"1195-OssDeoy4mh8A5/QMpQbuGQHyIKQ\"",
27198
- "mtime": "2026-09-03T16:52:30.245Z",
27426
+ "mtime": "2026-09-04T04:30:50.559Z",
27199
27427
  "size": 4501,
27200
27428
  "path": "../public/_nuxt/D-Ne4C9a.js"
27201
27429
  },
27202
- "/_nuxt/D0C5Q0di.js": {
27203
- "type": "text/javascript; charset=utf-8",
27204
- "etag": "\"e47f-Fzcm4dFhj/kmVCb6h/Aye9ehAG4\"",
27205
- "mtime": "2026-09-03T16:52:30.245Z",
27206
- "size": 58495,
27207
- "path": "../public/_nuxt/D0C5Q0di.js"
27208
- },
27209
27430
  "/_nuxt/D8DDDzV62.js": {
27210
27431
  "type": "text/javascript; charset=utf-8",
27211
27432
  "etag": "\"20cf-8a3dXj+yAc7cMA4Jnv64rxS2ouU\"",
27212
- "mtime": "2026-09-03T16:52:30.246Z",
27433
+ "mtime": "2026-09-04T04:30:50.560Z",
27213
27434
  "size": 8399,
27214
27435
  "path": "../public/_nuxt/D8DDDzV62.js"
27215
27436
  },
27216
- "/_nuxt/daq.BXsnevQv.css": {
27217
- "type": "text/css; charset=utf-8",
27218
- "etag": "\"560c-YFQOxXaOvpsOJCF9QKvLaATY3Wo\"",
27219
- "mtime": "2026-09-03T16:52:30.256Z",
27220
- "size": 22028,
27221
- "path": "../public/_nuxt/daq.BXsnevQv.css"
27222
- },
27223
- "/_nuxt/D5KJ7_0V.js": {
27224
- "type": "text/javascript; charset=utf-8",
27225
- "etag": "\"56ab-vqOxu4dfOFWqC1pao4/du5wXWFk\"",
27226
- "mtime": "2026-09-03T16:52:30.246Z",
27227
- "size": 22187,
27228
- "path": "../public/_nuxt/D5KJ7_0V.js"
27229
- },
27230
27437
  "/_nuxt/D95h62Jn.js": {
27231
27438
  "type": "text/javascript; charset=utf-8",
27232
27439
  "etag": "\"3f5-sTPqCSaAt8a9YlLXlhRfFlOtmcQ\"",
27233
- "mtime": "2026-09-03T16:52:30.246Z",
27440
+ "mtime": "2026-09-04T04:30:50.560Z",
27234
27441
  "size": 1013,
27235
27442
  "path": "../public/_nuxt/D95h62Jn.js"
27236
27443
  },
27237
- "/_nuxt/DC-QMEk1.js": {
27238
- "type": "text/javascript; charset=utf-8",
27239
- "etag": "\"1cbf0-Gj4ROxVGQJohyOxsqU24cF9MK/8\"",
27240
- "mtime": "2026-09-03T16:52:30.246Z",
27241
- "size": 117744,
27242
- "path": "../public/_nuxt/DC-QMEk1.js"
27444
+ "/_nuxt/daq.BXsnevQv.css": {
27445
+ "type": "text/css; charset=utf-8",
27446
+ "etag": "\"560c-YFQOxXaOvpsOJCF9QKvLaATY3Wo\"",
27447
+ "mtime": "2026-09-04T04:30:50.568Z",
27448
+ "size": 22028,
27449
+ "path": "../public/_nuxt/daq.BXsnevQv.css"
27243
27450
  },
27244
27451
  "/_nuxt/dcw.C46dGiF_.css": {
27245
27452
  "type": "text/css; charset=utf-8",
27246
27453
  "etag": "\"2608-5iynscon3f2ARegtDxl5rYx3iYM\"",
27247
- "mtime": "2026-09-03T16:52:30.256Z",
27454
+ "mtime": "2026-09-04T04:30:50.568Z",
27248
27455
  "size": 9736,
27249
27456
  "path": "../public/_nuxt/dcw.C46dGiF_.css"
27250
27457
  },
27251
- "/_nuxt/default.iGJy9dP-.css": {
27252
- "type": "text/css; charset=utf-8",
27253
- "etag": "\"2922-+exPltwm+fwclE+cBqnrulaFObQ\"",
27254
- "mtime": "2026-09-03T16:52:30.256Z",
27255
- "size": 10530,
27256
- "path": "../public/_nuxt/default.iGJy9dP-.css"
27257
- },
27258
27458
  "/_nuxt/DdPeifHR.js": {
27259
27459
  "type": "text/javascript; charset=utf-8",
27260
27460
  "etag": "\"7ec3-Ul9ut8rzcNu1BCT2CL704Bev/mM\"",
27261
- "mtime": "2026-09-03T16:52:30.248Z",
27461
+ "mtime": "2026-09-04T04:30:50.562Z",
27262
27462
  "size": 32451,
27263
27463
  "path": "../public/_nuxt/DdPeifHR.js"
27264
27464
  },
27465
+ "/_nuxt/default.D17kXlD6.css": {
27466
+ "type": "text/css; charset=utf-8",
27467
+ "etag": "\"2f56-0AQgSPBC80a3PbmNM+FixHqAmOs\"",
27468
+ "mtime": "2026-09-04T04:30:50.568Z",
27469
+ "size": 12118,
27470
+ "path": "../public/_nuxt/default.D17kXlD6.css"
27471
+ },
27265
27472
  "/_nuxt/DEHNjlTq2.js": {
27266
27473
  "type": "text/javascript; charset=utf-8",
27267
27474
  "etag": "\"14fe-IJ6pssvuWomkWeOPhpylkD+TDmA\"",
27268
- "mtime": "2026-09-03T16:52:30.246Z",
27475
+ "mtime": "2026-09-04T04:30:50.560Z",
27269
27476
  "size": 5374,
27270
27477
  "path": "../public/_nuxt/DEHNjlTq2.js"
27271
27478
  },
27272
27479
  "/_nuxt/DIOBYJe3.js": {
27273
27480
  "type": "text/javascript; charset=utf-8",
27274
27481
  "etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
27275
- "mtime": "2026-09-03T16:52:30.247Z",
27482
+ "mtime": "2026-09-04T04:30:50.560Z",
27276
27483
  "size": 1205,
27277
27484
  "path": "../public/_nuxt/DIOBYJe3.js"
27278
27485
  },
27279
- "/_nuxt/DEkQ0qQ02.js": {
27280
- "type": "text/javascript; charset=utf-8",
27281
- "etag": "\"4cfc-ucIBbCQ6UaqBmotD7yRBtwEHEyU\"",
27282
- "mtime": "2026-09-03T16:52:30.247Z",
27283
- "size": 19708,
27284
- "path": "../public/_nuxt/DEkQ0qQ02.js"
27285
- },
27286
- "/_nuxt/DP6bdyIp.js": {
27287
- "type": "text/javascript; charset=utf-8",
27288
- "etag": "\"119c-ZH6sW8Yv0KAJf0LIwFiNMRP2kk8\"",
27289
- "mtime": "2026-09-03T16:52:30.248Z",
27290
- "size": 4508,
27291
- "path": "../public/_nuxt/DP6bdyIp.js"
27292
- },
27293
27486
  "/_nuxt/DNJSkm3Q.js": {
27294
27487
  "type": "text/javascript; charset=utf-8",
27295
27488
  "etag": "\"216b-y0s8z84O8dmpAUYWCz4LSRx0vJQ\"",
27296
- "mtime": "2026-09-03T16:52:30.247Z",
27489
+ "mtime": "2026-09-04T04:30:50.561Z",
27297
27490
  "size": 8555,
27298
27491
  "path": "../public/_nuxt/DNJSkm3Q.js"
27299
27492
  },
27300
27493
  "/_nuxt/dObsRdSQ.js": {
27301
27494
  "type": "text/javascript; charset=utf-8",
27302
27495
  "etag": "\"3d5-6E8m1HnkzKD1X9Hx3/ZbS1uH0vc\"",
27303
- "mtime": "2026-09-03T16:52:30.251Z",
27496
+ "mtime": "2026-09-04T04:30:50.565Z",
27304
27497
  "size": 981,
27305
27498
  "path": "../public/_nuxt/dObsRdSQ.js"
27306
27499
  },
27500
+ "/_nuxt/DP6bdyIp.js": {
27501
+ "type": "text/javascript; charset=utf-8",
27502
+ "etag": "\"119c-ZH6sW8Yv0KAJf0LIwFiNMRP2kk8\"",
27503
+ "mtime": "2026-09-04T04:30:50.561Z",
27504
+ "size": 4508,
27505
+ "path": "../public/_nuxt/DP6bdyIp.js"
27506
+ },
27307
27507
  "/_nuxt/DPDqAD1e.js": {
27308
27508
  "type": "text/javascript; charset=utf-8",
27309
27509
  "etag": "\"4842-1Qirb7tmwMUEq9mSoIl88rnZ6Rk\"",
27310
- "mtime": "2026-09-03T16:52:30.248Z",
27510
+ "mtime": "2026-09-04T04:30:50.561Z",
27311
27511
  "size": 18498,
27312
27512
  "path": "../public/_nuxt/DPDqAD1e.js"
27313
27513
  },
27314
27514
  "/_nuxt/DRq09ZmT.js": {
27315
27515
  "type": "text/javascript; charset=utf-8",
27316
27516
  "etag": "\"29d-1stN5BQaapAs+Peb3DQslLQQr+0\"",
27317
- "mtime": "2026-09-03T16:52:30.248Z",
27517
+ "mtime": "2026-09-04T04:30:50.561Z",
27318
27518
  "size": 669,
27319
27519
  "path": "../public/_nuxt/DRq09ZmT.js"
27320
27520
  },
27321
27521
  "/_nuxt/DVQAz9WI.js": {
27322
27522
  "type": "text/javascript; charset=utf-8",
27323
27523
  "etag": "\"130c-rUMRdwb4oHiuX7IOXv/sclpvuds\"",
27324
- "mtime": "2026-09-03T16:52:30.248Z",
27524
+ "mtime": "2026-09-04T04:30:50.562Z",
27325
27525
  "size": 4876,
27326
27526
  "path": "../public/_nuxt/DVQAz9WI.js"
27327
27527
  },
27328
- "/_nuxt/dt2tKE95.js": {
27329
- "type": "text/javascript; charset=utf-8",
27330
- "etag": "\"4cc1-PBJBqFz6X1T5i/2dfz7MZ6G+XKY\"",
27331
- "mtime": "2026-09-03T16:52:30.252Z",
27332
- "size": 19649,
27333
- "path": "../public/_nuxt/dt2tKE95.js"
27334
- },
27335
27528
  "/_nuxt/DSBfvCi5.js": {
27336
27529
  "type": "text/javascript; charset=utf-8",
27337
27530
  "etag": "\"103b0-dVLvfb3xqwBE5sNRDvR7g27gNt8\"",
27338
- "mtime": "2026-09-03T16:52:30.248Z",
27531
+ "mtime": "2026-09-04T04:30:50.561Z",
27339
27532
  "size": 66480,
27340
27533
  "path": "../public/_nuxt/DSBfvCi5.js"
27341
27534
  },
27342
27535
  "/_nuxt/DXK1U43I.js": {
27343
27536
  "type": "text/javascript; charset=utf-8",
27344
27537
  "etag": "\"4e6e-0ajU7w+quumividScJQJc/QFBDw\"",
27345
- "mtime": "2026-09-03T16:52:30.248Z",
27538
+ "mtime": "2026-09-04T04:30:50.562Z",
27346
27539
  "size": 20078,
27347
27540
  "path": "../public/_nuxt/DXK1U43I.js"
27348
27541
  },
27349
- "/_nuxt/DYWgGHNo.js": {
27542
+ "/_nuxt/DFnGFEav.js": {
27350
27543
  "type": "text/javascript; charset=utf-8",
27351
- "etag": "\"587c-klAZIaxStgu8xNRhCveCQsbbAa8\"",
27352
- "mtime": "2026-09-03T16:52:30.248Z",
27353
- "size": 22652,
27354
- "path": "../public/_nuxt/DYWgGHNo.js"
27544
+ "etag": "\"25f1c-24HMGxJK8i3X08xhHzjQUYthA/o\"",
27545
+ "mtime": "2026-09-04T04:30:50.560Z",
27546
+ "size": 155420,
27547
+ "path": "../public/_nuxt/DFnGFEav.js"
27355
27548
  },
27356
27549
  "/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2": {
27357
27550
  "type": "font/woff2",
27358
27551
  "etag": "\"3504-t17DeaJZ5CiTr/7PdWXcRgN9/Yc\"",
27359
- "mtime": "2026-09-03T16:52:30.256Z",
27552
+ "mtime": "2026-09-04T04:30:50.569Z",
27360
27553
  "size": 13572,
27361
27554
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BGIwiowF.woff2"
27362
27555
  },
27556
+ "/_nuxt/DYWgGHNo.js": {
27557
+ "type": "text/javascript; charset=utf-8",
27558
+ "etag": "\"587c-klAZIaxStgu8xNRhCveCQsbbAa8\"",
27559
+ "mtime": "2026-09-04T04:30:50.562Z",
27560
+ "size": 22652,
27561
+ "path": "../public/_nuxt/DYWgGHNo.js"
27562
+ },
27563
+ "/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
27564
+ "type": "font/woff",
27565
+ "etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
27566
+ "mtime": "2026-09-04T04:30:50.569Z",
27567
+ "size": 16132,
27568
+ "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
27569
+ },
27363
27570
  "/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff": {
27364
27571
  "type": "font/woff",
27365
27572
  "etag": "\"3c88-Q5XoFKe1rGp1UkdvSR6MtPcFfgQ\"",
27366
- "mtime": "2026-09-03T16:52:30.256Z",
27573
+ "mtime": "2026-09-04T04:30:50.569Z",
27367
27574
  "size": 15496,
27368
27575
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff"
27369
27576
  },
27370
27577
  "/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
27371
27578
  "type": "font/woff2",
27372
27579
  "etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
27373
- "mtime": "2026-09-03T16:52:30.257Z",
27580
+ "mtime": "2026-09-04T04:30:50.569Z",
27374
27581
  "size": 13268,
27375
27582
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
27376
27583
  },
27377
- "/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
27378
- "type": "font/woff",
27379
- "etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
27380
- "mtime": "2026-09-03T16:52:30.256Z",
27381
- "size": 16132,
27382
- "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
27383
- },
27384
27584
  "/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
27385
27585
  "type": "font/woff",
27386
27586
  "etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
27387
- "mtime": "2026-09-03T16:52:30.257Z",
27587
+ "mtime": "2026-09-04T04:30:50.570Z",
27388
27588
  "size": 22168,
27389
27589
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
27390
27590
  },
27391
27591
  "/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
27392
27592
  "type": "font/woff2",
27393
27593
  "etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
27394
- "mtime": "2026-09-03T16:52:30.257Z",
27594
+ "mtime": "2026-09-04T04:30:50.569Z",
27395
27595
  "size": 17952,
27396
27596
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
27397
27597
  },
27398
- "/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
27399
- "type": "font/woff2",
27400
- "etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
27401
- "mtime": "2026-09-03T16:52:30.258Z",
27402
- "size": 16796,
27403
- "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
27404
- },
27405
27598
  "/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff": {
27406
27599
  "type": "font/woff",
27407
27600
  "etag": "\"4fcc-Wt58DNvJEH8PhhsEwR/fAuZLZf0\"",
27408
- "mtime": "2026-09-03T16:52:30.258Z",
27601
+ "mtime": "2026-09-04T04:30:50.570Z",
27409
27602
  "size": 20428,
27410
27603
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff"
27411
27604
  },
27605
+ "/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
27606
+ "type": "font/woff2",
27607
+ "etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
27608
+ "mtime": "2026-09-04T04:30:50.570Z",
27609
+ "size": 16796,
27610
+ "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
27611
+ },
27412
27612
  "/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff": {
27413
27613
  "type": "font/woff",
27414
27614
  "etag": "\"307c-Fmorq8T0Tyl1FByuAGfnIMJMsU0\"",
27415
- "mtime": "2026-09-03T16:52:30.258Z",
27615
+ "mtime": "2026-09-04T04:30:50.570Z",
27416
27616
  "size": 12412,
27417
27617
  "path": "../public/_nuxt/eb-garamond-greek-400-italic.BamGE6QP.woff"
27418
27618
  },
27419
27619
  "/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2": {
27420
27620
  "type": "font/woff2",
27421
27621
  "etag": "\"2904-BXAeLh8O+jrT8ujKrV7WtU2zP1c\"",
27422
- "mtime": "2026-09-03T16:52:30.258Z",
27622
+ "mtime": "2026-09-04T04:30:50.570Z",
27423
27623
  "size": 10500,
27424
27624
  "path": "../public/_nuxt/eb-garamond-greek-400-italic.Dqr5KC66.woff2"
27425
27625
  },
27426
- "/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
27427
- "type": "font/woff2",
27428
- "etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
27429
- "mtime": "2026-09-03T16:52:30.258Z",
27430
- "size": 10752,
27431
- "path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
27432
- },
27433
27626
  "/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff": {
27434
27627
  "type": "font/woff",
27435
27628
  "etag": "\"3108-ggShwQ6kE+MAR7EEQafdmWunxHg\"",
27436
- "mtime": "2026-09-03T16:52:30.259Z",
27629
+ "mtime": "2026-09-04T04:30:50.571Z",
27437
27630
  "size": 12552,
27438
27631
  "path": "../public/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff"
27439
27632
  },
27633
+ "/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
27634
+ "type": "font/woff2",
27635
+ "etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
27636
+ "mtime": "2026-09-04T04:30:50.570Z",
27637
+ "size": 10752,
27638
+ "path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
27639
+ },
27440
27640
  "/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff": {
27441
27641
  "type": "font/woff",
27442
27642
  "etag": "\"2304-q8ppn7qePqLys53UrEKMrGT8e6E\"",
27443
- "mtime": "2026-09-03T16:52:30.259Z",
27643
+ "mtime": "2026-09-04T04:30:50.571Z",
27444
27644
  "size": 8964,
27445
27645
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff"
27446
27646
  },
27447
27647
  "/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2": {
27448
27648
  "type": "font/woff2",
27449
27649
  "etag": "\"19d0-ppOK6AfNTXYuDEeeEMQQhOypGW8\"",
27450
- "mtime": "2026-09-03T16:52:30.259Z",
27650
+ "mtime": "2026-09-04T04:30:50.571Z",
27451
27651
  "size": 6608,
27452
27652
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.CHZOQEtG.woff2"
27453
27653
  },
27454
27654
  "/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
27455
27655
  "type": "font/woff",
27456
27656
  "etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
27457
- "mtime": "2026-09-03T16:52:30.259Z",
27657
+ "mtime": "2026-09-04T04:30:50.571Z",
27458
27658
  "size": 8368,
27459
27659
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
27460
27660
  },
27461
27661
  "/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
27462
27662
  "type": "font/woff2",
27463
27663
  "etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
27464
- "mtime": "2026-09-03T16:52:30.260Z",
27664
+ "mtime": "2026-09-04T04:30:50.571Z",
27465
27665
  "size": 6464,
27466
27666
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
27467
27667
  },
27468
- "/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff": {
27469
- "type": "font/woff",
27470
- "etag": "\"7890-VX8YYh09367bg28IWSUybEXrsDQ\"",
27471
- "mtime": "2026-09-03T16:52:30.260Z",
27472
- "size": 30864,
27473
- "path": "../public/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff"
27668
+ "/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2": {
27669
+ "type": "font/woff2",
27670
+ "etag": "\"632c-iB8RNlBCm9D0APLcMJ/hIPATx+0\"",
27671
+ "mtime": "2026-09-04T04:30:50.572Z",
27672
+ "size": 25388,
27673
+ "path": "../public/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2"
27474
27674
  },
27475
27675
  "/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2": {
27476
27676
  "type": "font/woff2",
27477
27677
  "etag": "\"5d0c-w7FmIa34l5RBoJYmvp9lwadEvW4\"",
27478
- "mtime": "2026-09-03T16:52:30.260Z",
27678
+ "mtime": "2026-09-04T04:30:50.572Z",
27479
27679
  "size": 23820,
27480
27680
  "path": "../public/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2"
27481
27681
  },
27482
- "/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2": {
27483
- "type": "font/woff2",
27484
- "etag": "\"632c-iB8RNlBCm9D0APLcMJ/hIPATx+0\"",
27485
- "mtime": "2026-09-03T16:52:30.260Z",
27486
- "size": 25388,
27487
- "path": "../public/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2"
27488
- },
27489
- "/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
27682
+ "/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff": {
27490
27683
  "type": "font/woff",
27491
- "etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
27492
- "mtime": "2026-09-03T16:52:30.261Z",
27493
- "size": 62904,
27494
- "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
27684
+ "etag": "\"7890-VX8YYh09367bg28IWSUybEXrsDQ\"",
27685
+ "mtime": "2026-09-04T04:30:50.571Z",
27686
+ "size": 30864,
27687
+ "path": "../public/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff"
27495
27688
  },
27496
27689
  "/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
27497
27690
  "type": "font/woff",
27498
27691
  "etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
27499
- "mtime": "2026-09-03T16:52:30.260Z",
27692
+ "mtime": "2026-09-04T04:30:50.572Z",
27500
27693
  "size": 28608,
27501
27694
  "path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
27502
27695
  },
27503
27696
  "/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2": {
27504
27697
  "type": "font/woff2",
27505
27698
  "etag": "\"b19c-7qms9anmdJJsBixQTHSocgV31Qk\"",
27506
- "mtime": "2026-09-03T16:52:30.261Z",
27699
+ "mtime": "2026-09-04T04:30:50.572Z",
27507
27700
  "size": 45468,
27508
27701
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2"
27509
27702
  },
27510
27703
  "/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
27511
27704
  "type": "font/woff",
27512
27705
  "etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
27513
- "mtime": "2026-09-03T16:52:30.261Z",
27706
+ "mtime": "2026-09-04T04:30:50.572Z",
27514
27707
  "size": 76612,
27515
27708
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
27516
27709
  },
27517
- "/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
27518
- "type": "font/woff2",
27519
- "etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
27520
- "mtime": "2026-09-03T16:52:30.261Z",
27521
- "size": 56964,
27522
- "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
27523
- },
27524
- "/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
27710
+ "/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
27525
27711
  "type": "font/woff2",
27526
27712
  "etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
27527
- "mtime": "2026-09-03T16:52:30.262Z",
27713
+ "mtime": "2026-09-04T04:30:50.573Z",
27528
27714
  "size": 6268,
27529
27715
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
27530
27716
  },
27717
+ "/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
27718
+ "type": "font/woff",
27719
+ "etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
27720
+ "mtime": "2026-09-04T04:30:50.572Z",
27721
+ "size": 62904,
27722
+ "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
27723
+ },
27724
+ "/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
27725
+ "type": "font/woff2",
27726
+ "etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
27727
+ "mtime": "2026-09-04T04:30:50.573Z",
27728
+ "size": 56964,
27729
+ "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
27730
+ },
27531
27731
  "/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff": {
27532
27732
  "type": "font/woff",
27533
27733
  "etag": "\"1edc-XUugZ4qMSSF4m+TQLER2LLza1t0\"",
27534
- "mtime": "2026-09-03T16:52:30.262Z",
27734
+ "mtime": "2026-09-04T04:30:50.573Z",
27535
27735
  "size": 7900,
27536
27736
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.ORtyMVfw.woff"
27537
27737
  },
27538
27738
  "/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2": {
27539
27739
  "type": "font/woff2",
27540
27740
  "etag": "\"183c-arAHcc3MmJQ6+OtYVThlERUqDQQ\"",
27541
- "mtime": "2026-09-03T16:52:30.262Z",
27741
+ "mtime": "2026-09-04T04:30:50.573Z",
27542
27742
  "size": 6204,
27543
27743
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2"
27544
27744
  },
27545
- "/_nuxt/eHGLpQSg2.js": {
27546
- "type": "text/javascript; charset=utf-8",
27547
- "etag": "\"53-ZhaD2u1M9e+y/KP/l2gUqGdFFkk\"",
27548
- "mtime": "2026-09-03T16:52:30.252Z",
27549
- "size": 83,
27550
- "path": "../public/_nuxt/eHGLpQSg2.js"
27551
- },
27552
27745
  "/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff": {
27553
27746
  "type": "font/woff",
27554
27747
  "etag": "\"1e50-PGVIQbsmhTvI1h5aIhavpIQl8z4\"",
27555
- "mtime": "2026-09-03T16:52:30.262Z",
27748
+ "mtime": "2026-09-04T04:30:50.573Z",
27556
27749
  "size": 7760,
27557
27750
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
27558
27751
  },
27752
+ "/_nuxt/eHGLpQSg2.js": {
27753
+ "type": "text/javascript; charset=utf-8",
27754
+ "etag": "\"53-ZhaD2u1M9e+y/KP/l2gUqGdFFkk\"",
27755
+ "mtime": "2026-09-04T04:30:50.565Z",
27756
+ "size": 83,
27757
+ "path": "../public/_nuxt/eHGLpQSg2.js"
27758
+ },
27559
27759
  "/_nuxt/entry.DvlXlPwx.css": {
27560
27760
  "type": "text/css; charset=utf-8",
27561
27761
  "etag": "\"1bcd0-/fTe7O7UH4UOwZFN/tKX/4uF57o\"",
27562
- "mtime": "2026-09-03T16:52:30.262Z",
27762
+ "mtime": "2026-09-04T04:30:50.573Z",
27563
27763
  "size": 113872,
27564
27764
  "path": "../public/_nuxt/entry.DvlXlPwx.css"
27565
27765
  },
27566
- "/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
27567
- "type": "font/woff2",
27568
- "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
27569
- "mtime": "2026-09-03T16:52:30.263Z",
27570
- "size": 7420,
27571
- "path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
27572
- },
27573
27766
  "/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2": {
27574
27767
  "type": "font/woff2",
27575
27768
  "etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
27576
- "mtime": "2026-09-03T16:52:30.263Z",
27769
+ "mtime": "2026-09-04T04:30:50.574Z",
27577
27770
  "size": 15084,
27578
27771
  "path": "../public/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2"
27579
27772
  },
27580
- "/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2": {
27773
+ "/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
27581
27774
  "type": "font/woff2",
27582
- "etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
27583
- "mtime": "2026-09-03T16:52:30.263Z",
27584
- "size": 16512,
27585
- "path": "../public/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2"
27775
+ "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
27776
+ "mtime": "2026-09-04T04:30:50.574Z",
27777
+ "size": 7420,
27778
+ "path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
27586
27779
  },
27587
27780
  "/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2": {
27588
27781
  "type": "font/woff2",
27589
27782
  "etag": "\"1820-nQACIwCsmkduQK2CSMidMhmLR9U\"",
27590
- "mtime": "2026-09-03T16:52:30.263Z",
27783
+ "mtime": "2026-09-04T04:30:50.574Z",
27591
27784
  "size": 6176,
27592
27785
  "path": "../public/_nuxt/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2"
27593
27786
  },
27787
+ "/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2": {
27788
+ "type": "font/woff2",
27789
+ "etag": "\"4080-mZu3Z7sOWqglha+kefNbUA9Pp+Q\"",
27790
+ "mtime": "2026-09-04T04:30:50.574Z",
27791
+ "size": 16512,
27792
+ "path": "../public/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2"
27793
+ },
27594
27794
  "/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
27595
27795
  "type": "font/woff2",
27596
27796
  "etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
27597
- "mtime": "2026-09-03T16:52:30.263Z",
27797
+ "mtime": "2026-09-04T04:30:50.574Z",
27598
27798
  "size": 29400,
27599
27799
  "path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2"
27600
27800
  },
27801
+ "/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
27802
+ "type": "font/woff2",
27803
+ "etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
27804
+ "mtime": "2026-09-04T04:30:50.574Z",
27805
+ "size": 12940,
27806
+ "path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
27807
+ },
27601
27808
  "/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2": {
27602
27809
  "type": "font/woff2",
27603
27810
  "etag": "\"3968-BV9ZbqWHVAcipAKX5y8la3JkUQs\"",
27604
- "mtime": "2026-09-03T16:52:30.264Z",
27811
+ "mtime": "2026-09-04T04:30:50.574Z",
27605
27812
  "size": 14696,
27606
27813
  "path": "../public/_nuxt/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2"
27607
27814
  },
27608
- "/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
27815
+ "/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2": {
27609
27816
  "type": "font/woff2",
27610
- "etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
27611
- "mtime": "2026-09-03T16:52:30.264Z",
27612
- "size": 12940,
27613
- "path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
27817
+ "etag": "\"5a58-jDy+14PX7OhwqFZsiKzuRax9xZ8\"",
27818
+ "mtime": "2026-09-04T04:30:50.575Z",
27819
+ "size": 23128,
27820
+ "path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
27614
27821
  },
27615
27822
  "/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
27616
27823
  "type": "font/woff2",
27617
27824
  "etag": "\"16b4-aZoLOGWoEYW7gmwZamfz5kTfFco\"",
27618
- "mtime": "2026-09-03T16:52:30.264Z",
27825
+ "mtime": "2026-09-04T04:30:50.575Z",
27619
27826
  "size": 5812,
27620
27827
  "path": "../public/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2"
27621
27828
  },
27622
27829
  "/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2": {
27623
27830
  "type": "font/woff2",
27624
27831
  "etag": "\"1e10-mpU2OlFk4DakDO4paRfgJ2LHDsM\"",
27625
- "mtime": "2026-09-03T16:52:30.264Z",
27832
+ "mtime": "2026-09-04T04:30:50.575Z",
27626
27833
  "size": 7696,
27627
27834
  "path": "../public/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2"
27628
27835
  },
27629
- "/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2": {
27836
+ "/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2": {
27630
27837
  "type": "font/woff2",
27631
- "etag": "\"5a58-jDy+14PX7OhwqFZsiKzuRax9xZ8\"",
27632
- "mtime": "2026-09-03T16:52:30.264Z",
27633
- "size": 23128,
27634
- "path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
27838
+ "etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
27839
+ "mtime": "2026-09-04T04:30:50.575Z",
27840
+ "size": 8004,
27841
+ "path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
27635
27842
  },
27636
27843
  "/_nuxt/GP2wXyuY.js": {
27637
27844
  "type": "text/javascript; charset=utf-8",
27638
27845
  "etag": "\"3815-ylIVCg5f2owyOH6pRAUqhvrJO/4\"",
27639
- "mtime": "2026-09-03T16:52:30.249Z",
27846
+ "mtime": "2026-09-04T04:30:50.562Z",
27640
27847
  "size": 14357,
27641
27848
  "path": "../public/_nuxt/GP2wXyuY.js"
27642
27849
  },
27643
- "/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2": {
27644
- "type": "font/woff2",
27645
- "etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
27646
- "mtime": "2026-09-03T16:52:30.264Z",
27647
- "size": 8004,
27648
- "path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
27649
- },
27650
27850
  "/_nuxt/HclGiUj8.js": {
27651
27851
  "type": "text/javascript; charset=utf-8",
27652
27852
  "etag": "\"4bb-OjUbx7m0dPDFUkNfZ4BuUs+1sHI\"",
27653
- "mtime": "2026-09-03T16:52:30.249Z",
27853
+ "mtime": "2026-09-04T04:30:50.563Z",
27654
27854
  "size": 1211,
27655
27855
  "path": "../public/_nuxt/HclGiUj8.js"
27656
27856
  },
27657
- "/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
27658
- "type": "font/woff2",
27659
- "etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
27660
- "mtime": "2026-09-03T16:52:30.265Z",
27661
- "size": 8356,
27662
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
27663
- },
27664
27857
  "/_nuxt/HWXLx5Hz.js": {
27665
27858
  "type": "text/javascript; charset=utf-8",
27666
27859
  "etag": "\"3339-T0Y5onZ5wyZwFT6zTIO03qyuPeQ\"",
27667
- "mtime": "2026-09-03T16:52:30.249Z",
27860
+ "mtime": "2026-09-04T04:30:50.563Z",
27668
27861
  "size": 13113,
27669
27862
  "path": "../public/_nuxt/HWXLx5Hz.js"
27670
27863
  },
27864
+ "/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
27865
+ "type": "font/woff2",
27866
+ "etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
27867
+ "mtime": "2026-09-04T04:30:50.575Z",
27868
+ "size": 8356,
27869
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
27870
+ },
27671
27871
  "/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff": {
27672
27872
  "type": "font/woff",
27673
27873
  "etag": "\"1c24-wpeoT2YBcqJ4hbipsoiB1m58w98\"",
27674
- "mtime": "2026-09-03T16:52:30.265Z",
27874
+ "mtime": "2026-09-04T04:30:50.575Z",
27675
27875
  "size": 7204,
27676
27876
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff"
27677
27877
  },
27678
27878
  "/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff": {
27679
27879
  "type": "font/woff",
27680
27880
  "etag": "\"1c28-50yap58S0sLYRB2B8AEk2dq82kg\"",
27681
- "mtime": "2026-09-03T16:52:30.265Z",
27881
+ "mtime": "2026-09-04T04:30:50.575Z",
27682
27882
  "size": 7208,
27683
27883
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff"
27684
27884
  },
27685
27885
  "/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2": {
27686
27886
  "type": "font/woff2",
27687
27887
  "etag": "\"210c-yqAnW+098RkHUvQzwj27Jo9sIUc\"",
27688
- "mtime": "2026-09-03T16:52:30.265Z",
27888
+ "mtime": "2026-09-04T04:30:50.576Z",
27689
27889
  "size": 8460,
27690
27890
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2"
27691
27891
  },
27692
27892
  "/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
27693
27893
  "type": "font/woff2",
27694
27894
  "etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
27695
- "mtime": "2026-09-03T16:52:30.265Z",
27895
+ "mtime": "2026-09-04T04:30:50.576Z",
27696
27896
  "size": 9352,
27697
27897
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
27698
27898
  },
27699
27899
  "/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff": {
27700
27900
  "type": "font/woff",
27701
27901
  "etag": "\"1c64-t3eBraFEv1B6D+DIfK23+8/F2mA\"",
27702
- "mtime": "2026-09-03T16:52:30.265Z",
27902
+ "mtime": "2026-09-04T04:30:50.576Z",
27703
27903
  "size": 7268,
27704
27904
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff"
27705
27905
  },
27706
27906
  "/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff": {
27707
27907
  "type": "font/woff",
27708
27908
  "etag": "\"16bc-GBHBT1lClOFRLkxzjkkoZV1QN+Y\"",
27709
- "mtime": "2026-09-03T16:52:30.266Z",
27909
+ "mtime": "2026-09-04T04:30:50.576Z",
27710
27910
  "size": 5820,
27711
27911
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff"
27712
27912
  },
27713
27913
  "/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2": {
27714
27914
  "type": "font/woff2",
27715
27915
  "etag": "\"1b00-w57wcK5m30ZZ4sBwsaWzlcI3F7c\"",
27716
- "mtime": "2026-09-03T16:52:30.266Z",
27916
+ "mtime": "2026-09-04T04:30:50.576Z",
27717
27917
  "size": 6912,
27718
27918
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2"
27719
27919
  },
27720
27920
  "/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff": {
27721
27921
  "type": "font/woff",
27722
27922
  "etag": "\"168c-gvDCX7ATl9g9LbPEKlQjJSXhRPw\"",
27723
- "mtime": "2026-09-03T16:52:30.266Z",
27923
+ "mtime": "2026-09-04T04:30:50.576Z",
27724
27924
  "size": 5772,
27725
27925
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff"
27726
27926
  },
27727
27927
  "/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2": {
27728
27928
  "type": "font/woff2",
27729
27929
  "etag": "\"1b3c-pFin0Xk9XlGLhqdo1+npFJkyQ5Y\"",
27730
- "mtime": "2026-09-03T16:52:30.266Z",
27930
+ "mtime": "2026-09-04T04:30:50.577Z",
27731
27931
  "size": 6972,
27732
27932
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2"
27733
27933
  },
27734
- "/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff": {
27735
- "type": "font/woff",
27736
- "etag": "\"16a0-8RgtlGopOkBt2P4jKMMd7hk+D74\"",
27737
- "mtime": "2026-09-03T16:52:30.266Z",
27738
- "size": 5792,
27739
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff"
27740
- },
27741
27934
  "/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2": {
27742
27935
  "type": "font/woff2",
27743
27936
  "etag": "\"1e0c-R9/TBUX2qLWGlHeC55LoggyLdII\"",
27744
- "mtime": "2026-09-03T16:52:30.267Z",
27937
+ "mtime": "2026-09-04T04:30:50.577Z",
27745
27938
  "size": 7692,
27746
27939
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2"
27747
27940
  },
27748
27941
  "/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff": {
27749
27942
  "type": "font/woff",
27750
27943
  "etag": "\"3358-rWMSbc9cch7FBErQpfnWcshAYFM\"",
27751
- "mtime": "2026-09-03T16:52:30.267Z",
27944
+ "mtime": "2026-09-04T04:30:50.577Z",
27752
27945
  "size": 13144,
27753
27946
  "path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff"
27754
27947
  },
27948
+ "/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff": {
27949
+ "type": "font/woff",
27950
+ "etag": "\"16a0-8RgtlGopOkBt2P4jKMMd7hk+D74\"",
27951
+ "mtime": "2026-09-04T04:30:50.577Z",
27952
+ "size": 5792,
27953
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff"
27954
+ },
27755
27955
  "/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2": {
27756
27956
  "type": "font/woff2",
27757
27957
  "etag": "\"3974-u4dQDjIEo6fGXWYzx5xchAw76NM\"",
27758
- "mtime": "2026-09-03T16:52:30.267Z",
27958
+ "mtime": "2026-09-04T04:30:50.577Z",
27759
27959
  "size": 14708,
27760
27960
  "path": "../public/_nuxt/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2"
27761
27961
  },
27762
27962
  "/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff": {
27763
27963
  "type": "font/woff",
27764
27964
  "etag": "\"3364-S8wip5no4QO46BFh3FPzQKpIOec\"",
27765
- "mtime": "2026-09-03T16:52:30.267Z",
27965
+ "mtime": "2026-09-04T04:30:50.578Z",
27766
27966
  "size": 13156,
27767
27967
  "path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff"
27768
27968
  },
27769
27969
  "/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2": {
27770
27970
  "type": "font/woff2",
27771
27971
  "etag": "\"3a28-0y8OBwGsYgQ4QBMagAznF6huTuI\"",
27772
- "mtime": "2026-09-03T16:52:30.267Z",
27972
+ "mtime": "2026-09-04T04:30:50.578Z",
27773
27973
  "size": 14888,
27774
27974
  "path": "../public/_nuxt/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2"
27775
27975
  },
27776
27976
  "/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2": {
27777
27977
  "type": "font/woff2",
27778
27978
  "etag": "\"3d04-zppco6h02pIBwmMMXLe/qpaIwFI\"",
27779
- "mtime": "2026-09-03T16:52:30.267Z",
27979
+ "mtime": "2026-09-04T04:30:50.578Z",
27780
27980
  "size": 15620,
27781
27981
  "path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2"
27782
27982
  },
27783
- "/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff": {
27784
- "type": "font/woff",
27785
- "etag": "\"3398-D/GHpHo4zls8HLHH2boKeigB6S4\"",
27786
- "mtime": "2026-09-03T16:52:30.268Z",
27787
- "size": 13208,
27788
- "path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff"
27789
- },
27790
27983
  "/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2": {
27791
27984
  "type": "font/woff2",
27792
27985
  "etag": "\"3424-SvjO9SK9iRLLL61B4GuQJWQP62I\"",
27793
- "mtime": "2026-09-03T16:52:30.268Z",
27986
+ "mtime": "2026-09-04T04:30:50.578Z",
27794
27987
  "size": 13348,
27795
27988
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2"
27796
27989
  },
27990
+ "/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff": {
27991
+ "type": "font/woff",
27992
+ "etag": "\"3398-D/GHpHo4zls8HLHH2boKeigB6S4\"",
27993
+ "mtime": "2026-09-04T04:30:50.578Z",
27994
+ "size": 13208,
27995
+ "path": "../public/_nuxt/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff"
27996
+ },
27797
27997
  "/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff": {
27798
27998
  "type": "font/woff",
27799
27999
  "etag": "\"2df8-dfJwTWMZxHyGnUuJDGfpU4w2dLs\"",
27800
- "mtime": "2026-09-03T16:52:30.268Z",
28000
+ "mtime": "2026-09-04T04:30:50.578Z",
27801
28001
  "size": 11768,
27802
28002
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff"
27803
28003
  },
27804
- "/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2": {
27805
- "type": "font/woff2",
27806
- "etag": "\"3478-PpQvQo59iHxPLcEUBhJfmFmCPuA\"",
27807
- "mtime": "2026-09-03T16:52:30.268Z",
27808
- "size": 13432,
27809
- "path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2"
27810
- },
27811
28004
  "/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff": {
27812
28005
  "type": "font/woff",
27813
28006
  "etag": "\"2df8-73sb1BUyjMsq70ppsdZBHEqWrtE\"",
27814
- "mtime": "2026-09-03T16:52:30.269Z",
28007
+ "mtime": "2026-09-04T04:30:50.579Z",
27815
28008
  "size": 11768,
27816
28009
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff"
27817
28010
  },
28011
+ "/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2": {
28012
+ "type": "font/woff2",
28013
+ "etag": "\"3478-PpQvQo59iHxPLcEUBhJfmFmCPuA\"",
28014
+ "mtime": "2026-09-04T04:30:50.579Z",
28015
+ "size": 13432,
28016
+ "path": "../public/_nuxt/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2"
28017
+ },
27818
28018
  "/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
27819
28019
  "type": "font/woff2",
27820
28020
  "etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
27821
- "mtime": "2026-09-03T16:52:30.269Z",
28021
+ "mtime": "2026-09-04T04:30:50.579Z",
27822
28022
  "size": 14328,
27823
28023
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
27824
28024
  },
28025
+ "/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
28026
+ "type": "font/woff2",
28027
+ "etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
28028
+ "mtime": "2026-09-04T04:30:50.579Z",
28029
+ "size": 5868,
28030
+ "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
28031
+ },
27825
28032
  "/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
27826
28033
  "type": "font/woff",
27827
28034
  "etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
27828
- "mtime": "2026-09-03T16:52:30.269Z",
28035
+ "mtime": "2026-09-04T04:30:50.579Z",
27829
28036
  "size": 11832,
27830
28037
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
27831
28038
  },
27832
28039
  "/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff": {
27833
28040
  "type": "font/woff",
27834
28041
  "etag": "\"15f4-LdRX2sBB3T5WDAsZLCwBlsMYXPw\"",
27835
- "mtime": "2026-09-03T16:52:30.269Z",
28042
+ "mtime": "2026-09-04T04:30:50.579Z",
27836
28043
  "size": 5620,
27837
28044
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff"
27838
28045
  },
27839
- "/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
27840
- "type": "font/woff2",
27841
- "etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
27842
- "mtime": "2026-09-03T16:52:30.269Z",
27843
- "size": 5868,
27844
- "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
28046
+ "/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
28047
+ "type": "font/woff",
28048
+ "etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
28049
+ "mtime": "2026-09-04T04:30:50.580Z",
28050
+ "size": 5616,
28051
+ "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
27845
28052
  },
27846
28053
  "/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2": {
27847
28054
  "type": "font/woff2",
27848
28055
  "etag": "\"1798-7VDjg0E2ggd9c0kJDHNRh+Fu5E0\"",
27849
- "mtime": "2026-09-03T16:52:30.269Z",
28056
+ "mtime": "2026-09-04T04:30:50.580Z",
27850
28057
  "size": 6040,
27851
28058
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2"
27852
28059
  },
27853
- "/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
27854
- "type": "font/woff",
27855
- "etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
27856
- "mtime": "2026-09-03T16:52:30.269Z",
27857
- "size": 5616,
27858
- "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
27859
- },
27860
28060
  "/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
27861
28061
  "type": "font/woff2",
27862
28062
  "etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
27863
- "mtime": "2026-09-03T16:52:30.270Z",
28063
+ "mtime": "2026-09-04T04:30:50.580Z",
27864
28064
  "size": 6932,
27865
28065
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
27866
28066
  },
27867
28067
  "/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff": {
27868
28068
  "type": "font/woff",
27869
28069
  "etag": "\"1650-9Pko0qRZ+EoISmnDaTRQ8KRGy/s\"",
27870
- "mtime": "2026-09-03T16:52:30.270Z",
28070
+ "mtime": "2026-09-04T04:30:50.580Z",
27871
28071
  "size": 5712,
27872
28072
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff"
27873
28073
  },
27874
- "/_nuxt/i_MKObHo.js": {
27875
- "type": "text/javascript; charset=utf-8",
27876
- "etag": "\"2426-qPy3Qwtp0vIvKq2FKguDMoeJDXA\"",
27877
- "mtime": "2026-09-03T16:52:30.252Z",
27878
- "size": 9254,
27879
- "path": "../public/_nuxt/i_MKObHo.js"
27880
- },
27881
28074
  "/_nuxt/kZl6yT-12.js": {
27882
28075
  "type": "text/javascript; charset=utf-8",
27883
28076
  "etag": "\"e9-t0VKevMurw+ruGbCV/EgmcM2dww\"",
27884
- "mtime": "2026-09-03T16:52:30.252Z",
28077
+ "mtime": "2026-09-04T04:30:50.565Z",
27885
28078
  "size": 233,
27886
28079
  "path": "../public/_nuxt/kZl6yT-12.js"
27887
28080
  },
27888
28081
  "/_nuxt/lO5tpDZ5.js": {
27889
28082
  "type": "text/javascript; charset=utf-8",
27890
28083
  "etag": "\"3b-z4jypkmUW9c9v+AALQ28pDyJ80A\"",
27891
- "mtime": "2026-09-03T16:52:30.252Z",
28084
+ "mtime": "2026-09-04T04:30:50.565Z",
27892
28085
  "size": 59,
27893
28086
  "path": "../public/_nuxt/lO5tpDZ5.js"
27894
28087
  },
27895
28088
  "/_nuxt/logs.DaIsHWZE.css": {
27896
28089
  "type": "text/css; charset=utf-8",
27897
28090
  "etag": "\"1635-2SnVe4npTbogqgQvzzEAwCfWhCI\"",
27898
- "mtime": "2026-09-03T16:52:30.270Z",
28091
+ "mtime": "2026-09-04T04:30:50.580Z",
27899
28092
  "size": 5685,
27900
28093
  "path": "../public/_nuxt/logs.DaIsHWZE.css"
27901
28094
  },
27902
- "/_nuxt/monitor.41fCD6TB.css": {
28095
+ "/_nuxt/monitor.CmwpEUCI.css": {
27903
28096
  "type": "text/css; charset=utf-8",
27904
- "etag": "\"483-AbTSw5gK9t0PRRiSpYierkjEDsE\"",
27905
- "mtime": "2026-09-03T16:52:30.270Z",
28097
+ "etag": "\"483-Lotbm40sJjjryRjOid43sPWucRw\"",
28098
+ "mtime": "2026-09-04T04:30:50.580Z",
27906
28099
  "size": 1155,
27907
- "path": "../public/_nuxt/monitor.41fCD6TB.css"
28100
+ "path": "../public/_nuxt/monitor.CmwpEUCI.css"
27908
28101
  },
27909
28102
  "/_nuxt/NIM0Wglj2.js": {
27910
28103
  "type": "text/javascript; charset=utf-8",
27911
28104
  "etag": "\"aa5-KRmwCVPVQ4lynfKMpxx7nE1gBY4\"",
27912
- "mtime": "2026-09-03T16:52:30.250Z",
28105
+ "mtime": "2026-09-04T04:30:50.563Z",
27913
28106
  "size": 2725,
27914
28107
  "path": "../public/_nuxt/NIM0Wglj2.js"
27915
28108
  },
27916
28109
  "/_nuxt/OmpTerminalPanel.Bc9GjNU5.css": {
27917
28110
  "type": "text/css; charset=utf-8",
27918
28111
  "etag": "\"10d0-KVD3g2aNdpoQxACTChylqWCAIqY\"",
27919
- "mtime": "2026-09-03T16:52:30.254Z",
28112
+ "mtime": "2026-09-04T04:30:50.567Z",
27920
28113
  "size": 4304,
27921
28114
  "path": "../public/_nuxt/OmpTerminalPanel.Bc9GjNU5.css"
27922
28115
  },
27923
28116
  "/_nuxt/OwJ1LJkF.js": {
27924
28117
  "type": "text/javascript; charset=utf-8",
27925
28118
  "etag": "\"3488-ohWEJm0u4abl3TRn0oHqUL2oU3A\"",
27926
- "mtime": "2026-09-03T16:52:30.250Z",
28119
+ "mtime": "2026-09-04T04:30:50.563Z",
27927
28120
  "size": 13448,
27928
28121
  "path": "../public/_nuxt/OwJ1LJkF.js"
27929
28122
  },
27930
- "/_nuxt/plugins.FTm0PcEe.css": {
27931
- "type": "text/css; charset=utf-8",
27932
- "etag": "\"9bd-tTmniaf8rX8elG1Badc6OjJVtAk\"",
27933
- "mtime": "2026-09-03T16:52:30.270Z",
27934
- "size": 2493,
27935
- "path": "../public/_nuxt/plugins.FTm0PcEe.css"
27936
- },
27937
28123
  "/_nuxt/pages.CytEOfUs.css": {
27938
28124
  "type": "text/css; charset=utf-8",
27939
28125
  "etag": "\"1f78-Zc87Z5OhCuyS/CdNTE5IMJgqhH0\"",
27940
- "mtime": "2026-09-03T16:52:30.270Z",
28126
+ "mtime": "2026-09-04T04:30:50.581Z",
27941
28127
  "size": 8056,
27942
28128
  "path": "../public/_nuxt/pages.CytEOfUs.css"
27943
28129
  },
28130
+ "/_nuxt/plugins.FTm0PcEe.css": {
28131
+ "type": "text/css; charset=utf-8",
28132
+ "etag": "\"9bd-tTmniaf8rX8elG1Badc6OjJVtAk\"",
28133
+ "mtime": "2026-09-04T04:30:50.581Z",
28134
+ "size": 2493,
28135
+ "path": "../public/_nuxt/plugins.FTm0PcEe.css"
28136
+ },
27944
28137
  "/_nuxt/PQLnLxYe.js": {
27945
28138
  "type": "text/javascript; charset=utf-8",
27946
28139
  "etag": "\"1359-2EI4UdgR3Dg4/iuC63SVUdU5cAg\"",
27947
- "mtime": "2026-09-03T16:52:30.250Z",
28140
+ "mtime": "2026-09-04T04:30:50.564Z",
27948
28141
  "size": 4953,
27949
28142
  "path": "../public/_nuxt/PQLnLxYe.js"
27950
28143
  },
27951
- "/_nuxt/RYFtK4qZ2.js": {
27952
- "type": "text/javascript; charset=utf-8",
27953
- "etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
27954
- "mtime": "2026-09-03T16:52:30.250Z",
27955
- "size": 22860,
27956
- "path": "../public/_nuxt/RYFtK4qZ2.js"
27957
- },
27958
- "/_nuxt/R_WxTozV2.js": {
27959
- "type": "text/javascript; charset=utf-8",
27960
- "etag": "\"f01-WXNbWQm5WyeJtTA6i6wwMxnI1SQ\"",
27961
- "mtime": "2026-09-03T16:52:30.250Z",
27962
- "size": 3841,
27963
- "path": "../public/_nuxt/R_WxTozV2.js"
27964
- },
27965
28144
  "/_nuxt/pRQri7vQ2.js": {
27966
28145
  "type": "text/javascript; charset=utf-8",
27967
28146
  "etag": "\"8b9-3wDeSjR8e4ZgPLVXOMKGsaIsPEk\"",
27968
- "mtime": "2026-09-03T16:52:30.252Z",
28147
+ "mtime": "2026-09-04T04:30:50.566Z",
27969
28148
  "size": 2233,
27970
28149
  "path": "../public/_nuxt/pRQri7vQ2.js"
27971
28150
  },
28151
+ "/_nuxt/RYFtK4qZ2.js": {
28152
+ "type": "text/javascript; charset=utf-8",
28153
+ "etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
28154
+ "mtime": "2026-09-04T04:30:50.564Z",
28155
+ "size": 22860,
28156
+ "path": "../public/_nuxt/RYFtK4qZ2.js"
28157
+ },
27972
28158
  "/_nuxt/rzGB_ojX.js": {
27973
28159
  "type": "text/javascript; charset=utf-8",
27974
28160
  "etag": "\"156ba-Me1pF0LZxFasl9k2mKSJdM5HmgI\"",
27975
- "mtime": "2026-09-03T16:52:30.253Z",
28161
+ "mtime": "2026-09-04T04:30:50.566Z",
27976
28162
  "size": 87738,
27977
28163
  "path": "../public/_nuxt/rzGB_ojX.js"
27978
28164
  },
28165
+ "/_nuxt/R_WxTozV2.js": {
28166
+ "type": "text/javascript; charset=utf-8",
28167
+ "etag": "\"f01-WXNbWQm5WyeJtTA6i6wwMxnI1SQ\"",
28168
+ "mtime": "2026-09-04T04:30:50.564Z",
28169
+ "size": 3841,
28170
+ "path": "../public/_nuxt/R_WxTozV2.js"
28171
+ },
27979
28172
  "/_nuxt/settings.DeRNNUcP.css": {
27980
28173
  "type": "text/css; charset=utf-8",
27981
28174
  "etag": "\"14e1-E7dYiYwz16rJpF2sfkfQq3pGU1c\"",
27982
- "mtime": "2026-09-03T16:52:30.270Z",
28175
+ "mtime": "2026-09-04T04:30:50.581Z",
27983
28176
  "size": 5345,
27984
28177
  "path": "../public/_nuxt/settings.DeRNNUcP.css"
27985
28178
  },
27986
- "/_nuxt/teams.B8JNbUZg.css": {
27987
- "type": "text/css; charset=utf-8",
27988
- "etag": "\"6b7-7gKsNrCHeSx0FLL3kd7/KcsQBgw\"",
27989
- "mtime": "2026-09-03T16:52:30.271Z",
27990
- "size": 1719,
27991
- "path": "../public/_nuxt/teams.B8JNbUZg.css"
27992
- },
27993
28179
  "/_nuxt/tokens.CWOTXM-Z.css": {
27994
28180
  "type": "text/css; charset=utf-8",
27995
28181
  "etag": "\"9cd-tzkC/9SAq2Z51cXkqrDQz0rVzMo\"",
27996
- "mtime": "2026-09-03T16:52:30.271Z",
28182
+ "mtime": "2026-09-04T04:30:50.581Z",
27997
28183
  "size": 2509,
27998
28184
  "path": "../public/_nuxt/tokens.CWOTXM-Z.css"
27999
28185
  },
28186
+ "/_nuxt/teams.B8JNbUZg.css": {
28187
+ "type": "text/css; charset=utf-8",
28188
+ "etag": "\"6b7-7gKsNrCHeSx0FLL3kd7/KcsQBgw\"",
28189
+ "mtime": "2026-09-04T04:30:50.581Z",
28190
+ "size": 1719,
28191
+ "path": "../public/_nuxt/teams.B8JNbUZg.css"
28192
+ },
28000
28193
  "/_nuxt/town.BLrD9-WH.css": {
28001
28194
  "type": "text/css; charset=utf-8",
28002
28195
  "etag": "\"64-INqlNEwsg1I+Dzc8LaEkJCLno5o\"",
28003
- "mtime": "2026-09-03T16:52:30.271Z",
28196
+ "mtime": "2026-09-04T04:30:50.581Z",
28004
28197
  "size": 100,
28005
28198
  "path": "../public/_nuxt/town.BLrD9-WH.css"
28006
28199
  },
28007
28200
  "/_nuxt/town.C_DsNW0J.css": {
28008
28201
  "type": "text/css; charset=utf-8",
28009
28202
  "etag": "\"3b2-lx8uIK7y3f1Nkj2gMcTuak3mB/I\"",
28010
- "mtime": "2026-09-03T16:52:30.271Z",
28203
+ "mtime": "2026-09-04T04:30:50.582Z",
28011
28204
  "size": 946,
28012
28205
  "path": "../public/_nuxt/town.C_DsNW0J.css"
28013
28206
  },
28014
- "/_nuxt/users.D8lcLE62.css": {
28015
- "type": "text/css; charset=utf-8",
28016
- "etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
28017
- "mtime": "2026-09-03T16:52:30.271Z",
28018
- "size": 759,
28019
- "path": "../public/_nuxt/users.D8lcLE62.css"
28020
- },
28021
- "/_nuxt/tpDMVY5w.js": {
28207
+ "/_nuxt/uBbDCfTz.js": {
28022
28208
  "type": "text/javascript; charset=utf-8",
28023
- "etag": "\"664-ekubo41V9eeP5n5LTTAtpwok4f8\"",
28024
- "mtime": "2026-09-03T16:52:30.253Z",
28025
- "size": 1636,
28026
- "path": "../public/_nuxt/tpDMVY5w.js"
28209
+ "etag": "\"2435-2SmfQO0WbbFYq5CVz6TT/4+7jS4\"",
28210
+ "mtime": "2026-09-04T04:30:50.566Z",
28211
+ "size": 9269,
28212
+ "path": "../public/_nuxt/uBbDCfTz.js"
28213
+ },
28214
+ "/_nuxt/TownView.Bt33bo1M.css": {
28215
+ "type": "text/css; charset=utf-8",
28216
+ "etag": "\"11b2a-U9nEZgZfdHWwB/sAXc+Gvj7+hD4\"",
28217
+ "mtime": "2026-09-04T04:30:50.567Z",
28218
+ "size": 72490,
28219
+ "path": "../public/_nuxt/TownView.Bt33bo1M.css"
28027
28220
  },
28028
28221
  "/_nuxt/ubPfs9mQ.js": {
28029
28222
  "type": "text/javascript; charset=utf-8",
28030
28223
  "etag": "\"1dc4-yIIKAQ37KJqWQcdDI1J/9WfoaDc\"",
28031
- "mtime": "2026-09-03T16:52:30.253Z",
28224
+ "mtime": "2026-09-04T04:30:50.566Z",
28032
28225
  "size": 7620,
28033
28226
  "path": "../public/_nuxt/ubPfs9mQ.js"
28034
28227
  },
28035
- "/_nuxt/TownView.Bt33bo1M.css": {
28228
+ "/_nuxt/users.D8lcLE62.css": {
28036
28229
  "type": "text/css; charset=utf-8",
28037
- "etag": "\"11b2a-U9nEZgZfdHWwB/sAXc+Gvj7+hD4\"",
28038
- "mtime": "2026-09-03T16:52:30.254Z",
28039
- "size": 72490,
28040
- "path": "../public/_nuxt/TownView.Bt33bo1M.css"
28230
+ "etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
28231
+ "mtime": "2026-09-04T04:30:50.582Z",
28232
+ "size": 759,
28233
+ "path": "../public/_nuxt/users.D8lcLE62.css"
28041
28234
  },
28042
- "/_nuxt/uBbDCfTz.js": {
28043
- "type": "text/javascript; charset=utf-8",
28044
- "etag": "\"2435-2SmfQO0WbbFYq5CVz6TT/4+7jS4\"",
28045
- "mtime": "2026-09-03T16:52:30.253Z",
28046
- "size": 9269,
28047
- "path": "../public/_nuxt/uBbDCfTz.js"
28235
+ "/_nuxt/workshop.B98sHiJq.css": {
28236
+ "type": "text/css; charset=utf-8",
28237
+ "etag": "\"d1c-WVdgeDMUl4qOkHXOdrLmeDFgLfA\"",
28238
+ "mtime": "2026-09-04T04:30:50.582Z",
28239
+ "size": 3356,
28240
+ "path": "../public/_nuxt/workshop.B98sHiJq.css"
28048
28241
  },
28049
28242
  "/_nuxt/W1E3-5ML.js": {
28050
28243
  "type": "text/javascript; charset=utf-8",
28051
28244
  "etag": "\"9625-R1c4xFkyUPCvDq0pqlQVbYHN+rE\"",
28052
- "mtime": "2026-09-03T16:52:30.251Z",
28245
+ "mtime": "2026-09-04T04:30:50.564Z",
28053
28246
  "size": 38437,
28054
28247
  "path": "../public/_nuxt/W1E3-5ML.js"
28055
28248
  },
28056
- "/_nuxt/workshop.B98sHiJq.css": {
28057
- "type": "text/css; charset=utf-8",
28058
- "etag": "\"d1c-WVdgeDMUl4qOkHXOdrLmeDFgLfA\"",
28059
- "mtime": "2026-09-03T16:52:30.271Z",
28060
- "size": 3356,
28061
- "path": "../public/_nuxt/workshop.B98sHiJq.css"
28249
+ "/_nuxt/Xaf_HIR3.js": {
28250
+ "type": "text/javascript; charset=utf-8",
28251
+ "etag": "\"e59f-CeBnBjqpVIAcxl//8Ale/BoVZDw\"",
28252
+ "mtime": "2026-09-04T04:30:50.565Z",
28253
+ "size": 58783,
28254
+ "path": "../public/_nuxt/Xaf_HIR3.js"
28062
28255
  },
28063
28256
  "/_nuxt/XVB9_zwP.js": {
28064
28257
  "type": "text/javascript; charset=utf-8",
28065
28258
  "etag": "\"423b-4LSBnm/gNSl2oWjdwvJMoQXJUM0\"",
28066
- "mtime": "2026-09-03T16:52:30.251Z",
28259
+ "mtime": "2026-09-04T04:30:50.564Z",
28067
28260
  "size": 16955,
28068
28261
  "path": "../public/_nuxt/XVB9_zwP.js"
28069
28262
  },
28263
+ "/_nuxt/yIKY_V1P.js": {
28264
+ "type": "text/javascript; charset=utf-8",
28265
+ "etag": "\"21bc-JrkZKTYC7OxPC1h2kHS00HAMFQg\"",
28266
+ "mtime": "2026-09-04T04:30:50.567Z",
28267
+ "size": 8636,
28268
+ "path": "../public/_nuxt/yIKY_V1P.js"
28269
+ },
28070
28270
  "/_nuxt/Z8k0uMSI.js": {
28071
28271
  "type": "text/javascript; charset=utf-8",
28072
28272
  "etag": "\"79df-ZhH5hzPaniNAq0yDLbZqo8UuxgE\"",
28073
- "mtime": "2026-09-03T16:52:30.251Z",
28273
+ "mtime": "2026-09-04T04:30:50.565Z",
28074
28274
  "size": 31199,
28075
28275
  "path": "../public/_nuxt/Z8k0uMSI.js"
28076
28276
  },
28277
+ "/_nuxt/ZugRk0CM2.js": {
28278
+ "type": "text/javascript; charset=utf-8",
28279
+ "etag": "\"59e7-+lRtcShQT56GqO5IIJa6fJZDNQU\"",
28280
+ "mtime": "2026-09-04T04:30:50.565Z",
28281
+ "size": 23015,
28282
+ "path": "../public/_nuxt/ZugRk0CM2.js"
28283
+ },
28077
28284
  "/_nuxt/_id_.BeqSLvl_.css": {
28078
28285
  "type": "text/css; charset=utf-8",
28079
28286
  "etag": "\"36e7-SN8KVHt4V/No+NBkZn59GZXe03c\"",
28080
- "mtime": "2026-09-03T16:52:30.254Z",
28287
+ "mtime": "2026-09-04T04:30:50.567Z",
28081
28288
  "size": 14055,
28082
28289
  "path": "../public/_nuxt/_id_.BeqSLvl_.css"
28083
28290
  },
28084
28291
  "/_nuxt/_id_.DN3U6EF9.css": {
28085
28292
  "type": "text/css; charset=utf-8",
28086
28293
  "etag": "\"1564-rjNhnEK/BPvji21FTNWMe+kytSI\"",
28087
- "mtime": "2026-09-03T16:52:30.254Z",
28294
+ "mtime": "2026-09-04T04:30:50.567Z",
28088
28295
  "size": 5476,
28089
28296
  "path": "../public/_nuxt/_id_.DN3U6EF9.css"
28090
28297
  },
28091
28298
  "/_nuxt/_wsId_.DET_GinP.css": {
28092
28299
  "type": "text/css; charset=utf-8",
28093
28300
  "etag": "\"11059-XSQRI6C+3DnuFVWKY5aaW52YVJE\"",
28094
- "mtime": "2026-09-03T16:52:30.255Z",
28301
+ "mtime": "2026-09-04T04:30:50.568Z",
28095
28302
  "size": 69721,
28096
28303
  "path": "../public/_nuxt/_wsId_.DET_GinP.css"
28097
28304
  },
@@ -28116,13 +28323,6 @@ const assets = {
28116
28323
  "size": 65221,
28117
28324
  "path": "../public/assets/game/tuxemon-town.json"
28118
28325
  },
28119
- "/assets/game/tuxmon-sample-32px-extruded.png": {
28120
- "type": "image/png",
28121
- "etag": "\"2ee08-3yTsAqzTx0djGCGVAEgUGQ1/MEg\"",
28122
- "mtime": "2026-08-25T12:20:54.518Z",
28123
- "size": 192008,
28124
- "path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
28125
- },
28126
28326
  "/scene/background/cyber-town-background.svg": {
28127
28327
  "type": "image/svg+xml",
28128
28328
  "etag": "\"1656-Q8xWIs77K5i5HJYRdMCDYSQhkvs\"",
@@ -28132,17 +28332,122 @@ const assets = {
28132
28332
  },
28133
28333
  "/_nuxt/builds/latest.json": {
28134
28334
  "type": "application/json",
28135
- "etag": "\"47-38tt/JMdz4/CI0uQe2RSFZUUMoo\"",
28136
- "mtime": "2026-09-03T16:52:35.536Z",
28335
+ "etag": "\"47-9VUGfjLM4DdF2UyA8AG+C/asCjM\"",
28336
+ "mtime": "2026-09-04T04:30:54.612Z",
28137
28337
  "size": 71,
28138
28338
  "path": "../public/_nuxt/builds/latest.json"
28139
28339
  },
28140
- "/assets/game/player/misa-back-walk.000.png": {
28340
+ "/assets/game/character/bot.png": {
28141
28341
  "type": "image/png",
28142
- "etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
28143
- "mtime": "2026-08-25T12:20:54.514Z",
28144
- "size": 343,
28145
- "path": "../public/assets/game/player/misa-back-walk.000.png"
28342
+ "etag": "\"36fe-Ke8vj83Dinp8fFaRQQBfBsTGI/8\"",
28343
+ "mtime": "2026-08-25T12:20:54.510Z",
28344
+ "size": 14078,
28345
+ "path": "../public/assets/game/character/bot.png"
28346
+ },
28347
+ "/assets/game/tuxmon-sample-32px-extruded.png": {
28348
+ "type": "image/png",
28349
+ "etag": "\"2ee08-3yTsAqzTx0djGCGVAEgUGQ1/MEg\"",
28350
+ "mtime": "2026-08-25T12:20:54.518Z",
28351
+ "size": 192008,
28352
+ "path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
28353
+ },
28354
+ "/assets/game/character/device-3d.glb": {
28355
+ "type": "model/gltf-binary",
28356
+ "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
28357
+ "mtime": "2026-08-25T12:20:54.511Z",
28358
+ "size": 19400,
28359
+ "path": "../public/assets/game/character/device-3d.glb"
28360
+ },
28361
+ "/assets/game/character/hero-3d.glb": {
28362
+ "type": "model/gltf-binary",
28363
+ "etag": "\"8494-Uv+bxnHu3YGJp7Es3lHkob25Y08\"",
28364
+ "mtime": "2026-08-25T12:20:54.511Z",
28365
+ "size": 33940,
28366
+ "path": "../public/assets/game/character/hero-3d.glb"
28367
+ },
28368
+ "/assets/game/character/hero-anime-1.glb": {
28369
+ "type": "model/gltf-binary",
28370
+ "etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
28371
+ "mtime": "2026-08-26T05:23:14.557Z",
28372
+ "size": 66636,
28373
+ "path": "../public/assets/game/character/hero-anime-1.glb"
28374
+ },
28375
+ "/assets/game/character/hero-anime-2.glb": {
28376
+ "type": "model/gltf-binary",
28377
+ "etag": "\"1058c-J91UapGlsJg/5ODN8k8c7rSNpzw\"",
28378
+ "mtime": "2026-08-26T05:23:14.558Z",
28379
+ "size": 66956,
28380
+ "path": "../public/assets/game/character/hero-anime-2.glb"
28381
+ },
28382
+ "/assets/game/character/hero-anime-3.glb": {
28383
+ "type": "model/gltf-binary",
28384
+ "etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
28385
+ "mtime": "2026-08-26T05:23:14.558Z",
28386
+ "size": 66940,
28387
+ "path": "../public/assets/game/character/hero-anime-3.glb"
28388
+ },
28389
+ "/assets/game/character/hero-anime-4.glb": {
28390
+ "type": "model/gltf-binary",
28391
+ "etag": "\"10544-H4WjfazfTQ6hfF2SkK2BfHU27i8\"",
28392
+ "mtime": "2026-08-26T05:23:14.558Z",
28393
+ "size": 66884,
28394
+ "path": "../public/assets/game/character/hero-anime-4.glb"
28395
+ },
28396
+ "/assets/game/character/knight.png": {
28397
+ "type": "image/png",
28398
+ "etag": "\"3b37-Wyixufl/LcqKO/AeTLuGvzi4goQ\"",
28399
+ "mtime": "2026-08-25T12:20:54.511Z",
28400
+ "size": 15159,
28401
+ "path": "../public/assets/game/character/knight.png"
28402
+ },
28403
+ "/assets/game/character/mage.png": {
28404
+ "type": "image/png",
28405
+ "etag": "\"3832-juipuJuMJceZrarvR4w7OKgQejA\"",
28406
+ "mtime": "2026-08-25T12:20:54.512Z",
28407
+ "size": 14386,
28408
+ "path": "../public/assets/game/character/mage.png"
28409
+ },
28410
+ "/assets/game/npc/boltnu-sheet.png": {
28411
+ "type": "image/png",
28412
+ "etag": "\"a14-8xg90l10OuRoiEEgFXx9PTGJ9rA\"",
28413
+ "mtime": "2026-08-25T12:20:54.513Z",
28414
+ "size": 2580,
28415
+ "path": "../public/assets/game/npc/boltnu-sheet.png"
28416
+ },
28417
+ "/assets/game/npc/fluttaflap-sheet.png": {
28418
+ "type": "image/png",
28419
+ "etag": "\"f65-ivBz79RSNtXu3px7cWEzCwMXdkg\"",
28420
+ "mtime": "2026-08-25T12:20:54.513Z",
28421
+ "size": 3941,
28422
+ "path": "../public/assets/game/npc/fluttaflap-sheet.png"
28423
+ },
28424
+ "/assets/game/npc/rockitten-sheet.png": {
28425
+ "type": "image/png",
28426
+ "etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
28427
+ "mtime": "2026-08-25T12:20:54.513Z",
28428
+ "size": 1926,
28429
+ "path": "../public/assets/game/npc/rockitten-sheet.png"
28430
+ },
28431
+ "/_nuxt/zwdqvGN_.js": {
28432
+ "type": "text/javascript; charset=utf-8",
28433
+ "etag": "\"8cc4a-velpbz4Zy5J9JIXAMvOLCFTQOJQ\"",
28434
+ "mtime": "2026-09-04T04:30:50.567Z",
28435
+ "size": 576586,
28436
+ "path": "../public/_nuxt/zwdqvGN_.js"
28437
+ },
28438
+ "/assets/game/npc/tux-sheet.png": {
28439
+ "type": "image/png",
28440
+ "etag": "\"912-kf4+Q7EukO60VT6vlziy5RrzuUo\"",
28441
+ "mtime": "2026-08-25T12:20:54.513Z",
28442
+ "size": 2322,
28443
+ "path": "../public/assets/game/npc/tux-sheet.png"
28444
+ },
28445
+ "/assets/game/player/misa-back-walk.000.png": {
28446
+ "type": "image/png",
28447
+ "etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
28448
+ "mtime": "2026-08-25T12:20:54.514Z",
28449
+ "size": 343,
28450
+ "path": "../public/assets/game/player/misa-back-walk.000.png"
28146
28451
  },
28147
28452
  "/assets/game/player/misa-back-walk.001.png": {
28148
28453
  "type": "image/png",
@@ -28158,13 +28463,6 @@ const assets = {
28158
28463
  "size": 343,
28159
28464
  "path": "../public/assets/game/player/misa-back-walk.002.png"
28160
28465
  },
28161
- "/assets/game/player/misa-back.png": {
28162
- "type": "image/png",
28163
- "etag": "\"15c-KwI7aIn2tc/RPUJViRtdOGKZre4\"",
28164
- "mtime": "2026-08-25T12:20:54.515Z",
28165
- "size": 348,
28166
- "path": "../public/assets/game/player/misa-back.png"
28167
- },
28168
28466
  "/assets/game/player/misa-back-walk.003.png": {
28169
28467
  "type": "image/png",
28170
28468
  "etag": "\"15c-L+/hkHDyiQ9FJs5w93pxALzvWEg\"",
@@ -28172,6 +28470,13 @@ const assets = {
28172
28470
  "size": 348,
28173
28471
  "path": "../public/assets/game/player/misa-back-walk.003.png"
28174
28472
  },
28473
+ "/assets/game/player/misa-back.png": {
28474
+ "type": "image/png",
28475
+ "etag": "\"15c-KwI7aIn2tc/RPUJViRtdOGKZre4\"",
28476
+ "mtime": "2026-08-25T12:20:54.515Z",
28477
+ "size": 348,
28478
+ "path": "../public/assets/game/player/misa-back.png"
28479
+ },
28175
28480
  "/assets/game/player/misa-front-walk.000.png": {
28176
28481
  "type": "image/png",
28177
28482
  "etag": "\"152-+euueT0jvK7OjNDmtrdehgkQatE\"",
@@ -28179,13 +28484,6 @@ const assets = {
28179
28484
  "size": 338,
28180
28485
  "path": "../public/assets/game/player/misa-front-walk.000.png"
28181
28486
  },
28182
- "/assets/game/player/misa-front-walk.002.png": {
28183
- "type": "image/png",
28184
- "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
28185
- "mtime": "2026-08-25T12:20:54.515Z",
28186
- "size": 341,
28187
- "path": "../public/assets/game/player/misa-front-walk.002.png"
28188
- },
28189
28487
  "/assets/game/player/misa-front-walk.001.png": {
28190
28488
  "type": "image/png",
28191
28489
  "etag": "\"155-r/wKRG+amQ/2TvYolFC2UPXHdC4\"",
@@ -28193,13 +28491,6 @@ const assets = {
28193
28491
  "size": 341,
28194
28492
  "path": "../public/assets/game/player/misa-front-walk.001.png"
28195
28493
  },
28196
- "/assets/game/player/misa-front-walk.003.png": {
28197
- "type": "image/png",
28198
- "etag": "\"155-JVYjyw5Raquze4YHeYII+iXfJx4\"",
28199
- "mtime": "2026-08-25T12:20:54.515Z",
28200
- "size": 341,
28201
- "path": "../public/assets/game/player/misa-front-walk.003.png"
28202
- },
28203
28494
  "/assets/game/player/misa-front.png": {
28204
28495
  "type": "image/png",
28205
28496
  "etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
@@ -28207,19 +28498,12 @@ const assets = {
28207
28498
  "size": 341,
28208
28499
  "path": "../public/assets/game/player/misa-front.png"
28209
28500
  },
28210
- "/assets/game/player/misa-left-walk.000.png": {
28501
+ "/assets/game/player/misa-front-walk.002.png": {
28211
28502
  "type": "image/png",
28212
- "etag": "\"13f-Hlll+U+bluQUD8w3klFf7vww08M\"",
28213
- "mtime": "2026-08-25T12:20:54.516Z",
28214
- "size": 319,
28215
- "path": "../public/assets/game/player/misa-left-walk.000.png"
28216
- },
28217
- "/_nuxt/zwdqvGN_.js": {
28218
- "type": "text/javascript; charset=utf-8",
28219
- "etag": "\"8cc4a-velpbz4Zy5J9JIXAMvOLCFTQOJQ\"",
28220
- "mtime": "2026-09-03T16:52:30.254Z",
28221
- "size": 576586,
28222
- "path": "../public/_nuxt/zwdqvGN_.js"
28503
+ "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
28504
+ "mtime": "2026-08-25T12:20:54.515Z",
28505
+ "size": 341,
28506
+ "path": "../public/assets/game/player/misa-front-walk.002.png"
28223
28507
  },
28224
28508
  "/assets/game/player/misa-left-walk.001.png": {
28225
28509
  "type": "image/png",
@@ -28228,6 +28512,20 @@ const assets = {
28228
28512
  "size": 319,
28229
28513
  "path": "../public/assets/game/player/misa-left-walk.001.png"
28230
28514
  },
28515
+ "/assets/game/player/misa-left-walk.000.png": {
28516
+ "type": "image/png",
28517
+ "etag": "\"13f-Hlll+U+bluQUD8w3klFf7vww08M\"",
28518
+ "mtime": "2026-08-25T12:20:54.516Z",
28519
+ "size": 319,
28520
+ "path": "../public/assets/game/player/misa-left-walk.000.png"
28521
+ },
28522
+ "/assets/game/player/misa-front-walk.003.png": {
28523
+ "type": "image/png",
28524
+ "etag": "\"155-JVYjyw5Raquze4YHeYII+iXfJx4\"",
28525
+ "mtime": "2026-08-25T12:20:54.515Z",
28526
+ "size": 341,
28527
+ "path": "../public/assets/game/player/misa-front-walk.003.png"
28528
+ },
28231
28529
  "/assets/game/player/misa-left-walk.002.png": {
28232
28530
  "type": "image/png",
28233
28531
  "etag": "\"13e-ZO/OghsjeAi+tGQq5r7slwZn0zg\"",
@@ -28249,20 +28547,6 @@ const assets = {
28249
28547
  "size": 319,
28250
28548
  "path": "../public/assets/game/player/misa-left.png"
28251
28549
  },
28252
- "/assets/game/player/misa-right-walk.000.png": {
28253
- "type": "image/png",
28254
- "etag": "\"12d-LFv0nkkwwOzytOb66XkVjd6tkHE\"",
28255
- "mtime": "2026-08-25T12:20:54.516Z",
28256
- "size": 301,
28257
- "path": "../public/assets/game/player/misa-right-walk.000.png"
28258
- },
28259
- "/assets/game/player/misa-right-walk.001.png": {
28260
- "type": "image/png",
28261
- "etag": "\"12e-DPDndNK7hnSQCpyHmbRm1ttAM1s\"",
28262
- "mtime": "2026-08-25T12:20:54.517Z",
28263
- "size": 302,
28264
- "path": "../public/assets/game/player/misa-right-walk.001.png"
28265
- },
28266
28550
  "/assets/game/player/misa-right-walk.002.png": {
28267
28551
  "type": "image/png",
28268
28552
  "etag": "\"12f-3fV+VP6QPPPljfYuG6yhztcSIXc\"",
@@ -28270,12 +28554,19 @@ const assets = {
28270
28554
  "size": 303,
28271
28555
  "path": "../public/assets/game/player/misa-right-walk.002.png"
28272
28556
  },
28273
- "/assets/game/player/misa-right.png": {
28557
+ "/assets/game/player/misa-right-walk.001.png": {
28274
28558
  "type": "image/png",
28275
- "etag": "\"12e-u2oP2dt8nlrp15zVNaNSSzpBs0Y\"",
28559
+ "etag": "\"12e-DPDndNK7hnSQCpyHmbRm1ttAM1s\"",
28276
28560
  "mtime": "2026-08-25T12:20:54.517Z",
28277
28561
  "size": 302,
28278
- "path": "../public/assets/game/player/misa-right.png"
28562
+ "path": "../public/assets/game/player/misa-right-walk.001.png"
28563
+ },
28564
+ "/assets/game/player/misa-right-walk.000.png": {
28565
+ "type": "image/png",
28566
+ "etag": "\"12d-LFv0nkkwwOzytOb66XkVjd6tkHE\"",
28567
+ "mtime": "2026-08-25T12:20:54.516Z",
28568
+ "size": 301,
28569
+ "path": "../public/assets/game/player/misa-right-walk.000.png"
28279
28570
  },
28280
28571
  "/assets/game/player/misa-right-walk.003.png": {
28281
28572
  "type": "image/png",
@@ -28284,68 +28575,19 @@ const assets = {
28284
28575
  "size": 302,
28285
28576
  "path": "../public/assets/game/player/misa-right-walk.003.png"
28286
28577
  },
28287
- "/assets/game/character/bot.png": {
28288
- "type": "image/png",
28289
- "etag": "\"36fe-Ke8vj83Dinp8fFaRQQBfBsTGI/8\"",
28290
- "mtime": "2026-08-25T12:20:54.510Z",
28291
- "size": 14078,
28292
- "path": "../public/assets/game/character/bot.png"
28293
- },
28294
- "/assets/game/character/device-3d.glb": {
28295
- "type": "model/gltf-binary",
28296
- "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
28297
- "mtime": "2026-08-25T12:20:54.511Z",
28298
- "size": 19400,
28299
- "path": "../public/assets/game/character/device-3d.glb"
28300
- },
28301
- "/assets/game/character/hero-3d.glb": {
28302
- "type": "model/gltf-binary",
28303
- "etag": "\"8494-Uv+bxnHu3YGJp7Es3lHkob25Y08\"",
28304
- "mtime": "2026-08-25T12:20:54.511Z",
28305
- "size": 33940,
28306
- "path": "../public/assets/game/character/hero-3d.glb"
28307
- },
28308
- "/assets/game/character/hero-anime-1.glb": {
28309
- "type": "model/gltf-binary",
28310
- "etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
28311
- "mtime": "2026-08-26T05:23:14.557Z",
28312
- "size": 66636,
28313
- "path": "../public/assets/game/character/hero-anime-1.glb"
28314
- },
28315
- "/assets/game/character/knight.png": {
28316
- "type": "image/png",
28317
- "etag": "\"3b37-Wyixufl/LcqKO/AeTLuGvzi4goQ\"",
28318
- "mtime": "2026-08-25T12:20:54.511Z",
28319
- "size": 15159,
28320
- "path": "../public/assets/game/character/knight.png"
28321
- },
28322
- "/assets/game/character/hero-anime-2.glb": {
28323
- "type": "model/gltf-binary",
28324
- "etag": "\"1058c-J91UapGlsJg/5ODN8k8c7rSNpzw\"",
28325
- "mtime": "2026-08-26T05:23:14.558Z",
28326
- "size": 66956,
28327
- "path": "../public/assets/game/character/hero-anime-2.glb"
28328
- },
28329
- "/assets/game/character/hero-anime-3.glb": {
28330
- "type": "model/gltf-binary",
28331
- "etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
28332
- "mtime": "2026-08-26T05:23:14.558Z",
28333
- "size": 66940,
28334
- "path": "../public/assets/game/character/hero-anime-3.glb"
28335
- },
28336
- "/assets/game/character/mage.png": {
28578
+ "/assets/game/player/misa-right.png": {
28337
28579
  "type": "image/png",
28338
- "etag": "\"3832-juipuJuMJceZrarvR4w7OKgQejA\"",
28339
- "mtime": "2026-08-25T12:20:54.512Z",
28340
- "size": 14386,
28341
- "path": "../public/assets/game/character/mage.png"
28580
+ "etag": "\"12e-u2oP2dt8nlrp15zVNaNSSzpBs0Y\"",
28581
+ "mtime": "2026-08-25T12:20:54.517Z",
28582
+ "size": 302,
28583
+ "path": "../public/assets/game/player/misa-right.png"
28342
28584
  },
28343
- "/assets/game/character/hero-anime-4.glb": {
28585
+ "/assets/game/devices/caster.glb": {
28344
28586
  "type": "model/gltf-binary",
28345
- "etag": "\"10544-H4WjfazfTQ6hfF2SkK2BfHU27i8\"",
28346
- "mtime": "2026-08-26T05:23:14.558Z",
28347
- "size": 66884,
28348
- "path": "../public/assets/game/character/hero-anime-4.glb"
28587
+ "etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
28588
+ "mtime": "2026-08-27T07:03:12.510Z",
28589
+ "size": 22644,
28590
+ "path": "../public/assets/game/devices/caster.glb"
28349
28591
  },
28350
28592
  "/assets/game/devices/agv.glb": {
28351
28593
  "type": "model/gltf-binary",
@@ -28354,13 +28596,6 @@ const assets = {
28354
28596
  "size": 45292,
28355
28597
  "path": "../public/assets/game/devices/agv.glb"
28356
28598
  },
28357
- "/assets/game/devices/caster.glb": {
28358
- "type": "model/gltf-binary",
28359
- "etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
28360
- "mtime": "2026-08-27T07:03:12.510Z",
28361
- "size": 22644,
28362
- "path": "../public/assets/game/devices/caster.glb"
28363
- },
28364
28599
  "/assets/game/devices/device-console.glb": {
28365
28600
  "type": "model/gltf-binary",
28366
28601
  "etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
@@ -28431,41 +28666,6 @@ const assets = {
28431
28666
  "size": 36996,
28432
28667
  "path": "../public/assets/game/devices/winder.glb"
28433
28668
  },
28434
- "/assets/game/npc/boltnu-sheet.png": {
28435
- "type": "image/png",
28436
- "etag": "\"a14-8xg90l10OuRoiEEgFXx9PTGJ9rA\"",
28437
- "mtime": "2026-08-25T12:20:54.513Z",
28438
- "size": 2580,
28439
- "path": "../public/assets/game/npc/boltnu-sheet.png"
28440
- },
28441
- "/assets/game/npc/rockitten-sheet.png": {
28442
- "type": "image/png",
28443
- "etag": "\"786-IY4LCl37+SB6pnPynapoUxsxvOM\"",
28444
- "mtime": "2026-08-25T12:20:54.513Z",
28445
- "size": 1926,
28446
- "path": "../public/assets/game/npc/rockitten-sheet.png"
28447
- },
28448
- "/assets/game/npc/fluttaflap-sheet.png": {
28449
- "type": "image/png",
28450
- "etag": "\"f65-ivBz79RSNtXu3px7cWEzCwMXdkg\"",
28451
- "mtime": "2026-08-25T12:20:54.513Z",
28452
- "size": 3941,
28453
- "path": "../public/assets/game/npc/fluttaflap-sheet.png"
28454
- },
28455
- "/assets/game/npc/tux-sheet.png": {
28456
- "type": "image/png",
28457
- "etag": "\"912-kf4+Q7EukO60VT6vlziy5RrzuUo\"",
28458
- "mtime": "2026-08-25T12:20:54.513Z",
28459
- "size": 2322,
28460
- "path": "../public/assets/game/npc/tux-sheet.png"
28461
- },
28462
- "/assets/game/wuwa/scene-map.png": {
28463
- "type": "image/png",
28464
- "etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
28465
- "mtime": "2026-08-25T12:20:54.521Z",
28466
- "size": 426715,
28467
- "path": "../public/assets/game/wuwa/scene-map.png"
28468
- },
28469
28669
  "/assets/game/wuwa/world-middle.png": {
28470
28670
  "type": "image/png",
28471
28671
  "etag": "\"16164-Dxu+NdXPnqoPFfWHwQi1oefgNvU\"",
@@ -28473,13 +28673,6 @@ const assets = {
28473
28673
  "size": 90468,
28474
28674
  "path": "../public/assets/game/wuwa/world-middle.png"
28475
28675
  },
28476
- "/assets/game/wuwa/wu-aura.png": {
28477
- "type": "image/png",
28478
- "etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
28479
- "mtime": "2026-08-25T12:20:54.527Z",
28480
- "size": 8277,
28481
- "path": "../public/assets/game/wuwa/wu-aura.png"
28482
- },
28483
28676
  "/assets/game/wuwa/wu-lead.png": {
28484
28677
  "type": "image/png",
28485
28678
  "etag": "\"3b04-agK45Y3g7QDPns/kmkhTGYSTPDM\"",
@@ -28487,6 +28680,13 @@ const assets = {
28487
28680
  "size": 15108,
28488
28681
  "path": "../public/assets/game/wuwa/wu-lead.png"
28489
28682
  },
28683
+ "/assets/game/wuwa/wu-aura.png": {
28684
+ "type": "image/png",
28685
+ "etag": "\"2055-NKWgEbJfTq5l56FGWi9WDWgBAbU\"",
28686
+ "mtime": "2026-08-25T12:20:54.527Z",
28687
+ "size": 8277,
28688
+ "path": "../public/assets/game/wuwa/wu-aura.png"
28689
+ },
28490
28690
  "/assets/game/wuwa/wu-ring.png": {
28491
28691
  "type": "image/png",
28492
28692
  "etag": "\"65ac-/iIjlPgFNpD98zDsyCJYA8021E4\"",
@@ -28501,6 +28701,13 @@ const assets = {
28501
28701
  "size": 389,
28502
28702
  "path": "../public/assets/game/wuwa/wu-slash.png"
28503
28703
  },
28704
+ "/assets/game/wuwa/scene-map.png": {
28705
+ "type": "image/png",
28706
+ "etag": "\"682db-bU8mh8SeHPotvuaCc6PZzrWoT+A\"",
28707
+ "mtime": "2026-08-25T12:20:54.521Z",
28708
+ "size": 426715,
28709
+ "path": "../public/assets/game/wuwa/scene-map.png"
28710
+ },
28504
28711
  "/assets/game/wuwa/world-far.png": {
28505
28712
  "type": "image/png",
28506
28713
  "etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
@@ -28515,6 +28722,13 @@ const assets = {
28515
28722
  "size": 15449,
28516
28723
  "path": "../public/assets/game/wuwa/wu-worker-0.png"
28517
28724
  },
28725
+ "/assets/game/wuwa/wu-worker-1.png": {
28726
+ "type": "image/png",
28727
+ "etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
28728
+ "mtime": "2026-08-25T12:20:54.529Z",
28729
+ "size": 15560,
28730
+ "path": "../public/assets/game/wuwa/wu-worker-1.png"
28731
+ },
28518
28732
  "/assets/game/wuwa/wu-worker-2.png": {
28519
28733
  "type": "image/png",
28520
28734
  "etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
@@ -28522,19 +28736,12 @@ const assets = {
28522
28736
  "size": 15489,
28523
28737
  "path": "../public/assets/game/wuwa/wu-worker-2.png"
28524
28738
  },
28525
- "/_nuxt/builds/meta/4d990d25-ebbb-4fe4-a23b-3d28c7f42fee.json": {
28739
+ "/_nuxt/builds/meta/55c10854-ee0e-4be4-924b-a1b0e100fe11.json": {
28526
28740
  "type": "application/json",
28527
- "etag": "\"58-ijmZLjvXiM5L++YQ1kvDS7JOVUI\"",
28528
- "mtime": "2026-09-03T16:52:35.537Z",
28741
+ "etag": "\"58-5mNAjyTKh+ez5vFOnxsM8Q+7P5c\"",
28742
+ "mtime": "2026-09-04T04:30:54.612Z",
28529
28743
  "size": 88,
28530
- "path": "../public/_nuxt/builds/meta/4d990d25-ebbb-4fe4-a23b-3d28c7f42fee.json"
28531
- },
28532
- "/assets/game/wuwa/wu-worker-1.png": {
28533
- "type": "image/png",
28534
- "etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
28535
- "mtime": "2026-08-25T12:20:54.529Z",
28536
- "size": 15560,
28537
- "path": "../public/assets/game/wuwa/wu-worker-1.png"
28744
+ "path": "../public/_nuxt/builds/meta/55c10854-ee0e-4be4-924b-a1b0e100fe11.json"
28538
28745
  },
28539
28746
  "/assets/game/wuwa/world-near.png": {
28540
28747
  "type": "image/png",
@@ -28936,6 +29143,8 @@ const _lazy_HJhR5o = () => import('../routes/api/workshop/device-twins/_id/telem
28936
29143
  const _lazy_Ow2j_1 = () => import('../routes/api/workshop/index6.get.mjs');
28937
29144
  const _lazy_TGxqS2 = () => import('../routes/api/workshop/index5.post.mjs');
28938
29145
  const _lazy_ZJDYP6 = () => import('../routes/api/workshop/fs/dirs.get.mjs');
29146
+ const _lazy_PLnrex = () => import('../routes/api/workshop/hitl/pending.get.mjs');
29147
+ const _lazy_BSscWV = () => import('../routes/api/workshop/hitl/respond.post.mjs');
28939
29148
  const _lazy_o31y9Y = () => import('../routes/api/workshop/mailbox.get.mjs');
28940
29149
  const _lazy_2iGKST = () => import('../routes/api/workshop/mailbox/all.get.mjs');
28941
29150
  const _lazy_J6CvCX = () => import('../routes/api/workshop/memories/maintenance.post.mjs');
@@ -29136,6 +29345,8 @@ const handlers = [
29136
29345
  { route: '/api/workshop/device-twins', handler: _lazy_Ow2j_1, lazy: true, middleware: false, method: "get" },
29137
29346
  { route: '/api/workshop/device-twins', handler: _lazy_TGxqS2, lazy: true, middleware: false, method: "post" },
29138
29347
  { route: '/api/workshop/fs/dirs', handler: _lazy_ZJDYP6, lazy: true, middleware: false, method: "get" },
29348
+ { route: '/api/workshop/hitl/pending', handler: _lazy_PLnrex, lazy: true, middleware: false, method: "get" },
29349
+ { route: '/api/workshop/hitl/respond', handler: _lazy_BSscWV, lazy: true, middleware: false, method: "post" },
29139
29350
  { route: '/api/workshop/mailbox', handler: _lazy_o31y9Y, lazy: true, middleware: false, method: "get" },
29140
29351
  { route: '/api/workshop/mailbox/all', handler: _lazy_2iGKST, lazy: true, middleware: false, method: "get" },
29141
29352
  { route: '/api/workshop/memories/maintenance', handler: _lazy_J6CvCX, lazy: true, middleware: false, method: "post" },
@@ -29568,5 +29779,5 @@ function setupGracefulShutdown(listener, nitroApp) {
29568
29779
  });
29569
29780
  }
29570
29781
 
29571
- export { toolDcwRollback as $, abortTerminal as A, sendTerminalInput as B, resolveUserByToken as C, findLiveTerminalPidByAgent as D, terminalSessionSnapshot as E, subscribeTerminal as F, listHarnessProcesses as G, AppError as H, getSystemConfigService as I, createEventStream as J, userService as K, readValidatedBody as L, zValidator as M, getValidatedQuery as N, extractBearerToken as O, getRequestHeader as P, userRepository as Q, setResponseStatus as R, parseJson as S, getToolApprovals as T, audit as U, getQuery as V, getAgentNodeBindingRepo as W, toolMyIndustrialNodes as X, toolDcwControl as Y, toolDaqQuery as Z, toolDcwJudge as _, trapUnhandledNodeErrors as a, toolDcwJournal as a0, ensureDataDir as a1, readMultipartFormData as a2, ensureLeadSchedulerLoop as a3, listTerminalSessions as a4, broadcastSceneEvent as a5, getDaqController as a6, recordOps as a7, bindDaqHostPorts as a8, bindDaqBroadcast as a9, publicAssetsURL as aA, defineRenderHandler as aB, getRouteRules as aC, relative as aD, joinURL as aE, getResponseStatusText as aF, getResponseStatus as aG, createHooks as aH, sanitizeStatusCode as aI, klona as aJ, isEqual as aK, setCookie as aL, getCookie as aM, deleteCookie as aN, $fetch as aO, baseURL as aP, defu as aQ, getRequestProtocol as aR, appendResponseHeader as aS, DAQ_TEMPLATES as aT, DCW_TEMPLATES as aU, daqKeyFromRef as aV, DAQ_DRIVERS as aW, DCW_DRIVERS as aX, DAQ_TEMPLATE_ICONS as aY, DCW_LINE_COLORS as aZ, ws$1 as a_, bumpTaggedSamples as aa, getDcwLineRepo as ab, getDcwRecipeRepo as ac, getAllActiveLineRuns as ad, getActiveLineRun as ae, deviceScenePayload as af, tsdbReady as ag, getDaqQueue as ah, listDaqTemplates as ai, daqInfraStatus as aj, daqInfraConfig as ak, getDaqTemplateRegistry as al, normalizeDriverKind as am, bindDcwBroadcast as an, gateDangerous as ao, getDcwController as ap, getRecipeRollBackManager as aq, listDcwTemplates as ar, emitLineLifecycle as as, ErrorCodes as at, getDcwTemplateRegistry as au, setPluginEnabled as av, reloadPluginHost as aw, publishSceneLayoutEvent as ax, encodePath as ay, buildAssetsURL as az, useNitroApp as b, defineApiHandler as c, destr as d, useServerConfig as e, getDeviceTwinRepo as f, getWorkshopManager as g, defineEventHandler as h, readRawBody as i, getRequestURL as j, getRequestHeaders as k, getOps as l, setResponseHeader as m, createError$1 as n, readBody as o, getPluginHost as p, getRouterParam as q, randomUUID as r, setupGracefulShutdown as s, toNodeListener as t, useRuntimeConfig as u, readClientScript as v, setHeader as w, pluginManifest as x, defineWebSocketHandler as y, respondTerminalUi as z };
29782
+ export { toolDcwRollback as $, abortTerminal as A, sendTerminalInput as B, resolveUserByToken as C, findLiveTerminalPidByAgent as D, terminalSessionSnapshot as E, subscribeTerminal as F, listHarnessProcesses as G, AppError as H, getSystemConfigService as I, createEventStream as J, userService as K, readValidatedBody as L, zValidator as M, getValidatedQuery as N, extractBearerToken as O, getRequestHeader as P, userRepository as Q, setResponseStatus as R, parseJson as S, getToolApprovals as T, audit as U, getQuery as V, getAgentNodeBindingRepo as W, toolMyIndustrialNodes as X, toolDcwControl as Y, toolDaqQuery as Z, toolDcwJudge as _, trapUnhandledNodeErrors as a, ws$1 as a$, toolDcwJournal as a0, ensureDataDir as a1, readMultipartFormData as a2, ensureLeadSchedulerLoop as a3, listTerminalSessions as a4, broadcastSceneEvent as a5, getDaqController as a6, recordOps as a7, bindDaqHostPorts as a8, bindDaqBroadcast as a9, buildAssetsURL as aA, publicAssetsURL as aB, defineRenderHandler as aC, getRouteRules as aD, relative as aE, joinURL as aF, getResponseStatusText as aG, getResponseStatus as aH, createHooks as aI, sanitizeStatusCode as aJ, klona as aK, isEqual as aL, setCookie as aM, getCookie as aN, deleteCookie as aO, $fetch as aP, baseURL as aQ, defu as aR, getRequestProtocol as aS, appendResponseHeader as aT, DAQ_TEMPLATES as aU, DCW_TEMPLATES as aV, daqKeyFromRef as aW, DAQ_DRIVERS as aX, DCW_DRIVERS as aY, DAQ_TEMPLATE_ICONS as aZ, DCW_LINE_COLORS as a_, bumpTaggedSamples as aa, getDcwLineRepo as ab, getDcwRecipeRepo as ac, getAllActiveLineRuns as ad, getActiveLineRun as ae, deviceScenePayload as af, tsdbReady as ag, getDaqQueue as ah, listDaqTemplates as ai, daqInfraStatus as aj, daqInfraConfig as ak, getDaqTemplateRegistry as al, normalizeDriverKind as am, bindDcwBroadcast as an, gateDangerous as ao, getDcwController as ap, getRecipeRollBackManager as aq, listDcwTemplates as ar, emitLineLifecycle as as, ErrorCodes as at, getDcwTemplateRegistry as au, getHitlRegistry as av, setPluginEnabled as aw, reloadPluginHost as ax, publishSceneLayoutEvent as ay, encodePath as az, useNitroApp as b, defineApiHandler as c, destr as d, useServerConfig as e, getDeviceTwinRepo as f, getWorkshopManager as g, defineEventHandler as h, readRawBody as i, getRequestURL as j, getRequestHeaders as k, getOps as l, setResponseHeader as m, createError$1 as n, readBody as o, getPluginHost as p, getRouterParam as q, randomUUID as r, setupGracefulShutdown as s, toNodeListener as t, useRuntimeConfig as u, readClientScript as v, setHeader as w, pluginManifest as x, defineWebSocketHandler as y, respondTerminalUi as z };
29572
29783
  //# sourceMappingURL=nitro.mjs.map