@jpkme/diff-review 0.1.10 → 0.1.12

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 (153) hide show
  1. package/README.md +38 -15
  2. package/bin/diff-review.mjs +151 -34
  3. package/lib/acp-policy.mjs +136 -0
  4. package/lib/acp-policy.test.mjs +83 -0
  5. package/lib/acp-shell.mjs +379 -0
  6. package/lib/acp-shell.test.mjs +127 -0
  7. package/lib/acp.mjs +368 -0
  8. package/lib/acp.test.mjs +58 -0
  9. package/lib/agent-login.mjs +105 -0
  10. package/lib/agents.mjs +87 -14
  11. package/lib/agents.test.mjs +4 -6
  12. package/lib/check-report.mjs +29 -11
  13. package/lib/extract-cache.test.mjs +162 -0
  14. package/lib/extract.mjs +197 -1
  15. package/lib/model-label.mjs +263 -0
  16. package/lib/model-label.test.mjs +77 -0
  17. package/lib/models-cache.mjs +75 -0
  18. package/lib/models-cache.test.mjs +50 -0
  19. package/lib/output-name.mjs +8 -0
  20. package/lib/prompt.mjs +168 -22
  21. package/lib/review-dir.mjs +108 -0
  22. package/lib/review-meta.mjs +5 -3
  23. package/lib/review-meta.test.mjs +11 -0
  24. package/lib/review-prep.mjs +63 -0
  25. package/lib/validate.mjs +2 -2
  26. package/lib/wait-output.mjs +46 -23
  27. package/lib/wait-output.test.mjs +24 -1
  28. package/package.json +3 -1
  29. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css +1 -0
  30. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.br +0 -0
  31. package/web/build/client/_app/immutable/assets/2.CKE12GwZ.css.gz +0 -0
  32. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css +1 -0
  33. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.br +0 -0
  34. package/web/build/client/_app/immutable/assets/3.Dx3c_e7d.css.gz +0 -0
  35. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css +1 -0
  36. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.br +0 -0
  37. package/web/build/client/_app/immutable/assets/storage.gDV-BhtT.css.gz +0 -0
  38. package/web/build/client/_app/immutable/chunks/{BBWAo_yW.js → B5ByWcPE.js} +2 -2
  39. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.br +0 -0
  40. package/web/build/client/_app/immutable/chunks/B5ByWcPE.js.gz +0 -0
  41. package/web/build/client/_app/immutable/chunks/CPyWH418.js +1 -0
  42. package/web/build/client/_app/immutable/chunks/CPyWH418.js.br +0 -0
  43. package/web/build/client/_app/immutable/chunks/CPyWH418.js.gz +0 -0
  44. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js +3 -0
  45. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.br +0 -0
  46. package/web/build/client/_app/immutable/chunks/D8WOD_eS.js.gz +0 -0
  47. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js +210 -0
  48. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.br +0 -0
  49. package/web/build/client/_app/immutable/chunks/NwkMsx0h.js.gz +0 -0
  50. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js +1 -0
  51. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.br +0 -0
  52. package/web/build/client/_app/immutable/chunks/lUYXRDtZ.js.gz +0 -0
  53. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js +2 -0
  54. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.br +0 -0
  55. package/web/build/client/_app/immutable/entry/app.BiBohpyO.js.gz +0 -0
  56. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js +1 -0
  57. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.br +0 -0
  58. package/web/build/client/_app/immutable/entry/start.CjWbsiSO.js.gz +0 -0
  59. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js +1 -0
  60. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.br +0 -0
  61. package/web/build/client/_app/immutable/nodes/0.Cak4ehiE.js.gz +0 -0
  62. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js +1 -0
  63. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.br +2 -0
  64. package/web/build/client/_app/immutable/nodes/1.BzPXaJJj.js.gz +0 -0
  65. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js +10 -0
  66. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.br +0 -0
  67. package/web/build/client/_app/immutable/nodes/2.Cp6Ttd_9.js.gz +0 -0
  68. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js +171 -0
  69. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.br +0 -0
  70. package/web/build/client/_app/immutable/nodes/3.DLiDQm__.js.gz +0 -0
  71. package/web/build/client/_app/version.json +1 -1
  72. package/web/build/client/_app/version.json.br +0 -0
  73. package/web/build/client/_app/version.json.gz +0 -0
  74. package/web/build/handler.js +3 -3
  75. package/web/build/index.js +3 -3
  76. package/web/build/server/chunks/{0-SseDy__O.js → 0-BYok4D0n.js} +2 -2
  77. package/web/build/server/chunks/{0-SseDy__O.js.map → 0-BYok4D0n.js.map} +1 -1
  78. package/web/build/server/chunks/1-C7zcB0q0.js +7 -0
  79. package/web/build/server/chunks/1-C7zcB0q0.js.map +1 -0
  80. package/web/build/server/chunks/2-v6ejI_0-.js +7 -0
  81. package/web/build/server/chunks/2-v6ejI_0-.js.map +1 -0
  82. package/web/build/server/chunks/3-DAAmG6VX.js +7 -0
  83. package/web/build/server/chunks/3-DAAmG6VX.js.map +1 -0
  84. package/web/build/server/chunks/_server.ts-qYVrMYPB.js +62 -0
  85. package/web/build/server/chunks/_server.ts-qYVrMYPB.js.map +1 -0
  86. package/web/build/server/chunks/agent-sessions-DSqGavSn.js +2688 -0
  87. package/web/build/server/chunks/agent-sessions-DSqGavSn.js.map +1 -0
  88. package/web/build/server/chunks/{remote-1g4ayag-B67QMR_2.js → git-review-CpO_G8z8.js} +70 -704
  89. package/web/build/server/chunks/git-review-CpO_G8z8.js.map +1 -0
  90. package/web/build/server/chunks/{handler-B5P65tLk.js → handler-Di1wJQuU.js} +3 -3
  91. package/web/build/server/chunks/{handler-B5P65tLk.js.map → handler-Di1wJQuU.js.map} +1 -1
  92. package/web/build/server/chunks/hooks.server-BLOHobEK.js +42 -0
  93. package/web/build/server/chunks/hooks.server-BLOHobEK.js.map +1 -0
  94. package/web/build/server/chunks/{index.js-CL95e0Gl.js → index.js-yLYmrAWy.js} +3 -5
  95. package/web/build/server/chunks/index.js-yLYmrAWy.js.map +1 -0
  96. package/web/build/server/chunks/manifest.js-CXj8IIo3.js +58 -0
  97. package/web/build/server/chunks/manifest.js-CXj8IIo3.js.map +1 -0
  98. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js +144 -0
  99. package/web/build/server/chunks/remote-1g4ayag-BiJeU0Pk.js.map +1 -0
  100. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js +162 -0
  101. package/web/build/server/chunks/remote-wh6t6j-CHanXurm.js.map +1 -0
  102. package/web/build/server/chunks/validate-BsTKyhsq.js +1073 -0
  103. package/web/build/server/chunks/validate-BsTKyhsq.js.map +1 -0
  104. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css +0 -1
  105. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css.br +0 -0
  106. package/web/build/client/_app/immutable/assets/2.CNFDEnjx.css.gz +0 -0
  107. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css +0 -1
  108. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css.br +0 -0
  109. package/web/build/client/_app/immutable/assets/3.PHTPLlZ7.css.gz +0 -0
  110. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css +0 -1
  111. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.br +0 -0
  112. package/web/build/client/_app/immutable/assets/ThemeToggle.DcT79vPK.css.gz +0 -0
  113. package/web/build/client/_app/immutable/chunks/BBWAo_yW.js.br +0 -0
  114. package/web/build/client/_app/immutable/chunks/BBWAo_yW.js.gz +0 -0
  115. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js +0 -3
  116. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.br +0 -0
  117. package/web/build/client/_app/immutable/chunks/Dur-vdUf.js.gz +0 -0
  118. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js +0 -176
  119. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js.br +0 -0
  120. package/web/build/client/_app/immutable/chunks/QdZF3nkf.js.gz +0 -0
  121. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js +0 -1
  122. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.br +0 -0
  123. package/web/build/client/_app/immutable/chunks/tYeNsyIK.js.gz +0 -0
  124. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js +0 -2
  125. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js.br +0 -0
  126. package/web/build/client/_app/immutable/entry/app.Dce6uJU3.js.gz +0 -0
  127. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js +0 -1
  128. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js.br +0 -0
  129. package/web/build/client/_app/immutable/entry/start.DnBSC38l.js.gz +0 -0
  130. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js +0 -1
  131. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.br +0 -1
  132. package/web/build/client/_app/immutable/nodes/0.s5xmjXoS.js.gz +0 -0
  133. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js +0 -1
  134. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js.br +0 -0
  135. package/web/build/client/_app/immutable/nodes/1.5Iv4ssDT.js.gz +0 -0
  136. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js +0 -66
  137. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js.br +0 -0
  138. package/web/build/client/_app/immutable/nodes/2.BomzYVBF.js.gz +0 -0
  139. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js +0 -170
  140. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js.br +0 -0
  141. package/web/build/client/_app/immutable/nodes/3.CeUs4lBX.js.gz +0 -0
  142. package/web/build/server/chunks/1-2OO2bb7H.js +0 -7
  143. package/web/build/server/chunks/1-2OO2bb7H.js.map +0 -1
  144. package/web/build/server/chunks/2-BJvuqKN6.js +0 -7
  145. package/web/build/server/chunks/2-BJvuqKN6.js.map +0 -1
  146. package/web/build/server/chunks/3-ZIl1rHef.js +0 -7
  147. package/web/build/server/chunks/3-ZIl1rHef.js.map +0 -1
  148. package/web/build/server/chunks/hooks.server-DERFlOe1.js +0 -14
  149. package/web/build/server/chunks/hooks.server-DERFlOe1.js.map +0 -1
  150. package/web/build/server/chunks/index.js-CL95e0Gl.js.map +0 -1
  151. package/web/build/server/chunks/manifest.js-uD_a0079.js +0 -50
  152. package/web/build/server/chunks/manifest.js-uD_a0079.js.map +0 -1
  153. package/web/build/server/chunks/remote-1g4ayag-B67QMR_2.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { j as startPendingAgentRun } from './agent-sessions-DSqGavSn.js';
