agentworkshop 0.7.3 → 0.7.5

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 +1131 -920
  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/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  43. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +1 -1
  44. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +32 -0
  45. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -0
  46. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +56 -0
  47. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -0
  48. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  49. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  50. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  51. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  52. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  53. package/.output/server/chunks/routes/renderer.mjs +2 -2
  54. package/.output/server/chunks/virtual/entry.mjs +17 -11
  55. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  56. package/.output/server/package.json +1 -1
  57. package/README.md +435 -434
  58. package/app/components/AppHeader.vue +138 -0
  59. package/app/composables/workshop/useWorkshopWs.ts +4 -0
  60. package/app/pages/monitor.vue +17 -1
  61. package/app/stores/workshop/hitl.ts +80 -0
  62. package/bin/aw.mjs +0 -0
  63. package/cli/commands/stop.mjs +108 -0
  64. package/cli/commands/tui.mjs +19 -0
  65. package/config.yml +134 -134
  66. package/docs/tui.md +43 -0
  67. package/i18n/locales/en.ts +3 -0
  68. package/i18n/locales/zh-CN.ts +3 -0
  69. package/package.json +140 -144
  70. package/scripts/_spike-pitui.mjs +116 -0
  71. package/scripts/e2e-aw-tui-global.mjs +277 -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 +148 -0
  76. package/scripts/test-tui-reducers.mjs +72 -0
  77. package/scripts/tsconfig.json +14 -0
  78. package/scripts/tui-smoke.mjs +100 -0
  79. package/server/api/workshop/hitl/pending.get.ts +28 -0
  80. package/server/api/workshop/hitl/respond.post.ts +67 -0
  81. package/server/api/workshop/ws.ts +30 -1
  82. package/server/data/daqs.json +39 -17
  83. package/server/data/dcw-lines.json +14 -0
  84. package/server/data/dcw-products.json +35 -0
  85. package/server/data/dcw-recipes.json +140 -0
  86. package/server/data/dcw-rollback.json +111 -1
  87. package/server/data/dcw-runs.json +135 -90
  88. package/server/data/dcw-writes.json +120 -0
  89. package/server/data/dcws.json +400 -275
  90. package/server/data/line-runs.json +11 -1
  91. package/server/plugins/workshop.ts +7 -0
  92. package/server/services/workshop/agents/harness-terminal.ts +92 -25
  93. package/server/services/workshop/agents/hitl-registry.ts +181 -0
  94. package/server/services/workshop/agents/tool-approvals.ts +15 -0
  95. package/server/services/workshop/scene-events.ts +19 -9
  96. package/shared/workshop-protocol.ts +37 -0
  97. package/tui/README.md +74 -0
  98. package/tui/aw-tui.mjs +406 -0
  99. package/tui/commands/index.mjs +287 -0
  100. package/tui/components/chat-log.mjs +42 -0
  101. package/tui/components/hitl-card.mjs +36 -0
  102. package/tui/components/monitor-pane.mjs +39 -0
  103. package/tui/components/root.mjs +53 -0
  104. package/tui/components/status-bar.mjs +33 -0
  105. package/tui/lib/api.mjs +82 -0
  106. package/tui/lib/config.mjs +58 -0
  107. package/tui/lib/pickers.mjs +102 -0
  108. package/tui/lib/reducers.mjs +218 -0
  109. package/tui/lib/state.mjs +86 -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/c6c01cdd-762e-4fb8-86e7-753c5185b856.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": "c6c01cdd-762e-4fb8-86e7-753c5185b856",
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.3",
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/36oeS8_R2.js": {
26839
- "type": "text/javascript; charset=utf-8",
26840
- "etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
26841
- "mtime": "2026-09-03T17:15:46.478Z",
26842
- "size": 214,
26843
- "path": "../public/_nuxt/36oeS8_R2.js"
26844
- },
26845
27052
  "/favicon.svg": {
26846
27053
  "type": "image/svg+xml",
26847
27054
  "etag": "\"333-aFlSVm0gS1OwJAKmnnSly7X0FJ0\"",
@@ -26852,1246 +27059,1246 @@ const assets = {
26852
27059
  "/_nuxt/2LwEn9gX.js": {
26853
27060
  "type": "text/javascript; charset=utf-8",
26854
27061
  "etag": "\"548e-d/wW0XgblFvF2ZmqI6QmEPUI+0w\"",
26855
- "mtime": "2026-09-03T17:15:46.478Z",
27062
+ "mtime": "2026-09-04T04:30:50.549Z",
26856
27063
  "size": 21646,
26857
27064
  "path": "../public/_nuxt/2LwEn9gX.js"
26858
27065
  },
26859
27066
  "/_nuxt/7ZABjMRh2.js": {
26860
27067
  "type": "text/javascript; charset=utf-8",
26861
27068
  "etag": "\"3a06-vfWCeCuQModyMp+Xi4gZEB3CxnI\"",
26862
- "mtime": "2026-09-03T17:15:46.479Z",
27069
+ "mtime": "2026-09-04T04:30:50.549Z",
26863
27070
  "size": 14854,
26864
27071
  "path": "../public/_nuxt/7ZABjMRh2.js"
26865
27072
  },
26866
27073
  "/_nuxt/agents.BJwgTLFZ.css": {
26867
27074
  "type": "text/css; charset=utf-8",
26868
27075
  "etag": "\"35b-ZsP4Yk5oNeMefP2PDhf6ga/NjEw\"",
26869
- "mtime": "2026-09-03T17:15:46.498Z",
27076
+ "mtime": "2026-09-04T04:30:50.568Z",
26870
27077
  "size": 859,
26871
27078
  "path": "../public/_nuxt/agents.BJwgTLFZ.css"
26872
27079
  },
27080
+ "/_nuxt/36oeS8_R2.js": {
27081
+ "type": "text/javascript; charset=utf-8",
27082
+ "etag": "\"d6-9W7EHt23WjRGOYCN8bz9Yy0aMhg\"",
27083
+ "mtime": "2026-09-04T04:30:50.549Z",
27084
+ "size": 214,
27085
+ "path": "../public/_nuxt/36oeS8_R2.js"
27086
+ },
26873
27087
  "/_nuxt/9X0fVBD7.js": {
26874
27088
  "type": "text/javascript; charset=utf-8",
26875
27089
  "etag": "\"3d68-dpaiop+2vd/2C5Gh1mxTjRk6P6w\"",
26876
- "mtime": "2026-09-03T17:15:46.479Z",
27090
+ "mtime": "2026-09-04T04:30:50.550Z",
26877
27091
  "size": 15720,
26878
27092
  "path": "../public/_nuxt/9X0fVBD7.js"
26879
27093
  },
26880
27094
  "/_nuxt/B6M2WJWm2.js": {
26881
27095
  "type": "text/javascript; charset=utf-8",
26882
27096
  "etag": "\"92-HewTRGUKJSuRw0kFs5RC2k2x4sk\"",
26883
- "mtime": "2026-09-03T17:15:46.480Z",
27097
+ "mtime": "2026-09-04T04:30:50.550Z",
26884
27098
  "size": 146,
26885
27099
  "path": "../public/_nuxt/B6M2WJWm2.js"
26886
27100
  },
26887
- "/_nuxt/B7V9IfTL.js": {
26888
- "type": "text/javascript; charset=utf-8",
26889
- "etag": "\"21bb-WNOATwmMACC/INep96wHvyKusZ8\"",
26890
- "mtime": "2026-09-03T17:15:46.480Z",
26891
- "size": 8635,
26892
- "path": "../public/_nuxt/B7V9IfTL.js"
26893
- },
26894
27101
  "/_nuxt/B9aPoQvt.js": {
26895
27102
  "type": "text/javascript; charset=utf-8",
26896
27103
  "etag": "\"469c-iKeDALdd9GdkRbr7YkPyLiRiPm0\"",
26897
- "mtime": "2026-09-03T17:15:46.480Z",
27104
+ "mtime": "2026-09-04T04:30:50.551Z",
26898
27105
  "size": 18076,
26899
27106
  "path": "../public/_nuxt/B9aPoQvt.js"
26900
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
+ },
26901
27115
  "/_nuxt/B4GHHF6d2.js": {
26902
27116
  "type": "text/javascript; charset=utf-8",
26903
27117
  "etag": "\"6a1f-sgKC+rBlgDrFN2xJnNBcsQFFelY\"",
26904
- "mtime": "2026-09-03T17:15:46.479Z",
27118
+ "mtime": "2026-09-04T04:30:50.550Z",
26905
27119
  "size": 27167,
26906
27120
  "path": "../public/_nuxt/B4GHHF6d2.js"
26907
27121
  },
26908
27122
  "/_nuxt/BCipft_k2.js": {
26909
27123
  "type": "text/javascript; charset=utf-8",
26910
27124
  "etag": "\"144-2D+eSx4+11AuVi/8yHxyPvkJ3L4\"",
26911
- "mtime": "2026-09-03T17:15:46.480Z",
27125
+ "mtime": "2026-09-04T04:30:50.551Z",
26912
27126
  "size": 324,
26913
27127
  "path": "../public/_nuxt/BCipft_k2.js"
26914
27128
  },
26915
- "/_nuxt/BBrRELH32.js": {
26916
- "type": "text/javascript; charset=utf-8",
26917
- "etag": "\"5bc-jGs6+2LpPidhbmCHZyKfmEWQxCI\"",
26918
- "mtime": "2026-09-03T17:15:46.480Z",
26919
- "size": 1468,
26920
- "path": "../public/_nuxt/BBrRELH32.js"
26921
- },
26922
27129
  "/_nuxt/BbQornXa.js": {
26923
27130
  "type": "text/javascript; charset=utf-8",
26924
27131
  "etag": "\"20d2-fXnSrm+6nw+8ZWjtQ/dLscMx2uc\"",
26925
- "mtime": "2026-09-03T17:15:46.483Z",
27132
+ "mtime": "2026-09-04T04:30:50.554Z",
26926
27133
  "size": 8402,
26927
27134
  "path": "../public/_nuxt/BbQornXa.js"
26928
27135
  },
26929
- "/_nuxt/BE5QyG5J2.js": {
26930
- "type": "text/javascript; charset=utf-8",
26931
- "etag": "\"a09-92sH0EppYph8z6pqhl6Y9RYhj/A\"",
26932
- "mtime": "2026-09-03T17:15:46.481Z",
26933
- "size": 2569,
26934
- "path": "../public/_nuxt/BE5QyG5J2.js"
26935
- },
26936
27136
  "/_nuxt/BF9XPEuw.js": {
26937
27137
  "type": "text/javascript; charset=utf-8",
26938
27138
  "etag": "\"21a2-h/t9I4kWzgCaeW8bpn6JW7nfaow\"",
26939
- "mtime": "2026-09-03T17:15:46.481Z",
27139
+ "mtime": "2026-09-04T04:30:50.552Z",
26940
27140
  "size": 8610,
26941
27141
  "path": "../public/_nuxt/BF9XPEuw.js"
26942
27142
  },
26943
27143
  "/_nuxt/BfGc7TJp.js": {
26944
27144
  "type": "text/javascript; charset=utf-8",
26945
27145
  "etag": "\"f5-ynAHqm+XhchZ1co7YynIGiIextg\"",
26946
- "mtime": "2026-09-03T17:15:46.484Z",
27146
+ "mtime": "2026-09-04T04:30:50.555Z",
26947
27147
  "size": 245,
26948
27148
  "path": "../public/_nuxt/BfGc7TJp.js"
26949
27149
  },
26950
27150
  "/_nuxt/BeIfu4N3.js": {
26951
27151
  "type": "text/javascript; charset=utf-8",
26952
27152
  "etag": "\"bc89-neyoILuYLlrhO8n1ehz7UmvocMs\"",
26953
- "mtime": "2026-09-03T17:15:46.484Z",
27153
+ "mtime": "2026-09-04T04:30:50.555Z",
26954
27154
  "size": 48265,
26955
27155
  "path": "../public/_nuxt/BeIfu4N3.js"
26956
27156
  },
26957
- "/_nuxt/BDUjyaF4.js": {
27157
+ "/_nuxt/B9Yie5HN.js": {
26958
27158
  "type": "text/javascript; charset=utf-8",
26959
- "etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
26960
- "mtime": "2026-09-03T17:15:46.481Z",
26961
- "size": 74057,
26962
- "path": "../public/_nuxt/BDUjyaF4.js"
27159
+ "etag": "\"1cbf1-HqLW61KV02Wuu7T+ZR+Urryqh6Y\"",
27160
+ "mtime": "2026-09-04T04:30:50.550Z",
27161
+ "size": 117745,
27162
+ "path": "../public/_nuxt/B9Yie5HN.js"
26963
27163
  },
26964
27164
  "/_nuxt/BFYNhG9S.js": {
26965
27165
  "type": "text/javascript; charset=utf-8",
26966
27166
  "etag": "\"9141-81iSu9pJRw8QX6Mxx5nKGoYfOM4\"",
26967
- "mtime": "2026-09-03T17:15:46.481Z",
27167
+ "mtime": "2026-09-04T04:30:50.552Z",
26968
27168
  "size": 37185,
26969
27169
  "path": "../public/_nuxt/BFYNhG9S.js"
26970
27170
  },
26971
- "/_nuxt/BH0Z05CS.js": {
27171
+ "/_nuxt/BDUjyaF4.js": {
26972
27172
  "type": "text/javascript; charset=utf-8",
26973
- "etag": "\"3e50-bq0ofbhbxAyIm4IxDv0TFutS97A\"",
26974
- "mtime": "2026-09-03T17:15:46.482Z",
26975
- "size": 15952,
26976
- "path": "../public/_nuxt/BH0Z05CS.js"
27173
+ "etag": "\"12149-hpS4uBcTVyjMF/ahBrfPvWSV6dM\"",
27174
+ "mtime": "2026-09-04T04:30:50.552Z",
27175
+ "size": 74057,
27176
+ "path": "../public/_nuxt/BDUjyaF4.js"
26977
27177
  },
26978
27178
  "/_nuxt/BJvGPTpC.js": {
26979
27179
  "type": "text/javascript; charset=utf-8",
26980
27180
  "etag": "\"42-6OgDQPLMWuyWnNFiZTnZejSK/qg\"",
26981
- "mtime": "2026-09-03T17:15:46.482Z",
27181
+ "mtime": "2026-09-04T04:30:50.553Z",
26982
27182
  "size": 66,
26983
27183
  "path": "../public/_nuxt/BJvGPTpC.js"
26984
27184
  },
27185
+ "/_nuxt/BH0Z05CS.js": {
27186
+ "type": "text/javascript; charset=utf-8",
27187
+ "etag": "\"3e50-bq0ofbhbxAyIm4IxDv0TFutS97A\"",
27188
+ "mtime": "2026-09-04T04:30:50.553Z",
27189
+ "size": 15952,
27190
+ "path": "../public/_nuxt/BH0Z05CS.js"
27191
+ },
27192
+ "/_nuxt/Bsc69G4x.js": {
27193
+ "type": "text/javascript; charset=utf-8",
27194
+ "etag": "\"10b9b-CeedCLRo4KPs11whWlwTGF4MhLk\"",
27195
+ "mtime": "2026-09-04T04:30:50.555Z",
27196
+ "size": 68507,
27197
+ "path": "../public/_nuxt/Bsc69G4x.js"
27198
+ },
26985
27199
  "/_nuxt/Bi6AiCuP.js": {
26986
27200
  "type": "text/javascript; charset=utf-8",
26987
27201
  "etag": "\"496e-oqHtafCqQjIHhroTpVe4NdP44vE\"",
26988
- "mtime": "2026-09-03T17:15:46.484Z",
27202
+ "mtime": "2026-09-04T04:30:50.555Z",
26989
27203
  "size": 18798,
26990
27204
  "path": "../public/_nuxt/Bi6AiCuP.js"
26991
27205
  },
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-03T17:15:46.478Z",
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-03T17:15:46.482Z",
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-03T17:15:46.482Z",
27223
+ "mtime": "2026-09-04T04:30:50.553Z",
27010
27224
  "size": 1351848,
27011
27225
  "path": "../public/_nuxt/BGkumHZ32.js"
27012
27226
  },
27013
- "/_nuxt/Bsc69G4x.js": {
27227
+ "/_nuxt/BSCpFtzG.js": {
27014
27228
  "type": "text/javascript; charset=utf-8",
27015
- "etag": "\"10b9b-CeedCLRo4KPs11whWlwTGF4MhLk\"",
27016
- "mtime": "2026-09-03T17:15:46.485Z",
27017
- "size": 68507,
27018
- "path": "../public/_nuxt/Bsc69G4x.js"
27229
+ "etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
27230
+ "mtime": "2026-09-04T04:30:50.554Z",
27231
+ "size": 78744,
27232
+ "path": "../public/_nuxt/BSCpFtzG.js"
27019
27233
  },
27020
27234
  "/_nuxt/BSSUlJnx2.js": {
27021
27235
  "type": "text/javascript; charset=utf-8",
27022
27236
  "etag": "\"5f5-t0OMayeEXY7fEaFUOlppJZZQvtM\"",
27023
- "mtime": "2026-09-03T17:15:46.483Z",
27237
+ "mtime": "2026-09-04T04:30:50.554Z",
27024
27238
  "size": 1525,
27025
27239
  "path": "../public/_nuxt/BSSUlJnx2.js"
27026
27240
  },
27027
- "/_nuxt/BSCpFtzG.js": {
27241
+ "/_nuxt/BUxYN2mw.js": {
27028
27242
  "type": "text/javascript; charset=utf-8",
27029
- "etag": "\"13398-3vxX1fQrPyVWKnXsEX5bmCpF/Eg\"",
27030
- "mtime": "2026-09-03T17:15:46.483Z",
27031
- "size": 78744,
27032
- "path": "../public/_nuxt/BSCpFtzG.js"
27243
+ "etag": "\"1d2b-imErvR08IoUb6Oyd9b7/yZw9bss\"",
27244
+ "mtime": "2026-09-04T04:30:50.554Z",
27245
+ "size": 7467,
27246
+ "path": "../public/_nuxt/BUxYN2mw.js"
27033
27247
  },
27034
27248
  "/_nuxt/BUcmySDa2.js": {
27035
27249
  "type": "text/javascript; charset=utf-8",
27036
27250
  "etag": "\"1d27c-MrwgQiovFUP0UVtMJ1LdEF/IrEs\"",
27037
- "mtime": "2026-09-03T17:15:46.483Z",
27251
+ "mtime": "2026-09-04T04:30:50.554Z",
27038
27252
  "size": 119420,
27039
27253
  "path": "../public/_nuxt/BUcmySDa2.js"
27040
27254
  },
27041
- "/_nuxt/BUxYN2mw.js": {
27042
- "type": "text/javascript; charset=utf-8",
27043
- "etag": "\"1d2b-imErvR08IoUb6Oyd9b7/yZw9bss\"",
27044
- "mtime": "2026-09-03T17:15:46.483Z",
27045
- "size": 7467,
27046
- "path": "../public/_nuxt/BUxYN2mw.js"
27047
- },
27048
- "/_nuxt/BuKI8z-5.js": {
27255
+ "/_nuxt/Bxh5nf8j.js": {
27049
27256
  "type": "text/javascript; charset=utf-8",
27050
- "etag": "\"9962-5cpxNhCh2a64bkYnWq+6y1OW+z4\"",
27051
- "mtime": "2026-09-03T17:15:46.485Z",
27052
- "size": 39266,
27053
- "path": "../public/_nuxt/BuKI8z-5.js"
27257
+ "etag": "\"20cd-xBG7XpkdBjW7zZsLXaS7Psed7UI\"",
27258
+ "mtime": "2026-09-04T04:30:50.556Z",
27259
+ "size": 8397,
27260
+ "path": "../public/_nuxt/Bxh5nf8j.js"
27054
27261
  },
27055
27262
  "/_nuxt/By-LNp3k.js": {
27056
27263
  "type": "text/javascript; charset=utf-8",
27057
27264
  "etag": "\"628-YzaHtvEl3od6eW8W/0li6P/WuA4\"",
27058
- "mtime": "2026-09-03T17:15:46.486Z",
27265
+ "mtime": "2026-09-04T04:30:50.556Z",
27059
27266
  "size": 1576,
27060
27267
  "path": "../public/_nuxt/By-LNp3k.js"
27061
27268
  },
27062
- "/_nuxt/Bxh5nf8j.js": {
27063
- "type": "text/javascript; charset=utf-8",
27064
- "etag": "\"20cd-xBG7XpkdBjW7zZsLXaS7Psed7UI\"",
27065
- "mtime": "2026-09-03T17:15:46.485Z",
27066
- "size": 8397,
27067
- "path": "../public/_nuxt/Bxh5nf8j.js"
27068
- },
27069
27269
  "/_nuxt/Bxgaym6j.js": {
27070
27270
  "type": "text/javascript; charset=utf-8",
27071
27271
  "etag": "\"b22d-jpQEJ8C8fn6hY8V4GH9ThGbOrfo\"",
27072
- "mtime": "2026-09-03T17:15:46.485Z",
27272
+ "mtime": "2026-09-04T04:30:50.556Z",
27073
27273
  "size": 45613,
27074
27274
  "path": "../public/_nuxt/Bxgaym6j.js"
27075
27275
  },
27076
27276
  "/_nuxt/ByGNWgAr.js": {
27077
27277
  "type": "text/javascript; charset=utf-8",
27078
27278
  "etag": "\"a6ef-i08VwpGBmCrbpxIYs6NCjsMcsLM\"",
27079
- "mtime": "2026-09-03T17:15:46.486Z",
27279
+ "mtime": "2026-09-04T04:30:50.556Z",
27080
27280
  "size": 42735,
27081
27281
  "path": "../public/_nuxt/ByGNWgAr.js"
27082
27282
  },
27083
- "/_nuxt/BrIJiJSN.js": {
27084
- "type": "text/javascript; charset=utf-8",
27085
- "etag": "\"50eba-EQGueVrdlEzHO7oTVt2LPxnHgRo\"",
27086
- "mtime": "2026-09-03T17:15:46.484Z",
27087
- "size": 331450,
27088
- "path": "../public/_nuxt/BrIJiJSN.js"
27089
- },
27090
- "/_nuxt/Ce1zyNYu.js": {
27091
- "type": "text/javascript; charset=utf-8",
27092
- "etag": "\"1aa4-M2wqiS1A05NQaxZt2Lkrl4z5KSs\"",
27093
- "mtime": "2026-09-03T17:15:46.488Z",
27094
- "size": 6820,
27095
- "path": "../public/_nuxt/Ce1zyNYu.js"
27096
- },
27097
- "/_nuxt/Bz40vyZS.js": {
27283
+ "/_nuxt/CdfAP_IH2.js": {
27098
27284
  "type": "text/javascript; charset=utf-8",
27099
- "etag": "\"25f37-E/eVOfw2BMzbvReXIfb8tHZmIlk\"",
27100
- "mtime": "2026-09-03T17:15:46.486Z",
27101
- "size": 155447,
27102
- "path": "../public/_nuxt/Bz40vyZS.js"
27285
+ "etag": "\"5162-RGdD9vrWrwYW+Y9dylnQ3btpJkA\"",
27286
+ "mtime": "2026-09-04T04:30:50.558Z",
27287
+ "size": 20834,
27288
+ "path": "../public/_nuxt/CdfAP_IH2.js"
27103
27289
  },
27104
27290
  "/_nuxt/C9f8QMp12.js": {
27105
27291
  "type": "text/javascript; charset=utf-8",
27106
27292
  "etag": "\"1896-VcRRXhZEm21djPt3FTvlq+iUccI\"",
27107
- "mtime": "2026-09-03T17:15:46.486Z",
27293
+ "mtime": "2026-09-04T04:30:50.556Z",
27108
27294
  "size": 6294,
27109
27295
  "path": "../public/_nuxt/C9f8QMp12.js"
27110
27296
  },
27297
+ "/_nuxt/CdSgfcYR.js": {
27298
+ "type": "text/javascript; charset=utf-8",
27299
+ "etag": "\"2427-i01sLt6fsO7mcF6NUt/ezhVoFXY\"",
27300
+ "mtime": "2026-09-04T04:30:50.558Z",
27301
+ "size": 9255,
27302
+ "path": "../public/_nuxt/CdSgfcYR.js"
27303
+ },
27111
27304
  "/_nuxt/channel-templates.lkqEYlWY.css": {
27112
27305
  "type": "text/css; charset=utf-8",
27113
27306
  "etag": "\"846-xsPqrbRlt2uxmbSxMrjhPhB1/BQ\"",
27114
- "mtime": "2026-09-03T17:15:46.499Z",
27307
+ "mtime": "2026-09-04T04:30:50.568Z",
27115
27308
  "size": 2118,
27116
27309
  "path": "../public/_nuxt/channel-templates.lkqEYlWY.css"
27117
27310
  },
27118
- "/_nuxt/Cno6kYiO2.js": {
27311
+ "/_nuxt/Ce1zyNYu.js": {
27119
27312
  "type": "text/javascript; charset=utf-8",
27120
- "etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
27121
- "mtime": "2026-09-03T17:15:46.489Z",
27122
- "size": 242,
27123
- "path": "../public/_nuxt/Cno6kYiO2.js"
27313
+ "etag": "\"1aa4-M2wqiS1A05NQaxZt2Lkrl4z5KSs\"",
27314
+ "mtime": "2026-09-04T04:30:50.558Z",
27315
+ "size": 6820,
27316
+ "path": "../public/_nuxt/Ce1zyNYu.js"
27124
27317
  },
27125
27318
  "/_nuxt/ChEKFMxj.js": {
27126
27319
  "type": "text/javascript; charset=utf-8",
27127
27320
  "etag": "\"18b-iQWgRD/SAefQcUmBu8DMSobJ8mI\"",
27128
- "mtime": "2026-09-03T17:15:46.488Z",
27321
+ "mtime": "2026-09-04T04:30:50.559Z",
27129
27322
  "size": 395,
27130
27323
  "path": "../public/_nuxt/ChEKFMxj.js"
27131
27324
  },
27132
- "/_nuxt/CNs_Ozdc2.js": {
27325
+ "/_nuxt/ChnfyQHz.js": {
27133
27326
  "type": "text/javascript; charset=utf-8",
27134
- "etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
27135
- "mtime": "2026-09-03T17:15:46.486Z",
27136
- "size": 27,
27137
- "path": "../public/_nuxt/CNs_Ozdc2.js"
27327
+ "etag": "\"665-FgIxFQ3vFyM9CSQU6ox2ApoM7LI\"",
27328
+ "mtime": "2026-09-04T04:30:50.559Z",
27329
+ "size": 1637,
27330
+ "path": "../public/_nuxt/ChnfyQHz.js"
27138
27331
  },
27139
- "/_nuxt/CrFGZYVB2.js": {
27332
+ "/_nuxt/Cno6kYiO2.js": {
27140
27333
  "type": "text/javascript; charset=utf-8",
27141
- "etag": "\"1fd9-h9Klnky7cwjw32+pRNI7dtuWAO4\"",
27142
- "mtime": "2026-09-03T17:15:46.489Z",
27143
- "size": 8153,
27144
- "path": "../public/_nuxt/CrFGZYVB2.js"
27334
+ "etag": "\"f2-SIBAvqBfq2ENmoMT2zz03X9uJTg\"",
27335
+ "mtime": "2026-09-04T04:30:50.559Z",
27336
+ "size": 242,
27337
+ "path": "../public/_nuxt/Cno6kYiO2.js"
27145
27338
  },
27146
- "/_nuxt/CWKEp1wx2.js": {
27339
+ "/_nuxt/CN7Zh8GQ.js": {
27147
27340
  "type": "text/javascript; charset=utf-8",
27148
- "etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
27149
- "mtime": "2026-09-03T17:15:46.487Z",
27150
- "size": 1365,
27151
- "path": "../public/_nuxt/CWKEp1wx2.js"
27341
+ "etag": "\"9963-pPk6CpuIYBRmRu997Sw+o/u7J7Y\"",
27342
+ "mtime": "2026-09-04T04:30:50.557Z",
27343
+ "size": 39267,
27344
+ "path": "../public/_nuxt/CN7Zh8GQ.js"
27345
+ },
27346
+ "/_nuxt/CNs_Ozdc2.js": {
27347
+ "type": "text/javascript; charset=utf-8",
27348
+ "etag": "\"1b-1MHUJYdBtOvbvPMaiQxDXp3lHyw\"",
27349
+ "mtime": "2026-09-04T04:30:50.557Z",
27350
+ "size": 27,
27351
+ "path": "../public/_nuxt/CNs_Ozdc2.js"
27152
27352
  },
27153
27353
  "/_nuxt/CUxV8Bw_.js": {
27154
27354
  "type": "text/javascript; charset=utf-8",
27155
27355
  "etag": "\"62a-JJmAaKSZHLMwk9ceZyT0UorTARk\"",
27156
- "mtime": "2026-09-03T17:15:46.487Z",
27356
+ "mtime": "2026-09-04T04:30:50.557Z",
27157
27357
  "size": 1578,
27158
27358
  "path": "../public/_nuxt/CUxV8Bw_.js"
27159
27359
  },
27160
27360
  "/_nuxt/CfIXY-ET.js": {
27161
27361
  "type": "text/javascript; charset=utf-8",
27162
27362
  "etag": "\"28a2f-wT9I8KiLCqQ9ynK+e7t0thS24kQ\"",
27163
- "mtime": "2026-09-03T17:15:46.488Z",
27363
+ "mtime": "2026-09-04T04:30:50.558Z",
27164
27364
  "size": 166447,
27165
27365
  "path": "../public/_nuxt/CfIXY-ET.js"
27166
27366
  },
27167
27367
  "/_nuxt/CS8R0_J3.js": {
27168
27368
  "type": "text/javascript; charset=utf-8",
27169
27369
  "etag": "\"359a-Ke/WCceSRrJsHLFPhkn1KXVg1m8\"",
27170
- "mtime": "2026-09-03T17:15:46.487Z",
27370
+ "mtime": "2026-09-04T04:30:50.557Z",
27171
27371
  "size": 13722,
27172
27372
  "path": "../public/_nuxt/CS8R0_J3.js"
27173
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
+ },
27381
+ "/_nuxt/CWKEp1wx2.js": {
27382
+ "type": "text/javascript; charset=utf-8",
27383
+ "etag": "\"555-ED/tuOi0Qdk4aSGksbI58QY+vQ8\"",
27384
+ "mtime": "2026-09-04T04:30:50.557Z",
27385
+ "size": 1365,
27386
+ "path": "../public/_nuxt/CWKEp1wx2.js"
27387
+ },
27174
27388
  "/_nuxt/CXLI50Sq.js": {
27175
27389
  "type": "text/javascript; charset=utf-8",
27176
27390
  "etag": "\"1f3a-hlX9ru6jZckxtwzbcBYyr7wgyrY\"",
27177
- "mtime": "2026-09-03T17:15:46.487Z",
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-03T17:15:46.487Z",
27398
+ "mtime": "2026-09-04T04:30:50.558Z",
27185
27399
  "size": 9463,
27186
27400
  "path": "../public/_nuxt/CXmkVXS5.js"
27187
27401
  },
27188
- "/_nuxt/D-Ne4C9a.js": {
27402
+ "/_nuxt/CyygA0q4.js": {
27189
27403
  "type": "text/javascript; charset=utf-8",
27190
- "etag": "\"1195-OssDeoy4mh8A5/QMpQbuGQHyIKQ\"",
27191
- "mtime": "2026-09-03T17:15:46.489Z",
27192
- "size": 4501,
27193
- "path": "../public/_nuxt/D-Ne4C9a.js"
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"
27194
27415
  },
27195
27416
  "/_nuxt/C_gFA2H_2.js": {
27196
27417
  "type": "text/javascript; charset=utf-8",
27197
27418
  "etag": "\"89e-FjJprk7cJxDm6dF45I+PCzGIcG8\"",
27198
- "mtime": "2026-09-03T17:15:46.488Z",
27419
+ "mtime": "2026-09-04T04:30:50.558Z",
27199
27420
  "size": 2206,
27200
27421
  "path": "../public/_nuxt/C_gFA2H_2.js"
27201
27422
  },
27202
- "/_nuxt/D0C5Q0di.js": {
27203
- "type": "text/javascript; charset=utf-8",
27204
- "etag": "\"e47f-Fzcm4dFhj/kmVCb6h/Aye9ehAG4\"",
27205
- "mtime": "2026-09-03T17:15:46.489Z",
27206
- "size": 58495,
27207
- "path": "../public/_nuxt/D0C5Q0di.js"
27208
- },
27209
- "/_nuxt/D5KJ7_0V.js": {
27423
+ "/_nuxt/D-Ne4C9a.js": {
27210
27424
  "type": "text/javascript; charset=utf-8",
27211
- "etag": "\"56ab-vqOxu4dfOFWqC1pao4/du5wXWFk\"",
27212
- "mtime": "2026-09-03T17:15:46.490Z",
27213
- "size": 22187,
27214
- "path": "../public/_nuxt/D5KJ7_0V.js"
27425
+ "etag": "\"1195-OssDeoy4mh8A5/QMpQbuGQHyIKQ\"",
27426
+ "mtime": "2026-09-04T04:30:50.559Z",
27427
+ "size": 4501,
27428
+ "path": "../public/_nuxt/D-Ne4C9a.js"
27215
27429
  },
27216
27430
  "/_nuxt/D8DDDzV62.js": {
27217
27431
  "type": "text/javascript; charset=utf-8",
27218
27432
  "etag": "\"20cf-8a3dXj+yAc7cMA4Jnv64rxS2ouU\"",
27219
- "mtime": "2026-09-03T17:15:46.490Z",
27433
+ "mtime": "2026-09-04T04:30:50.560Z",
27220
27434
  "size": 8399,
27221
27435
  "path": "../public/_nuxt/D8DDDzV62.js"
27222
27436
  },
27223
27437
  "/_nuxt/D95h62Jn.js": {
27224
27438
  "type": "text/javascript; charset=utf-8",
27225
27439
  "etag": "\"3f5-sTPqCSaAt8a9YlLXlhRfFlOtmcQ\"",
27226
- "mtime": "2026-09-03T17:15:46.490Z",
27440
+ "mtime": "2026-09-04T04:30:50.560Z",
27227
27441
  "size": 1013,
27228
27442
  "path": "../public/_nuxt/D95h62Jn.js"
27229
27443
  },
27230
27444
  "/_nuxt/daq.BXsnevQv.css": {
27231
27445
  "type": "text/css; charset=utf-8",
27232
27446
  "etag": "\"560c-YFQOxXaOvpsOJCF9QKvLaATY3Wo\"",
27233
- "mtime": "2026-09-03T17:15:46.499Z",
27447
+ "mtime": "2026-09-04T04:30:50.568Z",
27234
27448
  "size": 22028,
27235
27449
  "path": "../public/_nuxt/daq.BXsnevQv.css"
27236
27450
  },
27237
27451
  "/_nuxt/dcw.C46dGiF_.css": {
27238
27452
  "type": "text/css; charset=utf-8",
27239
27453
  "etag": "\"2608-5iynscon3f2ARegtDxl5rYx3iYM\"",
27240
- "mtime": "2026-09-03T17:15:46.500Z",
27454
+ "mtime": "2026-09-04T04:30:50.568Z",
27241
27455
  "size": 9736,
27242
27456
  "path": "../public/_nuxt/dcw.C46dGiF_.css"
27243
27457
  },
27244
- "/_nuxt/DC-QMEk1.js": {
27245
- "type": "text/javascript; charset=utf-8",
27246
- "etag": "\"1cbf0-Gj4ROxVGQJohyOxsqU24cF9MK/8\"",
27247
- "mtime": "2026-09-03T17:15:46.490Z",
27248
- "size": 117744,
27249
- "path": "../public/_nuxt/DC-QMEk1.js"
27250
- },
27251
27458
  "/_nuxt/DdPeifHR.js": {
27252
27459
  "type": "text/javascript; charset=utf-8",
27253
27460
  "etag": "\"7ec3-Ul9ut8rzcNu1BCT2CL704Bev/mM\"",
27254
- "mtime": "2026-09-03T17:15:46.493Z",
27461
+ "mtime": "2026-09-04T04:30:50.562Z",
27255
27462
  "size": 32451,
27256
27463
  "path": "../public/_nuxt/DdPeifHR.js"
27257
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
+ },
27258
27472
  "/_nuxt/DEHNjlTq2.js": {
27259
27473
  "type": "text/javascript; charset=utf-8",
27260
27474
  "etag": "\"14fe-IJ6pssvuWomkWeOPhpylkD+TDmA\"",
27261
- "mtime": "2026-09-03T17:15:46.490Z",
27475
+ "mtime": "2026-09-04T04:30:50.560Z",
27262
27476
  "size": 5374,
27263
27477
  "path": "../public/_nuxt/DEHNjlTq2.js"
27264
27478
  },
27265
- "/_nuxt/default.iGJy9dP-.css": {
27266
- "type": "text/css; charset=utf-8",
27267
- "etag": "\"2922-+exPltwm+fwclE+cBqnrulaFObQ\"",
27268
- "mtime": "2026-09-03T17:15:46.500Z",
27269
- "size": 10530,
27270
- "path": "../public/_nuxt/default.iGJy9dP-.css"
27479
+ "/_nuxt/DIOBYJe3.js": {
27480
+ "type": "text/javascript; charset=utf-8",
27481
+ "etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
27482
+ "mtime": "2026-09-04T04:30:50.560Z",
27483
+ "size": 1205,
27484
+ "path": "../public/_nuxt/DIOBYJe3.js"
27271
27485
  },
27272
27486
  "/_nuxt/DNJSkm3Q.js": {
27273
27487
  "type": "text/javascript; charset=utf-8",
27274
27488
  "etag": "\"216b-y0s8z84O8dmpAUYWCz4LSRx0vJQ\"",
27275
- "mtime": "2026-09-03T17:15:46.491Z",
27489
+ "mtime": "2026-09-04T04:30:50.561Z",
27276
27490
  "size": 8555,
27277
27491
  "path": "../public/_nuxt/DNJSkm3Q.js"
27278
27492
  },
27279
- "/_nuxt/DEkQ0qQ02.js": {
27280
- "type": "text/javascript; charset=utf-8",
27281
- "etag": "\"4cfc-ucIBbCQ6UaqBmotD7yRBtwEHEyU\"",
27282
- "mtime": "2026-09-03T17:15:46.490Z",
27283
- "size": 19708,
27284
- "path": "../public/_nuxt/DEkQ0qQ02.js"
27285
- },
27286
27493
  "/_nuxt/dObsRdSQ.js": {
27287
27494
  "type": "text/javascript; charset=utf-8",
27288
27495
  "etag": "\"3d5-6E8m1HnkzKD1X9Hx3/ZbS1uH0vc\"",
27289
- "mtime": "2026-09-03T17:15:46.495Z",
27496
+ "mtime": "2026-09-04T04:30:50.565Z",
27290
27497
  "size": 981,
27291
27498
  "path": "../public/_nuxt/dObsRdSQ.js"
27292
27499
  },
27293
- "/_nuxt/DIOBYJe3.js": {
27294
- "type": "text/javascript; charset=utf-8",
27295
- "etag": "\"4b5-DdWaiyBS+/JejqhLG4Q7/JprP2Q\"",
27296
- "mtime": "2026-09-03T17:15:46.491Z",
27297
- "size": 1205,
27298
- "path": "../public/_nuxt/DIOBYJe3.js"
27299
- },
27300
27500
  "/_nuxt/DP6bdyIp.js": {
27301
27501
  "type": "text/javascript; charset=utf-8",
27302
27502
  "etag": "\"119c-ZH6sW8Yv0KAJf0LIwFiNMRP2kk8\"",
27303
- "mtime": "2026-09-03T17:15:46.491Z",
27503
+ "mtime": "2026-09-04T04:30:50.561Z",
27304
27504
  "size": 4508,
27305
27505
  "path": "../public/_nuxt/DP6bdyIp.js"
27306
27506
  },
27507
+ "/_nuxt/DPDqAD1e.js": {
27508
+ "type": "text/javascript; charset=utf-8",
27509
+ "etag": "\"4842-1Qirb7tmwMUEq9mSoIl88rnZ6Rk\"",
27510
+ "mtime": "2026-09-04T04:30:50.561Z",
27511
+ "size": 18498,
27512
+ "path": "../public/_nuxt/DPDqAD1e.js"
27513
+ },
27307
27514
  "/_nuxt/DRq09ZmT.js": {
27308
27515
  "type": "text/javascript; charset=utf-8",
27309
27516
  "etag": "\"29d-1stN5BQaapAs+Peb3DQslLQQr+0\"",
27310
- "mtime": "2026-09-03T17:15:46.492Z",
27517
+ "mtime": "2026-09-04T04:30:50.561Z",
27311
27518
  "size": 669,
27312
27519
  "path": "../public/_nuxt/DRq09ZmT.js"
27313
27520
  },
27314
27521
  "/_nuxt/DVQAz9WI.js": {
27315
27522
  "type": "text/javascript; charset=utf-8",
27316
27523
  "etag": "\"130c-rUMRdwb4oHiuX7IOXv/sclpvuds\"",
27317
- "mtime": "2026-09-03T17:15:46.492Z",
27524
+ "mtime": "2026-09-04T04:30:50.562Z",
27318
27525
  "size": 4876,
27319
27526
  "path": "../public/_nuxt/DVQAz9WI.js"
27320
27527
  },
27321
- "/_nuxt/DPDqAD1e.js": {
27322
- "type": "text/javascript; charset=utf-8",
27323
- "etag": "\"4842-1Qirb7tmwMUEq9mSoIl88rnZ6Rk\"",
27324
- "mtime": "2026-09-03T17:15:46.491Z",
27325
- "size": 18498,
27326
- "path": "../public/_nuxt/DPDqAD1e.js"
27327
- },
27328
27528
  "/_nuxt/DSBfvCi5.js": {
27329
27529
  "type": "text/javascript; charset=utf-8",
27330
27530
  "etag": "\"103b0-dVLvfb3xqwBE5sNRDvR7g27gNt8\"",
27331
- "mtime": "2026-09-03T17:15:46.492Z",
27531
+ "mtime": "2026-09-04T04:30:50.561Z",
27332
27532
  "size": 66480,
27333
27533
  "path": "../public/_nuxt/DSBfvCi5.js"
27334
27534
  },
27335
- "/_nuxt/dt2tKE95.js": {
27336
- "type": "text/javascript; charset=utf-8",
27337
- "etag": "\"4cc1-PBJBqFz6X1T5i/2dfz7MZ6G+XKY\"",
27338
- "mtime": "2026-09-03T17:15:46.495Z",
27339
- "size": 19649,
27340
- "path": "../public/_nuxt/dt2tKE95.js"
27341
- },
27342
27535
  "/_nuxt/DXK1U43I.js": {
27343
27536
  "type": "text/javascript; charset=utf-8",
27344
27537
  "etag": "\"4e6e-0ajU7w+quumividScJQJc/QFBDw\"",
27345
- "mtime": "2026-09-03T17:15:46.492Z",
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-03T17:15:46.493Z",
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-03T17:15:46.500Z",
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
+ },
27363
27563
  "/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff": {
27364
27564
  "type": "font/woff",
27365
27565
  "etag": "\"3f04-1MKyFKXvChwQTK9MnbAM3SwAP/w\"",
27366
- "mtime": "2026-09-03T17:15:46.500Z",
27566
+ "mtime": "2026-09-04T04:30:50.569Z",
27367
27567
  "size": 16132,
27368
27568
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-italic.BZInx2ys.woff"
27369
27569
  },
27370
27570
  "/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff": {
27371
27571
  "type": "font/woff",
27372
27572
  "etag": "\"3c88-Q5XoFKe1rGp1UkdvSR6MtPcFfgQ\"",
27373
- "mtime": "2026-09-03T17:15:46.501Z",
27573
+ "mtime": "2026-09-04T04:30:50.569Z",
27374
27574
  "size": 15496,
27375
27575
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.C0kVTdou.woff"
27376
27576
  },
27377
27577
  "/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2": {
27378
27578
  "type": "font/woff2",
27379
27579
  "etag": "\"33d4-lVrdxXudnaWAAL0JfU6b+yZGpK0\"",
27380
- "mtime": "2026-09-03T17:15:46.501Z",
27580
+ "mtime": "2026-09-04T04:30:50.569Z",
27381
27581
  "size": 13268,
27382
27582
  "path": "../public/_nuxt/eb-garamond-cyrillic-400-normal.DDLP67lu.woff2"
27383
27583
  },
27384
- "/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
27385
- "type": "font/woff2",
27386
- "etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
27387
- "mtime": "2026-09-03T17:15:46.501Z",
27388
- "size": 17952,
27389
- "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
27390
- },
27391
27584
  "/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff": {
27392
27585
  "type": "font/woff",
27393
27586
  "etag": "\"5698-6bgErOYTElI0Z3Untp+h0Xi0FGs\"",
27394
- "mtime": "2026-09-03T17:15:46.501Z",
27587
+ "mtime": "2026-09-04T04:30:50.570Z",
27395
27588
  "size": 22168,
27396
27589
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.CYS3phfl.woff"
27397
27590
  },
27591
+ "/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2": {
27592
+ "type": "font/woff2",
27593
+ "etag": "\"4620-AEmSjSDDFDLAiok0BdjqqFs2mx4\"",
27594
+ "mtime": "2026-09-04T04:30:50.569Z",
27595
+ "size": 17952,
27596
+ "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-italic.Bz1w3xqM.woff2"
27597
+ },
27398
27598
  "/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff": {
27399
27599
  "type": "font/woff",
27400
27600
  "etag": "\"4fcc-Wt58DNvJEH8PhhsEwR/fAuZLZf0\"",
27401
- "mtime": "2026-09-03T17:15:46.501Z",
27601
+ "mtime": "2026-09-04T04:30:50.570Z",
27402
27602
  "size": 20428,
27403
27603
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.DG8lny6_.woff"
27404
27604
  },
27405
27605
  "/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2": {
27406
27606
  "type": "font/woff2",
27407
27607
  "etag": "\"419c-BgVrkDzxBAskhVuAe8ZPKrVJ2vk\"",
27408
- "mtime": "2026-09-03T17:15:46.502Z",
27608
+ "mtime": "2026-09-04T04:30:50.570Z",
27409
27609
  "size": 16796,
27410
27610
  "path": "../public/_nuxt/eb-garamond-cyrillic-ext-400-normal.o8fRvAFQ.woff2"
27411
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-03T17:15:46.502Z",
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-03T17:15:46.502Z",
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
27626
  "/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff": {
27427
27627
  "type": "font/woff",
27428
27628
  "etag": "\"3108-ggShwQ6kE+MAR7EEQafdmWunxHg\"",
27429
- "mtime": "2026-09-03T17:15:46.502Z",
27629
+ "mtime": "2026-09-04T04:30:50.571Z",
27430
27630
  "size": 12552,
27431
27631
  "path": "../public/_nuxt/eb-garamond-greek-400-normal.d4JlP2QH.woff"
27432
27632
  },
27433
- "/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff": {
27434
- "type": "font/woff",
27435
- "etag": "\"2304-q8ppn7qePqLys53UrEKMrGT8e6E\"",
27436
- "mtime": "2026-09-03T17:15:46.503Z",
27437
- "size": 8964,
27438
- "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff"
27439
- },
27440
27633
  "/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2": {
27441
27634
  "type": "font/woff2",
27442
27635
  "etag": "\"2a00-ZNzj8SIiN3t2N23u++WhC6jE8gk\"",
27443
- "mtime": "2026-09-03T17:15:46.502Z",
27636
+ "mtime": "2026-09-04T04:30:50.570Z",
27444
27637
  "size": 10752,
27445
27638
  "path": "../public/_nuxt/eb-garamond-greek-400-normal.CVAbzS9p.woff2"
27446
27639
  },
27640
+ "/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff": {
27641
+ "type": "font/woff",
27642
+ "etag": "\"2304-q8ppn7qePqLys53UrEKMrGT8e6E\"",
27643
+ "mtime": "2026-09-04T04:30:50.571Z",
27644
+ "size": 8964,
27645
+ "path": "../public/_nuxt/eb-garamond-greek-ext-400-italic.BL1XYHtS.woff"
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-03T17:15:46.503Z",
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
- "/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
27455
- "type": "font/woff2",
27456
- "etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
27457
- "mtime": "2026-09-03T17:15:46.503Z",
27458
- "size": 6464,
27459
- "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
27460
- },
27461
27654
  "/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff": {
27462
27655
  "type": "font/woff",
27463
27656
  "etag": "\"20b0-FNV/ZgjupejIrGOsz4+8EYVUXHo\"",
27464
- "mtime": "2026-09-03T17:15:46.503Z",
27657
+ "mtime": "2026-09-04T04:30:50.571Z",
27465
27658
  "size": 8368,
27466
27659
  "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.BaZl8BIK.woff"
27467
27660
  },
27661
+ "/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2": {
27662
+ "type": "font/woff2",
27663
+ "etag": "\"1940-Y3hsqG2RXMGI9hHTiI+Nv2Q4msM\"",
27664
+ "mtime": "2026-09-04T04:30:50.571Z",
27665
+ "size": 6464,
27666
+ "path": "../public/_nuxt/eb-garamond-greek-ext-400-normal.K8pwR3tn.woff2"
27667
+ },
27468
27668
  "/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2": {
27469
27669
  "type": "font/woff2",
27470
27670
  "etag": "\"632c-iB8RNlBCm9D0APLcMJ/hIPATx+0\"",
27471
- "mtime": "2026-09-03T17:15:46.504Z",
27671
+ "mtime": "2026-09-04T04:30:50.572Z",
27472
27672
  "size": 25388,
27473
27673
  "path": "../public/_nuxt/eb-garamond-latin-400-italic.DSEbMgZu.woff2"
27474
27674
  },
27675
+ "/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2": {
27676
+ "type": "font/woff2",
27677
+ "etag": "\"5d0c-w7FmIa34l5RBoJYmvp9lwadEvW4\"",
27678
+ "mtime": "2026-09-04T04:30:50.572Z",
27679
+ "size": 23820,
27680
+ "path": "../public/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2"
27681
+ },
27475
27682
  "/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff": {
27476
27683
  "type": "font/woff",
27477
27684
  "etag": "\"7890-VX8YYh09367bg28IWSUybEXrsDQ\"",
27478
- "mtime": "2026-09-03T17:15:46.503Z",
27685
+ "mtime": "2026-09-04T04:30:50.571Z",
27479
27686
  "size": 30864,
27480
27687
  "path": "../public/_nuxt/eb-garamond-latin-400-italic.CDFyLPXJ.woff"
27481
27688
  },
27482
- "/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2": {
27483
- "type": "font/woff2",
27484
- "etag": "\"5d0c-w7FmIa34l5RBoJYmvp9lwadEvW4\"",
27485
- "mtime": "2026-09-03T17:15:46.504Z",
27486
- "size": 23820,
27487
- "path": "../public/_nuxt/eb-garamond-latin-400-normal.BCNrxLz_.woff2"
27689
+ "/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
27690
+ "type": "font/woff",
27691
+ "etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
27692
+ "mtime": "2026-09-04T04:30:50.572Z",
27693
+ "size": 28608,
27694
+ "path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
27488
27695
  },
27489
27696
  "/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2": {
27490
27697
  "type": "font/woff2",
27491
27698
  "etag": "\"b19c-7qms9anmdJJsBixQTHSocgV31Qk\"",
27492
- "mtime": "2026-09-03T17:15:46.504Z",
27699
+ "mtime": "2026-09-04T04:30:50.572Z",
27493
27700
  "size": 45468,
27494
27701
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.V7s3nWfX.woff2"
27495
27702
  },
27496
- "/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff": {
27703
+ "/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
27497
27704
  "type": "font/woff",
27498
- "etag": "\"6fc0-tKFcVMt7ocp7dmWyG6/kxtP5mKY\"",
27499
- "mtime": "2026-09-03T17:15:46.504Z",
27500
- "size": 28608,
27501
- "path": "../public/_nuxt/eb-garamond-latin-400-normal.maQnHeKB.woff"
27705
+ "etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
27706
+ "mtime": "2026-09-04T04:30:50.572Z",
27707
+ "size": 76612,
27708
+ "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
27709
+ },
27710
+ "/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
27711
+ "type": "font/woff2",
27712
+ "etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
27713
+ "mtime": "2026-09-04T04:30:50.573Z",
27714
+ "size": 6268,
27715
+ "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
27502
27716
  },
27503
27717
  "/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff": {
27504
27718
  "type": "font/woff",
27505
27719
  "etag": "\"f5b8-o98RIl4uKzIPJHZZpEI+mI17K3c\"",
27506
- "mtime": "2026-09-03T17:15:46.504Z",
27720
+ "mtime": "2026-09-04T04:30:50.572Z",
27507
27721
  "size": 62904,
27508
27722
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-italic.DUSsnRSD.woff"
27509
27723
  },
27510
- "/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff": {
27511
- "type": "font/woff",
27512
- "etag": "\"12b44-jg/K3aZca4XOngCAf1Jh47/0cj8\"",
27513
- "mtime": "2026-09-03T17:15:46.505Z",
27514
- "size": 76612,
27515
- "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.B4EmgUmt.woff"
27516
- },
27517
27724
  "/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2": {
27518
27725
  "type": "font/woff2",
27519
27726
  "etag": "\"de84-qKZ/sgxlZLRv1TmEnWR30Cc4wfw\"",
27520
- "mtime": "2026-09-03T17:15:46.505Z",
27727
+ "mtime": "2026-09-04T04:30:50.573Z",
27521
27728
  "size": 56964,
27522
27729
  "path": "../public/_nuxt/eb-garamond-latin-ext-400-normal.o4A__6QZ.woff2"
27523
27730
  },
27524
- "/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2": {
27525
- "type": "font/woff2",
27526
- "etag": "\"187c-Wj36AOh9OjwDZT5W3eeao1D/NT4\"",
27527
- "mtime": "2026-09-03T17:15:46.505Z",
27528
- "size": 6268,
27529
- "path": "../public/_nuxt/eb-garamond-vietnamese-400-italic.DQ8HKnks.woff2"
27530
- },
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-03T17:15:46.505Z",
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
- "/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff": {
27539
- "type": "font/woff",
27540
- "etag": "\"1e50-PGVIQbsmhTvI1h5aIhavpIQl8z4\"",
27541
- "mtime": "2026-09-03T17:15:46.506Z",
27542
- "size": 7760,
27543
- "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
27544
- },
27545
27738
  "/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2": {
27546
27739
  "type": "font/woff2",
27547
27740
  "etag": "\"183c-arAHcc3MmJQ6+OtYVThlERUqDQQ\"",
27548
- "mtime": "2026-09-03T17:15:46.506Z",
27741
+ "mtime": "2026-09-04T04:30:50.573Z",
27549
27742
  "size": 6204,
27550
27743
  "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.CLvJdMEL.woff2"
27551
27744
  },
27745
+ "/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff": {
27746
+ "type": "font/woff",
27747
+ "etag": "\"1e50-PGVIQbsmhTvI1h5aIhavpIQl8z4\"",
27748
+ "mtime": "2026-09-04T04:30:50.573Z",
27749
+ "size": 7760,
27750
+ "path": "../public/_nuxt/eb-garamond-vietnamese-400-normal.ifvNSiWx.woff"
27751
+ },
27552
27752
  "/_nuxt/eHGLpQSg2.js": {
27553
27753
  "type": "text/javascript; charset=utf-8",
27554
27754
  "etag": "\"53-ZhaD2u1M9e+y/KP/l2gUqGdFFkk\"",
27555
- "mtime": "2026-09-03T17:15:46.495Z",
27755
+ "mtime": "2026-09-04T04:30:50.565Z",
27556
27756
  "size": 83,
27557
27757
  "path": "../public/_nuxt/eHGLpQSg2.js"
27558
27758
  },
27559
- "/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2": {
27560
- "type": "font/woff2",
27561
- "etag": "\"1cfc-yYSDXNlt/tTRaj6rJo8ZMqvY7pQ\"",
27562
- "mtime": "2026-09-03T17:15:46.506Z",
27563
- "size": 7420,
27564
- "path": "../public/_nuxt/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2"
27565
- },
27566
27759
  "/_nuxt/entry.DvlXlPwx.css": {
27567
27760
  "type": "text/css; charset=utf-8",
27568
27761
  "etag": "\"1bcd0-/fTe7O7UH4UOwZFN/tKX/4uF57o\"",
27569
- "mtime": "2026-09-03T17:15:46.506Z",
27762
+ "mtime": "2026-09-04T04:30:50.573Z",
27570
27763
  "size": 113872,
27571
27764
  "path": "../public/_nuxt/entry.DvlXlPwx.css"
27572
27765
  },
27573
27766
  "/_nuxt/geist-cyrillic-wght-normal.BEAKL7Jp.woff2": {
27574
27767
  "type": "font/woff2",
27575
27768
  "etag": "\"3aec-5kpQSZEtAzzU5kdiuro3Zr2YR54\"",
27576
- "mtime": "2026-09-03T17:15:46.506Z",
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-03T17:15:46.507Z",
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-03T17:15:46.507Z",
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
  },
27594
- "/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
27787
+ "/_nuxt/geist-latin-ext-wght-normal.DC-KSUi6.woff2": {
27595
27788
  "type": "font/woff2",
27596
- "etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
27597
- "mtime": "2026-09-03T17:15:46.507Z",
27598
- "size": 29400,
27599
- "path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.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
+ },
27794
+ "/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2": {
27795
+ "type": "font/woff2",
27796
+ "etag": "\"72d8-9J+D7/6th5UzRxIgoFX9awJv47A\"",
27797
+ "mtime": "2026-09-04T04:30:50.574Z",
27798
+ "size": 29400,
27799
+ "path": "../public/_nuxt/geist-latin-wght-normal.BgDaEnEv.woff2"
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"
27600
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-03T17:15:46.507Z",
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
27815
  "/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2": {
27609
27816
  "type": "font/woff2",
27610
27817
  "etag": "\"5a58-jDy+14PX7OhwqFZsiKzuRax9xZ8\"",
27611
- "mtime": "2026-09-03T17:15:46.508Z",
27818
+ "mtime": "2026-09-04T04:30:50.575Z",
27612
27819
  "size": 23128,
27613
27820
  "path": "../public/_nuxt/geist-mono-latin-wght-normal.XN7g48iV.woff2"
27614
27821
  },
27615
- "/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2": {
27616
- "type": "font/woff2",
27617
- "etag": "\"328c-3kQUs7xjzfvJdLvI58iU6DHlynA\"",
27618
- "mtime": "2026-09-03T17:15:46.507Z",
27619
- "size": 12940,
27620
- "path": "../public/_nuxt/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2"
27621
- },
27622
27822
  "/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2": {
27623
27823
  "type": "font/woff2",
27624
27824
  "etag": "\"16b4-aZoLOGWoEYW7gmwZamfz5kTfFco\"",
27625
- "mtime": "2026-09-03T17:15:46.508Z",
27825
+ "mtime": "2026-09-04T04:30:50.575Z",
27626
27826
  "size": 5812,
27627
27827
  "path": "../public/_nuxt/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2"
27628
27828
  },
27629
27829
  "/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2": {
27630
27830
  "type": "font/woff2",
27631
27831
  "etag": "\"1e10-mpU2OlFk4DakDO4paRfgJ2LHDsM\"",
27632
- "mtime": "2026-09-03T17:15:46.508Z",
27832
+ "mtime": "2026-09-04T04:30:50.575Z",
27633
27833
  "size": 7696,
27634
27834
  "path": "../public/_nuxt/geist-mono-vietnamese-wght-normal.DadHysG0.woff2"
27635
27835
  },
27636
27836
  "/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2": {
27637
27837
  "type": "font/woff2",
27638
27838
  "etag": "\"1f44-6MZ7/PEEOeDVF0eHI650KpwKQV8\"",
27639
- "mtime": "2026-09-03T17:15:46.508Z",
27839
+ "mtime": "2026-09-04T04:30:50.575Z",
27640
27840
  "size": 8004,
27641
27841
  "path": "../public/_nuxt/geist-vietnamese-wght-normal.6IgcOCM7.woff2"
27642
27842
  },
27643
27843
  "/_nuxt/GP2wXyuY.js": {
27644
27844
  "type": "text/javascript; charset=utf-8",
27645
27845
  "etag": "\"3815-ylIVCg5f2owyOH6pRAUqhvrJO/4\"",
27646
- "mtime": "2026-09-03T17:15:46.493Z",
27846
+ "mtime": "2026-09-04T04:30:50.562Z",
27647
27847
  "size": 14357,
27648
27848
  "path": "../public/_nuxt/GP2wXyuY.js"
27649
27849
  },
27650
27850
  "/_nuxt/HclGiUj8.js": {
27651
27851
  "type": "text/javascript; charset=utf-8",
27652
27852
  "etag": "\"4bb-OjUbx7m0dPDFUkNfZ4BuUs+1sHI\"",
27653
- "mtime": "2026-09-03T17:15:46.493Z",
27853
+ "mtime": "2026-09-04T04:30:50.563Z",
27654
27854
  "size": 1211,
27655
27855
  "path": "../public/_nuxt/HclGiUj8.js"
27656
27856
  },
27657
27857
  "/_nuxt/HWXLx5Hz.js": {
27658
27858
  "type": "text/javascript; charset=utf-8",
27659
27859
  "etag": "\"3339-T0Y5onZ5wyZwFT6zTIO03qyuPeQ\"",
27660
- "mtime": "2026-09-03T17:15:46.493Z",
27860
+ "mtime": "2026-09-04T04:30:50.563Z",
27661
27861
  "size": 13113,
27662
27862
  "path": "../public/_nuxt/HWXLx5Hz.js"
27663
27863
  },
27664
27864
  "/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2": {
27665
27865
  "type": "font/woff2",
27666
27866
  "etag": "\"20a4-mDbzFbXDuciYuRDdYbcJkcocaWU\"",
27667
- "mtime": "2026-09-03T17:15:46.509Z",
27867
+ "mtime": "2026-09-04T04:30:50.575Z",
27668
27868
  "size": 8356,
27669
27869
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2"
27670
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-03T17:15:46.509Z",
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-03T17:15:46.509Z",
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
- "/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
27686
- "type": "font/woff2",
27687
- "etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
27688
- "mtime": "2026-09-03T17:15:46.509Z",
27689
- "size": 9352,
27690
- "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
27691
- },
27692
27885
  "/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2": {
27693
27886
  "type": "font/woff2",
27694
27887
  "etag": "\"210c-yqAnW+098RkHUvQzwj27Jo9sIUc\"",
27695
- "mtime": "2026-09-03T17:15:46.509Z",
27888
+ "mtime": "2026-09-04T04:30:50.576Z",
27696
27889
  "size": 8460,
27697
27890
  "path": "../public/_nuxt/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2"
27698
27891
  },
27892
+ "/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2": {
27893
+ "type": "font/woff2",
27894
+ "etag": "\"2488-WHfw+ZaOHy8HhYaV0AzfKZ8dozA\"",
27895
+ "mtime": "2026-09-04T04:30:50.576Z",
27896
+ "size": 9352,
27897
+ "path": "../public/_nuxt/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2"
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-03T17:15:46.510Z",
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-03T17:15:46.510Z",
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-03T17:15:46.511Z",
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-03T17:15:46.511Z",
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-03T17:15:46.511Z",
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-03T17:15:46.511Z",
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-03T17:15:46.511Z",
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-03T17:15:46.512Z",
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-03T17:15:46.512Z",
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-03T17:15:46.512Z",
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-03T17:15:46.512Z",
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-03T17:15:46.513Z",
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-03T17:15:46.513Z",
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-03T17:15:46.513Z",
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-03T17:15:46.513Z",
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-03T17:15:46.514Z",
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-03T17:15:46.514Z",
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
  },
27818
- "/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
27819
- "type": "font/woff",
27820
- "etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
27821
- "mtime": "2026-09-03T17:15:46.515Z",
27822
- "size": 11832,
27823
- "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
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"
27824
28017
  },
27825
28018
  "/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2": {
27826
28019
  "type": "font/woff2",
27827
28020
  "etag": "\"37f8-5XYRqKuMO2rN5QZqfj4VW8r2jSQ\"",
27828
- "mtime": "2026-09-03T17:15:46.514Z",
28021
+ "mtime": "2026-09-04T04:30:50.579Z",
27829
28022
  "size": 14328,
27830
28023
  "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2"
27831
28024
  },
27832
28025
  "/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2": {
27833
28026
  "type": "font/woff2",
27834
28027
  "etag": "\"16ec-bIkS18/YaTiWdOzfzp4pFXvLmqQ\"",
27835
- "mtime": "2026-09-03T17:15:46.515Z",
28028
+ "mtime": "2026-09-04T04:30:50.579Z",
27836
28029
  "size": 5868,
27837
28030
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2"
27838
28031
  },
28032
+ "/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff": {
28033
+ "type": "font/woff",
28034
+ "etag": "\"2e38-fOmVENNzEJaYqxODn6K5NAbrEJk\"",
28035
+ "mtime": "2026-09-04T04:30:50.579Z",
28036
+ "size": 11832,
28037
+ "path": "../public/_nuxt/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff"
28038
+ },
27839
28039
  "/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff": {
27840
28040
  "type": "font/woff",
27841
28041
  "etag": "\"15f4-LdRX2sBB3T5WDAsZLCwBlsMYXPw\"",
27842
- "mtime": "2026-09-03T17:15:46.515Z",
28042
+ "mtime": "2026-09-04T04:30:50.579Z",
27843
28043
  "size": 5620,
27844
28044
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff"
27845
28045
  },
27846
28046
  "/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff": {
27847
28047
  "type": "font/woff",
27848
28048
  "etag": "\"15f0-mGuZIt/ndQFiw5uxmCOkhhWSxi4\"",
27849
- "mtime": "2026-09-03T17:15:46.515Z",
28049
+ "mtime": "2026-09-04T04:30:50.580Z",
27850
28050
  "size": 5616,
27851
28051
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff"
27852
28052
  },
27853
- "/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
27854
- "type": "font/woff2",
27855
- "etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
27856
- "mtime": "2026-09-03T17:15:46.516Z",
27857
- "size": 6932,
27858
- "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
27859
- },
27860
28053
  "/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2": {
27861
28054
  "type": "font/woff2",
27862
28055
  "etag": "\"1798-7VDjg0E2ggd9c0kJDHNRh+Fu5E0\"",
27863
- "mtime": "2026-09-03T17:15:46.516Z",
28056
+ "mtime": "2026-09-04T04:30:50.580Z",
27864
28057
  "size": 6040,
27865
28058
  "path": "../public/_nuxt/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2"
27866
28059
  },
28060
+ "/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2": {
28061
+ "type": "font/woff2",
28062
+ "etag": "\"1b14-ylPjcMKGVc4RbTi2G25N0MSlVNo\"",
28063
+ "mtime": "2026-09-04T04:30:50.580Z",
28064
+ "size": 6932,
28065
+ "path": "../public/_nuxt/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2"
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-03T17:15:46.516Z",
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-03T17:15:46.495Z",
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-03T17:15:46.495Z",
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-03T17:15:46.496Z",
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-03T17:15:46.516Z",
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-03T17:15:46.516Z",
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-03T17:15:46.494Z",
28105
+ "mtime": "2026-09-04T04:30:50.563Z",
27913
28106
  "size": 2725,
27914
28107
  "path": "../public/_nuxt/NIM0Wglj2.js"
27915
28108
  },
27916
- "/_nuxt/OwJ1LJkF.js": {
27917
- "type": "text/javascript; charset=utf-8",
27918
- "etag": "\"3488-ohWEJm0u4abl3TRn0oHqUL2oU3A\"",
27919
- "mtime": "2026-09-03T17:15:46.494Z",
27920
- "size": 13448,
27921
- "path": "../public/_nuxt/OwJ1LJkF.js"
27922
- },
27923
28109
  "/_nuxt/OmpTerminalPanel.Bc9GjNU5.css": {
27924
28110
  "type": "text/css; charset=utf-8",
27925
28111
  "etag": "\"10d0-KVD3g2aNdpoQxACTChylqWCAIqY\"",
27926
- "mtime": "2026-09-03T17:15:46.497Z",
28112
+ "mtime": "2026-09-04T04:30:50.567Z",
27927
28113
  "size": 4304,
27928
28114
  "path": "../public/_nuxt/OmpTerminalPanel.Bc9GjNU5.css"
27929
28115
  },
28116
+ "/_nuxt/OwJ1LJkF.js": {
28117
+ "type": "text/javascript; charset=utf-8",
28118
+ "etag": "\"3488-ohWEJm0u4abl3TRn0oHqUL2oU3A\"",
28119
+ "mtime": "2026-09-04T04:30:50.563Z",
28120
+ "size": 13448,
28121
+ "path": "../public/_nuxt/OwJ1LJkF.js"
28122
+ },
27930
28123
  "/_nuxt/pages.CytEOfUs.css": {
27931
28124
  "type": "text/css; charset=utf-8",
27932
28125
  "etag": "\"1f78-Zc87Z5OhCuyS/CdNTE5IMJgqhH0\"",
27933
- "mtime": "2026-09-03T17:15:46.517Z",
28126
+ "mtime": "2026-09-04T04:30:50.581Z",
27934
28127
  "size": 8056,
27935
28128
  "path": "../public/_nuxt/pages.CytEOfUs.css"
27936
28129
  },
27937
28130
  "/_nuxt/plugins.FTm0PcEe.css": {
27938
28131
  "type": "text/css; charset=utf-8",
27939
28132
  "etag": "\"9bd-tTmniaf8rX8elG1Badc6OjJVtAk\"",
27940
- "mtime": "2026-09-03T17:15:46.517Z",
28133
+ "mtime": "2026-09-04T04:30:50.581Z",
27941
28134
  "size": 2493,
27942
28135
  "path": "../public/_nuxt/plugins.FTm0PcEe.css"
27943
28136
  },
27944
28137
  "/_nuxt/PQLnLxYe.js": {
27945
28138
  "type": "text/javascript; charset=utf-8",
27946
28139
  "etag": "\"1359-2EI4UdgR3Dg4/iuC63SVUdU5cAg\"",
27947
- "mtime": "2026-09-03T17:15:46.494Z",
28140
+ "mtime": "2026-09-04T04:30:50.564Z",
27948
28141
  "size": 4953,
27949
28142
  "path": "../public/_nuxt/PQLnLxYe.js"
27950
28143
  },
27951
28144
  "/_nuxt/pRQri7vQ2.js": {
27952
28145
  "type": "text/javascript; charset=utf-8",
27953
28146
  "etag": "\"8b9-3wDeSjR8e4ZgPLVXOMKGsaIsPEk\"",
27954
- "mtime": "2026-09-03T17:15:46.496Z",
28147
+ "mtime": "2026-09-04T04:30:50.566Z",
27955
28148
  "size": 2233,
27956
28149
  "path": "../public/_nuxt/pRQri7vQ2.js"
27957
28150
  },
27958
28151
  "/_nuxt/RYFtK4qZ2.js": {
27959
28152
  "type": "text/javascript; charset=utf-8",
27960
28153
  "etag": "\"594c-ZHrAodAyz6fWAruZCqluWn052zA\"",
27961
- "mtime": "2026-09-03T17:15:46.494Z",
28154
+ "mtime": "2026-09-04T04:30:50.564Z",
27962
28155
  "size": 22860,
27963
28156
  "path": "../public/_nuxt/RYFtK4qZ2.js"
27964
28157
  },
27965
28158
  "/_nuxt/rzGB_ojX.js": {
27966
28159
  "type": "text/javascript; charset=utf-8",
27967
28160
  "etag": "\"156ba-Me1pF0LZxFasl9k2mKSJdM5HmgI\"",
27968
- "mtime": "2026-09-03T17:15:46.496Z",
28161
+ "mtime": "2026-09-04T04:30:50.566Z",
27969
28162
  "size": 87738,
27970
28163
  "path": "../public/_nuxt/rzGB_ojX.js"
27971
28164
  },
27972
28165
  "/_nuxt/R_WxTozV2.js": {
27973
28166
  "type": "text/javascript; charset=utf-8",
27974
28167
  "etag": "\"f01-WXNbWQm5WyeJtTA6i6wwMxnI1SQ\"",
27975
- "mtime": "2026-09-03T17:15:46.494Z",
28168
+ "mtime": "2026-09-04T04:30:50.564Z",
27976
28169
  "size": 3841,
27977
28170
  "path": "../public/_nuxt/R_WxTozV2.js"
27978
28171
  },
27979
- "/_nuxt/teams.B8JNbUZg.css": {
28172
+ "/_nuxt/settings.DeRNNUcP.css": {
27980
28173
  "type": "text/css; charset=utf-8",
27981
- "etag": "\"6b7-7gKsNrCHeSx0FLL3kd7/KcsQBgw\"",
27982
- "mtime": "2026-09-03T17:15:46.517Z",
27983
- "size": 1719,
27984
- "path": "../public/_nuxt/teams.B8JNbUZg.css"
28174
+ "etag": "\"14e1-E7dYiYwz16rJpF2sfkfQq3pGU1c\"",
28175
+ "mtime": "2026-09-04T04:30:50.581Z",
28176
+ "size": 5345,
28177
+ "path": "../public/_nuxt/settings.DeRNNUcP.css"
27985
28178
  },
27986
28179
  "/_nuxt/tokens.CWOTXM-Z.css": {
27987
28180
  "type": "text/css; charset=utf-8",
27988
28181
  "etag": "\"9cd-tzkC/9SAq2Z51cXkqrDQz0rVzMo\"",
27989
- "mtime": "2026-09-03T17:15:46.517Z",
28182
+ "mtime": "2026-09-04T04:30:50.581Z",
27990
28183
  "size": 2509,
27991
28184
  "path": "../public/_nuxt/tokens.CWOTXM-Z.css"
27992
28185
  },
27993
- "/_nuxt/settings.DeRNNUcP.css": {
28186
+ "/_nuxt/teams.B8JNbUZg.css": {
27994
28187
  "type": "text/css; charset=utf-8",
27995
- "etag": "\"14e1-E7dYiYwz16rJpF2sfkfQq3pGU1c\"",
27996
- "mtime": "2026-09-03T17:15:46.517Z",
27997
- "size": 5345,
27998
- "path": "../public/_nuxt/settings.DeRNNUcP.css"
28188
+ "etag": "\"6b7-7gKsNrCHeSx0FLL3kd7/KcsQBgw\"",
28189
+ "mtime": "2026-09-04T04:30:50.581Z",
28190
+ "size": 1719,
28191
+ "path": "../public/_nuxt/teams.B8JNbUZg.css"
27999
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-03T17:15:46.518Z",
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-03T17:15:46.518Z",
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/tpDMVY5w.js": {
28207
+ "/_nuxt/uBbDCfTz.js": {
28015
28208
  "type": "text/javascript; charset=utf-8",
28016
- "etag": "\"664-ekubo41V9eeP5n5LTTAtpwok4f8\"",
28017
- "mtime": "2026-09-03T17:15:46.496Z",
28018
- "size": 1636,
28019
- "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"
28020
28213
  },
28021
28214
  "/_nuxt/TownView.Bt33bo1M.css": {
28022
28215
  "type": "text/css; charset=utf-8",
28023
28216
  "etag": "\"11b2a-U9nEZgZfdHWwB/sAXc+Gvj7+hD4\"",
28024
- "mtime": "2026-09-03T17:15:46.498Z",
28217
+ "mtime": "2026-09-04T04:30:50.567Z",
28025
28218
  "size": 72490,
28026
28219
  "path": "../public/_nuxt/TownView.Bt33bo1M.css"
28027
28220
  },
28028
- "/_nuxt/users.D8lcLE62.css": {
28029
- "type": "text/css; charset=utf-8",
28030
- "etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
28031
- "mtime": "2026-09-03T17:15:46.518Z",
28032
- "size": 759,
28033
- "path": "../public/_nuxt/users.D8lcLE62.css"
28034
- },
28035
28221
  "/_nuxt/ubPfs9mQ.js": {
28036
28222
  "type": "text/javascript; charset=utf-8",
28037
28223
  "etag": "\"1dc4-yIIKAQ37KJqWQcdDI1J/9WfoaDc\"",
28038
- "mtime": "2026-09-03T17:15:46.497Z",
28224
+ "mtime": "2026-09-04T04:30:50.566Z",
28039
28225
  "size": 7620,
28040
28226
  "path": "../public/_nuxt/ubPfs9mQ.js"
28041
28227
  },
28042
- "/_nuxt/uBbDCfTz.js": {
28043
- "type": "text/javascript; charset=utf-8",
28044
- "etag": "\"2435-2SmfQO0WbbFYq5CVz6TT/4+7jS4\"",
28045
- "mtime": "2026-09-03T17:15:46.497Z",
28046
- "size": 9269,
28047
- "path": "../public/_nuxt/uBbDCfTz.js"
28228
+ "/_nuxt/users.D8lcLE62.css": {
28229
+ "type": "text/css; charset=utf-8",
28230
+ "etag": "\"2f7-vPqmiQmG+gTnKc25vyRnF3nNTy0\"",
28231
+ "mtime": "2026-09-04T04:30:50.582Z",
28232
+ "size": 759,
28233
+ "path": "../public/_nuxt/users.D8lcLE62.css"
28234
+ },
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-03T17:15:46.495Z",
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-03T17:15:46.518Z",
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-03T17:15:46.495Z",
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-03T17:15:46.495Z",
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-03T17:15:46.498Z",
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-03T17:15:46.498Z",
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-03T17:15:46.498Z",
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
- "/_nuxt/builds/latest.json": {
28120
- "type": "application/json",
28121
- "etag": "\"47-y3j3gC+KP9maovUTLXVQLCiNFr0\"",
28122
- "mtime": "2026-09-03T17:15:51.629Z",
28123
- "size": 71,
28124
- "path": "../public/_nuxt/builds/latest.json"
28125
- },
28126
28326
  "/scene/background/cyber-town-background.svg": {
28127
28327
  "type": "image/svg+xml",
28128
28328
  "etag": "\"1656-Q8xWIs77K5i5HJYRdMCDYSQhkvs\"",
@@ -28130,12 +28330,19 @@ const assets = {
28130
28330
  "size": 5718,
28131
28331
  "path": "../public/scene/background/cyber-town-background.svg"
28132
28332
  },
28133
- "/assets/game/devices/caster.glb": {
28134
- "type": "model/gltf-binary",
28135
- "etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
28136
- "mtime": "2026-08-27T07:03:12.510Z",
28137
- "size": 22644,
28138
- "path": "../public/assets/game/devices/caster.glb"
28333
+ "/_nuxt/builds/latest.json": {
28334
+ "type": "application/json",
28335
+ "etag": "\"47-9VUGfjLM4DdF2UyA8AG+C/asCjM\"",
28336
+ "mtime": "2026-09-04T04:30:54.612Z",
28337
+ "size": 71,
28338
+ "path": "../public/_nuxt/builds/latest.json"
28339
+ },
28340
+ "/assets/game/character/bot.png": {
28341
+ "type": "image/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"
28139
28346
  },
28140
28347
  "/assets/game/tuxmon-sample-32px-extruded.png": {
28141
28348
  "type": "image/png",
@@ -28144,89 +28351,61 @@ const assets = {
28144
28351
  "size": 192008,
28145
28352
  "path": "../public/assets/game/tuxmon-sample-32px-extruded.png"
28146
28353
  },
28147
- "/assets/game/devices/device-console.glb": {
28354
+ "/assets/game/character/device-3d.glb": {
28148
28355
  "type": "model/gltf-binary",
28149
- "etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
28150
- "mtime": "2026-08-26T05:23:14.559Z",
28151
- "size": 14724,
28152
- "path": "../public/assets/game/devices/device-console.glb"
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"
28153
28360
  },
28154
- "/assets/game/devices/agv.glb": {
28361
+ "/assets/game/character/hero-3d.glb": {
28155
28362
  "type": "model/gltf-binary",
28156
- "etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
28157
- "mtime": "2026-08-27T07:03:12.531Z",
28158
- "size": 45292,
28159
- "path": "../public/assets/game/devices/agv.glb"
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"
28160
28367
  },
28161
- "/assets/game/devices/device-robot-arm.glb": {
28368
+ "/assets/game/character/hero-anime-1.glb": {
28162
28369
  "type": "model/gltf-binary",
28163
- "etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
28164
- "mtime": "2026-08-26T05:23:14.560Z",
28165
- "size": 14332,
28166
- "path": "../public/assets/game/devices/device-robot-arm.glb"
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"
28167
28374
  },
28168
- "/assets/game/devices/device-scanner.glb": {
28375
+ "/assets/game/character/hero-anime-2.glb": {
28169
28376
  "type": "model/gltf-binary",
28170
- "etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
28171
- "mtime": "2026-08-26T05:23:14.560Z",
28172
- "size": 10464,
28173
- "path": "../public/assets/game/devices/device-scanner.glb"
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"
28174
28381
  },
28175
- "/assets/game/devices/extruder.glb": {
28382
+ "/assets/game/character/hero-anime-3.glb": {
28176
28383
  "type": "model/gltf-binary",
28177
- "etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
28178
- "mtime": "2026-08-27T07:03:12.506Z",
28179
- "size": 98596,
28180
- "path": "../public/assets/game/devices/extruder.glb"
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"
28181
28388
  },
28182
- "/assets/game/devices/pump.glb": {
28389
+ "/assets/game/character/hero-anime-4.glb": {
28183
28390
  "type": "model/gltf-binary",
28184
- "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
28185
- "mtime": "2026-08-25T12:20:54.512Z",
28186
- "size": 19400,
28187
- "path": "../public/assets/game/devices/pump.glb"
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"
28188
28395
  },
28189
- "/assets/game/devices/power-cabinet.glb": {
28190
- "type": "model/gltf-binary",
28191
- "etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
28192
- "mtime": "2026-08-27T07:03:12.534Z",
28193
- "size": 21744,
28194
- "path": "../public/assets/game/devices/power-cabinet.glb"
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"
28195
28402
  },
28196
- "/assets/game/devices/mdo.glb": {
28197
- "type": "model/gltf-binary",
28198
- "etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
28199
- "mtime": "2026-08-27T07:03:12.518Z",
28200
- "size": 78564,
28201
- "path": "../public/assets/game/devices/mdo.glb"
28202
- },
28203
- "/assets/game/devices/tdo.glb": {
28204
- "type": "model/gltf-binary",
28205
- "etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
28206
- "mtime": "2026-08-27T07:03:12.523Z",
28207
- "size": 57612,
28208
- "path": "../public/assets/game/devices/tdo.glb"
28209
- },
28210
- "/assets/game/devices/thickness-scanner.glb": {
28211
- "type": "model/gltf-binary",
28212
- "etag": "\"3480-WMTbMzRrl/6AJPzEIPhRW9xPugA\"",
28213
- "mtime": "2026-08-27T07:03:12.527Z",
28214
- "size": 13440,
28215
- "path": "../public/assets/game/devices/thickness-scanner.glb"
28216
- },
28217
- "/_nuxt/zwdqvGN_.js": {
28218
- "type": "text/javascript; charset=utf-8",
28219
- "etag": "\"8cc4a-velpbz4Zy5J9JIXAMvOLCFTQOJQ\"",
28220
- "mtime": "2026-09-03T17:15:46.497Z",
28221
- "size": 576586,
28222
- "path": "../public/_nuxt/zwdqvGN_.js"
28223
- },
28224
- "/assets/game/devices/winder.glb": {
28225
- "type": "model/gltf-binary",
28226
- "etag": "\"9084-N9S2enupsA8WyhEHtkIgQ+RBDV4\"",
28227
- "mtime": "2026-08-27T07:03:12.526Z",
28228
- "size": 36996,
28229
- "path": "../public/assets/game/devices/winder.glb"
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"
28230
28409
  },
28231
28410
  "/assets/game/npc/boltnu-sheet.png": {
28232
28411
  "type": "image/png",
@@ -28249,6 +28428,13 @@ const assets = {
28249
28428
  "size": 1926,
28250
28429
  "path": "../public/assets/game/npc/rockitten-sheet.png"
28251
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
+ },
28252
28438
  "/assets/game/npc/tux-sheet.png": {
28253
28439
  "type": "image/png",
28254
28440
  "etag": "\"912-kf4+Q7EukO60VT6vlziy5RrzuUo\"",
@@ -28256,62 +28442,6 @@ const assets = {
28256
28442
  "size": 2322,
28257
28443
  "path": "../public/assets/game/npc/tux-sheet.png"
28258
28444
  },
28259
- "/assets/game/character/bot.png": {
28260
- "type": "image/png",
28261
- "etag": "\"36fe-Ke8vj83Dinp8fFaRQQBfBsTGI/8\"",
28262
- "mtime": "2026-08-25T12:20:54.510Z",
28263
- "size": 14078,
28264
- "path": "../public/assets/game/character/bot.png"
28265
- },
28266
- "/assets/game/character/hero-3d.glb": {
28267
- "type": "model/gltf-binary",
28268
- "etag": "\"8494-Uv+bxnHu3YGJp7Es3lHkob25Y08\"",
28269
- "mtime": "2026-08-25T12:20:54.511Z",
28270
- "size": 33940,
28271
- "path": "../public/assets/game/character/hero-3d.glb"
28272
- },
28273
- "/assets/game/character/device-3d.glb": {
28274
- "type": "model/gltf-binary",
28275
- "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
28276
- "mtime": "2026-08-25T12:20:54.511Z",
28277
- "size": 19400,
28278
- "path": "../public/assets/game/character/device-3d.glb"
28279
- },
28280
- "/assets/game/character/hero-anime-1.glb": {
28281
- "type": "model/gltf-binary",
28282
- "etag": "\"1044c-AUMAdrW4S6OKEsUeAcR5c50fyKs\"",
28283
- "mtime": "2026-08-26T05:23:14.557Z",
28284
- "size": 66636,
28285
- "path": "../public/assets/game/character/hero-anime-1.glb"
28286
- },
28287
- "/assets/game/character/hero-anime-2.glb": {
28288
- "type": "model/gltf-binary",
28289
- "etag": "\"1058c-J91UapGlsJg/5ODN8k8c7rSNpzw\"",
28290
- "mtime": "2026-08-26T05:23:14.558Z",
28291
- "size": 66956,
28292
- "path": "../public/assets/game/character/hero-anime-2.glb"
28293
- },
28294
- "/assets/game/character/hero-anime-3.glb": {
28295
- "type": "model/gltf-binary",
28296
- "etag": "\"1057c-jREeKLYoS8AFWzuIOgOSr6CzehU\"",
28297
- "mtime": "2026-08-26T05:23:14.558Z",
28298
- "size": 66940,
28299
- "path": "../public/assets/game/character/hero-anime-3.glb"
28300
- },
28301
- "/assets/game/character/hero-anime-4.glb": {
28302
- "type": "model/gltf-binary",
28303
- "etag": "\"10544-H4WjfazfTQ6hfF2SkK2BfHU27i8\"",
28304
- "mtime": "2026-08-26T05:23:14.558Z",
28305
- "size": 66884,
28306
- "path": "../public/assets/game/character/hero-anime-4.glb"
28307
- },
28308
- "/assets/game/character/knight.png": {
28309
- "type": "image/png",
28310
- "etag": "\"3b37-Wyixufl/LcqKO/AeTLuGvzi4goQ\"",
28311
- "mtime": "2026-08-25T12:20:54.511Z",
28312
- "size": 15159,
28313
- "path": "../public/assets/game/character/knight.png"
28314
- },
28315
28445
  "/assets/game/player/misa-back-walk.000.png": {
28316
28446
  "type": "image/png",
28317
28447
  "etag": "\"157-/Sm0qrBJSHEFTGYwuSqnzRaX3Jk\"",
@@ -28319,13 +28449,6 @@ const assets = {
28319
28449
  "size": 343,
28320
28450
  "path": "../public/assets/game/player/misa-back-walk.000.png"
28321
28451
  },
28322
- "/assets/game/character/mage.png": {
28323
- "type": "image/png",
28324
- "etag": "\"3832-juipuJuMJceZrarvR4w7OKgQejA\"",
28325
- "mtime": "2026-08-25T12:20:54.512Z",
28326
- "size": 14386,
28327
- "path": "../public/assets/game/character/mage.png"
28328
- },
28329
28452
  "/assets/game/player/misa-back-walk.001.png": {
28330
28453
  "type": "image/png",
28331
28454
  "etag": "\"15c-PoeNPtRrfApGTf0GzJcdNP59kts\"",
@@ -28340,13 +28463,6 @@ const assets = {
28340
28463
  "size": 343,
28341
28464
  "path": "../public/assets/game/player/misa-back-walk.002.png"
28342
28465
  },
28343
- "/assets/game/player/misa-back.png": {
28344
- "type": "image/png",
28345
- "etag": "\"15c-KwI7aIn2tc/RPUJViRtdOGKZre4\"",
28346
- "mtime": "2026-08-25T12:20:54.515Z",
28347
- "size": 348,
28348
- "path": "../public/assets/game/player/misa-back.png"
28349
- },
28350
28466
  "/assets/game/player/misa-back-walk.003.png": {
28351
28467
  "type": "image/png",
28352
28468
  "etag": "\"15c-L+/hkHDyiQ9FJs5w93pxALzvWEg\"",
@@ -28354,6 +28470,13 @@ const assets = {
28354
28470
  "size": 348,
28355
28471
  "path": "../public/assets/game/player/misa-back-walk.003.png"
28356
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
+ },
28357
28480
  "/assets/game/player/misa-front-walk.000.png": {
28358
28481
  "type": "image/png",
28359
28482
  "etag": "\"152-+euueT0jvK7OjNDmtrdehgkQatE\"",
@@ -28368,26 +28491,26 @@ const assets = {
28368
28491
  "size": 341,
28369
28492
  "path": "../public/assets/game/player/misa-front-walk.001.png"
28370
28493
  },
28371
- "/assets/game/player/misa-front-walk.002.png": {
28494
+ "/assets/game/player/misa-front.png": {
28372
28495
  "type": "image/png",
28373
- "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
28374
- "mtime": "2026-08-25T12:20:54.515Z",
28496
+ "etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
28497
+ "mtime": "2026-08-25T12:20:54.516Z",
28375
28498
  "size": 341,
28376
- "path": "../public/assets/game/player/misa-front-walk.002.png"
28499
+ "path": "../public/assets/game/player/misa-front.png"
28377
28500
  },
28378
- "/assets/game/player/misa-front-walk.003.png": {
28501
+ "/assets/game/player/misa-front-walk.002.png": {
28379
28502
  "type": "image/png",
28380
- "etag": "\"155-JVYjyw5Raquze4YHeYII+iXfJx4\"",
28503
+ "etag": "\"155-UzIsnRRYoGpmHf5w9T7CLy/0ubw\"",
28381
28504
  "mtime": "2026-08-25T12:20:54.515Z",
28382
28505
  "size": 341,
28383
- "path": "../public/assets/game/player/misa-front-walk.003.png"
28506
+ "path": "../public/assets/game/player/misa-front-walk.002.png"
28384
28507
  },
28385
- "/assets/game/player/misa-front.png": {
28508
+ "/assets/game/player/misa-left-walk.001.png": {
28386
28509
  "type": "image/png",
28387
- "etag": "\"155-5X/+kju2mVH43N4/093cbqbcr+I\"",
28510
+ "etag": "\"13f-kvFuR3pXnfcL/C63pYoL58iuFOk\"",
28388
28511
  "mtime": "2026-08-25T12:20:54.516Z",
28389
- "size": 341,
28390
- "path": "../public/assets/game/player/misa-front.png"
28512
+ "size": 319,
28513
+ "path": "../public/assets/game/player/misa-left-walk.001.png"
28391
28514
  },
28392
28515
  "/assets/game/player/misa-left-walk.000.png": {
28393
28516
  "type": "image/png",
@@ -28396,12 +28519,12 @@ const assets = {
28396
28519
  "size": 319,
28397
28520
  "path": "../public/assets/game/player/misa-left-walk.000.png"
28398
28521
  },
28399
- "/assets/game/player/misa-left-walk.001.png": {
28522
+ "/assets/game/player/misa-front-walk.003.png": {
28400
28523
  "type": "image/png",
28401
- "etag": "\"13f-kvFuR3pXnfcL/C63pYoL58iuFOk\"",
28402
- "mtime": "2026-08-25T12:20:54.516Z",
28403
- "size": 319,
28404
- "path": "../public/assets/game/player/misa-left-walk.001.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"
28405
28528
  },
28406
28529
  "/assets/game/player/misa-left-walk.002.png": {
28407
28530
  "type": "image/png",
@@ -28424,12 +28547,12 @@ const assets = {
28424
28547
  "size": 319,
28425
28548
  "path": "../public/assets/game/player/misa-left.png"
28426
28549
  },
28427
- "/assets/game/player/misa-right-walk.000.png": {
28550
+ "/assets/game/player/misa-right-walk.002.png": {
28428
28551
  "type": "image/png",
28429
- "etag": "\"12d-LFv0nkkwwOzytOb66XkVjd6tkHE\"",
28430
- "mtime": "2026-08-25T12:20:54.516Z",
28431
- "size": 301,
28432
- "path": "../public/assets/game/player/misa-right-walk.000.png"
28552
+ "etag": "\"12f-3fV+VP6QPPPljfYuG6yhztcSIXc\"",
28553
+ "mtime": "2026-08-25T12:20:54.517Z",
28554
+ "size": 303,
28555
+ "path": "../public/assets/game/player/misa-right-walk.002.png"
28433
28556
  },
28434
28557
  "/assets/game/player/misa-right-walk.001.png": {
28435
28558
  "type": "image/png",
@@ -28438,6 +28561,13 @@ const assets = {
28438
28561
  "size": 302,
28439
28562
  "path": "../public/assets/game/player/misa-right-walk.001.png"
28440
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"
28570
+ },
28441
28571
  "/assets/game/player/misa-right-walk.003.png": {
28442
28572
  "type": "image/png",
28443
28573
  "etag": "\"12e-1Tf+ktOQnj4YEenOBQ+4j9KNxVQ\"",
@@ -28452,19 +28582,89 @@ const assets = {
28452
28582
  "size": 302,
28453
28583
  "path": "../public/assets/game/player/misa-right.png"
28454
28584
  },
28455
- "/assets/game/player/misa-right-walk.002.png": {
28456
- "type": "image/png",
28457
- "etag": "\"12f-3fV+VP6QPPPljfYuG6yhztcSIXc\"",
28458
- "mtime": "2026-08-25T12:20:54.517Z",
28459
- "size": 303,
28460
- "path": "../public/assets/game/player/misa-right-walk.002.png"
28585
+ "/assets/game/devices/caster.glb": {
28586
+ "type": "model/gltf-binary",
28587
+ "etag": "\"5874-Qd988sa7u1y3lgH8K/zhzRLbRbs\"",
28588
+ "mtime": "2026-08-27T07:03:12.510Z",
28589
+ "size": 22644,
28590
+ "path": "../public/assets/game/devices/caster.glb"
28461
28591
  },
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"
28592
+ "/assets/game/devices/agv.glb": {
28593
+ "type": "model/gltf-binary",
28594
+ "etag": "\"b0ec-SGRGNfFN89F7v1GROXKGve7pQqs\"",
28595
+ "mtime": "2026-08-27T07:03:12.531Z",
28596
+ "size": 45292,
28597
+ "path": "../public/assets/game/devices/agv.glb"
28598
+ },
28599
+ "/assets/game/devices/device-console.glb": {
28600
+ "type": "model/gltf-binary",
28601
+ "etag": "\"3984-GibNFJHAqtYWIxLy79rzU1HZAds\"",
28602
+ "mtime": "2026-08-26T05:23:14.559Z",
28603
+ "size": 14724,
28604
+ "path": "../public/assets/game/devices/device-console.glb"
28605
+ },
28606
+ "/assets/game/devices/device-robot-arm.glb": {
28607
+ "type": "model/gltf-binary",
28608
+ "etag": "\"37fc-uBxMDklo0SfaA6KXZIylh/S2p+c\"",
28609
+ "mtime": "2026-08-26T05:23:14.560Z",
28610
+ "size": 14332,
28611
+ "path": "../public/assets/game/devices/device-robot-arm.glb"
28612
+ },
28613
+ "/assets/game/devices/device-scanner.glb": {
28614
+ "type": "model/gltf-binary",
28615
+ "etag": "\"28e0-uKYZaLiZiCedMMozKBOFU14HUSE\"",
28616
+ "mtime": "2026-08-26T05:23:14.560Z",
28617
+ "size": 10464,
28618
+ "path": "../public/assets/game/devices/device-scanner.glb"
28619
+ },
28620
+ "/assets/game/devices/extruder.glb": {
28621
+ "type": "model/gltf-binary",
28622
+ "etag": "\"18124-H6X1eQmFDn6eONUMGU6lGdQafZ8\"",
28623
+ "mtime": "2026-08-27T07:03:12.506Z",
28624
+ "size": 98596,
28625
+ "path": "../public/assets/game/devices/extruder.glb"
28626
+ },
28627
+ "/assets/game/devices/mdo.glb": {
28628
+ "type": "model/gltf-binary",
28629
+ "etag": "\"132e4-EDslgF5+17dSukguA0eZzN4I0+o\"",
28630
+ "mtime": "2026-08-27T07:03:12.518Z",
28631
+ "size": 78564,
28632
+ "path": "../public/assets/game/devices/mdo.glb"
28633
+ },
28634
+ "/assets/game/devices/power-cabinet.glb": {
28635
+ "type": "model/gltf-binary",
28636
+ "etag": "\"54f0-KsrAxig9JTAY5SGKK3jbdJXB6fk\"",
28637
+ "mtime": "2026-08-27T07:03:12.534Z",
28638
+ "size": 21744,
28639
+ "path": "../public/assets/game/devices/power-cabinet.glb"
28640
+ },
28641
+ "/assets/game/devices/pump.glb": {
28642
+ "type": "model/gltf-binary",
28643
+ "etag": "\"4bc8-yAiKZtO+P2bBmqfRvhlxcF0oduE\"",
28644
+ "mtime": "2026-08-25T12:20:54.512Z",
28645
+ "size": 19400,
28646
+ "path": "../public/assets/game/devices/pump.glb"
28647
+ },
28648
+ "/assets/game/devices/tdo.glb": {
28649
+ "type": "model/gltf-binary",
28650
+ "etag": "\"e10c-GdMX+mG/KrSVBzy4EeAPPjFoTqM\"",
28651
+ "mtime": "2026-08-27T07:03:12.523Z",
28652
+ "size": 57612,
28653
+ "path": "../public/assets/game/devices/tdo.glb"
28654
+ },
28655
+ "/assets/game/devices/thickness-scanner.glb": {
28656
+ "type": "model/gltf-binary",
28657
+ "etag": "\"3480-WMTbMzRrl/6AJPzEIPhRW9xPugA\"",
28658
+ "mtime": "2026-08-27T07:03:12.527Z",
28659
+ "size": 13440,
28660
+ "path": "../public/assets/game/devices/thickness-scanner.glb"
28661
+ },
28662
+ "/assets/game/devices/winder.glb": {
28663
+ "type": "model/gltf-binary",
28664
+ "etag": "\"9084-N9S2enupsA8WyhEHtkIgQ+RBDV4\"",
28665
+ "mtime": "2026-08-27T07:03:12.526Z",
28666
+ "size": 36996,
28667
+ "path": "../public/assets/game/devices/winder.glb"
28468
28668
  },
28469
28669
  "/assets/game/wuwa/world-middle.png": {
28470
28670
  "type": "image/png",
@@ -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,20 @@ 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
+ },
28711
+ "/assets/game/wuwa/world-far.png": {
28712
+ "type": "image/png",
28713
+ "etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
28714
+ "mtime": "2026-08-25T12:20:54.522Z",
28715
+ "size": 439185,
28716
+ "path": "../public/assets/game/wuwa/world-far.png"
28717
+ },
28504
28718
  "/assets/game/wuwa/wu-worker-0.png": {
28505
28719
  "type": "image/png",
28506
28720
  "etag": "\"3c59-fILvgyTv9TKRgrI9GQlRhaSR96U\"",
@@ -28508,6 +28722,13 @@ const assets = {
28508
28722
  "size": 15449,
28509
28723
  "path": "../public/assets/game/wuwa/wu-worker-0.png"
28510
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
+ },
28511
28732
  "/assets/game/wuwa/wu-worker-2.png": {
28512
28733
  "type": "image/png",
28513
28734
  "etag": "\"3c81-6qd4LQS0v2L4rTa0XAmekluER7c\"",
@@ -28515,26 +28736,12 @@ const assets = {
28515
28736
  "size": 15489,
28516
28737
  "path": "../public/assets/game/wuwa/wu-worker-2.png"
28517
28738
  },
28518
- "/_nuxt/builds/meta/c6c01cdd-762e-4fb8-86e7-753c5185b856.json": {
28739
+ "/_nuxt/builds/meta/55c10854-ee0e-4be4-924b-a1b0e100fe11.json": {
28519
28740
  "type": "application/json",
28520
- "etag": "\"58-QP6e6j0ClCoxmnjPu0rMtIkWTHw\"",
28521
- "mtime": "2026-09-03T17:15:51.629Z",
28741
+ "etag": "\"58-5mNAjyTKh+ez5vFOnxsM8Q+7P5c\"",
28742
+ "mtime": "2026-09-04T04:30:54.612Z",
28522
28743
  "size": 88,
28523
- "path": "../public/_nuxt/builds/meta/c6c01cdd-762e-4fb8-86e7-753c5185b856.json"
28524
- },
28525
- "/assets/game/wuwa/wu-worker-1.png": {
28526
- "type": "image/png",
28527
- "etag": "\"3cc8-0XoRr5qFC7X+vEEX+XrX4cRX+D0\"",
28528
- "mtime": "2026-08-25T12:20:54.529Z",
28529
- "size": 15560,
28530
- "path": "../public/assets/game/wuwa/wu-worker-1.png"
28531
- },
28532
- "/assets/game/wuwa/world-far.png": {
28533
- "type": "image/png",
28534
- "etag": "\"6b391-DRcUWDyPUwUxDpAWplDh9StwdO0\"",
28535
- "mtime": "2026-08-25T12:20:54.522Z",
28536
- "size": 439185,
28537
- "path": "../public/assets/game/wuwa/world-far.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