git-history-ui 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/CODE_OF_CONDUCT.md +53 -0
  3. package/CONTRIBUTING.md +132 -0
  4. package/LICENSE +21 -0
  5. package/README.md +75 -15
  6. package/SECURITY.md +51 -0
  7. package/build/frontend/{chunk-CFCRPNUQ.js → chunk-3E3FVV4X.js} +1 -1
  8. package/build/frontend/chunk-465Y7ZAS.js +2 -0
  9. package/build/frontend/{chunk-I4VBIHH2.js → chunk-7VJNS7EY.js} +1 -1
  10. package/build/frontend/{chunk-UIWFTWLF.js → chunk-GBKH4M7W.js} +1 -1
  11. package/build/frontend/{chunk-UHWTLUOW.js → chunk-GJRIJIZY.js} +1 -1
  12. package/build/frontend/chunk-LRN4ELHN.js +9 -0
  13. package/build/frontend/chunk-PJETIVS4.js +1 -0
  14. package/build/frontend/chunk-QH2BEUIU.js +5 -0
  15. package/build/frontend/{chunk-3KK6F5JX.js → chunk-SJJTMQGL.js} +1 -1
  16. package/build/frontend/chunk-TI46NMVL.js +1 -0
  17. package/build/frontend/chunk-V6G3DEZ6.js +1 -0
  18. package/build/frontend/{chunk-UNROVCUZ.js → chunk-WPYI663L.js} +1 -1
  19. package/build/frontend/chunk-Y6GOUMAT.js +1 -0
  20. package/build/frontend/index.html +1 -1
  21. package/build/frontend/main-735KK4CH.js +1 -0
  22. package/dist/backend/aggregations.d.ts +1 -0
  23. package/dist/backend/aggregations.d.ts.map +1 -0
  24. package/dist/backend/annotations.d.ts +1 -0
  25. package/dist/backend/annotations.d.ts.map +1 -0
  26. package/dist/backend/cache/sqliteIndex.d.ts +1 -0
  27. package/dist/backend/cache/sqliteIndex.d.ts.map +1 -0
  28. package/dist/backend/dev-server.d.ts +1 -0
  29. package/dist/backend/dev-server.d.ts.map +1 -0
  30. package/dist/backend/gitService.d.ts +1 -0
  31. package/dist/backend/gitService.d.ts.map +1 -0
  32. package/dist/backend/grouping/prGrouping.d.ts +1 -0
  33. package/dist/backend/grouping/prGrouping.d.ts.map +1 -0
  34. package/dist/backend/impact.d.ts +1 -0
  35. package/dist/backend/impact.d.ts.map +1 -0
  36. package/dist/backend/insights.d.ts +1 -0
  37. package/dist/backend/insights.d.ts.map +1 -0
  38. package/dist/backend/llm/anthropicProvider.d.ts +2 -0
  39. package/dist/backend/llm/anthropicProvider.d.ts.map +1 -0
  40. package/dist/backend/llm/anthropicProvider.js +10 -4
  41. package/dist/backend/llm/anthropicProvider.js.map +1 -1
  42. package/dist/backend/llm/heuristicProvider.d.ts +2 -0
  43. package/dist/backend/llm/heuristicProvider.d.ts.map +1 -0
  44. package/dist/backend/llm/heuristicProvider.js +54 -4
  45. package/dist/backend/llm/heuristicProvider.js.map +1 -1
  46. package/dist/backend/llm/index.d.ts +7 -0
  47. package/dist/backend/llm/index.d.ts.map +1 -0
  48. package/dist/backend/llm/index.js +15 -5
  49. package/dist/backend/llm/index.js.map +1 -1
  50. package/dist/backend/llm/openaiProvider.d.ts +2 -0
  51. package/dist/backend/llm/openaiProvider.d.ts.map +1 -0
  52. package/dist/backend/llm/openaiProvider.js +8 -3
  53. package/dist/backend/llm/openaiProvider.js.map +1 -1
  54. package/dist/backend/llm/types.d.ts +3 -1
  55. package/dist/backend/llm/types.d.ts.map +1 -0
  56. package/dist/backend/presets.d.ts +1 -0
  57. package/dist/backend/presets.d.ts.map +1 -0
  58. package/dist/backend/search/datePhrase.d.ts +1 -0
  59. package/dist/backend/search/datePhrase.d.ts.map +1 -0
  60. package/dist/backend/search/nlSearch.d.ts +1 -0
  61. package/dist/backend/search/nlSearch.d.ts.map +1 -0
  62. package/dist/backend/server.d.ts +1 -0
  63. package/dist/backend/server.d.ts.map +1 -0
  64. package/dist/backend/server.js +47 -18
  65. package/dist/backend/server.js.map +1 -1
  66. package/dist/backend/snapshot.d.ts +1 -0
  67. package/dist/backend/snapshot.d.ts.map +1 -0
  68. package/dist/cli.d.ts +1 -0
  69. package/dist/cli.d.ts.map +1 -0
  70. package/docs/API.md +70 -0
  71. package/docs/architecture.md +85 -0
  72. package/docs/configuration.md +54 -0
  73. package/docs/troubleshooting.md +85 -0
  74. package/package.json +44 -8
  75. package/build/frontend/chunk-6VRZZB3T.js +0 -1
  76. package/build/frontend/chunk-AWMYL3YU.js +0 -1
  77. package/build/frontend/chunk-EZUFC4CQ.js +0 -1
  78. package/build/frontend/chunk-GRG6HTLW.js +0 -9
  79. package/build/frontend/chunk-L4LXF744.js +0 -2
  80. package/build/frontend/chunk-OBPR2XVH.js +0 -5
  81. package/build/frontend/chunk-VHEMN3MU.js +0 -1
  82. package/build/frontend/main-6PSVVDXD.js +0 -1
