@jpkme/diff-review 0.1.16 → 0.1.17

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 (154) hide show
  1. package/README.md +22 -14
  2. package/bin/diff-review.mjs +192 -21
  3. package/lib/acp.mjs +86 -10
  4. package/lib/agent-login.mjs +848 -36
  5. package/lib/agent-login.test.mjs +538 -0
  6. package/lib/agents.mjs +0 -39
  7. package/lib/agents.test.mjs +17 -24
  8. package/lib/extract-cache.test.mjs +162 -162
  9. package/lib/git.mjs +25 -9
  10. package/lib/model-label.mjs +20 -4
  11. package/lib/model-label.test.mjs +15 -2
  12. package/lib/prompt.mjs +12 -10
  13. package/lib/prompt.test.mjs +12 -0
  14. package/lib/review-meta.mjs +11 -3
  15. package/lib/review-meta.test.mjs +19 -2
  16. package/lib/review-prep.mjs +63 -63
  17. package/lib/validate.mjs +1 -1
  18. package/lib/wait-output.test.mjs +1 -1
  19. package/package.json +2 -2
  20. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css +1 -0
  21. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.br +0 -0
  22. package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.gz +0 -0
  23. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css +1 -0
  24. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.br +0 -0
  25. package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.gz +0 -0
  26. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css +1 -0
  27. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.br +0 -0
  28. package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.gz +0 -0
  29. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css +1 -0
  30. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.br +0 -0
  31. package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.gz +0 -0
  32. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js +1 -0
  33. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.br +0 -0
  34. package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.gz +0 -0
  35. package/web/build/client/_app/immutable/chunks/{DHO7NTh1.js → B4SiKXUO.js} +2 -2
  36. package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.br +0 -0
  37. package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.gz +0 -0
  38. package/web/build/client/_app/immutable/chunks/{CXhIC34H.js → DA0YnpGR.js} +3 -3
  39. package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.br +0 -0
  40. package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.gz +0 -0
  41. package/web/build/client/_app/immutable/chunks/{cYiFfRa3.js → Dv85Hz5p.js} +1 -1
  42. package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.br +2 -0
  43. package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.gz +0 -0
  44. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js +215 -0
  45. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.br +0 -0
  46. package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.gz +0 -0
  47. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js +2 -0
  48. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.br +0 -0
  49. package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.gz +0 -0
  50. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js +1 -0
  51. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.br +0 -0
  52. package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.gz +0 -0
  53. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js +1 -0
  54. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.br +0 -0
  55. package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.gz +0 -0
  56. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js +1 -0
  57. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.br +2 -0
  58. package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.gz +0 -0
  59. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js +12 -0
  60. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.br +0 -0
  61. package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.gz +0 -0
  62. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js +340 -0
  63. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.br +0 -0
  64. package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.gz +0 -0
  65. package/web/build/client/_app/version.json +1 -1
  66. package/web/build/client/_app/version.json.br +0 -0
  67. package/web/build/client/_app/version.json.gz +0 -0
  68. package/web/build/handler.js +3 -3
  69. package/web/build/index.js +3 -3
  70. package/web/build/server/chunks/0-8NUeB9cB.js +11 -0
  71. package/web/build/server/chunks/{0-D7NSxn1-.js.map → 0-8NUeB9cB.js.map} +1 -1
  72. package/web/build/server/chunks/1-BApN-ILJ.js +7 -0
  73. package/web/build/server/chunks/{1-DboYz8Fw.js.map → 1-BApN-ILJ.js.map} +1 -1
  74. package/web/build/server/chunks/2-Bq7iMeQx.js +7 -0
  75. package/web/build/server/chunks/2-Bq7iMeQx.js.map +1 -0
  76. package/web/build/server/chunks/3-W0cqofyE.js +7 -0
  77. package/web/build/server/chunks/{3-DgJ_LmTL.js.map → 3-W0cqofyE.js.map} +1 -1
  78. package/web/build/server/chunks/_server.ts-Bu1fdGSB.js +123 -0
  79. package/web/build/server/chunks/_server.ts-Bu1fdGSB.js.map +1 -0
  80. package/web/build/server/chunks/{_server.ts-CP5cRLhW.js → _server.ts-BuUNechu.js} +5 -4
  81. package/web/build/server/chunks/_server.ts-BuUNechu.js.map +1 -0
  82. package/web/build/server/chunks/{agent-sessions-2XGojSJ_.js → agent-sessions-BArYLTW6.js} +1023 -135
  83. package/web/build/server/chunks/agent-sessions-BArYLTW6.js.map +1 -0
  84. package/web/build/server/chunks/{git-review-jZ_JJYfv.js → git-review-BJ_JrFNP.js} +54 -21
  85. package/web/build/server/chunks/{git-review-jZ_JJYfv.js.map → git-review-BJ_JrFNP.js.map} +1 -1
  86. package/web/build/server/chunks/{handler-B_8yUXji.js → handler-Df_bJiCq.js} +3 -3
  87. package/web/build/server/chunks/{handler-B_8yUXji.js.map → handler-Df_bJiCq.js.map} +1 -1
  88. package/web/build/server/chunks/{hooks.server-rF_eBCff.js → hooks.server-BEl7rVad.js} +4 -3
  89. package/web/build/server/chunks/{hooks.server-rF_eBCff.js.map → hooks.server-BEl7rVad.js.map} +1 -1
  90. package/web/build/server/chunks/{index.js-CGw8_Q7V.js → index.js-Bb0CZLZ_.js} +4 -4
  91. package/web/build/server/chunks/index.js-Bb0CZLZ_.js.map +1 -0
  92. package/web/build/server/chunks/manifest.js-j442duM7.js +65 -0
  93. package/web/build/server/chunks/manifest.js-j442duM7.js.map +1 -0
  94. package/web/build/server/chunks/{remote-1g4ayag-BMpjk8UD.js → remote-1g4ayag-BxKnZQPn.js} +6 -6
  95. package/web/build/server/chunks/remote-1g4ayag-BxKnZQPn.js.map +1 -0
  96. package/web/build/server/chunks/{remote-wh6t6j-dYLCg8ks.js → remote-wh6t6j-B-AHrGaN.js} +44 -10
  97. package/web/build/server/chunks/remote-wh6t6j-B-AHrGaN.js.map +1 -0
  98. package/web/build/server/chunks/{validate-Da6e71V3.js → validate-CXjTRGnR.js} +34 -17
  99. package/web/build/server/chunks/validate-CXjTRGnR.js.map +1 -0
  100. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css +0 -1
  101. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.br +0 -0
  102. package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.gz +0 -0
  103. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css +0 -1
  104. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.br +0 -0
  105. package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.gz +0 -0
  106. package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css +0 -1
  107. package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css.br +0 -0
  108. package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css.gz +0 -0
  109. package/web/build/client/_app/immutable/assets/storage.BxR6930R.css +0 -1
  110. package/web/build/client/_app/immutable/assets/storage.BxR6930R.css.br +0 -0
  111. package/web/build/client/_app/immutable/assets/storage.BxR6930R.css.gz +0 -0
  112. package/web/build/client/_app/immutable/chunks/BLMWhW3J.js +0 -1
  113. package/web/build/client/_app/immutable/chunks/BLMWhW3J.js.br +0 -1
  114. package/web/build/client/_app/immutable/chunks/BLMWhW3J.js.gz +0 -0
  115. package/web/build/client/_app/immutable/chunks/CXhIC34H.js.br +0 -0
  116. package/web/build/client/_app/immutable/chunks/CXhIC34H.js.gz +0 -0
  117. package/web/build/client/_app/immutable/chunks/DHO7NTh1.js.br +0 -0
  118. package/web/build/client/_app/immutable/chunks/DHO7NTh1.js.gz +0 -0
  119. package/web/build/client/_app/immutable/chunks/DpxY75GB.js +0 -215
  120. package/web/build/client/_app/immutable/chunks/DpxY75GB.js.br +0 -0
  121. package/web/build/client/_app/immutable/chunks/DpxY75GB.js.gz +0 -0
  122. package/web/build/client/_app/immutable/chunks/cYiFfRa3.js.br +0 -1
  123. package/web/build/client/_app/immutable/chunks/cYiFfRa3.js.gz +0 -0
  124. package/web/build/client/_app/immutable/entry/app.CCv57mvp.js +0 -2
  125. package/web/build/client/_app/immutable/entry/app.CCv57mvp.js.br +0 -0
  126. package/web/build/client/_app/immutable/entry/app.CCv57mvp.js.gz +0 -0
  127. package/web/build/client/_app/immutable/entry/start.B012TSbW.js +0 -1
  128. package/web/build/client/_app/immutable/entry/start.B012TSbW.js.br +0 -1
  129. package/web/build/client/_app/immutable/entry/start.B012TSbW.js.gz +0 -0
  130. package/web/build/client/_app/immutable/nodes/0.slrnBioC.js +0 -1
  131. package/web/build/client/_app/immutable/nodes/0.slrnBioC.js.br +0 -0
  132. package/web/build/client/_app/immutable/nodes/0.slrnBioC.js.gz +0 -0
  133. package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js +0 -1
  134. package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js.br +0 -0
  135. package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js.gz +0 -0
  136. package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js +0 -10
  137. package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js.br +0 -0
  138. package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js.gz +0 -0
  139. package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js +0 -173
  140. package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js.br +0 -0
  141. package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js.gz +0 -0
  142. package/web/build/server/chunks/0-D7NSxn1-.js +0 -11
  143. package/web/build/server/chunks/1-DboYz8Fw.js +0 -7
  144. package/web/build/server/chunks/2-B7LX817Q.js +0 -7
  145. package/web/build/server/chunks/2-B7LX817Q.js.map +0 -1
  146. package/web/build/server/chunks/3-DgJ_LmTL.js +0 -7
  147. package/web/build/server/chunks/_server.ts-CP5cRLhW.js.map +0 -1
  148. package/web/build/server/chunks/agent-sessions-2XGojSJ_.js.map +0 -1
  149. package/web/build/server/chunks/index.js-CGw8_Q7V.js.map +0 -1
  150. package/web/build/server/chunks/manifest.js-CImZFS6G.js +0 -58
  151. package/web/build/server/chunks/manifest.js-CImZFS6G.js.map +0 -1
  152. package/web/build/server/chunks/remote-1g4ayag-BMpjk8UD.js.map +0 -1
  153. package/web/build/server/chunks/remote-wh6t6j-dYLCg8ks.js.map +0 -1
  154. package/web/build/server/chunks/validate-Da6e71V3.js.map +0 -1