2
+ import './validate-BsTKyhsq.js';
3
+ import 'node:fs';
4
+ import 'node:child_process';
5
+ import 'node:path';
6
+ import 'node:os';
7
+ import 'node:stream';
8
+ import '@agentclientprotocol/sdk';
9
+
10
+ //#region src/hooks.server.ts
11
+ /**
12
+ * Hosts aceptados. La UI escucha en 127.0.0.1 y puede lanzar agentes: un Host ajeno (DNS rebinding: un dominio
13
+ * que resuelve a 127.0.0.1) no debe llegar a la app. Los POST de otro origen ya los frena SvelteKit (CSRF).
14
+ */
15
+ function allowedHost(host) {
16
+ if (!host) return false;
17
+ const name = host.replace(/:\d+$/, "").replace(/^\[|\]$/g, "").toLowerCase();
18
+ if (name === "127.0.0.1" || name === "localhost" || name === "::1") return true;
19
+ const configured = String(process.env.HOST || "").trim().toLowerCase();
20
+ return Boolean(configured) && configured !== "0.0.0.0" && configured !== "::" && name === configured;
21
+ }
22
+ /** Si la CLI eligió un agente, la review arranca con el server (el navegador la sigue por `?agent=<id>`). */
23
+ var init = () => {
24
+ startPendingAgentRun();
25
+ };
26
+ var handle = ({ event, resolve }) => {
27
+ if (!allowedHost(event.request.headers.get("host"))) return new Response("Host no permitido", { status: 403 });
28
+ return resolve(event);
29
+ };
30
+ /** Herramienta local: conviene ver el error real (git, devalue, etc.) y no el 500 genérico. */
31
+ var handleError = ({ error, message }) => {
32
+ console.error("[diff-review]", error);
33
+ if (error instanceof Error && error.message.trim()) return { message: error.message };
34
+ if (error && typeof error === "object" && "message" in error) {
35
+ const detail = String(error.message || "").trim();
36
+ if (detail) return { message: detail };
37
+ }
38
+ return { message: message || "Error interno" };
39
+ };
40
+
41
+ export { handle, handleError, init };
42
+ //# sourceMappingURL=hooks.server-BLOHobEK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.server-BLOHobEK.js","sources":["../../../.svelte-kit/output/server/entries/hooks.server.js"],"sourcesContent":["import { d as startPendingAgentRun } from \"../chunks/agent-sessions.js\";\n//#region src/hooks.server.ts\n/**\n* Hosts aceptados. La UI escucha en 127.0.0.1 y puede lanzar agentes: un Host ajeno (DNS rebinding: un dominio\n* que resuelve a 127.0.0.1) no debe llegar a la app. Los POST de otro origen ya los frena SvelteKit (CSRF).\n*/\nfunction allowedHost(host) {\n\tif (!host) return false;\n\tconst name = host.replace(/:\\d+$/, \"\").replace(/^\\[|\\]$/g, \"\").toLowerCase();\n\tif (name === \"127.0.0.1\" || name === \"localhost\" || name === \"::1\") return true;\n\tconst configured = String(process.env.HOST || \"\").trim().toLowerCase();\n\treturn Boolean(configured) && configured !== \"0.0.0.0\" && configured !== \"::\" && name === configured;\n}\n/** Si la CLI eligió un agente, la review arranca con el server (el navegador la sigue por `?agent=<id>`). */\nvar init = () => {\n\tstartPendingAgentRun();\n};\nvar handle = ({ event, resolve }) => {\n\tif (!allowedHost(event.request.headers.get(\"host\"))) return new Response(\"Host no permitido\", { status: 403 });\n\treturn resolve(event);\n};\n/** Herramienta local: conviene ver el error real (git, devalue, etc.) y no el 500 genérico. */\nvar handleError = ({ error, message }) => {\n\tconsole.error(\"[diff-review]\", error);\n\tif (error instanceof Error && error.message.trim()) return { message: error.message };\n\tif (error && typeof error === \"object\" && \"message\" in error) {\n\t\tconst detail = String(error.message || \"\").trim();\n\t\tif (detail) return { message: detail };\n\t}\n\treturn { message: message || \"Error interno\" };\n};\n//#endregion\nexport { handle, handleError, init };\n"],"names":[],"mappings":";;;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK;AACxB,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAC7E,CAAC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE,OAAO,IAAI;AAChF,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACvE,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU;AACrG;AACA;AACG,IAAC,IAAI,GAAG,MAAM;AACjB,CAAC,oBAAoB,EAAE;AACvB;AACG,IAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AACrC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC/G,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC;AACtB;AACA;AACG,IAAC,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC1C,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC;AACtC,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;AACtF,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;AAC/D,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACnD,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC,CAAC;AACD,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE;AAC/C;;"}
@@ -4732,8 +4732,6 @@ function writable(value, start = noop$1) {
4732
4732
  subscribe
4733
4733
  };
