@acutis/cli 0.1.2 → 0.2.0-dev.23

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 (200) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/AC3CibKK.js +1 -0
  3. package/.output/public/_nuxt/BGc2VNce.js +1 -0
  4. package/.output/public/_nuxt/BN4XOpVt.js +1 -0
  5. package/.output/public/_nuxt/BNJ2GN0A.js +1 -0
  6. package/.output/public/_nuxt/BP52ABGx.js +1 -0
  7. package/.output/public/_nuxt/BWcsrofD.js +1 -0
  8. package/.output/public/_nuxt/{b5tj-z25.js → Bqp63OdK.js} +1 -1
  9. package/.output/public/_nuxt/CF8y5KTS.js +3 -0
  10. package/.output/public/_nuxt/CUTaKHid.js +1 -0
  11. package/.output/public/_nuxt/CZEhodn6.js +1 -0
  12. package/.output/public/_nuxt/Cym5RBDq.js +1 -0
  13. package/.output/public/_nuxt/D1ge6Bwo.js +1 -0
  14. package/.output/public/_nuxt/D2UpbqeN.js +28 -0
  15. package/.output/public/_nuxt/DDKd6Dxq.js +1 -0
  16. package/.output/public/_nuxt/D_FJunXs.js +64 -0
  17. package/.output/public/_nuxt/Dc2A-6xl.js +6 -0
  18. package/.output/public/_nuxt/DoQkJV4U.js +1 -0
  19. package/.output/public/_nuxt/JwPm-b3T.js +1 -0
  20. package/.output/public/_nuxt/builds/latest.json +1 -1
  21. package/.output/public/_nuxt/builds/meta/bcd56d50-e1a9-4021-b9df-ab200a81246a.json +1 -0
  22. package/.output/public/_nuxt/cnFSOQCu.js +1 -0
  23. package/.output/public/_nuxt/entry.BmTN_nlL.css +2 -0
  24. package/.output/public/_nuxt/error-404.CkhL7nxg.css +1 -0
  25. package/.output/public/_nuxt/error-500.DNftkU4A.css +1 -0
  26. package/.output/public/_nuxt/tags.C6gBUbEB.css +1 -0
  27. package/.output/server/chunks/_/auth2.mjs +3 -3
  28. package/.output/server/chunks/_/environment.mjs +3 -3
  29. package/.output/server/chunks/_/error-500.mjs.map +1 -1
  30. package/.output/server/chunks/_/generation.mjs +3 -3
  31. package/.output/server/chunks/_/project.mjs +2 -2
  32. package/.output/server/chunks/_/project.service.mjs +3 -31
  33. package/.output/server/chunks/_/project.service.mjs.map +1 -1
  34. package/.output/server/chunks/_/recording.mjs +5 -2
  35. package/.output/server/chunks/_/recording.mjs.map +1 -1
  36. package/.output/server/chunks/_/scenario.mjs +4 -2
  37. package/.output/server/chunks/_/scenario.mjs.map +1 -1
  38. package/.output/server/chunks/_/scenario2.mjs +22 -5
  39. package/.output/server/chunks/_/scenario2.mjs.map +1 -1
  40. package/.output/server/chunks/_/spec-rules.mjs +29 -232
  41. package/.output/server/chunks/_/spec-rules.mjs.map +1 -1
  42. package/.output/server/chunks/build/{Alert-Q5hBYuxt.mjs → Alert-WVcujYrW.mjs} +14 -14
  43. package/.output/server/chunks/build/Alert-WVcujYrW.mjs.map +1 -0
  44. package/.output/server/chunks/build/{Container-HW0bT_Wn.mjs → Container-C0k092cW.mjs} +4 -4
  45. package/.output/server/chunks/build/Container-C0k092cW.mjs.map +1 -0
  46. package/.output/server/chunks/build/{Pagination-FFamqWKD.mjs → Pagination-BXryRfUN.mjs} +4 -4
  47. package/.output/server/chunks/build/{Pagination-FFamqWKD.mjs.map → Pagination-BXryRfUN.mjs.map} +1 -1
  48. package/.output/server/chunks/build/{_...scenario_-DNqQ06NM.mjs → _...scenario_-qp56INdQ.mjs} +687 -149
  49. package/.output/server/chunks/build/_...scenario_-qp56INdQ.mjs.map +1 -0
  50. package/.output/server/chunks/build/{_slug_-BlLRYU9d.mjs → _slug_-dNDiCabc.mjs} +788 -433
  51. package/.output/server/chunks/build/_slug_-dNDiCabc.mjs.map +1 -0
  52. package/.output/server/chunks/build/{error-404-Dzfp7Wik.mjs → error-404-B5fzVPdQ.mjs} +5 -5
  53. package/.output/server/chunks/build/error-404-B5fzVPdQ.mjs.map +1 -0
  54. package/.output/server/chunks/build/error-404-styles.C6Lq0aSH.mjs +9 -0
  55. package/.output/server/chunks/build/error-404-styles.C6Lq0aSH.mjs.map +1 -0
  56. package/.output/server/chunks/build/{error-500-Df60mzLr.mjs → error-500-Be62wrWs.mjs} +5 -5
  57. package/.output/server/chunks/build/error-500-Be62wrWs.mjs.map +1 -0
  58. package/.output/server/chunks/build/error-500-styles.D3b6pwL1.mjs +9 -0
  59. package/.output/server/chunks/build/error-500-styles.D3b6pwL1.mjs.map +1 -0
  60. package/.output/server/chunks/build/{origin-_Ab6zkKk.mjs → origin-DFFT7pGA.mjs} +546 -21
  61. package/.output/server/chunks/build/{origin-_Ab6zkKk.mjs.map → origin-DFFT7pGA.mjs.map} +1 -1
  62. package/.output/server/chunks/build/{pages-BuW8VoW3.mjs → pages-NkoKH95O.mjs} +35 -37
  63. package/.output/server/chunks/build/pages-NkoKH95O.mjs.map +1 -0
  64. package/.output/server/chunks/build/tags-DXumXgr9.mjs +1653 -0
  65. package/.output/server/chunks/build/tags-DXumXgr9.mjs.map +1 -0
  66. package/.output/server/chunks/build/telemetria-BaMsUnJ8.mjs +131 -0
  67. package/.output/server/chunks/build/telemetria-BaMsUnJ8.mjs.map +1 -0
  68. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs +9 -0
  69. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs.map +1 -0
  70. package/.output/server/chunks/nitro/nitro.mjs +608 -367
  71. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  72. package/.output/server/chunks/raw/driver-entry.mjs +1 -1
  73. package/.output/server/chunks/routes/api/projects/_slug/auth/record.post.mjs +1 -1
  74. package/.output/server/chunks/routes/api/projects/_slug/auth/skip.post.mjs +1 -1
  75. package/.output/server/chunks/routes/api/projects/_slug/auth.get.mjs +1 -1
  76. package/.output/server/chunks/routes/api/projects/_slug/auth.put.mjs +1 -1
  77. package/.output/server/chunks/routes/api/telemetry/report.post.mjs +133 -0
  78. package/.output/server/chunks/routes/api/telemetry/report.post.mjs.map +1 -0
  79. package/.output/server/chunks/routes/debug/close-page.post.mjs +40 -0
  80. package/.output/server/chunks/routes/debug/close-page.post.mjs.map +1 -0
  81. package/.output/server/chunks/routes/debug/erro-de-telemetria.get.mjs +49 -0
  82. package/.output/server/chunks/routes/debug/erro-de-telemetria.get.mjs.map +1 -0
  83. package/.output/server/chunks/routes/debug/replay-decision.post.mjs +43 -0
  84. package/.output/server/chunks/routes/debug/replay-decision.post.mjs.map +1 -0
  85. package/.output/server/chunks/routes/renderer.mjs +2 -2
  86. package/.output/server/chunks/routes/renderer.mjs.map +1 -1
  87. package/.output/server/chunks/routes/runner/video.get.mjs +1 -1
  88. package/.output/server/chunks/routes/ws.mjs +19 -2
  89. package/.output/server/chunks/routes/ws.mjs.map +1 -1
  90. package/.output/server/chunks/virtual/entry.mjs +11755 -11725
  91. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  92. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  93. package/.output/server/chunks/virtual/styles.mjs +4 -3
  94. package/.output/server/index.mjs +1 -1
  95. package/.output/server/package.json +1 -1
  96. package/bin/splash.mjs +2 -2
  97. package/dist-ui/driver-entry.js +3 -3
  98. package/package.json +5 -1
  99. package/reporters/stream-reporter.cjs +3 -3
  100. package/.output/public/_nuxt/5GgR1mbX.js +0 -1
  101. package/.output/public/_nuxt/ANcp5QFz.js +0 -1
  102. package/.output/public/_nuxt/BEFJRHhA2.js +0 -1
  103. package/.output/public/_nuxt/BEQgcp5R.js +0 -1
  104. package/.output/public/_nuxt/BEk00u4_.js +0 -1
  105. package/.output/public/_nuxt/BGdmRvCK2.js +0 -8
  106. package/.output/public/_nuxt/BMLYuU_e.js +0 -1
  107. package/.output/public/_nuxt/BWJpSLJL.js +0 -1
  108. package/.output/public/_nuxt/BXpPYfMx.js +0 -1
  109. package/.output/public/_nuxt/BbjTtCyI.js +0 -3
  110. package/.output/public/_nuxt/Bp3A7I5W2.js +0 -1
  111. package/.output/public/_nuxt/BuOb9NX0.js +0 -1
  112. package/.output/public/_nuxt/C1tNhfTr.js +0 -1
  113. package/.output/public/_nuxt/C2KIeuhG.js +0 -1
  114. package/.output/public/_nuxt/C5uJN_MU.js +0 -1
  115. package/.output/public/_nuxt/CBVnImq2.js +0 -1
  116. package/.output/public/_nuxt/CC0OsuIz.js +0 -28
  117. package/.output/public/_nuxt/CIFC2HNk.js +0 -1
  118. package/.output/public/_nuxt/CKps1Vc12.js +0 -3
  119. package/.output/public/_nuxt/CRH0iqnQ.js +0 -1
  120. package/.output/public/_nuxt/CTLrtTtn2.js +0 -64
  121. package/.output/public/_nuxt/CTqLwyQP.js +0 -1
  122. package/.output/public/_nuxt/CU7sPrmY.js +0 -3
  123. package/.output/public/_nuxt/CfOqJVtU.js +0 -1
  124. package/.output/public/_nuxt/Ch1EeKHP.js +0 -1
  125. package/.output/public/_nuxt/Clv7nJ_T2.js +0 -1
  126. package/.output/public/_nuxt/D-7v7DZs.js +0 -1
  127. package/.output/public/_nuxt/D4ykC_lY2.js +0 -1
  128. package/.output/public/_nuxt/D5HF1Z0f2.js +0 -1
  129. package/.output/public/_nuxt/DDHUGtv32.js +0 -4
  130. package/.output/public/_nuxt/DEJ3sRrh2.js +0 -1
  131. package/.output/public/_nuxt/DPM_BYFz2.js +0 -1
  132. package/.output/public/_nuxt/DXLPf3t6.js +0 -1
  133. package/.output/public/_nuxt/Dpnaldxf2.js +0 -1
  134. package/.output/public/_nuxt/DtuQPKVG.js +0 -1
  135. package/.output/public/_nuxt/FvWrDx_z.js +0 -1
  136. package/.output/public/_nuxt/Gcazu-lR.js +0 -1
  137. package/.output/public/_nuxt/QcKfgokC.js +0 -1
  138. package/.output/public/_nuxt/XDsaI4JL.js +0 -1
  139. package/.output/public/_nuxt/builds/meta/bf2cb2c6-2ddb-4f64-9777-e314571fd19d.json +0 -1
  140. package/.output/public/_nuxt/entry.m-nAFUcz.css +0 -2
  141. package/.output/public/_nuxt/error-404.DopINOT1.css +0 -1
  142. package/.output/public/_nuxt/error-500.D7goJC9g.css +0 -1
  143. package/.output/public/_nuxt/f0o80Gcm.js +0 -1
  144. package/.output/public/_nuxt/k5q7GKnv.js +0 -1
  145. package/.output/public/_nuxt/modal.3A_G7d4A.css +0 -1
  146. package/.output/public/_nuxt/tLr-SJaf.js +0 -1
  147. package/.output/public/dev/sample-run.webm +0 -0
  148. package/.output/server/chunks/build/Alert-Q5hBYuxt.mjs.map +0 -1
  149. package/.output/server/chunks/build/Badge-BgyIJKeU.mjs +0 -394
  150. package/.output/server/chunks/build/Badge-BgyIJKeU.mjs.map +0 -1
  151. package/.output/server/chunks/build/Card-DLzZ816u.mjs +0 -144
  152. package/.output/server/chunks/build/Card-DLzZ816u.mjs.map +0 -1
  153. package/.output/server/chunks/build/Container-HW0bT_Wn.mjs.map +0 -1
  154. package/.output/server/chunks/build/_...scenario_-DNqQ06NM.mjs.map +0 -1
  155. package/.output/server/chunks/build/_slug_-BlLRYU9d.mjs.map +0 -1
  156. package/.output/server/chunks/build/auth-status-5sNoLTPk.mjs +0 -128
  157. package/.output/server/chunks/build/auth-status-5sNoLTPk.mjs.map +0 -1
  158. package/.output/server/chunks/build/auth-status-Bo2gxZ-H.mjs +0 -53
  159. package/.output/server/chunks/build/auth-status-Bo2gxZ-H.mjs.map +0 -1
  160. package/.output/server/chunks/build/empty-xO5aD2Ip.mjs +0 -44
  161. package/.output/server/chunks/build/empty-xO5aD2Ip.mjs.map +0 -1
  162. package/.output/server/chunks/build/error-404-Dzfp7Wik.mjs.map +0 -1
  163. package/.output/server/chunks/build/error-404-styles.ByPbpRGS.mjs +0 -9
  164. package/.output/server/chunks/build/error-404-styles.ByPbpRGS.mjs.map +0 -1
  165. package/.output/server/chunks/build/error-500-Df60mzLr.mjs.map +0 -1
  166. package/.output/server/chunks/build/error-500-styles.Dz8enkTW.mjs +0 -9
  167. package/.output/server/chunks/build/error-500-styles.Dz8enkTW.mjs.map +0 -1
  168. package/.output/server/chunks/build/generation-warnings-RCB9uLi8.mjs +0 -123
  169. package/.output/server/chunks/build/generation-warnings-RCB9uLi8.mjs.map +0 -1
  170. package/.output/server/chunks/build/history-D-mei_D6.mjs +0 -163
  171. package/.output/server/chunks/build/history-D-mei_D6.mjs.map +0 -1
  172. package/.output/server/chunks/build/modal-81h_kbj9.mjs +0 -321
  173. package/.output/server/chunks/build/modal-81h_kbj9.mjs.map +0 -1
  174. package/.output/server/chunks/build/modal-Cpj-bQgu.mjs +0 -342
  175. package/.output/server/chunks/build/modal-Cpj-bQgu.mjs.map +0 -1
  176. package/.output/server/chunks/build/modal-DV_DQ0hO.mjs +0 -659
  177. package/.output/server/chunks/build/modal-DV_DQ0hO.mjs.map +0 -1
  178. package/.output/server/chunks/build/pages-BuW8VoW3.mjs.map +0 -1
  179. package/.output/server/chunks/build/phrases-CSDEYSbZ.mjs +0 -38
  180. package/.output/server/chunks/build/phrases-CSDEYSbZ.mjs.map +0 -1
  181. package/.output/server/chunks/build/project-run-filtered-CplHFc5x.mjs +0 -455
  182. package/.output/server/chunks/build/project-run-filtered-CplHFc5x.mjs.map +0 -1
  183. package/.output/server/chunks/build/run-stream-CNVDpZ_S.mjs +0 -157
  184. package/.output/server/chunks/build/run-stream-CNVDpZ_S.mjs.map +0 -1
  185. package/.output/server/chunks/build/scenario-runs-C7TDC5iA.mjs +0 -135
  186. package/.output/server/chunks/build/scenario-runs-C7TDC5iA.mjs.map +0 -1
  187. package/.output/server/chunks/build/scenario-suggestions-CsQg875h.mjs +0 -210
  188. package/.output/server/chunks/build/scenario-suggestions-CsQg875h.mjs.map +0 -1
  189. package/.output/server/chunks/build/scenario-test-run-Deg4Qlme.mjs +0 -505
  190. package/.output/server/chunks/build/scenario-test-run-Deg4Qlme.mjs.map +0 -1
  191. package/.output/server/chunks/build/steps-CcAjZqHX.mjs +0 -54
  192. package/.output/server/chunks/build/steps-CcAjZqHX.mjs.map +0 -1
  193. package/.output/server/chunks/build/tags-DrKY6Ah4.mjs +0 -594
  194. package/.output/server/chunks/build/tags-DrKY6Ah4.mjs.map +0 -1
  195. package/.output/server/chunks/build/warnings-D8SWbHw0.mjs +0 -76
  196. package/.output/server/chunks/build/warnings-D8SWbHw0.mjs.map +0 -1
  197. package/.output/server/chunks/raw/sample-run.mjs +0 -7
  198. package/.output/server/chunks/raw/sample-run.mjs.map +0 -1
  199. package/dist-ui/dev/sample-run.webm +0 -0
  200. /package/.output/public/_nuxt/{BDNMzG2s2.js → BDNMzG2s.js} +0 -0
