@acutis/cli 0.1.1 → 0.1.2-dev.19

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 (64) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/9eLkUDDj.js +1 -0
  3. package/.output/public/_nuxt/BGkBW2ni2.js +1 -0
  4. package/.output/public/_nuxt/BKydt2Wp2.js +4 -0
  5. package/.output/public/_nuxt/CDI0GNVb2.js +1 -0
  6. package/.output/public/_nuxt/CqZ7dV6a2.js +64 -0
  7. package/.output/public/_nuxt/{CC0OsuIz.js → DtncvtMS.js} +3 -3
  8. package/.output/public/_nuxt/builds/latest.json +1 -1
  9. package/.output/public/_nuxt/builds/meta/a872bf7d-d21f-4cc5-b4d7-6ddb7b63d620.json +1 -0
  10. package/.output/public/_nuxt/entry.Ci6Ki0cW.css +2 -0
  11. package/.output/public/_nuxt/tags.B5A43CvD.css +1 -0
  12. package/.output/server/chunks/_/auth2.mjs +3 -3
  13. package/.output/server/chunks/_/environment.mjs +2 -2
  14. package/.output/server/chunks/_/generation.mjs +3 -3
  15. package/.output/server/chunks/_/project.mjs +2 -2
  16. package/.output/server/chunks/_/project.service.mjs +2 -30
  17. package/.output/server/chunks/_/project.service.mjs.map +1 -1
  18. package/.output/server/chunks/_/recording.mjs +5 -2
  19. package/.output/server/chunks/_/recording.mjs.map +1 -1
  20. package/.output/server/chunks/_/scenario.mjs +4 -2
  21. package/.output/server/chunks/_/scenario.mjs.map +1 -1
  22. package/.output/server/chunks/_/scenario2.mjs +22 -5
  23. package/.output/server/chunks/_/scenario2.mjs.map +1 -1
  24. package/.output/server/chunks/_/spec-rules.mjs +28 -231
  25. package/.output/server/chunks/_/spec-rules.mjs.map +1 -1
  26. package/.output/server/chunks/build/{_...scenario_-DNqQ06NM.mjs → _...scenario_-CTwC_evr.mjs} +172 -31
  27. package/.output/server/chunks/build/_...scenario_-CTwC_evr.mjs.map +1 -0
  28. package/.output/server/chunks/build/{_slug_-BlLRYU9d.mjs → _slug_-DEXTo_9N.mjs} +58 -34
  29. package/.output/server/chunks/build/{_slug_-BlLRYU9d.mjs.map → _slug_-DEXTo_9N.mjs.map} +1 -1
  30. package/.output/server/chunks/build/{tags-DrKY6Ah4.mjs → tags-DQ0X0wtQ.mjs} +59 -14
  31. package/.output/server/chunks/build/{tags-DrKY6Ah4.mjs.map → tags-DQ0X0wtQ.mjs.map} +1 -1
  32. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs +9 -0
  33. package/.output/server/chunks/build/timeline-styles.CzOXKr8R.mjs.map +1 -0
  34. package/.output/server/chunks/nitro/nitro.mjs +679 -266
  35. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  36. package/.output/server/chunks/raw/driver-entry.mjs +1 -1
  37. package/.output/server/chunks/routes/api/projects/_slug/auth/record.post.mjs +1 -1
  38. package/.output/server/chunks/routes/api/projects/_slug/auth/skip.post.mjs +1 -1
  39. package/.output/server/chunks/routes/api/projects/_slug/auth.get.mjs +1 -1
  40. package/.output/server/chunks/routes/api/projects/_slug/auth.put.mjs +1 -1
  41. package/.output/server/chunks/routes/debug/close-page.post.mjs +40 -0
  42. package/.output/server/chunks/routes/debug/close-page.post.mjs.map +1 -0
  43. package/.output/server/chunks/routes/debug/replay-decision.post.mjs +43 -0
  44. package/.output/server/chunks/routes/debug/replay-decision.post.mjs.map +1 -0
  45. package/.output/server/chunks/routes/renderer.mjs +2 -2
  46. package/.output/server/chunks/routes/runner/video.get.mjs +1 -1
  47. package/.output/server/chunks/routes/ws.mjs +19 -2
  48. package/.output/server/chunks/routes/ws.mjs.map +1 -1
  49. package/.output/server/chunks/virtual/entry.mjs +3 -3
  50. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  51. package/.output/server/chunks/virtual/styles.mjs +2 -1
  52. package/.output/server/index.mjs +1 -1
  53. package/.output/server/package.json +1 -1
  54. package/bin/acutis.js +2 -0
  55. package/dist-ui/driver-entry.js +3 -3
  56. package/package.json +1 -1
  57. package/.output/public/_nuxt/5GgR1mbX.js +0 -1
  58. package/.output/public/_nuxt/CTLrtTtn2.js +0 -64
  59. package/.output/public/_nuxt/D4ykC_lY2.js +0 -1
  60. package/.output/public/_nuxt/DDHUGtv32.js +0 -4
  61. package/.output/public/_nuxt/Dpnaldxf2.js +0 -1
  62. package/.output/public/_nuxt/builds/meta/f94c5b32-3977-4b64-aa04-5c5156832c09.json +0 -1
  63. package/.output/public/_nuxt/entry.m-nAFUcz.css +0 -2
  64. package/.output/server/chunks/build/_...scenario_-DNqQ06NM.mjs.map +0 -1
@@ -9283,23 +9283,23 @@ 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-20T22:41:14.919Z"}
9286
+ meta: {"type":"text/javascript; charset=utf-8","etag":"\"18e8f-5Rv+w0aF73xFI2XyNhLxdTAdLSg\"","mtime":"2026-08-22T20:39:18.522Z"}
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-20T22:41:14.893Z"}
9290
+ meta: {"type":"image/svg+xml","etag":"\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"","mtime":"2026-08-22T20:39:18.490Z"}
9291
9291
  },