4734
4734
  }
4735
- //#endregion
4736
- //#region node_modules/svelte/src/utils.js
4737
4735
  /**
4738
4736
  * Attributes that are boolean, i.e. they are present or not present.
4739
4737
  */
@@ -7619,7 +7617,7 @@ var options = {
7619
7617
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"es\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"icon\" href=\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><circle cx='8' cy='8' r='7' fill='%236ea8fe'/></svg>\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
7620
7618
  error: error_template_default
7621
7619
  },
7622
- version_hash: "x1s1ti"
7620
+ version_hash: "p94gvk"
7623
7621
  };
7624
7622
  async function get_hooks() {
7625
7623
  let handle;
@@ -7627,7 +7625,7 @@ async function get_hooks() {
7627
7625
  let handleError;
7628
7626
  let handleValidationError;
7629
7627
  let init;
7630
- ({handle, handleFetch, handleError, handleValidationError, init} = await import('./hooks.server-DERFlOe1.js'));
7628
+ ({handle, handleFetch, handleError, handleValidationError, init} = await import('./hooks.server-BLOHobEK.js'));
7631
7629
  let reroute;
7632
7630
  let transport;
7633
7631
  return {
@@ -11781,4 +11779,4 @@ var Server = class {
11781
11779
  };
11782
11780
 
11783
11781
  export { HttpError as H, MUTATIVE_METHODS as M, SvelteKitError as S, __exportAll as _, Server as a, stringify_remote_arg as b, create_remote_key as c, error as e, get_request_store as g, handle_error_and_jsonify as h, init_remote_functions as i, noop as n, splitCookiesString as s, with_request_store as w };
11784
- //# sourceMappingURL=index.js-CL95e0Gl.js.map
11782
+ //# sourceMappingURL=index.js-yLYmrAWy.js.map