@@ -9283,23 +9283,19 @@ async function dispose(driver) {
9283
9283
  const _assets = {
9284
9284
  ["recorder:driver-entry.js"]: {
9285
9285
  import: () => import('../raw/driver-entry.mjs').then(r => r.default || r),
9286
- meta: {"type":"text/javascript; charset=utf-8","etag":"\"17c43-lMgoyTHl0+g27n+uTvuJYtxXjt4\"","mtime":"2026-08-21T21:28:03.450Z"}
9286
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"18e8c-cEoTo1XFx5fJxmYYyMZf05j2btg\"","mtime":"2026-08-25T16:47:26.864Z"}
9287
9287
  },
9288
9288
  ["recorder:favicon.svg"]: {
9289
9289
  import: () => import('../raw/favicon.mjs').then(r => r.default || r),
9290
- meta: {"type":"image/svg+xml","etag":"\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"","mtime":"2026-08-21T21:28:03.413Z"}
9291
- },
9292
- ["recorder:dev:sample-run.webm"]: {
9293
- import: () => import('../raw/sample-run.mjs').then(r => r.default || r),
9294
- meta: {"type":"video/webm","etag":"\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"","mtime":"2026-08-21T21:28:03.413Z"}
9290
+ meta: {"type":"image/svg+xml","etag":"\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"","mtime":"2026-08-25T16:47:26.823Z"}
9295
9291
  },
9296
9292
  ["templates:playwright-ts:package.json"]: {
9297
9293
  import: () => import('../raw/package.mjs').then(r => r.default || r),
9298
- meta: {"type":"application/json","etag":"\"88-/nGrZxMqH3UwHMuh7tJQ7VnJaGc\"","mtime":"2026-08-21T21:27:21.088Z"}
9294
+ meta: {"type":"application/json","etag":"\"88-/nGrZxMqH3UwHMuh7tJQ7VnJaGc\"","mtime":"2026-08-25T16:46:34.510Z"}
9299
9295
  },
9300
9296
  ["templates:playwright-ts:playwright.config.ts"]: {
9301
9297
  import: () => import('../raw/playwright.config.mjs').then(r => r.default || r),
9302
- meta: {"type":"video/mp2t","etag":"\"588-KWvjOkz0BTOuGUrnDeb9TPlfP1A\"","mtime":"2026-08-21T21:27:21.088Z"}
9298
+ meta: {"type":"video/mp2t","etag":"\"588-KWvjOkz0BTOuGUrnDeb9TPlfP1A\"","mtime":"2026-08-25T16:46:34.510Z"}
9303
9299
  }
9304
9300
  };
9305
9301
 
@@ -10358,7 +10354,7 @@ function _expandFromEnv(value) {
10358
10354
  const _inlineRuntimeConfig = {
10359
10355
  "app": {
10360
10356
  "baseURL": "/",
10361
- "buildId": "bf2cb2c6-2ddb-4f64-9777-e314571fd19d",
10357
+ "buildId": "bcd56d50-e1a9-4021-b9df-ab200a81246a",
10362
10358
  "buildAssetsDir": "/_nuxt/",
10363
10359
  "cdnURL": ""
10364
10360
  },
@@ -10390,7 +10386,11 @@ const _inlineRuntimeConfig = {
10390
10386
  }
10391
10387
  }
10392
10388
  },
10393
- "public": {},
10389
+ "public": {
10390
+ "telemetry": {
10391
+ "enabled": true
10392
+ }
10393
+ },
10394
10394
  "icon": {
10395
10395
  "serverKnownCssClasses": []
10396
10396
  }
@@ -10805,7 +10805,7 @@ async function errorHandler(error, event) {
10805
10805
 
10806
10806
  const script = "\"use strict\";(()=>{const o=window,e=document.documentElement,c=[\"dark\",\"light\"],s=getStorageValue(\"localStorage\",\"nuxt-color-mode\")||\"system\";let r=s===\"system\"?f():s;const l=e.getAttribute(\"data-color-mode-forced\");l&&(r=l),i(r),o[\"__NUXT_COLOR_MODE__\"]={preference:s,value:r,getColorScheme:f,addColorScheme:i,removeColorScheme:d};function i(t){const a=\"\"+t+\"\",n=\"\";e.classList?e.classList.add(a):e.className+=\" \"+a,n&&e.setAttribute(\"data-\"+n,t)}function d(t){const a=\"\"+t+\"\",n=\"\";e.classList?e.classList.remove(a):e.className=e.className.replace(new RegExp(a,\"g\"),\"\"),n&&e.removeAttribute(\"data-\"+n)}function u(t){return o.matchMedia(\"(prefers-color-scheme\"+t+\")\")}function f(){if(o.matchMedia&&u(\"\").media!==\"not all\"){for(const t of c)if(u(\":\"+t).matches)return t}return\"light\"}})();function getStorageValue(o,e){switch(o){case\"localStorage\":try{return window.localStorage.getItem(e)}catch{return null}case\"sessionStorage\":try{return window.sessionStorage.getItem(e)}catch{return null}case\"cookie\":try{return getCookie(e)}catch{return null}default:return null}}function getCookie(o){const c=(\"; \"+window.document.cookie).split(\"; \"+o+\"=\");if(c.length===2){const s=c.pop();return s?s.split(\";\").shift():null}}";
10807
10807
 
10808
- const _3GHuaEHbN7x8hvhQFCljS3VzP_8pjD_uFL_nfqe0uBM = (function(nitro) {
10808
+ const _LcDxosuGhTjRcGIch8IhbLNRAy3WkRY7Yz5xZ8xTbt4 = (function(nitro) {
10809
10809
  nitro.hooks.hook("render:html", (htmlContext) => {
10810
10810
  htmlContext.head.push(`<script>${script}<\/script>`);
10811
10811
  });
@@ -10815,6 +10815,9 @@ function defineNitroPlugin(def) {
10815
10815
  return def;
10816
10816
  }
10817
10817
 
10818
+ const DEFAULT_TELEMETRY_URL = "http://177.44.248.9:8787/reports";
10819
+ const DEFAULT_TELEMETRY_KEY = "c031fe5aafe58d7a9fe55438a81de8d2";
10820
+
10818
10821
  const logLevelSchema = z.enum([
10819
10822
  "log",
10820
10823
  "error",
@@ -10833,6 +10836,8 @@ const environmentSchema = z.object({
10833
10836
  ]).default("0"),
10834
10837
  LOG_LEVEL: z.string().default("log,error,warn,debug,verbose,fatal"),
10835
10838
  ACUTIS_APP_KEY: z.string().optional(),
10839
+ TELEMETRY_URL: z.string().default(DEFAULT_TELEMETRY_URL),
10840
+ TELEMETRY_KEY: z.string().default(DEFAULT_TELEMETRY_KEY),
10836
10841
  ANTHROPIC_URL: z.string().optional(),
10837
10842
  CLAUDE_AGENT_MODEL: z.string().optional(),
10838
10843
  CODEX_MODEL: z.string().optional(),
@@ -10859,6 +10864,10 @@ function readAppConfig(environment) {
10859
10864
  recorderHeadless: env.RECORDER_HEADLESS === "1",
10860
10865
  logLevels,
10861
10866
  appKey: env.ACUTIS_APP_KEY,
10867
+ telemetry: {
10868
+ url: env.TELEMETRY_URL,
10869
+ key: env.TELEMETRY_KEY
10870
+ },
10862
10871
  providers: {
10863
10872
  anthropicUrl: (_a = env.ANTHROPIC_URL) != null ? _a : "https://api.anthropic.com/v1",
10864
10873
  claudeAgentModel: env.CLAUDE_AGENT_MODEL,
@@ -10914,6 +10923,297 @@ const RUNNER_DIR = resolve$1(PACKAGE_ROOT, ".tmp/runner");
10914
10923
  const STREAM_REPORTER_PATH = resolve$1(PACKAGE_ROOT, "reporters/stream-reporter.cjs");
10915
10924
  const RECORDER_BUNDLE_PATH = resolve$1(PACKAGE_ROOT, "dist-ui/driver-entry.js");
10916
10925
 
10926
+ var __defProp$8 = Object.defineProperty;
10927
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10928
+ var __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
10929
+ function pathOf(url, fallback = "") {
10930
+ try {
10931
+ return new URL(url).pathname;
10932
+ } catch {
10933
+ return fallback;
10934
+ }
10935
+ }
10936
+ class Url {
10937
+ constructor(value) {
10938
+ __publicField$8(this, "value", value);
10939
+ __publicField$8(this, "parsed");
10940
+ try {
10941
+ this.parsed = new URL(value);
10942
+ } catch {
10943
+ throw new Error(`URL inv\xE1lida: ${value}`);
10944
+ }
10945
+ if (!this.parsed.protocol.startsWith("http")) {
10946
+ throw new Error(`URL inv\xE1lida: ${value}`);
10947
+ }
10948
+ }
10949
+ host() {
10950
+ return this.parsed.hostname;
10951
+ }
10952
+ /** O caminho que a URL já traz, sem a barra final. */
10953
+ path() {
10954
+ return this.parsed.pathname.replace(/\/+$/, "");
10955
+ }
10956
+ toString() {
10957
+ return this.value;
10958
+ }
10959
+ }
10960
+
10961
+ const EnvKey = {
10962
+ /** URL do sistema sob teste: onde o navegador abre ao gravar e a base que o Playwright usa. */
10963
+ URL: "URL",
10964
+ /** Credenciais do login, sob o prefixo `AUTH_` para não colidir com variáveis do shell. */
10965
+ USER: "AUTH_USER",
10966
+ PASSWORD: "AUTH_PASSWORD",
10967
+ ACTIVE_ENVIRONMENT: "ENVIRONMENT",
10968
+ /** Arquivo de sessão do ambiente ativo: o auth.setup.ts grava nele e os cenários o carregam. */
10969
+ STORAGE_STATE: "STORAGE_STATE"
10970
+ };
10971
+ function ownsKey(key) {
10972
+ return Object.values(EnvKey).includes(key);
10973
+ }
10974
+
10975
+ const ENV_KEY = "[A-Za-z_][A-Za-z0-9_]*";
10976
+ function environmentVar(key, value = null, secret = false, pending = false) {
10977
+ return { key, value, secret, pending };
10978
+ }
10979
+ function fromLine(line) {
10980
+ const match = line.trim().match(new RegExp(`^(${ENV_KEY})=(.*)$`));
10981
+ if (!match) return null;
10982
+ return environmentVar(match[1], match[2].trim().replace(/^["']|["']$/g, ""));
10983
+ }
10984
+ function keyed(vars, key) {
10985
+ var _a;
10986
+ return (_a = vars.find((variable) => variable.key === key)) != null ? _a : null;
10987
+ }
10988
+
10989
+ var __defProp$7 = Object.defineProperty;
10990
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10991
+ var __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, key + "" , value);
10992
+ class ActiveVars {
10993
+ constructor(vars = []) {
10994
+ __publicField$7(this, "vars", vars);
10995
+ const keys = vars.map((variable) => variable.key);
10996
+ for (const key of keys) {
10997
+ if (!new RegExp(`^${ENV_KEY}$`).test(key)) {
10998
+ throw new Error(`Nome de vari\xE1vel inv\xE1lido: ${key}`);
10999
+ }
11000
+ }
11001
+ if (new Set(keys).size !== keys.length) {
11002
+ throw new Error("O ambiente declara a mesma vari\xE1vel duas vezes.");
11003
+ }
11004
+ }
11005
+ get(key) {
11006
+ return keyed(this.vars, key);
11007
+ }
11008
+ has(key) {
11009
+ return this.get(key) !== null;
11010
+ }
11011
+ /** A chave que já guarda esse valor, se alguma guardar. */
11012
+ keyOf(value) {
11013
+ var _a, _b;
11014
+ if (!value) return null;
11015
+ return (_b = (_a = this.vars.find((variable) => variable.value === value)) == null ? void 0 : _a.key) != null ? _b : null;
11016
+ }
11017
+ /** Se a chave está declarada mas sem valor. */
11018
+ isEmpty(key) {
11019
+ var _a;
11020
+ return !((_a = this.get(key)) == null ? void 0 : _a.value);
11021
+ }
11022
+ /** As que têm valor não secreto, e portanto podem vazar literais para o arquivo gerado. */
11023
+ exposed() {
11024
+ return this.vars.filter((variable) => !variable.secret && Boolean(variable.value));
11025
+ }
11026
+ }
11027
+
11028
+ var __defProp$6 = Object.defineProperty;
11029
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11030
+ var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, key + "" , value);
11031
+ const MASK = "\u2022\u2022\u2022\u2022";
11032
+ const SENSITIVE_PREFIX = "SENSIVEL_";
11033
+ const NAME_LIMIT = 60;
11034
+ function describeElement(event) {
11035
+ var _a, _b, _c, _d, _e;
11036
+ const selectors = (_a = event.selectors) != null ? _a : null;
11037
+ const source = (_e = (_d = (_c = (_b = event.label) != null ? _b : event.innerText) != null ? _c : selectors == null ? void 0 : selectors.placeholder) != null ? _d : selectors == null ? void 0 : selectors.text) != null ? _e : "";
11038
+ const clean = source.replace(/\s+/gu, " ").trim();
11039
+ return clean === "" ? null : clean.slice(0, NAME_LIMIT).trimEnd();
11040
+ }
11041
+ function marker(key) {
11042
+ return `{{${key}}}`;
11043
+ }
11044
+ class Recording {
11045
+ constructor(recorded) {
11046
+ __publicField$6(this, "recorded", recorded);
11047
+ }
11048
+ static make(events) {
11049
+ return new Recording(events);
11050
+ }
11051
+ /** Os eventos gravados; o DOM capturado só vem quando pedido. */
11052
+ events(html = false) {
11053
+ if (html) return this.recorded;
11054
+ return this.recorded.map(({ html: _html, ...event }) => event);
11055
+ }
11056
+ /** Troca o valor de cada evento sensível pelo marcador. */
11057
+ redacted(environments = new ActiveVars()) {
11058
+ let position = 0;
11059
+ return this.events().map((event) => {
11060
+ var _a, _b;
11061
+ if (event.sensitive !== true) return event;
11062
+ position++;
11063
+ const value = (_a = event.value) != null ? _a : "";
11064
+ return {
11065
+ ...event,
11066
+ value: marker((_b = environments.keyOf(value)) != null ? _b : `${SENSITIVE_PREFIX}${position}`)
11067
+ };
11068
+ });
11069
+ }
11070
+ /** O DOM ao redor de cada elemento, na chave do evento que o produziu. */
11071
+ html() {
11072
+ const html = {};
11073
+ this.recorded.forEach((event, index) => {
11074
+ if (event.html) html[index] = event.html;
11075
+ });
11076
+ return html;
11077
+ }
11078
+ /** Os eventos com usuário e senha trocados pelo nome da variável que os guarda. */
11079
+ withoutPasswords() {
11080
+ const events = this.events();
11081
+ const password = this.passwordIndex();
11082
+ for (const [index, event] of events.entries()) {
11083
+ if (event.inputType === "password") {
11084
+ events[index] = { ...event, value: marker(EnvKey.PASSWORD) };
11085
+ }
11086
+ }
11087
+ const user = password === null ? null : this.fillBefore(password);
11088
+ if (user !== null) {
11089
+ events[user] = { ...events[user], value: marker(EnvKey.USER) };
11090
+ }
11091
+ return events;
11092
+ }
11093
+ /**
11094
+ * A URL em que a gravação caiu depois do login: a primeira navegação após o submit (ou após o
11095
+ * campo de senha, quando não houve submit) que saiu da URL onde o login foi enviado.
11096
+ */
11097
+ landingUrl() {
11098
+ let submitIndex = null;
11099
+ this.recorded.forEach((event, index) => {
11100
+ if (event.type === "submit" || event.type === "fill" && event.inputType === "password") {
11101
+ submitIndex = index;
11102
+ }
11103
+ });
11104
+ if (submitIndex === null) return null;
11105
+ const submitUrl = this.recorded[submitIndex].url;
11106
+ for (const event of this.recorded.slice(submitIndex + 1)) {
11107
+ if (event.type === "navigate" && event.url && event.url !== submitUrl) {
11108
+ return event.url;
11109
+ }
11110
+ }
11111
+ return null;
11112
+ }
11113
+ /** Usuário e senha reais do login gravado, ou null quando não dá para identificá-los. */
11114
+ credentials() {
11115
+ var _a, _b;
11116
+ const passwordIndex = this.passwordIndex();
11117
+ if (passwordIndex === null) return null;
11118
+ const userIndex = this.fillBefore(passwordIndex);
11119
+ const username = userIndex === null ? null : (_a = this.recorded[userIndex]) == null ? void 0 : _a.value;
11120
+ const password = (_b = this.recorded[passwordIndex]) == null ? void 0 : _b.value;
11121
+ return username && password ? { username, password } : null;
11122
+ }
11123
+ /** O valor real de cada marcador batizado, indexado pelo nome que ele recebeu. */
11124
+ envValues(names) {
11125
+ const sensitive = this.sensitiveValues();
11126
+ const values = {};
11127
+ for (const [key, name] of Object.entries(names)) {
11128
+ if (!key.startsWith(SENSITIVE_PREFIX)) continue;
11129
+ const position = Number(key.slice(SENSITIVE_PREFIX.length));
11130
+ const value = sensitive[position - 1];
11131
+ if (value === void 0) continue;
11132
+ values[name] = value;
11133
+ }
11134
+ return values;
11135
+ }
11136
+ /** O alerta de quando os nomes declarados não cobrem os marcadores da gravação. */
11137
+ unmatchedEnvWarning(names) {
11138
+ const markers = this.sensitiveValues().length;
11139
+ const declared = Object.keys(names).length;
11140
+ if (markers === 0 || declared === markers) return null;
11141
+ return `Grava\xE7\xE3o tem ${markers} valor(es) sens\xEDvel(is) mas a IA nomeou ${declared}, e algum .env pode ter ficado vazio.`;
11142
+ }
11143
+ sensitiveValues() {
11144
+ return this.recorded.filter((event) => event.sensitive === true).map((event) => {
11145
+ var _a;
11146
+ return (_a = event.value) != null ? _a : "";
11147
+ });
11148
+ }
11149
+ passwordIndex() {
11150
+ const index = this.recorded.findIndex(
11151
+ (event) => event.type === "fill" && event.inputType === "password"
11152
+ );
11153
+ return index === -1 ? null : index;
11154
+ }
11155
+ /** O preenchimento anterior ao índice dado, que é onde o usuário do login foi digitado. */
11156
+ fillBefore(index) {
11157
+ var _a;
11158
+ for (let i = index - 1; i >= 0; i--) {
11159
+ if (((_a = this.recorded[i]) == null ? void 0 : _a.type) === "fill") return i;
11160
+ }
11161
+ return null;
11162
+ }
11163
+ }
11164
+
11165
+ function attribute(name, value) {
11166
+ return `[${name}=${JSON.stringify(value)}]`;
11167
+ }
11168
+ function replaySelector(selectors) {
11169
+ if (!selectors) return null;
11170
+ if (selectors.dataTestId) return attribute("data-testid", selectors.dataTestId);
11171
+ if (selectors.dataCy) return attribute("data-cy", selectors.dataCy);
11172
+ if (selectors.id) return attribute("id", selectors.id);
11173
+ if (selectors.cssStable) return selectors.cssStable;
11174
+ if (selectors.ariaLabel) return attribute("aria-label", selectors.ariaLabel);
11175
+ if (selectors.placeholder) return attribute("placeholder", selectors.placeholder);
11176
+ if (selectors.text) return `text=${JSON.stringify(selectors.text)}`;
11177
+ if (selectors.finder) return selectors.finder;
11178
+ if (selectors.xpath) return `xpath=${selectors.xpath}`;
11179
+ return null;
11180
+ }
11181
+ function typeable(value) {
11182
+ return value !== null && value !== "" && value !== MASK && !/^\{\{.+\}\}$/.test(value);
11183
+ }
11184
+ function replaySteps(events) {
11185
+ const steps = [];
11186
+ events.forEach((event, at) => {
11187
+ if (event.type === "navigate") {
11188
+ if (event.url) {
11189
+ steps.push({ action: "goto", url: event.url, label: `Abre ${pathOf(event.url, event.url)}`, at });
11190
+ }
11191
+ return;
11192
+ }
11193
+ const selector = replaySelector(event.selectors);
11194
+ if (!selector) return;
11195
+ const name = describeElement(event);
11196
+ if (event.type === "click") {
11197
+ steps.push({
11198
+ action: "click",
11199
+ selector,
11200
+ label: name === null ? "Clica no elemento" : `Clica em "${name}"`,
11201
+ at
11202
+ });
11203
+ }
11204
+ if (event.type === "fill" && typeable(event.value)) {
11205
+ steps.push({
11206
+ action: "fill",
11207
+ selector,
11208
+ value: event.value,
11209
+ label: name === null ? "Preenche o campo" : `Preenche "${name}"`,
11210
+ at
11211
+ });
11212
+ }
11213
+ });
11214
+ return steps;
11215
+ }
11216
+
10917
11217
  var __defProp$5 = Object.defineProperty;
10918
11218
  var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10919
11219
  var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -10921,6 +11221,10 @@ const RECORDING_VIEWPORT = { width: 1280, height: 720 };
10921
11221
  const STORAGE_STATE_TIMEOUT_MS = 1500;
10922
11222
  const SCREENCAST_STOP_TIMEOUT_MS = 2500;
10923
11223
  const CDP_CLOSE_TIMEOUT_MS = 1500;
11224
+ const REPLAY_STEP_TIMEOUT_MS = 2500;
11225
+ const REPLAY_RETRY_TIMEOUT_MS = 4e3;
11226
+ const REPLAY_SETTLE_MS = 1500;
11227
+ const DECISION_POLL_MS = 200;
10924
11228
  const BLANK = "about:blank";
10925
11229
  class RecorderService {
10926
11230
  constructor(videoService) {
@@ -10934,8 +11238,12 @@ class RecorderService {
10934
11238
  __publicField$5(this, "sessionId", null);
10935
11239
  __publicField$5(this, "screencastStarted", false);
10936
11240
  __publicField$5(this, "ready", false);
11241
+ __publicField$5(this, "replaying", false);
11242
+ __publicField$5(this, "replayState", { status: "idle", step: null });
11243
+ __publicField$5(this, "replayDecision", null);
10937
11244
  __publicField$5(this, "bundlePath", null);
10938
11245
  __publicField$5(this, "bundleLoader", null);
11246
+ __publicField$5(this, "stopping", false);
10939
11247
  }
10940
11248
  configureBundlePath(path) {
10941
11249
  this.bundlePath = path;
@@ -10946,11 +11254,13 @@ class RecorderService {
10946
11254
  isRecording() {
10947
11255
  return this.context !== null;
10948
11256
  }
10949
- async start(onEvent, onStarted, onRequestStop, mode = "scenario", storageStatePath, url) {
10950
- var _a, _b;
11257
+ async start(onEvent, onStarted, onRequestStop, mode = "scenario", storageStatePath, url, replay, hooks = {}) {
11258
+ var _a, _b, _c, _d;
10951
11259
  this.sessionId = randomUUID$1();
10952
11260
  this.screencastStarted = false;
10953
11261
  this.ready = false;
11262
+ this.replaying = false;
11263
+ this.stopping = false;
10954
11264
  await this.videoService.ensureDir();
10955
11265
  if (RECORDER_CDP_URL) {
10956
11266
  try {
@@ -10978,6 +11288,7 @@ class RecorderService {
10978
11288
  await this.page.setViewportSize(RECORDING_VIEWPORT);
10979
11289
  this.lastUrl = null;
10980
11290
  this.report = (event) => {
11291
+ if (this.replaying) return;
10981
11292
  if (event.type === "navigate") {
10982
11293
  if (event.url === BLANK) {
10983
11294
  return;
@@ -10988,6 +11299,14 @@ class RecorderService {
10988
11299
  };
10989
11300
  await this.page.exposeFunction("__acutisReportEvent", this.report);
10990
11301
  await this.page.exposeFunction("__acutisRequestStop", onRequestStop);
11302
+ await this.page.exposeFunction("__acutisCancelRecording", () => {
11303
+ var _a2;
11304
+ return (_a2 = hooks.onCancelRequested) == null ? void 0 : _a2.call(hooks);
11305
+ });
11306
+ await this.page.exposeFunction("__acutisReplayState", () => this.replayState);
11307
+ await this.page.exposeFunction("__acutisReplayDecision", (decision) => {
11308
+ this.decideReplay(decision === "resume" ? "resume" : "cancel");
11309
+ });
10991
11310
  await this.context.addInitScript((recorderMode) => {
10992
11311
  globalThis.__acutisRecorderMode = recorderMode;
10993
11312
  }, mode);
@@ -10997,6 +11316,8 @@ class RecorderService {
10997
11316
  await this.context.addInitScript({ path: (_b = this.bundlePath) != null ? _b : RECORDER_BUNDLE_PATH });
10998
11317
  }
10999
11318
  this.ready = true;
11319
+ this.page.on("close", () => this.handleExternalClose(onRequestStop, hooks));
11320
+ this.browser.on("disconnected", () => this.handleExternalClose(onRequestStop, hooks));
11000
11321
  const sessionId = this.sessionId;
11001
11322
  const videoPath = this.videoService.path(sessionId);
11002
11323
  this.page.on("framenavigated", (frame) => {
@@ -11006,16 +11327,94 @@ class RecorderService {
11006
11327
  const recordingStartedAt = Date.now();
11007
11328
  void this.page.screencast.start({ path: videoPath, size: RECORDING_VIEWPORT }).then(() => onStarted(recordingStartedAt));
11008
11329
  });
11009
- if (url) {
11330
+ const steps = (replay == null ? void 0 : replay.length) ? replaySteps(replay) : [];
11331
+ if (steps.length) this.replayState = { status: "running", step: steps[0].label };
11332
+ if (url && !steps.some((step) => step.action === "goto")) {
11010
11333
  await this.page.goto(url, { waitUntil: "domcontentloaded" }).catch(() => {
11011
11334
  });
11012
11335
  }
11336
+ if (!steps.length) return;
11337
+ const { cancelledAt, keptEvents } = await this.replay(steps, hooks);
11338
+ if (cancelledAt !== null) {
11339
+ await ((_c = hooks.onCancelled) == null ? void 0 : _c.call(hooks, cancelledAt));
11340
+ return;
11341
+ }
11342
+ await ((_d = hooks.onReplayed) == null ? void 0 : _d.call(hooks, keptEvents));
11343
+ }
11344
+ /**
11345
+ * Refaz os passos já gravados para o usuário continuar do ponto que escolheu. Passo que não
11346
+ * repete nem na segunda tentativa para a retomada e devolve a decisão para ele, na janela.
11347
+ * Devolve o passo em que ele cancelou e, quando assumiu no meio, quantos eventos foram refeitos.
11348
+ */
11349
+ async replay(steps, hooks) {
11350
+ var _a;
11351
+ if (!this.page) return { cancelledAt: null, keptEvents: null };
11352
+ const page = this.page;
11353
+ this.replaying = true;
11354
+ this.replayState = { status: "running", step: steps[0].label };
11355
+ let keptEvents = null;
11356
+ try {
11357
+ for (const step of steps) {
11358
+ this.replayState = { status: "running", step: step.label };
11359
+ if (await this.attempt(page, step, REPLAY_STEP_TIMEOUT_MS)) continue;
11360
+ if (await this.attempt(page, step, REPLAY_RETRY_TIMEOUT_MS)) continue;
11361
+ this.replayState = { status: "failed", step: step.label };
11362
+ (_a = hooks.onFailed) == null ? void 0 : _a.call(hooks, step.label);
11363
+ const decision = await this.awaitDecision(page);
11364
+ if (decision === "cancel") return { cancelledAt: step.label, keptEvents: null };
11365
+ if (decision === null) return { cancelledAt: null, keptEvents: null };
11366
+ keptEvents = step.at;
11367
+ break;
11368
+ }
11369
+ await page.waitForTimeout(REPLAY_SETTLE_MS);
11370
+ return { cancelledAt: null, keptEvents };
11371
+ } finally {
11372
+ this.replaying = false;
11373
+ this.replayState = { status: "idle", step: null };
11374
+ this.lastUrl = page.url();
11375
+ }
11376
+ }
11377
+ /** Um passo refeito. O clique é despachado no elemento, porque a cortina cobre a página. */
11378
+ async attempt(page, step, timeout) {
11379
+ try {
11380
+ if (step.action === "goto") {
11381
+ await page.goto(step.url, { waitUntil: "domcontentloaded" });
11382
+ } else if (step.action === "fill") {
11383
+ await page.fill(step.selector, step.value, { timeout, force: true });
11384
+ await page.locator(step.selector).blur({ timeout }).catch(() => void 0);
11385
+ } else {
11386
+ await page.locator(step.selector).dispatchEvent("click", {}, { timeout });
11387
+ }
11388
+ return true;
11389
+ } catch {
11390
+ return false;
11391
+ }
11392
+ }
11393
+ /** A escolha que o usuário faz na cortina, ou null quando a janela some antes de ele escolher. */
11394
+ async awaitDecision(page) {
11395
+ this.replayDecision = null;
11396
+ while (this.replayDecision === null) {
11397
+ if (page.isClosed() || this.stopping) return null;
11398
+ await new Promise((resolve) => setTimeout(resolve, DECISION_POLL_MS));
11399
+ }
11400
+ return this.replayDecision;
11401
+ }
11402
+ /** A janela fechada pelo usuário descarta a gravação, pelo mesmo caminho do cancelar da pill. */
11403
+ handleExternalClose(onRequestStop, hooks) {
11404
+ if (this.stopping || !this.context) return;
11405
+ const discard = hooks.onCancelRequested;
11406
+ if (!discard) {
11407
+ onRequestStop();
11408
+ return;
11409
+ }
11410
+ Promise.resolve(discard()).catch(() => void 0);
11013
11411
  }
11014
11412
  async stop() {
11015
11413
  var _a, _b, _c, _d, _e;
11016
11414
  if (!this.context) {
11017
11415
  return { sessionId: null, storageState: null };
11018
11416
  }
11417
+ this.stopping = true;
11019
11418
  const sessionId = this.sessionId;
11020
11419
  const wasScreencasting = this.screencastStarted;
11021
11420
  const storageState = await this.withTimeout(
@@ -11124,6 +11523,10 @@ class RecorderService {
11124
11523
  }
11125
11524
  return this.page;
11126
11525
  }
11526
+ /** A mesma decisão que a cortina manda; o shadow fechado dela não é alcançável de fora. */
11527
+ decideReplay(decision) {
11528
+ this.replayDecision = decision;
11529
+ }
11127
11530
  async debugGoto(url) {
11128
11531
  const page = await this.waitForPage();
11129
11532
  await page.goto(url, { waitUntil: "domcontentloaded" });
@@ -11137,6 +11540,11 @@ class RecorderService {
11137
11540
  await page.fill(selector, value);
11138
11541
  await page.locator(selector).blur();
11139
11542
  }
11543
+ /** Fecha a página gravada como se o usuário tivesse fechado a janela na mão. */
11544
+ async debugClosePage() {
11545
+ const page = await this.waitForPage();
11546
+ await page.close();
11547
+ }
11140
11548
  async withTimeout(promise, timeoutMs, fallback) {
11141
11549
  let timer;
11142
11550
  const timeout = new Promise((resolve) => {
@@ -12053,7 +12461,7 @@ class SettingsService {
12053
12461
  const result = await pingModel(config);
12054
12462
  return { ok: result.ok, model: input.model, elapsed_ms: Date.now() - started };
12055
12463
  }
12056
- /** Se há provedor suportado e modelo informado ou seja, se dá para chamar um modelo agora. */
12464
+ /** Se há provedor suportado e modelo informado, ou seja, se dá para chamar um modelo agora. */
12057
12465
  async canUseAi() {
12058
12466
  const config = await this.resolved();
12059
12467
  if (config.provider === "" || !isSupported(config.provider)) return false;
@@ -12149,7 +12557,7 @@ const _6m_lBKCDxxJVPiXUa9aPgLPWTARgtjNWNP4gmc5uKfw = defineNitroPlugin((nitroApp
12149
12557
  });
12150
12558
 
12151
12559
  const plugins = [
12152
- _3GHuaEHbN7x8hvhQFCljS3VzP_8pjD_uFL_nfqe0uBM,
12560
+ _LcDxosuGhTjRcGIch8IhbLNRAy3WkRY7Yz5xZ8xTbt4,
12153
12561
  _yH7YZdbstDcFaJJaYFYHnMwGmlUt90Oge5psRI1PQTY,
12154
12562
  _dvfdpqaA0oXDJsjGNFSZwFIva_b9H7PyZ0KB7S4mwm8,
12155
12563
  _6m_lBKCDxxJVPiXUa9aPgLPWTARgtjNWNP4gmc5uKfw
@@ -12159,513 +12567,338 @@ const assets = {
12159
12567
  "/favicon.svg": {
12160
12568
  "type": "image/svg+xml",
12161
12569
  "etag": "\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"",
12162
- "mtime": "2026-08-21T21:28:18.383Z",
12570
+ "mtime": "2026-08-25T16:47:40.499Z",
12163
12571
  "size": 921,
12164
12572
  "path": "../public/favicon.svg"
12165
12573
  },
12166
- "/_nuxt/ANcp5QFz.js": {
12574
+ "/_nuxt/AC3CibKK.js": {
12167
12575
  "type": "text/javascript; charset=utf-8",
12168
- "etag": "\"164b-uf1Uob8sh8MZqP91LA+dZ1Tx6dg\"",
12169
- "mtime": "2026-08-21T21:28:18.367Z",
12170
- "size": 5707,
12171
- "path": "../public/_nuxt/ANcp5QFz.js"
12576
+ "etag": "\"16f16-hRhdwVMHbHZ9BJ6MiJBbzIxvfUk\"",
12577
+ "mtime": "2026-08-25T16:47:40.494Z",
12578
+ "size": 93974,
12579
+ "path": "../public/_nuxt/AC3CibKK.js"
12172
12580
  },
12173
- "/_nuxt/5GgR1mbX.js": {
12174
- "type": "text/javascript; charset=utf-8",
12175
- "etag": "\"893-DbaUWnhdDtE/x/5eZXWGpnU2TQQ\"",
12176
- "mtime": "2026-08-21T21:28:18.367Z",
12177
- "size": 2195,
12178
- "path": "../public/_nuxt/5GgR1mbX.js"
12179
- },
12180
- "/_nuxt/BDNMzG2s2.js": {
12581
+ "/_nuxt/BDNMzG2s.js": {
12181
12582
  "type": "text/javascript; charset=utf-8",
12182
12583
  "etag": "\"54-MasMfSk/A98C3Gn9uIOxtFxkWNw\"",
12183
- "mtime": "2026-08-21T21:28:18.367Z",
12584
+ "mtime": "2026-08-25T16:47:40.493Z",
12184
12585
  "size": 84,
12185
- "path": "../public/_nuxt/BDNMzG2s2.js"
12186
- },
12187
- "/_nuxt/BEFJRHhA2.js": {
12188
- "type": "text/javascript; charset=utf-8",
12189
- "etag": "\"d56-tBy26GgOjkknUMfbGsIIVG6gBH0\"",
12190
- "mtime": "2026-08-21T21:28:18.367Z",
12191
- "size": 3414,
12192
- "path": "../public/_nuxt/BEFJRHhA2.js"
12193
- },
12194
- "/_nuxt/BEk00u4_.js": {
12195
- "type": "text/javascript; charset=utf-8",
12196
- "etag": "\"22d6-s9qlvXRsBzdcF6h5ZLjdLGQoQSM\"",
12197
- "mtime": "2026-08-21T21:28:18.375Z",
12198
- "size": 8918,
12199
- "path": "../public/_nuxt/BEk00u4_.js"
12200
- },
12201
- "/_nuxt/BEQgcp5R.js": {
12202
- "type": "text/javascript; charset=utf-8",
12203
- "etag": "\"23b50-mpkzkb8N5qHVb35K0Lrc0wI0cog\"",
12204
- "mtime": "2026-08-21T21:28:18.375Z",
12205
- "size": 146256,
12206
- "path": "../public/_nuxt/BEQgcp5R.js"
12207
- },
12208
- "/_nuxt/BGdmRvCK2.js": {
12209
- "type": "text/javascript; charset=utf-8",
12210
- "etag": "\"16b5-Sshhy3WKzOt1UoHLHuiHM1ftX24\"",
12211
- "mtime": "2026-08-21T21:28:18.375Z",
12212
- "size": 5813,
12213
- "path": "../public/_nuxt/BGdmRvCK2.js"
12214
- },
12215
- "/_nuxt/BMLYuU_e.js": {
12216
- "type": "text/javascript; charset=utf-8",
12217
- "etag": "\"3dab-kZxtB0CA6BiZ2amdnuWc6ncvHmM\"",
12218
- "mtime": "2026-08-21T21:28:18.376Z",
12219
- "size": 15787,
12220
- "path": "../public/_nuxt/BMLYuU_e.js"
12221
- },
12222
- "/_nuxt/BWJpSLJL.js": {
12223
- "type": "text/javascript; charset=utf-8",
12224
- "etag": "\"2e79-jNhWzXvsdMsdyMtx8aG2yYyblTo\"",
12225
- "mtime": "2026-08-21T21:28:18.376Z",
12226
- "size": 11897,
12227
- "path": "../public/_nuxt/BWJpSLJL.js"
12228
- },
12229
- "/_nuxt/BXpPYfMx.js": {
12230
- "type": "text/javascript; charset=utf-8",
12231
- "etag": "\"297-WDnSh+WeblMh3+gF40okc6lIHac\"",
12232
- "mtime": "2026-08-21T21:28:18.376Z",
12233
- "size": 663,
12234
- "path": "../public/_nuxt/BXpPYfMx.js"
12235
- },
12236
- "/_nuxt/BbjTtCyI.js": {
12237
- "type": "text/javascript; charset=utf-8",
12238
- "etag": "\"6b6f-yD+6UaiyIgirUyBFRLKiEcNyltI\"",
12239
- "mtime": "2026-08-21T21:28:18.376Z",
12240
- "size": 27503,
12241
- "path": "../public/_nuxt/BbjTtCyI.js"
12242
- },
12243
- "/_nuxt/Bp3A7I5W2.js": {
12244
- "type": "text/javascript; charset=utf-8",
12245
- "etag": "\"843-3mo9lfGSYaqSiT7MxB/1kVQ/MWg\"",
12246
- "mtime": "2026-08-21T21:28:18.376Z",
12247
- "size": 2115,
12248
- "path": "../public/_nuxt/Bp3A7I5W2.js"
12586
+ "path": "../public/_nuxt/BDNMzG2s.js"
12249
12587
  },
12250
- "/_nuxt/BuOb9NX0.js": {
12588
+ "/_nuxt/BGc2VNce.js": {
12251
12589
  "type": "text/javascript; charset=utf-8",
12252
- "etag": "\"1883-WVeeplAhb0jhWcoYBpmp6milqUA\"",
12253
- "mtime": "2026-08-21T21:28:18.376Z",
12254
- "size": 6275,
12255
- "path": "../public/_nuxt/BuOb9NX0.js"
12590
+ "etag": "\"6360-ymMUn4JqDsGeLcprajyVLOXiiyY\"",
12591
+ "mtime": "2026-08-25T16:47:40.494Z",
12592
+ "size": 25440,
12593
+ "path": "../public/_nuxt/BGc2VNce.js"
12256
12594
  },
12257
- "/_nuxt/C1tNhfTr.js": {
12595
+ "/_nuxt/BNJ2GN0A.js": {
12258
12596
  "type": "text/javascript; charset=utf-8",
12259
- "etag": "\"555-IMGU9sHMGWm9WCAvMwJ6sXGyqKY\"",
12260
- "mtime": "2026-08-21T21:28:18.376Z",
12261
- "size": 1365,
12262
- "path": "../public/_nuxt/C1tNhfTr.js"
12597
+ "etag": "\"eb2-JrCFAQb//FWEjm8Clw2eOuQO3T0\"",
12598
+ "mtime": "2026-08-25T16:47:40.493Z",
12599
+ "size": 3762,
12600
+ "path": "../public/_nuxt/BNJ2GN0A.js"
12263
12601
  },
12264
- "/_nuxt/C2KIeuhG.js": {
12602
+ "/_nuxt/BN4XOpVt.js": {
12265
12603
  "type": "text/javascript; charset=utf-8",
12266
- "etag": "\"2d2-4tv8B+IC/YzK6QMJVs+gZcpjwlI\"",
12267
- "mtime": "2026-08-21T21:28:18.376Z",
12268
- "size": 722,
12269
- "path": "../public/_nuxt/C2KIeuhG.js"
12604
+ "etag": "\"9c34-/+Rlbds6oLARSVvWhJI+etg3jxo\"",
12605
+ "mtime": "2026-08-25T16:47:40.495Z",
12606
+ "size": 39988,
12607
+ "path": "../public/_nuxt/BN4XOpVt.js"
12270
12608
  },
12271
- "/_nuxt/CBVnImq2.js": {
12609
+ "/_nuxt/BP52ABGx.js": {
12272
12610
  "type": "text/javascript; charset=utf-8",
12273
- "etag": "\"23df-qMiAb4BUsXEKqx8xrqVlHW+03a0\"",
12274
- "mtime": "2026-08-21T21:28:18.376Z",
12275
- "size": 9183,
12276
- "path": "../public/_nuxt/CBVnImq2.js"
12611
+ "etag": "\"c64b-nNZL6URzmeI6zHLbBPnaI/3Qvpo\"",
12612
+ "mtime": "2026-08-25T16:47:40.493Z",
12613
+ "size": 50763,
12614
+ "path": "../public/_nuxt/BP52ABGx.js"
12277
12615
  },
12278
- "/_nuxt/CC0OsuIz.js": {
12616
+ "/_nuxt/BWcsrofD.js": {
12279
12617
  "type": "text/javascript; charset=utf-8",
12280
- "etag": "\"1b658-FH0gp3/auEFBaMr9CNX1l4MVryM\"",
12281
- "mtime": "2026-08-21T21:28:18.376Z",
12282
- "size": 112216,
12283
- "path": "../public/_nuxt/CC0OsuIz.js"
12618
+ "etag": "\"2355b-ZUapaAEP2Khr/Pb93GNpJBPZe28\"",
12619
+ "mtime": "2026-08-25T16:47:40.493Z",
12620
+ "size": 144731,
12621
+ "path": "../public/_nuxt/BWcsrofD.js"
12284
12622
  },
12285
- "/_nuxt/CIFC2HNk.js": {
12623
+ "/_nuxt/Bqp63OdK.js": {
12286
12624
  "type": "text/javascript; charset=utf-8",
12287
- "etag": "\"9c7c-L5x/TgOanE8qi7gToYMSDCsfFVU\"",
12288
- "mtime": "2026-08-21T21:28:18.377Z",
12289
- "size": 40060,
12290
- "path": "../public/_nuxt/CIFC2HNk.js"
12625
+ "etag": "\"15622-rCYpzvoJACg7xeqQhw/8SbrVI+M\"",
12626
+ "mtime": "2026-08-25T16:47:40.493Z",
12627
+ "size": 87586,
12628
+ "path": "../public/_nuxt/Bqp63OdK.js"
12291
12629
  },
12292
- "/_nuxt/CKps1Vc12.js": {
12630
+ "/_nuxt/CF8y5KTS.js": {
12293
12631
  "type": "text/javascript; charset=utf-8",
12294
- "etag": "\"8c1a-sGgOY3H/BjQtSI4134ZRlVbsPaE\"",
12295
- "mtime": "2026-08-21T21:28:18.376Z",
12296
- "size": 35866,
12297
- "path": "../public/_nuxt/CKps1Vc12.js"
12632
+ "etag": "\"16a13-qWarj4XDxGAgIWXgAHUsQctMUWc\"",
12633
+ "mtime": "2026-08-25T16:47:40.494Z",
12634
+ "size": 92691,
12635
+ "path": "../public/_nuxt/CF8y5KTS.js"
12298
12636
  },
12299
12637
  "/_nuxt/CO3cjsl1.js": {
12300
12638
  "type": "text/javascript; charset=utf-8",
12301
12639
  "etag": "\"36de-2NxLUyh/dpwLgyuiQ1dTlDvpUdo\"",
12302
- "mtime": "2026-08-21T21:28:18.376Z",
12640
+ "mtime": "2026-08-25T16:47:40.494Z",
12303
12641
  "size": 14046,
12304
12642
  "path": "../public/_nuxt/CO3cjsl1.js"
12305
12643
  },
12306
- "/_nuxt/CRH0iqnQ.js": {
12307
- "type": "text/javascript; charset=utf-8",
12308
- "etag": "\"28ee-mlEAtJh5V2lxVpCZNYnrmCmdCVw\"",
12309
- "mtime": "2026-08-21T21:28:18.376Z",
12310
- "size": 10478,
12311
- "path": "../public/_nuxt/CRH0iqnQ.js"
12312
- },
12313
- "/_nuxt/CTLrtTtn2.js": {
12314
- "type": "text/javascript; charset=utf-8",
12315
- "etag": "\"17c6c-5Cv/WpFhgnvIZEiwuf0C7MskWU0\"",
12316
- "mtime": "2026-08-21T21:28:18.377Z",
12317
- "size": 97388,
12318
- "path": "../public/_nuxt/CTLrtTtn2.js"
12319
- },
12320
- "/_nuxt/CTqLwyQP.js": {
12321
- "type": "text/javascript; charset=utf-8",
12322
- "etag": "\"262-DuQVjVm6tySeIfv3NrSsnDniZ2A\"",
12323
- "mtime": "2026-08-21T21:28:18.377Z",
12324
- "size": 610,
12325
- "path": "../public/_nuxt/CTqLwyQP.js"
12326
- },
12327
- "/_nuxt/C5uJN_MU.js": {
12328
- "type": "text/javascript; charset=utf-8",
12329
- "etag": "\"e528-d2Q1RVsrcdT28KoT+268fD4PiZM\"",
12330
- "mtime": "2026-08-21T21:28:18.376Z",
12331
- "size": 58664,
12332
- "path": "../public/_nuxt/C5uJN_MU.js"
12333
- },
12334
- "/_nuxt/CU7sPrmY.js": {
12335
- "type": "text/javascript; charset=utf-8",
12336
- "etag": "\"15df-qk6zlzi1WvB3XblsrXXkWBCSqno\"",
12337
- "mtime": "2026-08-21T21:28:18.377Z",
12338
- "size": 5599,
12339
- "path": "../public/_nuxt/CU7sPrmY.js"
12340
- },
12341
- "/_nuxt/CfOqJVtU.js": {
12342
- "type": "text/javascript; charset=utf-8",
12343
- "etag": "\"5fc-EGQ5LRG5cJFqVFN1I/pOoJERTXM\"",
12344
- "mtime": "2026-08-21T21:28:18.377Z",
12345
- "size": 1532,
12346
- "path": "../public/_nuxt/CfOqJVtU.js"
12347
- },
12348
- "/_nuxt/Clv7nJ_T2.js": {
12644
+ "/_nuxt/CUTaKHid.js": {
12349
12645
  "type": "text/javascript; charset=utf-8",
12350
- "etag": "\"6ea-FhDx7jEvtiX2TC+UY0cSK01jVDs\"",
12351
- "mtime": "2026-08-21T21:28:18.377Z",
12352
- "size": 1770,
12353
- "path": "../public/_nuxt/Clv7nJ_T2.js"
12646
+ "etag": "\"d55-LrZPKIuX7jTFkqWGTuj9UgRn4SQ\"",
12647
+ "mtime": "2026-08-25T16:47:40.494Z",
12648
+ "size": 3413,
12649
+ "path": "../public/_nuxt/CUTaKHid.js"
12354
12650
  },
12355
- "/_nuxt/Ch1EeKHP.js": {
12651
+ "/_nuxt/CZEhodn6.js": {
12356
12652
  "type": "text/javascript; charset=utf-8",
12357
- "etag": "\"46de-E46fRh34lfchMEPLUm47F56IwyU\"",
12358
- "mtime": "2026-08-21T21:28:18.377Z",
12359
- "size": 18142,
12360
- "path": "../public/_nuxt/Ch1EeKHP.js"
12653
+ "etag": "\"515-+1ZmhWEGvjtROlHAlFz8DHik9Yc\"",
12654
+ "mtime": "2026-08-25T16:47:40.495Z",
12655
+ "size": 1301,
12656
+ "path": "../public/_nuxt/CZEhodn6.js"
12361
12657
  },
12362
- "/_nuxt/D-7v7DZs.js": {
12658
+ "/_nuxt/D1ge6Bwo.js": {
12363
12659
  "type": "text/javascript; charset=utf-8",
12364
- "etag": "\"692-NiWxxkGNeNt11fCMVrUdhExldxU\"",
12365
- "mtime": "2026-08-21T21:28:18.378Z",
12366
- "size": 1682,
12367
- "path": "../public/_nuxt/D-7v7DZs.js"
12660
+ "etag": "\"87a-7OAU59QpMjrm3Un7wz+8giGy2vQ\"",
12661
+ "mtime": "2026-08-25T16:47:40.494Z",
12662
+ "size": 2170,
12663
+ "path": "../public/_nuxt/D1ge6Bwo.js"
12368
12664
  },
12369
- "/_nuxt/D4ykC_lY2.js": {
12665
+ "/_nuxt/D2UpbqeN.js": {
12370
12666
  "type": "text/javascript; charset=utf-8",
12371
- "etag": "\"4401-22YGJAc9c1XoJ15tcIkblR7X/TI\"",
12372
- "mtime": "2026-08-21T21:28:18.377Z",
12373
- "size": 17409,
12374
- "path": "../public/_nuxt/D4ykC_lY2.js"
12375
- },
12376
- "/_nuxt/D5HF1Z0f2.js": {
12377
- "type": "text/javascript; charset=utf-8",
12378
- "etag": "\"eb3-BAgBzd1c3v82aSbZqkVQFzbBJSE\"",
12379
- "mtime": "2026-08-21T21:28:18.377Z",
12380
- "size": 3763,
12381
- "path": "../public/_nuxt/D5HF1Z0f2.js"
12667
+ "etag": "\"1b05e-rla1gLWinFQ5VmlnRmpDr+hc3c4\"",
12668
+ "mtime": "2026-08-25T16:47:40.494Z",
12669
+ "size": 110686,
12670
+ "path": "../public/_nuxt/D2UpbqeN.js"
12382
12671
  },
12383
12672
  "/_nuxt/DJxuKf9Z.js": {
12384
12673
  "type": "text/javascript; charset=utf-8",
12385
12674
  "etag": "\"1c5c-bNrRkSFjTHAkZrXz3cy5zKx/BIA\"",
12386
- "mtime": "2026-08-21T21:28:18.377Z",
12675
+ "mtime": "2026-08-25T16:47:40.494Z",
12387
12676
  "size": 7260,
12388
12677
  "path": "../public/_nuxt/DJxuKf9Z.js"
12389
12678
  },
12390
- "/_nuxt/DEJ3sRrh2.js": {
12679
+ "/_nuxt/DDKd6Dxq.js": {
12391
12680
  "type": "text/javascript; charset=utf-8",
12392
- "etag": "\"ce0-tFkUGY3gkO2DmgdyV2SwZ9OD6Zw\"",
12393
- "mtime": "2026-08-21T21:28:18.377Z",
12394
- "size": 3296,
12395
- "path": "../public/_nuxt/DEJ3sRrh2.js"
12681
+ "etag": "\"25d-tO2zs2FmJKGK9/lunRhbJBk3hLM\"",
12682
+ "mtime": "2026-08-25T16:47:40.494Z",
12683
+ "size": 605,
12684
+ "path": "../public/_nuxt/DDKd6Dxq.js"
12396
12685
  },
12397
12686
  "/_nuxt/DMHcp4U1.js": {
12398
12687
  "type": "text/javascript; charset=utf-8",
12399
12688
  "etag": "\"16ce0-7tl1x4uvYFOEx3KLM3hMQ0Uztk4\"",
12400
- "mtime": "2026-08-21T21:28:18.378Z",
12689
+ "mtime": "2026-08-25T16:47:40.494Z",
12401
12690
  "size": 93408,
12402
12691
  "path": "../public/_nuxt/DMHcp4U1.js"
12403
12692
  },
12404
- "/_nuxt/DPM_BYFz2.js": {
12405
- "type": "text/javascript; charset=utf-8",
12406
- "etag": "\"c7c-/yUGJZX4Gc4j79BXFG/VkarrAN4\"",
12407
- "mtime": "2026-08-21T21:28:18.377Z",
12408
- "size": 3196,
12409
- "path": "../public/_nuxt/DPM_BYFz2.js"
12410
- },
12411
- "/_nuxt/DDHUGtv32.js": {
12693
+ "/_nuxt/Cym5RBDq.js": {
12412
12694
  "type": "text/javascript; charset=utf-8",
12413
- "etag": "\"25f4-QPpdsaJZ2LTNyNuLKHyBYCVTF3s\"",
12414
- "mtime": "2026-08-21T21:28:18.377Z",
12415
- "size": 9716,
12416
- "path": "../public/_nuxt/DDHUGtv32.js"
12695
+ "etag": "\"186d-a3ct9EBPZEvzqd5mIQKXf5odCNc\"",
12696
+ "mtime": "2026-08-25T16:47:40.494Z",
12697
+ "size": 6253,
12698
+ "path": "../public/_nuxt/Cym5RBDq.js"
12417
12699
  },
12418
- "/_nuxt/Dpnaldxf2.js": {
12700
+ "/_nuxt/D_FJunXs.js": {
12419
12701
  "type": "text/javascript; charset=utf-8",
12420
- "etag": "\"b3d7-Wzt9YMKJ6cRPXAhVaG/DCO5oS4E\"",
12421
- "mtime": "2026-08-21T21:28:18.378Z",
12422
- "size": 46039,
12423
- "path": "../public/_nuxt/Dpnaldxf2.js"
12702
+ "etag": "\"17c2d-N8zwYrc/eewEnpbYfXfHeNH5WEQ\"",
12703
+ "mtime": "2026-08-25T16:47:40.494Z",
12704
+ "size": 97325,
12705
+ "path": "../public/_nuxt/D_FJunXs.js"
12424
12706
  },
12425
- "/_nuxt/DXLPf3t6.js": {
12707
+ "/_nuxt/DoQkJV4U.js": {
12426
12708
  "type": "text/javascript; charset=utf-8",
12427
- "etag": "\"4733-isGV9waZI+6EjJjNlzwuJ+o1acE\"",
12428
- "mtime": "2026-08-21T21:28:18.377Z",
12429
- "size": 18227,
12430
- "path": "../public/_nuxt/DXLPf3t6.js"
12709
+ "etag": "\"23c6-Jgoeyig8hkUN2UpfjjDllJBu9H4\"",
12710
+ "mtime": "2026-08-25T16:47:40.494Z",
12711
+ "size": 9158,
12712
+ "path": "../public/_nuxt/DoQkJV4U.js"
12431
12713
  },
12432
- "/_nuxt/DtuQPKVG.js": {
12714
+ "/_nuxt/JwPm-b3T.js": {
12433
12715
  "type": "text/javascript; charset=utf-8",
12434
- "etag": "\"511-mS61dRsD3UEsuVYWfWD4Lep3nmY\"",
12435
- "mtime": "2026-08-21T21:28:18.378Z",
12436
- "size": 1297,
12437
- "path": "../public/_nuxt/DtuQPKVG.js"
12438
- },
12439
- "/_nuxt/FvWrDx_z.js": {
12440
- "type": "text/javascript; charset=utf-8",
12441
- "etag": "\"819-DP4Vwwy4P5vqmcUZEmGgWOiKfr4\"",
12442
- "mtime": "2026-08-21T21:28:18.378Z",
12443
- "size": 2073,
12444
- "path": "../public/_nuxt/FvWrDx_z.js"
12445
- },
12446
- "/_nuxt/Gcazu-lR.js": {
12447
- "type": "text/javascript; charset=utf-8",
12448
- "etag": "\"6cf3-8JsDYiSzcRpJ9H5NPkIlhh192dk\"",
12449
- "mtime": "2026-08-21T21:28:18.378Z",
12450
- "size": 27891,
12451
- "path": "../public/_nuxt/Gcazu-lR.js"
12452
- },
12453
- "/_nuxt/XDsaI4JL.js": {
12454
- "type": "text/javascript; charset=utf-8",
12455
- "etag": "\"111-CAV/HXAIRkbZ+wXj5PMuZ34VwL0\"",
12456
- "mtime": "2026-08-21T21:28:18.378Z",
12457
- "size": 273,
12458
- "path": "../public/_nuxt/XDsaI4JL.js"
12459
- },
12460
- "/_nuxt/QcKfgokC.js": {
12461
- "type": "text/javascript; charset=utf-8",
12462
- "etag": "\"6fc7-nX9VUTird+t8oXsiFEHG4o+3KZc\"",
12463
- "mtime": "2026-08-21T21:28:18.378Z",
12464
- "size": 28615,
12465
- "path": "../public/_nuxt/QcKfgokC.js"
12716
+ "etag": "\"50ee-/8EjYoFGJrd09SQSYZ/o6j83Oys\"",
12717
+ "mtime": "2026-08-25T16:47:40.495Z",
12718
+ "size": 20718,
12719
+ "path": "../public/_nuxt/JwPm-b3T.js"
12466
12720
  },
12467
12721
  "/_nuxt/cRY3ZoRz.js": {
12468
12722
  "type": "text/javascript; charset=utf-8",
12469
12723
  "etag": "\"9fb5-MfhmWN2hIk0l6KrdJYZGSmgXV/Q\"",
12470
- "mtime": "2026-08-21T21:28:18.378Z",
12724
+ "mtime": "2026-08-25T16:47:40.495Z",
12471
12725
  "size": 40885,
12472
12726
  "path": "../public/_nuxt/cRY3ZoRz.js"
12473
12727
  },
12474
- "/_nuxt/error-404.DopINOT1.css": {
12475
- "type": "text/css; charset=utf-8",
12476
- "etag": "\"97d-K8oApxLoQ3/i1Xmp2nwxFs6GN2s\"",
12477
- "mtime": "2026-08-21T21:28:18.378Z",
12478
- "size": 2429,
12479
- "path": "../public/_nuxt/error-404.DopINOT1.css"
12480
- },
12481
- "/_nuxt/error-500.D7goJC9g.css": {
12482
- "type": "text/css; charset=utf-8",
12483
- "etag": "\"772-NbTPjEvoainsVYrrLesY3ZyqIC8\"",
12484
- "mtime": "2026-08-21T21:28:18.378Z",
12485
- "size": 1906,
12486
- "path": "../public/_nuxt/error-500.D7goJC9g.css"
12728
+ "/_nuxt/cnFSOQCu.js": {
12729
+ "type": "text/javascript; charset=utf-8",
12730
+ "etag": "\"5bfc-mzn4BrGtKCqLwZcJBVquKn+Qq+g\"",
12731
+ "mtime": "2026-08-25T16:47:40.495Z",
12732
+ "size": 23548,
12733
+ "path": "../public/_nuxt/cnFSOQCu.js"
12487
12734
  },
12488
- "/_nuxt/b5tj-z25.js": {
12735
+ "/_nuxt/Dc2A-6xl.js": {
12489
12736
  "type": "text/javascript; charset=utf-8",
12490
- "etag": "\"15633-OhFvblIl1RLveoXf+49Sbs9f0kM\"",
12491
- "mtime": "2026-08-21T21:28:18.379Z",
12492
- "size": 87603,
12493
- "path": "../public/_nuxt/b5tj-z25.js"
12737
+ "etag": "\"e36c-NJmOHBLqNQvcbhH3Sy+r5u3UzKc\"",
12738
+ "mtime": "2026-08-25T16:47:40.494Z",
12739
+ "size": 58220,
12740
+ "path": "../public/_nuxt/Dc2A-6xl.js"
12494
12741
  },
12495
- "/_nuxt/entry.m-nAFUcz.css": {
12742
+ "/_nuxt/error-500.DNftkU4A.css": {
12496
12743
  "type": "text/css; charset=utf-8",
12497
- "etag": "\"3198d-FpRSC7fW/e25ugF6FApOIYfwjj8\"",
12498
- "mtime": "2026-08-21T21:28:18.378Z",
12499
- "size": 203149,
12500
- "path": "../public/_nuxt/entry.m-nAFUcz.css"
12501
- },
12502
- "/_nuxt/f0o80Gcm.js": {
12503
- "type": "text/javascript; charset=utf-8",
12504
- "etag": "\"a7f-5x2eRDUOefwC3QPg0kVkSDUrbtE\"",
12505
- "mtime": "2026-08-21T21:28:18.378Z",
12506
- "size": 2687,
12507
- "path": "../public/_nuxt/f0o80Gcm.js"
12744
+ "etag": "\"772-Nozjf8wfq2pvFeipXpDsPoSVm6c\"",
12745
+ "mtime": "2026-08-25T16:47:40.495Z",
12746
+ "size": 1906,
12747
+ "path": "../public/_nuxt/error-500.DNftkU4A.css"
12508
12748
  },
12509
12749
  "/_nuxt/hePW80VL.js": {
12510
12750
  "type": "text/javascript; charset=utf-8",
12511
12751
  "etag": "\"2cc-fA8td6k29UVF6JoPfhOPkceTK1M\"",
12512
- "mtime": "2026-08-21T21:28:18.378Z",
12752
+ "mtime": "2026-08-25T16:47:40.495Z",
12513
12753
  "size": 716,
12514
12754
  "path": "../public/_nuxt/hePW80VL.js"
12515
12755
  },
12516
- "/_nuxt/k5q7GKnv.js": {
12517
- "type": "text/javascript; charset=utf-8",
12518
- "etag": "\"1d05-UsvZCdgKyTF4YGmVie85GyDt974\"",
12519
- "mtime": "2026-08-21T21:28:18.378Z",
12520
- "size": 7429,
12521
- "path": "../public/_nuxt/k5q7GKnv.js"
12756
+ "/_nuxt/tags.C6gBUbEB.css": {
12757
+ "type": "text/css; charset=utf-8",
12758
+ "etag": "\"661-77+GIe2IzeGFfKE7XA9TZXkoems\"",
12759
+ "mtime": "2026-08-25T16:47:40.495Z",
12760
+ "size": 1633,
12761
+ "path": "../public/_nuxt/tags.C6gBUbEB.css"
12522
12762
  },
12523
- "/_nuxt/modal.3A_G7d4A.css": {
12763
+ "/_nuxt/entry.BmTN_nlL.css": {
12524
12764
  "type": "text/css; charset=utf-8",
12525
- "etag": "\"582-5Yw0hoh/s2yrjXWjWJGHHaH7HI0\"",
12526
- "mtime": "2026-08-21T21:28:18.378Z",
12527
- "size": 1410,
12528
- "path": "../public/_nuxt/modal.3A_G7d4A.css"
12765
+ "etag": "\"31b61-2xPGlP6UWcn2WZaUtv4o1034vKY\"",
12766
+ "mtime": "2026-08-25T16:47:40.496Z",
12767
+ "size": 203617,
12768
+ "path": "../public/_nuxt/entry.BmTN_nlL.css"
12529
12769
  },
12530
- "/_nuxt/tLr-SJaf.js": {
12531
- "type": "text/javascript; charset=utf-8",
12532
- "etag": "\"401-Xd+RIl02qzT7vdWX4cShxFl1NGs\"",
12533
- "mtime": "2026-08-21T21:28:18.378Z",
12534
- "size": 1025,
12535
- "path": "../public/_nuxt/tLr-SJaf.js"
12770
+ "/_nuxt/error-404.CkhL7nxg.css": {
12771
+ "type": "text/css; charset=utf-8",
12772
+ "etag": "\"97d-WuEfgfo5R5nqwpH3Wd3r4niAXbc\"",
12773
+ "mtime": "2026-08-25T16:47:40.495Z",
12774
+ "size": 2429,
12775
+ "path": "../public/_nuxt/error-404.CkhL7nxg.css"
12536
12776
  },
12537
12777
  "/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2": {
12538
12778
  "type": "font/woff2",
12539
12779
  "etag": "\"21b4-5vUr0lwu56eej0WYd8CeVlrshdk\"",
12540
- "mtime": "2026-08-21T21:28:18.350Z",
12780
+ "mtime": "2026-08-25T16:47:40.477Z",
12541
12781
  "size": 8628,
12542
12782
  "path": "../public/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2"
12543
12783
  },
12544
12784
  "/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2": {
12545
12785
  "type": "font/woff2",
12546
12786
  "etag": "\"2144-wqgN+yL7WN+AVsPgk3XDykxurXk\"",
12547
- "mtime": "2026-08-21T21:28:18.351Z",
12787
+ "mtime": "2026-08-25T16:47:40.479Z",
12548
12788
  "size": 8516,
12549
12789
  "path": "../public/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2"
12550
12790
  },
12551
12791
  "/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2": {
12552
12792
  "type": "font/woff2",
12553
12793
  "etag": "\"177c-7sGmeKySE5GVzm0dGyjV5D08aoU\"",
12554
- "mtime": "2026-08-21T21:28:18.350Z",
12794
+ "mtime": "2026-08-25T16:47:40.478Z",
12555
12795
  "size": 6012,
12556
12796
  "path": "../public/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2"
12557
12797
  },
12558
12798
  "/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2": {
12559
12799
  "type": "font/woff2",
12560
12800
  "etag": "\"1f38-//55P1Jgd0CYSpMe5xWKqC25SnI\"",
12561
- "mtime": "2026-08-21T21:28:18.350Z",
12801
+ "mtime": "2026-08-25T16:47:40.477Z",
12562
12802
  "size": 7992,
12563
12803
  "path": "../public/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2"
12564
12804
  },
12805
+ "/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2": {
12806
+ "type": "font/woff2",
12807
+ "etag": "\"1edc-fkjVSx3x0/ZX/JAidZAwgYP/ndw\"",
12808
+ "mtime": "2026-08-25T16:47:40.478Z",
12809
+ "size": 7900,
12810
+ "path": "../public/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2"
12811
+ },
12565
12812
  "/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2": {
12566
12813
  "type": "font/woff2",
12567
12814
  "etag": "\"2224-DOM9SokVAMep6ZvnjMP9IsHmo0o\"",
12568
- "mtime": "2026-08-21T21:28:18.350Z",
12815
+ "mtime": "2026-08-25T16:47:40.478Z",
12569
12816
  "size": 8740,
12570
12817
  "path": "../public/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2"
12571
12818
  },
12572
12819
  "/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2": {
12573
12820
  "type": "font/woff2",
12574
12821
  "etag": "\"177c-80/RBhNFJqcP3UljAelorcOubsE\"",
12575
- "mtime": "2026-08-21T21:28:18.350Z",
12822
+ "mtime": "2026-08-25T16:47:40.478Z",
12576
12823
  "size": 6012,
12577
12824
  "path": "../public/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2"
12578
12825
  },
12579
- "/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2": {
12826
+ "/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2": {
12580
12827
  "type": "font/woff2",
12581
- "etag": "\"1edc-fkjVSx3x0/ZX/JAidZAwgYP/ndw\"",
12582
- "mtime": "2026-08-21T21:28:18.350Z",
12583
- "size": 7900,
12584
- "path": "../public/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2"
12828
+ "etag": "\"1e3c-u6AgwP0EJgeYcv3XkpomC0FIRc0\"",
12829
+ "mtime": "2026-08-25T16:47:40.477Z",
12830
+ "size": 7740,
12831
+ "path": "../public/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2"
12585
12832
  },
12586
12833
  "/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2": {
12587
12834
  "type": "font/woff2",
12588
12835
  "etag": "\"16f0-XEqELcbY5UPEivjwMKtP26b9tNc\"",
12589
- "mtime": "2026-08-21T21:28:18.350Z",
12836
+ "mtime": "2026-08-25T16:47:40.478Z",
12590
12837
  "size": 5872,
12591
12838
  "path": "../public/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2"
12592
12839
  },
12593
12840
  "/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2": {
12594
12841
  "type": "font/woff2",
12595
12842
  "etag": "\"1ea8-avadMHwzrw88TD65bvAepDkPR04\"",
12596
- "mtime": "2026-08-21T21:28:18.350Z",
12843
+ "mtime": "2026-08-25T16:47:40.479Z",
12597
12844
  "size": 7848,
12598
12845
  "path": "../public/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2"
12599
12846
  },
12600
12847
  "/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2": {
12601
12848
  "type": "font/woff2",
12602
12849
  "etag": "\"1548-qD0ozyo93J9OeSW1BKUcbKGjBoQ\"",
12603
- "mtime": "2026-08-21T21:28:18.351Z",
12850
+ "mtime": "2026-08-25T16:47:40.478Z",
12604
12851
  "size": 5448,
12605
12852
  "path": "../public/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2"
12606
12853
  },
12607
12854
  "/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2": {
12608
12855
  "type": "font/woff2",
12609
12856
  "etag": "\"21e4-2xCtTiyjgRAM5Dk9QxxKODBGei4\"",
12610
- "mtime": "2026-08-21T21:28:18.351Z",
12857
+ "mtime": "2026-08-25T16:47:40.478Z",
12611
12858
  "size": 8676,
12612
12859
  "path": "../public/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2"
12613
12860
  },
12614
- "/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2": {
12861
+ "/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2": {
12615
12862
  "type": "font/woff2",
12616
- "etag": "\"1e3c-u6AgwP0EJgeYcv3XkpomC0FIRc0\"",
12617
- "mtime": "2026-08-21T21:28:18.350Z",
12618
- "size": 7740,
12619
- "path": "../public/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2"
12863
+ "etag": "\"15b0-sqzPYvDy9re3PVEvO6N+mfZ0x+M\"",
12864
+ "mtime": "2026-08-25T16:47:40.478Z",
12865
+ "size": 5552,
12866
+ "path": "../public/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2"
12620
12867
  },
12621
12868
  "/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2": {
12622
12869
  "type": "font/woff2",
12623
12870
  "etag": "\"1718-O4VsLbdOi9kDnEH4r+8VOq3o5HU\"",
12624
- "mtime": "2026-08-21T21:28:18.351Z",
12871
+ "mtime": "2026-08-25T16:47:40.479Z",
12625
12872
  "size": 5912,
12626
12873
  "path": "../public/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2"
12627
12874
  },
12628
- "/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2": {
12629
- "type": "font/woff2",
12630
- "etag": "\"1578-DBk4lWQ0jupAQEUE7SJTDlGmrXQ\"",
12631
- "mtime": "2026-08-21T21:28:18.351Z",
12632
- "size": 5496,
12633
- "path": "../public/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2"
12634
- },
12635
- "/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2": {
12636
- "type": "font/woff2",
12637
- "etag": "\"15b0-sqzPYvDy9re3PVEvO6N+mfZ0x+M\"",
12638
- "mtime": "2026-08-21T21:28:18.351Z",
12639
- "size": 5552,
12640
- "path": "../public/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2"
12641
- },
12642
12875
  "/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2": {
12643
12876
  "type": "font/woff2",
12644
12877
  "etag": "\"1608-D9gBKRW7h8xB8fw0DKyUKwCWNaQ\"",
12645
- "mtime": "2026-08-21T21:28:18.351Z",
12878
+ "mtime": "2026-08-25T16:47:40.479Z",
12646
12879
  "size": 5640,
12647
12880
  "path": "../public/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2"
12648
12881
  },
12649
- "/dev/sample-run.webm": {
12650
- "type": "video/webm",
12651
- "etag": "\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"",
12652
- "mtime": "2026-08-21T21:28:18.382Z",
12653
- "size": 184482,
12654
- "path": "../public/dev/sample-run.webm"
12882
+ "/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2": {
12883
+ "type": "font/woff2",
12884
+ "etag": "\"1578-DBk4lWQ0jupAQEUE7SJTDlGmrXQ\"",
12885
+ "mtime": "2026-08-25T16:47:40.479Z",
12886
+ "size": 5496,
12887
+ "path": "../public/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2"
12655
12888
  },
12656
12889
  "/_nuxt/builds/latest.json": {
12657
12890
  "type": "application/json",
12658
- "etag": "\"47-ItzamgWtAbdUUB+WFEI3ptePO+c\"",
12659
- "mtime": "2026-08-21T21:28:18.345Z",
12891
+ "etag": "\"47-qzTs4TH0TM/D55PVKzkl/yN5MwU\"",
12892
+ "mtime": "2026-08-25T16:47:40.471Z",
12660
12893
  "size": 71,
12661
12894
  "path": "../public/_nuxt/builds/latest.json"
12662
12895
  },
12663
- "/_nuxt/builds/meta/bf2cb2c6-2ddb-4f64-9777-e314571fd19d.json": {
12896
+ "/_nuxt/builds/meta/bcd56d50-e1a9-4021-b9df-ab200a81246a.json": {
12664
12897
  "type": "application/json",
12665
- "etag": "\"58-JKWgFrKi8hXoew50iahELRqOzUk\"",
12666
- "mtime": "2026-08-21T21:28:18.341Z",
12898
+ "etag": "\"58-QszcmZyRRv3Of1mqlA8Qy93yXxE\"",
12899
+ "mtime": "2026-08-25T16:47:40.466Z",
12667
12900
  "size": 88,
12668
- "path": "../public/_nuxt/builds/meta/bf2cb2c6-2ddb-4f64-9777-e314571fd19d.json"
12901
+ "path": "../public/_nuxt/builds/meta/bcd56d50-e1a9-4021-b9df-ab200a81246a.json"
12669
12902
  }
12670
12903
  };
12671
12904
 
@@ -12812,7 +13045,7 @@ function getAsset (id) {
12812
13045
 
12813
13046
  const METHODS = /* @__PURE__ */ new Set(["HEAD", "GET"]);
12814
13047
  const EncodingMap = { gzip: ".gz", br: ".br" };
12815
- const _40RWk2 = eventHandler((event) => {
13048
+ const _716Cq4 = eventHandler((event) => {
12816
13049
  if (event.method && !METHODS.has(event.method)) {
12817
13050
  return;
12818
13051
  }
@@ -12885,7 +13118,7 @@ const collections = {
12885
13118
  'simple-icons': () => import('../_/icons4.mjs').then(m => m.default),
12886
13119
  };
12887
13120
 
12888
- const _kBYXJX = defineCachedEventHandler(async (event) => {
13121
+ const _Dty4_8 = defineCachedEventHandler(async (event) => {
12889
13122
  const collectionName = event.context.params?.collection?.replace(/\.json$/, "");
12890
13123
  const collection = collectionName && Object.hasOwn(collections, collectionName) ? await collections[collectionName]?.() : null;
12891
13124
  const apiEndPoint = options.iconifyApiEndpoint;
@@ -12967,9 +13200,13 @@ const _lazy_1cCLWp = () => import('../routes/api/settings/ai.get.mjs');
12967
13200
  const _lazy_WHW6Ad = () => import('../routes/api/settings/ai.put.mjs');
12968
13201
  const _lazy_CmdGri = () => import('../routes/api/settings/ai/models.post.mjs');
12969
13202
  const _lazy_U7M8oI = () => import('../routes/api/settings/ai/ping.post.mjs');
13203
+ const _lazy_allZ49 = () => import('../routes/api/telemetry/report.post.mjs');
12970
13204
  const _lazy_0YyBSd = () => import('../routes/debug/click.post.mjs');
13205
+ const _lazy_VauhsT = () => import('../routes/debug/close-page.post.mjs');
13206
+ const _lazy_UZLlIK = () => import('../routes/debug/erro-de-telemetria.get.mjs');
12971
13207
  const _lazy_kwZv_c = () => import('../routes/debug/fill.post.mjs');
12972
13208
  const _lazy_66j9OP = () => import('../routes/debug/goto.post.mjs');
13209
+ const _lazy_UsMczL = () => import('../routes/debug/replay-decision.post.mjs');
12973
13210
  const _lazy_lMebqj = () => import('../routes/health.get.mjs');
12974
13211
  const _lazy_JohveF = () => import('../routes/recording/_id_.delete.mjs');
12975
13212
  const _lazy_6B6AmM = () => import('../routes/recording/_id_.get.mjs');
@@ -12980,10 +13217,10 @@ const _lazy_um4rCO = () => import('../routes/runner/project/stream.post.mjs');
12980
13217
  const _lazy_OTAkqp = () => import('../routes/runner/spec.post.mjs');
12981
13218
  const _lazy_dIPEDV = () => import('../routes/runner/video.get.mjs');
12982
13219
  const _lazy_3qbquC = () => import('../routes/ws.mjs');
12983
- const _lazy_GNjBRB = () => import('../routes/renderer.mjs').then(function (n) { return n.r; });
13220
+ const _lazy_U0nolm = () => import('../routes/renderer.mjs').then(function (n) { return n.r; });
12984
13221
 
12985
13222
  const handlers = [
12986
- { route: '', handler: _40RWk2, lazy: false, middleware: true, method: undefined },
13223
+ { route: '', handler: _716Cq4, lazy: false, middleware: true, method: undefined },
12987
13224
  { route: '/api/projects/:slug', handler: _lazy_hk2AkS, lazy: true, middleware: false, method: "delete" },
12988
13225
  { route: '/api/projects/:slug', handler: _lazy_Okkwmq, lazy: true, middleware: false, method: "get" },
12989
13226
  { route: '/api/projects/:slug', handler: _lazy_RcC8pl, lazy: true, middleware: false, method: "put" },
@@ -13018,9 +13255,13 @@ const handlers = [
13018
13255
  { route: '/api/settings/ai', handler: _lazy_WHW6Ad, lazy: true, middleware: false, method: "put" },
13019
13256
  { route: '/api/settings/ai/models', handler: _lazy_CmdGri, lazy: true, middleware: false, method: "post" },
13020
13257
  { route: '/api/settings/ai/ping', handler: _lazy_U7M8oI, lazy: true, middleware: false, method: "post" },
13258
+ { route: '/api/telemetry/report', handler: _lazy_allZ49, lazy: true, middleware: false, method: "post" },
13021
13259
  { route: '/debug/click', handler: _lazy_0YyBSd, lazy: true, middleware: false, method: "post" },
13260
+ { route: '/debug/close-page', handler: _lazy_VauhsT, lazy: true, middleware: false, method: "post" },
13261
+ { route: '/debug/erro-de-telemetria', handler: _lazy_UZLlIK, lazy: true, middleware: false, method: "get" },
13022
13262
  { route: '/debug/fill', handler: _lazy_kwZv_c, lazy: true, middleware: false, method: "post" },
13023
13263
  { route: '/debug/goto', handler: _lazy_66j9OP, lazy: true, middleware: false, method: "post" },
13264
+ { route: '/debug/replay-decision', handler: _lazy_UsMczL, lazy: true, middleware: false, method: "post" },
13024
13265
  { route: '/health', handler: _lazy_lMebqj, lazy: true, middleware: false, method: "get" },
13025
13266
  { route: '/recording/:id', handler: _lazy_JohveF, lazy: true, middleware: false, method: "delete" },
13026
13267
  { route: '/recording/:id', handler: _lazy_6B6AmM, lazy: true, middleware: false, method: "get" },
@@ -13031,10 +13272,10 @@ const handlers = [
13031
13272
  { route: '/runner/spec', handler: _lazy_OTAkqp, lazy: true, middleware: false, method: "post" },
13032
13273
  { route: '/runner/video', handler: _lazy_dIPEDV, lazy: true, middleware: false, method: "get" },
13033
13274
  { route: '/ws', handler: _lazy_3qbquC, lazy: true, middleware: false, method: undefined },
13034
- { route: '/__nuxt_error', handler: _lazy_GNjBRB, lazy: true, middleware: false, method: undefined },
13035
- { route: '/api/_nuxt_icon/:collection', handler: _kBYXJX, lazy: false, middleware: false, method: undefined },
13275
+ { route: '/__nuxt_error', handler: _lazy_U0nolm, lazy: true, middleware: false, method: undefined },
13276
+ { route: '/api/_nuxt_icon/:collection', handler: _Dty4_8, lazy: false, middleware: false, method: undefined },
13036
13277
  { route: '/__nuxt_island/**', handler: _SxA8c9, lazy: false, middleware: false, method: undefined },
13037
- { route: '/**', handler: _lazy_GNjBRB, lazy: true, middleware: false, method: undefined }
13278
+ { route: '/**', handler: _lazy_U0nolm, lazy: true, middleware: false, method: undefined }
13038
13279
  ];
13039
13280
 
13040
13281
  function createNitroApp() {
@@ -13493,5 +13734,5 @@ setupGracefulShutdown(listener, nitroApp);
13493
13734
  }
13494
13735
  const nodeServer = {};
13495
13736
 
13496
- export { $fetch as $, withQuery as A, BadRequest as B, hasProtocol as C, isScriptProtocol as D, joinURL as E, sanitizeStatusCode as F, klona as G, HttpError as H, defuFn as I, hash$1 as J, parseQuery as K, withTrailingSlash as L, withoutTrailingSlash as M, NotFound as N, isEqual as O, PACKAGE_ROOT as P, setCookie as Q, RUNNER_DIR as R, STREAM_REPORTER_PATH as S, getCookie as T, deleteCookie as U, ValidationFailed as V, useRuntimeConfig as W, joinRelativeURL as X, defineRenderHandler as Y, destr as Z, getRouteRules as _, setResponseStatus as a, relative as a0, getResponseStatusText as a1, getResponseStatus as a2, useNitroApp as a3, nodeServer as a4, getQuery as b, createEventStream as c, defineEventHandler as d, createError$1 as e, settingsUseCases as f, getRouterParam as g, recorderService as h, setHeader as i, sendStream as j, handleCors as k, readRawBody as l, getRequestURL as m, defu as n, getRequestHeader as o, processEnvironment as p, defineWebSocketHandler as q, readBody as r, sendNoContent as s, acutis as t, useStorage as u, videoService as v, runAgent as w, parseURL as x, encodePath as y, decodePath as z };
13737
+ export { defuFn as $, ActiveVars as A, ownsKey as B, readAppConfig as C, acutis as D, EnvKey as E, BadRequest as F, useStorage as G, HttpError as H, parseURL as I, encodePath as J, decodePath as K, withQuery as L, MASK as M, NotFound as N, hasProtocol as O, PACKAGE_ROOT as P, isScriptProtocol as Q, RUNNER_DIR as R, STREAM_REPORTER_PATH as S, joinURL as T, Url as U, ValidationFailed as V, sanitizeStatusCode as W, parseQuery as X, withTrailingSlash as Y, withoutTrailingSlash as Z, klona as _, setResponseStatus as a, hash$1 as a0, $fetch as a1, isEqual as a2, setCookie as a3, getCookie as a4, deleteCookie as a5, fromLine as a6, keyed as a7, useRuntimeConfig as a8, joinRelativeURL as a9, defineRenderHandler as aa, destr as ab, getRouteRules as ac, relative as ad, getResponseStatusText as ae, getResponseStatus as af, useNitroApp as ag, nodeServer as ah, getQuery as b, createEventStream as c, defineEventHandler as d, createError$1 as e, settingsUseCases as f, getRouterParam as g, recorderService as h, setHeader as i, sendStream as j, handleCors as k, readRawBody as l, getRequestURL as m, defu as n, Recording as o, processEnvironment as p, getRequestHeader as q, readBody as r, sendNoContent as s, defineWebSocketHandler as t, environmentVar as u, videoService as v, runAgent as w, describeElement as x, pathOf as y, SENSITIVE_PREFIX as z };
13497
13738
  //# sourceMappingURL=nitro.mjs.map