@jpkme/diff-review 0.1.13 → 0.1.14

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 (95) hide show
  1. package/bin/diff-review.mjs +72 -53
  2. package/lib/prompt.mjs +8 -6
  3. package/package.json +1 -1
  4. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css +1 -0
  5. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.br +0 -0
  6. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.gz +0 -0
  7. package/web/build/client/_app/immutable/assets/storage.C8XGESwn.css +1 -0
  8. package/web/build/client/_app/immutable/assets/storage.C8XGESwn.css.br +0 -0
  9. package/web/build/client/_app/immutable/assets/storage.C8XGESwn.css.gz +0 -0
  10. package/web/build/client/_app/immutable/chunks/C0hrdiUt.js +2 -0
  11. package/web/build/client/_app/immutable/chunks/C0hrdiUt.js.br +0 -0
  12. package/web/build/client/_app/immutable/chunks/C0hrdiUt.js.gz +0 -0
  13. package/web/build/client/_app/immutable/chunks/{BXUWMim4.js → CpeIO6nz.js} +6 -9
  14. package/web/build/client/_app/immutable/chunks/CpeIO6nz.js.br +0 -0
  15. package/web/build/client/_app/immutable/chunks/CpeIO6nz.js.gz +0 -0
  16. package/web/build/client/_app/immutable/chunks/{Bu1mm6Oz.js → FOc6rgIW.js} +1 -1
  17. package/web/build/client/_app/immutable/chunks/FOc6rgIW.js.br +2 -0
  18. package/web/build/client/_app/immutable/chunks/FOc6rgIW.js.gz +0 -0
  19. package/web/build/client/_app/immutable/entry/{app.CTgiuiU1.js → app.DcAtSJ3n.js} +2 -2
  20. package/web/build/client/_app/immutable/entry/app.DcAtSJ3n.js.br +0 -0
  21. package/web/build/client/_app/immutable/entry/app.DcAtSJ3n.js.gz +0 -0
  22. package/web/build/client/_app/immutable/entry/start.CO5l0Zbx.js +1 -0
  23. package/web/build/client/_app/immutable/entry/start.CO5l0Zbx.js.br +0 -0
  24. package/web/build/client/_app/immutable/entry/start.CO5l0Zbx.js.gz +0 -0
  25. package/web/build/client/_app/immutable/nodes/{1.0PQZpSbJ.js → 1.E-Hs7ura.js} +1 -1
  26. package/web/build/client/_app/immutable/nodes/1.E-Hs7ura.js.br +4 -0
  27. package/web/build/client/_app/immutable/nodes/1.E-Hs7ura.js.gz +0 -0
  28. package/web/build/client/_app/immutable/nodes/2.s1_irV1Q.js +10 -0
  29. package/web/build/client/_app/immutable/nodes/2.s1_irV1Q.js.br +0 -0
  30. package/web/build/client/_app/immutable/nodes/2.s1_irV1Q.js.gz +0 -0
  31. package/web/build/client/_app/immutable/nodes/{3.AciugOtL.js → 3.pgwe-_5b.js} +1 -1
  32. package/web/build/client/_app/immutable/nodes/3.pgwe-_5b.js.br +0 -0
  33. package/web/build/client/_app/immutable/nodes/3.pgwe-_5b.js.gz +0 -0
  34. package/web/build/client/_app/version.json +1 -1
  35. package/web/build/client/_app/version.json.br +0 -0
  36. package/web/build/client/_app/version.json.gz +0 -0
  37. package/web/build/handler.js +3 -3
  38. package/web/build/index.js +3 -3
  39. package/web/build/server/chunks/1-BFhhV5JB.js +7 -0
  40. package/web/build/server/chunks/{1-C2qlInYk.js.map → 1-BFhhV5JB.js.map} +1 -1
  41. package/web/build/server/chunks/2-BZ_MVqj8.js +7 -0
  42. package/web/build/server/chunks/2-BZ_MVqj8.js.map +1 -0
  43. package/web/build/server/chunks/3-BV-TIUp1.js +7 -0
  44. package/web/build/server/chunks/{3-SO3atuWO.js.map → 3-BV-TIUp1.js.map} +1 -1
  45. package/web/build/server/chunks/{_server.ts-CRNhzL2a.js → _server.ts-CdFoXw36.js} +4 -4
  46. package/web/build/server/chunks/{_server.ts-CRNhzL2a.js.map → _server.ts-CdFoXw36.js.map} +1 -1
  47. package/web/build/server/chunks/{agent-sessions-kcUaLhK5.js → agent-sessions-D0WwtWgR.js} +56 -15
  48. package/web/build/server/chunks/agent-sessions-D0WwtWgR.js.map +1 -0
  49. package/web/build/server/chunks/{git-review-CXKcjYgZ.js → git-review-CgcBIbvM.js} +7 -7
  50. package/web/build/server/chunks/{git-review-CXKcjYgZ.js.map → git-review-CgcBIbvM.js.map} +1 -1
  51. package/web/build/server/chunks/{handler-_E0NucKN.js → handler-DbxjtK9M.js} +3 -3
  52. package/web/build/server/chunks/{handler-_E0NucKN.js.map → handler-DbxjtK9M.js.map} +1 -1
  53. package/web/build/server/chunks/{hooks.server-D7yPODoc.js → hooks.server-Dg6gYUqs.js} +3 -3
  54. package/web/build/server/chunks/{hooks.server-D7yPODoc.js.map → hooks.server-Dg6gYUqs.js.map} +1 -1
  55. package/web/build/server/chunks/{index.js-lMtDM8ZQ.js → index.js-NNne-njN.js} +876 -879
  56. package/web/build/server/chunks/index.js-NNne-njN.js.map +1 -0
  57. package/web/build/server/chunks/{manifest.js-BIm6jot5.js → manifest.js-V8ViI5bl.js} +8 -8
  58. package/web/build/server/chunks/{manifest.js-BIm6jot5.js.map → manifest.js-V8ViI5bl.js.map} +1 -1
  59. package/web/build/server/chunks/{remote-1g4ayag-DmqxwUIz.js → remote-1g4ayag-CCsG2QXw.js} +4 -4
  60. package/web/build/server/chunks/{remote-1g4ayag-DmqxwUIz.js.map → remote-1g4ayag-CCsG2QXw.js.map} +1 -1
  61. package/web/build/server/chunks/{remote-wh6t6j-DZk0W9Pp.js → remote-wh6t6j-BCvmX37z.js} +5 -5
  62. package/web/build/server/chunks/{remote-wh6t6j-DZk0W9Pp.js.map → remote-wh6t6j-BCvmX37z.js.map} +1 -1
  63. package/web/build/server/chunks/{validate-BsTKyhsq.js → validate-CAQ31C7k.js} +2 -2
  64. package/web/build/server/chunks/{validate-BsTKyhsq.js.map → validate-CAQ31C7k.js.map} +1 -1
  65. package/web/build/client/_app/immutable/assets/2.tqrMRTM0.css +0 -1
  66. package/web/build/client/_app/immutable/assets/2.tqrMRTM0.css.br +0 -0
  67. package/web/build/client/_app/immutable/assets/2.tqrMRTM0.css.gz +0 -0
  68. package/web/build/client/_app/immutable/assets/storage.DqYH0w6R.css +0 -1
  69. package/web/build/client/_app/immutable/assets/storage.DqYH0w6R.css.br +0 -0
  70. package/web/build/client/_app/immutable/assets/storage.DqYH0w6R.css.gz +0 -0
  71. package/web/build/client/_app/immutable/chunks/BXUWMim4.js.br +0 -0
  72. package/web/build/client/_app/immutable/chunks/BXUWMim4.js.gz +0 -0
  73. package/web/build/client/_app/immutable/chunks/Bu1mm6Oz.js.br +0 -0
  74. package/web/build/client/_app/immutable/chunks/Bu1mm6Oz.js.gz +0 -0
  75. package/web/build/client/_app/immutable/chunks/DPfXzQnm.js +0 -2
  76. package/web/build/client/_app/immutable/chunks/DPfXzQnm.js.br +0 -0
  77. package/web/build/client/_app/immutable/chunks/DPfXzQnm.js.gz +0 -0
  78. package/web/build/client/_app/immutable/entry/app.CTgiuiU1.js.br +0 -0
  79. package/web/build/client/_app/immutable/entry/app.CTgiuiU1.js.gz +0 -0
  80. package/web/build/client/_app/immutable/entry/start.CFSl0kht.js +0 -1
  81. package/web/build/client/_app/immutable/entry/start.CFSl0kht.js.br +0 -0
  82. package/web/build/client/_app/immutable/entry/start.CFSl0kht.js.gz +0 -0
  83. package/web/build/client/_app/immutable/nodes/1.0PQZpSbJ.js.br +0 -2
  84. package/web/build/client/_app/immutable/nodes/1.0PQZpSbJ.js.gz +0 -0
  85. package/web/build/client/_app/immutable/nodes/2.DQaoQoy4.js +0 -10
  86. package/web/build/client/_app/immutable/nodes/2.DQaoQoy4.js.br +0 -0
  87. package/web/build/client/_app/immutable/nodes/2.DQaoQoy4.js.gz +0 -0
  88. package/web/build/client/_app/immutable/nodes/3.AciugOtL.js.br +0 -0
  89. package/web/build/client/_app/immutable/nodes/3.AciugOtL.js.gz +0 -0
  90. package/web/build/server/chunks/1-C2qlInYk.js +0 -7
  91. package/web/build/server/chunks/2-DyE177MK.js +0 -7
  92. package/web/build/server/chunks/2-DyE177MK.js.map +0 -1
  93. package/web/build/server/chunks/3-SO3atuWO.js +0 -7
  94. package/web/build/server/chunks/agent-sessions-kcUaLhK5.js.map +0 -1
  95. package/web/build/server/chunks/index.js-lMtDM8ZQ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"validate-BsTKyhsq.js","sources":["../../../.svelte-kit/output/server/chunks/validate.js"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { basename, join, resolve } from \"node:path\";\n//#region ../lib/fingerprint.mjs\n/**\n* Tips cortos de SHA. Sin APIs de Node: la UI lo importa para armar el nombre del JSON.\n*/\nfunction shortSha(sha, n = 10) {\n\tconst hex = String(sha || \"\").toLowerCase().replace(/[^a-f0-9]/g, \"\");\n\treturn hex.length >= 7 ? hex.slice(0, n) : \"\";\n}\nfunction fingerprint(branchSha, baseSha) {\n\tconst a = shortSha(branchSha);\n\tconst b = shortSha(baseSha);\n\tif (!a || !b) return null;\n\treturn `${a}-${b}`;\n}\n//#endregion\n//#region ../lib/output-name.mjs\n/**\n* Nombre del JSON que escribe el agente.\n* Preferido: tips cortos branch/base. Legacy (con stamp o sin tips) sigue válido al importar.\n*/\n/** Prefijo del formato actual. */\nvar OUTPUT_PREFIX = \"diff-rev\";\n/** Prefijo legacy (sin tips / con stamp). */\nvar OUTPUT_PREFIX_LEGACY = \"diff-review-output\";\n/** Carpeta (en la raíz del repo revisado) donde va el JSON, el diff y la sesión del agente. */\nvar OUTPUT_DIR = \".diff-review\";\n/** Path relativo a la raíz del repo, con `/` (el que se le da al agente): `.diff-review/<nombre>`. */\nfunction outputRelPath(filename) {\n\treturn `${OUTPUT_DIR}/${String(filename || \"\").replace(/^.*[\\\\/]/, \"\")}`;\n}\n/** Nombre legacy fijo. */\nvar OUTPUT_FILENAME_LEGACY = `${OUTPUT_PREFIX_LEGACY}.json`;\n/**\n* Válidos:\n* - diff-rev_{branchTip}_{baseTip}.json\n* - diff-report_{branchTip}-{baseTip}_YYYYMMDD-HHmmss.json (legacy)\n* - diff-review-output.json / diff-review-output-YYYYMMDD-HHmmss.json (legacy)\n*/\nvar OUTPUT_FILENAME_RE = /^(?:diff-rev_[0-9a-f]{7,12}_[0-9a-f]{7,12}|diff-report_[0-9a-f]{7,12}-[0-9a-f]{7,12}_\\d{8}-\\d{6}|diff-review-output(?:-\\d{8}-\\d{6})?)\\.json$/i;\n/**\n* @param {{ branchSha?: string, baseSha?: string }} [input]\n* @returns {string}\n* con tips: diff-rev_aaaaaaaaaa_bbbbbbbbbb.json\n* sin tips: diff-review-output.json\n*/\nfunction makeOutputFilename(input = {}) {\n\tconst opts = input instanceof Date ? {} : input || {};\n\tconst fp = fingerprint(opts.branchSha, opts.baseSha);\n\tif (fp) {\n\t\tconst [branchTip, baseTip] = fp.split(\"-\");\n\t\tif (branchTip && baseTip) return `${OUTPUT_PREFIX}_${branchTip}_${baseTip}.json`;\n\t}\n\treturn OUTPUT_FILENAME_LEGACY;\n}\nfunction isOutputFilename(name) {\n\treturn OUTPUT_FILENAME_RE.test(String(name || \"\").trim());\n}\n//#endregion\n//#region ../lib/config.mjs\nvar DEFAULT_IGNORE = [\n\t\"**/package-lock.json\",\n\t\"**/pnpm-lock.yaml\",\n\t\"**/yarn.lock\",\n\t\"**/bun.lock\",\n\t\"**/bun.lockb\",\n\t\"**/*.g.cs\",\n\t\"**/*Snapshot.cs\",\n\t\"**/*.Designer.cs\",\n\t\"**/node_modules/**\",\n\t\"**/.svelte-kit/**\",\n\t\"**/dist/**\",\n\t\"**/build/**\",\n\t\"**/*.min.js\",\n\t\"**/*.min.css\",\n\t\"**/CODE_REVIEW_CORRECTNESS_FINDINGS.md\"\n];\nvar STORE_DIFF_MAX = 4e5;\nvar GUIDELINE_FILES = [\n\t\"REVIEW.md\",\n\t\"CLAUDE.md\",\n\t\"AGENTS.md\"\n];\nfunction unquote(s) {\n\tconst t = String(s || \"\").trim();\n\tif (t.startsWith(\"\\\"\") && t.endsWith(\"\\\"\") || t.startsWith(\"'\") && t.endsWith(\"'\")) return t.slice(1, -1);\n\treturn t;\n}\n/** Minimal YAML: `key: value` and `key:\\n - item`. */\nfunction parseSimpleYaml(text) {\n\tconst result = {};\n\tlet key = null;\n\tfor (const raw of String(text || \"\").split(/\\r?\\n/)) {\n\t\tif (!raw.trim() || raw.trim().startsWith(\"#\")) continue;\n\t\tconst list = raw.match(/^\\s+-\\s+(.*)$/);\n\t\tif (list && key) {\n\t\t\tif (!Array.isArray(result[key])) result[key] = [];\n\t\t\tresult[key].push(unquote(list[1]));\n\t\t\tcontinue;\n\t\t}\n\t\tconst kv = raw.match(/^([A-Za-z][\\w]*)\\s*:\\s*(.*)$/);\n\t\tif (!kv) continue;\n\t\tkey = kv[1];\n\t\tconst v = kv[2].trim();\n\t\tresult[key] = v === \"\" ? [] : unquote(v);\n\t}\n\treturn result;\n}\nfunction globToRegExp(glob) {\n\tlet g = String(glob || \"\").replace(/\\\\/g, \"/\");\n\tif (!g.includes(\"/\")) g = `**/${g}`;\n\tlet s = \"\";\n\tfor (let i = 0; i < g.length; i++) {\n\t\tconst c = g[i];\n\t\tif (c === \"*\" && g[i + 1] === \"*\") if (g[i + 2] === \"/\") {\n\t\t\ts += \"(?:.*/)?\";\n\t\t\ti += 2;\n\t\t} else {\n\t\t\ts += \".*\";\n\t\t\ti += 1;\n\t\t}\n\t\telse if (c === \"*\") s += \"[^/]*\";\n\t\telse if (c === \"?\") s += \"[^/]\";\n\t\telse if (\"+()[]{}|.^$\".includes(c)) s += `\\\\${c}`;\n\t\telse s += c;\n\t}\n\treturn new RegExp(`^${s}$`, \"i\");\n}\nfunction globMatch(filePath, pattern) {\n\tconst norm = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn globToRegExp(pattern).test(norm);\n}\nfunction isIgnored(filePath, patterns) {\n\treturn (patterns || []).some((p) => globMatch(filePath, p));\n}\nfunction isTestPath(filePath) {\n\tconst p = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn /(^|\\/)(__tests__|tests?|spec)s?(\\/|$)/i.test(p) || /\\.(test|spec)\\.[^.]+$/i.test(p);\n}\nfunction readIfExists(path) {\n\ttry {\n\t\treturn existsSync(path) ? readFileSync(path, \"utf8\") : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction loadReviewConfig(repo) {\n\tconst jsonText = readIfExists(join(repo, \".diff-review.json\"));\n\tconst yamlText = readIfExists(join(repo, \".diff-review.yml\")) || readIfExists(join(repo, \".diff-review.yaml\"));\n\tlet extra = {};\n\tif (jsonText) try {\n\t\textra = JSON.parse(jsonText);\n\t} catch {\n\t\textra = {};\n\t}\n\telse if (yamlText) extra = parseSimpleYaml(yamlText);\n\tconst extraIgnore = Array.isArray(extra.ignore) ? extra.ignore.map(String) : [];\n\tconst rulesFile = extra.rulesFile ? String(extra.rulesFile) : \"REVIEW.md\";\n\tconst rules = readIfExists(join(repo, rulesFile)) || \"\";\n\tconst model = extra.model && extra.model !== \"default\" ? String(extra.model) : null;\n\treturn {\n\t\tignore: [...DEFAULT_IGNORE, ...extraIgnore],\n\t\tmodel,\n\t\trulesFile,\n\t\trules: rules.trim()\n\t};\n}\n/** CLAUDE.md / REVIEW.md / AGENTS.md from repo root and immediate parent dirs of touched files. */\nfunction collectGuidelines(repo, filePaths, { rulesFile = \"REVIEW.md\", maxChars = 8e3, maxTotalChars = 12e3, maxDepth = 1, skipNames = [] } = {}) {\n\tconst skip = new Set(skipNames);\n\tconst names = [.../* @__PURE__ */ new Set([rulesFile, ...GUIDELINE_FILES])].filter((name) => !skip.has(name));\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst out = [];\n\tconst addRel = (rel) => {\n\t\tconst norm = String(rel || \"\").replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\");\n\t\tif (!norm || seen.has(norm)) return;\n\t\tconst text = readIfExists(join(repo, ...norm.split(\"/\")));\n\t\tif (!text || !text.trim()) return;\n\t\tseen.add(norm);\n\t\tout.push({\n\t\t\tpath: norm,\n\t\t\ttext: text.trim()\n\t\t});\n\t};\n\tfor (const name of names) addRel(name);\n\tconst depth = Math.max(1, Number(maxDepth) || 1);\n\tfor (const filePath of filePaths || []) {\n\t\tconst parts = String(filePath || \"\").replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean);\n\t\tconst minLen = Math.max(1, parts.length - depth);\n\t\tfor (let len = parts.length - 1; len >= minLen; len--) {\n\t\t\tconst dir = parts.slice(0, len).join(\"/\");\n\t\t\tfor (const name of names) addRel(`${dir}/${name}`);\n\t\t}\n\t}\n\tlet total = 0;\n\tconst capped = [];\n\tfor (const item of out) {\n\t\tif (total >= maxTotalChars) break;\n\t\tconst room = maxTotalChars - total;\n\t\tconst slice = item.text.slice(0, Math.min(maxChars, room));\n\t\tif (!slice) continue;\n\t\tcapped.push({\n\t\t\tpath: item.path,\n\t\t\ttext: slice\n\t\t});\n\t\ttotal += slice.length;\n\t}\n\treturn capped;\n}\nfunction capDiff(diff, max = STORE_DIFF_MAX) {\n\tconst text = String(diff || \"\");\n\tif (text.length <= max) return {\n\t\tdiff: text,\n\t\tdiffChars: text.length,\n\t\ttruncated: false\n\t};\n\treturn {\n\t\tdiff: `${text.slice(0, max)}\\n\\n… [diff recortado: se guardan ${max} de ${text.length} caracteres]`,\n\t\tdiffChars: text.length,\n\t\ttruncated: true\n\t};\n}\n//#endregion\n//#region ../lib/git.mjs\nfunction assertGitRepo(repo) {\n\tconst raw = String(repo || \"\").trim();\n\tif (!raw) throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!/[\\\\/]/.test(raw) && !/^[A-Za-z]:/.test(raw)) throw new Error(`\"${raw}\" no es una ruta. Pegá la ruta absoluta del repo (ej. C:\\\\tienda-argenta\\\\tienda-argenta-2).`);\n\tconst resolved = resolve(raw);\n\tif (!resolved || resolved === \".\") throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!existsSync(resolved)) throw new Error(`No existe la carpeta: ${resolved}`);\n\tif (!existsSync(join(resolved, \".git\"))) throw new Error(`No es un repositorio git (falta .git): ${resolved}`);\n\treturn resolved;\n}\n/**\n* Si `cwd` está dentro de un repo git, devuelve la raíz absoluta; si no, null.\n* Acepta subcarpetas (usa `git rev-parse --show-toplevel`).\n*/\nfunction tryResolveGitRoot(cwd) {\n\tconst raw = String(cwd || \"\").trim();\n\tif (!raw) return null;\n\tconst dir = resolve(raw);\n\tif (!existsSync(dir)) return null;\n\ttry {\n\t\tconst root = execFileSync(\"git\", [\"rev-parse\", \"--show-toplevel\"], {\n\t\t\tcwd: dir,\n\t\t\tencoding: \"utf8\",\n\t\t\twindowsHide: true,\n\t\t\tstdio: [\n\t\t\t\t\"ignore\",\n\t\t\t\t\"pipe\",\n\t\t\t\t\"ignore\"\n\t\t\t]\n\t\t}).trim();\n\t\treturn root ? resolve(root) : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction git(repo, args, { maxBuffer = 64 * 1024 * 1024 } = {}) {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd: repo,\n\t\tencoding: \"utf8\",\n\t\tmaxBuffer,\n\t\twindowsHide: true\n\t});\n}\nfunction resolveRev(repo, ref) {\n\treturn git(repo, [\"rev-parse\", ref]).trim();\n}\nfunction branchTips(repo, branch, base) {\n\treturn {\n\t\tbranchSha: resolveRev(repo, branch),\n\t\tbaseSha: resolveRev(repo, base)\n\t};\n}\nfunction commitLog(repo, mergeBase, branch, limit = 25) {\n\ttry {\n\t\treturn git(repo, [\n\t\t\t\"log\",\n\t\t\t\"--oneline\",\n\t\t\t\"--no-merges\",\n\t\t\t\"-n\",\n\t\t\tString(limit),\n\t\t\t`${mergeBase}..${branch}`\n\t\t]).trim().split(\"\\n\").filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\nvar FILE_LINE_CACHE = /* @__PURE__ */ new Map();\nvar FILE_LINE_CACHE_MAX = 48;\nfunction rememberFileLines(key, lines) {\n\tif (FILE_LINE_CACHE.has(key)) FILE_LINE_CACHE.delete(key);\n\tFILE_LINE_CACHE.set(key, lines);\n\twhile (FILE_LINE_CACHE.size > FILE_LINE_CACHE_MAX) {\n\t\tconst oldest = FILE_LINE_CACHE.keys().next().value;\n\t\tFILE_LINE_CACHE.delete(oldest);\n\t}\n}\nfunction showFileLines(repo, rev, path) {\n\tconst resolved = assertGitRepo(repo);\n\tconst safeRev = String(rev || \"\").trim();\n\tconst safePath = String(path || \"\").replace(/\\\\/g, \"/\").trim();\n\tif (!safeRev || !/^[A-Za-z0-9._/\\-]+$/.test(safeRev)) throw new Error(\"Rev inválido.\");\n\tif (!safePath || safePath.startsWith(\"/\") || safePath.includes(\"..\") || safePath.includes(\"\\0\")) throw new Error(\"Ruta inválida.\");\n\tconst key = `${resolved}\\0${safeRev}\\0${safePath}`;\n\tif (FILE_LINE_CACHE.has(key)) return FILE_LINE_CACHE.get(key);\n\tlet text;\n\ttry {\n\t\ttext = git(resolved, [\"show\", `${safeRev}:${safePath}`]);\n\t} catch {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tif (text.includes(\"\\0\")) {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tconst raw = text.replace(/\\r\\n/g, \"\\n\");\n\tconst lines = raw.endsWith(\"\\n\") ? raw.slice(0, -1).split(\"\\n\") : raw.split(\"\\n\");\n\trememberFileLines(key, lines);\n\treturn lines;\n}\nfunction listBranches(repo) {\n\tconst names = git(repo, [\n\t\t\"for-each-ref\",\n\t\t\"--sort=-committerdate\",\n\t\t\"--format=%(refname:short)\",\n\t\t\"refs/heads\",\n\t\t\"refs/remotes\"\n\t]).split(\"\\n\").map((s) => s.trim()).filter(Boolean).map((name) => name.replace(/^origin\\//, \"\")).filter((name) => name !== \"HEAD\" && !name.endsWith(\"/HEAD\"));\n\tconst unique = [...new Set(names)];\n\tconst current = git(repo, [\n\t\t\"rev-parse\",\n\t\t\"--abbrev-ref\",\n\t\t\"HEAD\"\n\t]).trim();\n\tconst bases = unique.filter((n) => n === \"develop\" || n === \"main\" || n === \"master\");\n\treturn {\n\t\tbranches: unique,\n\t\tcurrent,\n\t\tdefaultBase: bases.includes(\"develop\") ? \"develop\" : bases.includes(\"main\") ? \"main\" : bases[0] || \"develop\"\n\t};\n}\n/** URL del remote (origin, o el primero disponible). Vacío si no hay. */\nfunction getRemoteUrl(repo, preferred = \"origin\") {\n\ttry {\n\t\tconst url = git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tpreferred\n\t\t]).trim();\n\t\tif (url) return url;\n\t} catch {}\n\ttry {\n\t\tconst remotes = git(repo, [\"remote\"]).split(\"\\n\").map((s) => s.trim()).filter(Boolean);\n\t\tif (!remotes.length) return \"\";\n\t\treturn git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tremotes[0]\n\t\t]).trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n//#endregion\n//#region ../lib/review-dir.mjs\n/**\n* Carpeta `.diff-review/` en la raíz del repo revisado: el JSON del reporte, el diff con el que se hizo y la sesión\n* del agente, todo con el mismo nombre base (`diff-rev_<branchTip>_<baseTip>`). Se ignora sola con su propio\n* `.gitignore`, así no deja cambios en archivos trackeados del repo.\n*\n* Los JSON viejos en la raíz del repo se siguen encontrando (`locateReviewFile`).\n*/\n/** @typedef {{ agentId: string, sessionId: string, model?: string, updatedAt?: string }} SessionRef */\nfunction reviewDir(repoRoot) {\n\treturn join(repoRoot, OUTPUT_DIR);\n}\n/** Crea `.diff-review/` (con su `.gitignore`) si no existe. */\nfunction ensureReviewDir(repoRoot) {\n\tconst dir = reviewDir(repoRoot);\n\tmkdirSync(dir, { recursive: true });\n\tconst ignore = join(dir, \".gitignore\");\n\tif (!existsSync(ignore)) writeFileSync(ignore, \"# Generado por diff-review: nada de esta carpeta va al repo.\\n*\\n\");\n\treturn dir;\n}\n/** `diff-rev_a_b.json` → `{ json, diff, session }` dentro de `.diff-review/`. */\nfunction companionPaths(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tconst stem = name.replace(/\\.json$/i, \"\");\n\tconst dir = reviewDir(repoRoot);\n\treturn {\n\t\tjson: join(dir, name),\n\t\tdiff: join(dir, `${stem}.diff`),\n\t\tsession: join(dir, `${stem}.session.json`)\n\t};\n}\n/** Dónde está el JSON de la review: `.diff-review/` primero y, si no, la raíz del repo (formato viejo). */\nfunction locateReviewFile(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tif (!name) return null;\n\tfor (const candidate of [companionPaths(repoRoot, name).json, join(repoRoot, name)]) try {\n\t\tif (statSync(candidate).isFile()) return candidate;\n\t} catch {}\n\treturn null;\n}\n/**\n* Guarda `git diff base...branch` junto al JSON (una vez por par de commits: el nombre ya trae los tips).\n* @returns {string | null} el path, o null si git falló\n*/\nfunction writeDiffCache(repoRoot, filename, { branch, base }) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\tif (existsSync(diff)) return diff;\n\ttry {\n\t\tconst text = git(repoRoot, [\"diff\", `${base}...${branch}`]);\n\t\tensureReviewDir(repoRoot);\n\t\twriteFileSync(diff, text);\n\t\treturn diff;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Guarda un diff ya armado (p. ej. el que muestra la web), pisando el anterior. */\nfunction writeDiffText(repoRoot, filename, text) {\n\tensureReviewDir(repoRoot);\n\tconst { diff } = companionPaths(repoRoot, filename);\n\twriteFileSync(diff, String(text ?? \"\"));\n\treturn diff;\n}\n/** @returns {string | null} texto del companion `.diff`, o null si no existe / no se pudo leer */\nfunction readDiffCache(repoRoot, filename) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\ttry {\n\t\tif (!existsSync(diff)) return null;\n\t\treturn readFileSync(diff, \"utf8\");\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** @param {SessionRef} ref */\nfunction writeSessionRef(repoRoot, filename, ref) {\n\tensureReviewDir(repoRoot);\n\tconst full = {\n\t\t...ref,\n\t\tupdatedAt: (/* @__PURE__ */ new Date()).toISOString()\n\t};\n\twriteFileSync(companionPaths(repoRoot, filename).session, `${JSON.stringify(full, null, 2)}\\n`);\n\treturn full;\n}\n//#endregion\n//#region ../lib/extract.mjs\n/**\n* Parte un `git diff` multi-archivo (texto de `writeDiffCache`) en entradas por path.\n* @param {string} text\n* @returns {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>}\n*/\nfunction parseGitDiffFiles(text) {\n\tconst raw = String(text || \"\").replace(/\\r\\n/g, \"\\n\");\n\tif (!raw.trim()) return [];\n\tconst parts = raw.split(/^diff --git /m);\n\t/** @type {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>} */\n\tconst out = [];\n\tfor (const part of parts) {\n\t\tconst chunk = part.trimStart();\n\t\tif (!chunk) continue;\n\t\tconst firstNl = chunk.indexOf(\"\\n\");\n\t\tconst paths = (firstNl === -1 ? chunk : chunk.slice(0, firstNl)).trim().match(/^a\\/(.+) b\\/(.+)$/);\n\t\tif (!paths) continue;\n\t\tlet oldPath = paths[1];\n\t\tlet path = paths[2];\n\t\tconst body = firstNl === -1 ? \"\" : chunk.slice(firstNl + 1);\n\t\tlet changeType = \"modified\";\n\t\tif (/^new file mode /m.test(body) || /^--- \\/dev\\/null/m.test(body)) changeType = \"added\";\n\t\telse if (/^deleted file mode /m.test(body) || /^\\+\\+\\+ \\/dev\\/null/m.test(body)) changeType = \"deleted\";\n\t\telse if (/^rename from /m.test(body) || /^rename to /m.test(body)) {\n\t\t\tchangeType = \"renamed\";\n\t\t\tconst from = body.match(/^rename from (.+)$/m);\n\t\t\tconst to = body.match(/^rename to (.+)$/m);\n\t\t\tif (from) oldPath = from[1].trim();\n\t\t\tif (to) path = to[1].trim();\n\t\t}\n\t\tlet hunkDiff = \"\";\n\t\tconst idx = `\\n${body}`.indexOf(\"\\n@@\");\n\t\tif (idx !== -1) hunkDiff = `\\n${body}`.slice(idx + 1);\n\t\telse if (/^Binary files /m.test(body)) hunkDiff = \"\";\n\t\tout.push({\n\t\t\tpath,\n\t\t\toldPath: oldPath !== path ? oldPath : void 0,\n\t\t\tchangeType,\n\t\t\thunkDiff\n\t\t});\n\t}\n\treturn out;\n}\n/**\n* Stats baratos desde el texto del diff (sin volver a llamar a git).\n* @param {string} text\n*/\nfunction statsFromDiffText(text) {\n\tlet insertions = 0;\n\tlet deletions = 0;\n\tfor (const line of String(text || \"\").split(\"\\n\")) {\n\t\tif (!line.length) continue;\n\t\tif (line.startsWith(\"+++\") || line.startsWith(\"---\") || line.startsWith(\"diff \") || line.startsWith(\"index \")) continue;\n\t\tif (line.startsWith(\"+\")) insertions += 1;\n\t\telse if (line.startsWith(\"-\")) deletions += 1;\n\t}\n\treturn {\n\t\tinsertions,\n\t\tdeletions\n\t};\n}\n/**\n* Tips / merge-base si git responde; si no, strings vacíos (el contenido del diff ya viene del cache).\n*/\nfunction tryTips(repo, branch, base) {\n\ttry {\n\t\treturn {\n\t\t\tmergeBase: git(repo, [\n\t\t\t\t\"merge-base\",\n\t\t\t\tbase,\n\t\t\t\tbranch\n\t\t\t]).trim(),\n\t\t\tbranchSha: git(repo, [\"rev-parse\", branch]).trim(),\n\t\t\tbaseSha: git(repo, [\"rev-parse\", base]).trim()\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tmergeBase: \"\",\n\t\t\tbranchSha: \"\",\n\t\t\tbaseSha: \"\"\n\t\t};\n\t}\n}\n/**\n* Arma el mismo shape que `extractBranchDiff` a partir de un texto de `git diff` ya cacheado.\n* No vuelve a correr `git diff`.\n*/\nfunction skeletonFromCachedDiff(repo, branch, base, cachedDiff) {\n\tconst config = loadReviewConfig(repo);\n\tconst tips = tryTips(repo, branch, base);\n\tconst parsed = parseGitDiffFiles(cachedDiff);\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of parsed) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tconst capped = capDiff(f.hunkDiff);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst { insertions, deletions } = statsFromDiffText(cachedDiff);\n\tlet commits = [];\n\tif (tips.mergeBase) try {\n\t\tcommits = commitLog(repo, tips.mergeBase, branch);\n\t} catch {\n\t\tcommits = [];\n\t}\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase: tips.mergeBase,\n\t\tbranchSha: tips.branchSha,\n\t\tbaseSha: tips.baseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions,\n\t\t\tdeletions\n\t\t},\n\t\tcontext: {\n\t\t\tcommits,\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* @param {{\n* repo: string,\n* branch: string,\n* base?: string,\n* cachedDiff?: string | null,\n* }} opts\n* `cachedDiff`: texto de `git diff base...branch` ya materializado; si viene, no se vuelve a calcular el diff.\n*/\nfunction extractBranchDiff({ repo, branch, base = \"develop\", cachedDiff = null } = {}) {\n\tif (!branch) throw new Error(\"Falta el branch a revisar.\");\n\tif (typeof cachedDiff === \"string\" && cachedDiff.length) return skeletonFromCachedDiff(repo, branch, base, cachedDiff);\n\tconst config = loadReviewConfig(repo);\n\tconst mergeBase = git(repo, [\n\t\t\"merge-base\",\n\t\tbase,\n\t\tbranch\n\t]).trim();\n\tconst branchSha = git(repo, [\"rev-parse\", branch]).trim();\n\tconst baseSha = git(repo, [\"rev-parse\", base]).trim();\n\tconst nameStatus = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--name-status\"\n\t]).trim().split(\"\\n\").filter(Boolean).map((line) => {\n\t\tconst [status, ...rest] = line.split(\"\t\");\n\t\tconst path = rest[rest.length - 1];\n\t\tconst oldPath = rest.length > 1 ? rest[0] : null;\n\t\tlet changeType = \"modified\";\n\t\tif (status.startsWith(\"A\")) changeType = \"added\";\n\t\telse if (status.startsWith(\"D\")) changeType = \"deleted\";\n\t\telse if (status.startsWith(\"R\")) changeType = \"renamed\";\n\t\treturn {\n\t\t\tpath,\n\t\t\toldPath,\n\t\t\tchangeType\n\t\t};\n\t});\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of nameStatus) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tlet raw = \"\";\n\t\ttry {\n\t\t\traw = git(repo, [\n\t\t\t\t\"diff\",\n\t\t\t\tmergeBase,\n\t\t\t\tbranch,\n\t\t\t\t\"--\",\n\t\t\t\tf.path\n\t\t\t]);\n\t\t\tconst idx = raw.indexOf(\"\\n@@\");\n\t\t\tif (idx !== -1) raw = raw.slice(idx + 1);\n\t\t} catch {\n\t\t\traw = \"\";\n\t\t}\n\t\tconst capped = capDiff(raw);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst shortstat = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--shortstat\"\n\t]).trim();\n\tconst insMatch = shortstat.match(/(\\d+) insertion/);\n\tconst delMatch = shortstat.match(/(\\d+) deletion/);\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase,\n\t\tbranchSha,\n\t\tbaseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions: insMatch ? Number(insMatch[1]) : 0,\n\t\t\tdeletions: delMatch ? Number(delMatch[1]) : 0\n\t\t},\n\t\tcontext: {\n\t\t\tcommits: commitLog(repo, mergeBase, branch),\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* Preferí el companion `.diff` en `.diff-review/` si existe; si no, `git diff` vía `extractBranchDiff`.\n* @param {{ repo: string, branch: string, base?: string, filename?: string }} opts\n*/\nfunction loadBranchDiff({ repo, branch, base = \"develop\", filename } = {}) {\n\tconst name = String(filename || \"\").trim();\n\tif (name) {\n\t\tconst cached = readDiffCache(repo, name);\n\t\tif (cached != null && cached.length) return extractBranchDiff({\n\t\t\trepo,\n\t\t\tbranch,\n\t\t\tbase,\n\t\t\tcachedDiff: cached\n\t\t});\n\t}\n\treturn extractBranchDiff({\n\t\trepo,\n\t\tbranch,\n\t\tbase\n\t});\n}\n//#endregion\n//#region ../lib/json-payload.mjs\nfunction tryParseJson(s) {\n\ttry {\n\t\treturn JSON.parse(s);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Extrae un objeto JSON del texto del modelo (fences, prosa alrededor, envelope). */\nfunction decodePayload(text) {\n\tconst raw = String(text || \"\").trim();\n\tif (!raw) throw new Error(\"Respuesta vacía.\");\n\tconst fence = raw.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n\tif (fence) {\n\t\tconst parsed = tryParseJson(fence[1].trim());\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tconst direct = tryParseJson(raw);\n\tif (direct && typeof direct === \"object\") return direct;\n\tconst start = raw.indexOf(\"{\");\n\tconst end = raw.lastIndexOf(\"}\");\n\tif (start >= 0 && end > start) {\n\t\tconst parsed = tryParseJson(raw.slice(start, end + 1));\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tthrow new Error(\"No se pudo interpretar la respuesta como JSON.\");\n}\n//#endregion\n//#region ../lib/validate.mjs\nvar GROUP_KINDS = [\n\t\"feat\",\n\t\"fix\",\n\t\"refactor\",\n\t\"perf\",\n\t\"test\",\n\t\"chore\",\n\t\"docs\",\n\t\"infra\"\n];\nvar BLOCK_OPS = [\n\t\"add\",\n\t\"mod\",\n\t\"del\",\n\t\"rename\"\n];\nvar WHY_SOURCES = [\n\t\"code\",\n\t\"commit\",\n\t\"pr\",\n\t\"issue\",\n\t\"inferred\"\n];\nvar FINDING_CLASSES = [\"risk\", \"quality\"];\nvar FINDING_SEVERITIES = [\n\t\"high\",\n\t\"med\",\n\t\"low\",\n\t\"nit\"\n];\nvar FINDING_KINDS = [\n\t\"bug\",\n\t\"race\",\n\t\"auth\",\n\t\"security\",\n\t\"api-break\",\n\t\"missing-test\",\n\t\"perf\",\n\t\"maintainability\",\n\t\"docs\",\n\t\"other\"\n];\nvar SKIP_REASONS = [\n\t\"generated\",\n\t\"lockfile\",\n\t\"format\",\n\t\"vendored\",\n\t\"binary\",\n\t\"trivial\",\n\t\"ignored\"\n];\n/** Lo que tiene que devolver el modelo en un turno. El resto lo agrega el pipeline. */\nvar REVIEW_SCHEMA = {\n\t$id: \"diff-review\",\n\ttype: \"object\",\n\trequired: [\n\t\t\"meta\",\n\t\t\"intent\",\n\t\t\"groups\",\n\t\t\"blocks\"\n\t],\n\tadditionalProperties: true,\n\tproperties: {\n\t\tmeta: {\n\t\t\ttype: \"object\",\n\t\t\trequired: [\"agent\", \"model\"],\n\t\t\tadditionalProperties: true,\n\t\t\tproperties: {\n\t\t\t\tagent: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tintent: {\n\t\t\ttype: \"string\",\n\t\t\tminLength: 40\n\t\t},\n\t\tgroups: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"title\",\n\t\t\t\t\t\"intent\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: GROUP_KINDS\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tintent: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tblocks: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"group\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"lines\",\n\t\t\t\t\t\"op\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tgroup: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tlines: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\top: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: BLOCK_OPS\n\t\t\t\t\t},\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\twhy: { type: \"string\" },\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: WHY_SOURCES\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfindings: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"class\",\n\t\t\t\t\t\"severity\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: { type: \"string\" },\n\t\t\t\t\tclass: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_CLASSES\n\t\t\t\t\t},\n\t\t\t\t\tseverity: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_SEVERITIES\n\t\t\t\t\t},\n\t\t\t\t\tblocking: { type: \"boolean\" },\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_KINDS\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tline: { type: [\"integer\", \"null\"] },\n\t\t\t\t\tblock: { type: \"string\" },\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfix: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tskipped: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\"file\", \"reason\"],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\treason: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: SKIP_REASONS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nfunction typeOf(value) {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\tif (typeof value === \"number\" && Number.isInteger(value)) return \"integer\";\n\treturn typeof value;\n}\nfunction typeMatches(expected, actual) {\n\tconst options = Array.isArray(expected) ? expected : [expected];\n\tif (options.includes(actual)) return true;\n\treturn options.includes(\"number\") && actual === \"integer\";\n}\n/** Minimal JSON Schema checker (type, required, properties, items, enum, minLength, minItems). */\nfunction validateAgainst(schema, data, path = \"$\") {\n\tconst errors = [];\n\tif (!schema || typeof schema !== \"object\") return errors;\n\tconst actual = typeOf(data);\n\tif (schema.type && !typeMatches(schema.type, actual)) {\n\t\terrors.push(`${path}: se esperaba ${[].concat(schema.type).join(\"|\")}, llegó ${actual}`);\n\t\treturn errors;\n\t}\n\tif (actual === \"string\" && schema.minLength && data.length < schema.minLength) errors.push(`${path}: texto demasiado corto (mínimo ${schema.minLength})`);\n\tif (schema.enum && (actual === \"string\" || actual === \"number\") && !schema.enum.includes(data)) errors.push(`${path}: valor no permitido (${data}); usá uno de: ${schema.enum.join(\", \")}`);\n\tif (actual === \"array\") {\n\t\tif (schema.minItems && data.length < schema.minItems) errors.push(`${path}: se esperaban al menos ${schema.minItems} ítems`);\n\t\tif (schema.items) data.forEach((item, i) => errors.push(...validateAgainst(schema.items, item, `${path}[${i}]`)));\n\t}\n\tif (actual === \"object\") {\n\t\tfor (const key of schema.required || []) if (data[key] === void 0) errors.push(`${path}: falta ${key}`);\n\t\tfor (const [key, child] of Object.entries(schema.properties || {})) {\n\t\t\tif (data[key] === void 0) continue;\n\t\t\terrors.push(...validateAgainst(child, data[key], `${path}.${key}`));\n\t\t}\n\t}\n\treturn errors;\n}\n/**\n* Integridad referencial y cobertura. El schema solo mira formas; esto mira que\n* los ids cierren y que no haya quedado un archivo sin explicar, que es el\n* error que de verdad arruina la review.\n*/\nfunction reviewIssues(payload, knownPaths = []) {\n\tconst errors = [];\n\tconst meta = payload?.meta && typeof payload.meta === \"object\" ? payload.meta : {};\n\tconst agentName = typeof meta.agent === \"string\" ? meta.agent.trim() : \"\";\n\tconst modelId = typeof meta.model === \"string\" ? meta.model.trim() : \"\";\n\tif (!agentName || agentName.startsWith(\"<\")) errors.push(\"meta.agent es obligatorio: nombre del producto (Claude Code, Cursor, Codex, …), sin placeholder\");\n\tif (!modelId || modelId.startsWith(\"<\")) errors.push(\"meta.model es obligatorio: id exacto del modelo, sin placeholder\");\n\tconst groups = Array.isArray(payload?.groups) ? payload.groups : [];\n\tconst blocks = Array.isArray(payload?.blocks) ? payload.blocks : [];\n\tconst findings = Array.isArray(payload?.findings) ? payload.findings : [];\n\tconst skipped = Array.isArray(payload?.skipped) ? payload.skipped : [];\n\tconst groupIds = new Set(groups.map((g) => g.id));\n\tconst blockIds = new Set(blocks.map((b) => b.id));\n\tconst known = new Set(knownPaths);\n\tconst dupGroups = groups.length - groupIds.size;\n\tif (dupGroups > 0) errors.push(`hay ${dupGroups} id de tema repetido`);\n\tconst dupBlocks = blocks.length - blockIds.size;\n\tif (dupBlocks > 0) errors.push(`hay ${dupBlocks} id de bloque repetido`);\n\tfor (const block of blocks) {\n\t\tif (!groupIds.has(block.group)) errors.push(`el bloque ${block.id} apunta al tema inexistente ${block.group}`);\n\t\tif (known.size && !known.has(block.file)) errors.push(`el bloque ${block.id} apunta a un archivo que no está en el diff: ${block.file}`);\n\t}\n\tconst usedGroups = new Set(blocks.map((b) => b.group));\n\tfor (const group of groups) if (!usedGroups.has(group.id)) errors.push(`el tema ${group.id} no tiene ningún bloque`);\n\tfor (const finding of findings) {\n\t\tif (finding.block && !blockIds.has(finding.block)) errors.push(`el hallazgo ${finding.id || finding.what} apunta al bloque inexistente ${finding.block}`);\n\t\tif (known.size && !known.has(finding.file)) errors.push(`el hallazgo ${finding.id || finding.what} apunta a un archivo fuera del diff: ${finding.file}`);\n\t}\n\tif (known.size) {\n\t\tconst covered = /* @__PURE__ */ new Set([...blocks.map((b) => b.file), ...skipped.map((s) => s.file)]);\n\t\tconst missing = [...known].filter((path) => !covered.has(path));\n\t\tif (missing.length) errors.push(`quedaron ${missing.length} archivo(s) sin bloque ni skipped: ${missing.slice(0, 8).join(\", \")}`);\n\t}\n\treturn errors;\n}\n//#endregion\nexport { loadReviewConfig as A, branchTips as C, showFileLines as D, listBranches as E, fingerprint as F, isOutputFilename as M, makeOutputFilename as N, tryResolveGitRoot as O, outputRelPath as P, assertGitRepo as S, git as T, readDiffCache as _, GROUP_KINDS as a, writeDiffText as b, WHY_SOURCES as c, decodePayload as d, extractBranchDiff as f, locateReviewFile as g, ensureReviewDir as h, FINDING_SEVERITIES as i, OUTPUT_DIR as j, globMatch as k, reviewIssues as l, companionPaths as m, FINDING_CLASSES as n, REVIEW_SCHEMA as o, loadBranchDiff as p, FINDING_KINDS as r, SKIP_REASONS as s, BLOCK_OPS as t, validateAgainst as u, reviewDir as v, getRemoteUrl as w, writeSessionRef as x, writeDiffCache as y };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-CAQ31C7k.js","sources":["../../../.svelte-kit/output/server/chunks/validate.js"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from \"node:fs\";\nimport { execFileSync } from \"node:child_process\";\nimport { basename, join, resolve } from \"node:path\";\n//#region ../lib/fingerprint.mjs\n/**\n* Tips cortos de SHA. Sin APIs de Node: la UI lo importa para armar el nombre del JSON.\n*/\nfunction shortSha(sha, n = 10) {\n\tconst hex = String(sha || \"\").toLowerCase().replace(/[^a-f0-9]/g, \"\");\n\treturn hex.length >= 7 ? hex.slice(0, n) : \"\";\n}\nfunction fingerprint(branchSha, baseSha) {\n\tconst a = shortSha(branchSha);\n\tconst b = shortSha(baseSha);\n\tif (!a || !b) return null;\n\treturn `${a}-${b}`;\n}\n//#endregion\n//#region ../lib/output-name.mjs\n/**\n* Nombre del JSON que escribe el agente.\n* Preferido: tips cortos branch/base. Legacy (con stamp o sin tips) sigue válido al importar.\n*/\n/** Prefijo del formato actual. */\nvar OUTPUT_PREFIX = \"diff-rev\";\n/** Prefijo legacy (sin tips / con stamp). */\nvar OUTPUT_PREFIX_LEGACY = \"diff-review-output\";\n/** Carpeta (en la raíz del repo revisado) donde va el JSON, el diff y la sesión del agente. */\nvar OUTPUT_DIR = \".diff-review\";\n/** Path relativo a la raíz del repo, con `/` (el que se le da al agente): `.diff-review/<nombre>`. */\nfunction outputRelPath(filename) {\n\treturn `${OUTPUT_DIR}/${String(filename || \"\").replace(/^.*[\\\\/]/, \"\")}`;\n}\n/** Nombre legacy fijo. */\nvar OUTPUT_FILENAME_LEGACY = `${OUTPUT_PREFIX_LEGACY}.json`;\n/**\n* Válidos:\n* - diff-rev_{branchTip}_{baseTip}.json\n* - diff-report_{branchTip}-{baseTip}_YYYYMMDD-HHmmss.json (legacy)\n* - diff-review-output.json / diff-review-output-YYYYMMDD-HHmmss.json (legacy)\n*/\nvar OUTPUT_FILENAME_RE = /^(?:diff-rev_[0-9a-f]{7,12}_[0-9a-f]{7,12}|diff-report_[0-9a-f]{7,12}-[0-9a-f]{7,12}_\\d{8}-\\d{6}|diff-review-output(?:-\\d{8}-\\d{6})?)\\.json$/i;\n/**\n* @param {{ branchSha?: string, baseSha?: string }} [input]\n* @returns {string}\n* con tips: diff-rev_aaaaaaaaaa_bbbbbbbbbb.json\n* sin tips: diff-review-output.json\n*/\nfunction makeOutputFilename(input = {}) {\n\tconst opts = input instanceof Date ? {} : input || {};\n\tconst fp = fingerprint(opts.branchSha, opts.baseSha);\n\tif (fp) {\n\t\tconst [branchTip, baseTip] = fp.split(\"-\");\n\t\tif (branchTip && baseTip) return `${OUTPUT_PREFIX}_${branchTip}_${baseTip}.json`;\n\t}\n\treturn OUTPUT_FILENAME_LEGACY;\n}\nfunction isOutputFilename(name) {\n\treturn OUTPUT_FILENAME_RE.test(String(name || \"\").trim());\n}\n//#endregion\n//#region ../lib/config.mjs\nvar DEFAULT_IGNORE = [\n\t\"**/package-lock.json\",\n\t\"**/pnpm-lock.yaml\",\n\t\"**/yarn.lock\",\n\t\"**/bun.lock\",\n\t\"**/bun.lockb\",\n\t\"**/*.g.cs\",\n\t\"**/*Snapshot.cs\",\n\t\"**/*.Designer.cs\",\n\t\"**/node_modules/**\",\n\t\"**/.svelte-kit/**\",\n\t\"**/dist/**\",\n\t\"**/build/**\",\n\t\"**/*.min.js\",\n\t\"**/*.min.css\",\n\t\"**/CODE_REVIEW_CORRECTNESS_FINDINGS.md\"\n];\nvar STORE_DIFF_MAX = 4e5;\nvar GUIDELINE_FILES = [\n\t\"REVIEW.md\",\n\t\"CLAUDE.md\",\n\t\"AGENTS.md\"\n];\nfunction unquote(s) {\n\tconst t = String(s || \"\").trim();\n\tif (t.startsWith(\"\\\"\") && t.endsWith(\"\\\"\") || t.startsWith(\"'\") && t.endsWith(\"'\")) return t.slice(1, -1);\n\treturn t;\n}\n/** Minimal YAML: `key: value` and `key:\\n - item`. */\nfunction parseSimpleYaml(text) {\n\tconst result = {};\n\tlet key = null;\n\tfor (const raw of String(text || \"\").split(/\\r?\\n/)) {\n\t\tif (!raw.trim() || raw.trim().startsWith(\"#\")) continue;\n\t\tconst list = raw.match(/^\\s+-\\s+(.*)$/);\n\t\tif (list && key) {\n\t\t\tif (!Array.isArray(result[key])) result[key] = [];\n\t\t\tresult[key].push(unquote(list[1]));\n\t\t\tcontinue;\n\t\t}\n\t\tconst kv = raw.match(/^([A-Za-z][\\w]*)\\s*:\\s*(.*)$/);\n\t\tif (!kv) continue;\n\t\tkey = kv[1];\n\t\tconst v = kv[2].trim();\n\t\tresult[key] = v === \"\" ? [] : unquote(v);\n\t}\n\treturn result;\n}\nfunction globToRegExp(glob) {\n\tlet g = String(glob || \"\").replace(/\\\\/g, \"/\");\n\tif (!g.includes(\"/\")) g = `**/${g}`;\n\tlet s = \"\";\n\tfor (let i = 0; i < g.length; i++) {\n\t\tconst c = g[i];\n\t\tif (c === \"*\" && g[i + 1] === \"*\") if (g[i + 2] === \"/\") {\n\t\t\ts += \"(?:.*/)?\";\n\t\t\ti += 2;\n\t\t} else {\n\t\t\ts += \".*\";\n\t\t\ti += 1;\n\t\t}\n\t\telse if (c === \"*\") s += \"[^/]*\";\n\t\telse if (c === \"?\") s += \"[^/]\";\n\t\telse if (\"+()[]{}|.^$\".includes(c)) s += `\\\\${c}`;\n\t\telse s += c;\n\t}\n\treturn new RegExp(`^${s}$`, \"i\");\n}\nfunction globMatch(filePath, pattern) {\n\tconst norm = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn globToRegExp(pattern).test(norm);\n}\nfunction isIgnored(filePath, patterns) {\n\treturn (patterns || []).some((p) => globMatch(filePath, p));\n}\nfunction isTestPath(filePath) {\n\tconst p = String(filePath || \"\").replace(/\\\\/g, \"/\");\n\treturn /(^|\\/)(__tests__|tests?|spec)s?(\\/|$)/i.test(p) || /\\.(test|spec)\\.[^.]+$/i.test(p);\n}\nfunction readIfExists(path) {\n\ttry {\n\t\treturn existsSync(path) ? readFileSync(path, \"utf8\") : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction loadReviewConfig(repo) {\n\tconst jsonText = readIfExists(join(repo, \".diff-review.json\"));\n\tconst yamlText = readIfExists(join(repo, \".diff-review.yml\")) || readIfExists(join(repo, \".diff-review.yaml\"));\n\tlet extra = {};\n\tif (jsonText) try {\n\t\textra = JSON.parse(jsonText);\n\t} catch {\n\t\textra = {};\n\t}\n\telse if (yamlText) extra = parseSimpleYaml(yamlText);\n\tconst extraIgnore = Array.isArray(extra.ignore) ? extra.ignore.map(String) : [];\n\tconst rulesFile = extra.rulesFile ? String(extra.rulesFile) : \"REVIEW.md\";\n\tconst rules = readIfExists(join(repo, rulesFile)) || \"\";\n\tconst model = extra.model && extra.model !== \"default\" ? String(extra.model) : null;\n\treturn {\n\t\tignore: [...DEFAULT_IGNORE, ...extraIgnore],\n\t\tmodel,\n\t\trulesFile,\n\t\trules: rules.trim()\n\t};\n}\n/** CLAUDE.md / REVIEW.md / AGENTS.md from repo root and immediate parent dirs of touched files. */\nfunction collectGuidelines(repo, filePaths, { rulesFile = \"REVIEW.md\", maxChars = 8e3, maxTotalChars = 12e3, maxDepth = 1, skipNames = [] } = {}) {\n\tconst skip = new Set(skipNames);\n\tconst names = [.../* @__PURE__ */ new Set([rulesFile, ...GUIDELINE_FILES])].filter((name) => !skip.has(name));\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst out = [];\n\tconst addRel = (rel) => {\n\t\tconst norm = String(rel || \"\").replace(/\\\\/g, \"/\").replace(/^\\/+/, \"\");\n\t\tif (!norm || seen.has(norm)) return;\n\t\tconst text = readIfExists(join(repo, ...norm.split(\"/\")));\n\t\tif (!text || !text.trim()) return;\n\t\tseen.add(norm);\n\t\tout.push({\n\t\t\tpath: norm,\n\t\t\ttext: text.trim()\n\t\t});\n\t};\n\tfor (const name of names) addRel(name);\n\tconst depth = Math.max(1, Number(maxDepth) || 1);\n\tfor (const filePath of filePaths || []) {\n\t\tconst parts = String(filePath || \"\").replace(/\\\\/g, \"/\").split(\"/\").filter(Boolean);\n\t\tconst minLen = Math.max(1, parts.length - depth);\n\t\tfor (let len = parts.length - 1; len >= minLen; len--) {\n\t\t\tconst dir = parts.slice(0, len).join(\"/\");\n\t\t\tfor (const name of names) addRel(`${dir}/${name}`);\n\t\t}\n\t}\n\tlet total = 0;\n\tconst capped = [];\n\tfor (const item of out) {\n\t\tif (total >= maxTotalChars) break;\n\t\tconst room = maxTotalChars - total;\n\t\tconst slice = item.text.slice(0, Math.min(maxChars, room));\n\t\tif (!slice) continue;\n\t\tcapped.push({\n\t\t\tpath: item.path,\n\t\t\ttext: slice\n\t\t});\n\t\ttotal += slice.length;\n\t}\n\treturn capped;\n}\nfunction capDiff(diff, max = STORE_DIFF_MAX) {\n\tconst text = String(diff || \"\");\n\tif (text.length <= max) return {\n\t\tdiff: text,\n\t\tdiffChars: text.length,\n\t\ttruncated: false\n\t};\n\treturn {\n\t\tdiff: `${text.slice(0, max)}\\n\\n… [diff recortado: se guardan ${max} de ${text.length} caracteres]`,\n\t\tdiffChars: text.length,\n\t\ttruncated: true\n\t};\n}\n//#endregion\n//#region ../lib/git.mjs\nfunction assertGitRepo(repo) {\n\tconst raw = String(repo || \"\").trim();\n\tif (!raw) throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!/[\\\\/]/.test(raw) && !/^[A-Za-z]:/.test(raw)) throw new Error(`\"${raw}\" no es una ruta. Pegá la ruta absoluta del repo (ej. C:\\\\tienda-argenta\\\\tienda-argenta-2).`);\n\tconst resolved = resolve(raw);\n\tif (!resolved || resolved === \".\") throw new Error(\"Indicá la ruta absoluta de un repositorio git.\");\n\tif (!existsSync(resolved)) throw new Error(`No existe la carpeta: ${resolved}`);\n\tif (!existsSync(join(resolved, \".git\"))) throw new Error(`No es un repositorio git (falta .git): ${resolved}`);\n\treturn resolved;\n}\n/**\n* Si `cwd` está dentro de un repo git, devuelve la raíz absoluta; si no, null.\n* Acepta subcarpetas (usa `git rev-parse --show-toplevel`).\n*/\nfunction tryResolveGitRoot(cwd) {\n\tconst raw = String(cwd || \"\").trim();\n\tif (!raw) return null;\n\tconst dir = resolve(raw);\n\tif (!existsSync(dir)) return null;\n\ttry {\n\t\tconst root = execFileSync(\"git\", [\"rev-parse\", \"--show-toplevel\"], {\n\t\t\tcwd: dir,\n\t\t\tencoding: \"utf8\",\n\t\t\twindowsHide: true,\n\t\t\tstdio: [\n\t\t\t\t\"ignore\",\n\t\t\t\t\"pipe\",\n\t\t\t\t\"ignore\"\n\t\t\t]\n\t\t}).trim();\n\t\treturn root ? resolve(root) : null;\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction git(repo, args, { maxBuffer = 64 * 1024 * 1024 } = {}) {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd: repo,\n\t\tencoding: \"utf8\",\n\t\tmaxBuffer,\n\t\twindowsHide: true\n\t});\n}\nfunction resolveRev(repo, ref) {\n\treturn git(repo, [\"rev-parse\", ref]).trim();\n}\nfunction branchTips(repo, branch, base) {\n\treturn {\n\t\tbranchSha: resolveRev(repo, branch),\n\t\tbaseSha: resolveRev(repo, base)\n\t};\n}\nfunction commitLog(repo, mergeBase, branch, limit = 25) {\n\ttry {\n\t\treturn git(repo, [\n\t\t\t\"log\",\n\t\t\t\"--oneline\",\n\t\t\t\"--no-merges\",\n\t\t\t\"-n\",\n\t\t\tString(limit),\n\t\t\t`${mergeBase}..${branch}`\n\t\t]).trim().split(\"\\n\").filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\nvar FILE_LINE_CACHE = /* @__PURE__ */ new Map();\nvar FILE_LINE_CACHE_MAX = 48;\nfunction rememberFileLines(key, lines) {\n\tif (FILE_LINE_CACHE.has(key)) FILE_LINE_CACHE.delete(key);\n\tFILE_LINE_CACHE.set(key, lines);\n\twhile (FILE_LINE_CACHE.size > FILE_LINE_CACHE_MAX) {\n\t\tconst oldest = FILE_LINE_CACHE.keys().next().value;\n\t\tFILE_LINE_CACHE.delete(oldest);\n\t}\n}\nfunction showFileLines(repo, rev, path) {\n\tconst resolved = assertGitRepo(repo);\n\tconst safeRev = String(rev || \"\").trim();\n\tconst safePath = String(path || \"\").replace(/\\\\/g, \"/\").trim();\n\tif (!safeRev || !/^[A-Za-z0-9._/\\-]+$/.test(safeRev)) throw new Error(\"Rev inválido.\");\n\tif (!safePath || safePath.startsWith(\"/\") || safePath.includes(\"..\") || safePath.includes(\"\\0\")) throw new Error(\"Ruta inválida.\");\n\tconst key = `${resolved}\\0${safeRev}\\0${safePath}`;\n\tif (FILE_LINE_CACHE.has(key)) return FILE_LINE_CACHE.get(key);\n\tlet text;\n\ttry {\n\t\ttext = git(resolved, [\"show\", `${safeRev}:${safePath}`]);\n\t} catch {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tif (text.includes(\"\\0\")) {\n\t\trememberFileLines(key, null);\n\t\treturn null;\n\t}\n\tconst raw = text.replace(/\\r\\n/g, \"\\n\");\n\tconst lines = raw.endsWith(\"\\n\") ? raw.slice(0, -1).split(\"\\n\") : raw.split(\"\\n\");\n\trememberFileLines(key, lines);\n\treturn lines;\n}\nfunction listBranches(repo) {\n\tconst names = git(repo, [\n\t\t\"for-each-ref\",\n\t\t\"--sort=-committerdate\",\n\t\t\"--format=%(refname:short)\",\n\t\t\"refs/heads\",\n\t\t\"refs/remotes\"\n\t]).split(\"\\n\").map((s) => s.trim()).filter(Boolean).map((name) => name.replace(/^origin\\//, \"\")).filter((name) => name !== \"HEAD\" && !name.endsWith(\"/HEAD\"));\n\tconst unique = [...new Set(names)];\n\tconst current = git(repo, [\n\t\t\"rev-parse\",\n\t\t\"--abbrev-ref\",\n\t\t\"HEAD\"\n\t]).trim();\n\tconst bases = unique.filter((n) => n === \"develop\" || n === \"main\" || n === \"master\");\n\treturn {\n\t\tbranches: unique,\n\t\tcurrent,\n\t\tdefaultBase: bases.includes(\"develop\") ? \"develop\" : bases.includes(\"main\") ? \"main\" : bases[0] || \"develop\"\n\t};\n}\n/** URL del remote (origin, o el primero disponible). Vacío si no hay. */\nfunction getRemoteUrl(repo, preferred = \"origin\") {\n\ttry {\n\t\tconst url = git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tpreferred\n\t\t]).trim();\n\t\tif (url) return url;\n\t} catch {}\n\ttry {\n\t\tconst remotes = git(repo, [\"remote\"]).split(\"\\n\").map((s) => s.trim()).filter(Boolean);\n\t\tif (!remotes.length) return \"\";\n\t\treturn git(repo, [\n\t\t\t\"remote\",\n\t\t\t\"get-url\",\n\t\t\tremotes[0]\n\t\t]).trim();\n\t} catch {\n\t\treturn \"\";\n\t}\n}\n//#endregion\n//#region ../lib/review-dir.mjs\n/**\n* Carpeta `.diff-review/` en la raíz del repo revisado: el JSON del reporte, el diff con el que se hizo y la sesión\n* del agente, todo con el mismo nombre base (`diff-rev_<branchTip>_<baseTip>`). Se ignora sola con su propio\n* `.gitignore`, así no deja cambios en archivos trackeados del repo.\n*\n* Los JSON viejos en la raíz del repo se siguen encontrando (`locateReviewFile`).\n*/\n/** @typedef {{ agentId: string, sessionId: string, model?: string, updatedAt?: string }} SessionRef */\nfunction reviewDir(repoRoot) {\n\treturn join(repoRoot, OUTPUT_DIR);\n}\n/** Crea `.diff-review/` (con su `.gitignore`) si no existe. */\nfunction ensureReviewDir(repoRoot) {\n\tconst dir = reviewDir(repoRoot);\n\tmkdirSync(dir, { recursive: true });\n\tconst ignore = join(dir, \".gitignore\");\n\tif (!existsSync(ignore)) writeFileSync(ignore, \"# Generado por diff-review: nada de esta carpeta va al repo.\\n*\\n\");\n\treturn dir;\n}\n/** `diff-rev_a_b.json` → `{ json, diff, session }` dentro de `.diff-review/`. */\nfunction companionPaths(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tconst stem = name.replace(/\\.json$/i, \"\");\n\tconst dir = reviewDir(repoRoot);\n\treturn {\n\t\tjson: join(dir, name),\n\t\tdiff: join(dir, `${stem}.diff`),\n\t\tsession: join(dir, `${stem}.session.json`)\n\t};\n}\n/** Dónde está el JSON de la review: `.diff-review/` primero y, si no, la raíz del repo (formato viejo). */\nfunction locateReviewFile(repoRoot, filename) {\n\tconst name = basename(String(filename || \"\"));\n\tif (!name) return null;\n\tfor (const candidate of [companionPaths(repoRoot, name).json, join(repoRoot, name)]) try {\n\t\tif (statSync(candidate).isFile()) return candidate;\n\t} catch {}\n\treturn null;\n}\n/**\n* Guarda `git diff base...branch` junto al JSON (una vez por par de commits: el nombre ya trae los tips).\n* @returns {string | null} el path, o null si git falló\n*/\nfunction writeDiffCache(repoRoot, filename, { branch, base }) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\tif (existsSync(diff)) return diff;\n\ttry {\n\t\tconst text = git(repoRoot, [\"diff\", `${base}...${branch}`]);\n\t\tensureReviewDir(repoRoot);\n\t\twriteFileSync(diff, text);\n\t\treturn diff;\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Guarda un diff ya armado (p. ej. el que muestra la web), pisando el anterior. */\nfunction writeDiffText(repoRoot, filename, text) {\n\tensureReviewDir(repoRoot);\n\tconst { diff } = companionPaths(repoRoot, filename);\n\twriteFileSync(diff, String(text ?? \"\"));\n\treturn diff;\n}\n/** @returns {string | null} texto del companion `.diff`, o null si no existe / no se pudo leer */\nfunction readDiffCache(repoRoot, filename) {\n\tconst { diff } = companionPaths(repoRoot, filename);\n\ttry {\n\t\tif (!existsSync(diff)) return null;\n\t\treturn readFileSync(diff, \"utf8\");\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** @param {SessionRef} ref */\nfunction writeSessionRef(repoRoot, filename, ref) {\n\tensureReviewDir(repoRoot);\n\tconst full = {\n\t\t...ref,\n\t\tupdatedAt: (/* @__PURE__ */ new Date()).toISOString()\n\t};\n\twriteFileSync(companionPaths(repoRoot, filename).session, `${JSON.stringify(full, null, 2)}\\n`);\n\treturn full;\n}\n//#endregion\n//#region ../lib/extract.mjs\n/**\n* Parte un `git diff` multi-archivo (texto de `writeDiffCache`) en entradas por path.\n* @param {string} text\n* @returns {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>}\n*/\nfunction parseGitDiffFiles(text) {\n\tconst raw = String(text || \"\").replace(/\\r\\n/g, \"\\n\");\n\tif (!raw.trim()) return [];\n\tconst parts = raw.split(/^diff --git /m);\n\t/** @type {Array<{ path: string, oldPath?: string, changeType: string, hunkDiff: string }>} */\n\tconst out = [];\n\tfor (const part of parts) {\n\t\tconst chunk = part.trimStart();\n\t\tif (!chunk) continue;\n\t\tconst firstNl = chunk.indexOf(\"\\n\");\n\t\tconst paths = (firstNl === -1 ? chunk : chunk.slice(0, firstNl)).trim().match(/^a\\/(.+) b\\/(.+)$/);\n\t\tif (!paths) continue;\n\t\tlet oldPath = paths[1];\n\t\tlet path = paths[2];\n\t\tconst body = firstNl === -1 ? \"\" : chunk.slice(firstNl + 1);\n\t\tlet changeType = \"modified\";\n\t\tif (/^new file mode /m.test(body) || /^--- \\/dev\\/null/m.test(body)) changeType = \"added\";\n\t\telse if (/^deleted file mode /m.test(body) || /^\\+\\+\\+ \\/dev\\/null/m.test(body)) changeType = \"deleted\";\n\t\telse if (/^rename from /m.test(body) || /^rename to /m.test(body)) {\n\t\t\tchangeType = \"renamed\";\n\t\t\tconst from = body.match(/^rename from (.+)$/m);\n\t\t\tconst to = body.match(/^rename to (.+)$/m);\n\t\t\tif (from) oldPath = from[1].trim();\n\t\t\tif (to) path = to[1].trim();\n\t\t}\n\t\tlet hunkDiff = \"\";\n\t\tconst idx = `\\n${body}`.indexOf(\"\\n@@\");\n\t\tif (idx !== -1) hunkDiff = `\\n${body}`.slice(idx + 1);\n\t\telse if (/^Binary files /m.test(body)) hunkDiff = \"\";\n\t\tout.push({\n\t\t\tpath,\n\t\t\toldPath: oldPath !== path ? oldPath : void 0,\n\t\t\tchangeType,\n\t\t\thunkDiff\n\t\t});\n\t}\n\treturn out;\n}\n/**\n* Stats baratos desde el texto del diff (sin volver a llamar a git).\n* @param {string} text\n*/\nfunction statsFromDiffText(text) {\n\tlet insertions = 0;\n\tlet deletions = 0;\n\tfor (const line of String(text || \"\").split(\"\\n\")) {\n\t\tif (!line.length) continue;\n\t\tif (line.startsWith(\"+++\") || line.startsWith(\"---\") || line.startsWith(\"diff \") || line.startsWith(\"index \")) continue;\n\t\tif (line.startsWith(\"+\")) insertions += 1;\n\t\telse if (line.startsWith(\"-\")) deletions += 1;\n\t}\n\treturn {\n\t\tinsertions,\n\t\tdeletions\n\t};\n}\n/**\n* Tips / merge-base si git responde; si no, strings vacíos (el contenido del diff ya viene del cache).\n*/\nfunction tryTips(repo, branch, base) {\n\ttry {\n\t\treturn {\n\t\t\tmergeBase: git(repo, [\n\t\t\t\t\"merge-base\",\n\t\t\t\tbase,\n\t\t\t\tbranch\n\t\t\t]).trim(),\n\t\t\tbranchSha: git(repo, [\"rev-parse\", branch]).trim(),\n\t\t\tbaseSha: git(repo, [\"rev-parse\", base]).trim()\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tmergeBase: \"\",\n\t\t\tbranchSha: \"\",\n\t\t\tbaseSha: \"\"\n\t\t};\n\t}\n}\n/**\n* Arma el mismo shape que `extractBranchDiff` a partir de un texto de `git diff` ya cacheado.\n* No vuelve a correr `git diff`.\n*/\nfunction skeletonFromCachedDiff(repo, branch, base, cachedDiff) {\n\tconst config = loadReviewConfig(repo);\n\tconst tips = tryTips(repo, branch, base);\n\tconst parsed = parseGitDiffFiles(cachedDiff);\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of parsed) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tconst capped = capDiff(f.hunkDiff);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst { insertions, deletions } = statsFromDiffText(cachedDiff);\n\tlet commits = [];\n\tif (tips.mergeBase) try {\n\t\tcommits = commitLog(repo, tips.mergeBase, branch);\n\t} catch {\n\t\tcommits = [];\n\t}\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase: tips.mergeBase,\n\t\tbranchSha: tips.branchSha,\n\t\tbaseSha: tips.baseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions,\n\t\t\tdeletions\n\t\t},\n\t\tcontext: {\n\t\t\tcommits,\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* @param {{\n* repo: string,\n* branch: string,\n* base?: string,\n* cachedDiff?: string | null,\n* }} opts\n* `cachedDiff`: texto de `git diff base...branch` ya materializado; si viene, no se vuelve a calcular el diff.\n*/\nfunction extractBranchDiff({ repo, branch, base = \"develop\", cachedDiff = null } = {}) {\n\tif (!branch) throw new Error(\"Falta el branch a revisar.\");\n\tif (typeof cachedDiff === \"string\" && cachedDiff.length) return skeletonFromCachedDiff(repo, branch, base, cachedDiff);\n\tconst config = loadReviewConfig(repo);\n\tconst mergeBase = git(repo, [\n\t\t\"merge-base\",\n\t\tbase,\n\t\tbranch\n\t]).trim();\n\tconst branchSha = git(repo, [\"rev-parse\", branch]).trim();\n\tconst baseSha = git(repo, [\"rev-parse\", base]).trim();\n\tconst nameStatus = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--name-status\"\n\t]).trim().split(\"\\n\").filter(Boolean).map((line) => {\n\t\tconst [status, ...rest] = line.split(\"\t\");\n\t\tconst path = rest[rest.length - 1];\n\t\tconst oldPath = rest.length > 1 ? rest[0] : null;\n\t\tlet changeType = \"modified\";\n\t\tif (status.startsWith(\"A\")) changeType = \"added\";\n\t\telse if (status.startsWith(\"D\")) changeType = \"deleted\";\n\t\telse if (status.startsWith(\"R\")) changeType = \"renamed\";\n\t\treturn {\n\t\t\tpath,\n\t\t\toldPath,\n\t\t\tchangeType\n\t\t};\n\t});\n\tconst ignored = [];\n\tconst included = [];\n\tfor (const f of nameStatus) if (isIgnored(f.path, config.ignore)) ignored.push(f.path);\n\telse included.push(f);\n\tconst files = included.map((f) => {\n\t\tlet raw = \"\";\n\t\ttry {\n\t\t\traw = git(repo, [\n\t\t\t\t\"diff\",\n\t\t\t\tmergeBase,\n\t\t\t\tbranch,\n\t\t\t\t\"--\",\n\t\t\t\tf.path\n\t\t\t]);\n\t\t\tconst idx = raw.indexOf(\"\\n@@\");\n\t\t\tif (idx !== -1) raw = raw.slice(idx + 1);\n\t\t} catch {\n\t\t\traw = \"\";\n\t\t}\n\t\tconst capped = capDiff(raw);\n\t\treturn {\n\t\t\tpath: f.path,\n\t\t\toldPath: f.oldPath || void 0,\n\t\t\tchangeType: f.changeType,\n\t\t\tdiff: capped.diff,\n\t\t\tdiffChars: capped.diffChars,\n\t\t\ttruncated: capped.truncated,\n\t\t\tmodelChars: capped.diff.length,\n\t\t\tgroup: \"\"\n\t\t};\n\t});\n\tconst shortstat = git(repo, [\n\t\t\"diff\",\n\t\tmergeBase,\n\t\tbranch,\n\t\t\"--shortstat\"\n\t]).trim();\n\tconst insMatch = shortstat.match(/(\\d+) insertion/);\n\tconst delMatch = shortstat.match(/(\\d+) deletion/);\n\treturn {\n\t\tversion: 2,\n\t\trepo,\n\t\tbranch,\n\t\tbaseBranch: base,\n\t\tmergeBase,\n\t\tbranchSha,\n\t\tbaseSha,\n\t\tgeneratedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tintent: \"\",\n\t\tstats: {\n\t\t\tfilesChanged: files.length,\n\t\t\tfilesIgnored: ignored.length,\n\t\t\tfilesTruncated: files.filter((f) => f.truncated).length,\n\t\t\tinsertions: insMatch ? Number(insMatch[1]) : 0,\n\t\t\tdeletions: delMatch ? Number(delMatch[1]) : 0\n\t\t},\n\t\tcontext: {\n\t\t\tcommits: commitLog(repo, mergeBase, branch),\n\t\t\trules: config.rules,\n\t\t\trulesFile: config.rulesFile,\n\t\t\tignored: ignored.slice(0, 40),\n\t\t\ttestsTouched: files.filter((f) => isTestPath(f.path)).map((f) => f.path),\n\t\t\ttestsMissing: files.filter((f) => !isTestPath(f.path)).length,\n\t\t\tguidelines: collectGuidelines(repo, files.map((f) => f.path), {\n\t\t\t\trulesFile: config.rulesFile,\n\t\t\t\tskipNames: config.rules.trim() ? [config.rulesFile] : [],\n\t\t\t\tmaxDepth: 1,\n\t\t\t\tmaxChars: 8e3,\n\t\t\t\tmaxTotalChars: 12e3\n\t\t\t})\n\t\t},\n\t\tfiles,\n\t\tgroups: [],\n\t\tblocks: [],\n\t\tfindings: [],\n\t\tskipped: []\n\t};\n}\n/**\n* Preferí el companion `.diff` en `.diff-review/` si existe; si no, `git diff` vía `extractBranchDiff`.\n* @param {{ repo: string, branch: string, base?: string, filename?: string }} opts\n*/\nfunction loadBranchDiff({ repo, branch, base = \"develop\", filename } = {}) {\n\tconst name = String(filename || \"\").trim();\n\tif (name) {\n\t\tconst cached = readDiffCache(repo, name);\n\t\tif (cached != null && cached.length) return extractBranchDiff({\n\t\t\trepo,\n\t\t\tbranch,\n\t\t\tbase,\n\t\t\tcachedDiff: cached\n\t\t});\n\t}\n\treturn extractBranchDiff({\n\t\trepo,\n\t\tbranch,\n\t\tbase\n\t});\n}\n//#endregion\n//#region ../lib/json-payload.mjs\nfunction tryParseJson(s) {\n\ttry {\n\t\treturn JSON.parse(s);\n\t} catch {\n\t\treturn null;\n\t}\n}\n/** Extrae un objeto JSON del texto del modelo (fences, prosa alrededor, envelope). */\nfunction decodePayload(text) {\n\tconst raw = String(text || \"\").trim();\n\tif (!raw) throw new Error(\"Respuesta vacía.\");\n\tconst fence = raw.match(/```(?:json)?\\s*([\\s\\S]*?)```/i);\n\tif (fence) {\n\t\tconst parsed = tryParseJson(fence[1].trim());\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tconst direct = tryParseJson(raw);\n\tif (direct && typeof direct === \"object\") return direct;\n\tconst start = raw.indexOf(\"{\");\n\tconst end = raw.lastIndexOf(\"}\");\n\tif (start >= 0 && end > start) {\n\t\tconst parsed = tryParseJson(raw.slice(start, end + 1));\n\t\tif (parsed && typeof parsed === \"object\") return parsed;\n\t}\n\tthrow new Error(\"No se pudo interpretar la respuesta como JSON.\");\n}\n//#endregion\n//#region ../lib/validate.mjs\nvar GROUP_KINDS = [\n\t\"feat\",\n\t\"fix\",\n\t\"refactor\",\n\t\"perf\",\n\t\"test\",\n\t\"chore\",\n\t\"docs\",\n\t\"infra\"\n];\nvar BLOCK_OPS = [\n\t\"add\",\n\t\"mod\",\n\t\"del\",\n\t\"rename\"\n];\nvar WHY_SOURCES = [\n\t\"code\",\n\t\"commit\",\n\t\"pr\",\n\t\"issue\",\n\t\"inferred\"\n];\nvar FINDING_CLASSES = [\"risk\", \"quality\"];\nvar FINDING_SEVERITIES = [\n\t\"high\",\n\t\"med\",\n\t\"low\",\n\t\"nit\"\n];\nvar FINDING_KINDS = [\n\t\"bug\",\n\t\"race\",\n\t\"auth\",\n\t\"security\",\n\t\"api-break\",\n\t\"missing-test\",\n\t\"perf\",\n\t\"maintainability\",\n\t\"docs\",\n\t\"other\"\n];\nvar SKIP_REASONS = [\n\t\"generated\",\n\t\"lockfile\",\n\t\"format\",\n\t\"vendored\",\n\t\"binary\",\n\t\"trivial\",\n\t\"ignored\"\n];\n/** Lo que tiene que devolver el modelo en un turno. El resto lo agrega el pipeline. */\nvar REVIEW_SCHEMA = {\n\t$id: \"diff-review\",\n\ttype: \"object\",\n\trequired: [\n\t\t\"meta\",\n\t\t\"intent\",\n\t\t\"groups\",\n\t\t\"blocks\"\n\t],\n\tadditionalProperties: true,\n\tproperties: {\n\t\tmeta: {\n\t\t\ttype: \"object\",\n\t\t\trequired: [\"agent\", \"model\"],\n\t\t\tadditionalProperties: true,\n\t\t\tproperties: {\n\t\t\t\tagent: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tminLength: 1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tintent: {\n\t\t\ttype: \"string\",\n\t\t\tminLength: 40\n\t\t},\n\t\tgroups: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"title\",\n\t\t\t\t\t\"intent\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: GROUP_KINDS\n\t\t\t\t\t},\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tintent: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tblocks: {\n\t\t\ttype: \"array\",\n\t\t\tminItems: 1,\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"id\",\n\t\t\t\t\t\"group\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"lines\",\n\t\t\t\t\t\"op\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tgroup: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tlines: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\top: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: BLOCK_OPS\n\t\t\t\t\t},\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\twhy: { type: \"string\" },\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: WHY_SOURCES\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfindings: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\n\t\t\t\t\t\"class\",\n\t\t\t\t\t\"severity\",\n\t\t\t\t\t\"kind\",\n\t\t\t\t\t\"file\",\n\t\t\t\t\t\"what\"\n\t\t\t\t],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tid: { type: \"string\" },\n\t\t\t\t\tclass: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_CLASSES\n\t\t\t\t\t},\n\t\t\t\t\tseverity: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_SEVERITIES\n\t\t\t\t\t},\n\t\t\t\t\tblocking: { type: \"boolean\" },\n\t\t\t\t\tkind: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: FINDING_KINDS\n\t\t\t\t\t},\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tline: { type: [\"integer\", \"null\"] },\n\t\t\t\t\tblock: { type: \"string\" },\n\t\t\t\t\twhat: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\tfix: { type: \"string\" }\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tskipped: {\n\t\t\ttype: \"array\",\n\t\t\titems: {\n\t\t\t\ttype: \"object\",\n\t\t\t\trequired: [\"file\", \"reason\"],\n\t\t\t\tadditionalProperties: true,\n\t\t\t\tproperties: {\n\t\t\t\t\tfile: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tminLength: 1\n\t\t\t\t\t},\n\t\t\t\t\treason: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tenum: SKIP_REASONS\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nfunction typeOf(value) {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\tif (typeof value === \"number\" && Number.isInteger(value)) return \"integer\";\n\treturn typeof value;\n}\nfunction typeMatches(expected, actual) {\n\tconst options = Array.isArray(expected) ? expected : [expected];\n\tif (options.includes(actual)) return true;\n\treturn options.includes(\"number\") && actual === \"integer\";\n}\n/** Minimal JSON Schema checker (type, required, properties, items, enum, minLength, minItems). */\nfunction validateAgainst(schema, data, path = \"$\") {\n\tconst errors = [];\n\tif (!schema || typeof schema !== \"object\") return errors;\n\tconst actual = typeOf(data);\n\tif (schema.type && !typeMatches(schema.type, actual)) {\n\t\terrors.push(`${path}: se esperaba ${[].concat(schema.type).join(\"|\")}, llegó ${actual}`);\n\t\treturn errors;\n\t}\n\tif (actual === \"string\" && schema.minLength && data.length < schema.minLength) errors.push(`${path}: texto demasiado corto (mínimo ${schema.minLength})`);\n\tif (schema.enum && (actual === \"string\" || actual === \"number\") && !schema.enum.includes(data)) errors.push(`${path}: valor no permitido (${data}); usá uno de: ${schema.enum.join(\", \")}`);\n\tif (actual === \"array\") {\n\t\tif (schema.minItems && data.length < schema.minItems) errors.push(`${path}: se esperaban al menos ${schema.minItems} ítems`);\n\t\tif (schema.items) data.forEach((item, i) => errors.push(...validateAgainst(schema.items, item, `${path}[${i}]`)));\n\t}\n\tif (actual === \"object\") {\n\t\tfor (const key of schema.required || []) if (data[key] === void 0) errors.push(`${path}: falta ${key}`);\n\t\tfor (const [key, child] of Object.entries(schema.properties || {})) {\n\t\t\tif (data[key] === void 0) continue;\n\t\t\terrors.push(...validateAgainst(child, data[key], `${path}.${key}`));\n\t\t}\n\t}\n\treturn errors;\n}\n/**\n* Integridad referencial y cobertura. El schema solo mira formas; esto mira que\n* los ids cierren y que no haya quedado un archivo sin explicar, que es el\n* error que de verdad arruina la review.\n*/\nfunction reviewIssues(payload, knownPaths = []) {\n\tconst errors = [];\n\tconst meta = payload?.meta && typeof payload.meta === \"object\" ? payload.meta : {};\n\tconst agentName = typeof meta.agent === \"string\" ? meta.agent.trim() : \"\";\n\tconst modelId = typeof meta.model === \"string\" ? meta.model.trim() : \"\";\n\tif (!agentName || agentName.startsWith(\"<\")) errors.push(\"meta.agent es obligatorio: nombre del producto (Claude Code, Cursor, Codex, …), sin placeholder\");\n\tif (!modelId || modelId.startsWith(\"<\")) errors.push(\"meta.model es obligatorio: id exacto del modelo, sin placeholder\");\n\tconst groups = Array.isArray(payload?.groups) ? payload.groups : [];\n\tconst blocks = Array.isArray(payload?.blocks) ? payload.blocks : [];\n\tconst findings = Array.isArray(payload?.findings) ? payload.findings : [];\n\tconst skipped = Array.isArray(payload?.skipped) ? payload.skipped : [];\n\tconst groupIds = new Set(groups.map((g) => g.id));\n\tconst blockIds = new Set(blocks.map((b) => b.id));\n\tconst known = new Set(knownPaths);\n\tconst dupGroups = groups.length - groupIds.size;\n\tif (dupGroups > 0) errors.push(`hay ${dupGroups} id de tema repetido`);\n\tconst dupBlocks = blocks.length - blockIds.size;\n\tif (dupBlocks > 0) errors.push(`hay ${dupBlocks} id de bloque repetido`);\n\tfor (const block of blocks) {\n\t\tif (!groupIds.has(block.group)) errors.push(`el bloque ${block.id} apunta al tema inexistente ${block.group}`);\n\t\tif (known.size && !known.has(block.file)) errors.push(`el bloque ${block.id} apunta a un archivo que no está en el diff: ${block.file}`);\n\t}\n\tconst usedGroups = new Set(blocks.map((b) => b.group));\n\tfor (const group of groups) if (!usedGroups.has(group.id)) errors.push(`el tema ${group.id} no tiene ningún bloque`);\n\tfor (const finding of findings) {\n\t\tif (finding.block && !blockIds.has(finding.block)) errors.push(`el hallazgo ${finding.id || finding.what} apunta al bloque inexistente ${finding.block}`);\n\t\tif (known.size && !known.has(finding.file)) errors.push(`el hallazgo ${finding.id || finding.what} apunta a un archivo fuera del diff: ${finding.file}`);\n\t}\n\tif (known.size) {\n\t\tconst covered = /* @__PURE__ */ new Set([...blocks.map((b) => b.file), ...skipped.map((s) => s.file)]);\n\t\tconst missing = [...known].filter((path) => !covered.has(path));\n\t\tif (missing.length) errors.push(`quedaron ${missing.length} archivo(s) sin bloque ni skipped: ${missing.slice(0, 8).join(\", \")}`);\n\t}\n\treturn errors;\n}\n//#endregion\nexport { loadReviewConfig as A, branchTips as C, showFileLines as D, listBranches as E, fingerprint as F, isOutputFilename as M, makeOutputFilename as N, tryResolveGitRoot as O, outputRelPath as P, assertGitRepo as S, git as T, readDiffCache as _, GROUP_KINDS as a, writeDiffText as b, WHY_SOURCES as c, decodePayload as d, extractBranchDiff as f, locateReviewFile as g, ensureReviewDir as h, FINDING_SEVERITIES as i, OUTPUT_DIR as j, globMatch as k, reviewIssues as l, companionPaths as m, FINDING_CLASSES as n, REVIEW_SCHEMA as o, loadBranchDiff as p, FINDING_KINDS as r, SKIP_REASONS as s, BLOCK_OPS as t, validateAgainst as u, reviewDir as v, getRemoteUrl as w, writeSessionRef as x, writeDiffCache as y };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- .live.svelte-18urbyr{background:radial-gradient(900px 420px at 8% -8%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%), var(--bg);flex-direction:column;flex:1;min-height:0;display:flex}.bar.svelte-18urbyr{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.brand.svelte-18urbyr{align-items:center;gap:10px;min-width:0;font-size:14px;display:flex}.dot.svelte-18urbyr{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);border-radius:50%;flex:none}.pill.svelte-18urbyr{letter-spacing:.02em;border:1px solid var(--border);color:var(--text-dim);background:var(--bg-card);text-transform:lowercase;border-radius:0;padding:3px 9px;font-size:11px;font-weight:500}.pill.busy.svelte-18urbyr{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));color:var(--accent);background:var(--accent-soft)}.pill.error.svelte-18urbyr{border-color:var(--danger-border,var(--danger));color:var(--danger);background:var(--danger-bg,transparent)}.pill.gone.svelte-18urbyr{color:var(--text-faint)}.actions.svelte-18urbyr{flex:none;align-items:center;gap:8px;display:flex}.ghost.svelte-18urbyr{border:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;background:0 0;padding:6px 11px;font-size:13px}.ghost.svelte-18urbyr:hover{border-color:var(--accent)}.body.svelte-18urbyr{flex:1;grid-template-columns:minmax(280px,320px) 1fr;gap:20px;min-height:0;padding:20px 24px 24px;display:grid}.card.svelte-18urbyr{border:1px solid var(--border);background:var(--bg-elev);border-radius:0;align-self:start;padding:16px 16px 14px}.fields.svelte-18urbyr{flex-direction:column;gap:14px;margin:0;display:flex}.fields.svelte-18urbyr dt:where(.svelte-18urbyr){text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin:0 0 3px;font-size:11px}.fields.svelte-18urbyr dd:where(.svelte-18urbyr){font-size:13px;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;color:var(--text);margin:0;overflow:hidden}.branch.svelte-18urbyr{color:var(--accent);font-weight:600}.arrow.svelte-18urbyr{color:var(--text-faint);margin:0 2px}.card-note.svelte-18urbyr{border-top:1px solid var(--border-soft,var(--border));color:var(--text-faint);margin:16px 0 0;padding-top:12px;font-size:12.5px;line-height:1.4}.stage.svelte-18urbyr{border:1px solid var(--border);background:var(--bg-elev);border-radius:0;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.center.svelte-18urbyr{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:40px 24px;display:flex}.center.fail.svelte-18urbyr .title:where(.svelte-18urbyr){color:var(--danger)}.auth-actions.svelte-18urbyr{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px;display:flex}.primary.svelte-18urbyr{border:1px solid color-mix(in srgb, var(--accent) 55%, var(--border));background:var(--accent-soft);color:var(--accent);font:inherit;cursor:pointer;border-radius:0;padding:7px 14px;font-size:13px;font-weight:600}.primary.svelte-18urbyr:hover:not(:disabled){border-color:var(--accent)}.primary.svelte-18urbyr:disabled{opacity:.6;cursor:default}.auth-note.svelte-18urbyr{max-width:28rem;color:var(--text-dim);margin:10px 0 0;font-size:13px}.auth-err.svelte-18urbyr{max-width:28rem;color:var(--danger);margin:8px 0 0;font-size:13px}.spinner.svelte-18urbyr{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;margin-bottom:6px;animation:.8s linear infinite svelte-18urbyr-spin}@keyframes svelte-18urbyr-spin{to{transform:rotate(360deg)}}.title.svelte-18urbyr{margin:0;font-size:17px;font-weight:600}.detail.svelte-18urbyr{color:var(--text-dim);max-width:28rem;margin:0;font-size:14px}.hint.svelte-18urbyr{max-width:32rem;color:var(--text-faint);margin:6px 0 0;font-size:13px}.stage-header.svelte-18urbyr{border-bottom:1px solid var(--border);border-radius:0;flex:none;align-items:center;gap:8px;min-width:0;padding:10px 14px;display:flex}.stage-header.svelte-18urbyr strong:where(.svelte-18urbyr){font-size:13.5px;font-weight:650}.stage-header.svelte-18urbyr small:where(.svelte-18urbyr){font-family:var(--mono);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11.5px;overflow:hidden}.log-wrap.svelte-18urbyr{border-radius:0;flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 14px;display:flex}.log-wrap.svelte-18urbyr .log{flex:1;min-height:0}.stage-footer.svelte-18urbyr{border-top:1px solid var(--border);border-radius:0;flex:none;align-items:center;gap:10px;margin-top:auto;padding-top:10px;display:flex}.footer-spacer.svelte-18urbyr{flex:1}.launch-banner.svelte-18urbyr{border:1px solid var(--border);background:color-mix(in srgb, var(--accent-soft) 70%, var(--bg-card));border-radius:0;align-items:flex-start;gap:12px;padding:10px 12px;display:flex}.launch-banner.svelte-18urbyr .title:where(.svelte-18urbyr){font-size:14px}.launch-banner.svelte-18urbyr .detail:where(.svelte-18urbyr){margin-top:2px;font-size:12.5px}.spinner.sm.svelte-18urbyr{flex:none;width:18px;height:18px;margin:2px 0 0}@media (width<=800px){.body.svelte-18urbyr{grid-template-rows:auto 1fr;grid-template-columns:1fr;gap:14px;padding:16px}.card.svelte-18urbyr{align-self:stretch}.stage.svelte-18urbyr{min-height:280px}}@media (width<=480px){.bar.svelte-18urbyr{flex-wrap:wrap;padding:10px 14px}.pill.svelte-18urbyr{font-size:10px}}.page.svelte-1uha8ag{flex-direction:column;min-height:100vh;display:flex}.page.live.svelte-1uha8ag{height:100vh;min-height:100vh;overflow:hidden}.diff-spinner.svelte-1uha8ag{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;margin:0 auto;animation:.7s linear infinite svelte-1uha8ag-diff-spin}.cli-wait.svelte-1uha8ag{text-align:center;background:var(--bg);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;min-height:0;padding:32px 24px;display:flex}.cli-wait-title.svelte-1uha8ag{color:var(--text);margin:0;font-size:15px}.cli-wait-detail.svelte-1uha8ag{color:var(--text-faint);margin:0;font-size:13px}.cli-wait.svelte-1uha8ag .ghost:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;margin-top:8px;padding:6px 12px;font-size:13px}@keyframes svelte-1uha8ag-diff-spin{to{transform:rotate(360deg)}}.toast.svelte-1uha8ag{z-index:50;border:1px solid var(--border);background:var(--bg-card);color:var(--text);padding:10px 16px;font-size:13px;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000029}.topbar.svelte-1uha8ag{border-bottom:1px solid var(--border);background:var(--header-bg);z-index:5;justify-content:space-between;align-items:center;gap:12px;padding:16px 28px;display:flex;position:sticky;top:0}.brand.svelte-1uha8ag{color:var(--text);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-dot.svelte-1uha8ag{background:linear-gradient(135deg,#6ea8fe,#c9a5ff);border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 12px #6ea8fe88}.title-block.svelte-1uha8ag{text-align:left;flex-direction:column;line-height:1.25;display:flex}.title-block.svelte-1uha8ag span:where(.svelte-1uha8ag):first-child{font-size:15px;font-weight:700}.title-block.svelte-1uha8ag small:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11.5px;font-weight:400}.workspace.svelte-1uha8ag{flex:1;grid-template-columns:minmax(0,1fr) minmax(300px,380px);align-items:start;gap:28px;width:100%;max-width:1280px;margin:0 auto;padding:22px 28px 40px;display:grid;overflow:auto}.setup.svelte-1uha8ag{min-width:0}h2.svelte-1uha8ag{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:13px;font-weight:600}.result-head.svelte-1uha8ag{margin-top:24px}.section-head.svelte-1uha8ag{justify-content:space-between;align-items:baseline;margin-top:22px;display:flex}.hint-text.svelte-1uha8ag{color:var(--text-dim);margin:0 0 12px;font-size:12.5px;line-height:1.5}.hint-text.svelte-1uha8ag code:where(.svelte-1uha8ag){font-family:var(--mono);color:var(--text);font-size:12px}.detect-banner.svelte-1uha8ag,.detect-wait.svelte-1uha8ag{color:var(--text-dim);margin:0 0 10px;font-size:13px}button.file-link.svelte-1uha8ag{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.error-line.svelte-1uha8ag{color:var(--danger);margin:0 0 10px;font-size:12px}.ok-line.svelte-1uha8ag{color:var(--ok);margin:0 0 10px;font-size:12px}.row.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.repo-setup.svelte-1uha8ag{flex-direction:column;gap:10px;display:flex}.field.svelte-1uha8ag{flex-direction:column;flex:1;gap:4px;min-width:180px;display:flex}.repo-field.svelte-1uha8ag{flex:none;width:100%;min-width:0}.branches-row.svelte-1uha8ag .field:where(.svelte-1uha8ag){flex:1;min-width:160px}.field.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11px}.repo-row.svelte-1uha8ag{gap:6px;min-width:0;display:flex}.repo-row.svelte-1uha8ag input[type=text]:where(.svelte-1uha8ag){flex:1;min-width:0}.repo-row.svelte-1uha8ag button:where(.svelte-1uha8ag){flex-shrink:0}.source-toggle.svelte-1uha8ag{margin-bottom:10px}input[type=text].svelte-1uha8ag,select.svelte-1uha8ag{background:var(--bg-card);border:1px solid var(--border);flex:1;min-width:0;padding:9px 12px}button.svelte-1uha8ag{background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:9px 12px;font-size:12.5px}button.svelte-1uha8ag:hover:not(:disabled){border-color:var(--accent)}button.svelte-1uha8ag:disabled{opacity:.5;cursor:not-allowed}.mode-toggle.svelte-1uha8ag{border:1px solid var(--border);width:fit-content;margin-bottom:10px;display:flex;overflow:hidden}.mode-toggle.svelte-1uha8ag button:where(.svelte-1uha8ag){background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-1uha8ag button:where(.svelte-1uha8ag)+button:where(.svelte-1uha8ag){border-left:1px solid var(--border)}.mode-toggle.svelte-1uha8ag button.on:where(.svelte-1uha8ag){background:var(--accent-soft)}textarea.svelte-1uha8ag{resize:vertical;background:var(--bg);border:1px solid var(--border);width:100%;height:220px;font-family:var(--mono);color:var(--text);padding:12px;font-size:12px;line-height:1.5}.loading-models.svelte-1uha8ag{color:var(--text-faint);font-weight:400}.models-error.svelte-1uha8ag{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}button.linkish.svelte-1uha8ag{color:var(--accent,#3b82f6);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.actions.svelte-1uha8ag{gap:8px;margin-top:10px;display:flex}button.primary.svelte-1uha8ag{background:var(--btn-primary-bg);border-color:var(--btn-primary-border);color:var(--btn-primary-text);font-weight:600}.coverage-box.svelte-1uha8ag{border:1px solid var(--border);border-left:3px solid var(--sev-med);background:var(--bg-card);flex-direction:column;gap:10px;margin-top:12px;padding:12px 14px;display:flex}.coverage-head.svelte-1uha8ag{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.coverage-head.svelte-1uha8ag strong:where(.svelte-1uha8ag){color:var(--sev-med);font-size:13px}.coverage-head.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11.5px}.coverage-box.svelte-1uha8ag summary:where(.svelte-1uha8ag){color:var(--text-dim);cursor:pointer;font-size:12px}.coverage-list.svelte-1uha8ag{max-height:180px;font-family:var(--mono);color:var(--text-faint);margin:8px 0 0;padding-left:18px;font-size:11px;overflow:auto}.coverage-box.svelte-1uha8ag textarea:where(.svelte-1uha8ag){resize:vertical;background:var(--bg);border:1px solid var(--border);width:100%;font-family:var(--mono);color:var(--text);padding:10px;font-size:11.5px;line-height:1.5}.coverage-actions.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.dropzone.svelte-1uha8ag{border:1.5px dashed var(--border);text-align:center;background:var(--bg-elev);padding:26px;transition:background .15s,border-color .15s}.dropzone.drag.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft)}.dropzone.busy.svelte-1uha8ag{opacity:.7}.dropzone.svelte-1uha8ag p:where(.svelte-1uha8ag){color:var(--text-dim);margin:0 0 6px;font-size:14px}.visually-hidden.svelte-1uha8ag{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.drop-errors.svelte-1uha8ag{background:var(--danger-bg);color:var(--danger);margin-top:10px;padding:10px 12px;font-size:12.5px}.drop-errors.svelte-1uha8ag strong:where(.svelte-1uha8ag){margin-bottom:4px;display:block}.drop-errors.svelte-1uha8ag ul:where(.svelte-1uha8ag){margin:0;padding-left:18px;line-height:1.6}.reports-col.svelte-1uha8ag{min-width:0;max-height:calc(100vh - 110px);position:sticky;top:88px;overflow:auto}.report-list.svelte-1uha8ag{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.report-item.svelte-1uha8ag{border:1px solid var(--border);background:var(--bg-card);align-items:stretch;display:flex;position:relative;overflow:visible}.report-item.svelte-1uha8ag:hover{background:var(--bg-card-hover);border-color:#33507a}.report-card.svelte-1uha8ag{min-width:0;color:var(--text);flex:1;padding:12px 8px 12px 14px;text-decoration:none;display:block}.report-actions.svelte-1uha8ag{flex-shrink:0;padding:8px 8px 0 0;position:relative}.kebab.svelte-1uha8ag{width:26px;height:26px;color:var(--text-faint);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.kebab.svelte-1uha8ag:hover{border-color:var(--border);color:var(--text);background:var(--bg)}.report-menu.svelte-1uha8ag{z-index:40;border:1px solid var(--border);background:var(--bg-card);width:148px;padding:4px;position:fixed;box-shadow:0 8px 24px #0000002e}.report-menu.svelte-1uha8ag .menu-item:where(.svelte-1uha8ag){width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;font-size:12.5px;display:block}.report-menu.svelte-1uha8ag .menu-item:where(.svelte-1uha8ag):hover{background:var(--accent-soft)}.report-menu.svelte-1uha8ag .menu-item.danger:where(.svelte-1uha8ag){color:var(--danger)}.report-top.svelte-1uha8ag{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.report-top.svelte-1uha8ag strong:where(.svelte-1uha8ag){font-size:14px}.report-prov.svelte-1uha8ag{min-width:0;color:var(--text-dim);align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.report-prov.svelte-1uha8ag .prov-agent:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.report-prov.svelte-1uha8ag .prov-sep:where(.svelte-1uha8ag){color:var(--text-faint);flex-shrink:0}.report-prov.svelte-1uha8ag .prov-model:where(.svelte-1uha8ag){min-width:0;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11.5px;overflow:hidden}.when.svelte-1uha8ag{color:var(--text-dim);font-size:12px}.report-meta.svelte-1uha8ag{color:var(--text-dim);justify-content:space-between;align-items:baseline;gap:12px;margin-top:6px;font-size:12px;display:flex}.report-base.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.base-arrow.svelte-1uha8ag{color:var(--text-faint)}.report-counts.svelte-1uha8ag{flex-shrink:0;align-items:baseline;gap:8px;display:flex}.pill.svelte-1uha8ag{font-family:var(--mono);font-size:11px}.pill.bad.svelte-1uha8ag{color:var(--danger)}.report-intent.svelte-1uha8ag{color:var(--text-dim);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:8px 0 0;font-size:12.5px;line-height:1.45;display:-webkit-box;overflow:hidden}@media (width<=960px){.workspace.svelte-1uha8ag{grid-template-columns:1fr}.reports-col.svelte-1uha8ag{max-height:none;position:static}}
@@ -1 +0,0 @@
1
- .agent-icon.svelte-1o6iyhy{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.agent-icon.svelte-1o6iyhy svg:where(.svelte-1o6iyhy){width:100%;height:100%;display:block}.agent-select.svelte-grhxa3{flex:1;width:100%;min-width:0;position:relative}.trigger.svelte-grhxa3{background:var(--bg-card);border:1px solid var(--border);width:100%;min-width:0;color:var(--text);font:inherit;font-size:inherit;text-align:left;cursor:pointer;align-items:center;gap:8px;padding:9px 12px;display:flex}.trigger.svelte-grhxa3:hover:not(:disabled){border-color:var(--accent)}.trigger.svelte-grhxa3:disabled{opacity:.5;cursor:not-allowed}.label.svelte-grhxa3{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.label.muted.svelte-grhxa3{color:var(--text-faint)}.caret.svelte-grhxa3{opacity:.7;color:var(--text-dim);flex-shrink:0}.agent-select.open.svelte-grhxa3 .caret:where(.svelte-grhxa3){transform:rotate(180deg)}.menu.svelte-grhxa3{z-index:40;border:1px solid var(--border);background:var(--bg-card);flex-direction:column;gap:0;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 8px 24px #0000002e}.option.svelte-grhxa3{width:100%;color:var(--text);font:inherit;font-size:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:2px;align-items:center;gap:8px;padding:8px 10px;display:flex}.option.svelte-grhxa3:hover,.option.selected.svelte-grhxa3{background:var(--accent-soft)}.theme-toggle.svelte-lu0t34{background:var(--bg-card);border:1px solid var(--border);width:30px;height:30px;color:var(--text-dim);flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:14px;display:flex}.theme-toggle.svelte-lu0t34:hover{border-color:var(--accent);color:var(--text)}.md.svelte-cxb0dt{color:var(--text);overflow-wrap:anywhere}.md.svelte-cxb0dt>:first-child{margin-top:0}.md.svelte-cxb0dt>:last-child{margin-bottom:0}.md.svelte-cxb0dt p,.md.svelte-cxb0dt ul,.md.svelte-cxb0dt ol,.md.svelte-cxb0dt pre,.md.svelte-cxb0dt blockquote{margin:.45em 0}.md.svelte-cxb0dt ul,.md.svelte-cxb0dt ol{padding-left:1.35em}.md.svelte-cxb0dt li{margin:.15em 0}.md.svelte-cxb0dt h1,.md.svelte-cxb0dt h2,.md.svelte-cxb0dt h3,.md.svelte-cxb0dt h4{margin:.7em 0 .35em;font-size:1em;font-weight:650;line-height:1.35}.md.svelte-cxb0dt h1{font-size:1.15em}.md.svelte-cxb0dt h2{font-size:1.08em}.md.svelte-cxb0dt a{color:var(--accent)}.md.svelte-cxb0dt code{font-family:var(--mono);background:var(--bg-card);border:1px solid var(--border-soft,var(--border));border-radius:4px;padding:.1em .35em;font-size:.92em}.md.svelte-cxb0dt pre{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:8px 10px;overflow-x:auto}.md.svelte-cxb0dt pre code{background:0 0;border:none;padding:0;font-size:12px;line-height:1.45}.md.svelte-cxb0dt blockquote{border-left:3px solid var(--border);color:var(--text-dim);padding-left:10px}.md.svelte-cxb0dt hr{border:none;border-top:1px solid var(--border);margin:.75em 0}.md.svelte-cxb0dt table{border-collapse:collapse;width:100%;font-size:12.5px}.md.svelte-cxb0dt th,.md.svelte-cxb0dt td{border:1px solid var(--border);text-align:left;padding:4px 8px}.md.svelte-cxb0dt th{background:var(--bg-card);font-weight:600}.perm-actions.svelte-1l4yk48{flex-wrap:wrap;gap:8px;display:flex}.perm-actions.svelte-1l4yk48 button:where(.svelte-1l4yk48){border:1px solid var(--border);background:var(--bg-elev);color:var(--text);border-radius:0;padding:5px 10px;font-size:12px}.perm-actions.svelte-1l4yk48 .allow:where(.svelte-1l4yk48),.perm-actions.svelte-1l4yk48 .allow-all:where(.svelte-1l4yk48){background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}.perm-actions.svelte-1l4yk48 .deny:where(.svelte-1l4yk48),.perm-actions.svelte-1l4yk48 .deny-all:where(.svelte-1l4yk48){background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.log.svelte-18syxl5{flex-direction:column;gap:6px;min-height:0;font-size:13px;line-height:1.45;display:flex;overflow-y:auto}p.svelte-18syxl5{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.user.svelte-18syxl5{background:var(--accent-soft);border:1px solid var(--btn-primary-border);border-radius:0;align-self:flex-end;max-width:90%;padding:6px 10px}.tag.svelte-18syxl5{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px;display:block}.message.svelte-18syxl5{color:var(--text);max-width:100%}.thought.svelte-18syxl5{color:var(--text-faint);font-size:12px}.thought.svelte-18syxl5 summary:where(.svelte-18syxl5){cursor:pointer;font-style:italic}.thought.svelte-18syxl5 p:where(.svelte-18syxl5){max-height:200px;margin-top:4px;overflow-y:auto}.tool.svelte-18syxl5{font-family:var(--mono);color:var(--text-dim);gap:6px;font-size:12px;display:flex}.tool.svelte-18syxl5 .mark:where(.svelte-18syxl5){width:12px;color:var(--ok);flex:none}.tool.failed.svelte-18syxl5 .mark:where(.svelte-18syxl5),.tool.failed.svelte-18syxl5 .title:where(.svelte-18syxl5){color:var(--danger)}.tool.svelte-18syxl5 .title:where(.svelte-18syxl5){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.permission.svelte-18syxl5{color:var(--warn);font-size:12px}.permission.allowed.svelte-18syxl5{color:var(--ok)}.permission.pending.svelte-18syxl5{border:1px solid var(--warn);background:var(--bg-card);color:var(--text);border-radius:0;padding:8px 10px}.perm-head.svelte-18syxl5{text-transform:uppercase;letter-spacing:.05em;color:var(--warn);flex-wrap:wrap;align-items:center;gap:8px;font-size:11px;display:flex}.perm-head.svelte-18syxl5 .kind:where(.svelte-18syxl5){color:var(--text-faint);font-family:var(--mono);text-transform:none;letter-spacing:0}.perm-head.svelte-18syxl5 .counter:where(.svelte-18syxl5){font-variant-numeric:tabular-nums;color:var(--text-dim);text-transform:none;letter-spacing:0;font-family:var(--mono);margin-left:auto}.perm-head.svelte-18syxl5 .nav:where(.svelte-18syxl5){gap:2px;display:flex}.nav-btn.svelte-18syxl5{border:1px solid var(--border);background:var(--bg-elev);color:var(--text-dim);border-radius:0;padding:2px 6px;font-size:11px;line-height:1.2}.perm-subtitle.svelte-18syxl5{color:var(--text-faint);margin:4px 0 0;font-size:11.5px}.perm-title.svelte-18syxl5{font-family:var(--mono);margin:4px 0 0;font-size:12px}.perm-command.svelte-18syxl5{font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;background:var(--bg-elev);border:1px solid var(--border);border-radius:0;max-width:100%;margin:6px 0 0;padding:8px 10px;font-size:11.5px;line-height:1.4}.perm-command.collapsed.svelte-18syxl5{max-height:10.5em;overflow:hidden}.perm-expand.svelte-18syxl5{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:0;margin:4px 0 0;padding:0;font-size:11.5px;text-decoration:underline}.perm-expand.svelte-18syxl5:hover{color:var(--text)}.perm-reason.svelte-18syxl5{color:var(--text-faint);margin:2px 0 0;font-size:11.5px}.permission.pending.svelte-18syxl5 .perm-actions{margin-top:8px}.permission.svelte-18syxl5 span:where(.svelte-18syxl5){color:var(--text-faint)}.plan.svelte-18syxl5{color:var(--text-dim);margin:0;padding-left:18px;font-size:12px}.plan.svelte-18syxl5 li.done:where(.svelte-18syxl5){color:var(--text-faint);text-decoration:line-through}.review.svelte-18syxl5{border-radius:0;padding:6px 10px;font-size:12px}.review.ok.svelte-18syxl5{background:var(--ok-bg);color:var(--ok)}.review.bad.svelte-18syxl5 .retry:where(.svelte-18syxl5){border:1px solid var(--danger-border);background:var(--bg-elev);color:var(--text);cursor:pointer;border-radius:0;margin-top:8px;padding:5px 12px;font-size:12px}.review.bad.svelte-18syxl5 .retry:where(.svelte-18syxl5):hover:not(:disabled){border-color:var(--accent)}.review.bad.svelte-18syxl5 .retry:where(.svelte-18syxl5):disabled{opacity:.55;cursor:default}.review.bad.svelte-18syxl5,.error.svelte-18syxl5{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);border-radius:0;padding:6px 10px;font-size:12px}.review.svelte-18syxl5 ul:where(.svelte-18syxl5){margin:4px 0 0;padding-left:16px}.note.svelte-18syxl5{color:var(--text-faint);font-size:12px}.working.svelte-18syxl5{gap:4px;padding:4px 0;display:flex}.working.svelte-18syxl5 span:where(.svelte-18syxl5){background:var(--text-faint);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite svelte-18syxl5-blink}.working.svelte-18syxl5 span:where(.svelte-18syxl5):nth-child(2){animation-delay:.2s}.working.svelte-18syxl5 span:where(.svelte-18syxl5):nth-child(3){animation-delay:.4s}@keyframes svelte-18syxl5-blink{0%,80%,to{opacity:.2}40%{opacity:1}}.trust.svelte-3jjxns{border:1px solid var(--border);background:var(--bg-card);text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;font:inherit;border-radius:0;flex:none;align-items:center;gap:8px;padding:5px 8px;display:flex}.trust.inline.svelte-3jjxns{width:auto;max-width:100%;padding:4px 8px}.trust.on.svelte-3jjxns{border-color:color-mix(in srgb, var(--ok) 45%, var(--border));background:var(--ok-bg)}.trust.svelte-3jjxns:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.switch.svelte-3jjxns{border:1px solid var(--border);background:var(--bg-elev);border-radius:999px;flex:none;width:30px;height:16px;transition:background .15s,border-color .15s;position:relative}.trust.on.svelte-3jjxns .switch:where(.svelte-3jjxns){background:var(--ok);border-color:var(--ok)}.knob.svelte-3jjxns{background:var(--text);opacity:.55;border-radius:50%;width:12px;height:12px;transition:transform .15s,background .15s,opacity .15s;position:absolute;top:1px;left:1px}.trust.on.svelte-3jjxns .knob:where(.svelte-3jjxns){background:var(--bg-card);opacity:1;transform:translate(14px)}.trust-text.svelte-3jjxns{flex-wrap:wrap;align-items:baseline;gap:4px;min-width:0;line-height:1.2;display:flex}.trust-text.svelte-3jjxns strong:where(.svelte-3jjxns){color:var(--text);font-size:12px;font-weight:600}.trust-text.svelte-3jjxns small:where(.svelte-3jjxns){color:var(--text-faint);font-size:11px}.model-select.svelte-9wkprr{flex:1;width:100%;min-width:0;position:relative}.trigger.svelte-9wkprr{background:var(--bg-card);border:1px solid var(--border);width:100%;min-width:0;color:var(--text);font:inherit;text-align:left;cursor:pointer;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.trigger.svelte-9wkprr:hover:not(:disabled){border-color:var(--accent)}.trigger.svelte-9wkprr:disabled{opacity:.5;cursor:not-allowed}.title.svelte-9wkprr{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.title.muted.svelte-9wkprr{color:var(--text-faint)}.badges.svelte-9wkprr{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:4px;max-width:45%;display:flex}.badge.svelte-9wkprr{border:1px solid var(--border);background:var(--bg-elev,var(--bg-card));color:var(--text-dim,var(--text-faint));font-size:10px;line-height:1.35;font-family:var(--mono,ui-monospace, monospace);white-space:nowrap;border-radius:0;padding:0 5px}.hint.svelte-9wkprr{color:var(--text-faint);font-size:10px;font-family:var(--mono,ui-monospace, monospace);flex-shrink:0}.caret.svelte-9wkprr{opacity:.7;color:var(--text-dim);flex-shrink:0}.model-select.open.svelte-9wkprr .caret:where(.svelte-9wkprr){transform:rotate(180deg)}.menu.svelte-9wkprr{z-index:40;border:1px solid var(--border);background:var(--bg-card);flex-direction:column;max-height:min(360px,50vh);padding:4px;display:flex;position:absolute;inset:calc(100% + 4px) 0 auto;overflow:auto;box-shadow:0 8px 24px #0000002e}.model-select.drop-up.svelte-9wkprr .menu:where(.svelte-9wkprr){top:auto;bottom:calc(100% + 4px);box-shadow:0 -8px 24px #0000002e}.option.svelte-9wkprr{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:2px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.option.svelte-9wkprr:hover,.option.selected.svelte-9wkprr{background:var(--accent-soft)}
@@ -1,2 +0,0 @@
1
- import{F as e,J as t,M as n,N as r,P as i,et as a,n as o,q as s,t as c}from"./D8WOD_eS.js";var l=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function m(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function h({href:e}){return e.split(`#`)[0]}function g(){}function _(e){let t=!1,n;return()=>t?n:(t=!0,n=e())}function v(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}var ee=new TextEncoder;function te(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function y(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var ne=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&b.delete(ae(e)),ne(e,t));var b=new Map;function re(e,t){let n=ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=y(e));let i=r.getAttribute(`data-ttl`);return i&&b.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function ie(e,t,n){if(b.size>0){let t=ae(e,n),r=b.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);b.delete(t)}}return window.fetch(t,n)}function ae(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${v(...e)}"]`}return n}var oe=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,se=/^\/\((?:[^)]+)\)$/;function ce(e){let t=[];return{pattern:e===`/`||se.test(e)?/^\/$/:RegExp(`^${ue(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return fe(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return fe(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=oe.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return fe(e)}).join(``)}).join(``)}/?$`),params:t}}function le(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ue(e){return e.slice(1).split(`/`).filter(le)}function de(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function fe(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}var pe=/\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;function me(e,t){let n=ue(e),r=e!=`/`&&e.endsWith(`/`);return`/`+n.map(n=>n.replace(pe,(n,r,i,a)=>{let o=t[a];if(!o){if(r||i&&o!==void 0)return``;throw Error(`Missing parameter '${a}' in route ${e}`)}if(o.startsWith(`/`)||o.endsWith(`/`))throw Error(`Parameter '${a}' in route ${e} cannot start or end with a slash -- this would cause an invalid route like foo//bar`);return o})).filter(Boolean).join(`/`)+(r?`/`:``)}function he({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=ce(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return de(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function ge(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function _e(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var x=globalThis.__sveltekit_nots6r?.base??``,ve=globalThis.__sveltekit_nots6r?.assets??x??``,ye=`_app`,be=``;function xe(...e){if(!e[0].startsWith(`/`))throw Error(`Cannot use \`resolve(...)\` with a non-absolute pathname or route ID (got "${e[0]}"). \`resolve\` is only for internal pathnames and route IDs; external URLs should be used directly.`);return x+be+me(e[0],e[1])}var Se=`1792429086921`,Ce=`sveltekit:snapshot`,we=`sveltekit:scroll`,Te=`sveltekit:states`,Ee=`sveltekit:pageurl`,S=`sveltekit:history`,C=`sveltekit:navigation`,w={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},T=location.origin;function De(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var Oe={...w,"":w.hover};function ke(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ae(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ke(e)}}function je(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||Ie(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===T&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function Me(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ke(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:Oe[r??`off`],preload_data:Oe[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Ne(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var Pe={v:g};function Fe(){let{set:e,subscribe:t}=a(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${ve}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==Se;return n&&(e(!0),Pe.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function Ie(e,t,n){return e.origin!==T||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Le(e){}var Re=2**32-1,ze=Re-1,O=class extends Error{constructor(e,t,n,r){super(e),this.name=`DevalueError`,this.path=t.join(``),this.value=n,this.root=r}},Be=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Ve(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===Be}function He(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ue(e){switch(e){case`"`:return`\\"`;case`<`:return`\\u003C`;case`\\`:return`\\\\`;case`
2
- `:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;case`\b`:return`\\b`;case`\f`:return`\\f`;case`\u2028`:return`\\u2028`;case`\u2029`:return`\\u2029`;default:return e<` `?`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`:``}}function k(e){let t=``,n=0,r=e.length;for(let i=0;i<r;i+=1){let r=e[i],a=Ue(r);a&&(t+=e.slice(n,i)+a,n=i+1)}return`"${n===0?e:t+e.slice(n)}"`}function We(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}var Ge=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function Ke(e){return Ge.test(e)?`.`+e:`[`+JSON.stringify(e)+`]`}function qe(e){return!(!Number.isInteger(e)||e<0||e>ze)}function Je(e){return!(!Number.isInteger(e)||e<0||e>Re)}function Ye(e){if(e.length===0||e.length>1&&e.charCodeAt(0)===48)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<48||n>57)return!1}return qe(+e)}function Xe(e){for(var t=e.length-1;t>=0&&!Ye(e[t]);t--);return t+1}function Ze(e){let t=Object.keys(e);return t.length=Xe(t),t}function Qe(e){return new Uint8Array(e).toBase64()}function $e(e){return Uint8Array.fromBase64(e).buffer}function et(e){return Buffer.from(e).toString(`base64`)}function tt(e){return Uint8Array.from(Buffer.from(e,`base64`)).buffer}function nt(e){let t=new Uint8Array(e),n=``,r=32768;for(let e=0;e<t.length;e+=r){let i=t.subarray(e,e+r);n+=String.fromCharCode.apply(null,i)}return btoa(n)}function rt(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var it=typeof Uint8Array.fromBase64==`function`,at=typeof process==`object`&&process.versions?.node!==void 0,ot=it?Qe:at?et:nt,st=it?$e:at?tt:rt;function ct(e,t){if(!t)return e;let n={};for(let r of Object.keys(e))n[r]=t[r]??e[r];return n}var lt=Object.freeze({kind:`not-plain`}),ut=Object.freeze({kind:`symbol-keys`}),dt=Object.freeze({identify:e=>e,typeOf:e=>e===null?`null`:typeof e,toPrimitive:e=>e,tagOf:e=>He(e),isThenable:e=>typeof e.then==`function`,toPromise:e=>Promise.resolve(e),unbox:e=>e.valueOf(),toISOString:e=>isNaN(e.getDate())?``:e.toISOString(),toStringValue:e=>e.toString(),regExpInfo:e=>({source:e.source,flags:e.flags}),valuesOf:e=>e,entriesOf:e=>e,viewInfo:e=>({buffer:e.buffer,byteOffset:e.byteOffset,byteLength:e.byteLength,length:e.length,bufferByteLength:e.buffer.byteLength}),toArrayBuffer:e=>e,lengthOf:e=>e.length,hasOwn:(e,t)=>Object.hasOwn(e,t),indicesOf:e=>Ze(e),shapeOf:e=>Ve(e)?We(e).length>0?ut:{kind:Object.getPrototypeOf(e)===null?`null-proto`:`plain`,keys:Object.keys(e)}:lt,get:(e,t)=>e[t]}),ft=Object.freeze({fromPrimitive:e=>e,fromISOString:e=>new Date(e),fromStringValue:(e,t)=>e===`URL`?new URL(t):e===`URLSearchParams`?new URLSearchParams(t):Temporal[e.slice(9)].from(t),fromArrayBuffer:e=>e,fromRegExpInfo:(e,t)=>new RegExp(e,t),fromViewInfo:(e,t,n,r)=>{let i=globalThis[e];return n===void 0?new i(t):new i(t,n,r)},box:e=>Object(e),createArray:e=>Array(e),createSparseArray:e=>{let t=[];return t[ze]=void 0,delete t[ze],t.length=e,t},createObject:()=>({}),createNullPrototypeObject:()=>Object.create(null),createSet:()=>new Set,createMap:()=>new Map,set:(e,t,n)=>{e[t]=n},addValue:(e,t)=>{e.add(t)},addEntry:(e,t,n)=>{e.set(t,n)}});function pt(e,t,n){let r=ht(!1,e,t,n);return typeof r==`string`?r:`[${r.join(`,`)}]`}async function mt(e,t,n){let r=ht(!0,e,t,n);if(typeof r==`string`)return r;let i=`[`;for(let e=0;e<r.length;e+=1){let t=r[e];if(typeof t!=`string`&&(await t,t=r[e],e===0&&t<0))return`${t}`;i+=t,e<r.length-1&&(i+=`,`)}return i+=`]`,i}function ht(e,t,n,r){let i=ct(dt,r?.operations),a=[],o=new Map,s=[];if(n)for(let e of Object.getOwnPropertyNames(n))s.push({key:e,fn:n[e]});let c=[],l=0;function u(n,r){let d=i.typeOf(n);if(d===`undefined`)return-1;let f;if(d===`number`){if(f=i.toPrimitive(n),Number.isNaN(f))return-3;if(f===1/0)return-4;if(f===-1/0)return-5;if(f===0&&1/f<0)return-6}let p=i.identify(n);if(o.has(p))return o.get(p);r??=l++,o.set(p,r);for(let{key:e,fn:t}of s){let i=t(n);if(i)return a[r]=`["${e}",${u(i)}]`,r}if(d===`function`)throw new O(`Cannot stringify a function`,c,n,t);if(d===`symbol`)throw new O(`Cannot stringify a Symbol primitive`,c,n,t);let m=``;if(d!==`object`)m=gt(d===`number`?f:i.toPrimitive(n));else if(i.isThenable(n)){if(!e)throw new O(`Cannot stringify a Promise or thenable — use stringifyAsync instead`,c,n,t);m=i.toPromise(n).then(e=>{let t=u(e,r);t<0&&(a[r]=t)})}else{let e=i.tagOf(n);switch(e){case`Number`:case`String`:case`Boolean`:case`BigInt`:m=`["Object",${u(i.unbox(n))}]`;break;case`Date`:m=`["Date","${i.toISOString(n)}"]`;break;case`URL`:m=`["URL",${k(i.toStringValue(n))}]`;break;case`URLSearchParams`:m=`["URLSearchParams",${k(i.toStringValue(n))}]`;break;case`RegExp`:let{source:r,flags:a}=i.regExpInfo(n);m=a?`["RegExp",${k(r)},"${a}"]`:`["RegExp",${k(r)}]`;break;case`Array`:{let e=!1,t=i.lengthOf(n);m=`[`;for(let r=0;r<t;r+=1)if(r>0&&(m+=`,`),i.hasOwn(n,r))c.push(`[${r}]`),m+=u(i.get(n,r)),c.pop();else if(e)m+=-2;else{let r=i.indicesOf(n),a=r.length,o=String(t).length;if((t-a)*3>4+o+a*(o+1)){m=`[-7,`+t;for(let e=0;e<r.length;e++){let t=r[e];c.push(`[${t}]`),m+=`,`+t+`,`+u(i.get(n,t)),c.pop()}break}else e=!0,m+=-2}m+=`]`;break}case`Set`:m=`["Set"`;for(let e of i.valuesOf(n))m+=`,${u(e)}`;m+=`]`;break;case`Map`:m=`["Map"`;for(let[e,t]of i.entriesOf(n)){let n=i.typeOf(e),r=n!==`object`&&n!==`function`&&n!==`symbol`;c.push(`.get(${r?gt(i.toPrimitive(e)):`...`})`),m+=`,${u(e)},${u(t)}`,c.pop()}m+=`]`;break;case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:case`Int16Array`:case`Uint16Array`:case`Float16Array`:case`Int32Array`:case`Uint32Array`:case`Float32Array`:case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:{let t=i.viewInfo(n);m=`["`+e+`",`+u(t.buffer),t.byteLength!==t.bufferByteLength&&(m+=`,${t.byteOffset},${t.length}`),m+=`]`;break}case`DataView`:{let t=i.viewInfo(n);m=`["`+e+`",`+u(t.buffer),t.byteLength!==t.bufferByteLength&&(m+=`,${t.byteOffset},${t.byteLength}`),m+=`]`;break}case`ArrayBuffer`:m=`["ArrayBuffer","${ot(i.toArrayBuffer(n))}"]`;break;case`Temporal.Duration`:case`Temporal.Instant`:case`Temporal.PlainDate`:case`Temporal.PlainTime`:case`Temporal.PlainDateTime`:case`Temporal.PlainMonthDay`:case`Temporal.PlainYearMonth`:case`Temporal.ZonedDateTime`:m=`["${e}",${k(i.toStringValue(n))}]`;break;default:{let e=i.shapeOf(n);if(e.kind===`not-plain`)throw new O(`Cannot stringify arbitrary non-POJOs`,c,n,t);if(e.kind===`symbol-keys`)throw new O(`Cannot stringify POJOs with symbolic keys`,c,n,t);if(e.kind===`null-proto`){m=`["null"`;for(let r of e.keys){if(r===`__proto__`)throw new O(`Cannot stringify objects with __proto__ keys`,c,n,t);c.push(Ke(r)),m+=`,${k(r)},${u(i.get(n,r))}`,c.pop()}m+=`]`}else{m=`{`;let r=!1;for(let a of e.keys){if(a===`__proto__`)throw new O(`Cannot stringify objects with __proto__ keys`,c,n,t);r&&(m+=`,`),r=!0,c.push(Ke(a)),m+=`${k(a)}:${u(i.get(n,a))}`,c.pop()}m+=`}`}}}}return a[r]=m,r}let d=u(t);return d<0?`${d}`:a}function gt(e){let t=typeof e;return t===`string`?k(e):e===void 0?`-1`:e===0&&1/e<0?`-6`:t===`bigint`?`["BigInt","${e}"]`:String(e)}var _t=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[..._t],[...new Set([..._t])];function vt(e){return e.filter(e=>e!=null)}var yt=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function bt(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===yt}function xt(e,t){let n=Object.getPrototypeOf(e)===null?Object.create(null):{};t.set(e,n),Object.defineProperty(n,Ot,{value:!0});for(let r of Object.keys(e).sort()){let i=e[r];Object.defineProperty(n,r,{value:t.get(i)??i,enumerable:!0,configurable:!0,writable:!0})}return n}var St=`__skrao`,Ct=`__skram`,wt=`__skras`,Tt=`__skraf`,Et=`__skrap`,Dt=`__skrag`,Ot=Symbol(St);function kt(e,t,n){let r={[Dt]:e=>{if(e instanceof RegExp)throw Error(`Regular expressions are not valid remote function arguments`)}};t&&(r[Ct]=e=>{if(!(e instanceof Map))return;let t=[];for(let[n,r]of e)t.push([a(n),a(r)]);return t.sort(([e,t],[n,r])=>e<n?-1:e>n?1:t<r?-1:+(t>r))},r[wt]=e=>{if(!(e instanceof Set))return;let t=[];for(let n of e)t.push(a(n));return t.sort(),t},r[St]=e=>{if(bt(e)&&!Object.hasOwn(e,Ot))return n.has(e)?n.get(e):xt(e,n)});let i={...Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.encode])),...r},a=e=>pt(e,i);return i}function At(e,t){return e===void 0?``:Mt(pt(e,kt(t,!0,new Map)))}async function jt(e,t){if(e===void 0)return``;let n=kt(t,!1,new Map),r=new Set;return n[Tt]=e=>{if(e instanceof File){let t=e.arrayBuffer().then(t=>({data:t,lastModified:e.lastModified,name:e.name,size:e.size,type:e.type}));return r.add(t),t}},n[Et]=e=>{if(e instanceof Promise&&!r.has(e))throw Error(`Promises are not valid remote function arguments`)},Mt(await mt(e,n))}function Mt(e){return te(ee.encode(e)).replaceAll(`=`,``).replaceAll(`+`,`-`).replaceAll(`/`,`_`)}function A(e,t){return e+`/`+t}function Nt(e){let t=e.lastIndexOf(`/`);if(t===-1)throw Error(`Invalid remote key: ${e}`);return{id:e.slice(0,t),payload:e.slice(t+1)}}function Pt(e){return e instanceof l||e instanceof d?e.status:500}function Ft(e){return e instanceof d?e.text:`Internal Error`}var j,M,It,Lt=o.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(o.toString()),Rt=`a:`;Lt?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Rt)},M={current:null},It={current:!1}):(j=new class{#e=t({});get data(){return n(this.#e)}set data(e){s(this.#e,e)}#t=t(null);get form(){return n(this.#t)}set form(e){s(this.#t,e)}#n=t(null);get error(){return n(this.#n)}set error(e){s(this.#n,e)}#r=t({});get params(){return n(this.#r)}set params(e){s(this.#r,e)}#i=t({id:null});get route(){return n(this.#i)}set route(e){s(this.#i,e)}#a=t({});get state(){return n(this.#a)}set state(e){s(this.#a,e)}#o=t(-1);get status(){return n(this.#o)}set status(e){s(this.#o,e)}#s=t(new URL(Rt));get url(){return n(this.#s)}set url(e){s(this.#s,e)}},M=new class{#e=t(null);get current(){return n(this.#e)}set current(e){s(this.#e,e)}},It=new class{#e=t(!1);get current(){return n(this.#e)}set current(e){s(this.#e,e)}},Pe.v=()=>It.current=!0);function zt(e){Object.assign(j,e)}var{onMount:Bt,tick:Vt}=c,Ht=e??(e=>e()),Ut=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=ge(`sveltekit:scroll`)??{},F=ge(`sveltekit:snapshot`)??{},I={url:Ne({}),page:Ne({}),navigating:a(null),updated:Fe()};function Wt(e){P[e]=E()}function Gt(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(g)}async function Kt(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(x||`/`);e&&await e.update()}}var qt,Jt,R,z,Yt,B,V={},Xt={},Zt=[],Qt=[],H=null;function $t(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var en=new Map,tn=new Set,nn=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},rn=!1,an=!1,on=!0,G=!1,K=!1,sn=!1,cn=!1,ln,q,J,Y,un=new Set,dn=new Map,fn=new Map;async function pn(e,t,n){if(globalThis.__sveltekit_nots6r.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_nots6r.data;for(let t in e)V[t]=e[t];for(let e in n)V[e]=n[e];for(let e in r)V[e]=r[e];for(let e in t)Xt[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),qt=he(e),z=document.documentElement,Yt=t,Jt=e.nodes[0],R=e.nodes[1],Jt(),R(),q=history.state?.[S],J=history.state?.[C],q||(q=J=Date.now(),history.replaceState({...history.state,[S]:q,[C]:J},``));let r=P[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Hn(Yt,n)):(await Z({type:`enter`,url:De(B.hash?Jn(new URL(location.href)):location.href),replace_state:!0}),i()),Vn()}function mn(){Zt.length=0,cn=!1}function hn(e){Qt.some(e=>e?.snapshot)&&(F[e]=Qt.map(e=>e?.snapshot?.capture()))}function gn(e){F[e]?.forEach((e,t)=>{Qt[t]?.snapshot?.restore(e)})}function _n(){Wt(q),_e(we,P),hn(J),_e(Ce,F)}async function vn(e,t,n,r){let a,o;t.invalidateAll&&$t(),await Z({type:`goto`,url:De(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{if(t.invalidateAll){cn=!0,a=new Set;for(let[e,t]of dn)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of fn)for(let n of t.keys())o.add(A(e,n))}t.invalidate&&t.invalidate.forEach(zn)}}),t.invalidateAll&&i().then(i).then(()=>{for(let[e,t]of dn)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of fn)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function yn(e){if(e.id!==H?.id){$t();let t={};un.add(t),H={id:e.id,token:t,promise:kn({...e,preload:t}).then(e=>(un.delete(t),e.type===`loaded`&&e.state.error&&$t(),e)),fork:null}}return H.promise}async function bn(e){let t=(await Nn(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function xn(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},zt(e.props.page),ln=new B.root({target:t,props:{...e.props,stores:I,components:Qt},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[q]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}gn(J),an=!0}async function Sn({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(x&&(e.pathname===x||e.pathname===x+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:vt(n).map(e=>e.node.component),page:qn(j)}};s!==void 0&&(l.props.form=s);let u={},d=!j,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==j.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:j.data}),l}async function Cn({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function wn(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:an?ie(r,i.href,t):re(r,t)}}function Tn(e,t,n,r,i,a){if(cn)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Zt.some(t=>t(new URL(e))))return!0;return!1}function En(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Dn(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function On({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:qn(j),constructors:[]}}}async function kn({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return un.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(g)),d.forEach(e=>e?.[1]().catch(g));let f=W.url?e!==X(W.url):!1,p=W.route?i.id!==W.route.id:!1,m=Dn(W.url,n),h=!1,_=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t];return e[1]===a?.loader&&!Tn(h,p,f,m,a.universal?.uses,r)?a:(h=!0,Cn({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:En(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(g);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(a&&un.has(a))return On({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=Pt(t),c;if(t instanceof l)c=t.body;else{if(await I.updated.check())return await Kt(),await L(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await An(e,v,o);return d?Sn({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await In(n,{id:i.id},c,s)}else v.push(void 0);return Sn({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function An(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function jn({status:e,error:t,url:n,route:r}){let i={};try{return Sn({url:n,params:i,branch:[await Cn({loader:Jt,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:En(null)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await vn(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Mn(e){let t=e.href;if(en.has(t))return en.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>wn(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();en.set(t,r),n=await r}catch{en.delete(t);return}return n}async function Nn(e,t){if(e&&!Ie(e,x,B.hash)){let n=await Mn(e);if(!n)return;let r=Pn(n);for(let n of qt){let i=n.exec(r);if(i)return{id:X(e),invalidating:t,route:n,params:m(i),url:e}}}}function Pn(e){return p(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(x.length))||`/`}function X(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Fn({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Kn(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||tn.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:t,popped:n,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=g,block:p=g,event:m}){let h=Y;Y=u;let _=await Nn(t,!1),v=e===`enter`?Kn(W,_,t,e):Fn({url:t,type:e,delta:n?.delta,intent:_,scroll:n?.scroll,event:m});if(!v){p(),Y===u&&(Y=h);return}let ee=q,te=J;f(),G=!0,an&&v.navigation.type!==`enter`&&I.navigating.set(M.current=v.navigation);let y=_&&await kn(_);if(!y){if(Ie(t,x,B.hash))return await L(t,s);y=await In(t,{id:null},await $(new d(404,`Not Found`,`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=_?.url||t,Y!==u){v.reject(Error(`navigation aborted`));return}if(!y)return;if(y.type===`redirect`){if(l<20){await Z({type:e,url:new URL(y.location,t),popped:n,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),v.fulfil(void 0);return}if(y=await jn({status:500,error:await $(Error(`Redirect loop`),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}}),!y)return}else if(y.props.page.status>=400&&await I.updated.check())return await Kt(),await L(t,s);if(mn(),Wt(ee),hn(te),y.props.page.url.pathname!==t.pathname&&(t.pathname=y.props.page.url.pathname),c=n?n.state:c,!n){let e=+!s,n={[S]:q+=e,[C]:J+=e,[Te]:c};(s?history.replaceState:history.pushState).call(history,n,``,t),s||Gt(q,J)}let ne=_&&H?.id===_.id?H.fork:null;H?.fork&&!ne?$t():(H=null,Q={element:void 0,href:void 0}),y.props.page.state=c;let b;if(an){let e=(await Promise.all(Array.from(nn,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{U.delete(e)})}e.push(t),e.forEach(e=>{U.add(e)})}let n=v.navigation.to;W={...y.state,nav:{params:n.params,route:n.route,url:n.url}},y.props.page&&(y.props.page.url=t),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=ne&&await ne;i?b=i.commit():(N=null,ln.$set(y.props),N&&Object.assign(y.props.page,N),zt(y.props.page),b=r?.()),sn=!0}else await xn(y,Yt,!1);let{activeElement:re}=document;if(await b,await i(),await i(),Y!==u){v.reject(Error(`navigation aborted`));return}y.props.page&&N&&Object.assign(y.props.page,N);let ie=null;if(on){let e=n?n.scroll:o?E():null;e?scrollTo(e.x,e.y):(ie=t.hash&&document.getElementById(Yn(t)))?ie.scrollIntoView():scrollTo(0,0)}let ae=document.activeElement!==re&&document.activeElement!==document.body;!a&&!ae&&Gn(t,!ie),on=!0,G=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),U.forEach(e=>e(v.navigation)),e===`popstate`&&gn(J),I.navigating.set(M.current=null)}async function In(e,t,n,r,i){return e.origin===T&&e.pathname===location.pathname&&!rn?await jn({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function Ln(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,w.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],w.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(bn(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=Ae(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=je(r,x,B.hash);if(o||s)return;let c=Me(r),l=a&&X(W.url)===X(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=w.tap;let e=await Nn(a,!1);if(!e)return;yn(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,bn(a))}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=je(e,x,B.hash);if(n||i)continue;let a=Me(e);a.reload||(a.preload_code===w.viewport&&r.observe(e),a.preload_code===w.eager&&bn(t))}}U.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=Pt(e),r=Ft(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Rn(e,t={}){return e=new URL(De(e)),e.origin===T?vn(e,t,0):Promise.reject(Error(`goto: invalid URL`))}function zn(e){if(typeof e==`function`)Zt.push(e);else{let{href:t}=new URL(e,location.href);Zt.push(e=>e.href===t)}}function Bn(e,t){let n={[S]:q,[C]:J,[Ee]:j.url.href,[Te]:t};history.replaceState(n,``,De(e)),j.state=t,ln.$set({page:Ht(()=>qn(j))})}function Vn(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(_n(),!G){let e=Kn(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};tn.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&_n()}),navigator.connection?.saveData||Ln(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=Ae(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=je(n,x,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=Me(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===h(location);if(i||s.reload&&(!u||!l)){Fn({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,Wt(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(Ie(r,x,!1))return;let i=e.target,a=Me(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Wn)if(t.state?.[`sveltekit:history`]){let n=t.state[S];if(Y={},n===q)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[C],s=W.url?h(location)===h(W.url):!1;if(o===J&&(sn||s)){i!==j.state&&(j.state=i),e(a),P[q]=E(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),B.hash&&location.reload())}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[S]:++q,[C]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))Ut.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){W.url=j.url=e,I.page.set(qn(j)),I.page.notify()}}async function Hn(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){rn=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await Nn(l,!1)||{}),d=qt.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Un(r.uses)),Cn({loader:B.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:En(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await Sn({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u)return await L(new URL(t.location,location.href));f=await jn({status:Pt(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await xn(f,e,p))}function Un(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Wn=!1;function Gn(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Yn(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;Wn=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Wn=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Kn(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(g),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function qn(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Jn(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Yn(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{x as C,l as E,ye as S,_ as T,qe as _,V as a,Se as b,M as c,Nt as d,jt as f,st as g,ct as h,dn as i,j as l,ft as m,Rn as n,Bn as o,At as p,fn as r,pn as s,B as t,A as u,Je as v,g as w,xe as x,Le as y};
@@ -1 +0,0 @@
1
- import{s as e,y as t}from"../chunks/DPfXzQnm.js";export{t as load_css,e as start};
@@ -1,2 +0,0 @@
1
- w��*ݪ6���YD��"�?�ɿ@� ���hM
2
- �Gqj���v&�*=g�X��,��߶4�KKt