9292
9292
  ["recorder:dev:sample-run.webm"]: {
9293
9293
  import: () => import('../raw/sample-run.mjs').then(r => r.default || r),
9294
- meta: {"type":"video/webm","etag":"\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"","mtime":"2026-08-20T22:41:14.893Z"}
9294
+ meta: {"type":"video/webm","etag":"\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"","mtime":"2026-08-22T20:39:18.490Z"}
9295
9295
  },
9296
9296
  ["templates:playwright-ts:package.json"]: {
9297
9297
  import: () => import('../raw/package.mjs').then(r => r.default || r),
9298
- meta: {"type":"application/json","etag":"\"88-/nGrZxMqH3UwHMuh7tJQ7VnJaGc\"","mtime":"2026-08-20T22:40:35.785Z"}
9298
+ meta: {"type":"application/json","etag":"\"88-/nGrZxMqH3UwHMuh7tJQ7VnJaGc\"","mtime":"2026-08-22T20:38:27.754Z"}
9299
9299
  },
9300
9300
  ["templates:playwright-ts:playwright.config.ts"]: {
9301
9301
  import: () => import('../raw/playwright.config.mjs').then(r => r.default || r),
9302
- meta: {"type":"video/mp2t","etag":"\"588-KWvjOkz0BTOuGUrnDeb9TPlfP1A\"","mtime":"2026-08-20T22:40:35.785Z"}
9302
+ meta: {"type":"video/mp2t","etag":"\"588-KWvjOkz0BTOuGUrnDeb9TPlfP1A\"","mtime":"2026-08-22T20:38:27.754Z"}
9303
9303
  }
9304
9304
  };
9305
9305
 
@@ -10358,7 +10358,7 @@ function _expandFromEnv(value) {
10358
10358
  const _inlineRuntimeConfig = {
10359
10359
  "app": {
10360
10360
  "baseURL": "/",
10361
- "buildId": "f94c5b32-3977-4b64-aa04-5c5156832c09",
10361
+ "buildId": "a872bf7d-d21f-4cc5-b4d7-6ddb7b63d620",
10362
10362
  "buildAssetsDir": "/_nuxt/",
10363
10363
  "cdnURL": ""
10364
10364
  },
@@ -10881,11 +10881,14 @@ const RECORDER_CDP_URL = APP_CONFIG.recorderCdpUrl;
10881
10881
  const RECORDER_HEADLESS = APP_CONFIG.recorderHeadless;
10882
10882
 
10883
10883
  const ROOT_NAMES = ["acutis", "@acutis/cli"];
10884
+ const PACKAGE_ROOT_ENV = "ACUTIS_PACKAGE_ROOT";
10884
10885
  function packageRoot(starts = [
10885
10886
  dirname$1(fileURLToPath(globalThis._importMeta_.url)),
10886
10887
  process.argv[1] ? dirname$1(resolve$1(process.argv[1])) : "",
10887
10888
  process.cwd()
10888
10889
  ]) {
10890
+ const declared = processEnvironment()[PACKAGE_ROOT_ENV];
10891
+ if (declared !== void 0 && declared !== "") return declared;
10889
10892
  for (const start of starts) {
10890
10893
  let current = start;
10891
10894
  const filesystemRoot = parse$1(current).root;
@@ -10911,6 +10914,297 @@ const RUNNER_DIR = resolve$1(PACKAGE_ROOT, ".tmp/runner");
10911
10914
  const STREAM_REPORTER_PATH = resolve$1(PACKAGE_ROOT, "reporters/stream-reporter.cjs");
10912
10915
  const RECORDER_BUNDLE_PATH = resolve$1(PACKAGE_ROOT, "dist-ui/driver-entry.js");
10913
10916
 
10917
+ var __defProp$8 = Object.defineProperty;
10918
+ var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10919
+ var __publicField$8 = (obj, key, value) => __defNormalProp$8(obj, typeof key !== "symbol" ? key + "" : key, value);
10920
+ function pathOf(url, fallback = "") {
10921
+ try {
10922
+ return new URL(url).pathname;
10923
+ } catch {
10924
+ return fallback;
10925
+ }
10926
+ }
10927
+ class Url {
10928
+ constructor(value) {
10929
+ __publicField$8(this, "value", value);
10930
+ __publicField$8(this, "parsed");
10931
+ try {
10932
+ this.parsed = new URL(value);
10933
+ } catch {
10934
+ throw new Error(`URL inv\xE1lida: ${value}`);
10935
+ }
10936
+ if (!this.parsed.protocol.startsWith("http")) {
10937
+ throw new Error(`URL inv\xE1lida: ${value}`);
10938
+ }
10939
+ }
10940
+ host() {
10941
+ return this.parsed.hostname;
10942
+ }
10943
+ /** O caminho que a URL já traz, sem a barra final. */
10944
+ path() {
10945
+ return this.parsed.pathname.replace(/\/+$/, "");
10946
+ }
10947
+ toString() {
10948
+ return this.value;
10949
+ }
10950
+ }
10951
+
10952
+ const EnvKey = {
10953
+ /** URL do sistema sob teste: onde o navegador abre ao gravar e a base que o Playwright usa. */
10954
+ URL: "URL",
10955
+ /** Credenciais do login, sob o prefixo `AUTH_` para não colidir com variáveis do shell. */
10956
+ USER: "AUTH_USER",
10957
+ PASSWORD: "AUTH_PASSWORD",
10958
+ ACTIVE_ENVIRONMENT: "ENVIRONMENT",
10959
+ /** Arquivo de sessão do ambiente ativo: o auth.setup.ts grava nele e os cenários o carregam. */
10960
+ STORAGE_STATE: "STORAGE_STATE"
10961
+ };
10962
+ function ownsKey(key) {
10963
+ return Object.values(EnvKey).includes(key);
10964
+ }
10965
+
10966
+ const ENV_KEY = "[A-Za-z_][A-Za-z0-9_]*";
10967
+ function environmentVar(key, value = null, secret = false, pending = false) {
10968
+ return { key, value, secret, pending };
10969
+ }
10970
+ function fromLine(line) {
10971
+ const match = line.trim().match(new RegExp(`^(${ENV_KEY})=(.*)$`));
10972
+ if (!match) return null;
10973
+ return environmentVar(match[1], match[2].trim().replace(/^["']|["']$/g, ""));
10974
+ }
10975
+ function keyed(vars, key) {
10976
+ var _a;
10977
+ return (_a = vars.find((variable) => variable.key === key)) != null ? _a : null;
10978
+ }
10979
+
10980
+ var __defProp$7 = Object.defineProperty;
10981
+ var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10982
+ var __publicField$7 = (obj, key, value) => __defNormalProp$7(obj, key + "" , value);
10983
+ class ActiveVars {
10984
+ constructor(vars = []) {
10985
+ __publicField$7(this, "vars", vars);
10986
+ const keys = vars.map((variable) => variable.key);
10987
+ for (const key of keys) {
10988
+ if (!new RegExp(`^${ENV_KEY}$`).test(key)) {
10989
+ throw new Error(`Nome de vari\xE1vel inv\xE1lido: ${key}`);
10990
+ }
10991
+ }
10992
+ if (new Set(keys).size !== keys.length) {
10993
+ throw new Error("O ambiente declara a mesma vari\xE1vel duas vezes.");
10994
+ }
10995
+ }
10996
+ get(key) {
10997
+ return keyed(this.vars, key);
10998
+ }
10999
+ has(key) {
11000
+ return this.get(key) !== null;
11001
+ }
11002
+ /** A chave que já guarda esse valor, se alguma guardar. */
11003
+ keyOf(value) {
11004
+ var _a, _b;
11005
+ if (!value) return null;
11006
+ return (_b = (_a = this.vars.find((variable) => variable.value === value)) == null ? void 0 : _a.key) != null ? _b : null;
11007
+ }
11008
+ /** Se a chave está declarada mas sem valor. */
11009
+ isEmpty(key) {
11010
+ var _a;
11011
+ return !((_a = this.get(key)) == null ? void 0 : _a.value);
11012
+ }
11013
+ /** As que têm valor não secreto, e portanto podem vazar literais para o arquivo gerado. */
11014
+ exposed() {
11015
+ return this.vars.filter((variable) => !variable.secret && Boolean(variable.value));
11016
+ }
11017
+ }
11018
+
11019
+ var __defProp$6 = Object.defineProperty;
11020
+ var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11021
+ var __publicField$6 = (obj, key, value) => __defNormalProp$6(obj, key + "" , value);
11022
+ const MASK = "\u2022\u2022\u2022\u2022";
11023
+ const SENSITIVE_PREFIX = "SENSIVEL_";
11024
+ const NAME_LIMIT = 60;
11025
+ function describeElement(event) {
11026
+ var _a, _b, _c, _d, _e;
11027
+ const selectors = (_a = event.selectors) != null ? _a : null;
11028
+ 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 : "";
11029
+ const clean = source.replace(/\s+/gu, " ").trim();
11030
+ return clean === "" ? null : clean.slice(0, NAME_LIMIT).trimEnd();
11031
+ }
11032
+ function marker(key) {
11033
+ return `{{${key}}}`;
11034
+ }
11035
+ class Recording {
11036
+ constructor(recorded) {
11037
+ __publicField$6(this, "recorded", recorded);
11038
+ }
11039
+ static make(events) {
11040
+ return new Recording(events);
11041
+ }
11042
+ /** Os eventos gravados; o DOM capturado só vem quando pedido. */
11043
+ events(html = false) {
11044
+ if (html) return this.recorded;
11045
+ return this.recorded.map(({ html: _html, ...event }) => event);
11046
+ }
11047
+ /** Troca o valor de cada evento sensível pelo marcador. */
11048
+ redacted(environments = new ActiveVars()) {
11049
+ let position = 0;
11050
+ return this.events().map((event) => {
11051
+ var _a, _b;
11052
+ if (event.sensitive !== true) return event;
11053
+ position++;
11054
+ const value = (_a = event.value) != null ? _a : "";
11055
+ return {
11056
+ ...event,
11057
+ value: marker((_b = environments.keyOf(value)) != null ? _b : `${SENSITIVE_PREFIX}${position}`)
11058
+ };
11059
+ });
11060
+ }
11061
+ /** O DOM ao redor de cada elemento, na chave do evento que o produziu. */
11062
+ html() {
11063
+ const html = {};
11064
+ this.recorded.forEach((event, index) => {
11065
+ if (event.html) html[index] = event.html;
11066
+ });
11067
+ return html;
11068
+ }
11069
+ /** Os eventos com usuário e senha trocados pelo nome da variável que os guarda. */
11070
+ withoutPasswords() {
11071
+ const events = this.events();
11072
+ const password = this.passwordIndex();
11073
+ for (const [index, event] of events.entries()) {
11074
+ if (event.inputType === "password") {
11075
+ events[index] = { ...event, value: marker(EnvKey.PASSWORD) };
11076
+ }
11077
+ }
11078
+ const user = password === null ? null : this.fillBefore(password);
11079
+ if (user !== null) {
11080
+ events[user] = { ...events[user], value: marker(EnvKey.USER) };
11081
+ }
11082
+ return events;
11083
+ }
11084
+ /**
11085
+ * A URL em que a gravação caiu depois do login: a primeira navegação após o submit (ou após o
11086
+ * campo de senha, quando não houve submit) que saiu da URL onde o login foi enviado.
11087
+ */
11088
+ landingUrl() {
11089
+ let submitIndex = null;
11090
+ this.recorded.forEach((event, index) => {
11091
+ if (event.type === "submit" || event.type === "fill" && event.inputType === "password") {
11092
+ submitIndex = index;
11093
+ }
11094
+ });
11095
+ if (submitIndex === null) return null;
11096
+ const submitUrl = this.recorded[submitIndex].url;
11097
+ for (const event of this.recorded.slice(submitIndex + 1)) {
11098
+ if (event.type === "navigate" && event.url && event.url !== submitUrl) {
11099
+ return event.url;
11100
+ }
11101
+ }
11102
+ return null;
11103
+ }
11104
+ /** Usuário e senha reais do login gravado, ou null quando não dá para identificá-los. */
11105
+ credentials() {
11106
+ var _a, _b;
11107
+ const passwordIndex = this.passwordIndex();
11108
+ if (passwordIndex === null) return null;
11109
+ const userIndex = this.fillBefore(passwordIndex);
11110
+ const username = userIndex === null ? null : (_a = this.recorded[userIndex]) == null ? void 0 : _a.value;
11111
+ const password = (_b = this.recorded[passwordIndex]) == null ? void 0 : _b.value;
11112
+ return username && password ? { username, password } : null;
11113
+ }
11114
+ /** O valor real de cada marcador batizado, indexado pelo nome que ele recebeu. */
11115
+ envValues(names) {
11116
+ const sensitive = this.sensitiveValues();
11117
+ const values = {};
11118
+ for (const [key, name] of Object.entries(names)) {
11119
+ if (!key.startsWith(SENSITIVE_PREFIX)) continue;
11120
+ const position = Number(key.slice(SENSITIVE_PREFIX.length));
11121
+ const value = sensitive[position - 1];
11122
+ if (value === void 0) continue;
11123
+ values[name] = value;
11124
+ }
11125
+ return values;
11126
+ }
11127
+ /** O alerta de quando os nomes declarados não cobrem os marcadores da gravação. */
11128
+ unmatchedEnvWarning(names) {
11129
+ const markers = this.sensitiveValues().length;
11130
+ const declared = Object.keys(names).length;
11131
+ if (markers === 0 || declared === markers) return null;
11132
+ return `Grava\xE7\xE3o tem ${markers} valor(es) sens\xEDvel(is) mas a IA nomeou ${declared}, e algum .env pode ter ficado vazio.`;
11133
+ }
11134
+ sensitiveValues() {
11135
+ return this.recorded.filter((event) => event.sensitive === true).map((event) => {
11136
+ var _a;
11137
+ return (_a = event.value) != null ? _a : "";
11138
+ });
11139
+ }
11140
+ passwordIndex() {
11141
+ const index = this.recorded.findIndex(
11142
+ (event) => event.type === "fill" && event.inputType === "password"
11143
+ );
11144
+ return index === -1 ? null : index;
11145
+ }
11146
+ /** O preenchimento anterior ao índice dado, que é onde o usuário do login foi digitado. */
11147
+ fillBefore(index) {
11148
+ var _a;
11149
+ for (let i = index - 1; i >= 0; i--) {
11150
+ if (((_a = this.recorded[i]) == null ? void 0 : _a.type) === "fill") return i;
11151
+ }
11152
+ return null;
11153
+ }
11154
+ }
11155
+
11156
+ function attribute(name, value) {
11157
+ return `[${name}=${JSON.stringify(value)}]`;
11158
+ }
11159
+ function replaySelector(selectors) {
11160
+ if (!selectors) return null;
11161
+ if (selectors.dataTestId) return attribute("data-testid", selectors.dataTestId);
11162
+ if (selectors.dataCy) return attribute("data-cy", selectors.dataCy);
11163
+ if (selectors.id) return attribute("id", selectors.id);
11164
+ if (selectors.cssStable) return selectors.cssStable;
11165
+ if (selectors.ariaLabel) return attribute("aria-label", selectors.ariaLabel);
11166
+ if (selectors.placeholder) return attribute("placeholder", selectors.placeholder);
11167
+ if (selectors.text) return `text=${JSON.stringify(selectors.text)}`;
11168
+ if (selectors.finder) return selectors.finder;
11169
+ if (selectors.xpath) return `xpath=${selectors.xpath}`;
11170
+ return null;
11171
+ }
11172
+ function typeable(value) {
11173
+ return value !== null && value !== "" && value !== MASK && !/^\{\{.+\}\}$/.test(value);
11174
+ }
11175
+ function replaySteps(events) {
11176
+ const steps = [];
11177
+ events.forEach((event, at) => {
11178
+ if (event.type === "navigate") {
11179
+ if (event.url) {
11180
+ steps.push({ action: "goto", url: event.url, label: `Abre ${pathOf(event.url, event.url)}`, at });
11181
+ }
11182
+ return;
11183
+ }
11184
+ const selector = replaySelector(event.selectors);
11185
+ if (!selector) return;
11186
+ const name = describeElement(event);
11187
+ if (event.type === "click") {
11188
+ steps.push({
11189
+ action: "click",
11190
+ selector,
11191
+ label: name === null ? "Clica no elemento" : `Clica em "${name}"`,
11192
+ at
11193
+ });
11194
+ }
11195
+ if (event.type === "fill" && typeable(event.value)) {
11196
+ steps.push({
11197
+ action: "fill",
11198
+ selector,
11199
+ value: event.value,
11200
+ label: name === null ? "Preenche o campo" : `Preenche "${name}"`,
11201
+ at
11202
+ });
11203
+ }
11204
+ });
11205
+ return steps;
11206
+ }
11207
+
10914
11208
  var __defProp$5 = Object.defineProperty;
10915
11209
  var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10916
11210
  var __publicField$5 = (obj, key, value) => __defNormalProp$5(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -10918,6 +11212,10 @@ const RECORDING_VIEWPORT = { width: 1280, height: 720 };
10918
11212
  const STORAGE_STATE_TIMEOUT_MS = 1500;
10919
11213
  const SCREENCAST_STOP_TIMEOUT_MS = 2500;
10920
11214
  const CDP_CLOSE_TIMEOUT_MS = 1500;
11215
+ const REPLAY_STEP_TIMEOUT_MS = 2500;
11216
+ const REPLAY_RETRY_TIMEOUT_MS = 4e3;
11217
+ const REPLAY_SETTLE_MS = 1500;
11218
+ const DECISION_POLL_MS = 200;
10921
11219
  const BLANK = "about:blank";
10922
11220
  class RecorderService {
10923
11221
  constructor(videoService) {
@@ -10931,8 +11229,12 @@ class RecorderService {
10931
11229
  __publicField$5(this, "sessionId", null);
10932
11230
  __publicField$5(this, "screencastStarted", false);
10933
11231
  __publicField$5(this, "ready", false);
11232
+ __publicField$5(this, "replaying", false);
11233
+ __publicField$5(this, "replayState", { status: "idle", step: null });
11234
+ __publicField$5(this, "replayDecision", null);
10934
11235
  __publicField$5(this, "bundlePath", null);
10935
11236
  __publicField$5(this, "bundleLoader", null);
11237
+ __publicField$5(this, "stopping", false);
10936
11238
  }
10937
11239
  configureBundlePath(path) {
10938
11240
  this.bundlePath = path;
@@ -10943,11 +11245,13 @@ class RecorderService {
10943
11245
  isRecording() {
10944
11246
  return this.context !== null;
10945
11247
  }
10946
- async start(onEvent, onStarted, onRequestStop, mode = "scenario", storageStatePath, url) {
10947
- var _a, _b;
11248
+ async start(onEvent, onStarted, onRequestStop, mode = "scenario", storageStatePath, url, replay, hooks = {}) {
11249
+ var _a, _b, _c, _d;
10948
11250
  this.sessionId = randomUUID$1();
10949
11251
  this.screencastStarted = false;
10950
11252
  this.ready = false;
11253
+ this.replaying = false;
11254
+ this.stopping = false;
10951
11255
  await this.videoService.ensureDir();
10952
11256
  if (RECORDER_CDP_URL) {
10953
11257
  try {
@@ -10975,6 +11279,7 @@ class RecorderService {
10975
11279
  await this.page.setViewportSize(RECORDING_VIEWPORT);
10976
11280
  this.lastUrl = null;
10977
11281
  this.report = (event) => {
11282
+ if (this.replaying) return;
10978
11283
  if (event.type === "navigate") {
10979
11284
  if (event.url === BLANK) {
10980
11285
  return;
@@ -10985,6 +11290,14 @@ class RecorderService {
10985
11290
  };
10986
11291
  await this.page.exposeFunction("__acutisReportEvent", this.report);
10987
11292
  await this.page.exposeFunction("__acutisRequestStop", onRequestStop);
11293
+ await this.page.exposeFunction("__acutisCancelRecording", () => {
11294
+ var _a2;
11295
+ return (_a2 = hooks.onCancelRequested) == null ? void 0 : _a2.call(hooks);
11296
+ });
11297
+ await this.page.exposeFunction("__acutisReplayState", () => this.replayState);
11298
+ await this.page.exposeFunction("__acutisReplayDecision", (decision) => {
11299
+ this.decideReplay(decision === "resume" ? "resume" : "cancel");
11300
+ });
10988
11301
  await this.context.addInitScript((recorderMode) => {
10989
11302
  globalThis.__acutisRecorderMode = recorderMode;
10990
11303
  }, mode);
@@ -10994,6 +11307,8 @@ class RecorderService {
10994
11307
  await this.context.addInitScript({ path: (_b = this.bundlePath) != null ? _b : RECORDER_BUNDLE_PATH });
10995
11308
  }
10996
11309
  this.ready = true;
11310
+ this.page.on("close", () => this.handleExternalClose(onRequestStop, hooks));
11311
+ this.browser.on("disconnected", () => this.handleExternalClose(onRequestStop, hooks));
10997
11312
  const sessionId = this.sessionId;
10998
11313
  const videoPath = this.videoService.path(sessionId);
10999
11314
  this.page.on("framenavigated", (frame) => {
@@ -11003,16 +11318,94 @@ class RecorderService {
11003
11318
  const recordingStartedAt = Date.now();
11004
11319
  void this.page.screencast.start({ path: videoPath, size: RECORDING_VIEWPORT }).then(() => onStarted(recordingStartedAt));
11005
11320
  });
11006
- if (url) {
11321
+ const steps = (replay == null ? void 0 : replay.length) ? replaySteps(replay) : [];
11322
+ if (steps.length) this.replayState = { status: "running", step: steps[0].label };
11323
+ if (url && !steps.some((step) => step.action === "goto")) {
11007
11324
  await this.page.goto(url, { waitUntil: "domcontentloaded" }).catch(() => {
11008
11325
  });
11009
11326
  }
11327
+ if (!steps.length) return;
11328
+ const { cancelledAt, keptEvents } = await this.replay(steps, hooks);
11329
+ if (cancelledAt !== null) {
11330
+ await ((_c = hooks.onCancelled) == null ? void 0 : _c.call(hooks, cancelledAt));
11331
+ return;
11332
+ }
11333
+ await ((_d = hooks.onReplayed) == null ? void 0 : _d.call(hooks, keptEvents));
11334
+ }
11335
+ /**
11336
+ * Refaz os passos já gravados para o usuário continuar do ponto que escolheu. Passo que não
11337
+ * repete nem na segunda tentativa para a retomada e devolve a decisão para ele, na janela.
11338
+ * Devolve o passo em que ele cancelou e, quando assumiu no meio, quantos eventos foram refeitos.
11339
+ */
11340
+ async replay(steps, hooks) {
11341
+ var _a;
11342
+ if (!this.page) return { cancelledAt: null, keptEvents: null };
11343
+ const page = this.page;
11344
+ this.replaying = true;
11345
+ this.replayState = { status: "running", step: steps[0].label };
11346
+ let keptEvents = null;
11347
+ try {
11348
+ for (const step of steps) {
11349
+ this.replayState = { status: "running", step: step.label };
11350
+ if (await this.attempt(page, step, REPLAY_STEP_TIMEOUT_MS)) continue;
11351
+ if (await this.attempt(page, step, REPLAY_RETRY_TIMEOUT_MS)) continue;
11352
+ this.replayState = { status: "failed", step: step.label };
11353
+ (_a = hooks.onFailed) == null ? void 0 : _a.call(hooks, step.label);
11354
+ const decision = await this.awaitDecision(page);
11355
+ if (decision === "cancel") return { cancelledAt: step.label, keptEvents: null };
11356
+ if (decision === null) return { cancelledAt: null, keptEvents: null };
11357
+ keptEvents = step.at;
11358
+ break;
11359
+ }
11360
+ await page.waitForTimeout(REPLAY_SETTLE_MS);
11361
+ return { cancelledAt: null, keptEvents };
11362
+ } finally {
11363
+ this.replaying = false;
11364
+ this.replayState = { status: "idle", step: null };
11365
+ this.lastUrl = page.url();
11366
+ }
11367
+ }
11368
+ /** Um passo refeito. O clique é despachado no elemento, porque a cortina cobre a página. */
11369
+ async attempt(page, step, timeout) {
11370
+ try {
11371
+ if (step.action === "goto") {
11372
+ await page.goto(step.url, { waitUntil: "domcontentloaded" });
11373
+ } else if (step.action === "fill") {
11374
+ await page.fill(step.selector, step.value, { timeout, force: true });
11375
+ await page.locator(step.selector).blur({ timeout }).catch(() => void 0);
11376
+ } else {
11377
+ await page.locator(step.selector).dispatchEvent("click", {}, { timeout });
11378
+ }
11379
+ return true;
11380
+ } catch {
11381
+ return false;
11382
+ }
11383
+ }
11384
+ /** A escolha que o usuário faz na cortina, ou null quando a janela some antes de ele escolher. */
11385
+ async awaitDecision(page) {
11386
+ this.replayDecision = null;
11387
+ while (this.replayDecision === null) {
11388
+ if (page.isClosed() || this.stopping) return null;
11389
+ await new Promise((resolve) => setTimeout(resolve, DECISION_POLL_MS));
11390
+ }
11391
+ return this.replayDecision;
11392
+ }
11393
+ /** A janela fechada pelo usuário descarta a gravação, pelo mesmo caminho do cancelar da pill. */
11394
+ handleExternalClose(onRequestStop, hooks) {
11395
+ if (this.stopping || !this.context) return;
11396
+ const discard = hooks.onCancelRequested;
11397
+ if (!discard) {
11398
+ onRequestStop();
11399
+ return;
11400
+ }
11401
+ Promise.resolve(discard()).catch(() => void 0);
11010
11402
  }
11011
11403
  async stop() {
11012
11404
  var _a, _b, _c, _d, _e;
11013
11405
  if (!this.context) {
11014
11406
  return { sessionId: null, storageState: null };
11015
11407
  }
11408
+ this.stopping = true;
11016
11409
  const sessionId = this.sessionId;
11017
11410
  const wasScreencasting = this.screencastStarted;
11018
11411
  const storageState = await this.withTimeout(
@@ -11121,6 +11514,10 @@ class RecorderService {
11121
11514
  }
11122
11515
  return this.page;
11123
11516
  }
11517
+ /** A mesma decisão que a cortina manda; o shadow fechado dela não é alcançável de fora. */
11518
+ decideReplay(decision) {
11519
+ this.replayDecision = decision;
11520
+ }
11124
11521
  async debugGoto(url) {
11125
11522
  const page = await this.waitForPage();
11126
11523
  await page.goto(url, { waitUntil: "domcontentloaded" });
@@ -11134,6 +11531,11 @@ class RecorderService {
11134
11531
  await page.fill(selector, value);
11135
11532
  await page.locator(selector).blur();
11136
11533
  }
11534
+ /** Fecha a página gravada como se o usuário tivesse fechado a janela na mão. */
11535
+ async debugClosePage() {
11536
+ const page = await this.waitForPage();
11537
+ await page.close();
11538
+ }
11137
11539
  async withTimeout(promise, timeoutMs, fallback) {
11138
11540
  let timer;
11139
11541
  const timeout = new Promise((resolve) => {
@@ -12153,516 +12555,523 @@ _6m_lBKCDxxJVPiXUa9aPgLPWTARgtjNWNP4gmc5uKfw
12153
12555
  ];
12154
12556
 
12155
12557
  const assets = {
12156
- "/favicon.svg": {
12157
- "type": "image/svg+xml",
12158
- "etag": "\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"",
12159
- "mtime": "2026-08-20T22:41:29.648Z",
12160
- "size": 921,
12161
- "path": "../public/favicon.svg"
12162
- },
12163
- "/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2": {
12164
- "type": "font/woff2",
12165
- "etag": "\"21b4-5vUr0lwu56eej0WYd8CeVlrshdk\"",
12166
- "mtime": "2026-08-20T22:41:29.624Z",
12167
- "size": 8628,
12168
- "path": "../public/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2"
12169
- },
12170
- "/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2": {
12171
- "type": "font/woff2",
12172
- "etag": "\"2144-wqgN+yL7WN+AVsPgk3XDykxurXk\"",
12173
- "mtime": "2026-08-20T22:41:29.624Z",
12174
- "size": 8516,
12175
- "path": "../public/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2"
12176
- },
12177
- "/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2": {
12178
- "type": "font/woff2",
12179
- "etag": "\"177c-7sGmeKySE5GVzm0dGyjV5D08aoU\"",
12180
- "mtime": "2026-08-20T22:41:29.624Z",
12181
- "size": 6012,
12182
- "path": "../public/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2"
12183
- },
12184
- "/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2": {
12185
- "type": "font/woff2",
12186
- "etag": "\"1f38-//55P1Jgd0CYSpMe5xWKqC25SnI\"",
12187
- "mtime": "2026-08-20T22:41:29.625Z",
12188
- "size": 7992,
12189
- "path": "../public/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2"
12190
- },
12191
- "/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2": {
12192
- "type": "font/woff2",
12193
- "etag": "\"2224-DOM9SokVAMep6ZvnjMP9IsHmo0o\"",
12194
- "mtime": "2026-08-20T22:41:29.624Z",
12195
- "size": 8740,
12196
- "path": "../public/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2"
12197
- },
12198
- "/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2": {
12199
- "type": "font/woff2",
12200
- "etag": "\"1edc-fkjVSx3x0/ZX/JAidZAwgYP/ndw\"",
12201
- "mtime": "2026-08-20T22:41:29.624Z",
12202
- "size": 7900,
12203
- "path": "../public/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2"
12204
- },
12205
- "/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2": {
12206
- "type": "font/woff2",
12207
- "etag": "\"1e3c-u6AgwP0EJgeYcv3XkpomC0FIRc0\"",
12208
- "mtime": "2026-08-20T22:41:29.624Z",
12209
- "size": 7740,
12210
- "path": "../public/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2"
12211
- },
12212
- "/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2": {
12213
- "type": "font/woff2",
12214
- "etag": "\"177c-80/RBhNFJqcP3UljAelorcOubsE\"",
12215
- "mtime": "2026-08-20T22:41:29.625Z",
12216
- "size": 6012,
12217
- "path": "../public/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2"
12218
- },
12219
- "/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2": {
12220
- "type": "font/woff2",
12221
- "etag": "\"16f0-XEqELcbY5UPEivjwMKtP26b9tNc\"",
12222
- "mtime": "2026-08-20T22:41:29.625Z",
12223
- "size": 5872,
12224
- "path": "../public/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2"
12225
- },
12226
- "/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2": {
12227
- "type": "font/woff2",
12228
- "etag": "\"1ea8-avadMHwzrw88TD65bvAepDkPR04\"",
12229
- "mtime": "2026-08-20T22:41:29.625Z",
12230
- "size": 7848,
12231
- "path": "../public/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2"
12232
- },
12233
- "/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2": {
12234
- "type": "font/woff2",
12235
- "etag": "\"21e4-2xCtTiyjgRAM5Dk9QxxKODBGei4\"",
12236
- "mtime": "2026-08-20T22:41:29.625Z",
12237
- "size": 8676,
12238
- "path": "../public/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2"
12239
- },
12240
- "/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2": {
12241
- "type": "font/woff2",
12242
- "etag": "\"1548-qD0ozyo93J9OeSW1BKUcbKGjBoQ\"",
12243
- "mtime": "2026-08-20T22:41:29.625Z",
12244
- "size": 5448,
12245
- "path": "../public/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2"
12246
- },
12247
- "/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2": {
12248
- "type": "font/woff2",
12249
- "etag": "\"15b0-sqzPYvDy9re3PVEvO6N+mfZ0x+M\"",
12250
- "mtime": "2026-08-20T22:41:29.625Z",
12251
- "size": 5552,
12252
- "path": "../public/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2"
12253
- },
12254
- "/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2": {
12255
- "type": "font/woff2",
12256
- "etag": "\"1718-O4VsLbdOi9kDnEH4r+8VOq3o5HU\"",
12257
- "mtime": "2026-08-20T22:41:29.625Z",
12258
- "size": 5912,
12259
- "path": "../public/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2"
12260
- },
12261
- "/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2": {
12262
- "type": "font/woff2",
12263
- "etag": "\"1608-D9gBKRW7h8xB8fw0DKyUKwCWNaQ\"",
12264
- "mtime": "2026-08-20T22:41:29.625Z",
12265
- "size": 5640,
12266
- "path": "../public/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2"
12267
- },
12268
- "/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2": {
12269
- "type": "font/woff2",
12270
- "etag": "\"1578-DBk4lWQ0jupAQEUE7SJTDlGmrXQ\"",
12271
- "mtime": "2026-08-20T22:41:29.625Z",
12272
- "size": 5496,
12273
- "path": "../public/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2"
12274
- },
12275
- "/_nuxt/5GgR1mbX.js": {
12558
+ "/_nuxt/9eLkUDDj.js": {
12276
12559
  "type": "text/javascript; charset=utf-8",
12277
- "etag": "\"893-DbaUWnhdDtE/x/5eZXWGpnU2TQQ\"",
12278
- "mtime": "2026-08-20T22:41:29.641Z",
12279
- "size": 2195,
12280
- "path": "../public/_nuxt/5GgR1mbX.js"
12560
+ "etag": "\"a75-sWmZ/ggbVxmmBxcppADnK5FmI00\"",
12561
+ "mtime": "2026-08-22T20:39:29.503Z",
12562
+ "size": 2677,
12563
+ "path": "../public/_nuxt/9eLkUDDj.js"
12281
12564
  },
12282
12565
  "/_nuxt/ANcp5QFz.js": {
12283
12566
  "type": "text/javascript; charset=utf-8",
12284
12567
  "etag": "\"164b-uf1Uob8sh8MZqP91LA+dZ1Tx6dg\"",
12285
- "mtime": "2026-08-20T22:41:29.641Z",
12568
+ "mtime": "2026-08-22T20:39:29.502Z",
12286
12569
  "size": 5707,
12287
12570
  "path": "../public/_nuxt/ANcp5QFz.js"
12288
12571
  },
12289
12572
  "/_nuxt/BDNMzG2s2.js": {
12290
12573
  "type": "text/javascript; charset=utf-8",
12291
12574
  "etag": "\"54-MasMfSk/A98C3Gn9uIOxtFxkWNw\"",
12292
- "mtime": "2026-08-20T22:41:29.641Z",
12575
+ "mtime": "2026-08-22T20:39:29.502Z",
12293
12576
  "size": 84,
12294
12577
  "path": "../public/_nuxt/BDNMzG2s2.js"
12295
12578
  },
12296
12579
  "/_nuxt/BEFJRHhA2.js": {
12297
12580
  "type": "text/javascript; charset=utf-8",
12298
12581
  "etag": "\"d56-tBy26GgOjkknUMfbGsIIVG6gBH0\"",
12299
- "mtime": "2026-08-20T22:41:29.641Z",
12582
+ "mtime": "2026-08-22T20:39:29.502Z",
12300
12583
  "size": 3414,
12301
12584
  "path": "../public/_nuxt/BEFJRHhA2.js"
12302
12585
  },
12303
- "/_nuxt/BEQgcp5R.js": {
12586
+ "/favicon.svg": {
12587
+ "type": "image/svg+xml",
12588
+ "etag": "\"399-DJlj2DBCHGK781jAwgS+8UxnhA8\"",
12589
+ "mtime": "2026-08-22T20:39:29.514Z",
12590
+ "size": 921,
12591
+ "path": "../public/favicon.svg"
12592
+ },
12593
+ "/_nuxt/BEk00u4_.js": {
12304
12594
  "type": "text/javascript; charset=utf-8",
12305
- "etag": "\"23b50-mpkzkb8N5qHVb35K0Lrc0wI0cog\"",
12306
- "mtime": "2026-08-20T22:41:29.642Z",
12307
- "size": 146256,
12308
- "path": "../public/_nuxt/BEQgcp5R.js"
12595
+ "etag": "\"22d6-s9qlvXRsBzdcF6h5ZLjdLGQoQSM\"",
12596
+ "mtime": "2026-08-22T20:39:29.502Z",
12597
+ "size": 8918,
12598
+ "path": "../public/_nuxt/BEk00u4_.js"
12309
12599
  },
12310
12600
  "/_nuxt/BGdmRvCK2.js": {
12311
12601
  "type": "text/javascript; charset=utf-8",
12312
12602
  "etag": "\"16b5-Sshhy3WKzOt1UoHLHuiHM1ftX24\"",
12313
- "mtime": "2026-08-20T22:41:29.642Z",
12603
+ "mtime": "2026-08-22T20:39:29.502Z",
12314
12604
  "size": 5813,
12315
12605
  "path": "../public/_nuxt/BGdmRvCK2.js"
12316
12606
  },
12317
- "/_nuxt/BEk00u4_.js": {
12607
+ "/_nuxt/BGkBW2ni2.js": {
12318
12608
  "type": "text/javascript; charset=utf-8",
12319
- "etag": "\"22d6-s9qlvXRsBzdcF6h5ZLjdLGQoQSM\"",
12320
- "mtime": "2026-08-20T22:41:29.642Z",
12321
- "size": 8918,
12322
- "path": "../public/_nuxt/BEk00u4_.js"
12609
+ "etag": "\"b46f-ip6eNM8Bt0fkEhIuyJWIVTcB5lg\"",
12610
+ "mtime": "2026-08-22T20:39:29.502Z",
12611
+ "size": 46191,
12612
+ "path": "../public/_nuxt/BGkBW2ni2.js"
12613
+ },
12614
+ "/_nuxt/BKydt2Wp2.js": {
12615
+ "type": "text/javascript; charset=utf-8",
12616
+ "etag": "\"2ebd-+jbdh/JUO2GZfey4J6IrVQ3092k\"",
12617
+ "mtime": "2026-08-22T20:39:29.502Z",
12618
+ "size": 11965,
12619
+ "path": "../public/_nuxt/BKydt2Wp2.js"
12323
12620
  },
12324
12621
  "/_nuxt/BMLYuU_e.js": {
12325
12622
  "type": "text/javascript; charset=utf-8",
12326
12623
  "etag": "\"3dab-kZxtB0CA6BiZ2amdnuWc6ncvHmM\"",
12327
- "mtime": "2026-08-20T22:41:29.643Z",
12624
+ "mtime": "2026-08-22T20:39:29.502Z",
12328
12625
  "size": 15787,
12329
12626
  "path": "../public/_nuxt/BMLYuU_e.js"
12330
12627
  },
12331
12628
  "/_nuxt/BWJpSLJL.js": {
12332
12629
  "type": "text/javascript; charset=utf-8",
12333
12630
  "etag": "\"2e79-jNhWzXvsdMsdyMtx8aG2yYyblTo\"",
12334
- "mtime": "2026-08-20T22:41:29.643Z",
12631
+ "mtime": "2026-08-22T20:39:29.502Z",
12335
12632
  "size": 11897,
12336
12633
  "path": "../public/_nuxt/BWJpSLJL.js"
12337
12634
  },
12338
12635
  "/_nuxt/BXpPYfMx.js": {
12339
12636
  "type": "text/javascript; charset=utf-8",
12340
12637
  "etag": "\"297-WDnSh+WeblMh3+gF40okc6lIHac\"",
12341
- "mtime": "2026-08-20T22:41:29.643Z",
12638
+ "mtime": "2026-08-22T20:39:29.502Z",
12342
12639
  "size": 663,
12343
12640
  "path": "../public/_nuxt/BXpPYfMx.js"
12344
12641
  },
12345
12642
  "/_nuxt/BbjTtCyI.js": {
12346
12643
  "type": "text/javascript; charset=utf-8",
12347
12644
  "etag": "\"6b6f-yD+6UaiyIgirUyBFRLKiEcNyltI\"",
12348
- "mtime": "2026-08-20T22:41:29.642Z",
12645
+ "mtime": "2026-08-22T20:39:29.503Z",
12349
12646
  "size": 27503,
12350
12647
  "path": "../public/_nuxt/BbjTtCyI.js"
12351
12648
  },
12352
12649
  "/_nuxt/Bp3A7I5W2.js": {
12353
12650
  "type": "text/javascript; charset=utf-8",
12354
12651
  "etag": "\"843-3mo9lfGSYaqSiT7MxB/1kVQ/MWg\"",
12355
- "mtime": "2026-08-20T22:41:29.642Z",
12652
+ "mtime": "2026-08-22T20:39:29.503Z",
12356
12653
  "size": 2115,
12357
12654
  "path": "../public/_nuxt/Bp3A7I5W2.js"
12358
12655
  },
12359
12656
  "/_nuxt/BuOb9NX0.js": {
12360
12657
  "type": "text/javascript; charset=utf-8",
12361
12658
  "etag": "\"1883-WVeeplAhb0jhWcoYBpmp6milqUA\"",
12362
- "mtime": "2026-08-20T22:41:29.642Z",
12659
+ "mtime": "2026-08-22T20:39:29.503Z",
12363
12660
  "size": 6275,
12364
12661
  "path": "../public/_nuxt/BuOb9NX0.js"
12365
12662
  },
12663
+ "/_nuxt/C2KIeuhG.js": {
12664
+ "type": "text/javascript; charset=utf-8",
12665
+ "etag": "\"2d2-4tv8B+IC/YzK6QMJVs+gZcpjwlI\"",
12666
+ "mtime": "2026-08-22T20:39:29.503Z",
12667
+ "size": 722,
12668
+ "path": "../public/_nuxt/C2KIeuhG.js"
12669
+ },
12366
12670
  "/_nuxt/C1tNhfTr.js": {
12367
12671
  "type": "text/javascript; charset=utf-8",
12368
12672
  "etag": "\"555-IMGU9sHMGWm9WCAvMwJ6sXGyqKY\"",
12369
- "mtime": "2026-08-20T22:41:29.642Z",
12673
+ "mtime": "2026-08-22T20:39:29.503Z",
12370
12674
  "size": 1365,
12371
12675
  "path": "../public/_nuxt/C1tNhfTr.js"
12372
12676
  },
12373
- "/_nuxt/C2KIeuhG.js": {
12677
+ "/_nuxt/BEQgcp5R.js": {
12374
12678
  "type": "text/javascript; charset=utf-8",
12375
- "etag": "\"2d2-4tv8B+IC/YzK6QMJVs+gZcpjwlI\"",
12376
- "mtime": "2026-08-20T22:41:29.642Z",
12377
- "size": 722,
12378
- "path": "../public/_nuxt/C2KIeuhG.js"
12679
+ "etag": "\"23b50-mpkzkb8N5qHVb35K0Lrc0wI0cog\"",
12680
+ "mtime": "2026-08-22T20:39:29.502Z",
12681
+ "size": 146256,
12682
+ "path": "../public/_nuxt/BEQgcp5R.js"
12683
+ },
12684
+ "/_nuxt/C5uJN_MU.js": {
12685
+ "type": "text/javascript; charset=utf-8",
12686
+ "etag": "\"e528-d2Q1RVsrcdT28KoT+268fD4PiZM\"",
12687
+ "mtime": "2026-08-22T20:39:29.503Z",
12688
+ "size": 58664,
12689
+ "path": "../public/_nuxt/C5uJN_MU.js"
12379
12690
  },
12380
12691
  "/_nuxt/CBVnImq2.js": {
12381
12692
  "type": "text/javascript; charset=utf-8",
12382
12693
  "etag": "\"23df-qMiAb4BUsXEKqx8xrqVlHW+03a0\"",
12383
- "mtime": "2026-08-20T22:41:29.642Z",
12694
+ "mtime": "2026-08-22T20:39:29.503Z",
12384
12695
  "size": 9183,
12385
12696
  "path": "../public/_nuxt/CBVnImq2.js"
12386
12697
  },
12387
- "/_nuxt/CC0OsuIz.js": {
12698
+ "/_nuxt/CDI0GNVb2.js": {
12388
12699
  "type": "text/javascript; charset=utf-8",
12389
- "etag": "\"1b658-FH0gp3/auEFBaMr9CNX1l4MVryM\"",
12390
- "mtime": "2026-08-20T22:41:29.642Z",
12391
- "size": 112216,
12392
- "path": "../public/_nuxt/CC0OsuIz.js"
12700
+ "etag": "\"4a7d-mrcIr6JX/ToujCGORE/z9WbBsZI\"",
12701
+ "mtime": "2026-08-22T20:39:29.503Z",
12702
+ "size": 19069,
12703
+ "path": "../public/_nuxt/CDI0GNVb2.js"
12393
12704
  },
12394
12705
  "/_nuxt/CIFC2HNk.js": {
12395
12706
  "type": "text/javascript; charset=utf-8",
12396
12707
  "etag": "\"9c7c-L5x/TgOanE8qi7gToYMSDCsfFVU\"",
12397
- "mtime": "2026-08-20T22:41:29.642Z",
12708
+ "mtime": "2026-08-22T20:39:29.503Z",
12398
12709
  "size": 40060,
12399
12710
  "path": "../public/_nuxt/CIFC2HNk.js"
12400
12711
  },
12401
12712
  "/_nuxt/CKps1Vc12.js": {
12402
12713
  "type": "text/javascript; charset=utf-8",
12403
12714
  "etag": "\"8c1a-sGgOY3H/BjQtSI4134ZRlVbsPaE\"",
12404
- "mtime": "2026-08-20T22:41:29.642Z",
12715
+ "mtime": "2026-08-22T20:39:29.503Z",
12405
12716
  "size": 35866,
12406
12717
  "path": "../public/_nuxt/CKps1Vc12.js"
12407
12718
  },
12408
12719
  "/_nuxt/CO3cjsl1.js": {
12409
12720
  "type": "text/javascript; charset=utf-8",
12410
12721
  "etag": "\"36de-2NxLUyh/dpwLgyuiQ1dTlDvpUdo\"",
12411
- "mtime": "2026-08-20T22:41:29.643Z",
12722
+ "mtime": "2026-08-22T20:39:29.503Z",
12412
12723
  "size": 14046,
12413
12724
  "path": "../public/_nuxt/CO3cjsl1.js"
12414
12725
  },
12415
12726
  "/_nuxt/CRH0iqnQ.js": {
12416
12727
  "type": "text/javascript; charset=utf-8",
12417
12728
  "etag": "\"28ee-mlEAtJh5V2lxVpCZNYnrmCmdCVw\"",
12418
- "mtime": "2026-08-20T22:41:29.643Z",
12729
+ "mtime": "2026-08-22T20:39:29.505Z",
12419
12730
  "size": 10478,
12420
12731
  "path": "../public/_nuxt/CRH0iqnQ.js"
12421
12732
  },
12422
- "/_nuxt/C5uJN_MU.js": {
12423
- "type": "text/javascript; charset=utf-8",
12424
- "etag": "\"e528-d2Q1RVsrcdT28KoT+268fD4PiZM\"",
12425
- "mtime": "2026-08-20T22:41:29.642Z",
12426
- "size": 58664,
12427
- "path": "../public/_nuxt/C5uJN_MU.js"
12428
- },
12429
- "/_nuxt/CTLrtTtn2.js": {
12430
- "type": "text/javascript; charset=utf-8",
12431
- "etag": "\"17c6c-5Cv/WpFhgnvIZEiwuf0C7MskWU0\"",
12432
- "mtime": "2026-08-20T22:41:29.643Z",
12433
- "size": 97388,
12434
- "path": "../public/_nuxt/CTLrtTtn2.js"
12435
- },
12436
12733
  "/_nuxt/CTqLwyQP.js": {
12437
12734
  "type": "text/javascript; charset=utf-8",
12438
12735
  "etag": "\"262-DuQVjVm6tySeIfv3NrSsnDniZ2A\"",
12439
- "mtime": "2026-08-20T22:41:29.643Z",
12736
+ "mtime": "2026-08-22T20:39:29.505Z",
12440
12737
  "size": 610,
12441
12738
  "path": "../public/_nuxt/CTqLwyQP.js"
12442
12739
  },
12443
- "/_nuxt/CfOqJVtU.js": {
12444
- "type": "text/javascript; charset=utf-8",
12445
- "etag": "\"5fc-EGQ5LRG5cJFqVFN1I/pOoJERTXM\"",
12446
- "mtime": "2026-08-20T22:41:29.643Z",
12447
- "size": 1532,
12448
- "path": "../public/_nuxt/CfOqJVtU.js"
12449
- },
12450
12740
  "/_nuxt/CU7sPrmY.js": {
12451
12741
  "type": "text/javascript; charset=utf-8",
12452
12742
  "etag": "\"15df-qk6zlzi1WvB3XblsrXXkWBCSqno\"",
12453
- "mtime": "2026-08-20T22:41:29.643Z",
12743
+ "mtime": "2026-08-22T20:39:29.503Z",
12454
12744
  "size": 5599,
12455
12745
  "path": "../public/_nuxt/CU7sPrmY.js"
12456
12746
  },
12457
- "/_nuxt/Ch1EeKHP.js": {
12747
+ "/_nuxt/CfOqJVtU.js": {
12458
12748
  "type": "text/javascript; charset=utf-8",
12459
- "etag": "\"46de-E46fRh34lfchMEPLUm47F56IwyU\"",
12460
- "mtime": "2026-08-20T22:41:29.643Z",
12461
- "size": 18142,
12462
- "path": "../public/_nuxt/Ch1EeKHP.js"
12749
+ "etag": "\"5fc-EGQ5LRG5cJFqVFN1I/pOoJERTXM\"",
12750
+ "mtime": "2026-08-22T20:39:29.503Z",
12751
+ "size": 1532,
12752
+ "path": "../public/_nuxt/CfOqJVtU.js"
12463
12753
  },
12464
12754
  "/_nuxt/Clv7nJ_T2.js": {
12465
12755
  "type": "text/javascript; charset=utf-8",
12466
12756
  "etag": "\"6ea-FhDx7jEvtiX2TC+UY0cSK01jVDs\"",
12467
- "mtime": "2026-08-20T22:41:29.643Z",
12757
+ "mtime": "2026-08-22T20:39:29.503Z",
12468
12758
  "size": 1770,
12469
12759
  "path": "../public/_nuxt/Clv7nJ_T2.js"
12470
12760
  },
12471
- "/_nuxt/D-7v7DZs.js": {
12761
+ "/_nuxt/Ch1EeKHP.js": {
12472
12762
  "type": "text/javascript; charset=utf-8",
12473
- "etag": "\"692-NiWxxkGNeNt11fCMVrUdhExldxU\"",
12474
- "mtime": "2026-08-20T22:41:29.643Z",
12475
- "size": 1682,
12476
- "path": "../public/_nuxt/D-7v7DZs.js"
12763
+ "etag": "\"46de-E46fRh34lfchMEPLUm47F56IwyU\"",
12764
+ "mtime": "2026-08-22T20:39:29.503Z",
12765
+ "size": 18142,
12766
+ "path": "../public/_nuxt/Ch1EeKHP.js"
12477
12767
  },
12478
- "/_nuxt/D4ykC_lY2.js": {
12768
+ "/_nuxt/CqZ7dV6a2.js": {
12479
12769
  "type": "text/javascript; charset=utf-8",
12480
- "etag": "\"4401-22YGJAc9c1XoJ15tcIkblR7X/TI\"",
12481
- "mtime": "2026-08-20T22:41:29.643Z",
12482
- "size": 17409,
12483
- "path": "../public/_nuxt/D4ykC_lY2.js"
12770
+ "etag": "\"17ce9-uAaJzClLE2drlPfnKoEIOkXbVqQ\"",
12771
+ "mtime": "2026-08-22T20:39:29.503Z",
12772
+ "size": 97513,
12773
+ "path": "../public/_nuxt/CqZ7dV6a2.js"
12484
12774
  },
12485
12775
  "/_nuxt/D5HF1Z0f2.js": {
12486
12776
  "type": "text/javascript; charset=utf-8",
12487
12777
  "etag": "\"eb3-BAgBzd1c3v82aSbZqkVQFzbBJSE\"",
12488
- "mtime": "2026-08-20T22:41:29.643Z",
12778
+ "mtime": "2026-08-22T20:39:29.503Z",
12489
12779
  "size": 3763,
12490
12780
  "path": "../public/_nuxt/D5HF1Z0f2.js"
12491
12781
  },
12492
- "/_nuxt/DDHUGtv32.js": {
12493
- "type": "text/javascript; charset=utf-8",
12494
- "etag": "\"25f4-QPpdsaJZ2LTNyNuLKHyBYCVTF3s\"",
12495
- "mtime": "2026-08-20T22:41:29.643Z",
12496
- "size": 9716,
12497
- "path": "../public/_nuxt/DDHUGtv32.js"
12498
- },
12499
12782
  "/_nuxt/DEJ3sRrh2.js": {
12500
12783
  "type": "text/javascript; charset=utf-8",
12501
12784
  "etag": "\"ce0-tFkUGY3gkO2DmgdyV2SwZ9OD6Zw\"",
12502
- "mtime": "2026-08-20T22:41:29.643Z",
12785
+ "mtime": "2026-08-22T20:39:29.503Z",
12503
12786
  "size": 3296,
12504
12787
  "path": "../public/_nuxt/DEJ3sRrh2.js"
12505
12788
  },
12789
+ "/_nuxt/D-7v7DZs.js": {
12790
+ "type": "text/javascript; charset=utf-8",
12791
+ "etag": "\"692-NiWxxkGNeNt11fCMVrUdhExldxU\"",
12792
+ "mtime": "2026-08-22T20:39:29.503Z",
12793
+ "size": 1682,
12794
+ "path": "../public/_nuxt/D-7v7DZs.js"
12795
+ },
12506
12796
  "/_nuxt/DJxuKf9Z.js": {
12507
12797
  "type": "text/javascript; charset=utf-8",
12508
12798
  "etag": "\"1c5c-bNrRkSFjTHAkZrXz3cy5zKx/BIA\"",
12509
- "mtime": "2026-08-20T22:41:29.643Z",
12799
+ "mtime": "2026-08-22T20:39:29.504Z",
12510
12800
  "size": 7260,
12511
12801
  "path": "../public/_nuxt/DJxuKf9Z.js"
12512
12802
  },
12513
12803
  "/_nuxt/DMHcp4U1.js": {
12514
12804
  "type": "text/javascript; charset=utf-8",
12515
12805
  "etag": "\"16ce0-7tl1x4uvYFOEx3KLM3hMQ0Uztk4\"",
12516
- "mtime": "2026-08-20T22:41:29.643Z",
12806
+ "mtime": "2026-08-22T20:39:29.504Z",
12517
12807
  "size": 93408,
12518
12808
  "path": "../public/_nuxt/DMHcp4U1.js"
12519
12809
  },
12520
12810
  "/_nuxt/DPM_BYFz2.js": {
12521
12811
  "type": "text/javascript; charset=utf-8",
12522
12812
  "etag": "\"c7c-/yUGJZX4Gc4j79BXFG/VkarrAN4\"",
12523
- "mtime": "2026-08-20T22:41:29.643Z",
12813
+ "mtime": "2026-08-22T20:39:29.504Z",
12524
12814
  "size": 3196,
12525
12815
  "path": "../public/_nuxt/DPM_BYFz2.js"
12526
12816
  },
12527
12817
  "/_nuxt/DXLPf3t6.js": {
12528
12818
  "type": "text/javascript; charset=utf-8",
12529
12819
  "etag": "\"4733-isGV9waZI+6EjJjNlzwuJ+o1acE\"",
12530
- "mtime": "2026-08-20T22:41:29.643Z",
12820
+ "mtime": "2026-08-22T20:39:29.504Z",
12531
12821
  "size": 18227,
12532
12822
  "path": "../public/_nuxt/DXLPf3t6.js"
12533
12823
  },
12534
- "/_nuxt/DtuQPKVG.js": {
12824
+ "/_nuxt/DtncvtMS.js": {
12535
12825
  "type": "text/javascript; charset=utf-8",
12536
- "etag": "\"511-mS61dRsD3UEsuVYWfWD4Lep3nmY\"",
12537
- "mtime": "2026-08-20T22:41:29.643Z",
12538
- "size": 1297,
12539
- "path": "../public/_nuxt/DtuQPKVG.js"
12826
+ "etag": "\"1b674-RcX7JAqVdnFVddR72y0I76Cl5ec\"",
12827
+ "mtime": "2026-08-22T20:39:29.504Z",
12828
+ "size": 112244,
12829
+ "path": "../public/_nuxt/DtncvtMS.js"
12540
12830
  },
12541
12831
  "/_nuxt/FvWrDx_z.js": {
12542
12832
  "type": "text/javascript; charset=utf-8",
12543
12833
  "etag": "\"819-DP4Vwwy4P5vqmcUZEmGgWOiKfr4\"",
12544
- "mtime": "2026-08-20T22:41:29.643Z",
12834
+ "mtime": "2026-08-22T20:39:29.504Z",
12545
12835
  "size": 2073,
12546
12836
  "path": "../public/_nuxt/FvWrDx_z.js"
12547
12837
  },
12548
12838
  "/_nuxt/Gcazu-lR.js": {
12549
12839
  "type": "text/javascript; charset=utf-8",
12550
12840
  "etag": "\"6cf3-8JsDYiSzcRpJ9H5NPkIlhh192dk\"",
12551
- "mtime": "2026-08-20T22:41:29.643Z",
12841
+ "mtime": "2026-08-22T20:39:29.504Z",
12552
12842
  "size": 27891,
12553
12843
  "path": "../public/_nuxt/Gcazu-lR.js"
12554
12844
  },
12555
- "/_nuxt/Dpnaldxf2.js": {
12556
- "type": "text/javascript; charset=utf-8",
12557
- "etag": "\"b3d7-Wzt9YMKJ6cRPXAhVaG/DCO5oS4E\"",
12558
- "mtime": "2026-08-20T22:41:29.643Z",
12559
- "size": 46039,
12560
- "path": "../public/_nuxt/Dpnaldxf2.js"
12561
- },
12562
12845
  "/_nuxt/QcKfgokC.js": {
12563
12846
  "type": "text/javascript; charset=utf-8",
12564
12847
  "etag": "\"6fc7-nX9VUTird+t8oXsiFEHG4o+3KZc\"",
12565
- "mtime": "2026-08-20T22:41:29.643Z",
12848
+ "mtime": "2026-08-22T20:39:29.504Z",
12566
12849
  "size": 28615,
12567
12850
  "path": "../public/_nuxt/QcKfgokC.js"
12568
12851
  },
12569
12852
  "/_nuxt/XDsaI4JL.js": {
12570
12853
  "type": "text/javascript; charset=utf-8",
12571
12854
  "etag": "\"111-CAV/HXAIRkbZ+wXj5PMuZ34VwL0\"",
12572
- "mtime": "2026-08-20T22:41:29.644Z",
12855
+ "mtime": "2026-08-22T20:39:29.504Z",
12573
12856
  "size": 273,
12574
12857
  "path": "../public/_nuxt/XDsaI4JL.js"
12575
12858
  },
12859
+ "/_nuxt/DtuQPKVG.js": {
12860
+ "type": "text/javascript; charset=utf-8",
12861
+ "etag": "\"511-mS61dRsD3UEsuVYWfWD4Lep3nmY\"",
12862
+ "mtime": "2026-08-22T20:39:29.504Z",
12863
+ "size": 1297,
12864
+ "path": "../public/_nuxt/DtuQPKVG.js"
12865
+ },
12576
12866
  "/_nuxt/b5tj-z25.js": {
12577
12867
  "type": "text/javascript; charset=utf-8",
12578
12868
  "etag": "\"15633-OhFvblIl1RLveoXf+49Sbs9f0kM\"",
12579
- "mtime": "2026-08-20T22:41:29.644Z",
12869
+ "mtime": "2026-08-22T20:39:29.504Z",
12580
12870
  "size": 87603,
12581
12871
  "path": "../public/_nuxt/b5tj-z25.js"
12582
12872
  },
12583
- "/_nuxt/entry.m-nAFUcz.css": {
12584
- "type": "text/css; charset=utf-8",
12585
- "etag": "\"3198d-FpRSC7fW/e25ugF6FApOIYfwjj8\"",
12586
- "mtime": "2026-08-20T22:41:29.644Z",
12587
- "size": 203149,
12588
- "path": "../public/_nuxt/entry.m-nAFUcz.css"
12589
- },
12590
12873
  "/_nuxt/cRY3ZoRz.js": {
12591
12874
  "type": "text/javascript; charset=utf-8",
12592
12875
  "etag": "\"9fb5-MfhmWN2hIk0l6KrdJYZGSmgXV/Q\"",
12593
- "mtime": "2026-08-20T22:41:29.644Z",
12876
+ "mtime": "2026-08-22T20:39:29.504Z",
12594
12877
  "size": 40885,
12595
12878
  "path": "../public/_nuxt/cRY3ZoRz.js"
12596
12879
  },
12880
+ "/_nuxt/entry.Ci6Ki0cW.css": {
12881
+ "type": "text/css; charset=utf-8",
12882
+ "etag": "\"31b2c-d+2EtYUazo/iZnV+Zy4ZSNLpxoY\"",
12883
+ "mtime": "2026-08-22T20:39:29.504Z",
12884
+ "size": 203564,
12885
+ "path": "../public/_nuxt/entry.Ci6Ki0cW.css"
12886
+ },
12597
12887
  "/_nuxt/error-404.DopINOT1.css": {
12598
12888
  "type": "text/css; charset=utf-8",
12599
12889
  "etag": "\"97d-K8oApxLoQ3/i1Xmp2nwxFs6GN2s\"",
12600
- "mtime": "2026-08-20T22:41:29.644Z",
12890
+ "mtime": "2026-08-22T20:39:29.504Z",
12601
12891
  "size": 2429,
12602
12892
  "path": "../public/_nuxt/error-404.DopINOT1.css"
12603
12893
  },
12604
12894
  "/_nuxt/error-500.D7goJC9g.css": {
12605
12895
  "type": "text/css; charset=utf-8",
12606
12896
  "etag": "\"772-NbTPjEvoainsVYrrLesY3ZyqIC8\"",
12607
- "mtime": "2026-08-20T22:41:29.644Z",
12897
+ "mtime": "2026-08-22T20:39:29.504Z",
12608
12898
  "size": 1906,
12609
12899
  "path": "../public/_nuxt/error-500.D7goJC9g.css"
12610
12900
  },
12611
12901
  "/_nuxt/f0o80Gcm.js": {
12612
12902
  "type": "text/javascript; charset=utf-8",
12613
12903
  "etag": "\"a7f-5x2eRDUOefwC3QPg0kVkSDUrbtE\"",
12614
- "mtime": "2026-08-20T22:41:29.644Z",
12904
+ "mtime": "2026-08-22T20:39:29.504Z",
12615
12905
  "size": 2687,
12616
12906
  "path": "../public/_nuxt/f0o80Gcm.js"
12617
12907
  },
12618
12908
  "/_nuxt/hePW80VL.js": {
12619
12909
  "type": "text/javascript; charset=utf-8",
12620
12910
  "etag": "\"2cc-fA8td6k29UVF6JoPfhOPkceTK1M\"",
12621
- "mtime": "2026-08-20T22:41:29.644Z",
12911
+ "mtime": "2026-08-22T20:39:29.504Z",
12622
12912
  "size": 716,
12623
12913
  "path": "../public/_nuxt/hePW80VL.js"
12624
12914
  },
12625
12915
  "/_nuxt/k5q7GKnv.js": {
12626
12916
  "type": "text/javascript; charset=utf-8",
12627
12917
  "etag": "\"1d05-UsvZCdgKyTF4YGmVie85GyDt974\"",
12628
- "mtime": "2026-08-20T22:41:29.644Z",
12918
+ "mtime": "2026-08-22T20:39:29.504Z",
12629
12919
  "size": 7429,
12630
12920
  "path": "../public/_nuxt/k5q7GKnv.js"
12631
12921
  },
12632
12922
  "/_nuxt/modal.3A_G7d4A.css": {
12633
12923
  "type": "text/css; charset=utf-8",
12634
12924
  "etag": "\"582-5Yw0hoh/s2yrjXWjWJGHHaH7HI0\"",
12635
- "mtime": "2026-08-20T22:41:29.644Z",
12925
+ "mtime": "2026-08-22T20:39:29.504Z",
12636
12926
  "size": 1410,
12637
12927
  "path": "../public/_nuxt/modal.3A_G7d4A.css"
12638
12928
  },
12639
12929
  "/_nuxt/tLr-SJaf.js": {
12640
12930
  "type": "text/javascript; charset=utf-8",
12641
12931
  "etag": "\"401-Xd+RIl02qzT7vdWX4cShxFl1NGs\"",
12642
- "mtime": "2026-08-20T22:41:29.644Z",
12932
+ "mtime": "2026-08-22T20:39:29.504Z",
12643
12933
  "size": 1025,
12644
12934
  "path": "../public/_nuxt/tLr-SJaf.js"
12645
12935
  },
12646
- "/dev/sample-run.webm": {
12647
- "type": "video/webm",
12648
- "etag": "\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"",
12649
- "mtime": "2026-08-20T22:41:29.647Z",
12650
- "size": 184482,
12651
- "path": "../public/dev/sample-run.webm"
12936
+ "/_nuxt/tags.B5A43CvD.css": {
12937
+ "type": "text/css; charset=utf-8",
12938
+ "etag": "\"e0-yxupuC9Q0xA6EZcj3zDwhQz/fhQ\"",
12939
+ "mtime": "2026-08-22T20:39:29.504Z",
12940
+ "size": 224,
12941
+ "path": "../public/_nuxt/tags.B5A43CvD.css"
12942
+ },
12943
+ "/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2": {
12944
+ "type": "font/woff2",
12945
+ "etag": "\"21b4-5vUr0lwu56eej0WYd8CeVlrshdk\"",
12946
+ "mtime": "2026-08-22T20:39:29.485Z",
12947
+ "size": 8628,
12948
+ "path": "../public/_fonts/0ncyUitqxXEtrEm7HzcQs5wcgo3wfV568UNDKlMnwsw-w0Y558yvXBaRp1OJ6ZEQsSSyhrLS3tQZTVIEmsGbzXo.woff2"
12949
+ },
12950
+ "/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2": {
12951
+ "type": "font/woff2",
12952
+ "etag": "\"2144-wqgN+yL7WN+AVsPgk3XDykxurXk\"",
12953
+ "mtime": "2026-08-22T20:39:29.485Z",
12954
+ "size": 8516,
12955
+ "path": "../public/_fonts/5tRZydxhCpIwZ4Yf99ciVcTJxjB_TdL5XPynMmeCJR4-zei18mH_L_yyrzmgYbz265bB_W_eHd-LFGzZcS_SdtE.woff2"
12956
+ },
12957
+ "/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2": {
12958
+ "type": "font/woff2",
12959
+ "etag": "\"177c-7sGmeKySE5GVzm0dGyjV5D08aoU\"",
12960
+ "mtime": "2026-08-22T20:39:29.486Z",
12961
+ "size": 6012,
12962
+ "path": "../public/_fonts/EOefiLcwRKJ4nKM16K6z_F-mq3lOHkCw6EhYBbQIHPQ-nl9JjWyF976eNfiKihuAmOh43UjKIH95ojQg3EBL0Z0.woff2"
12963
+ },
12964
+ "/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2": {
12965
+ "type": "font/woff2",
12966
+ "etag": "\"1f38-//55P1Jgd0CYSpMe5xWKqC25SnI\"",
12967
+ "mtime": "2026-08-22T20:39:29.485Z",
12968
+ "size": 7992,
12969
+ "path": "../public/_fonts/GZ8Vu2ga9Ys2RWqI_5_fmscGtaVz0BT0fO9HHusvG5Q-3uovunZ3f6ktPUtRyj_ghk9XNUfND7GlCM2BYJtdJWw.woff2"
12970
+ },
12971
+ "/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2": {
12972
+ "type": "font/woff2",
12973
+ "etag": "\"2224-DOM9SokVAMep6ZvnjMP9IsHmo0o\"",
12974
+ "mtime": "2026-08-22T20:39:29.485Z",
12975
+ "size": 8740,
12976
+ "path": "../public/_fonts/XUVCr3JJnCKa3ZjFe_4w-iDoaxDWfJzV4YCx_1QCo_E-3jWYsKhSrJxbXnSqiLm_B7lgRj5JeEHZF09nljCh3M0.woff2"
12977
+ },
12978
+ "/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2": {
12979
+ "type": "font/woff2",
12980
+ "etag": "\"1e3c-u6AgwP0EJgeYcv3XkpomC0FIRc0\"",
12981
+ "mtime": "2026-08-22T20:39:29.486Z",
12982
+ "size": 7740,
12983
+ "path": "../public/_fonts/_WITXZSlvQMoD2fEgG1wXh8OdDfanMwrMC1wOPGgNhY-DGRD4A2ezdSeftFtmisWfZSsUcF6tvcGkBhNOAHhEgk.woff2"
12984
+ },
12985
+ "/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2": {
12986
+ "type": "font/woff2",
12987
+ "etag": "\"1edc-fkjVSx3x0/ZX/JAidZAwgYP/ndw\"",
12988
+ "mtime": "2026-08-22T20:39:29.486Z",
12989
+ "size": 7900,
12990
+ "path": "../public/_fonts/YpdduKWWs-eOA_Cc_7jA92GH6kPvk9DopllJiZ2Ltr4-xlZteAWjxfvRgLsA8z771osmF3aCdHwOdhrFE7sEFoQ.woff2"
12991
+ },
12992
+ "/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2": {
12993
+ "type": "font/woff2",
12994
+ "etag": "\"177c-80/RBhNFJqcP3UljAelorcOubsE\"",
12995
+ "mtime": "2026-08-22T20:39:29.486Z",
12996
+ "size": 6012,
12997
+ "path": "../public/_fonts/bjNDQff8sSvRh4GSJLCMMDpBdKcXueWLQqqQmnFqm7o-8fGs_K2xfIMVefRfexJe4qYf76rOVS_5WhCBYBsxYVo.woff2"
12998
+ },
12999
+ "/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2": {
13000
+ "type": "font/woff2",
13001
+ "etag": "\"16f0-XEqELcbY5UPEivjwMKtP26b9tNc\"",
13002
+ "mtime": "2026-08-22T20:39:29.486Z",
13003
+ "size": 5872,
13004
+ "path": "../public/_fonts/cfe5huB_y467A-yGRsjncGttRMYh8iB3HIAbd1-EgFk-_StpNKo8SiO_EaTbyGHT7XYvLA1oY5zTHOn_eSaSyTk.woff2"
13005
+ },
13006
+ "/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2": {
13007
+ "type": "font/woff2",
13008
+ "etag": "\"1ea8-avadMHwzrw88TD65bvAepDkPR04\"",
13009
+ "mtime": "2026-08-22T20:39:29.486Z",
13010
+ "size": 7848,
13011
+ "path": "../public/_fonts/e-_sz56pssm7ydCJFOGAUPMl6TV_DbBVqRvEYBSrqVc-_p0SPnOA0FWTLlD4I2lH2hgDcJUxfAKRZAYBMxgjiC0.woff2"
13012
+ },
13013
+ "/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2": {
13014
+ "type": "font/woff2",
13015
+ "etag": "\"21e4-2xCtTiyjgRAM5Dk9QxxKODBGei4\"",
13016
+ "mtime": "2026-08-22T20:39:29.486Z",
13017
+ "size": 8676,
13018
+ "path": "../public/_fonts/m6rGg_mpoPQz2cTkdhDYgczR4yctyKztEG6iwU71C34-LpS_o7_2y38Z56f0WGt_t_5ngxEqpN2qQIBqyNhFgsU.woff2"
13019
+ },
13020
+ "/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2": {
13021
+ "type": "font/woff2",
13022
+ "etag": "\"1548-qD0ozyo93J9OeSW1BKUcbKGjBoQ\"",
13023
+ "mtime": "2026-08-22T20:39:29.486Z",
13024
+ "size": 5448,
13025
+ "path": "../public/_fonts/nco6D2lcYG_YRxaF8tG6Gs39nDWiQTHuWOjZbslCV8s-IUsuo3G_y8xv3hRlufkQpA8w-oRC3eG7HYs5j_P_274.woff2"
13026
+ },
13027
+ "/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2": {
13028
+ "type": "font/woff2",
13029
+ "etag": "\"15b0-sqzPYvDy9re3PVEvO6N+mfZ0x+M\"",
13030
+ "mtime": "2026-08-22T20:39:29.486Z",
13031
+ "size": 5552,
13032
+ "path": "../public/_fonts/op99aXquCGImGVv0pEDnzC7HS8p1SZ6VzEO576zT4MA-mpC9F6cIaTw8AO5X8_UXZ7ioAW2oHM_76x0asIyVA80.woff2"
13033
+ },
13034
+ "/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2": {
13035
+ "type": "font/woff2",
13036
+ "etag": "\"1608-D9gBKRW7h8xB8fw0DKyUKwCWNaQ\"",
13037
+ "mtime": "2026-08-22T20:39:29.486Z",
13038
+ "size": 5640,
13039
+ "path": "../public/_fonts/vYKPADYc-DuiKOUdPseFWq8k7wot3DXAgkBGOtlALzM-_fCqsHYsWtfAvLhylqaUYj1rC930WvXTjBVdTJtv5LA.woff2"
13040
+ },
13041
+ "/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2": {
13042
+ "type": "font/woff2",
13043
+ "etag": "\"1718-O4VsLbdOi9kDnEH4r+8VOq3o5HU\"",
13044
+ "mtime": "2026-08-22T20:39:29.486Z",
13045
+ "size": 5912,
13046
+ "path": "../public/_fonts/tch9LzN5j_dlnjUtoti6RdPCzFPIC61h2dp093uB1d4-6ufKabglPJqip8M2ovOr08UNFI7rTJNJ_NpV2P9blpc.woff2"
13047
+ },
13048
+ "/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2": {
13049
+ "type": "font/woff2",
13050
+ "etag": "\"1578-DBk4lWQ0jupAQEUE7SJTDlGmrXQ\"",
13051
+ "mtime": "2026-08-22T20:39:29.486Z",
13052
+ "size": 5496,
13053
+ "path": "../public/_fonts/zDv8W5qScDHC1KDT1cvI7PwzOHF-p3XubgMMgTX-1UE-GKt2pu9p2cnYqnrvnVM1O_b7ipTl1lhOzymkeh4kdd8.woff2"
12652
13054
  },
12653
13055
  "/_nuxt/builds/latest.json": {
12654
13056
  "type": "application/json",
12655
- "etag": "\"47-fD8U4opHlWKQhqTIE2TqnoZK0EE\"",
12656
- "mtime": "2026-08-20T22:41:29.618Z",
13057
+ "etag": "\"47-t7aqdMYQbHZzb5bse/TNr8wuci8\"",
13058
+ "mtime": "2026-08-22T20:39:29.480Z",
12657
13059
  "size": 71,
12658
13060
  "path": "../public/_nuxt/builds/latest.json"
12659
13061
  },
12660
- "/_nuxt/builds/meta/f94c5b32-3977-4b64-aa04-5c5156832c09.json": {
13062
+ "/_nuxt/builds/meta/a872bf7d-d21f-4cc5-b4d7-6ddb7b63d620.json": {
12661
13063
  "type": "application/json",
12662
- "etag": "\"58-tA0usJ0xkw1fSHtG7sIQE0YnY2E\"",
12663
- "mtime": "2026-08-20T22:41:29.614Z",
13064
+ "etag": "\"58-jhsR4rANAmm+ySJhxJbgIVMTWaY\"",
13065
+ "mtime": "2026-08-22T20:39:29.477Z",
12664
13066
  "size": 88,
12665
- "path": "../public/_nuxt/builds/meta/f94c5b32-3977-4b64-aa04-5c5156832c09.json"
13067
+ "path": "../public/_nuxt/builds/meta/a872bf7d-d21f-4cc5-b4d7-6ddb7b63d620.json"
13068
+ },
13069
+ "/dev/sample-run.webm": {
13070
+ "type": "video/webm",
13071
+ "etag": "\"2d0a2-Bs1NfwhRTxVtmYmJRWP+xntSahM\"",
13072
+ "mtime": "2026-08-22T20:39:29.514Z",
13073
+ "size": 184482,
13074
+ "path": "../public/dev/sample-run.webm"
12666
13075
  }
12667
13076
  };
12668
13077
 
@@ -12965,8 +13374,10 @@ const _lazy_WHW6Ad = () => import('../routes/api/settings/ai.put.mjs');
12965
13374
  const _lazy_CmdGri = () => import('../routes/api/settings/ai/models.post.mjs');
12966
13375
  const _lazy_U7M8oI = () => import('../routes/api/settings/ai/ping.post.mjs');
12967
13376
  const _lazy_0YyBSd = () => import('../routes/debug/click.post.mjs');
13377
+ const _lazy_VauhsT = () => import('../routes/debug/close-page.post.mjs');
12968
13378
  const _lazy_kwZv_c = () => import('../routes/debug/fill.post.mjs');
12969
13379
  const _lazy_66j9OP = () => import('../routes/debug/goto.post.mjs');
13380
+ const _lazy_UsMczL = () => import('../routes/debug/replay-decision.post.mjs');
12970
13381
  const _lazy_lMebqj = () => import('../routes/health.get.mjs');
12971
13382
  const _lazy_JohveF = () => import('../routes/recording/_id_.delete.mjs');
12972
13383
  const _lazy_6B6AmM = () => import('../routes/recording/_id_.get.mjs');
@@ -13016,8 +13427,10 @@ const handlers = [
13016
13427
  { route: '/api/settings/ai/models', handler: _lazy_CmdGri, lazy: true, middleware: false, method: "post" },
13017
13428
  { route: '/api/settings/ai/ping', handler: _lazy_U7M8oI, lazy: true, middleware: false, method: "post" },
13018
13429
  { route: '/debug/click', handler: _lazy_0YyBSd, lazy: true, middleware: false, method: "post" },
13430
+ { route: '/debug/close-page', handler: _lazy_VauhsT, lazy: true, middleware: false, method: "post" },
13019
13431
  { route: '/debug/fill', handler: _lazy_kwZv_c, lazy: true, middleware: false, method: "post" },
13020
13432
  { route: '/debug/goto', handler: _lazy_66j9OP, lazy: true, middleware: false, method: "post" },
13433
+ { route: '/debug/replay-decision', handler: _lazy_UsMczL, lazy: true, middleware: false, method: "post" },
13021
13434
  { route: '/health', handler: _lazy_lMebqj, lazy: true, middleware: false, method: "get" },
13022
13435
  { route: '/recording/:id', handler: _lazy_JohveF, lazy: true, middleware: false, method: "delete" },
13023
13436
  { route: '/recording/:id', handler: _lazy_6B6AmM, lazy: true, middleware: false, method: "get" },
@@ -13490,5 +13903,5 @@ setupGracefulShutdown(listener, nitroApp);
13490
13903
  }
13491
13904
  const nodeServer = {};
13492
13905
 
13493
- 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 };
13906
+ export { $fetch as $, ActiveVars as A, ownsKey as B, BadRequest as C, acutis as D, EnvKey as E, useStorage as F, fromLine as G, HttpError as H, keyed as I, parseURL as J, encodePath as K, decodePath as L, MASK as M, NotFound as N, withQuery as O, PACKAGE_ROOT as P, hasProtocol as Q, RUNNER_DIR as R, STREAM_REPORTER_PATH as S, isScriptProtocol as T, Url as U, ValidationFailed as V, joinURL as W, sanitizeStatusCode as X, klona as Y, defuFn as Z, hash$1 as _, setResponseStatus as a, parseQuery as a0, withTrailingSlash as a1, withoutTrailingSlash as a2, isEqual as a3, setCookie as a4, getCookie as a5, deleteCookie as a6, useRuntimeConfig as a7, joinRelativeURL as a8, defineRenderHandler as a9, destr as aa, getRouteRules as ab, relative as ac, getResponseStatusText as ad, getResponseStatus as ae, useNitroApp as af, nodeServer as ag, 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 };
13494
13907
  //# sourceMappingURL=nitro.mjs.map