@@ -0,0 +1,65 @@
1
+ const manifest = (() => {
2
+ function __memo(fn) {
3
+ let value;
4
+ return () => value ??= (value = fn());
5
+ }
6
+
7
+ return {
8
+ appDir: "_app",
9
+ appPath: "_app",
10
+ assets: new Set([]),
11
+ mimeTypes: {},
12
+ _: {
13
+ client: {start:"_app/immutable/entry/start.hH87UZsD.js",app:"_app/immutable/entry/app.DPUME9Z_.js",imports:["_app/immutable/entry/start.hH87UZsD.js","_app/immutable/chunks/B4SiKXUO.js","_app/immutable/chunks/DA0YnpGR.js","_app/immutable/entry/app.DPUME9Z_.js","_app/immutable/chunks/DA0YnpGR.js","_app/immutable/chunks/B-2kfLeA.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
+ nodes: [
15
+ __memo(() => import('./0-8NUeB9cB.js')),
16
+ __memo(() => import('./1-BApN-ILJ.js')),
17
+ __memo(() => import('./2-Bq7iMeQx.js')),
18
+ __memo(() => import('./3-W0cqofyE.js'))
19
+ ],
20
+ remotes: {
21
+ 'wh6t6j': __memo(() => import('./remote-wh6t6j-B-AHrGaN.js')),
22
+ '1g4ayag': __memo(() => import('./remote-1g4ayag-BxKnZQPn.js'))
23
+ },
24
+ routes: [
25
+ {
26
+ id: "/",
27
+ pattern: /^\/$/,
28
+ params: [],
29
+ page: { layouts: [0,], errors: [1,], leaf: 2 },
30
+ endpoint: null
31
+ },
32
+ {
33
+ id: "/api/agent/[id]/events",
34
+ pattern: /^\/api\/agent\/([^/]+?)\/events\/?$/,
35
+ params: [{"name":"id","optional":false,"rest":false,"chained":false}],
36
+ page: null,
37
+ endpoint: __memo(() => import('./_server.ts-BuUNechu.js'))
38
+ },
39
+ {
40
+ id: "/api/pdf",
41
+ pattern: /^\/api\/pdf\/?$/,
42
+ params: [],
43
+ page: null,
44
+ endpoint: __memo(() => import('./_server.ts-Bu1fdGSB.js'))
45
+ },
46
+ {
47
+ id: "/report/[id]",
48
+ pattern: /^\/report\/([^/]+?)\/?$/,
49
+ params: [{"name":"id","optional":false,"rest":false,"chained":false}],
50
+ page: { layouts: [0,], errors: [1,], leaf: 3 },
51
+ endpoint: null
52
+ }
53
+ ],
54
+ prerendered_routes: new Set([]),
55
+ matchers: async () => {
56
+
57
+ return { };
58
+ },
59
+ server_assets: {}
60
+ }
61
+ }
62
+ })();
63
+
64
+ export { manifest as m };
65
+ //# sourceMappingURL=manifest.js-j442duM7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js-j442duM7.js","sources":["../../../.svelte-kit/output/server/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([]),\n\tmimeTypes: {},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.hH87UZsD.js\",app:\"_app/immutable/entry/app.DPUME9Z_.js\",imports:[\"_app/immutable/entry/start.hH87UZsD.js\",\"_app/immutable/chunks/B4SiKXUO.js\",\"_app/immutable/chunks/DA0YnpGR.js\",\"_app/immutable/entry/app.DPUME9Z_.js\",\"_app/immutable/chunks/DA0YnpGR.js\",\"_app/immutable/chunks/B-2kfLeA.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t'wh6t6j': __memo(() => import('./chunks/remote-wh6t6j.js')),\n\t\t\t'1g4ayag': __memo(() => import('./chunks/remote-1g4ayag.js'))\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/agent/[id]/events\",\n\t\t\t\tpattern: /^\\/api\\/agent\\/([^/]+?)\\/events\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/agent/_id_/events/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/api/pdf\",\n\t\t\t\tpattern: /^\\/api\\/pdf\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/api/pdf/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/report/[id]\",\n\t\t\t\tpattern: /^\\/report\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { _ as __exportAll, i as init_remote_functions, e as error } from './index.js-CGw8_Q7V.js';
2
- import { q as query, c as command, a as readReviewOutput, w as writeReviewOutput$1, p as pickLocalFolder$1, b as pickReviewJsonFile, h as hydrateReviewPayload, d as describeGitError, l as loadRepoInfo, e as loadLaunchRepoInfo, t as takePendingImport, f as detectReviewOutput, r as resolveOutputName, g as loadFileLines } from './git-review-jZ_JJYfv.js';
3
- import { d as decodePayload, m as makeOutputFilename } from './validate-Da6e71V3.js';
1
+ import { _ as __exportAll, i as init_remote_functions, e as error } from './index.js-Bb0CZLZ_.js';
2
+ import { q as query, c as command, a as readReviewOutput, w as writeReviewOutput$1, p as pickLocalFolder$1, b as pickReviewJsonFile, h as hydrateReviewPayload, d as describeGitError, i as isExpectedGitUserError, l as loadRepoInfo, e as loadLaunchRepoInfo, t as takePendingImport, f as detectReviewOutput, r as resolveOutputName, g as loadFileLines } from './git-review-BJ_JrFNP.js';
3
+ import { d as decodePayload, m as makeOutputFilename } from './validate-CXjTRGnR.js';
4
4
  import { basename } from 'node:path';
5
5
  import 'node:fs';
6
6
  import 'node:child_process';
@@ -24,7 +24,7 @@ var git_remote_exports = /* @__PURE__ */ __exportAll({
24
24
  });
25
25
  function fail(err) {
26
26
  const message = describeGitError(err) || "No se pudo hablar con git.";
27
- console.error("[diff-review git]", message, err);
27
+ if (!isExpectedGitUserError(err)) console.error("[diff-review git]", message, err);
28
28
  error(400, message);
29
29
  }
30
30
  var loadRepo = /* @__PURE__ */ query("unchecked", async (input) => {
@@ -39,7 +39,7 @@ var launchContext = /* @__PURE__ */ query(async () => {
39
39
  try {
40
40
  return loadLaunchRepoInfo();
41
41
  } catch (err) {
42
- console.error("[diff-review git] launch context", describeGitError(err), err);
42
+ if (!isExpectedGitUserError(err)) console.error("[diff-review git] launch context", describeGitError(err), err);
43
43
  return null;
44
44
  }
45
45
  });
@@ -141,4 +141,4 @@ for (const [name, fn] of Object.entries(git_remote_exports)) {
141
141
  var _sveltekit_remote_1g4ayag_default = git_remote_exports;
142
142
 
143
143
  export { _sveltekit_remote_1g4ayag_default as default };
144
- //# sourceMappingURL=remote-1g4ayag-BMpjk8UD.js.map
144
+ //# sourceMappingURL=remote-1g4ayag-BxKnZQPn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-1g4ayag-BxKnZQPn.js","sources":["../../../.svelte-kit/output/server/chunks/git.remote.js","../../../.svelte-kit/output/server/chunks/remote-1g4ayag.js"],"sourcesContent":["import { tt as __exportAll } from \"./index-server.js\";\nimport { a as command, n as query } from \"./remote.js\";\nimport { F as makeOutputFilename, f as decodePayload } from \"./validate.js\";\nimport { a as loadFileLines, c as pickLocalFolder$1, d as resolveOutputName, f as takePendingImport, i as isExpectedGitUserError, l as pickReviewJsonFile, n as detectReviewOutput, o as loadLaunchRepoInfo, p as writeReviewOutput$1, r as hydrateReviewPayload, s as loadRepoInfo, t as describeGitError, u as readReviewOutput } from \"./git-review.js\";\nimport { error } from \"@sveltejs/kit\";\nimport { init_remote_functions } from \"@sveltejs/kit/internal\";\nimport { basename } from \"node:path\";\n//#region src/lib/report/git.remote.ts\nvar git_remote_exports = /* @__PURE__ */ __exportAll({\n\tdetectOutput: () => detectOutput,\n\tfileLines: () => fileLines,\n\thydrateFromGit: () => hydrateFromGit,\n\tlaunchContext: () => launchContext,\n\tloadDetectedOutput: () => loadDetectedOutput,\n\tloadRepo: () => loadRepo,\n\toutputName: () => outputName,\n\tpendingImport: () => pendingImport,\n\tpickLocalFolder: () => pickLocalFolder,\n\tpickReviewFile: () => pickReviewFile,\n\twriteReviewOutput: () => writeReviewOutput\n});\nfunction fail(err) {\n\tconst message = describeGitError(err) || \"No se pudo hablar con git.\";\n\tif (!isExpectedGitUserError(err)) console.error(\"[diff-review git]\", message, err);\n\terror(400, message);\n}\nvar loadRepo = /* @__PURE__ */ query(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn loadRepoInfo(input?.source, String(input?.repo || \"\").trim());\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Repo del CWD de lanzamiento, o null si no hay git. */\nvar launchContext = /* @__PURE__ */ query(async () => {\n\ttry {\n\t\treturn loadLaunchRepoInfo();\n\t} catch (err) {\n\t\tif (!isExpectedGitUserError(err)) console.error(\"[diff-review git] launch context\", describeGitError(err), err);\n\t\treturn null;\n\t}\n});\n/** JSON pendiente del CLI (DIFF_REVIEW_IMPORT_FILE); se consume al leer. */\nvar pendingImport = /* @__PURE__ */ query(async () => {\n\ttry {\n\t\treturn takePendingImport();\n\t} catch (err) {\n\t\tconsole.error(\"[diff-review git] pending import\", describeGitError(err), err);\n\t\treturn null;\n\t}\n});\n/** ¿Hay un JSON de review en la raíz del repo local? */\nvar detectOutput = /* @__PURE__ */ query(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn detectReviewOutput(String(input?.repo || \"\").trim(), input?.preferredName);\n\t} catch (err) {\n\t\tconsole.error(\"[diff-review git] detect output\", describeGitError(err), err);\n\t\treturn null;\n\t}\n});\n/** Nombre sugerido con tips cortos (branch/base). */\nvar outputName = /* @__PURE__ */ query(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn resolveOutputName(String(input?.repo || \"\").trim(), String(input?.branch || \"\").trim(), String(input?.base || \"develop\").trim());\n\t} catch (err) {\n\t\tconsole.error(\"[diff-review git] output name\", describeGitError(err), err);\n\t\treturn {\n\t\t\tfilename: makeOutputFilename({}),\n\t\t\tfingerprint: null\n\t\t};\n\t}\n});\n/** Lee un JSON detectado en el repo (sin diálogo). */\nvar loadDetectedOutput = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn readReviewOutput(String(input?.repo || \"\").trim(), String(input?.filename || \"\").trim());\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Guarda un JSON de review en `.diff-review/` (p. ej. drag-and-drop → puntero en localStorage). */\nvar writeReviewOutput = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn writeReviewOutput$1(String(input?.repo || \"\").trim(), String(input?.filename || \"\").trim(), input?.payload);\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\nvar pickLocalFolder = /* @__PURE__ */ command(\"unchecked\", async (_input) => {\n\ttry {\n\t\treturn await pickLocalFolder$1();\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Diálogo nativo de JSON; `directory` = raíz del repo local. */\nvar pickReviewFile = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst picked = await pickReviewJsonFile(input?.directory);\n\t\tif (!picked) return null;\n\t\treturn {\n\t\t\tfilename: basename(picked.path),\n\t\t\tpayload: decodePayload(picked.text)\n\t\t};\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Líneas del archivo en el branch revisado, para expandir el contexto oculto de un diff. */\nvar fileLines = /* @__PURE__ */ query(\"unchecked\", async (input) => loadFileLines({\n\trepo: String(input?.repo || \"\").trim(),\n\tbranch: String(input?.branch || \"\").trim(),\n\tbase: String(input?.base || \"develop\").trim(),\n\tsource: input?.source,\n\tpath: String(input?.path || \"\").trim()\n}));\nvar hydrateFromGit = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn hydrateReviewPayload({\n\t\t\trepo: String(input?.repo || \"\").trim(),\n\t\t\tbranch: String(input?.branch || \"\").trim(),\n\t\t\tbase: String(input?.base || \"develop\").trim(),\n\t\t\tsource: input?.source,\n\t\t\tpayload: input?.payload,\n\t\t\toutputFilename: String(input?.outputFilename || \"\").trim() || void 0\n\t\t});\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\ninit_remote_functions(git_remote_exports, \"src/lib/report/git.remote.ts\", \"1g4ayag\");\nfor (const [name, fn] of Object.entries(git_remote_exports)) {\n\tfn.__.id = \"1g4ayag/\" + name;\n\tfn.__.name = name;\n}\n//#endregion\nexport { launchContext as a, outputName as c, hydrateFromGit as i, pendingImport as l, fileLines as n, loadDetectedOutput as o, git_remote_exports as r, loadRepo as s, detectOutput as t, writeReviewOutput as u };\n","import { r as git_remote_exports } from \"./git.remote.js\";\n//#region \\0sveltekit-remote:1g4ayag\nvar _sveltekit_remote_1g4ayag_default = git_remote_exports;\n//#endregion\nexport { _sveltekit_remote_1g4ayag_default as default };\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { _ as __exportAll, i as init_remote_functions, e as error } from './index.js-CGw8_Q7V.js';
2
- import { q as query, c as command, r as resolveOutputName } from './git-review-jZ_JJYfv.js';
3
- import { l as listAcpAgents, a as agentModels, s as sessionInfo, b as startReview$1, o as openChat$1, c as sendMessage$1, r as respondPermission$1, d as setPermissionTrust$1, e as cancelTurn, f as closeChat$1, g as retryReview$1, h as openAgentLogin$1, i as loginCommand } from './agent-sessions-2XGojSJ_.js';
4
- import './validate-Da6e71V3.js';
1
+ import { _ as __exportAll, i as init_remote_functions, e as error } from './index.js-Bb0CZLZ_.js';
2
+ import { q as query, c as command, r as resolveOutputName } from './git-review-BJ_JrFNP.js';
3
+ import { l as listAcpAgents, a as agentModels, s as sessionInfo, b as startReview$1, o as openChat$1, c as sendMessage$1, r as respondPermission$1, d as setPermissionTrust$1, e as cancelTurn, f as closeChat$1, g as retryReview$1, h as agentAccountStatus, i as openAgentLogin$1, j as openAgentLogout$1 } from './agent-sessions-BArYLTW6.js';
4
+ import './validate-CXjTRGnR.js';
5
5
  import 'node:fs';
6
6
  import 'node:child_process';
7
7
  import 'node:path';
@@ -15,10 +15,12 @@ import '@agentclientprotocol/sdk';
15
15
  var agent_remote_exports = /* @__PURE__ */ __exportAll({
16
16
  acpAgentModels: () => acpAgentModels,
17
17
  acpAgents: () => acpAgents,
18
+ agentAccount: () => agentAccount,
18
19
  agentSession: () => agentSession,
19
20
  cancelAgent: () => cancelAgent,
20
21
  closeChat: () => closeChat,
21
22
  openAgentLogin: () => openAgentLogin,
23
+ openAgentLogout: () => openAgentLogout,
22
24
  openChat: () => openChat,
23
25
  respondPermission: () => respondPermission,
24
26
  retryReview: () => retryReview,
@@ -147,15 +149,47 @@ var retryReview = /* @__PURE__ */ command("unchecked", async (input) => {
147
149
  fail(err);
148
150
  }
149
151
  });
150
- /** Abre una terminal con el login del agente (p. ej. `claude /login`). */
152
+ /** Cuenta activa del agente (gh / claude auth status) para el header. */
153
+ var agentAccount = /* @__PURE__ */ query("unchecked", async (input) => {
154
+ try {
155
+ return agentAccountStatus(String(input?.agentId || "").trim());
156
+ } catch (err) {
157
+ fail(err);
158
+ }
159
+ });
160
+ /** Lanza el login del agente (proceso oculto / OAuth); con `id` de sesión espera exit 0 y retoma. */
151
161
  var openAgentLogin = /* @__PURE__ */ command("unchecked", async (input) => {
152
162
  try {
153
- const agentId = String(input?.agentId || "");
154
- const result = openAgentLogin$1(agentId);
155
- const cmd = loginCommand(agentId);
163
+ const sessionId = String(input?.id || "").trim();
164
+ const agentId = String(input?.agentId || "").trim();
165
+ const host = input?.host != null ? String(input.host) : void 0;
166
+ const result = await openAgentLogin$1({
167
+ sessionId: sessionId || void 0,
168
+ agentId: agentId || void 0,
169
+ host
170
+ });
156
171
  return {
157
172
  display: result.display,
158
- ...cmd ? { hint: `Completá el login y después reintentá la review.` } : {}
173
+ ...result.resumed ? {
174
+ resumed: true,
175
+ hint: "Inicio de sesión ok. Reintentando…"
176
+ } : { hint: "Esperando que completes el inicio de sesión…" }
177
+ };
178
+ } catch (err) {
179
+ fail(err);
180
+ }
181
+ });
182
+ /** Cierra sesión del agente (Copilot también desloguea `gh`) para poder elegir otra cuenta. */
183
+ var openAgentLogout = /* @__PURE__ */ command("unchecked", async (input) => {
184
+ try {
185
+ const result = await openAgentLogout$1({
186
+ sessionId: String(input?.id || "").trim() || void 0,
187
+ agentId: String(input?.agentId || "").trim() || void 0,
188
+ host: input?.host != null ? String(input.host) : void 0
189
+ });
190
+ return {
191
+ ...result,
192
+ hint: result.warnings[0] || "Sesión cerrada. Elegí con qué cuenta iniciar de nuevo."
159
193
  };
160
194
  } catch (err) {
161
195
  fail(err);
@@ -171,4 +205,4 @@ for (const [name, fn] of Object.entries(agent_remote_exports)) {
171
205
  var _sveltekit_remote_wh6t6j_default = agent_remote_exports;
172
206
 
173
207
  export { _sveltekit_remote_wh6t6j_default as default };
174
- //# sourceMappingURL=remote-wh6t6j-dYLCg8ks.js.map
208
+ //# sourceMappingURL=remote-wh6t6j-B-AHrGaN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-wh6t6j-B-AHrGaN.js","sources":["../../../.svelte-kit/output/server/chunks/agent.remote.js","../../../.svelte-kit/output/server/chunks/remote-wh6t6j.js"],"sourcesContent":["import { tt as __exportAll } from \"./index-server.js\";\nimport { a as command, n as query } from \"./remote.js\";\nimport { a as openAgentLogin$1, c as respondPermission$1, d as sessionInfo, f as setPermissionTrust$1, i as listAcpAgents, l as retryReview$1, m as startReview$1, n as cancelTurn, o as openAgentLogout$1, r as closeChat$1, s as openChat$1, t as agentModels, u as sendMessage$1, v as agentAccountStatus } from \"./agent-sessions.js\";\nimport { d as resolveOutputName } from \"./git-review.js\";\nimport { error } from \"@sveltejs/kit\";\nimport { init_remote_functions } from \"@sveltejs/kit/internal\";\n//#region src/lib/report/agent.remote.ts\nvar agent_remote_exports = /* @__PURE__ */ __exportAll({\n\tacpAgentModels: () => acpAgentModels,\n\tacpAgents: () => acpAgents,\n\tagentAccount: () => agentAccount,\n\tagentSession: () => agentSession,\n\tcancelAgent: () => cancelAgent,\n\tcloseChat: () => closeChat,\n\topenAgentLogin: () => openAgentLogin,\n\topenAgentLogout: () => openAgentLogout,\n\topenChat: () => openChat,\n\trespondPermission: () => respondPermission,\n\tretryReview: () => retryReview,\n\tsendMessage: () => sendMessage,\n\tsetPermissionTrust: () => setPermissionTrust,\n\tstartReview: () => startReview\n});\nfunction fail(err) {\n\tconst message = err instanceof Error ? err.message : String(err);\n\tconsole.error(\"[diff-review agent]\", message);\n\terror(400, message);\n}\n/** Agentes instalados que se pueden lanzar desde la web (los que hablan ACP). */\nvar acpAgents = /* @__PURE__ */ query(async () => {\n\ttry {\n\t\treturn listAcpAgents();\n\t} catch (err) {\n\t\tconsole.error(\"[diff-review agent] detect\", err);\n\t\treturn [];\n\t}\n});\n/**\n* Modelos reales del agente (por ACP). La primera consulta tarda unos segundos: abre una sesión de prueba.\n* Si falla, devuelve `error` + lista vacía (la UI mantiene el fallback y puede reintentar con `force`).\n*/\nvar acpAgentModels = /* @__PURE__ */ query(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn await agentModels(String(input?.agentId || \"\"), String(input?.repo || \"\").trim() || process.cwd(), { force: Boolean(input?.force) });\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tconsole.error(\"[diff-review agent] models\", message);\n\t\treturn {\n\t\t\tmodels: [],\n\t\t\tcurrentModel: \"\",\n\t\t\terror: message\n\t\t};\n\t}\n});\nvar agentSession = /* @__PURE__ */ query(\"unchecked\", async (input) => sessionInfo(String(input?.id || \"\")));\nvar startReview = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst repo = String(input?.repo || \"\").trim();\n\t\tconst branch = String(input?.branch || \"\").trim();\n\t\tconst base = String(input?.base || \"develop\").trim();\n\t\tif (!repo || !branch) throw new Error(\"Faltan repo y branch.\");\n\t\tconst { filename } = resolveOutputName(repo, branch, base);\n\t\treturn startReview$1({\n\t\t\trepo,\n\t\t\tbranch,\n\t\t\tbase,\n\t\t\toutputFilename: filename,\n\t\t\tagentId: String(input?.agentId || \"\"),\n\t\t\tmodel: String(input?.model || \"\").trim() || void 0\n\t\t});\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\nvar openChat = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst outputFilename = String(input?.outputFilename || \"\").trim() || resolveOutputName(String(input?.repo || \"\").trim(), String(input?.branch || \"\").trim(), String(input?.base || \"develop\").trim()).filename;\n\t\treturn await openChat$1({\n\t\t\tagentId: String(input?.agentId || \"\"),\n\t\t\tsessionId: String(input?.sessionId || \"\"),\n\t\t\toutputFilename,\n\t\t\trepo: String(input?.repo || \"\").trim(),\n\t\t\tbranch: String(input?.branch || \"\").trim(),\n\t\t\tbase: String(input?.base || \"develop\").trim(),\n\t\t\tmodel: input?.model,\n\t\t\tseed: input?.seed ?? null,\n\t\t\thandoffNote: String(input?.handoffNote || \"\").trim() || void 0,\n\t\t\thandoffChatMarkdown: input?.handoffChatMarkdown != null ? String(input.handoffChatMarkdown) : void 0\n\t\t});\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\nvar sendMessage = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst mode = input?.mode === \"edit\" ? \"edit\" : input?.mode === \"fix\" ? \"fix\" : \"ask\";\n\t\treturn sendMessage$1(String(input?.id || \"\"), String(input?.text || \"\"), mode, {\n\t\t\tmodel: String(input?.model || \"\").trim() || void 0,\n\t\t\thandoffNote: String(input?.handoffNote || \"\").trim() || void 0,\n\t\t\thandoffChatMarkdown: input?.handoffChatMarkdown != null ? String(input.handoffChatMarkdown) : void 0\n\t\t});\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\nvar respondPermission = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst requestIds = Array.isArray(input?.requestIds) ? input.requestIds.map((id) => String(id || \"\")).filter(Boolean) : void 0;\n\t\tconst scope = input?.scope === \"session\" || input?.scope === \"always\" ? input.scope : \"once\";\n\t\treturn respondPermission$1({\n\t\t\tid: String(input?.id || \"\"),\n\t\t\trequestId: input?.requestId != null ? String(input.requestId) : void 0,\n\t\t\trequestIds,\n\t\t\tallow: Boolean(input?.allow),\n\t\t\tallowAll: Boolean(input?.allowAll),\n\t\t\tscope\n\t\t});\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Activa/desactiva “confiar en esta sesión” (bypass de confirmaciones de permiso). */\nvar setPermissionTrust = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn setPermissionTrust$1(String(input?.id || \"\"), Boolean(input?.enabled));\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\nvar cancelAgent = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\tawait cancelTurn(String(input?.id || \"\"));\n});\n/** Cierra la sesión ACP del server (cambio de agente). No toca el reporte ni el triage. */\nvar closeChat = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\tawait closeChat$1(String(input?.id || \"\"));\n});\n/** Reintenta escribir/validar el JSON en la misma sesión de review. */\nvar retryReview = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn retryReview$1(String(input?.id || \"\"));\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Cuenta activa del agente (gh / claude auth status) para el header. */\nvar agentAccount = /* @__PURE__ */ query(\"unchecked\", async (input) => {\n\ttry {\n\t\treturn agentAccountStatus(String(input?.agentId || \"\").trim());\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Lanza el login del agente (proceso oculto / OAuth); con `id` de sesión espera exit 0 y retoma. */\nvar openAgentLogin = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst sessionId = String(input?.id || \"\").trim();\n\t\tconst agentId = String(input?.agentId || \"\").trim();\n\t\tconst host = input?.host != null ? String(input.host) : void 0;\n\t\tconst result = await openAgentLogin$1({\n\t\t\tsessionId: sessionId || void 0,\n\t\t\tagentId: agentId || void 0,\n\t\t\thost\n\t\t});\n\t\treturn {\n\t\t\tdisplay: result.display,\n\t\t\t...result.resumed ? {\n\t\t\t\tresumed: true,\n\t\t\t\thint: \"Inicio de sesión ok. Reintentando…\"\n\t\t\t} : { hint: \"Esperando que completes el inicio de sesión…\" }\n\t\t};\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\n/** Cierra sesión del agente (Copilot también desloguea `gh`) para poder elegir otra cuenta. */\nvar openAgentLogout = /* @__PURE__ */ command(\"unchecked\", async (input) => {\n\ttry {\n\t\tconst result = await openAgentLogout$1({\n\t\t\tsessionId: String(input?.id || \"\").trim() || void 0,\n\t\t\tagentId: String(input?.agentId || \"\").trim() || void 0,\n\t\t\thost: input?.host != null ? String(input.host) : void 0\n\t\t});\n\t\treturn {\n\t\t\t...result,\n\t\t\thint: result.warnings[0] || \"Sesión cerrada. Elegí con qué cuenta iniciar de nuevo.\"\n\t\t};\n\t} catch (err) {\n\t\tfail(err);\n\t}\n});\ninit_remote_functions(agent_remote_exports, \"src/lib/report/agent.remote.ts\", \"wh6t6j\");\nfor (const [name, fn] of Object.entries(agent_remote_exports)) {\n\tfn.__.id = \"wh6t6j/\" + name;\n\tfn.__.name = name;\n}\n//#endregion\nexport { openChat as a, setPermissionTrust as c, cancelAgent as i, agentSession as n, respondPermission as o, agent_remote_exports as r, retryReview as s, acpAgents as t };\n","import { r as agent_remote_exports } from \"./agent.remote.js\";\n//#region \\0sveltekit-remote:wh6t6j\nvar _sveltekit_remote_wh6t6j_default = agent_remote_exports;\n//#endregion\nexport { _sveltekit_remote_wh6t6j_default as default };\n"],"names":[],"mappings":"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"}
@@ -260,12 +260,17 @@ function tryResolveGitRoot(cwd) {
260
260
  return null;
261
261
  }
262
262
  }
263
- function git(repo, args, { maxBuffer = 64 * 1024 * 1024 } = {}) {
263
+ function git(repo, args, { maxBuffer = 64 * 1024 * 1024, quiet = false } = {}) {
264
264
  return execFileSync("git", args, {
265
265
  cwd: repo,
266
266
  encoding: "utf8",
267
267
  maxBuffer,
268
- windowsHide: true
268
+ windowsHide: true,
269
+ ...quiet ? { stdio: [
270
+ "ignore",
271
+ "pipe",
272
+ "ignore"
273
+ ] } : {}
269
274
  });
270
275
  }
271
276
  function resolveRev(repo, ref) {
@@ -326,24 +331,36 @@ function showFileLines(repo, rev, path) {
326
331
  return lines;
327
332
  }
328
333
  function listBranches(repo) {
329
- const names = git(repo, [
330
- "for-each-ref",
331
- "--sort=-committerdate",
332
- "--format=%(refname:short)",
333
- "refs/heads",
334
- "refs/remotes"
335
- ]).split("\n").map((s) => s.trim()).filter(Boolean).map((name) => name.replace(/^origin\//, "")).filter((name) => name !== "HEAD" && !name.endsWith("/HEAD"));
334
+ let raw = "";
335
+ try {
336
+ raw = git(repo, [
337
+ "for-each-ref",
338
+ "--sort=-committerdate",
339
+ "--format=%(refname:short)",
340
+ "refs/heads",
341
+ "refs/remotes"
342
+ ], { quiet: true });
343
+ } catch {
344
+ throw new Error(`No es un repositorio git usable: ${repo}`);
345
+ }
346
+ const names = raw.split("\n").map((s) => s.trim()).filter(Boolean).map((name) => name.replace(/^origin\//, "")).filter((name) => name !== "HEAD" && !name.endsWith("/HEAD"));
336
347
  const unique = [...new Set(names)];
337
- const current = git(repo, [
338
- "rev-parse",
339
- "--abbrev-ref",
340
- "HEAD"
341
- ]).trim();
348
+ let current;
349
+ try {
350
+ current = git(repo, [
351
+ "rev-parse",
352
+ "--abbrev-ref",
353
+ "HEAD"
354
+ ], { quiet: true }).trim();
355
+ } catch {
356
+ throw new Error("El repositorio no tiene commits (falta HEAD).");
357
+ }
342
358
  const bases = unique.filter((n) => n === "develop" || n === "main" || n === "master");
359
+ const defaultBase = bases.includes("develop") ? "develop" : bases.includes("main") ? "main" : bases[0] || "develop";
343
360
  return {
344
361
  branches: unique,
345
362
  current,
346
- defaultBase: bases.includes("develop") ? "develop" : bases.includes("main") ? "main" : bases[0] || "develop"
363
+ defaultBase
347
364
  };
348
365
  }
349
366
  /** URL del remote (origin, o el primero disponible). Vacío si no hay. */
@@ -1067,7 +1084,7 @@ function reviewIssues(payload, knownPaths = []) {
1067
1084
  const meta = payload?.meta && typeof payload.meta === "object" ? payload.meta : {};
1068
1085
  const agentName = typeof meta.agent === "string" ? meta.agent.trim() : "";
1069
1086
  const modelId = typeof meta.model === "string" ? meta.model.trim() : "";
1070
- if (!agentName || agentName.startsWith("<")) errors.push("meta.agent es obligatorio: nombre del producto (Claude Code, Cursor, Codex, …), sin placeholder");
1087
+ if (!agentName || agentName.startsWith("<")) errors.push("meta.agent es obligatorio: nombre del producto (Claude Code, Cursor, Copilot, …), sin placeholder");
1071
1088
  if (!modelId || modelId.startsWith("<")) errors.push("meta.model es obligatorio: id exacto del modelo, sin placeholder");
1072
1089
  const groups = Array.isArray(payload?.groups) ? payload.groups : [];
1073
1090
  const blocks = Array.isArray(payload?.blocks) ? payload.blocks : [];
@@ -1099,4 +1116,4 @@ function reviewIssues(payload, knownPaths = []) {
1099
1116
  }
1100
1117
 
1101
1118
  export { reviewIssues as A, BLOCK_OPS as B, globMatch as C, writeDiffText as D, writeHandoffChat as E, FINDING_RESOLUTION_KINDS as F, GROUP_KINDS as G, OUTPUT_DIR as O, REVIEW_SCHEMA as R, SKIP_REASONS as S, WHY_SOURCES as W, assertGitRepo as a, branchTips as b, companionPaths as c, decodePayload as d, ensureReviewDir as e, loadBranchDiff as f, git as g, FINDING_CLASSES as h, isOutputFilename as i, FINDING_SEVERITIES as j, FINDING_KINDS as k, locateReviewFile as l, makeOutputFilename as m, fingerprint as n, listBranches as o, getRemoteUrl as p, readDiffCache as q, reviewDir as r, showFileLines as s, tryResolveGitRoot as t, extractBranchDiff as u, loadReviewConfig as v, writeDiffCache as w, outputRelPath as x, writeSessionRef as y, validateAgainst as z };
1102
- //# sourceMappingURL=validate-Da6e71V3.js.map
1119
+ //# sourceMappingURL=validate-CXjTRGnR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-CXjTRGnR.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, quiet = false } = {}) {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd: repo,\n\t\tencoding: \"utf8\",\n\t\tmaxBuffer,\n\t\twindowsHide: true,\n\t\t...quiet ? { stdio: [\n\t\t\t\"ignore\",\n\t\t\t\"pipe\",\n\t\t\t\"ignore\"\n\t\t] } : {}\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\tlet raw = \"\";\n\ttry {\n\t\traw = git(repo, [\n\t\t\t\"for-each-ref\",\n\t\t\t\"--sort=-committerdate\",\n\t\t\t\"--format=%(refname:short)\",\n\t\t\t\"refs/heads\",\n\t\t\t\"refs/remotes\"\n\t\t], { quiet: true });\n\t} catch {\n\t\tthrow new Error(`No es un repositorio git usable: ${repo}`);\n\t}\n\tconst names = raw.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\tlet current;\n\ttry {\n\t\tcurrent = git(repo, [\n\t\t\t\"rev-parse\",\n\t\t\t\"--abbrev-ref\",\n\t\t\t\"HEAD\"\n\t\t], { quiet: true }).trim();\n\t} catch {\n\t\tthrow new Error(\"El repositorio no tiene commits (falta HEAD).\");\n\t}\n\tconst bases = unique.filter((n) => n === \"develop\" || n === \"main\" || n === \"master\");\n\tconst defaultBase = bases.includes(\"develop\") ? \"develop\" : bases.includes(\"main\") ? \"main\" : bases[0] || \"develop\";\n\treturn {\n\t\tbranches: unique,\n\t\tcurrent,\n\t\tdefaultBase\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, chat }` 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\t/** Transcript legible al cambiar de agente (se pisa en cada switch). */\n\t\tchat: join(dir, `${stem}.chat.md`)\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/**\n* Guarda (pisa) el transcript legible de handoff junto al JSON.\n* @returns {string} path absoluto del `.chat.md`\n*/\nfunction writeHandoffChat(repoRoot, filename, text) {\n\tensureReviewDir(repoRoot);\n\tconst { chat } = companionPaths(repoRoot, filename);\n\twriteFileSync(chat, String(text ?? \"\"));\n\treturn chat;\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];\nvar FINDING_RESOLUTION_KINDS = [\n\t\"ignored\",\n\t\"fix\",\n\t\"corrected\"\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\tresolution: {\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\trequired: [\"kind\"],\n\t\t\t\t\t\tadditionalProperties: true,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tkind: {\n\t\t\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\t\t\tenum: FINDING_RESOLUTION_KINDS\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdetail: { type: \"string\" }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\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, Copilot, …), 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 { tryResolveGitRoot as A, writeSessionRef as C, git as D, getRemoteUrl as E, makeOutputFilename as F, outputRelPath as I, fingerprint as L, loadReviewConfig as M, OUTPUT_DIR as N, listBranches as O, isOutputFilename as P, writeHandoffChat as S, branchTips as T, locateReviewFile as _, FINDING_SEVERITIES as a, writeDiffCache as b, SKIP_REASONS as c, validateAgainst as d, decodePayload as f, ensureReviewDir as g, companionPaths as h, FINDING_RESOLUTION_KINDS as i, globMatch as j, showFileLines as k, WHY_SOURCES as l, loadBranchDiff as m, FINDING_CLASSES as n, GROUP_KINDS as o, extractBranchDiff as p, FINDING_KINDS as r, REVIEW_SCHEMA as s, BLOCK_OPS as t, reviewIssues as u, readDiffCache as v, assertGitRepo as w, writeDiffText as x, reviewDir as y };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- :root{--bg:#0b0e14;--bg-elev:#11151d;--bg-card:#151a24;--bg-card-hover:#1a2130;--border:#242b3a;--border-soft:#1c2230;--text:#e6e9ef;--text-dim:#9aa4b8;--text-faint:#5f6b82;--accent:#6ea8fe;--accent-soft:#1c2b45;--ok:#7ee2a8;--ok-bg:#0d2a1c;--warn:#e2c67e;--danger:#ff9a9a;--danger-bg:#2a1414;--danger-border:#4a1e1e;--mono:ui-monospace, "JetBrains Mono", "Fira Code", Consolas, "SFMono-Regular", Menlo, monospace;--sans:-apple-system, "Segoe UI", Inter, Roboto, Helvetica, Arial, sans-serif;--btn-primary-bg:#1c2b45;--btn-primary-border:#3a5a8f;--btn-primary-text:#cfe0ff;--kind-feat:#7ee2a8;--kind-fix:#ff9a9a;--kind-refactor:#c9a5ff;--kind-perf:#e2c67e;--kind-test:#6ea8fe;--kind-chore:#9aa4b8;--kind-docs:#7fd6e0;--kind-infra:#f0a868;--sev-high:#ff9a9a;--sev-med:#f08a5a;--sev-low:#c4b86a;--sev-nit:#7f8aa3;--diff-add-bg:#0f2419;--diff-add-fg:#7ee2a8;--diff-del-bg:#2a1418;--diff-del-fg:#ff9a9a;--diff-hunk-bg:#141924;--diff-gutter:#46516a;--diff-mark:#2b3f63;--diff-mark-edge:#6ea8fe;--diff-add-strong:#1f6b3c;--diff-del-strong:#6d2530;--diff-blank-bg:repeating-linear-gradient(135deg, #11151d 0 6px, #151a24 6px 12px);--fix-bg:#0e1a13;--fix-border:#2f6b46;--fix-text:#7ee2a8;--publish-bg:#0e1622;--publish-border:#3a5a8f;--publish-text:#7db8ff;--scrollbar-thumb:#2a3348;--scrollbar-thumb-hover:#3a4660;--selection-bg:#33507a;--header-bg:#0b0e14eb}:root[data-theme=light]{--bg:#fff;--bg-elev:#f6f7f9;--bg-card:#eef0f3;--bg-card-hover:#e4e7ec;--border:#d7dbe2;--border-soft:#e4e7ec;--text:#16181d;--text-dim:#4b5563;--text-faint:#6b7280;--accent:#2f6fe0;--accent-soft:#dce8ff;--ok:#1f9d55;--ok-bg:#e3f8ea;--warn:#a5720a;--danger:#c92a2a;--danger-bg:#fbe4e4;--danger-border:#f3b4b4;--btn-primary-bg:#2f6fe0;--btn-primary-border:#2358b8;--btn-primary-text:#fff;--kind-feat:#1f9d55;--kind-fix:#c92a2a;--kind-refactor:#7c4dd6;--kind-perf:#a5720a;--kind-test:#2f6fe0;--kind-chore:#5b6472;--kind-docs:#0f8fa3;--kind-infra:#c1690f;--sev-high:#c92a2a;--sev-med:#c44d1a;--sev-low:#8b7d2e;--sev-nit:#6b7280;--diff-add-bg:#e6f7ec;--diff-add-fg:#1f9d55;--diff-del-bg:#fbe9e9;--diff-del-fg:#c92a2a;--diff-hunk-bg:#eef1f5;--diff-gutter:#9aa3b2;--diff-mark:#cfe0ff;--diff-mark-edge:#2f6fe0;--diff-add-strong:#a7ebbd;--diff-del-strong:#f9b8b8;--diff-blank-bg:repeating-linear-gradient(135deg, #f6f7f9 0 6px, #eef0f3 6px 12px);--fix-bg:#e6f7ec;--fix-border:#1f9d55;--fix-text:#157a41;--publish-bg:#e8f0fe;--publish-border:#2f6fe0;--publish-text:#1d4fa8;--scrollbar-thumb:#c7cbd4;--scrollbar-thumb-hover:#aab0bb;--selection-bg:#cfe0ff;--header-bg:#ffffffeb}.code .chg{border-radius:2px}.code.del .chg{background:var(--diff-del-strong)}.code.add .chg{background:var(--diff-add-strong)}.hljs-comment,.hljs-quote{color:#6b7689;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-formula{color:#c9a5ff}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#a5d6a7}.hljs-number,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo{color:#f0a868}.hljs-title,.hljs-section,.hljs-title.class_,.hljs-title.function_{color:#7fd6e0}.hljs-attr,.hljs-property,.hljs-symbol,.hljs-bullet,.hljs-link{color:#6ea8fe}.hljs-built_in,.hljs-class,.hljs-params{color:#e6e9ef}.hljs-meta,.hljs-tag{color:#9aa4b8}:root[data-theme=light] .hljs-comment,:root[data-theme=light] .hljs-quote{color:#6b7280}:root[data-theme=light] .hljs-keyword,:root[data-theme=light] .hljs-selector-tag,:root[data-theme=light] .hljs-literal,:root[data-theme=light] .hljs-doctag,:root[data-theme=light] .hljs-formula{color:#7c4dd6}:root[data-theme=light] .hljs-string,:root[data-theme=light] .hljs-regexp,:root[data-theme=light] .hljs-addition,:root[data-theme=light] .hljs-attribute,:root[data-theme=light] .hljs-meta .hljs-string{color:#1f9d55}:root[data-theme=light] .hljs-number,:root[data-theme=light] .hljs-variable,:root[data-theme=light] .hljs-template-variable,:root[data-theme=light] .hljs-type,:root[data-theme=light] .hljs-selector-class,:root[data-theme=light] .hljs-selector-attr,:root[data-theme=light] .hljs-selector-pseudo{color:#b5650f}:root[data-theme=light] .hljs-title,:root[data-theme=light] .hljs-section,:root[data-theme=light] .hljs-title.class_,:root[data-theme=light] .hljs-title.function_{color:#0f8fa3}:root[data-theme=light] .hljs-attr,:root[data-theme=light] .hljs-property,:root[data-theme=light] .hljs-symbol,:root[data-theme=light] .hljs-bullet,:root[data-theme=light] .hljs-link{color:#2f6fe0}:root[data-theme=light] .hljs-built_in,:root[data-theme=light] .hljs-class,:root[data-theme=light] .hljs-params{color:#16181d}:root[data-theme=light] .hljs-meta,:root[data-theme=light] .hljs-tag{color:#5b6472}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.anchor-flash{animation:1.4s ease-out anchor-flash}@keyframes anchor-flash{0%{box-shadow:0 0 0 2px var(--accent)}to{box-shadow:0 0 0 2px #0000}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100%;margin:0;padding:0}body{-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--selection-bg)}html,body,*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);background-clip:padding-box;border:2px solid #0000}::-webkit-scrollbar-corner{background:0 0}.boot.svelte-12qhfyh{color:var(--text-dim);font-family:var(--mono);padding:48px 28px;font-size:13px}.boot.svelte-12qhfyh button:where(.svelte-12qhfyh){background:var(--btn-primary-bg);border:1px solid var(--btn-primary-border);color:var(--btn-primary-text);border-radius:0;margin-top:12px;padding:8px 14px}
@@ -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-wrap:wrap;flex:none;align-items:center;gap:10px;min-width:0;margin-top:auto;padding-top:10px;display:flex}.stage-footer.svelte-18urbyr .trust{flex:0 auto;width:auto;min-width:0;max-width:100%}.footer-spacer.svelte-18urbyr{flex:8px;min-width:8px}.stage-footer.svelte-18urbyr .perm-actions{flex:none}.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}}