@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.
- package/README.md +22 -14
- package/bin/diff-review.mjs +192 -21
- package/lib/acp.mjs +86 -10
- package/lib/agent-login.mjs +848 -36
- package/lib/agent-login.test.mjs +538 -0
- package/lib/agents.mjs +0 -39
- package/lib/agents.test.mjs +17 -24
- package/lib/extract-cache.test.mjs +162 -162
- package/lib/git.mjs +25 -9
- package/lib/model-label.mjs +20 -4
- package/lib/model-label.test.mjs +15 -2
- package/lib/prompt.mjs +12 -10
- package/lib/prompt.test.mjs +12 -0
- package/lib/review-meta.mjs +11 -3
- package/lib/review-meta.test.mjs +19 -2
- package/lib/review-prep.mjs +63 -63
- package/lib/validate.mjs +1 -1
- package/lib/wait-output.test.mjs +1 -1
- package/package.json +2 -2
- package/web/build/client/_app/immutable/assets/0.B04dzd8P.css +1 -0
- package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.br +0 -0
- package/web/build/client/_app/immutable/assets/0.B04dzd8P.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css +1 -0
- package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.br +0 -0
- package/web/build/client/_app/immutable/assets/2.CQmxVXnC.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/3.BVJgADrM.css +1 -0
- package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.br +0 -0
- package/web/build/client/_app/immutable/assets/3.BVJgADrM.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css +1 -0
- package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.br +0 -0
- package/web/build/client/_app/immutable/assets/storage.Ztmr3s84.css.gz +0 -0
- package/web/build/client/_app/immutable/chunks/B-2kfLeA.js +1 -0
- package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/B-2kfLeA.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/{DHO7NTh1.js → B4SiKXUO.js} +2 -2
- package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/B4SiKXUO.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/{CXhIC34H.js → DA0YnpGR.js} +3 -3
- package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DA0YnpGR.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/{cYiFfRa3.js → Dv85Hz5p.js} +1 -1
- package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.br +2 -0
- package/web/build/client/_app/immutable/chunks/Dv85Hz5p.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/b-BaDYIc.js +215 -0
- package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/b-BaDYIc.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js +2 -0
- package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.br +0 -0
- package/web/build/client/_app/immutable/entry/app.DPUME9Z_.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/start.hH87UZsD.js +1 -0
- package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.br +0 -0
- package/web/build/client/_app/immutable/entry/start.hH87UZsD.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js +1 -0
- package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/0.BhHA-Ohy.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js +1 -0
- package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.br +2 -0
- package/web/build/client/_app/immutable/nodes/1.jjvGFUxu.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js +12 -0
- package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/2.CJTh6CGA.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js +340 -0
- package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/3.DYAPRc_2.js.gz +0 -0
- package/web/build/client/_app/version.json +1 -1
- package/web/build/client/_app/version.json.br +0 -0
- package/web/build/client/_app/version.json.gz +0 -0
- package/web/build/handler.js +3 -3
- package/web/build/index.js +3 -3
- package/web/build/server/chunks/0-8NUeB9cB.js +11 -0
- package/web/build/server/chunks/{0-D7NSxn1-.js.map → 0-8NUeB9cB.js.map} +1 -1
- package/web/build/server/chunks/1-BApN-ILJ.js +7 -0
- package/web/build/server/chunks/{1-DboYz8Fw.js.map → 1-BApN-ILJ.js.map} +1 -1
- package/web/build/server/chunks/2-Bq7iMeQx.js +7 -0
- package/web/build/server/chunks/2-Bq7iMeQx.js.map +1 -0
- package/web/build/server/chunks/3-W0cqofyE.js +7 -0
- package/web/build/server/chunks/{3-DgJ_LmTL.js.map → 3-W0cqofyE.js.map} +1 -1
- package/web/build/server/chunks/_server.ts-Bu1fdGSB.js +123 -0
- package/web/build/server/chunks/_server.ts-Bu1fdGSB.js.map +1 -0
- package/web/build/server/chunks/{_server.ts-CP5cRLhW.js → _server.ts-BuUNechu.js} +5 -4
- package/web/build/server/chunks/_server.ts-BuUNechu.js.map +1 -0
- package/web/build/server/chunks/{agent-sessions-2XGojSJ_.js → agent-sessions-BArYLTW6.js} +1023 -135
- package/web/build/server/chunks/agent-sessions-BArYLTW6.js.map +1 -0
- package/web/build/server/chunks/{git-review-jZ_JJYfv.js → git-review-BJ_JrFNP.js} +54 -21
- package/web/build/server/chunks/{git-review-jZ_JJYfv.js.map → git-review-BJ_JrFNP.js.map} +1 -1
- package/web/build/server/chunks/{handler-B_8yUXji.js → handler-Df_bJiCq.js} +3 -3
- package/web/build/server/chunks/{handler-B_8yUXji.js.map → handler-Df_bJiCq.js.map} +1 -1
- package/web/build/server/chunks/{hooks.server-rF_eBCff.js → hooks.server-BEl7rVad.js} +4 -3
- package/web/build/server/chunks/{hooks.server-rF_eBCff.js.map → hooks.server-BEl7rVad.js.map} +1 -1
- package/web/build/server/chunks/{index.js-CGw8_Q7V.js → index.js-Bb0CZLZ_.js} +4 -4
- package/web/build/server/chunks/index.js-Bb0CZLZ_.js.map +1 -0
- package/web/build/server/chunks/manifest.js-j442duM7.js +65 -0
- package/web/build/server/chunks/manifest.js-j442duM7.js.map +1 -0
- package/web/build/server/chunks/{remote-1g4ayag-BMpjk8UD.js → remote-1g4ayag-BxKnZQPn.js} +6 -6
- package/web/build/server/chunks/remote-1g4ayag-BxKnZQPn.js.map +1 -0
- package/web/build/server/chunks/{remote-wh6t6j-dYLCg8ks.js → remote-wh6t6j-B-AHrGaN.js} +44 -10
- package/web/build/server/chunks/remote-wh6t6j-B-AHrGaN.js.map +1 -0
- package/web/build/server/chunks/{validate-Da6e71V3.js → validate-CXjTRGnR.js} +34 -17
- package/web/build/server/chunks/validate-CXjTRGnR.js.map +1 -0
- package/web/build/client/_app/immutable/assets/0.BKRG1f36.css +0 -1
- package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.br +0 -0
- package/web/build/client/_app/immutable/assets/0.BKRG1f36.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/2.C4whE4xz.css +0 -1
- package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.br +0 -0
- package/web/build/client/_app/immutable/assets/2.C4whE4xz.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css +0 -1
- package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css.br +0 -0
- package/web/build/client/_app/immutable/assets/3.DB-bJJq2.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/storage.BxR6930R.css +0 -1
- package/web/build/client/_app/immutable/assets/storage.BxR6930R.css.br +0 -0
- package/web/build/client/_app/immutable/assets/storage.BxR6930R.css.gz +0 -0
- package/web/build/client/_app/immutable/chunks/BLMWhW3J.js +0 -1
- package/web/build/client/_app/immutable/chunks/BLMWhW3J.js.br +0 -1
- package/web/build/client/_app/immutable/chunks/BLMWhW3J.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/CXhIC34H.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/CXhIC34H.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/DHO7NTh1.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DHO7NTh1.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/DpxY75GB.js +0 -215
- package/web/build/client/_app/immutable/chunks/DpxY75GB.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DpxY75GB.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/cYiFfRa3.js.br +0 -1
- package/web/build/client/_app/immutable/chunks/cYiFfRa3.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/app.CCv57mvp.js +0 -2
- package/web/build/client/_app/immutable/entry/app.CCv57mvp.js.br +0 -0
- package/web/build/client/_app/immutable/entry/app.CCv57mvp.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/start.B012TSbW.js +0 -1
- package/web/build/client/_app/immutable/entry/start.B012TSbW.js.br +0 -1
- package/web/build/client/_app/immutable/entry/start.B012TSbW.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/0.slrnBioC.js +0 -1
- package/web/build/client/_app/immutable/nodes/0.slrnBioC.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/0.slrnBioC.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js +0 -1
- package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/1.Bs5JdO4l.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js +0 -10
- package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/2.D5ULH3EX.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js +0 -173
- package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/3.hjzQQgyj.js.gz +0 -0
- package/web/build/server/chunks/0-D7NSxn1-.js +0 -11
- package/web/build/server/chunks/1-DboYz8Fw.js +0 -7
- package/web/build/server/chunks/2-B7LX817Q.js +0 -7
- package/web/build/server/chunks/2-B7LX817Q.js.map +0 -1
- package/web/build/server/chunks/3-DgJ_LmTL.js +0 -7
- package/web/build/server/chunks/_server.ts-CP5cRLhW.js.map +0 -1
- package/web/build/server/chunks/agent-sessions-2XGojSJ_.js.map +0 -1
- package/web/build/server/chunks/index.js-CGw8_Q7V.js.map +0 -1
- package/web/build/server/chunks/manifest.js-CImZFS6G.js +0 -58
- package/web/build/server/chunks/manifest.js-CImZFS6G.js.map +0 -1
- package/web/build/server/chunks/remote-1g4ayag-BMpjk8UD.js.map +0 -1
- package/web/build/server/chunks/remote-wh6t6j-dYLCg8ks.js.map +0 -1
- package/web/build/server/chunks/validate-Da6e71V3.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { e as error, g as get_request_store, b as stringify_remote_arg, M as MUTATIVE_METHODS, w as with_request_store, c as create_remote_key, n as noop, H as HttpError, S as SvelteKitError, h as handle_error_and_jsonify } from './index.js-
|
|
2
|
-
import { i as isOutputFilename,
|
|
1
|
+
import { e as error, g as get_request_store, b as stringify_remote_arg, M as MUTATIVE_METHODS, w as with_request_store, c as create_remote_key, n as noop, H as HttpError, S as SvelteKitError, h as handle_error_and_jsonify } from './index.js-Bb0CZLZ_.js';
|
|
2
|
+
import { i as isOutputFilename, l as locateReviewFile, d as decodePayload, a as assertGitRepo, e as ensureReviewDir, c as companionPaths, r as reviewDir, b as branchTips, m as makeOutputFilename, f as loadBranchDiff, t as tryResolveGitRoot, g as git, F as FINDING_RESOLUTION_KINDS, h as FINDING_CLASSES, j as FINDING_SEVERITIES, k as FINDING_KINDS, G as GROUP_KINDS, W as WHY_SOURCES, B as BLOCK_OPS, S as SKIP_REASONS, n as fingerprint, o as listBranches, p as getRemoteUrl, s as showFileLines } from './validate-CXjTRGnR.js';
|
|
3
3
|
import { readFileSync, writeFileSync, existsSync, mkdtempSync, rmSync, mkdirSync, statSync, readdirSync } from 'node:fs';
|
|
4
4
|
import { spawnSync, execFileSync } from 'node:child_process';
|
|
5
5
|
import { tmpdir, platform } from 'node:os';
|
|
@@ -1915,6 +1915,11 @@ function describeGitError(err) {
|
|
|
1915
1915
|
}
|
|
1916
1916
|
return err instanceof Error ? err.message : String(err);
|
|
1917
1917
|
}
|
|
1918
|
+
/** Fallos de validación / repo inválido: se muestran en la UI, no como stack en la terminal. */
|
|
1919
|
+
function isExpectedGitUserError(err) {
|
|
1920
|
+
const message = describeGitError(err);
|
|
1921
|
+
return /Indicá la ruta absoluta/i.test(message) || /no es una ruta/i.test(message) || /No existe la carpeta/i.test(message) || /No es un repositorio git/i.test(message) || /no tiene commits/i.test(message) || /falta HEAD/i.test(message) || /not a git repository/i.test(message) || /ambiguous argument ['"]?HEAD['"]?/i.test(message) || /unknown revision or path not in the working tree/i.test(message);
|
|
1922
|
+
}
|
|
1918
1923
|
function resolveSource(source, repo) {
|
|
1919
1924
|
if (source === "local" || source === "url") return source;
|
|
1920
1925
|
return looksLikeGitUrl(repo) ? "url" : "local";
|
|
@@ -1973,19 +1978,38 @@ function takePendingImport() {
|
|
|
1973
1978
|
return null;
|
|
1974
1979
|
}
|
|
1975
1980
|
}
|
|
1981
|
+
function peekStr(value) {
|
|
1982
|
+
return typeof value === "string" ? value.trim() : "";
|
|
1983
|
+
}
|
|
1984
|
+
/** Lee meta liviana del JSON sin tirar; para enriquecer el botón de output detectado. */
|
|
1985
|
+
function peekReviewMeta(filePath) {
|
|
1986
|
+
try {
|
|
1987
|
+
const payload = decodePayload(readFileSync(filePath, "utf8"));
|
|
1988
|
+
const rec = payload && typeof payload === "object" && !Array.isArray(payload) ? payload : {};
|
|
1989
|
+
const nested = rec.meta && typeof rec.meta === "object" && !Array.isArray(rec.meta) ? rec.meta : {};
|
|
1990
|
+
const sessionRaw = nested.agentSession ?? rec.agentSession;
|
|
1991
|
+
const session = sessionRaw && typeof sessionRaw === "object" && !Array.isArray(sessionRaw) ? sessionRaw : {};
|
|
1992
|
+
const agent = peekStr(nested.agent ?? rec.agent) || void 0;
|
|
1993
|
+
const model = peekStr(nested.model ?? rec.model) || void 0;
|
|
1994
|
+
const generatedAt = peekStr(nested.generatedAt ?? rec.generatedAt) || void 0;
|
|
1995
|
+
const agentId = peekStr(session.agentId) || void 0;
|
|
1996
|
+
return {
|
|
1997
|
+
...agent ? { agent } : {},
|
|
1998
|
+
...model ? { model } : {},
|
|
1999
|
+
...generatedAt ? { generatedAt } : {},
|
|
2000
|
+
...agentId ? { agentId } : {}
|
|
2001
|
+
};
|
|
2002
|
+
} catch {
|
|
2003
|
+
return {};
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
1976
2006
|
/**
|
|
1977
2007
|
* Busca un JSON de review en `.diff-review/` o (formato viejo) en la raíz del repo local.
|
|
1978
2008
|
* Prefiere `preferredName` si existe; si no, el más reciente que matchee el patrón.
|
|
1979
2009
|
*/
|
|
1980
2010
|
function detectReviewOutput(repo, preferredName) {
|
|
1981
|
-
const
|
|
1982
|
-
if (!
|
|
1983
|
-
let root;
|
|
1984
|
-
try {
|
|
1985
|
-
root = assertGitRepo(raw);
|
|
1986
|
-
} catch {
|
|
1987
|
-
return null;
|
|
1988
|
-
}
|
|
2011
|
+
const root = resolveReviewRoot(repo);
|
|
2012
|
+
if (!root) return null;
|
|
1989
2013
|
const preferred = String(preferredName || "").trim();
|
|
1990
2014
|
if (preferred && isOutputFilename(preferred)) {
|
|
1991
2015
|
const preferredPath = locateReviewFile(root, preferred);
|
|
@@ -1993,7 +2017,8 @@ function detectReviewOutput(repo, preferredName) {
|
|
|
1993
2017
|
return {
|
|
1994
2018
|
filename: preferred,
|
|
1995
2019
|
path: preferredPath,
|
|
1996
|
-
mtimeMs: statSync(preferredPath).mtimeMs
|
|
2020
|
+
mtimeMs: statSync(preferredPath).mtimeMs,
|
|
2021
|
+
...peekReviewMeta(preferredPath)
|
|
1997
2022
|
};
|
|
1998
2023
|
} catch {}
|
|
1999
2024
|
}
|
|
@@ -2014,24 +2039,32 @@ function detectReviewOutput(repo, preferredName) {
|
|
|
2014
2039
|
if (!best || st.mtimeMs > best.mtimeMs) best = {
|
|
2015
2040
|
filename: name,
|
|
2016
2041
|
path: full,
|
|
2017
|
-
mtimeMs: st.mtimeMs
|
|
2042
|
+
mtimeMs: st.mtimeMs,
|
|
2043
|
+
...peekReviewMeta(full)
|
|
2018
2044
|
};
|
|
2019
2045
|
} catch {}
|
|
2020
2046
|
}
|
|
2021
2047
|
}
|
|
2022
2048
|
return best;
|
|
2023
2049
|
}
|
|
2024
|
-
/**
|
|
2025
|
-
function
|
|
2050
|
+
/** Raíz de carpeta para leer `.diff-review/` sin exigir `.git` (reload del viewer). */
|
|
2051
|
+
function resolveReviewRoot(repo) {
|
|
2026
2052
|
const raw = String(repo || "").trim();
|
|
2027
|
-
|
|
2028
|
-
if (!raw || !name || !isOutputFilename(name) || looksLikeGitUrl(raw)) return null;
|
|
2029
|
-
let root;
|
|
2053
|
+
if (!raw || looksLikeGitUrl(raw)) return null;
|
|
2030
2054
|
try {
|
|
2031
|
-
|
|
2055
|
+
return assertGitRepo(raw);
|
|
2032
2056
|
} catch {
|
|
2033
|
-
|
|
2057
|
+
const resolved = resolve(raw);
|
|
2058
|
+
if (!existsSync(resolved)) return null;
|
|
2059
|
+
return tryResolveGitRoot(resolved) || resolved;
|
|
2034
2060
|
}
|
|
2061
|
+
}
|
|
2062
|
+
/** Lee y parsea un JSON de review de `.diff-review/` o la raíz del repo (solo nombres válidos). */
|
|
2063
|
+
function readReviewOutput(repo, filename) {
|
|
2064
|
+
const name = basename(String(filename || "").trim());
|
|
2065
|
+
if (!name || !isOutputFilename(name)) return null;
|
|
2066
|
+
const root = resolveReviewRoot(repo);
|
|
2067
|
+
if (!root) return null;
|
|
2035
2068
|
const filePath = locateReviewFile(root, name);
|
|
2036
2069
|
if (!filePath) return null;
|
|
2037
2070
|
try {
|
|
@@ -2170,5 +2203,5 @@ function hydrateReviewPayload(input) {
|
|
|
2170
2203
|
return JSON.parse(JSON.stringify(doc));
|
|
2171
2204
|
}
|
|
2172
2205
|
|
|
2173
|
-
export { readReviewOutput as a, pickReviewJsonFile as b, command as c, describeGitError as d, loadLaunchRepoInfo as e, detectReviewOutput as f, loadFileLines as g, hydrateReviewPayload as h, loadRepoInfo as l, pickLocalFolder as p, query as q, resolveOutputName as r, takePendingImport as t, writeReviewOutput as w };
|
|
2174
|
-
//# sourceMappingURL=git-review-
|
|
2206
|
+
export { readReviewOutput as a, pickReviewJsonFile as b, command as c, describeGitError as d, loadLaunchRepoInfo as e, detectReviewOutput as f, loadFileLines as g, hydrateReviewPayload as h, isExpectedGitUserError as i, loadRepoInfo as l, pickLocalFolder as p, query as q, resolveOutputName as r, takePendingImport as t, writeReviewOutput as w };
|
|
2207
|
+
//# sourceMappingURL=git-review-BJ_JrFNP.js.map
|