@jpkme/diff-review 0.1.1 → 0.1.2
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/package.json +1 -1
- package/web/build/client/_app/immutable/assets/2.Du8E-7-D.css +1 -0
- package/web/build/client/_app/immutable/assets/2.Du8E-7-D.css.br +0 -0
- package/web/build/client/_app/immutable/assets/2.Du8E-7-D.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/3.BDe920_w.css +1 -0
- package/web/build/client/_app/immutable/assets/3.BDe920_w.css.br +0 -0
- package/web/build/client/_app/immutable/assets/3.BDe920_w.css.gz +0 -0
- package/web/build/client/_app/immutable/chunks/{B8kwkjzx.js → DA6AD4pE.js} +18 -18
- package/web/build/client/_app/immutable/chunks/DA6AD4pE.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DA6AD4pE.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/{DPH0TzlE.js → DWVUjZfW.js} +2 -2
- package/web/build/client/_app/immutable/chunks/DWVUjZfW.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DWVUjZfW.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/{app.BpFAZQEa.js → app.DfeyUgCE.js} +2 -2
- package/web/build/client/_app/immutable/entry/app.DfeyUgCE.js.br +0 -0
- package/web/build/client/_app/immutable/entry/app.DfeyUgCE.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/start.CBt8Pu89.js +1 -0
- package/web/build/client/_app/immutable/entry/start.CBt8Pu89.js.br +0 -0
- package/web/build/client/_app/immutable/entry/start.CBt8Pu89.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/{1.Ck1t2bgB.js → 1.BnePkiVL.js} +1 -1
- package/web/build/client/_app/immutable/nodes/1.BnePkiVL.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/1.BnePkiVL.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/2.Dr69zJpD.js +66 -0
- package/web/build/client/_app/immutable/nodes/2.Dr69zJpD.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/2.Dr69zJpD.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/3.BjjzqFKA.js +170 -0
- package/web/build/client/_app/immutable/nodes/3.BjjzqFKA.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/3.BjjzqFKA.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/1-eKskvjnM.js +7 -0
- package/web/build/server/chunks/{1-DPR5lJ66.js.map → 1-eKskvjnM.js.map} +1 -1
- package/web/build/server/chunks/2-WcOxbtb4.js +7 -0
- package/web/build/server/chunks/{2-2ohqeHFq.js.map → 2-WcOxbtb4.js.map} +1 -1
- package/web/build/server/chunks/3-D95XsQMA.js +7 -0
- package/web/build/server/chunks/{3-1oQsPtWT.js.map → 3-D95XsQMA.js.map} +1 -1
- package/web/build/server/chunks/{handler-BZPnFP0Z.js → handler-BtMUV-EL.js} +3 -3
- package/web/build/server/chunks/{handler-BZPnFP0Z.js.map → handler-BtMUV-EL.js.map} +1 -1
- package/web/build/server/chunks/{index.js-K20-bjxk.js → index.js-D3hB-kQu.js} +2 -2
- package/web/build/server/chunks/{index.js-K20-bjxk.js.map → index.js-D3hB-kQu.js.map} +1 -1
- package/web/build/server/chunks/{manifest.js-CzTQksFd.js → manifest.js-BjQCm6Fj.js} +6 -6
- package/web/build/server/chunks/{manifest.js-CzTQksFd.js.map → manifest.js-BjQCm6Fj.js.map} +1 -1
- package/web/build/server/chunks/{remote-1g4ayag-Bzn_9gzV.js → remote-1g4ayag-vByXJn4W.js} +2 -2
- package/web/build/server/chunks/{remote-1g4ayag-Bzn_9gzV.js.map → remote-1g4ayag-vByXJn4W.js.map} +1 -1
- package/web/build/client/_app/immutable/assets/2.CHpfuCyA.css +0 -1
- package/web/build/client/_app/immutable/assets/2.CHpfuCyA.css.br +0 -0
- package/web/build/client/_app/immutable/assets/2.CHpfuCyA.css.gz +0 -0
- package/web/build/client/_app/immutable/assets/3.BiNtcbA-.css +0 -1
- package/web/build/client/_app/immutable/assets/3.BiNtcbA-.css.br +0 -0
- package/web/build/client/_app/immutable/assets/3.BiNtcbA-.css.gz +0 -0
- package/web/build/client/_app/immutable/chunks/B8kwkjzx.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/B8kwkjzx.js.gz +0 -0
- package/web/build/client/_app/immutable/chunks/DPH0TzlE.js.br +0 -0
- package/web/build/client/_app/immutable/chunks/DPH0TzlE.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/app.BpFAZQEa.js.br +0 -0
- package/web/build/client/_app/immutable/entry/app.BpFAZQEa.js.gz +0 -0
- package/web/build/client/_app/immutable/entry/start.D5t1ZNLn.js +0 -1
- package/web/build/client/_app/immutable/entry/start.D5t1ZNLn.js.br +0 -0
- package/web/build/client/_app/immutable/entry/start.D5t1ZNLn.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/1.Ck1t2bgB.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/1.Ck1t2bgB.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/2.C5xnhG4p.js +0 -66
- package/web/build/client/_app/immutable/nodes/2.C5xnhG4p.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/2.C5xnhG4p.js.gz +0 -0
- package/web/build/client/_app/immutable/nodes/3.BQYa_bLg.js +0 -170
- package/web/build/client/_app/immutable/nodes/3.BQYa_bLg.js.br +0 -0
- package/web/build/client/_app/immutable/nodes/3.BQYa_bLg.js.gz +0 -0
- package/web/build/server/chunks/1-DPR5lJ66.js +0 -7
- package/web/build/server/chunks/2-2ohqeHFq.js +0 -7
- package/web/build/server/chunks/3-1oQsPtWT.js +0 -7
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.page.svelte-1uha8ag{flex-direction:column;min-height:100vh;display:flex}.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}.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}.field.svelte-1uha8ag{flex-direction:column;flex:1;gap:4px;min-width:180px;display:flex}.repo-field.svelte-1uha8ag{flex:2;min-width:280px}.field.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--text-faint);font-size:11px}.repo-row.svelte-1uha8ag{gap:6px;display:flex}.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}.command-box.svelte-1uha8ag{background:var(--bg);border:1px solid var(--border);padding:10px 12px;overflow:auto}.command-box.svelte-1uha8ag code:where(.svelte-1uha8ag){font-family:var(--mono);color:var(--text);white-space:nowrap;font-size:12.5px}.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}button.ghost.svelte-1uha8ag{color:var(--text-dim);background:0 0}.skill-block.svelte-1uha8ag{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.skill-block.svelte-1uha8ag h3:where(.svelte-1uha8ag){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:11.5px;font-weight:650}.skill-buttons.svelte-1uha8ag{flex-wrap:wrap;gap:8px;display:flex}.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}.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:20;border:1px solid var(--border);background:var(--bg-card);min-width:140px;padding:4px;position:absolute;top:calc(100% - 2px);right:8px;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}.when.svelte-1uha8ag{color:var(--text-dim);font-size:12px}.report-meta.svelte-1uha8ag{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:12px;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}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.diff-wrap.svelte-13r6alg{background:var(--bg);--ln-w:calc(var(--diff-font-size,11.5px) * 3.1);--sign-w:calc(var(--diff-font-size,11.5px) * 1.05);--divider-w:5px}.collapse-bar.svelte-13r6alg{background:var(--diff-hunk-bg);border-bottom:1px solid var(--border-soft);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:10.5px;display:flex}.link.svelte-13r6alg{color:var(--accent);background:0 0;border:0;padding:0;font-size:10.5px;text-decoration:underline}.gap-bar.svelte-13r6alg{background:var(--diff-hunk-bg);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);align-items:center;gap:10px;padding:3px 10px;display:flex}.gap-actions.svelte-13r6alg{border:1px solid var(--border);flex-shrink:0;display:flex;overflow:hidden}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg){background:var(--bg-card);font-family:var(--mono);font-size:calc(var(--diff-font-size,11.5px) * .87);color:var(--text-dim);border:0;padding:1px 8px;line-height:1.5}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg)+button:where(.svelte-13r6alg){border-left:1px solid var(--border)}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg):hover:not(:disabled){background:var(--accent-soft);color:var(--text)}.gap-actions.svelte-13r6alg button:where(.svelte-13r6alg):disabled{opacity:.4;cursor:not-allowed}.gap-info.svelte-13r6alg{font-family:var(--mono);font-size:calc(var(--diff-font-size,11.5px) * .87);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.empty.svelte-13r6alg{color:var(--text-faint);margin:0;padding:12px;font-size:11.5px}.diff.svelte-13r6alg,.hunk-header.svelte-13r6alg{font-family:var(--mono)}.diff.svelte-13r6alg{max-height:55vh;font-size:var(--diff-font-size,11.5px);overflow:auto}.diff.wrap.svelte-13r6alg{overflow-x:hidden}.diff.wrap.svelte-13r6alg .row:where(.svelte-13r6alg){width:auto;min-width:0}.diff.wrap.svelte-13r6alg .code:where(.svelte-13r6alg){white-space:pre-wrap;overflow-wrap:anywhere}.hunk-header.svelte-13r6alg{background:var(--diff-hunk-bg);border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);font-size:calc(var(--diff-font-size,11.5px) * .913);color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;padding:3px 10px;overflow:hidden}.row.svelte-13r6alg{grid-template-columns:var(--ln-w) var(--ln-w) var(--sign-w) auto;border-left:2px solid #0000;width:max-content;min-width:100%;display:grid}.split-grid.svelte-13r6alg{align-items:stretch;display:grid}.srow.svelte-13r6alg{display:contents}.divider.svelte-13r6alg{background:var(--border-soft);cursor:col-resize;touch-action:none}.divider.svelte-13r6alg:hover,.divider.svelte-13r6alg:active{background:var(--accent)}.split-grid.svelte-13r6alg .code:where(.svelte-13r6alg){white-space:pre-wrap;overflow-wrap:anywhere}.ln.svelte-13r6alg{text-align:right;color:var(--diff-gutter);font-size:calc(var(--diff-font-size,11.5px) * .87);-webkit-user-select:none;user-select:none;font-variant-numeric:tabular-nums;border-left:2px solid #0000;padding-right:6px;overflow:hidden}.row.svelte-13r6alg .ln:where(.svelte-13r6alg){border-left:0}.sign.svelte-13r6alg{text-align:center;-webkit-user-select:none;user-select:none;color:var(--text-faint)}.sign.add.svelte-13r6alg{color:var(--diff-add-fg)}.sign.del.svelte-13r6alg{color:var(--diff-del-fg)}.code.svelte-13r6alg{white-space:pre;padding-right:10px}.row.add.svelte-13r6alg{background:var(--diff-add-bg)}.row.add.svelte-13r6alg .sign:where(.svelte-13r6alg){color:var(--diff-add-fg)}.row.del.svelte-13r6alg{background:var(--diff-del-bg)}.row.del.svelte-13r6alg .sign:where(.svelte-13r6alg){color:var(--diff-del-fg)}.file-icon.svelte-1dshc1f{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.file-icon.svelte-1dshc1f svg{fill:currentColor;width:100%;height:100%}.resize-handle.svelte-ywcz8g{cursor:col-resize;z-index:2;touch-action:none;background:0 0;flex-shrink:0;width:6px;position:relative}.resize-handle.svelte-ywcz8g:after{content:"";background:0 0;width:2px;position:absolute;top:0;bottom:0;left:2px}.resize-handle.svelte-ywcz8g:hover:after,.resize-handle.dragging.svelte-ywcz8g:after{background:var(--accent)}.explore.svelte-1k3qopq{display:contents}.blocker-bar.svelte-1k3qopq{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);margin:0;padding:10px 14px;font-size:13px;font-weight:600}h2.svelte-1k3qopq{letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px;font-size:12px;font-weight:650}.intent.svelte-1k3qopq{border-bottom:1px solid var(--border);padding:0 0 16px}.intent-text.svelte-1k3qopq{color:var(--text);max-width:80ch;margin:0;font-size:14px;line-height:1.6}.note.svelte-1k3qopq{color:var(--text-faint);max-width:80ch;margin:8px 0 0;font-size:11.5px;line-height:1.5}.group.svelte-1k3qopq{flex-direction:column;gap:12px;padding:18px 0 6px;display:flex}.group-sticky.svelte-1k3qopq{z-index:4;background:var(--bg);border-bottom:1px solid var(--border-soft);flex-direction:column;gap:6px;margin:0 -20px;padding:14px 20px 12px;display:flex;position:sticky;top:-14px}.group-head.svelte-1k3qopq{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.group-head.svelte-1k3qopq .number:where(.svelte-1k3qopq){color:var(--text-faint);flex-shrink:0;font-size:12px;font-weight:700}.group-head.svelte-1k3qopq h2:where(.svelte-1k3qopq){color:var(--text);text-transform:none;letter-spacing:normal;margin:0;font-size:15px;font-weight:650;line-height:1.3}.kind-chip.svelte-1k3qopq{border:1px solid var(--border);background:var(--bg-card);flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700}.group-intent.svelte-1k3qopq{color:var(--text-dim);max-width:80ch;margin:0;font-size:12.5px;line-height:1.45}.loose.svelte-1k3qopq .kind-chip:where(.svelte-1k3qopq){color:var(--text-faint)}.file-section.svelte-1k3qopq{border-top:1px solid var(--border)}.file-head.svelte-1k3qopq{border-bottom:1px solid var(--border-soft);align-items:center;display:grid}.file-section.collapsed.svelte-1k3qopq .file-head:where(.svelte-1k3qopq){border-bottom:0}.file-head-main.svelte-1k3qopq{align-items:center;gap:8px;min-width:0;padding:6px 0;display:flex}.file-toggle.svelte-1k3qopq{text-align:left;min-width:0;color:inherit;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:4px 0;display:flex}.file-toggle.svelte-1k3qopq:hover .path:where(.svelte-1k3qopq){color:var(--accent)}.caret.svelte-1k3qopq{width:10px;color:var(--text-faint);flex-shrink:0;font-size:10px}.file-head-gutter.svelte-1k3qopq{flex-shrink:0}.file-head-explain.svelte-1k3qopq{align-items:center;padding:10px 0 10px 14px;display:flex}.path.svelte-1k3qopq{font-family:var(--mono);color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12.5px;overflow:hidden}.change-label.svelte-1k3qopq{color:var(--text-faint);flex:1;font-size:11px}.findings-control.svelte-1k3qopq{color:var(--text);background:0 0;border:0;flex-shrink:0;align-items:center;gap:6px;padding:0;display:flex}.count-badge.svelte-1k3qopq{justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:10.5px;font-weight:700;display:flex}.count-badge.done.svelte-1k3qopq{border:1px solid var(--fix-border);color:var(--ok)}.count-badge.open.svelte-1k3qopq{background:color-mix(in srgb, var(--finding-sev) 22%, transparent);color:var(--finding-sev)}.count-label.svelte-1k3qopq{color:var(--text-faint);font-size:11.5px}.count-label.open.svelte-1k3qopq{color:var(--text-dim)}.arrow.svelte-1k3qopq{color:var(--finding-sev,var(--accent));font-size:14px}.file-grid.svelte-1k3qopq{grid-template-columns:minmax(0,1fr) minmax(260px,320px);display:grid}.file-grid.no-explanations.svelte-1k3qopq{grid-template-columns:minmax(0,1fr)}.diff-col.svelte-1k3qopq{min-width:0}.explain-col.svelte-1k3qopq{border-left:1px solid var(--border-soft);background:var(--bg-elev);flex-direction:column;display:flex;overflow:auto}.explain-row.svelte-1k3qopq{border-bottom:1px solid var(--border-soft);padding:10px 14px}.explain-top.svelte-1k3qopq{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.lines.svelte-1k3qopq{color:var(--text-faint);font-size:10.5px;font-family:var(--mono)}.op.svelte-1k3qopq{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.what.svelte-1k3qopq{color:var(--text);max-width:80ch;margin:0 0 3px;font-size:13px;line-height:1.4}.why.svelte-1k3qopq{color:var(--text-dim);max-width:80ch;margin:0;font-size:11.5px;line-height:1.4}.orphans.svelte-1k3qopq,.skipped.svelte-1k3qopq{border-top:1px solid var(--border-soft);padding-top:12px}.orphan-list.svelte-1k3qopq{flex-direction:column;gap:6px;display:flex}.orphan-row.svelte-1k3qopq{background:var(--bg-elev);border-left:2px solid #0000;align-items:baseline;gap:10px;padding:6px 10px;display:flex}.orphan-row.svelte-1k3qopq .badge:where(.svelte-1k3qopq){flex-shrink:0;font-size:10px;font-weight:700}.orphan-row.svelte-1k3qopq .what:where(.svelte-1k3qopq){flex:1;margin:0;font-size:12.5px}.orphan-row.svelte-1k3qopq .where:where(.svelte-1k3qopq){font-family:var(--mono);color:var(--text-faint);font-size:10.5px}.skipped-list.svelte-1k3qopq{flex-wrap:wrap;gap:6px;display:flex}.skipped-chip.svelte-1k3qopq{font-size:11px;font-family:var(--mono);color:var(--text-faint);border:1px solid var(--border);padding:4px 8px}.prompt-box.svelte-1dm34m1{border:1px solid var(--fix-border);background:var(--fix-bg);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.prompt-box.publish.svelte-1dm34m1{border-color:var(--publish-border);background:var(--publish-bg)}.prompt-head.svelte-1dm34m1{justify-content:space-between;align-items:center;display:flex}.fix-title.svelte-1dm34m1{letter-spacing:.07em;text-transform:uppercase;color:var(--fix-text);margin:0;font-size:12px;font-weight:650}.publish-title.svelte-1dm34m1{letter-spacing:.07em;text-transform:uppercase;color:var(--publish-text);margin:0;font-size:12px;font-weight:650}.close.svelte-1dm34m1{color:var(--text-faint);background:0 0;border:0;padding:0;font-size:12px}.mode-toggle.svelte-1dm34m1{border:1px solid var(--border);width:fit-content;display:flex;overflow:hidden}.mode-toggle.svelte-1dm34m1 button:where(.svelte-1dm34m1){color:var(--text);background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-1dm34m1 button:where(.svelte-1dm34m1)+button:where(.svelte-1dm34m1){border-left:1px solid var(--border)}.mode-toggle.svelte-1dm34m1 button.on:where(.svelte-1dm34m1){background:var(--accent-soft)}textarea.svelte-1dm34m1{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}.command-box.svelte-1dm34m1{background:var(--bg);border:1px solid var(--border);padding:10px 12px;overflow:auto}.command-box.svelte-1dm34m1 code:where(.svelte-1dm34m1){font-family:var(--mono);color:var(--text);white-space:nowrap;font-size:12.5px}.hint.svelte-1dm34m1{color:var(--text-faint);margin:0;font-size:11.5px}.copy.svelte-1dm34m1{background:var(--btn-primary-bg);border:1px solid var(--btn-primary-border);color:var(--btn-primary-text);padding:9px 14px;font-size:13px;font-weight:600}.detail-panel.svelte-1dm34m1{border:1px solid var(--border);background:var(--bg-card);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.detail-head.svelte-1dm34m1{border-bottom:1px solid var(--border-soft);background:var(--bg-elev);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.detail-head-left.svelte-1dm34m1{align-items:center;gap:8px;display:flex}.number.svelte-1dm34m1{color:var(--text);font-size:12px;font-weight:700}.badge.svelte-1dm34m1{font-size:10px;font-weight:700}.file-line.svelte-1dm34m1{min-width:0;font-family:var(--mono);align-items:baseline;gap:8px;display:flex}.file-name.svelte-1dm34m1{color:var(--text);flex-shrink:0;font-size:12px;font-weight:600}.file-dir.svelte-1dm34m1{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.decision-group.svelte-1dm34m1{border:1px solid var(--border);flex-shrink:0;display:flex;overflow:hidden}.decision-group.svelte-1dm34m1 button:where(.svelte-1dm34m1){color:var(--text-dim);background:0 0;border:0;padding:6px 14px;font-size:12px;font-weight:600}.decision-group.svelte-1dm34m1 button:first-child.on:where(.svelte-1dm34m1){background:var(--danger-bg);color:var(--danger)}.decision-group.svelte-1dm34m1 button:nth-child(2).on:where(.svelte-1dm34m1){background:var(--fix-bg);color:var(--ok)}.decision-group.svelte-1dm34m1 button:where(.svelte-1dm34m1)+button:where(.svelte-1dm34m1){border-left:1px solid var(--border)}.decision-group.svelte-1dm34m1 .clear:where(.svelte-1dm34m1){color:var(--text-faint);padding:6px 10px}.detail-grid.svelte-1dm34m1{flex:1;grid-template-columns:minmax(0,1fr) minmax(260px,320px);min-height:0;display:grid}.detail-grid.no-explanations.svelte-1dm34m1{grid-template-columns:minmax(0,1fr)}.diff-col.svelte-1dm34m1{flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.file-path-bar.svelte-1dm34m1{border-bottom:1px solid var(--border-soft);background:var(--bg-elev);flex-shrink:0;align-items:center;gap:8px;min-width:0;padding:8px 14px;display:flex}.file-path-text.svelte-1dm34m1{font-family:var(--mono);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:11px;overflow:hidden}.explain-col.svelte-1dm34m1{border-left:1px solid var(--border-soft);background:var(--bg-elev);flex-direction:column;gap:16px;padding:14px 16px;display:flex;overflow:auto}.explain-counter.svelte-1dm34m1{color:var(--text-dim);border:1px solid var(--border);background:var(--bg-card);align-self:flex-start;padding:3px 8px;font-size:10.5px;font-weight:650}.explain-col.svelte-1dm34m1 h3:where(.svelte-1dm34m1){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:10.5px;font-weight:650}.explain-col.svelte-1dm34m1 .what:where(.svelte-1dm34m1){color:var(--text);margin:0;font-size:13px;line-height:1.45}.explain-col.svelte-1dm34m1 .fix:where(.svelte-1dm34m1){color:var(--text-dim);margin:0;font-size:13px;line-height:1.45}.backdrop.svelte-lfje9j{z-index:9;background:#00000059;position:fixed;inset:0}.drawer.svelte-lfje9j{background:var(--bg-card);border-left:1px solid var(--border);z-index:10;flex-direction:column;width:420px;transition:transform .2s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.open.svelte-lfje9j{transform:translate(0)}.drawer-head.svelte-lfje9j{border-bottom:1px solid var(--border-soft);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding:12px 14px;display:flex}.drawer-title.svelte-lfje9j{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.file-ref.svelte-lfje9j{align-items:baseline;gap:8px;min-width:0;display:flex;overflow:hidden}.name.svelte-lfje9j{color:var(--text);font-size:13px;font-weight:600;font-family:var(--mono);flex-shrink:0}.dir.svelte-lfje9j{color:var(--text-faint);font-size:11px;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.close.svelte-lfje9j{color:var(--text-faint);background:0 0;border:0;flex-shrink:0;padding:0;font-size:14px}.list.svelte-lfje9j{flex-direction:column;display:flex;overflow:auto}.item.svelte-lfje9j{border-bottom:1px solid var(--border-soft)}.item-head.svelte-lfje9j{text-align:left;background:0 0;border:0;border-left:2px solid #0000;align-items:center;gap:8px;width:100%;padding:10px 14px;display:flex}.status.svelte-lfje9j{border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:10px;line-height:1;display:flex}.badge.svelte-lfje9j{flex-shrink:0;font-size:10px;font-weight:700}.what.svelte-lfje9j{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12.5px;overflow:hidden}.chevron.svelte-lfje9j{color:var(--text-faint);flex-shrink:0;font-size:11px}.item-body.svelte-lfje9j{flex-direction:column;gap:14px;padding:0 14px 14px 20px;display:flex}.item-body.svelte-lfje9j h4:where(.svelte-lfje9j){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;font-size:10px;font-weight:650}.item-body.svelte-lfje9j p:where(.svelte-lfje9j){color:var(--text);margin:0;font-size:13px;line-height:1.5}.item-body.svelte-lfje9j p.fix:where(.svelte-lfje9j){color:var(--text-dim)}.decision-group.svelte-lfje9j{border:1px solid var(--border);width:fit-content;display:flex;overflow:hidden}.decision-group.svelte-lfje9j button:where(.svelte-lfje9j){color:var(--text-dim);background:0 0;border:0;padding:7px 14px;font-size:12px;font-weight:600}.decision-group.svelte-lfje9j button:first-child.on:where(.svelte-lfje9j){background:var(--danger-bg);color:var(--danger)}.decision-group.svelte-lfje9j button:nth-child(2).on:where(.svelte-lfje9j){background:var(--fix-bg);color:var(--ok)}.decision-group.svelte-lfje9j button:where(.svelte-lfje9j)+button:where(.svelte-lfje9j){border-left:1px solid var(--border)}.decision-group.svelte-lfje9j .clear:where(.svelte-lfje9j){color:var(--text-faint);padding:7px 10px}.footer.svelte-67e2dl{border-top:1px solid var(--border);background:var(--bg-elev);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-height:33px;padding:6px 16px;display:flex}.right.svelte-67e2dl{align-items:center;gap:12px;display:flex}.reviewed.svelte-67e2dl{color:var(--text-faint);font-size:11px}.fix.svelte-67e2dl,.publish.svelte-67e2dl{border:1px solid;padding:6px 12px;font-size:11.5px;font-weight:600}.fix.svelte-67e2dl{background:var(--fix-bg);border-color:var(--fix-border);color:var(--ok)}.publish.svelte-67e2dl{background:var(--publish-bg);border-color:var(--publish-border);color:var(--publish-text)}.sidebar.svelte-xengl2{border-right:1px solid var(--border);background:var(--bg-elev);flex-direction:column;height:100%;min-height:0;padding:14px 0;display:flex;overflow:hidden}.sidebar.collapsed.svelte-xengl2{border-right:0}.mode-toggle.svelte-xengl2{border:1px solid var(--border);flex-shrink:0;margin:0 14px 12px;display:flex;overflow:hidden}.mode-toggle.svelte-xengl2 button:where(.svelte-xengl2){color:var(--text);background:0 0;border:0;flex:1;justify-content:center;align-items:center;gap:6px;padding:7px 8px;font-size:12px;display:flex}.mode-toggle.svelte-xengl2 button:where(.svelte-xengl2)+button:where(.svelte-xengl2){border-left:1px solid var(--border)}.mode-toggle.svelte-xengl2 button.on:where(.svelte-xengl2){background:var(--accent-soft)}.mode-label.svelte-xengl2{align-items:center;gap:6px;line-height:1;display:inline-flex}.count-badge.svelte-xengl2{font-family:var(--mono);border:1px solid color-mix(in srgb, var(--finding-sev,var(--border)) 45%, transparent);background:color-mix(in srgb, var(--finding-sev,var(--bg-card)) 18%, transparent);color:var(--finding-sev,var(--text-dim));justify-content:center;align-items:center;padding:2px 6px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.panel.svelte-xengl2{padding:0 14px 10px}.explore-panel.svelte-xengl2{flex-direction:column;flex:1;min-height:0;padding:0 0 10px;display:flex;overflow:hidden}.panel-chrome.svelte-xengl2{flex-shrink:0;padding:0 14px}.panel-scroll.svelte-xengl2{flex:1;min-height:0;padding:0 14px;overflow:hidden auto}h3.svelte-xengl2{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px;font-size:11.5px;font-weight:650}.index-tabs.svelte-xengl2{border-bottom:1px solid var(--border-soft);gap:12px;margin-bottom:8px;display:flex}.index-tabs.svelte-xengl2 button:where(.svelte-xengl2){letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 0 6px;font-size:11.5px;font-weight:650}.index-tabs.svelte-xengl2 button.on:where(.svelte-xengl2){color:var(--text);border-bottom-color:var(--accent)}.files-toolbar.svelte-xengl2{justify-content:space-between;align-items:center;gap:6px;margin:-2px 0 8px;display:flex}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2){border:1px solid var(--border);background:var(--bg-card);width:26px;height:26px;color:var(--text-dim);justify-content:center;align-items:center;padding:0;display:inline-flex}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2):hover:not(:disabled){color:var(--text);border-color:var(--text-faint)}.files-toolbar.svelte-xengl2 .tool.on:where(.svelte-xengl2){background:var(--accent-soft);border-color:var(--border);color:var(--text)}.files-toolbar.svelte-xengl2 .tool:where(.svelte-xengl2):disabled{opacity:.35;cursor:default}.files-toolbar.svelte-xengl2 .tool-icon:where(.svelte-xengl2){width:14px;height:14px;display:block}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2){border:1px solid var(--border);display:flex;overflow:hidden}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool:where(.svelte-xengl2){background:0 0;border:0;border-radius:0}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool:where(.svelte-xengl2)+.tool:where(.svelte-xengl2){border-left:1px solid var(--border)}.files-toolbar.svelte-xengl2 .seg:where(.svelte-xengl2) .tool.on:where(.svelte-xengl2){background:var(--accent-soft)}.nav-list.svelte-xengl2{flex-direction:column;gap:2px;display:flex}.tree.svelte-xengl2{flex-direction:column;display:flex}.tree-row.svelte-xengl2{text-align:left;width:100%;color:var(--text);background:0 0;border:0;align-items:center;gap:4px;min-width:0;padding:2px 6px 2px 0;font-size:12px;display:flex;position:relative}.tree-row.svelte-xengl2:hover:not(:disabled){background:var(--bg-card)}.tree-row.dir.svelte-xengl2{color:var(--text-dim)}.tree-row.muted.svelte-xengl2{color:var(--text-faint);cursor:default}.tree-row.skipped.svelte-xengl2 .name:where(.svelte-xengl2){text-decoration:line-through;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.tree-guides.svelte-xengl2{pointer-events:none;width:0;position:absolute;inset:0 auto 0 0}.tree-guide.svelte-xengl2{background:var(--border-soft);opacity:.9;width:1px;position:absolute;top:0;bottom:0}.tree-slot.svelte-xengl2{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.caret.svelte-xengl2{color:var(--text-faint);font-size:10px;line-height:1}.mark.svelte-xengl2{width:9px;font-family:var(--mono);color:var(--text-faint);flex-shrink:0;font-size:9.5px;font-weight:700}.mark.add.svelte-xengl2{color:var(--diff-add-fg)}.mark.del.svelte-xengl2{color:var(--diff-del-fg)}.tree-row.svelte-xengl2 .name:where(.svelte-xengl2){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);flex:1;font-size:11.5px;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2){flex:1;align-items:baseline;gap:6px;min-width:0;display:flex;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2) .name:where(.svelte-xengl2){text-overflow:ellipsis;flex:0 auto;overflow:hidden}.tree-row.svelte-xengl2 .name-line:where(.svelte-xengl2) .dir:where(.svelte-xengl2){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);color:var(--text-faint);flex:1;font-size:10.5px;overflow:hidden}.tree-row.svelte-xengl2 .count:where(.svelte-xengl2),.group-link.svelte-xengl2 .count:where(.svelte-xengl2){color:var(--finding-sev,var(--danger));border:1px solid color-mix(in srgb, var(--finding-sev,var(--danger-border)) 55%, transparent);flex-shrink:0;padding:2px 5px;font-size:9.5px;font-weight:700;line-height:1}.tree-row.svelte-xengl2 .count.done:where(.svelte-xengl2),.group-link.svelte-xengl2 .count.done:where(.svelte-xengl2){color:var(--ok);border-color:var(--border)}.group-link.svelte-xengl2{min-width:0;color:var(--text);flex-direction:column;flex:1;gap:2px;padding:6px 8px 6px 0;font-size:12.5px;text-decoration:none;display:flex}.group-link.svelte-xengl2:hover{background:0 0}.group-item.svelte-xengl2{border-radius:0}.group-item.open.svelte-xengl2>.group-head-row:where(.svelte-xengl2){background:var(--bg-card)}.group-head-row.svelte-xengl2{align-items:flex-start;gap:0;display:flex}.group-head-row.svelte-xengl2:hover{background:var(--bg-card)}.group-caret.svelte-xengl2{width:20px;color:var(--text-faint);cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:8px 0 0;display:inline-flex}.group-caret.svelte-xengl2:hover{color:var(--text)}.group-files.svelte-xengl2{flex-direction:column;padding:0 0 4px 8px;display:flex}.row.svelte-xengl2{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.group-link.svelte-xengl2 .number:where(.svelte-xengl2){color:var(--text-faint);flex-shrink:0;font-size:10px;font-weight:700}.kind-chip.svelte-xengl2{border:1px solid var(--border);background:var(--bg-card);flex-shrink:0;padding:1px 5px;font-size:10px;font-weight:700}.group-link.svelte-xengl2 .title:where(.svelte-xengl2){white-space:normal;overflow-wrap:anywhere;line-height:1.35;display:block}.group-link.svelte-xengl2 .row:where(.svelte-xengl2)>.count:where(.svelte-xengl2){margin-left:auto}.meta.svelte-xengl2{color:var(--text-faint);padding-left:0;font-size:11px}.group-files.svelte-xengl2 .tree-row.file.active:where(.svelte-xengl2){background:var(--accent-soft)}.findings-panel.svelte-xengl2{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.findings-head.svelte-xengl2{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.findings-head.svelte-xengl2 h3:where(.svelte-xengl2){margin:0}.reviewed.svelte-xengl2{color:var(--text-faint);font-size:10.5px}.progress.svelte-xengl2{background:var(--border-soft);flex-shrink:0;height:3px;margin-bottom:10px;overflow:hidden}.progress-bar.svelte-xengl2{background:var(--accent);height:100%}.findings-list.svelte-xengl2{flex-direction:column;flex:1;gap:4px;min-height:0;display:flex;overflow:hidden auto}.finding-row.svelte-xengl2{text-align:left;border:0;border-bottom:1px solid var(--border-soft);background:var(--bg-elev);border-left:2px solid #0000;flex-direction:column;width:100%;min-width:0;padding:8px 10px;display:flex}.finding-row.active.svelte-xengl2{background:var(--accent-soft)}.finding-row.svelte-xengl2 .top:where(.svelte-xengl2){flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 6px;margin-bottom:3px;display:flex}.finding-row.svelte-xengl2 .left:where(.svelte-xengl2){flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0;display:flex}.status.svelte-xengl2{border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:10px;line-height:1;display:flex}.number.svelte-xengl2{color:var(--text-faint);font-size:9.5px;font-weight:650}.badge.svelte-xengl2{font-size:9.5px;font-weight:700}.decision.svelte-xengl2{font-size:9.5px;font-weight:650}.what.svelte-xengl2{color:var(--text);overflow-wrap:anywhere;font-size:12.5px;line-height:1.35;display:block}.file-line.svelte-xengl2{color:var(--text-faint);font-size:10.5px;font-family:var(--mono);overflow-wrap:anywhere;margin-top:3px;display:block}.report-shell.svelte-1ipe5j3{flex-direction:column;flex:1;min-height:0;display:flex}.report.svelte-1ipe5j3{flex:1;min-height:0;display:grid}.content.svelte-1ipe5j3{flex-direction:column;gap:18px;min-height:0;padding:14px 20px 24px;display:flex;overflow:auto}.page.svelte-67dwv3{background:var(--bg);flex-direction:column;height:100vh;min-height:0;display:flex}.chrome.svelte-67dwv3{border-bottom:1px solid var(--border);background:var(--header-bg);flex-shrink:0;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:12px 28px;display:grid}.chrome-left.svelte-67dwv3{justify-self:start;align-items:center;gap:12px;min-width:0;display:flex}.chrome-center.svelte-67dwv3{justify-self:center;align-items:center;gap:10px;display:flex}.chrome-right.svelte-67dwv3{justify-self:end;align-items:center;gap:10px;display:flex}.brand.svelte-67dwv3{color:var(--text);flex-shrink:0;align-items:center;gap:10px;font-size:15px;font-weight:700;text-decoration:none;display:flex}.brand-dot.svelte-67dwv3{background:linear-gradient(135deg,#6ea8fe,#c9a5ff);border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 12px #6ea8fe88}.chrome-divider.svelte-67dwv3{background:var(--border);flex-shrink:0;width:1px;height:18px}.breadcrumb.svelte-67dwv3{font-family:var(--mono);align-items:center;gap:6px;min-width:0;font-size:12.5px;display:flex}.crumb-branch.svelte-67dwv3{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.crumb-sep.svelte-67dwv3{color:var(--text-faint)}.crumb-base.svelte-67dwv3{color:var(--text-faint);white-space:nowrap}.menu-wrap.svelte-67dwv3{flex-shrink:0;position:relative}.menu.svelte-67dwv3{z-index:40;border:1px solid var(--border);background:var(--bg-card);min-width:180px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #0000002e}.download-menu.svelte-67dwv3{min-width:240px;left:auto;right:0}.menu-mode.svelte-67dwv3{border:1px solid var(--border);grid-template-columns:1fr 1fr;gap:0;margin:2px 2px 6px;display:grid}.menu-mode.svelte-67dwv3 button:where(.svelte-67dwv3){color:var(--text-dim);background:0 0;border:0;padding:6px 8px;font-size:11px;font-weight:600}.menu-mode.svelte-67dwv3 button:where(.svelte-67dwv3)+button:where(.svelte-67dwv3){border-left:1px solid var(--border)}.menu-mode.svelte-67dwv3 button.on:where(.svelte-67dwv3){background:var(--accent-soft);color:var(--text)}.menu-mode-hint.svelte-67dwv3{color:var(--text-faint);margin:0 8px 8px;font-size:10.5px;line-height:1.35}.menu-item.svelte-67dwv3{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:flex-start;gap:0;padding:4px 8px;font-size:12px;line-height:1.25;display:flex}.menu-item.svelte-67dwv3:hover{background:var(--accent-soft)}.menu-item.danger.svelte-67dwv3{color:var(--danger)}.menu-item.svelte-67dwv3 .fmt:where(.svelte-67dwv3){font-weight:600;line-height:1.2}.menu-item.svelte-67dwv3 .hint:where(.svelte-67dwv3){color:var(--text-faint);font-size:10.5px;line-height:1.2}.mode-toggle.svelte-67dwv3{border:1px solid var(--border);display:flex;overflow:hidden}.mode-toggle.svelte-67dwv3 button:where(.svelte-67dwv3){white-space:nowrap;color:var(--text);background:0 0;border:0;padding:6px 12px;font-size:12px}.mode-toggle.svelte-67dwv3 button:where(.svelte-67dwv3)+button:where(.svelte-67dwv3){border-left:1px solid var(--border)}.mode-toggle.svelte-67dwv3 button.on:where(.svelte-67dwv3){background:var(--accent-soft)}.zoom.svelte-67dwv3{align-items:center;gap:4px;display:flex}.icon-btn.svelte-67dwv3{background:var(--bg-card);border:1px solid var(--border);width:26px;height:26px;color:var(--text-dim);justify-content:center;align-items:center;padding:0;font-size:13px;display:flex}.icon-btn.svelte-67dwv3:hover{border-color:var(--accent);color:var(--text)}.icon-btn.on.svelte-67dwv3{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.icon-btn.kebab.svelte-67dwv3{background:0 0;border-color:#0000;width:24px;height:24px}.icon-btn.kebab.svelte-67dwv3:hover{border-color:var(--border);background:var(--bg-card)}.icon-btn.panel.svelte-67dwv3{font-size:15px}.icon-btn.svelte-67dwv3:disabled{opacity:.4;cursor:not-allowed}.zoom-label.svelte-67dwv3{font-family:var(--mono);color:var(--text-faint);text-align:center;width:30px;font-size:10.5px}.ghost.svelte-67dwv3{background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:7px 12px;font-size:12.5px}.download-btn.svelte-67dwv3{align-items:center;gap:6px;display:inline-flex}.download-btn.svelte-67dwv3 .caret:where(.svelte-67dwv3){opacity:.7}.hint.svelte-67dwv3{color:var(--text-faint);padding:40px 28px;font-size:13px}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,v as t}from"../chunks/DPH0TzlE.js";export{t as load_css,e as start};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import{A as e,B as t,D as n,E as r,G as i,H as a,I as o,K as s,O as c,S as l,U as u,V as d,W as f,Y as p,Z as m,a as h,at as g,b as _,c as v,et as y,f as b,it as x,k as S,l as C,n as ee,o as w,s as T,tt as te,u as ne,v as E,w as D,x as O}from"../chunks/Dur-vdUf.js";import{b as re,n as ie}from"../chunks/DPH0TzlE.js";import{D as ae,E as oe,_ as se,a as ce,b as le,c as ue,d as de,f as fe,g as pe,h as me,m as he,n as ge,p as _e,r as ve,s as ye,t as be,w as xe,x as Se,y as Ce}from"../chunks/B8kwkjzx.js";import"../chunks/tYeNsyIK.js";function k(e){let t=String(e||``).replace(/\\/g,`/`);t.includes(`/`)||(t=`**/${t}`);let n=``;for(let e=0;e<t.length;e++){let r=t[e];r===`*`&&t[e+1]===`*`?t[e+2]===`/`?(n+=`(?:.*/)?`,e+=2):(n+=`.*`,e+=1):r===`*`?n+=`[^/]*`:r===`?`?n+=`[^/]`:`+()[]{}|.^$`.includes(r)?n+=`\\${r}`:n+=r}return RegExp(`^${n}$`)}function we(e){let t=e.files??[];if(!t.length)return[];let n=new Set((e.blocks??[]).map(e=>e.file)),r=(e.skipped??[]).map(e=>k(e.file));return t.map(e=>e.path).filter(e=>!n.has(e)&&!r.some(t=>t.test(e))).sort((e,t)=>e.localeCompare(t))}var Te={intent:`Habilita el flujo DEBIN de vendedor mediante POST de pre-órdenes y diferencia comprador (PAGO_DEBIN) de vendedor (GENERAR_DEBIN) usando rol en consultas. Reorganiza DTOs Shared/Internal, agrega retry con Polly para el cliente HTTP de Bantotal y expone el endpoint de pre-órdenes con MediatR.`,groups:[{id:`g1`,kind:`feat`,title:`vendedor: flujo PostPreOrden end-to-end`,intent:`Nuevo endpoint que recibe la pre-orden del vendedor y la despacha vía MediatR hacia aprobaciones.`},{id:`g2`,kind:`feat`,title:`rol: distingue operaciones comprador/vendedor`,intent:`GetTransactionType ahora resuelve el tipo según el rol para no mezclar PAGO_DEBIN con GENERAR_DEBIN.`},{id:`g3`,kind:`infra`,title:`bantotal: retry con Polly para HttpClient`,intent:`Agrega política de reintentos con backoff para llamadas transitorias, evitando reintentar POST no idempotentes.`},{id:`g4`,kind:`chore`,title:`release: configuración por rol y limpieza de constantes`,intent:`Ajusta config y remueve una constante de moneda duplicada.`}],blocks:[{id:`b1`,group:`g1`,file:`Core/Controllers/V1/PreOrdenesController.cs`,lines:`L1-33`,side:`new`,start:1,end:33,op:`add`,what:`Nuevo controller POST que envía PostPreOrdenRequest via MediatR y retorna 200.`,why:`Expone el endpoint api/v1.0/pre-ordenes para el flujo vendedor hacia aprobaciones.`,source:`code`},{id:`b2`,group:`g2`,file:`Core/Application/Validators/GetOrdenRequestValidator.cs`,lines:`L17-18`,side:`new`,start:17,end:18,op:`mod`,what:`RuleFor Rol con MustBeValidRole y RolesConstants.RolesValidos.`,why:`Evitar consultas con rol inválido que rompen GetTransactionType.`,source:`code`},{id:`b3`,group:`g3`,file:`Core/Infra/PollyPolicyBuilder.cs`,lines:`L18-25`,side:`new`,start:18,end:25,op:`mod`,what:`GetPolicy corta a NoOp si el request es POST.`,why:`Evita reintentar operaciones no idempotentes contra Bantotal.`,source:`code`},{id:`b4`,group:`g4`,file:`Core/Constants/MonedasConstants.cs`,lines:`L20-27`,side:`old`,start:20,end:27,op:`del`,what:`Borra _divisaBantotal, mapeo duplicado de _bantotalDivisa.`,why:`Las dos constantes mapeaban el mismo código de moneda.`,source:`code`}],findings:[{id:`f1`,class:`risk`,severity:`high`,blocking:!0,kind:`bug`,file:`Core/Application/Validators/GetOrdenRequestValidator.cs`,line:17,block:`b2`,what:`MustBeValidRole no cubre "ADMIN", usado en 3 callers del área de soporte.`,fix:`Agregar "ADMIN" a RolesConstants.RolesValidos o documentar que ya no se soporta.`},{id:`f2`,class:`risk`,severity:`high`,blocking:!0,kind:`race`,file:`Core/Controllers/V1/PreOrdenesController.cs`,line:28,block:`b1`,what:`Dos POST concurrentes de la misma orden no se deduplican: pueden crear dos registros.`,fix:`Índice único por IdDebin+tipo o lock/upsert antes de persistir.`},{id:`f3`,class:`quality`,severity:`med`,blocking:!1,kind:`perf`,file:`Core/Infra/PollyPolicyBuilder.cs`,line:20,block:`b3`,what:`El chequeo de POST se hace antes de resolver la policy real; también aplica NoOp a PUT/PATCH que sí son idempotentes.`,fix:`Ampliar la condición a POST estrictamente, no a todo lo no-GET.`},{id:`f4`,class:`quality`,severity:`low`,blocking:!1,kind:`maintainability`,file:`Core/Constants/MonedasConstants.cs`,line:20,block:`b4`,what:`Se borra _divisaBantotal pero queda un comentario que todavía lo referencia.`,fix:`Actualizar el comentario de la clase.`},{id:`f5`,class:`risk`,severity:`med`,blocking:!1,kind:`missing-test`,file:`Core/Controllers/V1/PreOrdenesController.cs`,line:null,block:``,what:`No hay test que cubra el POST con IdDebin repetido.`,fix:`Agregar test de integración para el caso de duplicado.`},{id:`f6`,class:`quality`,severity:`nit`,blocking:!1,kind:`docs`,file:`Core/Application/Validators/GetOrdenRequestValidator.cs`,line:null,block:``,what:`El validador no documenta qué roles son válidos en el summary.`,fix:`Sumar un comentario con la lista de roles esperados.`}],skipped:[{file:`Core/MsObeAprobacionDebin.Application.csproj`,reason:`generated`},{file:`package-lock.json`,reason:`lockfile`}],files:[{path:`Core/Controllers/V1/PreOrdenesController.cs`,changeType:`added`,group:`g1`,diff:`@@ -0,0 +1,33 @@
|
|
2
|
-
+using MediatR;
|
|
3
|
-
+using Microsoft.AspNetCore.Http;
|
|
4
|
-
+using Microsoft.AspNetCore.Mvc;
|
|
5
|
-
+using MsObeAprobacionDebin.Application.Dtos.PostPreOrden.Input;
|
|
6
|
-
+using MsObeAprobacionDebin.Application.Dtos.PostPreOrden.Output;
|
|
7
|
-
+using MsObeAprobacionDebin.Application.Features.Vendedor.Commands;
|
|
8
|
-
+using MsObeAprobacionDebin.Controllers.Base;
|
|
9
|
-
+
|
|
10
|
-
+namespace MsObeAprobacionDebin.Controllers.V1;
|
|
11
|
-
+
|
|
12
|
-
+[ApiController]
|
|
13
|
-
+public class PreOrdenesController : BaseController
|
|
14
|
-
+{
|
|
15
|
-
+ public PreOrdenesController(IMediator mediator) : base(mediator) { }
|
|
16
|
-
+
|
|
17
|
-
+ [HttpPost]
|
|
18
|
-
+ [ProducesResponseType(typeof(PostPreOrdenResponse), StatusCodes.Status200OK)]
|
|
19
|
-
+ public async Task<IActionResult> PostPreOrdenAsync([FromBody] PostPreOrdenRequest postPreOrdenRequest)
|
|
20
|
-
+ {
|
|
21
|
-
+ var result = await Mediator.Send(new PostPreOrden(postPreOrdenRequest));
|
|
22
|
-
+ return Ok(result);
|
|
23
|
-
+ }
|
|
24
|
-
+}`},{path:`Core/Application/Validators/GetOrdenRequestValidator.cs`,changeType:`modified`,group:`g2`,diff:`@@ -1,4 +1,6 @@
|
|
25
|
-
using FluentValidation;
|
|
26
|
-
+using MsObeAprobacionDebin.Application.Common;
|
|
27
|
-
+using MsObeAprobacionDebin.Application.Constants;
|
|
28
|
-
using MsObeAprobacionDebin.Application.Dtos.GetOrden.Input;
|
|
29
|
-
|
|
30
|
-
namespace MsObeAprobacionDebin.Application.Validators;
|
|
31
|
-
@@ -11,5 +13,8 @@ public class GetOrdenRequestValidator : AbstractValidator<GetOrdenRequest>
|
|
32
|
-
RuleFor(o => o.IdDebin)
|
|
33
|
-
.NotEmpty().WithMessage("El id de la orden de debin no puede estar nulo o vacío.");
|
|
34
|
-
|
|
35
|
-
+ RuleFor(o => o.Rol)
|
|
36
|
-
+ .MustBeValidRole($"El rol recibido no es válido. (Roles válidos: {string.Join(", ", RolesConstants.RolesValidos)})");
|
|
37
|
-
+
|
|
38
|
-
}
|
|
39
|
-
}`},{path:`Core/Infra/PollyPolicyBuilder.cs`,changeType:`modified`,group:`g3`,diff:`@@ -16,7 +16,9 @@ namespace Bff.Obe.Pago.Servicios.Infrastructure
|
|
40
|
-
public static class PollyPolicyBuilder
|
|
41
|
-
{
|
|
42
|
-
+ public static IAsyncPolicy<HttpResponseMessage> GetPolicy(HttpRequestMessage request)
|
|
43
|
-
+ {
|
|
44
|
-
+ if (request.Method == HttpMethod.Post)
|
|
45
|
-
+ return Policy.NoOpAsync<HttpResponseMessage>();
|
|
46
|
-
+
|
|
47
|
-
+ return BuildRetryPolicy();
|
|
48
|
-
+ }
|
|
49
|
-
|
|
50
|
-
public static IAsyncPolicy<HttpResponseMessage> BuildRetryPolicy()
|
|
51
|
-
{`},{path:`Core/Constants/MonedasConstants.cs`,changeType:`modified`,group:`g4`,diff:`@@ -18,12 +18,4 @@ public static class MonedasConstants
|
|
52
|
-
public const string Ars = "ARS";
|
|
53
|
-
public const string Usd = "USD";
|
|
54
|
-
|
|
55
|
-
- // Duplicado histórico de _bantotalDivisa, mismo mapeo de código.
|
|
56
|
-
- public static readonly Dictionary<int, string> _divisaBantotal = new()
|
|
57
|
-
- {
|
|
58
|
-
- { 32, Ars },
|
|
59
|
-
- { 840, Usd }
|
|
60
|
-
- };
|
|
61
|
-
-
|
|
62
|
-
public static readonly Dictionary<int, string> _bantotalDivisa = new()`}],notes:[`El diff completo tenía 162 archivos; este ejemplo incluye solo 4 para mostrar el viewer.`]};function Ee(e){let t=[];if(!e||typeof e!=`object`)return[`El archivo no contiene un objeto JSON.`];let n=e;if((typeof n.intent!=`string`||!n.intent.trim())&&t.push(`Falta "intent" (string).`),Array.isArray(n.groups)?n.groups.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`groups[${n}]: no es un objeto.`);return}for(let r of[`id`,`kind`,`title`,`intent`])(typeof e[r]!=`string`||!e[r])&&t.push(`groups[${n}]: falta "${r}".`)}):t.push(`Falta "groups" (array).`),Array.isArray(n.blocks)?n.blocks.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`blocks[${n}]: no es un objeto.`);return}for(let r of[`id`,`group`,`file`,`op`,`what`,`why`])(typeof e[r]!=`string`||!e[r])&&t.push(`blocks[${n}]: falta "${r}".`)}):t.push(`Falta "blocks" (array).`),Array.isArray(n.findings)?n.findings.forEach((e,n)=>{if(!e||typeof e!=`object`){t.push(`findings[${n}]: no es un objeto.`);return}let r=e;for(let e of[`id`,`class`,`severity`,`kind`,`file`,`what`,`fix`])(typeof r[e]!=`string`||!r[e])&&t.push(`findings[${n}]: falta "${e}".`);typeof r.blocking!=`boolean`&&t.push(`findings[${n}]: "blocking" debe ser booleano.`)}):t.push(`Falta "findings" (array).`),n.files!=null&&!Array.isArray(n.files)&&t.push(`"files" debe ser un array.`),n.skipped!=null&&!Array.isArray(n.skipped)&&t.push(`"skipped" debe ser un array.`),n.notes!=null&&!Array.isArray(n.notes)&&t.push(`"notes" debe ser un array.`),n.meta!=null)if(typeof n.meta!=`object`||Array.isArray(n.meta))t.push(`"meta" debe ser un objeto.`);else{let e=n.meta;e.source!=null&&e.source!==`local`&&e.source!==`url`&&t.push(`meta.source debe ser "local" o "url".`);for(let n of[`repo`,`branch`,`base`,`remoteUrl`])e[n]!=null&&typeof e[n]!=`string`&&t.push(`meta.${n} debe ser string.`)}return t}var De=D(`URL del remote (https / SSH). Al cargar se listan branches con <code class="svelte-1uha8ag">ls-remote</code>; al soltar el
|
|
63
|
-
JSON se hace un clone shallow temporal para armar el diff. Requiere que el branch esté en el remote.`,1),Oe=D(`<p class="error-line svelte-1uha8ag"> </p>`),ke=D(`<p class="ok-line svelte-1uha8ag"> </p>`),Ae=D(`<button type="button" class="svelte-1uha8ag"> </button>`),je=D(`<option> </option>`),Me=D(`<select class="svelte-1uha8ag"></select>`),Ne=D(`<input type="text" placeholder="feature/PCM-14839" class="svelte-1uha8ag"/>`),Pe=D(`<input type="text" placeholder="develop" class="svelte-1uha8ag"/>`),Fe=D(`<p class="hint-text svelte-1uha8ag">Copiá esto en Claude, Cursor, Copilot o el agente que uses. El schema de salida va incluido.</p> <textarea class="svelte-1uha8ag"></textarea> <div class="actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button> <button type="button" class="ghost svelte-1uha8ag">Ver ejemplo</button></div>`,1),Ie=D(`<p class="hint-text svelte-1uha8ag">Necesita el skill instalado (abajo). El agente ya tiene guardadas las reglas y el schema de salida.</p> <div class="command-box svelte-1uha8ag"><code class="svelte-1uha8ag"> </code></div> <div class="actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button></div> <div class="skill-block svelte-1uha8ag"><h3 class="svelte-1uha8ag">¿No tenés el skill instalado?</h3> <p class="hint-text svelte-1uha8ag">Define /diff-review y /diff-review-fix. Descargalo e instalalo en la carpeta indicada.</p> <div class="skill-buttons svelte-1uha8ag"><button type="button" class="svelte-1uha8ag">Claude Code · .claude/commands/</button> <button type="button" class="svelte-1uha8ag">Cursor · .cursor/commands/</button> <button type="button" class="svelte-1uha8ag">Copilot · .github/prompts/</button></div></div>`,1),Le=D(`<li> </li>`),Re=D(`<div class="coverage-box svelte-1uha8ag"><div class="coverage-head svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <span class="svelte-1uha8ag">no aparecen ni en "blocks" ni en "skipped"</span></div> <details><summary class="svelte-1uha8ag">Ver los archivos</summary> <ul class="coverage-list svelte-1uha8ag"></ul></details> <p class="hint-text svelte-1uha8ag">Pasale este prompt al mismo agente que corrió la review: tiene el diff en contexto y solo
|
|
64
|
-
tiene que completar lo que falta. Después soltá de nuevo el <code class="svelte-1uha8ag"> </code>.</p> <textarea readonly="" rows="7" class="svelte-1uha8ag"></textarea> <div class="coverage-actions svelte-1uha8ag"><button type="button" class="primary svelte-1uha8ag"> </button> <button type="button" class="svelte-1uha8ag">Abrir igual</button></div></div>`),ze=D(`<div class="drop-errors svelte-1uha8ag"><strong class="svelte-1uha8ag">No se pudo abrir el reporte:</strong> <ul class="svelte-1uha8ag"></ul></div>`),Be=D(`<span class="pill bad svelte-1uha8ag"> </span>`),Ve=D(`<span class="pill svelte-1uha8ag"> </span>`),He=D(`<p class="report-intent svelte-1uha8ag"> </p>`),Ue=D(`<div class="report-menu svelte-1uha8ag" role="menu" tabindex="-1"><button type="button" class="menu-item danger svelte-1uha8ag" role="menuitem">Eliminar…</button></div>`),We=D(`<li class="report-item svelte-1uha8ag"><a class="report-card svelte-1uha8ag"><span class="report-top svelte-1uha8ag"><strong class="svelte-1uha8ag"> </strong> <span class="when svelte-1uha8ag"> </span></span> <span class="report-meta svelte-1uha8ag"><span> </span> <span class="pill svelte-1uha8ag"> </span> <!> <!></span> <!></a> <div class="report-actions svelte-1uha8ag"><button type="button" class="kebab svelte-1uha8ag" title="Más acciones" aria-haspopup="menu"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><circle cx="8" cy="3.5" r="1.25" fill="currentColor"></circle><circle cx="8" cy="8" r="1.25" fill="currentColor"></circle><circle cx="8" cy="12.5" r="1.25" fill="currentColor"></circle></svg></button> <!></div></li>`),Ge=D(`<ul class="report-list svelte-1uha8ag"></ul>`),Ke=D(`<p class="hint-text svelte-1uha8ag">Todavía no hay reportes. Generá un prompt, corré tu agente y soltá el JSON.</p>`),qe=D(`<div class="page svelte-1uha8ag"><header class="topbar svelte-1uha8ag"><a class="brand svelte-1uha8ag"><span class="brand-dot svelte-1uha8ag"></span> <span class="title-block svelte-1uha8ag"><span class="svelte-1uha8ag">diff-review</span> <small class="svelte-1uha8ag">generá un prompt, corré tu agente, soltá el resultado</small></span></a> <!></header> <div class="workspace svelte-1uha8ag"><section class="setup svelte-1uha8ag"><h2 class="svelte-1uha8ag">1. Contexto</h2> <div class="mode-toggle source-toggle svelte-1uha8ag"><button type="button">Carpeta local</button> <button type="button">URL remota</button></div> <p class="hint-text svelte-1uha8ag"><!></p> <!> <!> <div class="row svelte-1uha8ag"><label class="field repo-field svelte-1uha8ag"><span class="svelte-1uha8ag"> </span> <div class="repo-row svelte-1uha8ag"><input type="text" class="svelte-1uha8ag"/> <!> <button type="button" class="svelte-1uha8ag"> </button></div></label> <label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Branch a revisar</span> <!></label> <label class="field svelte-1uha8ag"><span class="svelte-1uha8ag">Base</span> <!></label></div> <div class="section-head svelte-1uha8ag"><h2 class="svelte-1uha8ag">2. Prompt</h2></div> <div class="mode-toggle svelte-1uha8ag"><button type="button">Prompt completo</button> <button type="button">Comando (skill)</button></div> <!> <h2 class="result-head svelte-1uha8ag">3. Resultado</h2> <p class="hint-text svelte-1uha8ag">Soltá acá el <code class="svelte-1uha8ag"> </code> que generó el agente. Si trae <code class="svelte-1uha8ag">meta</code>, se
|
|
65
|
-
autocompletan repo y branches.</p> <div role="presentation"><p class="svelte-1uha8ag"> </p> <button type="button" class="svelte-1uha8ag">Elegir archivo</button> <input type="file" accept="application/json,.json" class="visually-hidden svelte-1uha8ag"/></div> <!> <!></section> <aside class="reports-col svelte-1uha8ag"><h2 class="svelte-1uha8ag">Reportes anteriores</h2> <!></aside></div></div>`);function A(n,D){te(D,!0);let k=s(f({source:`local`,repo:``,branch:``,base:`develop`})),A=s(``),Je=s(!1),Ye=s(!1),j=s(`full`),Xe=s(!1),M=s(!1),N=s(f([])),P=s(null),F=s(f([])),Ze=s(!1),I=s(f([])),L=s(null),R=s(f([])),z=s(``),B=s(!1),V=s(!1),H=s(!1),U=s(``),Qe=s(null),$e=p(()=>le(e(k)));ee(()=>{let t=ve();i(k,t,!0),t.source===`local`&&G(t.repo)&&i(U,t.repo.trim(),!0),i(A,xe(e(k)),!0),i(I,ce(),!0),et(t)});async function et(e){try{let t=await fe();if(t?.repo){let n=t.current&&t.current!==`HEAD`?t.current:t.branches[0]||``,r=t.branches.includes(e.base)?e.base:t.defaultBase;i(R,t.branches,!0),i(U,t.repo,!0),W({source:`local`,repo:t.repo,branch:n,base:r,remoteUrl:t.remoteUrl||void 0});return}}catch{}e.repo.trim()&&J(e.repo,e.source)}function W(t){i(k,{...e(k),...t},!0),e(k).source===`local`&&G(e(k).repo)&&i(U,e(k).repo.trim(),!0),ye(e(k)),e(Je)||i(A,xe(e(k)),!0)}function tt(t){if(t===e(k).source)return;if(i(R,[],!0),i(z,``),t===`url`){G(e(k).repo)&&i(U,e(k).repo.trim(),!0);let n=(e(k).remoteUrl||``).trim()||(K(e(k).repo)?e(k).repo.trim():``);W({source:t,repo:n,...n?{remoteUrl:n}:{}});return}let n=e(U)||(G(e(k).repo)?e(k).repo.trim():``),r=(K(e(k).repo)?e(k).repo.trim():``)||(e(k).remoteUrl||``).trim();W({source:t,repo:n,...r?{remoteUrl:r}:{}})}function nt(e){i(A,e.currentTarget.value,!0),i(Je,!0)}function rt(e,t){let n=()=>{t(!0),setTimeout(()=>t(!1),1600)};navigator.clipboard?.writeText?navigator.clipboard.writeText(e).then(n).catch(n):n()}function it(){rt(e(A),e=>i(Ye,e,!0))}function at(){rt(Se(e(k),e(F)),e=>i(Ze,e,!0))}function ot(){rt(e($e),e=>i(Xe,e,!0))}function st(e){let t=oe(e),n=new Blob([t],{type:`text/markdown`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=ae(e),i.click(),URL.revokeObjectURL(r)}function G(e){return/[\\/]/.test(e)||/^[A-Za-z]:/.test(e)}function K(e){let t=e.trim();return t?!!(/^(https?:\/\/|git@|ssh:\/\/)/i.test(t)||/\.git$/i.test(t)&&!G(t)):!1}function q(e){if(!e)return`Error desconocido`;if(typeof e==`string`){try{let t=JSON.parse(e);if(typeof t?.message==`string`&&t.message.trim())return t.message}catch{}return e}if(typeof e==`object`){let t=e;if(typeof t.body?.message==`string`&&t.body.message.trim())return t.body.message;if(typeof t.message==`string`&&t.message.trim()){let e=t.message.trim();if(e.startsWith(`{`))try{let t=JSON.parse(e);if(typeof t?.message==`string`&&t.message.trim())return t.message}catch{}return e}}return String(e)}async function ct(){if(!(e(V)||e(B))){i(V,!0),i(z,``);try{let e=await he(null);if(!e)return;W({source:`local`,repo:e}),await J(e,`local`)}catch(e){i(z,`No se pudo elegir la carpeta: `+q(e))}finally{i(V,!1)}}}async function J(t=e(k).repo,n=e(k).source){let r=t.trim();if(!r){i(z,n===`url`?`Indicá la URL del repo.`:`Indicá la ruta absoluta del repo.`,!0);return}if(!e(B)){i(B,!0),i(z,``);try{let t=await _e({source:n,repo:r}),a=t.branches.includes(e(k).branch)?e(k).branch:t.current||t.branches[0]||``,o=t.branches.includes(e(k).base)?e(k).base:t.defaultBase;i(R,t.branches,!0),W({source:t.source,repo:t.repo,branch:a,base:o,remoteUrl:t.remoteUrl||(t.source===`url`?t.repo:e(k).remoteUrl)})}catch(e){i(R,[],!0),i(z,`No se pudo leer el repo: `+q(e))}finally{i(B,!1)}}}function lt(t){t.preventDefault(),e(M)||i(M,!0)}function ut(e){e.preventDefault(),i(M,!1)}function dt(t){if(t.preventDefault(),i(M,!1),e(H))return;let n=t.dataTransfer?.files?.[0];n&&mt(n)}function ft(){e(H)||e(Qe)?.click()}function pt(e){let t=e.currentTarget,n=t.files?.[0];n&&mt(n),t.value=``}function mt(e){let t=new FileReader;t.onload=()=>{let e;try{e=JSON.parse(String(t.result))}catch(e){i(N,[`El archivo no es JSON válido: `+q(e)],!0);return}gt(e)},t.onerror=()=>{i(N,[`No se pudo leer el archivo.`],!0)},t.readAsText(e)}function ht(t){return se(t,e(k))}async function gt(t){let n=Ee(t);if(n.length){i(N,n,!0);return}let r=me(t),a=ht(t);(a.repo||a.branch||a.base||a.remoteUrl)&&W({source:a.source,repo:a.repo||e(k).repo,branch:a.branch||e(k).branch,base:a.base||e(k).base,remoteUrl:a.remoteUrl||e(k).remoteUrl});let o={intent:r.intent,groups:r.groups,blocks:r.blocks,findings:r.findings,skipped:r.skipped,notes:r.notes},s=[],c=(e,t)=>{let n=t.trim();n&&(s.some(t=>t.source===e&&t.repo===n)||s.push({source:e,repo:n}))};if(a.branch){a.source===`local`&&G(a.repo)?c(`local`,a.repo):a.source===`url`&&K(a.repo)||K(a.repo)?c(`url`,a.repo):G(a.repo)&&c(`local`,a.repo);let e=(a.remoteUrl||``).trim();e&&K(e)&&c(`url`,e)}if(s.length&&a.branch){i(H,!0),i(N,[],!0);let t=[],n=!1,c=a.remoteUrl;try{for(let e of s)try{if(r=await de({repo:e.repo,branch:a.branch,base:a.base||`develop`,source:e.source,payload:o}),n=!0,e.source===`url`)c||=e.repo;else if(!c)try{let t=await _e({source:`local`,repo:e.repo});t.remoteUrl&&(c=t.remoteUrl)}catch{}break}catch(n){t.push(`${e.source===`url`?`URL`:`local`}: ${q(n)}`)}if(!n){if(!pe(r)){i(N,[`No se pudo calcular el diff con git.`,...t.map(e=>`· ${e}`)],!0);return}r={...r,notes:[...r.notes,`No se pudo refrescar el diff con git: `+t.join(` | `)]}}}finally{i(H,!1)}c&&W({remoteUrl:c});let l={source:a.source,repo:a.repo||e(k).repo,branch:a.branch||e(k).branch,base:a.base||e(k).base,remoteUrl:c||e(k).remoteUrl},u=we(r);if(u.length){i(P,r,!0),i(F,u,!0),i(N,[],!0),W(l);return}Y(r,l);return}else if(!pe(r)){i(N,[`Indicá repo (ruta o URL) y branch, o incluí meta.remoteUrl en el JSON, para calcular el diff con git.`],!0);return}let l={source:a.source,repo:a.repo||e(k).repo,branch:a.branch||e(k).branch,base:a.base||e(k).base,remoteUrl:a.remoteUrl||e(k).remoteUrl},u=we(r);if(u.length){i(P,r,!0),i(F,u,!0),i(N,[],!0),W(l);return}Y(r,l)}function Y(t,n=e(k)){i(N,[],!0),i(P,null),i(F,[],!0),ie(re(`/report/${ue(t,n).id}`))}function _t(){Y(Te,{source:`local`,repo:`ms-obe-aprobacion-debin`,branch:`feature/PCM-14839`,base:`develop`})}function vt(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`es-AR`,{day:`2-digit`,month:`2-digit`,hour:`2-digit`,minute:`2-digit`})}function yt(t){i(L,e(L)===t?null:t,!0)}function bt(e){let t=e.branch||`este reporte`;confirm(`¿Eliminar “${t}”? No se puede deshacer.`)&&(ge(e.id),i(I,ce(),!0),i(L,null))}var xt=qe();S(`click`,t,()=>{e(L)&&i(L,null)}),S(`keydown`,t,e=>{e.key===`Escape`&&i(L,null)});var St=d(xt),Ct=d(St);be(u(Ct,2),{}),g(St);var wt=u(St,2),Tt=d(wt),Et=u(d(Tt),2),Dt=d(Et);let Ot;var kt=u(Dt,2);let At;g(Et);var jt=u(Et,2),Mt=d(jt),Nt=e=>{var t=De();x(2),l(e,t)},Pt=e=>{l(e,r(`Carpeta local del repo. Podés pegar la ruta o elegirla con el diálogo del sistema. Git corre ahí
|
|
66
|
-
mismo (sirve para branches no pusheados).`))};_(Mt,t=>{e(k).source===`url`?t(Nt):t(Pt,-1)}),g(jt);var Ft=u(jt,2),It=t=>{var n=Oe(),r=d(n,!0);g(n),o(()=>O(r,e(z))),l(t,n)};_(Ft,t=>{e(z)&&t(It)});var Lt=u(Ft,2),Rt=t=>{var n=ke(),r=d(n);g(n),o(()=>O(r,`${e(R).length??``} branch${e(R).length===1?``:`es`} encontrado${e(R).length===1?``:`s`}.`)),l(t,n)};_(Lt,t=>{e(R).length&&t(Rt)});var zt=u(Lt,2),Bt=d(zt),Vt=d(Bt),Ht=d(Vt,!0);g(Vt);var Ut=u(Vt,2),X=d(Ut);w(X);var Wt=u(X,2),Gt=t=>{var n=Ae(),r=d(n,!0);g(n),o(()=>{n.disabled=e(V)||e(B),O(r,e(V)?`Eligiendo…`:`Elegir…`)}),c(`click`,n,()=>void ct()),l(t,n)};_(Wt,t=>{e(k).source===`local`&&t(Gt)});var Z=u(Wt,2),Kt=d(Z,!0);g(Z),g(Ut),g(Bt);var qt=u(Bt,2),Jt=u(d(qt),2),Yt=t=>{var n=Me();E(n,20,()=>e(R),e=>e,(e,t)=>{var n=je(),r=d(n,!0);g(n);var i={};o(()=>{O(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),l(e,n)}),g(n);var r;C(n),o(()=>{r!==(r=e(k).branch)&&(n.value=(n.__value=e(k).branch)??``,ne(n,e(k).branch))}),c(`change`,n,e=>W({branch:e.currentTarget.value})),l(t,n)},Xt=t=>{var n=Ne();w(n),o(()=>v(n,e(k).branch)),c(`input`,n,e=>W({branch:e.currentTarget.value})),l(t,n)};_(Jt,t=>{e(R).length?t(Yt):t(Xt,-1)}),g(qt);var Zt=u(qt,2),Qt=u(d(Zt),2),$t=t=>{var n=Me();E(n,20,()=>e(R),e=>e,(e,t)=>{var n=je(),r=d(n,!0);g(n);var i={};o(()=>{O(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),l(e,n)}),g(n);var r;C(n),o(()=>{r!==(r=e(k).base)&&(n.value=(n.__value=e(k).base)??``,ne(n,e(k).base))}),c(`change`,n,e=>W({base:e.currentTarget.value})),l(t,n)},en=t=>{var n=Pe();w(n),o(()=>v(n,e(k).base)),c(`input`,n,e=>W({base:e.currentTarget.value})),l(t,n)};_(Qt,t=>{e(R).length?t($t):t(en,-1)}),g(Zt),g(zt);var Q=u(zt,4),tn=d(Q);let nn;var rn=u(tn,2);let an;g(Q);var on=u(Q,2),sn=t=>{var n=Fe(),r=u(a(n),2);m(r);var i=u(r,2),s=d(i),f=d(s,!0);g(s);var p=u(s,2);g(i),o(()=>{v(r,e(A)),O(f,e(Ye)?`Copiado ✓`:`Copiar prompt`)}),c(`input`,r,nt),c(`click`,s,it),c(`click`,p,_t),l(t,n)},cn=t=>{var n=Ie(),r=u(a(n),2),i=d(r),s=d(i,!0);g(i),g(r);var f=u(r,2),p=d(f),m=d(p,!0);g(p),g(f);var h=u(f,2),_=u(d(h),4),v=d(_),y=u(v,2),b=u(y,2);g(_),g(h),o(()=>{O(s,e($e)),O(m,e(Xe)?`Copiado ✓`:`Copiar comando`)}),c(`click`,p,ot),c(`click`,v,()=>st(`claude`)),c(`click`,y,()=>st(`cursor`)),c(`click`,b,()=>st(`copilot`)),l(t,n)};_(on,t=>{e(j)===`full`?t(sn):t(cn,-1)});var ln=u(on,4),un=u(d(ln)),dn=d(un,!0);g(un),x(3),g(ln);var $=u(ln,2);let fn;var pn=d($),mn=d(pn,!0);g(pn);var hn=u(pn,2),gn=u(hn,2);h(gn,e=>i(Qe,e),()=>e(Qe)),g($);var _n=u($,2),vn=t=>{var n=Re(),r=d(n),i=d(r),a=d(i);g(i),x(2),g(r);var s=u(r,2),f=u(d(s),2);E(f,20,()=>e(F),e=>e,(e,t)=>{var n=Le(),r=d(n,!0);g(n),o(()=>O(r,t)),l(e,n)}),g(f),g(s);var p=u(s,2),h=u(d(p)),_=d(h,!0);g(h),x(),g(p);var y=u(p,2);m(y);var b=u(y,2),S=d(b),C=d(S,!0);g(S);var ee=u(S,2);g(b),g(n),o(t=>{O(a,`El modelo dejó ${e(F).length??``} archivo(s) sin explicar`),O(_,Ce),v(y,t),O(C,e(Ze)?`Copiado ✓`:`Copiar prompt de corrección`)},[()=>Se(e(k),e(F))]),c(`click`,S,at),c(`click`,ee,()=>e(P)&&Y(e(P))),l(t,n)};_(_n,t=>{e(P)&&t(vn)});var yn=u(_n,2),bn=t=>{var n=ze(),r=u(d(n),2);E(r,20,()=>e(N),e=>e,(e,t)=>{var n=Le(),r=d(n,!0);g(n),o(()=>O(r,t)),l(e,n)}),g(r),g(n),l(t,n)};_(yn,t=>{e(N).length&&t(bn)}),g(Tt);var xn=u(Tt,2),Sn=u(d(xn),2),Cn=t=>{var n=Ge();E(n,21,()=>e(I),e=>e.id,(t,n)=>{var r=We(),i=d(r),a=d(i),s=d(a),f=d(s,!0);g(s);var p=u(s,2),m=d(p,!0);g(p),g(a);var h=u(a,2),v=d(h),y=d(v);g(v);var b=u(v,2),x=d(b);g(b);var S=u(b,2),C=t=>{var r=Be(),i=d(r);g(r),o(()=>O(i,`${e(n).blockerCount??``} blocker${e(n).blockerCount===1?``:`s`}`)),l(t,r)};_(S,t=>{e(n).blockerCount&&t(C)});var ee=u(S,2),w=t=>{var r=Ve(),i=d(r);g(r),o(()=>O(i,`${e(n).qualityCount??``} calidad`)),l(t,r)};_(ee,t=>{e(n).qualityCount&&t(w)}),g(h);var te=u(h,2),ne=t=>{var r=He(),i=d(r,!0);g(r),o(()=>O(i,e(n).intent)),l(t,r)};_(te,t=>{e(n).intent&&t(ne)}),g(i);var E=u(i,2),D=d(E),ie=u(D,2),ae=t=>{var r=Ue(),i=d(r);g(r),c(`click`,i,t=>{t.stopPropagation(),bt(e(n))}),l(t,r)};_(ie,t=>{e(L)===e(n).id&&t(ae)}),g(E),g(r),o((t,r)=>{T(i,`href`,t),O(f,e(n).branch||`—`),O(m,r),O(y,`vs ${(e(n).base||`develop`)??``}`),O(x,`${e(n).groupCount??``} tema${e(n).groupCount===1?``:`s`}`),T(D,`aria-label`,`Más acciones para ${(e(n).branch||`reporte`)??``}`),T(D,`aria-expanded`,e(L)===e(n).id)},[()=>re(`/report/${e(n).id}`),()=>vt(e(n).savedAt)]),c(`click`,D,t=>{t.preventDefault(),t.stopPropagation(),yt(e(n).id)}),l(t,r)}),g(n),l(t,n)},wn=e=>{l(e,Ke())};_(Sn,t=>{e(I).length?t(Cn):t(wn,-1)}),g(xn),g(wt),g(xt),o(t=>{T(Ct,`href`,t),Ot=b(Dt,1,`svelte-1uha8ag`,null,Ot,{on:e(k).source===`local`}),At=b(kt,1,`svelte-1uha8ag`,null,At,{on:e(k).source===`url`}),O(Ht,e(k).source===`url`?`URL del repo`:`Repo`),T(X,`placeholder`,e(k).source===`url`?`https://github.com/org/repo.git`:`C:\\path\\to\\repo`),v(X,e(k).repo),Z.disabled=e(B)||e(V),O(Kt,e(B)?`Cargando…`:`Cargar`),nn=b(tn,1,`svelte-1uha8ag`,null,nn,{on:e(j)===`full`}),an=b(rn,1,`svelte-1uha8ag`,null,an,{on:e(j)===`command`}),O(dn,Ce),fn=b($,1,`dropzone svelte-1uha8ag`,null,fn,{drag:e(M),busy:e(H)}),O(mn,e(H)?`Calculando diff con git…`:`Arrastrá el archivo .json acá`),hn.disabled=e(H)},[()=>re(`/`)]),c(`click`,Dt,()=>tt(`local`)),c(`click`,kt,()=>tt(`url`)),c(`input`,X,e=>W({repo:e.currentTarget.value})),c(`keydown`,X,e=>{e.key===`Enter`&&(e.preventDefault(),J())}),c(`click`,Z,()=>void J()),c(`click`,tn,()=>i(j,`full`)),c(`click`,rn,()=>i(j,`command`)),S(`dragover`,$,lt),S(`dragleave`,$,ut),S(`drop`,$,dt),c(`click`,hn,ft),c(`change`,gn,pt),l(n,xt),y()}n([`click`,`input`,`keydown`,`change`]);export{A as component};
|
|
Binary file
|
|
Binary file
|