@@ -12,5 +12,5 @@
12
12
  <style>*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}:root{color-scheme:light;--bg-app:#f7f8fa;--bg-surface:#ffffff;--bg-surface-2:#f3f4f6;--bg-elevated:#ffffff;--bg-panel:rgba(255, 255, 255, .78);--bg-glass:rgba(255, 255, 255, .72);--bg-hover:#eef2ff;--bg-selected:#e0e7ff;--bg-overlay:rgba(15, 23, 42, .45);--bg-gradient:radial-gradient(circle at 12% -8%, rgba(79, 70, 229, .12), transparent 34%), radial-gradient(circle at 90% 0%, rgba(6, 182, 212, .12), transparent 28%), linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);--fg-primary:#0f172a;--fg-secondary:#475569;--fg-muted:#64748b;--fg-subtle:#94a3b8;--fg-inverted:#ffffff;--border-soft:#e2e8f0;--border-strong:#cbd5e1;--border-focus:#6366f1;--accent:#4f46e5;--accent-hover:#4338ca;--accent-soft:#eef2ff;--accent-fg:#ffffff;--accent-ring:rgba(99, 102, 241, .18);--success:#16a34a;--warning:#d97706;--danger:#dc2626;--diff-add-bg:#dcfce7;--diff-add-fg:#14532d;--diff-add-gutter:#86efac;--diff-del-bg:#fee2e2;--diff-del-fg:#7f1d1d;--diff-del-gutter:#fca5a5;--diff-hunk-bg:#f1f5f9;--diff-hunk-fg:#475569;--graph-guide:rgba(148, 163, 184, .28);--graph-row-alt:rgba(15, 23, 42, .025);--graph-row-hover:rgba(79, 70, 229, .08);--graph-row-selected:rgba(79, 70, 229, .14);--graph-node-ring:#ffffff;--graph-shadow:rgba(15, 23, 42, .12);--chart-add:#16a34a;--chart-del:#dc2626;--chart-line:#4f46e5;--chart-fill:rgba(79, 70, 229, .16);--shadow-sm:0 1px 2px rgba(15, 23, 42, .06);--shadow-md:0 4px 12px rgba(15, 23, 42, .08);--shadow-lg:0 12px 32px rgba(15, 23, 42, .12);--shadow-glow:0 16px 60px rgba(79, 70, 229, .14);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Mono", "Liberation Mono", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--fg-primary);background:var(--bg-gradient);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}</style><link rel="stylesheet" href="styles-DUWPKHDX.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-DUWPKHDX.css"></noscript></head>
13
13
  <body>
14
14
  <app-root></app-root>
15
- <link rel="modulepreload" href="chunk-CFCRPNUQ.js"><link rel="modulepreload" href="chunk-UHWTLUOW.js"><link rel="modulepreload" href="chunk-AWMYL3YU.js"><link rel="modulepreload" href="chunk-I4VBIHH2.js"><link rel="modulepreload" href="chunk-6VRZZB3T.js"><link rel="modulepreload" href="chunk-OBPR2XVH.js"><script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-6PSVVDXD.js" type="module"></script></body>
15
+ <link rel="modulepreload" href="chunk-3E3FVV4X.js"><link rel="modulepreload" href="chunk-GJRIJIZY.js"><link rel="modulepreload" href="chunk-PJETIVS4.js"><link rel="modulepreload" href="chunk-7VJNS7EY.js"><link rel="modulepreload" href="chunk-V6G3DEZ6.js"><link rel="modulepreload" href="chunk-QH2BEUIU.js"><script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-735KK4CH.js" type="module"></script></body>
16
16
  </html>
@@ -0,0 +1 @@
1
+ import{a as ye,b as Me,c as ke}from"./chunk-3E3FVV4X.js";import{a as B,b as R,c as q,e as ve,f as Ce,g as xe,h as j}from"./chunk-GJRIJIZY.js";import{a as we}from"./chunk-PJETIVS4.js";import{a as O}from"./chunk-7VJNS7EY.js";import{a as ce,c as ge,d as he,f as fe,g as _e,h as be}from"./chunk-V6G3DEZ6.js";import{$ as v,$b as le,Ac as ue,D as ne,Db as N,Eb as L,F as ie,Fb as H,Ib as A,Kb as l,Lb as b,Mb as C,Oa as ae,Pa as D,Qa as a,R as oe,Ub as se,W as re,Za as w,ac as z,bc as y,cb as h,cc as k,ea as m,fa as u,ga as P,ha as W,lb as E,oa as M,ob as c,oc as I,pb as o,pc as S,q as te,qb as r,rb as x,sc as T,vb as V,wb as F,xb as _,xc as pe,yb as d,yc as de,zb as g,zc as me}from"./chunk-QH2BEUIU.js";var Se=[{path:"",loadComponent:()=>import("./chunk-465Y7ZAS.js").then(n=>n.HomeShellComponent),pathMatch:"full"},{path:"timeline",loadComponent:()=>import("./chunk-TI46NMVL.js").then(n=>n.TimelineComponent)},{path:"file/:path",loadComponent:()=>import("./chunk-SJJTMQGL.js").then(n=>n.FileHistoryComponent)},{path:"insights",loadComponent:()=>import("./chunk-LRN4ELHN.js").then(n=>n.InsightsComponent)},{path:"**",redirectTo:""}];var Te={providers:[le({eventCoalescing:!0}),be(Se),me(ue())]};var Pe=["input"];function Ee(n,e){if(n&1){let t=_();o(0,"div",3),d("click",function(){m(t);let s=g();return u(s.close())}),r()}}function Ie(n,e){if(n&1){let t=_();o(0,"li",11),d("mouseenter",function(){let s=m(t).index,p=g(2);return u(p.index.set(s))})("click",function(){let s=m(t).$implicit,p=g(2);return u(p.pick(s))}),o(1,"span",12),l(2),r(),o(3,"span",13),l(4),r(),o(5,"span",14),l(6),r()()}if(n&2){let t=e.$implicit,i=e.index,s=g(2);A("active",i===s.index()),E("aria-selected",i===s.index()),a(2),b(t.shortHash),a(2),b(t.subject),a(2),b(t.author)}}function Ve(n,e){n&1&&(o(0,"li",15),l(1,"No matches."),r())}function Fe(n,e){if(n&1){let t=_();o(0,"div",4)(1,"input",5,0),d("ngModelChange",function(s){m(t);let p=g();return u(p.onQuery(s))})("keydown",function(s){m(t);let p=g();return u(p.onKey(s))}),r(),o(3,"ul",6),h(4,Ie,7,6,"li",7)(5,Ve,2,0,"li",8),r(),o(6,"div",9)(7,"span")(8,"kbd",10),l(9,"\u2191"),r(),o(10,"kbd",10),l(11,"\u2193"),r(),l(12," navigate"),r(),o(13,"span")(14,"kbd",10),l(15,"Enter"),r(),l(16," select"),r(),o(17,"span")(18,"kbd",10),l(19,"Esc"),r(),l(20," close"),r()()()}if(n&2){let t=g();a(),c("ngModel",t.query()),a(3),c("ngForOf",t.results())("ngForTrackBy",t.trackByHash),a(),c("ngIf",!t.results().length)}}var K=class n{state=v(O);input;query=M("");index=M(0);results=y(()=>{let e=this.query().trim().toLowerCase(),t=this.state.commits();return e?t.filter(i=>i.hash.toLowerCase().startsWith(e)||i.shortHash.toLowerCase().startsWith(e)||i.subject.toLowerCase().includes(e)||i.author.toLowerCase().includes(e)).slice(0,50):t.slice(0,50)});constructor(){k(()=>{this.state.paletteOpen()&&(this.query.set(""),this.index.set(0),queueMicrotask(()=>this.input?.nativeElement.focus()))}),k(()=>{let e=this.results().length;this.index()>=e&&this.index.set(Math.max(0,e-1))})}trackByHash(e,t){return t.hash}onQuery(e){this.query.set(e),this.index.set(0)}onKey(e){if(e.key==="ArrowDown")e.preventDefault(),this.index.update(t=>Math.min(this.results().length-1,t+1));else if(e.key==="ArrowUp")e.preventDefault(),this.index.update(t=>Math.max(0,t-1));else if(e.key==="Enter"){e.preventDefault();let t=this.results()[this.index()];t&&this.pick(t)}else e.key==="Escape"&&(e.preventDefault(),this.close())}pick(e){this.state.selectHash(e.hash),this.close()}close(){this.state.paletteOpen.set(!1)}onGlobal(e){(e.metaKey||e.ctrlKey)&&(e.key==="k"||e.key==="K")&&(e.preventDefault(),this.state.paletteOpen.set(!this.state.paletteOpen()))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-command-palette"]],viewQuery:function(t,i){if(t&1&&N(Pe,5),t&2){let s;L(s=H())&&(i.input=s.first)}},hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onGlobal(p)},D)},decls:2,vars:2,consts:[["input",""],["class","backdrop",3,"click",4,"ngIf"],["class","palette","role","dialog","aria-modal","true",4,"ngIf"],[1,"backdrop",3,"click"],["role","dialog","aria-modal","true",1,"palette"],["type","text","placeholder","Jump to a commit by hash, subject, or author\u2026",1,"search",3,"ngModelChange","keydown","ngModel"],["role","listbox",1,"results"],["class","result",3,"active","mouseenter","click",4,"ngFor","ngForOf","ngForTrackBy"],["class","result empty",4,"ngIf"],[1,"footer"],[1,"kbd"],[1,"result",3,"mouseenter","click"],[1,"hash"],[1,"subj"],[1,"auth"],[1,"result","empty"]],template:function(t,i){t&1&&h(0,Ee,1,0,"div",1)(1,Fe,21,4,"div",2),t&2&&(c("ngIf",i.state.paletteOpen()),a(),c("ngIf",i.state.paletteOpen()))},dependencies:[T,I,S,j,B,R,q],styles:[".backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:var(--bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90}.palette[_ngcontent-%COMP%]{position:fixed;top:12vh;left:50%;transform:translate(-50%);width:min(640px,calc(100vw - 32px));background:color-mix(in oklab,var(--bg-glass) 96%,transparent);border:1px solid var(--border-soft);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg),var(--shadow-glow);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);z-index:100;overflow:hidden}.search[_ngcontent-%COMP%]{width:100%;border:0;outline:0;padding:1rem 1.1rem;background:transparent;color:var(--fg-primary);font-size:14px;border-bottom:1px solid var(--border-soft)}.results[_ngcontent-%COMP%]{list-style:none;margin:0;padding:.25rem 0;max-height:50vh;overflow:auto}.result[_ngcontent-%COMP%]{display:grid;grid-template-columns:70px 1fr auto;align-items:center;gap:.6rem;padding:.52rem 1rem;cursor:pointer;font-size:13px}.result.active[_ngcontent-%COMP%]{background:color-mix(in oklab,var(--accent) 12%,transparent);box-shadow:inset 3px 0 0 var(--accent)}.result.empty[_ngcontent-%COMP%]{grid-template-columns:1fr;color:var(--fg-muted);cursor:default}.hash[_ngcontent-%COMP%]{font-family:var(--font-mono);color:var(--fg-muted)}.subj[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-primary)}.auth[_ngcontent-%COMP%]{color:var(--fg-muted);font-size:11px}.footer[_ngcontent-%COMP%]{display:flex;gap:1rem;padding:.4rem .75rem;background:color-mix(in oklab,var(--bg-surface-2) 84%,transparent);border-top:1px solid var(--border-soft);font-size:11px;color:var(--fg-muted)}"],changeDetection:0})};function De(n,e){if(n&1&&(o(0,"kbd",11),l(1),r()),n&2){let t=e.$implicit;a(),b(t)}}function Ne(n,e){if(n&1&&(o(0,"li")(1,"span",8),l(2),r(),o(3,"span",9),h(4,De,2,1,"kbd",10),r()()),n&2){let t=e.$implicit;a(2),b(t.description),a(2),c("ngForOf",t.keys)}}function Le(n,e){if(n&1&&(o(0,"section")(1,"h3"),l(2),r(),o(3,"ul"),h(4,Ne,5,2,"li",7),r()()),n&2){let t=e.$implicit;a(2),b(t.title),a(2),c("ngForOf",t.bindings)}}function He(n,e){if(n&1){let t=_();V(0),o(1,"div",1),d("click",function(){m(t);let s=g();return u(s.close())}),r(),o(2,"div",2)(3,"div",3)(4,"h2",4),l(5,"Keyboard shortcuts"),r(),o(6,"button",5),d("click",function(){m(t);let s=g();return u(s.close())}),l(7,"\u2715"),r()(),o(8,"div",6),h(9,Le,5,2,"section",7),r()(),F()}if(n&2){let t=g();a(9),c("ngForOf",t.groups)}}var Ae=[{title:"Navigation",bindings:[{keys:["j"],description:"Next commit"},{keys:["k"],description:"Previous commit"},{keys:["g"],description:"Jump to newest commit"},{keys:["G"],description:"Jump to oldest commit"}]},{title:"Search & overlays",bindings:[{keys:["/"],description:"Focus search"},{keys:["\u2318","K"],description:"Open command palette"},{keys:["?"],description:"Show this help"},{keys:["Esc"],description:"Close overlays"}]}],Z=class n{state=v(O);groups=Ae;close(){this.state.shortcutsOpen.set(!1)}onKey(e){e.key==="?"&&!this.isTyping(e.target)&&(e.preventDefault(),this.state.shortcutsOpen.set(!0)),e.key==="Escape"&&(this.state.shortcutsOpen.set(!1),this.state.paletteOpen.set(!1))}isTyping(e){return e instanceof HTMLElement?["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable:!1}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-shortcuts-modal"]],hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onKey(p)},D)},decls:1,vars:1,consts:[[4,"ngIf"],[1,"backdrop",3,"click"],["role","dialog","aria-modal","true","aria-labelledby","shortcuts-title",1,"modal"],[1,"head"],["id","shortcuts-title"],["aria-label","Close",1,"btn","btn-ghost","btn-icon",3,"click"],[1,"body"],[4,"ngFor","ngForOf"],[1,"desc"],[1,"keys"],["class","kbd",4,"ngFor","ngForOf"],[1,"kbd"]],template:function(t,i){t&1&&h(0,He,10,1,"ng-container",0),t&2&&c("ngIf",i.state.shortcutsOpen())},dependencies:[T,I,S],styles:[".backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:var(--bg-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90}.modal[_ngcontent-%COMP%]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:80vh;overflow:auto;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:100}.head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-soft)}.head[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:16px}.body[_ngcontent-%COMP%]{padding:.75rem 1rem 1rem}h3[_ngcontent-%COMP%]{margin:1rem 0 .4rem;font-size:12px;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em}h3[_ngcontent-%COMP%]:first-child{margin-top:0}ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}li[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:.45rem .25rem;border-bottom:1px dashed var(--border-soft)}li[_ngcontent-%COMP%]:last-child{border-bottom:0}.desc[_ngcontent-%COMP%]{color:var(--fg-secondary);font-size:13px}.keys[_ngcontent-%COMP%]{display:flex;gap:4px}"],changeDetection:0})};var ze=["searchInput"],Be=()=>({exact:!0});function Re(n,e){if(n&1&&(o(0,"span",36),l(1),r()),n&2){let t=e.ngIf;a(),b(t)}}function qe(n,e){n&1&&(V(0),P(),o(1,"svg",37),x(2,"path",38),r(),F())}function je(n,e){n&1&&(V(0),o(1,"span",39),l(2,"AI"),r(),F())}function Ke(n,e){n&1&&(o(0,"kbd",40),l(1,"/"),r())}function Ge(n,e){if(n&1&&(o(0,"option",41),l(1),r()),n&2){let t=e.$implicit,i=g();c("value",t),a(),b(i.shortBranch(t))}}function Ze(n,e){if(n&1&&(o(0,"option",41),l(1),r()),n&2){let t=e.$implicit;c("value",t),a(),b(t)}}function $e(n,e){if(n&1){let t=_();o(0,"button",42),d("click",function(){m(t);let s=g();return u(s.clearFilters())}),l(1),r()}if(n&2){let t=g();a(),C(" Clear ",t.activeFilterCount()," ")}}function Qe(n,e){n&1&&(P(),o(0,"svg",28),x(1,"path",43),r())}function Ue(n,e){n&1&&(P(),o(0,"svg",28),x(1,"path",44),r())}function We(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("author: ",t.author)}}function Je(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("since: ",t.since)}}function Xe(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=g().ngIf;a(),C("until: ",t.until)}}function Ye(n,e){if(n&1&&(o(0,"span",50),l(1),r()),n&2){let t=e.$implicit;a(),b(t)}}function et(n,e){n&1&&(o(0,"span",51),l(1,"no structured filters detected"),r())}function tt(n,e){if(n&1&&(o(0,"div",45)(1,"span",46),l(2,"Interpreted as"),r(),h(3,We,2,1,"span",47)(4,Je,2,1,"span",47)(5,Xe,2,1,"span",47)(6,Ye,2,1,"span",48)(7,et,2,0,"span",49),r()),n&2){let t=e.ngIf;a(3),c("ngIf",t.author),a(),c("ngIf",t.since),a(),c("ngIf",t.until),a(),c("ngForOf",t.keywords),a(),c("ngIf",t.keywords.length===0&&!t.author&&!t.since)}}function nt(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onBranch(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf,i=g(2);a(),C(" branch: ",i.shortBranch(t)," ")}}function it(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onAuthor(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" author: ",t," ")}}function ot(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onSince(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" since: ",t," ")}}function rt(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onUntil(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" until: ",t," ")}}function at(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onFile(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" file: ",t," ")}}function st(n,e){if(n&1){let t=_();o(0,"button",54),d("click",function(){m(t);let s=g(2);return u(s.onSearchInput(""))}),l(1),o(2,"span"),l(3,"\xD7"),r()()}if(n&2){let t=e.ngIf;a(),C(" search: ",t," ")}}function lt(n,e){if(n&1&&(o(0,"div",52)(1,"span",46),l(2,"Active filters"),r(),h(3,nt,4,1,"button",53)(4,it,4,1,"button",53)(5,ot,4,1,"button",53)(6,rt,4,1,"button",53)(7,at,4,1,"button",53)(8,st,4,1,"button",53),r()),n&2){let t=g();a(3),c("ngIf",t.state.filters().branch),a(),c("ngIf",t.state.filters().author),a(),c("ngIf",t.state.filters().since),a(),c("ngIf",t.state.filters().until),a(),c("ngIf",t.state.filters().file),a(),c("ngIf",t.state.filters().search)}}var $=class n{state=v(O);theme=v(ke);searchEl;searchValue=M("");totalLabel=y(()=>{let e=this.state.total();return e?`${e.toLocaleString()} commits`:""});themeLabel=y(()=>`Switch to ${this.theme.resolved()==="light"?"dark":"light"} mode`);searchPlaceholder=y(()=>this.state.searchMode()==="nl"?'Ask anything: "login bug last month", "payments by alice"\u2026':"Search commits\u2026 ( / )");searchModeTooltip=y(()=>this.state.searchMode()==="nl"?"Natural-language search active. Click to switch to literal search.":"Literal git-grep search. Click to switch to natural-language search.");viewModeTooltip=y(()=>this.state.viewMode()==="grouped"?"Showing PR / feature groups. Click for flat list.":"Showing flat commit list. Click for PR / feature groups.");branchOptions=y(()=>{let e=this.state.branches(),t=e.filter(i=>!ct(i));return t.length?t:e});activeFilterCount=y(()=>{let e=this.state.filters();return[e.branch,e.author,e.since,e.until,e.file,e.search].filter(Boolean).length});debounce=null;constructor(){k(()=>{let e=this.state.filters();this.searchValue.set(e.search??"")})}onKeydown(e){e.key==="/"&&!this.isTyping(e.target)&&(e.preventDefault(),queueMicrotask(()=>this.searchEl?.nativeElement.focus()))}onSearchInput(e){this.searchValue.set(e),this.debounce&&clearTimeout(this.debounce),this.debounce=setTimeout(()=>{this.state.patchFilters({search:e||void 0})},250)}onAuthor(e){this.state.patchFilters({author:e||void 0})}onBranch(e){this.state.patchFilters({branch:e||void 0})}onSince(e){this.state.patchFilters({since:e||void 0})}onUntil(e){this.state.patchFilters({until:e||void 0})}onFile(e){this.state.patchFilters({file:e||void 0})}toggleSearchMode(){let e=this.state.searchMode()==="classic"?"nl":"classic";this.state.searchMode.set(e),e==="classic"&&this.state.nlInterpretation.set(null),this.state.patchFilters({})}toggleViewMode(){this.state.viewMode.set(this.state.viewMode()==="flat"?"grouped":"flat")}clearFilters(){this.state.patchFilters({branch:void 0,author:void 0,since:void 0,until:void 0,file:void 0,search:void 0}),this.searchValue.set("")}isTyping(e){return e instanceof HTMLElement?["INPUT","TEXTAREA","SELECT"].includes(e.tagName)||e.isContentEditable:!1}shortBranch(e){return e.startsWith("origin/")?e.slice(7):e}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-toolbar"]],viewQuery:function(t,i){if(t&1&&N(ze,5),t&2){let s;L(s=H())&&(i.searchEl=s.first)}},hostBindings:function(t,i){t&1&&d("keydown",function(p){return i.onKeydown(p)},ae)},decls:49,vars:29,consts:[["searchInput",""],[1,"toolbar"],[1,"brand"],["aria-hidden","true",1,"brand-mark"],[1,"brand-text"],[1,"brand-title"],["class","brand-sub",4,"ngIf"],[1,"nav"],["routerLink","/","routerLinkActive","active",3,"routerLinkActiveOptions"],["routerLink","/timeline","routerLinkActive","active"],["routerLink","/insights","routerLinkActive","active"],[1,"filters"],[1,"search"],["type","button",1,"search-mode",3,"click","title"],[4,"ngIf"],["type","text","aria-label","Search commits",1,"search-input",3,"ngModelChange","placeholder","ngModel"],["class","kbd",4,"ngIf"],["aria-label","Filter by branch",1,"select",3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf"],["aria-label","Filter by author",1,"select","author",3,"ngModelChange","ngModel"],["type","date","aria-label","Since date",1,"input","date",3,"ngModelChange","ngModel"],["type","date","aria-label","Until date",1,"input","date",3,"ngModelChange","ngModel"],["type","text","placeholder","path/to/file","aria-label","Filter by file path",1,"input","file",3,"ngModelChange","ngModel"],[1,"actions"],["class","btn btn-ghost clear-filters","title","Clear active filters",3,"click",4,"ngIf"],[1,"btn","btn-ghost","view-toggle",3,"click","title"],["title","Command palette (\u2318K)",1,"btn","btn-ghost","btn-icon",3,"click"],["viewBox","0 0 24 24","width","16","height","16","aria-hidden","true"],["fill","currentColor","d","M3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3Zm3-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1Zm2 4h2v2H8Zm4 0h6v2h-6Zm-4 4h6v2H8Zm8 0h2v2h-2Z"],["title","Keyboard shortcuts (?)",1,"btn","btn-ghost","btn-icon",3,"click"],["fill","currentColor","d","M11 18h2v-2h-2Zm1-16a8 8 0 0 0-8 8h2a6 6 0 1 1 9.6 4.8c-1.06.8-1.6 1.42-1.6 3.2v.5h-2v-.5c0-2.6.94-3.5 2.13-4.39A4 4 0 1 0 8 10H6a6 6 0 0 1 6-8Z"],[1,"btn","btn-ghost","btn-icon",3,"click","title"],["viewBox","0 0 24 24","width","16","height","16","aria-hidden","true",4,"ngIf"],["class","nl-chips",4,"ngIf"],["class","filter-chips",4,"ngIf"],[1,"brand-sub"],["viewBox","0 0 20 20","width","14","height","14","aria-hidden","true"],["fill","currentColor","d","M9 2a7 7 0 1 1-4.32 12.5l-3.1 3.09a1 1 0 0 1-1.42-1.42l3.1-3.09A7 7 0 0 1 9 2Zm0 2a5 5 0 1 0 0 10A5 5 0 0 0 9 4Z"],[1,"ai-pill"],[1,"kbd"],[3,"value"],["title","Clear active filters",1,"btn","btn-ghost","clear-filters",3,"click"],["fill","currentColor","d","M12 4V2m0 20v-2m8-8h2M2 12h2m13.66-6.34 1.42-1.42M4.92 19.08l1.42-1.42m0-11.32L4.92 4.92m14.16 14.16-1.42-1.42M12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10Z"],["fill","currentColor","d","M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z"],[1,"nl-chips"],[1,"chip-label"],["class","chip",4,"ngIf"],["class","chip",4,"ngFor","ngForOf"],["class","chip muted",4,"ngIf"],[1,"chip"],[1,"chip","muted"],[1,"filter-chips"],["class","chip active",3,"click",4,"ngIf"],[1,"chip","active",3,"click"]],template:function(t,i){if(t&1){let s=_();o(0,"header",1)(1,"div",2)(2,"span",3),l(3,"\u2387"),r(),o(4,"div",4)(5,"span",5),l(6,"Git History"),r(),h(7,Re,2,1,"span",6),r()(),o(8,"nav",7)(9,"a",8),l(10,"History"),r(),o(11,"a",9),l(12,"Timeline"),r(),o(13,"a",10),l(14,"Insights"),r()(),o(15,"div",11)(16,"label",12)(17,"button",13),d("click",function(){return m(s),u(i.toggleSearchMode())}),h(18,qe,3,0,"ng-container",14)(19,je,3,0,"ng-container",14),r(),o(20,"input",15,0),d("ngModelChange",function(f){return m(s),u(i.onSearchInput(f))}),r(),h(22,Ke,2,0,"kbd",16),r(),o(23,"select",17),d("ngModelChange",function(f){return m(s),u(i.onBranch(f))}),o(24,"option",18),l(25,"All branches"),r(),h(26,Ge,2,2,"option",19),r(),o(27,"select",20),d("ngModelChange",function(f){return m(s),u(i.onAuthor(f))}),o(28,"option",18),l(29,"All authors"),r(),h(30,Ze,2,2,"option",19),r(),o(31,"input",21),d("ngModelChange",function(f){return m(s),u(i.onSince(f))}),r(),o(32,"input",22),d("ngModelChange",function(f){return m(s),u(i.onUntil(f))}),r(),o(33,"input",23),d("ngModelChange",function(f){return m(s),u(i.onFile(f))}),r()(),o(34,"div",24),h(35,$e,2,1,"button",25),o(36,"button",26),d("click",function(){return m(s),u(i.toggleViewMode())}),l(37),r(),o(38,"button",27),d("click",function(){return m(s),u(i.state.paletteOpen.set(!0))}),P(),o(39,"svg",28),x(40,"path",29),r()(),W(),o(41,"button",30),d("click",function(){return m(s),u(i.state.shortcutsOpen.set(!0))}),P(),o(42,"svg",28),x(43,"path",31),r()(),W(),o(44,"button",32),d("click",function(){return m(s),u(i.theme.cycle())}),h(45,Qe,2,0,"svg",33)(46,Ue,2,0,"svg",33),r()()(),h(47,tt,8,5,"div",34)(48,lt,9,6,"div",35)}t&2&&(a(7),c("ngIf",i.totalLabel()),a(2),c("routerLinkActiveOptions",se(28,Be)),a(7),A("search-nl",i.state.searchMode()==="nl"),a(),c("title",i.searchModeTooltip()),E("aria-label",i.searchModeTooltip()),a(),c("ngIf",i.state.searchMode()==="classic"),a(),c("ngIf",i.state.searchMode()==="nl"),a(),c("placeholder",i.searchPlaceholder())("ngModel",i.searchValue()),a(2),c("ngIf",!i.searchValue()),a(),c("ngModel",i.state.filters().branch??""),a(3),c("ngForOf",i.branchOptions()),a(),c("ngModel",i.state.filters().author??""),a(3),c("ngForOf",i.state.authors()),a(),c("ngModel",i.state.filters().since??""),a(),c("ngModel",i.state.filters().until??""),a(),c("ngModel",i.state.filters().file??""),a(2),c("ngIf",i.activeFilterCount()),a(),c("title",i.viewModeTooltip()),E("aria-label",i.viewModeTooltip()),a(),C(" ",i.state.viewMode()==="grouped"?"Grouped":"Flat"," "),a(7),c("title",i.themeLabel()),E("aria-label",i.themeLabel()),a(),c("ngIf",i.theme.resolved()==="light"),a(),c("ngIf",i.theme.resolved()==="dark"),a(),c("ngIf",i.state.searchMode()==="nl"&&i.state.nlInterpretation()),a(),c("ngIf",i.activeFilterCount()))},dependencies:[T,I,S,j,Ce,xe,B,ve,R,q,fe,_e],styles:["[_nghost-%COMP%]{display:block;position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg-glass) 94%,transparent);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);border-bottom:1px solid var(--border-soft);box-shadow:var(--shadow-sm)}.toolbar[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;column-gap:.75rem;row-gap:.4rem;padding:.65rem 1rem .55rem}.brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;padding-right:.25rem}.brand-mark[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#06b6d4);color:var(--accent-fg);box-shadow:var(--shadow-glow);font-weight:700;font-size:18px}.brand-text[_ngcontent-%COMP%]{display:flex;flex-direction:column;line-height:1.1}.brand-title[_ngcontent-%COMP%]{font-weight:600}.brand-sub[_ngcontent-%COMP%]{font-size:11px;color:var(--fg-muted)}.filters[_ngcontent-%COMP%]{display:flex;gap:.4rem;align-items:center;min-width:0;justify-content:flex-end}.filters[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{min-width:0}.search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;gap:.35rem;flex:1 1 220px;min-width:0;max-width:360px;padding:0 .55rem;background:linear-gradient(180deg,color-mix(in oklab,var(--bg-surface) 94%,white 6%),var(--bg-surface));border:1px solid var(--border-soft);border-radius:999px;color:var(--fg-muted)}.search[_ngcontent-%COMP%]:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-ring)}.search-input[_ngcontent-%COMP%]{flex:1;border:0;outline:0;background:transparent;color:var(--fg-primary);font-size:13px;padding:.45rem 0}.search-input[_ngcontent-%COMP%]::placeholder{color:var(--fg-subtle)}.search[_ngcontent-%COMP%] .kbd[_ngcontent-%COMP%]{margin-left:.4rem}.date[_ngcontent-%COMP%]{width:8.25rem}.filters[_ngcontent-%COMP%] .input[_ngcontent-%COMP%], .filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{font-size:12px}.filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{max-width:9.5rem}.filters[_ngcontent-%COMP%] .select.author[_ngcontent-%COMP%]{max-width:8.5rem}.filters[_ngcontent-%COMP%] .input.file[_ngcontent-%COMP%]{width:9rem}.actions[_ngcontent-%COMP%]{display:flex;gap:.3rem;align-items:center}.nav[_ngcontent-%COMP%]{display:flex;gap:.15rem;padding:0}.nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{font-size:12px;color:var(--fg-muted);text-decoration:none;padding:.3rem .65rem;border-radius:var(--radius-sm);transition:background .15s ease,color .15s ease}.nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:var(--bg-elevated);color:var(--fg-primary)}.nav[_ngcontent-%COMP%] a.active[_ngcontent-%COMP%]{background:var(--bg-elevated);color:var(--accent);font-weight:600}.search-mode[_ngcontent-%COMP%]{background:transparent;border:0;padding:0;cursor:pointer;color:var(--fg-muted);display:flex;align-items:center}.search-mode[_ngcontent-%COMP%]:hover{color:var(--fg-primary)}.search.search-nl[_ngcontent-%COMP%]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 20%,transparent)}.ai-pill[_ngcontent-%COMP%]{font-size:10px;font-weight:700;letter-spacing:.04em;background:var(--accent);color:var(--accent-fg);padding:1px 5px;border-radius:4px}.view-toggle[_ngcontent-%COMP%]{font-size:11px;letter-spacing:.04em;text-transform:uppercase;padding:.35rem .6rem}.clear-filters[_ngcontent-%COMP%]{font-size:11px;color:var(--danger);border-color:color-mix(in oklab,var(--danger) 24%,transparent)}.nl-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.4rem 1rem;border-bottom:1px solid var(--border-soft);background:var(--bg-surface);font-size:11px}.filter-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:0 1rem .55rem;background:color-mix(in oklab,var(--bg-glass) 94%,transparent);font-size:11px}.chip-label[_ngcontent-%COMP%]{color:var(--fg-muted);margin-right:.2rem}.chip[_ngcontent-%COMP%]{background:var(--bg-elevated);border:1px solid var(--border-soft);padding:2px 8px;border-radius:999px;color:var(--fg-secondary)}button.chip[_ngcontent-%COMP%]{cursor:pointer;font-family:inherit}.chip.active[_ngcontent-%COMP%]{display:inline-flex;gap:.35rem;align-items:center;border-color:color-mix(in oklab,var(--accent) 35%,var(--border-soft));color:var(--fg-primary)}.chip.active[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--fg-muted);font-weight:700}.chip.muted[_ngcontent-%COMP%]{font-style:italic;color:var(--fg-subtle)}@media (max-width: 1280px){.filters[_ngcontent-%COMP%] .input.file[_ngcontent-%COMP%]{display:none}}@media (max-width: 1100px){.filters[_ngcontent-%COMP%] .date[_ngcontent-%COMP%]{display:none}.search[_ngcontent-%COMP%]{max-width:280px}}@media (max-width: 900px){.toolbar[_ngcontent-%COMP%]{grid-template-columns:auto minmax(0,1fr) auto;row-gap:.5rem}.nav[_ngcontent-%COMP%]{grid-column:1 / -1;order:5}.filters[_ngcontent-%COMP%] .select[_ngcontent-%COMP%]{display:none}}"],changeDetection:0})};function ct(n){return n.startsWith("origin/")||n.includes("/origin/")}var Q=class n{http=v(de);base="/api";naturalLanguage(e,t={}){let s=new pe().set("q",e).set("page",String(t.page??1)).set("pageSize",String(t.pageSize??100));for(let p of["author","since","until","branch","file"]){let f=t[p];f&&(s=s.set(p,String(f)))}return this.http.get(`${this.base}/search`,{params:s})}static \u0275fac=function(t){return new(t||n)};static \u0275prov=re({token:n,factory:n.\u0275fac,providedIn:"root"})};function pt(n,e){if(n&1&&(o(0,"div",2)(1,"span"),l(2),r()()),n&2){let t=e.ngIf;a(2),b(t)}}function dt(n,e){n&1&&(o(0,"div",3),x(1,"span",4),l(2," Loading commits\u2026 "),r())}var U=class n{state=v(O);git=v(we);search=v(Q);route=v(ge);commitsResp=Me(ye(this.state.filters).pipe(ie(200),oe(e=>{this.state.loading.set(!0),this.state.error.set(null);let i=this.state.searchMode()==="nl"&&(e.search||"").trim().length>0,s=!i&&(e.page??1)===1;return(i?this.search.naturalLanguage(e.search||"",e):s?this.git.streamCommits(e):this.git.getCommits(e)).pipe(ne(f=>(this.state.error.set(this.errorMessage(f)),this.state.loading.set(!1),te(null))))})),{initialValue:null});authorsLoaded=M(!1);pendingSharedCommit=M(null);loadingSharedCommit=M(null);constructor(){this.route.queryParamMap.subscribe(e=>{let t=mt(e.get("commit"));t&&(this.pendingSharedCommit.set(t),this.state.selectHash(t))}),k(()=>{let e=this.commitsResp();if(!e)return;let t=z(()=>this.state.selectedHash()),i=t?z(()=>Y(this.state.commits(),t)):void 0,s=i&&!Y(e.commits,i.hash)?[i,...e.commits]:e.commits;this.state.commits.set(s),this.state.total.set(e.total),this.state.page.set(e.page),this.state.pageSize.set(e.pageSize),this.state.loading.set(!1);let p=e.parsedQuery;this.state.nlInterpretation.set(p??null);let f=this.pendingSharedCommit();if(f){let ee=Y(s,f);if(ee){this.state.selectHash(ee.hash),this.pendingSharedCommit.set(null);return}this.loadSharedCommit(f);return}!z(()=>this.state.selectedHash())&&e.commits.length&&this.state.selectHash(e.commits[0].hash)}),k(()=>{this.commitsResp()&&!this.authorsLoaded()&&(this.authorsLoaded.set(!0),this.git.getAuthors().subscribe({next:e=>this.state.authors.set(e),error:()=>this.state.authors.set([])}),this.git.getBranches().subscribe({next:e=>this.state.branches.set(e),error:()=>this.state.branches.set([])}),this.git.getTags().subscribe({next:e=>this.state.tags.set(e),error:()=>this.state.tags.set([])}))})}errorMessage(e){if(e&&typeof e=="object"&&"error"in e){let t=e.error;if(t?.error)return t.error}return e instanceof Error?e.message:"Failed to load commits."}loadSharedCommit(e){this.loadingSharedCommit()!==e&&(this.loadingSharedCommit.set(e),this.git.getCommit(e).subscribe({next:t=>{this.state.commits.update(i=>i.some(s=>s.hash===t.hash)?i:[t,...i]),this.state.selectHash(t.hash),this.pendingSharedCommit.set(null),this.loadingSharedCommit.set(null)},error:()=>{this.state.error.set(`Shared commit not found: ${e}`),this.pendingSharedCommit.set(null),this.loadingSharedCommit.set(null)}}))}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=w({type:n,selectors:[["app-root"]],decls:6,vars:2,consts:[["class","status-bar",4,"ngIf"],["class","loading","aria-live","polite",4,"ngIf"],[1,"status-bar"],["aria-live","polite",1,"loading"],[1,"spinner"]],template:function(t,i){t&1&&(x(0,"app-toolbar"),h(1,pt,3,1,"div",0),x(2,"router-outlet"),h(3,dt,3,0,"div",1),x(4,"app-command-palette")(5,"app-shortcuts-modal")),t&2&&(a(),c("ngIf",i.state.error()),a(2),c("ngIf",i.state.loading()))},dependencies:[T,S,he,$,K,Z],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;background:var(--bg-app);color:var(--fg-primary)}.status-bar[_ngcontent-%COMP%]{padding:.5rem 1rem;background:#dc26261a;color:var(--danger);border-bottom:1px solid var(--border-soft);font-size:13px}.loading[_ngcontent-%COMP%]{position:fixed;bottom:1rem;right:1rem;display:flex;align-items:center;gap:.5rem;padding:.5rem .85rem;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:12px;color:var(--fg-secondary);z-index:80}.spinner[_ngcontent-%COMP%]{width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:_ngcontent-%COMP%_spin .7s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}"],changeDetection:0})};function mt(n){let e=n?.trim();return e&&/^[0-9a-f]{7,40}$/i.test(e)?e:null}function Y(n,e){let t=e.toLowerCase();return n.find(i=>i.hash.toLowerCase()===t||i.shortHash.toLowerCase()===t||i.hash.toLowerCase().startsWith(t))}ce(U,Te).catch(n=>console.error(n));
@@ -55,3 +55,4 @@ export declare function computeChurnByDay(pairs: Array<{
55
55
  * and recency. Inspired by Microsoft Research's "fault density" findings.
56
56
  */
57
57
  export declare function computeRiskyFiles(churn: FileChurn[], limit?: number): RiskyFile[];
58
+ //# sourceMappingURL=aggregations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregations.d.ts","sourceRoot":"","sources":["../../src/backend/aggregations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAoB5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,GAClD,SAAS,EAAE,CA4Bb;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,GAClD,cAAc,CAAC,YAAY,CAAC,CAmB9B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,SAAK,GAAG,SAAS,EAAE,CAiC7E"}
@@ -28,3 +28,4 @@ export declare class AnnotationsStore {
28
28
  private save;
29
29
  private withLock;
30
30
  }
31
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/backend/annotations.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AASD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,EAAE,CAAoC;gBAElC,OAAO,EAAE,MAAM;IAKrB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKhD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBtF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAe1C,IAAI;YAWJ,IAAI;IAOlB,OAAO,CAAC,QAAQ;CAQjB"}
@@ -49,3 +49,4 @@ export declare class SqliteIndex {
49
49
  private currentHead;
50
50
  private isAncestor;
51
51
  }
52
+ //# sourceMappingURL=sqliteIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqliteIndex.d.ts","sourceRoot":"","sources":["../../../src/backend/cache/sqliteIndex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,iBAAiB,QAAsE,CAAC;AAIrG;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA2BD,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAChC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,qBAAa,WAAW;IASpB,OAAO,CAAC,MAAM;IARhB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,SAAS,CAAyB;gBAGxC,OAAO,EAAE,MAAM,EACP,MAAM,EAAE,SAAS,EACzB,SAAS,CAAC,EAAE,eAAe;IAQ7B,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B,MAAM,IAAI,OAAO;IAIjB,iFAAiF;IACjF,IAAI,IAAI,OAAO;IAoCT,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAUlC,sEAAsE;IAChE,KAAK,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,UAAU,CAAC;YAevD,OAAO;IAuFrB,4DAA4D;IACtD,MAAM,CACV,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IA2BrF,KAAK;YAOS,YAAY;YAmBZ,WAAW;YAIX,UAAU;CAIzB"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/backend/dev-server.ts"],"names":[],"mappings":""}
@@ -119,3 +119,4 @@ export declare class GitService {
119
119
  getBranches(): Promise<string[]>;
120
120
  private git;
121
121
  }
122
+ //# sourceMappingURL=gitService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitService.d.ts","sourceRoot":"","sources":["../../src/backend/gitService.ts"],"names":[],"mappings":"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"}
@@ -38,3 +38,4 @@ export interface GroupingOptions {
38
38
  * with PR metadata if a GitHub token is provided and the remote is on GitHub.
39
39
  */
40
40
  export declare function buildCommitGroups(gitService: GitService, opts?: GroupingOptions): Promise<CommitGroup[]>;
41
+ //# sourceMappingURL=prGrouping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prGrouping.d.ts","sourceRoot":"","sources":["../../../src/backend/grouping/prGrouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,CAAC;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,WAAW,EAAE,CAAC,CA2GxB"}
@@ -14,3 +14,4 @@ export interface CommitImpact {
14
14
  }>;
15
15
  }
16
16
  export declare function getCommitImpact(gitService: GitService, hash: string): Promise<CommitImpact>;
17
+ //# sourceMappingURL=impact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"impact.d.ts","sourceRoot":"","sources":["../../src/backend/impact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAOD,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CA4CvB"}
@@ -9,3 +9,4 @@ export interface InsightsOptions {
9
9
  signal?: AbortSignal;
10
10
  }
11
11
  export declare function computeInsights(gitService: GitService, opts?: InsightsOptions): Promise<InsightsBundle>;
12
+ //# sourceMappingURL=insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/backend/insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAID,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,cAAc,CAAC,CA2EzB"}
@@ -8,6 +8,8 @@ export declare class AnthropicProvider implements LlmService {
8
8
  score(query: string, candidates: ScoreCandidate[]): Promise<ScoredCandidate[]>;
9
9
  summarize(text: string, opts?: {
10
10
  hint?: string;
11
+ maxTokens?: number;
11
12
  }): Promise<string>;
12
13
  private call;
13
14
  }
15
+ //# sourceMappingURL=anthropicProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropicProvider.d.ts","sourceRoot":"","sources":["../../../src/backend/llm/anthropicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB3E,qBAAa,iBAAkB,YAAW,UAAU;IAIhD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IAJf,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,QAAQ;gBAEX,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB;IAGjC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAsB9E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAU9E,IAAI;CAqBnB"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AnthropicProvider = void 0;
4
- const DEFAULT_MODEL = 'claude-3-5-haiku-latest';
4
+ const DEFAULT_MODEL = 'claude-sonnet-4-6';
5
+ const DEFAULT_SUMMARY_TOKENS = 700;
5
6
  const ENDPOINT = 'https://api.anthropic.com/v1/messages';
6
7
  const VERSION = '2023-06-01';
7
8
  class AnthropicProvider {
@@ -40,7 +41,7 @@ class AnthropicProvider {
40
41
  '---',
41
42
  text.length > 8000 ? text.slice(0, 8000) + '\n[truncated]' : text
42
43
  ].join('\n');
43
- const out = await this.call(prompt, 320);
44
+ const out = await this.call(prompt, opts?.maxTokens ?? DEFAULT_SUMMARY_TOKENS);
44
45
  return out.trim();
45
46
  }
46
47
  async call(prompt, maxTokens) {
@@ -62,11 +63,16 @@ class AnthropicProvider {
62
63
  throw new Error(`anthropic ${resp.status}: ${err.slice(0, 200)}`);
63
64
  }
64
65
  const data = (await resp.json());
65
- const block = data.content?.find((b) => b.type === 'text');
66
- return block?.text ?? '';
66
+ return extractText(data);
67
67
  }
68
68
  }
69
69
  exports.AnthropicProvider = AnthropicProvider;
70
+ function extractText(data) {
71
+ return (data.content ?? [])
72
+ .filter((block) => block.type === 'text' && typeof block.text === 'string')
73
+ .map((block) => block.text)
74
+ .join('\n');
75
+ }
70
76
  function parseScores(raw, length) {
71
77
  const result = {};
72
78
  const match = raw.match(/\[[\s\S]*\]/);
@@ -1 +1 @@
1
- {"version":3,"file":"anthropicProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/anthropicProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropicProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/anthropicProvider.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,7 @@ export declare class HeuristicProvider implements LlmService {
11
11
  score(query: string, candidates: ScoreCandidate[]): Promise<ScoredCandidate[]>;
12
12
  summarize(text: string, _opts?: {
13
13
  hint?: string;
14
+ maxTokens?: number;
14
15
  }): Promise<string>;
15
16
  }
17
+ //# sourceMappingURL=heuristicProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristicProvider.d.ts","sourceRoot":"","sources":["../../../src/backend/llm/heuristicProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoG3E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAStD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,SAAS;IAEhB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoC9E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ9F"}
@@ -21,7 +21,18 @@ const SYNONYMS = {
21
21
  ci: ['ci', 'pipeline', 'workflow', 'github-actions', 'jenkins', 'travis'],
22
22
  build: ['build', 'compile', 'webpack', 'vite', 'rollup', 'esbuild'],
23
23
  deps: ['deps', 'dependencies', 'upgrade', 'bump', 'update', 'package'],
24
- auth: ['auth', 'authentication', 'login', 'logout', 'signin', 'signout', 'oauth', 'jwt', 'session', 'token'],
24
+ auth: [
25
+ 'auth',
26
+ 'authentication',
27
+ 'login',
28
+ 'logout',
29
+ 'signin',
30
+ 'signout',
31
+ 'oauth',
32
+ 'jwt',
33
+ 'session',
34
+ 'token'
35
+ ],
25
36
  login: ['login', 'logon', 'signin', 'sign-in', 'auth', 'authentication'],
26
37
  payment: ['payment', 'payments', 'pay', 'billing', 'invoice', 'charge', 'stripe', 'checkout'],
27
38
  ui: ['ui', 'frontend', 'view', 'component', 'css', 'style', 'theme'],
@@ -31,9 +42,48 @@ const SYNONYMS = {
31
42
  release: ['release', 'tag', 'version', 'publish', 'changelog']
32
43
  };
33
44
  const STOP_WORDS = new Set([
34
- 'a', 'an', 'the', 'and', 'or', 'of', 'to', 'in', 'on', 'for', 'with', 'is', 'was', 'be', 'i', 'we', 'our',
35
- 'my', 'me', 'it', 'this', 'that', 'these', 'those', 'where', 'when', 'what', 'which', 'who', 'how',
36
- 'did', 'do', 'does', 'has', 'have', 'had', 'last', 'changes', 'change', 'commit', 'commits', 'related'
45
+ 'a',
46
+ 'an',
47
+ 'the',
48
+ 'and',
49
+ 'or',
50
+ 'of',
51
+ 'to',
52
+ 'in',
53
+ 'on',
54
+ 'for',
55
+ 'with',
56
+ 'is',
57
+ 'was',
58
+ 'be',
59
+ 'i',
60
+ 'we',
61
+ 'our',
62
+ 'my',
63
+ 'me',
64
+ 'it',
65
+ 'this',
66
+ 'that',
67
+ 'these',
68
+ 'those',
69
+ 'where',
70
+ 'when',
71
+ 'what',
72
+ 'which',
73
+ 'who',
74
+ 'how',
75
+ 'did',
76
+ 'do',
77
+ 'does',
78
+ 'has',
79
+ 'have',
80
+ 'had',
81
+ 'last',
82
+ 'changes',
83
+ 'change',
84
+ 'commit',
85
+ 'commits',
86
+ 'related'
37
87
  ]);
38
88
  // Reverse synonym map built once: every member token maps to all its bucket-mates.
39
89
  const REVERSE_SYNONYMS = (() => {
@@ -1 +1 @@
1
- {"version":3,"file":"heuristicProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/heuristicProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heuristicProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/heuristicProvider.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,15 @@ export { OpenAiProvider } from './openaiProvider';
10
10
  * 2. GHUI_LLM_PROVIDER env var.
11
11
  * 3. Auto-detect: anthropic key wins over openai key.
12
12
  * 4. Heuristic fallback.
13
+ *
14
+ * Model precedence:
15
+ * 1. Explicit config.model.
16
+ * 2. Provider-specific env var (ANTHROPIC_MODEL or OPENAI_MODEL).
17
+ * 3. GHUI_LLM_MODEL env var.
18
+ * 4. Provider default.
13
19
  */
14
20
  export declare function createLlmService(config?: LlmConfig): LlmService;
15
21
  export declare function getDefaultLlmService(config?: LlmConfig): LlmService;
16
22
  /** Force-reset for tests. */
17
23
  export declare function _resetLlmCache(): void;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/backend/llm/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAmB,UAAU,EAAE,MAAM,SAAS,CAAC;AAEtE,YAAY,EACV,SAAS,EACT,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,SAAc,GAAG,UAAU,CAqBnE;AAID,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,SAAc,GAAG,UAAU,CAavE;AAED,6BAA6B;AAC7B,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
@@ -22,24 +22,32 @@ Object.defineProperty(exports, "OpenAiProvider", { enumerable: true, get: functi
22
22
  * 2. GHUI_LLM_PROVIDER env var.
23
23
  * 3. Auto-detect: anthropic key wins over openai key.
24
24
  * 4. Heuristic fallback.
25
+ *
26
+ * Model precedence:
27
+ * 1. Explicit config.model.
28
+ * 2. Provider-specific env var (ANTHROPIC_MODEL or OPENAI_MODEL).
29
+ * 3. GHUI_LLM_MODEL env var.
30
+ * 4. Provider default.
25
31
  */
26
32
  function createLlmService(config = {}) {
27
33
  const env = process.env;
28
34
  const anthropicKey = config.anthropicApiKey || env.ANTHROPIC_API_KEY;
29
35
  const openaiKey = config.openaiApiKey || env.OPENAI_API_KEY;
30
36
  const requested = config.provider || env.GHUI_LLM_PROVIDER;
37
+ const anthropicModel = config.model || env.ANTHROPIC_MODEL || env.GHUI_LLM_MODEL;
38
+ const openaiModel = config.model || env.OPENAI_MODEL || env.GHUI_LLM_MODEL;
31
39
  if (requested === 'anthropic' && anthropicKey)
32
- return new anthropicProvider_1.AnthropicProvider(anthropicKey, config.model);
40
+ return new anthropicProvider_1.AnthropicProvider(anthropicKey, anthropicModel);
33
41
  if (requested === 'openai' && openaiKey)
34
- return new openaiProvider_1.OpenAiProvider(openaiKey, config.model);
42
+ return new openaiProvider_1.OpenAiProvider(openaiKey, openaiModel);
35
43
  if (requested === 'heuristic')
36
44
  return new heuristicProvider_1.HeuristicProvider();
37
45
  // Auto-detect when no explicit pick.
38
46
  if (!requested) {
39
47
  if (anthropicKey)
40
- return new anthropicProvider_1.AnthropicProvider(anthropicKey, config.model);
48
+ return new anthropicProvider_1.AnthropicProvider(anthropicKey, anthropicModel);
41
49
  if (openaiKey)
42
- return new openaiProvider_1.OpenAiProvider(openaiKey, config.model);
50
+ return new openaiProvider_1.OpenAiProvider(openaiKey, openaiModel);
43
51
  }
44
52
  return new heuristicProvider_1.HeuristicProvider();
45
53
  }
@@ -50,7 +58,9 @@ function getDefaultLlmService(config = {}) {
50
58
  provider: config.provider ?? process.env.GHUI_LLM_PROVIDER ?? '',
51
59
  a: !!(config.anthropicApiKey || process.env.ANTHROPIC_API_KEY),
52
60
  o: !!(config.openaiApiKey || process.env.OPENAI_API_KEY),
53
- m: config.model ?? ''
61
+ m: config.model ?? process.env.GHUI_LLM_MODEL ?? '',
62
+ am: process.env.ANTHROPIC_MODEL ?? '',
63
+ om: process.env.OPENAI_MODEL ?? ''
54
64
  });
55
65
  if (cached && cachedKey === key)
56
66
  return cached;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backend/llm/index.ts"],"names":[],"mappings":";;;AAkBA,4CAkBC;AAID,oDAWC;AAGD,wCAGC;AAzDD,2DAAwD;AACxD,2DAAwD;AACxD,qDAAkD;AAIlD,yDAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAAE,mHAAA,cAAc,OAAA;AAAE,6GAAA,QAAQ,OAAA;AACpD,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,SAAoB,EAAE;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,iBAAiB,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,CAAC;IAC5D,MAAM,SAAS,GACb,MAAM,CAAC,QAAQ,IAAK,GAAG,CAAC,iBAAiD,CAAC;IAE5E,IAAI,SAAS,KAAK,WAAW,IAAI,YAAY;QAAE,OAAO,IAAI,qCAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxG,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS;QAAE,OAAO,IAAI,+BAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5F,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,qCAAiB,EAAE,CAAC;IAE9D,qCAAqC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,YAAY;YAAE,OAAO,IAAI,qCAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,SAAS;YAAE,OAAO,IAAI,+BAAc,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,IAAI,qCAAiB,EAAE,CAAC;AACjC,CAAC;AAED,IAAI,MAAM,GAAsB,IAAI,CAAC;AACrC,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,SAAgB,oBAAoB,CAAC,SAAoB,EAAE;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAChE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACxD,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;KACtB,CAAC,CAAC;IACH,IAAI,MAAM,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,GAAG,GAAG,CAAC;IAChB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAA6B;AAC7B,SAAgB,cAAc;IAC5B,MAAM,GAAG,IAAI,CAAC;IACd,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/backend/llm/index.ts"],"names":[],"mappings":";;;AA8BA,4CAqBC;AAID,oDAaC;AAGD,wCAGC;AA1ED,2DAAwD;AACxD,2DAAwD;AACxD,qDAAkD;AAUlD,yDAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAAE,mHAAA,cAAc,OAAA;AAAE,6GAAA,QAAQ,OAAA;AACpD,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB;;;;;;;;;;;;;GAaG;AACH,SAAgB,gBAAgB,CAAC,SAAoB,EAAE;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,iBAAiB,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,CAAC;IAC5D,MAAM,SAAS,GACb,MAAM,CAAC,QAAQ,IAAK,GAAG,CAAC,iBAAiD,CAAC;IAC5E,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,cAAc,CAAC;IACjF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,cAAc,CAAC;IAE3E,IAAI,SAAS,KAAK,WAAW,IAAI,YAAY;QAC3C,OAAO,IAAI,qCAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS;QAAE,OAAO,IAAI,+BAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3F,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,qCAAiB,EAAE,CAAC;IAE9D,qCAAqC;IACrC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,YAAY;YAAE,OAAO,IAAI,qCAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC7E,IAAI,SAAS;YAAE,OAAO,IAAI,+BAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,qCAAiB,EAAE,CAAC;AACjC,CAAC;AAED,IAAI,MAAM,GAAsB,IAAI,CAAC;AACrC,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,SAAgB,oBAAoB,CAAC,SAAoB,EAAE;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAChE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACxD,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACnD,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QACrC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;KACnC,CAAC,CAAC;IACH,IAAI,MAAM,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,GAAG,GAAG,CAAC;IAChB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6BAA6B;AAC7B,SAAgB,cAAc;IAC5B,MAAM,GAAG,IAAI,CAAC;IACd,SAAS,GAAG,EAAE,CAAC;AACjB,CAAC"}
@@ -8,6 +8,8 @@ export declare class OpenAiProvider implements LlmService {
8
8
  score(query: string, candidates: ScoreCandidate[]): Promise<ScoredCandidate[]>;
9
9
  summarize(text: string, opts?: {
10
10
  hint?: string;
11
+ maxTokens?: number;
11
12
  }): Promise<string>;
12
13
  private call;
13
14
  }
15
+ //# sourceMappingURL=openaiProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiProvider.d.ts","sourceRoot":"","sources":["../../../src/backend/llm/openaiProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA2B3E,qBAAa,cAAe,YAAW,UAAU;IAI7C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IAJf,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,IAAI,QAAQ;gBAEX,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB;IAGjC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAoB9E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAU9E,IAAI;CAqBnB"}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OpenAiProvider = void 0;
4
- const DEFAULT_MODEL = 'gpt-4o-mini';
4
+ const DEFAULT_MODEL = 'gpt-4.1-nano';
5
+ const DEFAULT_SUMMARY_TOKENS = 700;
5
6
  const ENDPOINT = 'https://api.openai.com/v1/chat/completions';
6
7
  class OpenAiProvider {
7
8
  apiKey;
@@ -37,7 +38,7 @@ class OpenAiProvider {
37
38
  '---',
38
39
  text.length > 8000 ? text.slice(0, 8000) + '\n[truncated]' : text
39
40
  ].join('\n');
40
- const out = await this.call(prompt, 320, false);
41
+ const out = await this.call(prompt, opts?.maxTokens ?? DEFAULT_SUMMARY_TOKENS, false);
41
42
  return out.trim();
42
43
  }
43
44
  async call(prompt, maxTokens, json) {
@@ -59,10 +60,14 @@ class OpenAiProvider {
59
60
  throw new Error(`openai ${resp.status}: ${err.slice(0, 200)}`);
60
61
  }
61
62
  const data = (await resp.json());
62
- return data.choices?.[0]?.message?.content ?? '';
63
+ return extractContent(data);
63
64
  }
64
65
  }
65
66
  exports.OpenAiProvider = OpenAiProvider;
67
+ function extractContent(data) {
68
+ const content = data.choices?.[0]?.message?.content;
69
+ return typeof content === 'string' ? content : '';
70
+ }
66
71
  function parseScores(raw, length) {
67
72
  const result = {};
68
73
  // Try {scores:[...]} first, then bare array.
@@ -1 +1 @@
1
- {"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/openaiProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../../../src/backend/llm/openaiProvider.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,11 @@ export interface LlmService {
18
18
  score(query: string, candidates: ScoreCandidate[]): Promise<ScoredCandidate[]>;
19
19
  /**
20
20
  * Produce a short prose summary of an arbitrary block of text (typically
21
- * a unified diff or commit message body). Hard cap output at ~600 chars.
21
+ * a unified diff or commit message body).
22
22
  */
23
23
  summarize(text: string, opts?: {
24
24
  hint?: string;
25
+ maxTokens?: number;
25
26
  }): Promise<string>;
26
27
  }
27
28
  export interface LlmConfig {
@@ -30,3 +31,4 @@ export interface LlmConfig {
30
31
  openaiApiKey?: string;
31
32
  model?: string;
32
33
  }
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/backend/llm/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/E;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -16,3 +16,4 @@ export declare class PresetsStore {
16
16
  private load;
17
17
  private write;
18
18
  }
19
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/backend/presets.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AASD,qBAAa,YAAY;IACjB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAI9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKhD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQtC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;YAIf,IAAI;YAWJ,KAAK;CAMpB"}
@@ -18,3 +18,4 @@ export interface DateRange {
18
18
  export declare function parseDatePhrase(query: string, now?: Date): DateRange;
19
19
  /** Strip date-related phrases from the query so they don't pollute keyword search. */
20
20
  export declare function stripDatePhrase(query: string): string;
21
+ //# sourceMappingURL=datePhrase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datePhrase.d.ts","sourceRoot":"","sources":["../../../src/backend/search/datePhrase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,SAAS,CAmEhF;AAmBD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYrD"}
@@ -42,3 +42,4 @@ export interface NlSearchOptions {
42
42
  * 4. Sort by score, paginate.
43
43
  */
44
44
  export declare function runNlSearch(gitService: GitService, llm: LlmService, options: NlSearchOptions): Promise<NlSearchResult>;
45
+ //# sourceMappingURL=nlSearch.d.ts.map