@futdevpro/fdp-agent-memory 0.1.0 → 1.1.14
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/LICENSE +21 -0
- package/README.md +7 -7
- package/build/package.json +6 -5
- package/build/src/_cli/_collections/fam-arg.util.js +48 -0
- package/build/src/_cli/_collections/fam-cli.const.js +40 -0
- package/build/src/_cli/_collections/fam-output.util.js +86 -0
- package/build/src/_cli/_collections/fam-project-discovery.util.js +98 -0
- package/build/src/_cli/_commands/capture.command.js +73 -0
- package/build/src/_cli/_commands/config.command.js +93 -0
- package/build/src/_cli/_commands/doctor.command.js +124 -0
- package/build/src/_cli/_commands/errors.command.js +66 -0
- package/build/src/_cli/_commands/export.command.js +65 -0
- package/build/src/_cli/_commands/find-duplicates.command.js +97 -0
- package/build/src/_cli/_commands/import.command.js +136 -0
- package/build/src/_cli/_commands/init.command.js +147 -0
- package/build/src/_cli/_commands/read.command.js +109 -0
- package/build/src/_cli/_commands/scan-projects.command.js +138 -0
- package/build/src/_cli/_commands/scan.command.js +98 -0
- package/build/src/_cli/_commands/seed.command.js +40 -0
- package/build/src/_cli/_commands/serve.command.js +373 -0
- package/build/src/_cli/_commands/start.command.js +134 -0
- package/build/src/_cli/_commands/stats.command.js +54 -0
- package/build/src/_cli/_commands/write.command.js +103 -0
- package/build/src/_cli/_models/interfaces/fam-cli-global-options.interface.js +2 -0
- package/build/src/_cli/_models/interfaces/fam-cli-output.interface.js +9 -0
- package/build/src/_cli/_models/interfaces/fam-client-result.interface.js +2 -0
- package/build/src/_cli/_services/fam-client.service.js +140 -0
- package/build/src/_cli/register-commands.js +86 -0
- package/build/src/_collections/config-catalog.const.js +67 -1
- package/build/src/_collections/fam-console.util.js +367 -0
- package/build/src/_collections/fam-entry-bootstrap.util.js +158 -4
- package/build/src/_collections/fam-error-factory.util.js +0 -9
- package/build/src/_collections/fam-mcp-bridge.util.js +49 -0
- package/build/src/_collections/fam-reference-code.util.js +105 -0
- package/build/src/_collections/fam-version.const.js +10 -0
- package/build/src/_models/data-models/fam-entry-base-properties.const.js +1 -0
- package/build/src/_models/data-models/fam-entry.data-model.js +6 -0
- package/build/src/_models/data-models/fam-ingest-run.data-model.js +3 -1
- package/build/src/_models/data-models/fam-reference.data-model.js +7 -0
- package/build/src/_modules/capture/_collections/fam-capture.const.js +11 -0
- package/build/src/_modules/capture/_services/fam-auto-capture.control-service.js +87 -0
- package/build/src/_modules/capture/index.js +8 -0
- package/build/src/_modules/embedding/_collections/fam-embedding-prefix.util.js +77 -0
- package/build/src/_modules/embedding/_services/fam-duplicate-scan.control-service.js +202 -0
- package/build/src/_modules/embedding/_services/fam-embedding-pipeline.control-service.js +33 -9
- package/build/src/_modules/embedding/_services/fam-embedding.control-service.js +21 -2
- package/build/src/_modules/embedding/_services/fam-entry.data-service.js +135 -0
- package/build/src/_modules/embedding/_services/fam-vector-search.control-service.js +42 -32
- package/build/src/_modules/embedding/index.js +4 -1
- package/build/src/_modules/export/_collections/fam-export.const.js +22 -0
- package/build/src/_modules/export/_services/fam-export.control-service.js +64 -0
- package/build/src/_modules/export/index.js +8 -0
- package/build/src/_modules/ingest/_collections/fam-famignore.util.js +83 -0
- package/build/src/_modules/ingest/_collections/fam-file-routing.util.js +59 -48
- package/build/src/_modules/ingest/_collections/fam-git-repo.util.js +193 -0
- package/build/src/_modules/ingest/_collections/fam-project-identity.util.js +134 -0
- package/build/src/_modules/ingest/_collections/fam-scan-progress.util.js +57 -0
- package/build/src/_modules/ingest/_collections/fam-scan-summary.util.js +60 -0
- package/build/src/_modules/ingest/_collections/fam-scan-weight.util.js +53 -0
- package/build/src/_modules/ingest/_collections/fam-secret-exclude.util.js +37 -14
- package/build/src/_modules/ingest/_collections/fam-sliding-chunker.util.js +34 -0
- package/build/src/_modules/ingest/_collections/fam-ts-chunker.util.js +200 -14
- package/build/src/_modules/ingest/_services/fam-delta-compare.util.js +4 -1
- package/build/src/_modules/ingest/_services/fam-ingest-run.data-service.js +7 -4
- package/build/src/_modules/ingest/_services/fam-ingest.control-service.js +349 -17
- package/build/src/_modules/ingest/_services/fam-scan.control-service.js +25 -2
- package/build/src/_modules/ingest/index.js +3 -1
- package/build/src/_modules/mcp/_collections/fam-active-rules.util.js +56 -0
- package/build/src/_modules/mcp/_collections/fam-core-tools.const.js +47 -6
- package/build/src/_modules/mcp/_services/fam-capabilities-tool.service.js +4 -4
- package/build/src/_modules/mcp/_services/fam-capability-registry.service.js +224 -18
- package/build/src/_modules/mcp/_services/fam-mcp-adapter.service.js +4 -4
- package/build/src/_modules/mcp/_services/fam-mcp-server.service.js +4 -4
- package/build/src/_modules/mcp/_services/fam-read-tool.service.js +53 -1
- package/build/src/_modules/mcp/_services/fam-write-tool.service.js +104 -8
- package/build/src/_modules/mcp/index.js +4 -4
- package/build/src/_modules/migration/_collections/fam-claude-mem-normalize.util.js +66 -3
- package/build/src/_modules/migration/_collections/fam-prompt-aggregate.util.js +143 -0
- package/build/src/_modules/migration/_collections/fam-target-mapping.util.js +19 -0
- package/build/src/_modules/migration/_enums/fam-claude-mem-source.type-enum.js +6 -0
- package/build/src/_modules/migration/_models/interfaces/fam-claude-mem.interface.js +5 -0
- package/build/src/_modules/migration/_services/fam-agent-memory-reader.service.js +125 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-import.control-service.js +101 -18
- package/build/src/_modules/migration/_services/fam-import-dedup.data-service.js +53 -0
- package/build/src/_modules/migration/index.js +3 -1
- package/build/src/_modules/retrieval/_services/fam-retrieval-candidate.data-service.js +78 -4
- package/build/src/_modules/retrieval/_services/fam-retrieval.control-service.js +293 -50
- package/build/src/_modules/scope-reference/_collections/fam-scope-normalize.util.js +6 -3
- package/build/src/_modules/scope-reference/_services/fam-reference.data-service.js +18 -0
- package/build/src/_modules/scope-reference/_services/fam-scope-resolver.control-service.js +79 -20
- package/build/src/_routes/server/api/api.controller.js +34 -2
- package/build/src/_routes/server/client-app/client-app.control-service.js +1 -1
- package/build/src/_routes/server/server-status/server-status.controller.js +2 -1
- package/build/src/app.server.js +13 -1
- package/build/src/environments/environment.js +1 -1
- package/build/src/index.js +1 -1
- package/client-dist/{chunk-GHKRM4SM.js → chunk-I77GXVAQ.js} +1 -1
- package/client-dist/{chunk-LMTL7GA3.js → chunk-YXHWCJ5O.js} +1 -1
- package/client-dist/index.html +1 -1
- package/client-dist/{main-2KWB3QYK.js → main-PJPEDVJT.js} +1 -1
- package/package.json +6 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as Ve,A as Y,B as E,C as $,D as o,E as a,Ea as J,F as W,G as oe,Ga as de,H as T,I as u,Ia as A,J as c,Ja as Le,K as re,Ka as G,L as s,M as V,N as f,O as z,P as ee,Q as ke,R as v,S as w,T as S,U as B,V as I,W as ae,X as Fe,Y as j,Z as O,_ as be,a as R,aa as he,b as Q,ba as le,ca as Ce,d as b,da as L,h as ge,j as F,k as D,l as fe,la as ye,m,n as _,na as se,o as Ee,oa as q,pa as P,qa as ve,r as l,ra as Z,s as y,sa as K,t as C,ta as H,u as M,ua as Ie,v as k,va as we,w as $e,wa as Se,x as N,xa as Me,y as x,ya as X,z as xe}from"./chunk-LMTL7GA3.js";var h=function(i){return i.rules="rules",i.documents="documents",i.codebase="codebase",i.knowledge="knowledge",i.codingPatterns="coding_patterns",i.memory="memory",i.reference="reference",i}(h||{});var U={[h.rules]:"Rules",[h.documents]:"Documents",[h.codebase]:"Codebase",[h.knowledge]:"Knowledge",[h.codingPatterns]:"Coding Patterns",[h.memory]:"Memory",[h.reference]:"Reference"},Te={[h.rules]:"glob\xE1lis / projekt-bound",[h.documents]:"projekt-bound",[h.codebase]:"projekt-bound",[h.knowledge]:"glob\xE1lis / domain",[h.codingPatterns]:"glob\xE1lis",[h.memory]:"session / projekt-bound",[h.reference]:"helper (alias \u2192 canonical)"},te=[h.rules,h.documents,h.codebase,h.knowledge,h.codingPatterns,h.memory],Pe={[h.rules]:["coding","architecture","naming","behavior","security","project"],[h.documents]:["spec","feature_request","bug_report","architecture_doc","dev_note","meeting_note","research_note"],[h.codebase]:["source_file","symbol","function","class","interface","config","dataflow","runflow","module_summary"],[h.knowledge]:["fact","concept","definition","relationship","domain_knowledge","company_knowledge","user_knowledge","decision_rationale"],[h.codingPatterns]:["pattern","anti_pattern","recipe","example","template","migration_pattern","debugging_pattern"],[h.memory]:["session_history","development_history","decision_history","incident","lesson_learned","important_note","user_preference","project_event","temporary_context","resolved_issue"]};var De=(i,d)=>d._id,Ge=()=>["/maintenance"];function Ue(i,d){if(i&1&&(o(0,"option",8),s(1),a()),i&2){let e=d.$implicit,t=c();k("value",e),l(),V(t.tableLabel(e))}}function Qe(i,d){i&1&&(o(0,"div",9),s(1,"Loading\u2026"),a())}function Ze(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;ke(" \xB7 new ",e.verdicts.new," / mod ",e.verdicts.modified," / eq ",e.verdicts.equal," / del ",e.verdicts.deleted," ")}}function Je(i,d){if(i&1){let e=T();o(0,"button",25),u("click",function(){m(e);let n=c().$implicit,r=c(2);return _(r.viewRunErrors(n))}),s(1,"errors"),a()}}function Ye(i,d){if(i&1&&(o(0,"div",26),s(1),a()),i&2){let e,t=d.$implicit;l(),ke(" ",(e=t.sourceFilePath)!==null&&e!==void 0?e:"(no path)"," [",t.chunkIndex,"/",t.chunkTotal,"] \u2014 ",t.content==null?null:t.content.slice(0,80),"\u2026 ")}}function et(i,d){i&1&&(o(0,"div",27),s(1,"Nincs chunk ehhez a run-hoz."),a())}function tt(i,d){if(i&1&&(o(0,"div",24),E(1,Ye,2,4,"div",26,De,!1,et,2,0,"div",27),a()),i&2){let e,t=c().$implicit,n=c(2);M("data-testid","ma-ingest-chunks-"+t._id),l(),$(n.chunksFor((e=t._id)!==null&&e!==void 0?e:""))}}function nt(i,d){if(i&1){let e=T();o(0,"div",13)(1,"div",14)(2,"div",15)(3,"span",16),s(4),a(),o(5,"span",17),s(6),j(7,"date"),a(),o(8,"div",18),s(9),C(10,Ze,1,4),s(11),a()(),o(12,"div",19)(13,"span",20),s(14),a(),C(15,Je,2,0,"button",21),o(16,"button",22),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleRun(n))}),s(17),a(),o(18,"button",23),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.deleteRun(n))}),s(19,"delete"),a()()(),C(20,tt,4,2,"div",24),a()}if(i&2){let e,t,n,r,p,g=d.$implicit,ie=c(2);N("border-red-700",ie.isFailed(g))("border-neutral-800",!ie.isFailed(g)),M("data-testid","ma-ingest-run-"+g._id),l(4),V((e=g.trigger)!==null&&e!==void 0?e:"\u2014"),l(2),z(" \xB7 ",ie.tableLabel(g.table)," \xB7 ",g.__created?O(7,23,g.__created,"short"):"\u2014",""),l(3),ee(" files ",(t=g.filesProcessed)!==null&&t!==void 0?t:0," (skip ",(t=g.filesSkipped)!==null&&t!==void 0?t:0,") \xB7 chunks ",(t=g.chunkCount)!==null&&t!==void 0?t:0," "),l(),x(g.verdicts?10:-1),l(),f(" \xB7 cost ",g.embedTokenCost!==void 0?g.embedTokenCost:"n/a"," "),l(2),N("bg-emerald-700",g.status==="ok")("bg-red-700",ie.isFailed(g)),M("data-testid","ma-ingest-status-"+g._id),l(),f(" ",(n=g.status)!==null&&n!==void 0?n:"ok"," "),l(),x(ie.isFailed(g)?15:-1),l(),M("data-testid","ma-ingest-expand-"+g._id),l(),f(" ",ie.isExpanded((r=g._id)!==null&&r!==void 0?r:"")?"collapse":"expand"," "),l(3),x(ie.isExpanded((p=g._id)!==null&&p!==void 0?p:"")?20:-1)}}function it(i,d){i&1&&(o(0,"div",12),s(1,"Nincs ingest-run."),a())}function at(i,d){if(i&1&&(o(0,"div",10),E(1,nt,21,26,"div",11,De,!1,it,2,0,"div",12),a()),i&2){let e=c();l(),$(e.runs_$())}}var Be=(()=>{class i{api=F(A);router=F(se);notify=F(J);popup=F(de);mainTables=te;runs_$=y([]);loading_$=y(!0);tableFilter="";expanded_$=y(new Set);runChunks_$=y({});ngOnInit(){return b(this,null,function*(){yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getIngestRuns(this.tableFilter||void 0);if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}this.runs_$.set(e.data?.runs??[]),this.loading_$.set(!1)})}tableLabel(e){return e?Array.isArray(e)?e.map(t=>U[t]).join(", "):U[e]:"\u2014"}isExpanded(e){return this.expanded_$().has(e)}toggleRun(e){return b(this,null,function*(){let t=e._id??"",n=new Set(this.expanded_$());if(n.has(t)){n.delete(t),this.expanded_$.set(n);return}n.add(t),this.expanded_$.set(n);let r=Array.isArray(e.table)?e.table[0]:e.table;if(!r)return;let p=yield this.api.getItems(r,{ingestRunId:t,pageSize:200});p.data&&this.runChunks_$.set(Q(R({},this.runChunks_$()),{[t]:p.data.items}))})}chunksFor(e){return this.runChunks_$()[e]??[]}isFailed(e){return e.status==="failed"||e.status==="partial-failed"}deleteRun(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Run csoportos soft-delete",message:`A(z) ${e._id} run minden chunkja t\xF6rl\xE9sre ker\xFCl (soft-delete). Folytatod?`,confirmBtn:"Delete run"})))return;let n=yield this.api.invokeCapability("delete_ingest_run",{ingestRunId:e._id});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Run t\xF6r\xF6lve (soft-delete)."),yield this.load()})}viewRunErrors(e){this.router.navigate(["/errors"],{queryParams:{ingestRunId:e._id}})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-ingest-timeline"]],standalone:!0,features:[B],decls:16,vars:4,consts:[["data-testid","ma-ingest-timeline",1,"mx-auto","max-w-5xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","items-center","gap-2","text-sm"],["data-testid","ma-ingest-table-filter",1,"rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["data-testid","ma-ingest-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-ingest-list",1,"flex","flex-col","gap-2"],[1,"rounded","border","bg-neutral-900",3,"border-red-700","border-neutral-800"],[1,"py-6","text-center","opacity-50"],[1,"rounded","border","bg-neutral-900"],[1,"flex","items-center","justify-between","px-3","py-2","text-sm"],[1,"flex-1"],[1,"font-medium"],[1,"opacity-50"],[1,"mt-1","text-xs","opacity-60"],[1,"flex","items-center","gap-2"],[1,"rounded","px-2","py-0.5","text-xs"],[1,"rounded","px-2","py-1","text-xs","text-red-300","hover:bg-neutral-800"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"rounded","px-2","py-1","text-xs","text-red-400","hover:bg-neutral-800",3,"click"],[1,"border-t","border-neutral-800","p-2"],[1,"rounded","px-2","py-1","text-xs","text-red-300","hover:bg-neutral-800",3,"click"],[1,"rounded","px-2","py-1","text-xs","opacity-80"],[1,"py-2","text-center","text-xs","opacity-40"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"a",3),s(5,"\u2190 Maintenance"),a(),o(6,"h1",4),s(7,"Ingest timeline"),a()(),o(8,"div",5)(9,"select",6),S("ngModelChange",function(p){return w(n.tableFilter,p)||(n.tableFilter=p),p}),u("ngModelChange",function(){return n.load()}),o(10,"option",7),s(11,"\xF6sszes t\xE1r"),a(),E(12,Ue,2,2,"option",8,Y),a()()(),C(14,Qe,2,0,"div",9)(15,at,4,1,"div",10),a()),t&2&&(l(4),k("routerLink",I(3,Ge)),l(5),v("ngModel",n.tableFilter),l(3),$(n.mainTables),l(2),x(n.loading_$()?14:15))},dependencies:[L,le,X,Se,Me,we,K,H,P,q,G],encapsulation:2})}return i})();var ot=(i,d)=>d.table,rt=()=>["/maintenance/search"],Ae=()=>["/maintenance/scopes"],lt=()=>["/maintenance/ingest"],st=()=>["/maintenance/settings"],dt=()=>["/errors"],ct=i=>["/maintenance",i];function pt(i,d){i&1&&(o(0,"div",7),s(1," A FAM szerver nem el\xE9rhet\u0151 (port 39185). Ind\xEDtsd el a szervert, majd friss\xEDts. "),a())}function mt(i,d){i&1&&(o(0,"div",8),s(1,"Loading\u2026"),a())}function _t(i,d){i&1&&(o(0,"div",19)(1,"span",21),s(2,"Add first entry"),a(),o(3,"span",21),s(4,"Run scan"),a()())}function ut(i,d){i&1&&(o(0,"div",20),s(1,"Configure embedding \u2192 Settings"),a())}function gt(i,d){if(i&1&&(o(0,"a",10)(1,"div",12)(2,"span",13),s(3),a(),o(4,"span",14),s(5),a()(),o(6,"div",15),s(7),a(),o(8,"div",16),s(9),j(10,"date"),a(),o(11,"div",17),s(12),a(),o(13,"div",18),s(14),a(),C(15,_t,5,0,"div",19)(16,ut,2,0,"div",20),a()),i&2){let e=d.$implicit;k("routerLink",ae(20,ct,e.table)),M("data-testid","ma-table-card-"+e.table),l(3),V(e.label),l(),N("bg-neutral-700",e.status==="empty")("bg-red-700",e.status==="bootstrap-skip"||e.status==="config-error")("bg-emerald-700",e.status==="ok"),M("data-testid","ma-table-status-"+e.table),l(),f(" ",e.status," "),l(2),f("",e.count," bejegyz\xE9s"),l(2),f(" utols\xF3 ingest: ",e.lastIngest?O(10,17,e.lastIngest,"short"):"\u2014"," "),l(3),f("embedding: ",e.embeddingState,""),l(2),f("scope: ",e.scopeHint,""),l(),x(e.status==="empty"?15:-1),l(),x(e.status==="bootstrap-skip"?16:-1)}}function ft(i,d){if(i&1&&(o(0,"div",11)(1,"h2",22),s(2,"Helper (nem kereshet\u0151 t\xE1r)"),a(),o(3,"a",23)(4,"div",12)(5,"span",13),s(6),a(),o(7,"span",24),s(8,"helper"),a()(),o(9,"div",15),s(10),a(),o(11,"div",25),s(12,"alias \u2192 canonical felold\xE1s \xB7 scope-fa kezel\xE9s"),a()()()),i&2){let e=d;l(3),k("routerLink",I(3,Ae)),l(3),V(e.label),l(4),f("",e.count," reference-bejegyz\xE9s")}}function xt(i,d){if(i&1&&(o(0,"div",9),E(1,gt,17,22,"a",10,ot),a(),C(3,ft,13,4,"div",11)),i&2){let e,t=c();l(),$(t.cards_$()),l(2),x((e=t.referenceCard_$())?3:-1,e)}}var Re=(()=>{class i{api=F(A);adminState=F(Le);loading_$=y(!0);cards_$=y([]);referenceCard_$=y(null);get serverUnreachable_$(){return this.adminState.serverUnreachable_$}totalEntries_$=Ve(()=>this.cards_$().reduce((e,t)=>e+t.count,0));ngOnInit(){return b(this,null,function*(){this.adminState.startPolling(),yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getStats();if(e.error){this.adminState.pushBanner({key:"landing-stats-error",color:"red",title:"T\xE1r-statisztika nem el\xE9rhet\u0151",message:`${e.error.errorCode}: ${e.error.message}`,errorsLink:!0}),this.loading_$.set(!1);return}let t={};for(let r of e.data?.tables??[])t[r.table]=r;let n=[];for(let r of te)n.push(yield this.buildCard(r,t[r]));this.cards_$.set(n),this.referenceCard_$.set(yield this.buildReferenceCard()),this.loading_$.set(!1)})}buildCard(e,t){return b(this,null,function*(){let n=t?.count??0,r=yield this.resolveEmbeddingState(e),p=this.deriveStatus(n,r);return{table:e,label:U[e],scopeHint:Te[e],count:n,lastIngest:t?.lastModified??null,status:p,embeddingState:r}})}buildReferenceCard(){return b(this,null,function*(){let t=(yield this.api.invokeCapability("get_reference_stats")).data??{},n=t.count??t.total??0;return{table:h.reference,label:U[h.reference],scopeHint:Te[h.reference],count:n,lastIngest:null,status:n?"ok":"empty",embeddingState:"helper (alias-resolve)"}})}resolveEmbeddingState(e){return b(this,null,function*(){let t=yield this.api.getConfig(e);if(t.error||!t.data)return"nincs (config nem el\xE9rhet\u0151)";let n=t.data,r=n.effective["embedding.provider"],p=n.effective["embedding.model"];if(!r||r.value===null||r.value==="")return"nincs konfigur\xE1lva";let g=r.resolvedFrom==="builtin"||r.resolvedFrom==="global"?"global default":r.resolvedFrom;return`${r.value}${p?.value?" / "+p.value:""} (${g})`})}deriveStatus(e,t){return t.startsWith("nincs")?"bootstrap-skip":e?"ok":"empty"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-landing"]],standalone:!0,features:[B],decls:22,vars:13,consts:[["data-testid","ma-landing",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-6","flex","items-end","justify-between"],[1,"text-2xl","font-semibold"],[1,"text-sm","opacity-60"],[1,"flex","gap-2","text-sm"],[1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"routerLink"],["data-testid","ma-landing-unreachable",1,"mb-4","rounded","border","border-red-600","bg-red-950","px-4","py-3","text-sm","text-red-200"],["data-testid","ma-landing-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-landing-cards",1,"grid","grid-cols-1","gap-4","sm:grid-cols-2","lg:grid-cols-3"],[1,"block","rounded-lg","border","border-neutral-800","bg-neutral-900","p-4","transition","hover:border-neutral-600",3,"routerLink"],[1,"mt-8"],[1,"flex","items-center","justify-between"],[1,"text-lg","font-medium"],[1,"rounded-full","px-2","py-0.5","text-xs"],[1,"mt-2","text-sm","opacity-70"],[1,"text-xs","opacity-50"],[1,"mt-2","text-xs","opacity-60"],[1,"text-xs","opacity-40"],[1,"mt-3","flex","gap-2","text-xs"],[1,"mt-3","text-xs","text-red-300"],[1,"rounded","border","border-neutral-700","px-2","py-1"],[1,"mb-2","text-sm","uppercase","tracking-wide","opacity-50"],["data-testid","ma-reference-card",1,"block","max-w-sm","rounded-lg","border","border-dashed","border-amber-700/60","bg-neutral-900","p-4","hover:border-amber-500",3,"routerLink"],[1,"rounded-full","bg-amber-800","px-2","py-0.5","text-xs"],[1,"mt-1","text-xs","opacity-50"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"h1",3),s(5,"FDP Agent Memory \u2014 Maintenance"),a(),o(6,"p",4),s(7),a()(),o(8,"div",5)(9,"a",6),s(10,"Search"),a(),o(11,"a",6),s(12,"Scopes"),a(),o(13,"a",6),s(14,"Ingest"),a(),o(15,"a",6),s(16,"Settings"),a(),o(17,"a",6),s(18,"Errors"),a()()(),C(19,pt,2,0,"div",7)(20,mt,2,0,"div",8)(21,xt,4,1),a()),t&2&&(l(7),f("6 f\u0151 RAG-t\xE1r + reference helper \xB7 ",n.totalEntries_$()," bejegyz\xE9s"),l(2),k("routerLink",I(8,rt)),l(2),k("routerLink",I(9,Ae)),l(2),k("routerLink",I(10,lt)),l(2),k("routerLink",I(11,st)),l(2),k("routerLink",I(12,dt)),l(2),x(n.serverUnreachable_$()?19:-1),l(),x(n.loading_$()?20:21))},dependencies:[L,le,P,q,G],encapsulation:2})}return i})();var Ne=(i,d)=>d.scopeId,bt=(i,d)=>d._id,ht=()=>["/maintenance"],Ct=i=>({$implicit:i,depth:0}),yt=()=>[],vt=(i,d)=>({$implicit:i,depth:d});function wt(i,d){i&1&&(o(0,"div",9),s(1,"Loading\u2026"),a())}function St(i,d){if(i&1&&oe(0,13),i&2){let e=d.$implicit;c(2);let t=re(16);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ct,e))}}function Mt(i,d){i&1&&(o(0,"div",14),s(1,"Nincs scope (a write/scan auto-regisztr\xE1lja)."),a())}function kt(i,d){if(i&1&&(o(0,"div",22),s(1),a()),i&2){let e=c();l(),f("aliases: ",e.aliases==null?null:e.aliases.join(", "),"")}}function Tt(i,d){if(i&1){let e=T();o(0,"div",15)(1,"div",20),s(2),a(),o(3,"div",21),s(4),a(),C(5,kt,2,1,"div",22),o(6,"button",23),u("click",function(){let n=m(e),r=c(2);return _(r.viewEntries(n))}),s(7,"View entries"),a()()}if(i&2){let e,t=d;l(2),V(t.canonicalName),l(2),z("layer: ",t.layer," \xB7 ",(e=t.entryCount)!==null&&e!==void 0?e:0," entry"),l(),x(t.aliases!=null&&t.aliases.length?5:-1)}}function Et(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" category: ",e.category," \xB7 ")}}function $t(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" layer: ",e.scopeLayer," \xB7 ")}}function Ft(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" t\xE1rak: ",e.ragScopes==null?null:e.ragScopes.join(", ")," ")}}function Vt(i,d){if(i&1){let e=T();o(0,"div",17)(1,"div",24)(2,"div",25)(3,"div",20)(4,"span",26),s(5),a(),s(6),a(),o(7,"div",27),C(8,Et,1,1)(9,$t,1,1)(10,Ft,1,1),a()(),o(11,"div",28)(12,"button",29),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.openEditForm(n))}),s(13,"edit"),a(),o(14,"button",29),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleActive(n))}),s(15),a()()()()}if(i&2){let e,t=d.$implicit;M("data-testid","ma-reference-"+t._id),l(3),N("opacity-40",!t.isActive),l(2),V(((e=t.aliasTerms)!==null&&e!==void 0?e:I(14,yt)).join(" / ")),l(),f(" \u2192 ",t.canonicalTerm," "),l(2),x(t.category?8:-1),l(),x(t.scopeLayer?9:-1),l(),x(t.ragScopes!=null&&t.ragScopes.length?10:-1),l(4),N("text-emerald-400",!t.isActive)("text-amber-400",t.isActive),M("data-testid","ma-reference-toggle-"+t._id),l(),f(" ",t.isActive?"deactivate":"activate"," ")}}function It(i,d){i&1&&(o(0,"div",18),s(1,"Nincs reference-bejegyz\xE9s."),a())}function Lt(i,d){if(i&1){let e=T();o(0,"div",19)(1,"h3",30),s(2),a(),o(3,"input",31),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formCanonical,n)||(r.formCanonical=n),_(n)}),a(),o(4,"input",32),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formAliases,n)||(r.formAliases=n),_(n)}),a(),o(5,"textarea",33),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formDescription,n)||(r.formDescription=n),_(n)}),a(),o(6,"div",34)(7,"input",35),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formCategory,n)||(r.formCategory=n),_(n)}),a(),o(8,"input",36),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formScopeLayer,n)||(r.formScopeLayer=n),_(n)}),a()(),o(9,"input",37),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formRagScopes,n)||(r.formRagScopes=n),_(n)}),a(),o(10,"div",38)(11,"button",39),u("click",function(){m(e);let n=c(2);return _(n.submitForm())}),s(12,"Save"),a(),o(13,"button",40),u("click",function(){m(e);let n=c(2);return _(n.formOpen_$.set(!1))}),s(14,"Cancel"),a()()()}if(i&2){let e=c(2);l(2),V(e.editId?"Edit reference":"New reference"),l(),v("ngModel",e.formCanonical),l(),v("ngModel",e.formAliases),l(),v("ngModel",e.formDescription),l(2),v("ngModel",e.formCategory),l(),v("ngModel",e.formScopeLayer),l(),v("ngModel",e.formRagScopes)}}function Pt(i,d){if(i&1&&(o(0,"div",10)(1,"div")(2,"h2",11),s(3,"Scope tree"),a(),o(4,"div",12),E(5,St,1,4,"ng-container",13,Ne,!1,Mt,2,0,"div",14),a(),C(8,Tt,8,4,"div",15),a(),o(9,"div")(10,"h2",11),s(11,"Reference (alias \u2192 canonical)"),a(),o(12,"div",16),E(13,Vt,16,15,"div",17,bt,!1,It,2,0,"div",18),a()()(),C(16,Lt,15,7,"div",19)),i&2){let e,t=c();l(5),$(t.scopeTree_$()),l(3),x((e=t.selectedNode_$())?8:-1,e),l(5),$(t.references_$()),l(3),x(t.formOpen_$()?16:-1)}}function Dt(i,d){if(i&1&&oe(0,13),i&2){let e=d.$implicit,t=c().depth;c();let n=re(16);k("ngTemplateOutlet",n)("ngTemplateOutletContext",Fe(2,vt,e,t+1))}}function Bt(i,d){if(i&1){let e=T();o(0,"div")(1,"button",41),u("click",function(){let n=m(e).$implicit,r=c();return _(r.selectNode(n))}),o(2,"span",42),s(3),a(),s(4),o(5,"span",43),s(6),a()(),E(7,Dt,1,5,"ng-container",13,Ne),a()}if(i&2){let e,t=d.$implicit,n=d.depth;l(),$e("padding-left",8+n*16,"px"),M("data-testid","ma-scope-node-"+t.scopeId),l(2),f("",t.layer,":"),l(),f(" ",t.canonicalName," "),l(2),f("(",(e=t.entryCount)!==null&&e!==void 0?e:0,")"),l(),$(t.children)}}var We=(()=>{class i{api=F(A);route=F(ye);router=F(se);notify=F(J);popup=F(de);scopeTree_$=y([]);selectedNode_$=y(null);references_$=y([]);loading_$=y(!0);formOpen_$=y(!1);editId=null;formCanonical="";formAliases="";formDescription="";formCategory="";formScopeLayer="";formRagScopes="";focusScopeId=null;ngOnInit(){return b(this,null,function*(){this.focusScopeId=this.route.snapshot.queryParamMap.get("focus"),yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0),yield Promise.all([this.loadScopeTree(),this.loadReferences()]),this.loading_$.set(!1),this.focusScopeId&&this.focusNode(this.focusScopeId)})}loadScopeTree(){return b(this,null,function*(){let e=yield this.api.invokeCapability("get_scope_tree");if(e.error)return;let t=e.data??{};this.scopeTree_$.set(t.tree??t.nodes??[])})}loadReferences(){return b(this,null,function*(){let e=yield this.api.invokeCapability("get_reference_stats");if(e.error)return;let t=e.data??{};this.references_$.set(t.references??t.items??[])})}selectNode(e){this.selectedNode_$.set(e)}focusNode(e){let t=this.findNode(this.scopeTree_$(),e);t&&this.selectedNode_$.set(t)}findNode(e,t){for(let n of e){if(n.scopeId===t)return n;let r=this.findNode(n.children??[],t);if(r)return r}return null}viewEntries(e){this.router.navigate(["/maintenance"],{queryParams:{scope:e.scopeId}})}openNewForm(){this.editId=null,this.formCanonical="",this.formAliases="",this.formDescription="",this.formCategory="",this.formScopeLayer="",this.formRagScopes="",this.formOpen_$.set(!0)}openEditForm(e){this.editId=e._id??null,this.formCanonical=e.canonicalTerm,this.formAliases=(e.aliasTerms??[]).join(", "),this.formDescription=e.description??"",this.formCategory=e.category??"",this.formScopeLayer=e.scopeLayer??"",this.formRagScopes=(e.ragScopes??[]).join(", "),this.formOpen_$.set(!0)}submitForm(){return b(this,null,function*(){if(!this.formCanonical.trim()){this.notify.newErrorMessage("A canonical term k\xF6telez\u0151.");return}let e={canonicalTerm:this.formCanonical,aliasTerms:this.parseCsv(this.formAliases),description:this.formDescription||void 0,category:this.formCategory||void 0,scopeLayer:this.formScopeLayer||void 0,ragScopes:this.parseCsv(this.formRagScopes)},t=yield this.api.invokeCapability(this.editId?"update_reference":"create_reference",R({id:this.editId??void 0},e));if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(this.editId?"Reference friss\xEDtve.":"Reference l\xE9trehozva."),this.formOpen_$.set(!1),yield this.loadReferences(),yield this.suggestRebuild()})}toggleActive(e){return b(this,null,function*(){let t=yield this.api.invokeCapability("toggle_reference",{id:e._id,isActive:!e.isActive});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`Reference ${e.isActive?"inaktiv\xE1lva":"aktiv\xE1lva"}.`),yield this.loadReferences(),yield this.suggestRebuild()})}rebuildIndex(){return b(this,null,function*(){let e=yield this.api.invokeCapability("rebuild_reference_index");if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`);return}this.notify.newSuccessMessage("Reference-index \xFAjra\xE9p\xEDtve.")})}suggestRebuild(){return b(this,null,function*(){(yield this.popup.newConfirm({title:"Reference-index rebuild",message:"A reference-cache TTL-es (60s). Most \xFAjra\xE9p\xEDtsem az indexet, hogy a v\xE1ltoz\xE1s azonnal hasson?",confirmBtn:"Rebuild now"}))&&(yield this.rebuildIndex())})}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-scopes"]],standalone:!0,features:[B],decls:17,vars:3,consts:[["scopeNode",""],["data-testid","ma-scopes",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","gap-2","text-sm"],["data-testid","ma-scopes-new-ref",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-scopes-rebuild",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-scopes-loading",1,"py-10","text-center","opacity-60"],[1,"grid","grid-cols-1","gap-6","lg:grid-cols-2"],[1,"mb-2","text-sm","uppercase","tracking-wide","opacity-50"],["data-testid","ma-scope-tree",1,"rounded","border","border-neutral-800","bg-neutral-900","p-3"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"py-4","text-center","text-sm","opacity-50"],["data-testid","ma-scope-detail",1,"mt-3","rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],["data-testid","ma-reference-list",1,"flex","flex-col","gap-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"py-4","text-center","opacity-50"],["data-testid","ma-reference-form",1,"mt-6","rounded","border","border-neutral-800","bg-neutral-900","p-4"],[1,"font-medium"],[1,"text-xs","opacity-60"],[1,"mt-1","text-xs","opacity-60"],["data-testid","ma-scope-view-entries",1,"mt-2","rounded","border","border-neutral-700","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"flex","items-start","justify-between"],[1,"flex-1"],[1,"opacity-60"],[1,"mt-1","text-xs","opacity-50"],[1,"flex","gap-1"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"mb-3","font-medium"],["placeholder","canonical term","data-testid","ma-ref-canonical",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","aliases (typo / fonetikus / STT, vessz\u0151vel)","data-testid","ma-ref-aliases",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","2","placeholder","description",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","flex","gap-2"],["placeholder","category",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","scope-layer (opc.)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","ragScopes \u2014 mely t\xE1rakra (vessz\u0151vel, \xFCres = mind)",1,"mb-3","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"flex","gap-2"],["data-testid","ma-ref-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],[1,"rounded","border","border-neutral-700","px-4","py-1","text-sm","hover:bg-neutral-800",3,"click"],["type","button",1,"block","w-full","rounded","px-2","py-1","text-left","text-sm","hover:bg-neutral-800",3,"click"],[1,"opacity-50"],[1,"opacity-40"]],template:function(t,n){if(t&1){let r=T();o(0,"div",1),W(1,"ma-banner-host",2),o(2,"div",3)(3,"div")(4,"a",4),s(5,"\u2190 Maintenance"),a(),o(6,"h1",5),s(7,"Scopes & Reference"),a()(),o(8,"div",6)(9,"button",7),u("click",function(){return m(r),_(n.openNewForm())}),s(10,"New reference"),a(),o(11,"button",8),u("click",function(){return m(r),_(n.rebuildIndex())}),s(12,"Rebuild index"),a()()(),C(13,wt,2,0,"div",9)(14,Pt,17,4),a(),C(15,Bt,9,6,"ng-template",null,0,be)}t&2&&(l(4),k("routerLink",I(2,ht)),l(9),x(n.loading_$()?13:14))},dependencies:[L,he,X,Z,K,H,P,q,G],encapsulation:2})}return i})();var At=(i,d)=>d.query,Rt=(i,d)=>d.id,Nt=(i,d)=>d.rawToken,Wt=(i,d)=>d.scopeId,zt=()=>["/maintenance"];function jt(i,d){if(i&1){let e=T();o(0,"button",23),u("click",function(){let n=m(e),r=n.$implicit,p=n.$index,g=c(2);return _(g.toggleTable(p,r))}),s(1),a()}if(i&2){let e=d.$implicit,t=d.$index,n=c(2);N("bg-blue-700",n.isTableSelected(t,e))("bg-neutral-800",!n.isTableSelected(t,e)),M("data-testid","ma-search-table-"+t+"-"+e),l(),f(" ",n.tableLabel(e)," ")}}function Ot(i,d){if(i&1){let e=T();o(0,"div",6)(1,"div",18),E(2,jt,2,6,"button",19,Y),a(),o(4,"div",20)(5,"input",21),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.setQuery(r,n))}),a(),o(6,"button",22),u("click",function(){let n=m(e).$index,r=c();return _(r.removeRow(n))}),s(7,"remove"),a()()()}if(i&2){let e=d.$implicit,t=d.$index,n=c();l(2),$(n.mainTables),l(3),k("ngModel",e.query),M("data-testid","ma-search-query-"+t)}}function qt(i,d){i&1&&(o(0,"div",15),s(1,"Searching\u2026"),a())}function Kt(i,d){i&1&&(s(0," \xB7 "),o(1,"span",25),s(2,"relev\xE1ns elemek lemaradtak (truncated)"),a())}function Ht(i,d){if(i&1){let e=T();o(0,"button",36),u("click",function(){let n=m(e).$implicit,r=c(4);return _(r.applySuggestion(n))}),s(1),a()}if(i&2){let e=d.$implicit;M("data-testid","ma-search-suggestion"),l(),f(" ",e," ")}}function Xt(i,d){if(i&1&&(o(0,"div",34),E(1,Ht,2,2,"button",35,Y),a()),i&2){let e=c(2).$implicit;l(),$(e.suggestions)}}function Gt(i,d){if(i&1&&(o(0,"div",27)(1,"div",32),s(2,"S\u0171r\u0171 eredm\xE9ny \u2014 a query t\xFAl t\xE1g lehet"),a(),o(3,"div",33),s(4),C(5,Kt,3,0,"span",25),a(),C(6,Xt,3,0,"div",34),a()),i&2){let e=c().$implicit;M("data-testid","ma-search-dense-"+e.query),l(4),f(" ",e.totalRelevant," relev\xE1ns elem a minScore felett (topK el\u0151tt) "),l(),x(e.truncated?5:-1),l(),x(e.suggestions.length?6:-1)}}function Ut(i,d){if(i&1&&(o(0,"div"),s(1),j(2,"number"),a()),i&2){let e=d.$implicit;l(),ee('"',e.rawToken,'" \u2192 ',e.resolvedTo," (konfidencia: ",O(2,3,e.confidence,"1.2-2"),")")}}function Qt(i,d){if(i&1&&(o(0,"div",28),E(1,Ut,3,6,"div",null,Nt),a()),i&2){let e=c().$implicit;M("data-testid","ma-search-uncertainty"),l(),$(e.uncertaintyNotes)}}function Zt(i,d){if(i&1&&s(0),i&2){let e=c(2).$implicit;f(" path: ",e.headingPath==null?null:e.headingPath.join(" > ")," \xB7 ")}}function Jt(i,d){if(i&1&&s(0),i&2){let e=c(2).$implicit;z(" chars ",e.position.charStart,"\u2013",e.position.charEnd," \xB7 ")}}function Yt(i,d){if(i&1&&(o(0,"div",43),s(1),a(),o(2,"div",44),C(3,Zt,1,1)(4,Jt,1,2),s(5),a()),i&2){let e,t=c().$implicit;l(),V(t.content),l(2),x(t.headingPath!=null&&t.headingPath.length?3:-1),l(),x(t.position?4:-1),l(),z(" kind: ",(e=t.kind)!==null&&e!==void 0?e:"\u2014"," \xB7 tags: ",t.tags.join(", ")," ")}}function en(i,d){if(i&1&&(o(0,"div",39),s(1),a()),i&2){let e=c().$implicit;l(),V(e.content)}}function tn(i,d){if(i&1&&(o(0,"span",41),s(1),a()),i&2){let e=d.$implicit;l(),z("",e.layer,":",e.canonicalName,"")}}function nn(i,d){if(i&1){let e=T();o(0,"div",30)(1,"div",37)(2,"div",38),C(3,Yt,6,5)(4,en,2,1,"div",39),o(5,"div",40)(6,"span"),s(7),j(8,"number"),a(),o(9,"span"),s(10),a(),o(11,"span"),s(12),j(13,"number"),a(),o(14,"span"),s(15),a(),o(16,"span"),s(17),a(),E(18,tn,2,2,"span",41,Wt),a()(),o(20,"button",42),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleExpand(n.id))}),s(21),a()()()}if(i&2){let e=d.$implicit,t=c(2);M("data-testid","ma-search-hit-"+e.id),l(3),x(t.isExpanded(e.id)?3:4),l(4),f("score ",O(8,9,e.score,"1.3-3"),""),l(3),f("weight ",e.weight,""),l(2),f("final ",O(13,12,e.finalScore,"1.3-3"),""),l(3),V(t.tableLabel(e.table)),l(2),f("src: ",t.hitSource(e),""),l(),$(e.scopePath),l(2),M("data-testid","ma-search-expand-"+e.id),l(),f(" ",t.isExpanded(e.id)?"collapse":"expand"," ")}}function an(i,d){i&1&&(o(0,"div",31),s(1,"Nincs tal\xE1lat erre a query-re."),a())}function on(i,d){if(i&1&&(o(0,"div",17)(1,"div",24)(2,"span",25),s(3),a(),o(4,"span",26),s(5),a()(),C(6,Gt,7,4,"div",27)(7,Qt,3,1,"div",28),o(8,"div",29),E(9,nn,22,15,"div",30,Rt,!1,an,2,0,"div",31),a()()),i&2){let e=d.$implicit;l(3),f('"',e.query,'"'),l(2),z(" \xB7 ",e.hits.length," hit \xB7 ",e.totalRelevant," relev\xE1ns"),l(),x(e.denseResults?6:-1),l(),x(e.uncertaintyNotes.length?7:-1),l(2),$(e.hits)}}var ze=(()=>{class i{api=F(A);notify=F(J);mainTables=te;rows_$=y([{tables:[h.memory],query:""}]);topK=5;minScore=0;tagFilter="";kindFilter="";results_$=y([]);searching_$=y(!1);expanded_$=y(new Set);ngOnInit(){return b(this,null,function*(){yield this.loadDefaults()})}loadDefaults(){return b(this,null,function*(){let e=yield this.api.getConfig();if(e.data?.effective){let t=e.data.effective["read.topK"],n=e.data.effective["read.minScore"];typeof t?.value=="number"&&(this.topK=t.value),typeof n?.value=="number"&&(this.minScore=n.value)}})}addRow(){this.rows_$.set([...this.rows_$(),{tables:[h.knowledge],query:""}])}removeRow(e){this.rows_$.set(this.rows_$().filter((t,n)=>n!==e))}toggleTable(e,t){let n=[...this.rows_$()],r=n[e].tables.includes(t)?n[e].tables.filter(p=>p!==t):[...n[e].tables,t];n[e]=Q(R({},n[e]),{tables:r}),this.rows_$.set(n)}isTableSelected(e,t){return this.rows_$()[e].tables.includes(t)}setQuery(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{query:t}),this.rows_$.set(n)}tableLabel(e){return U[e]}search(){return b(this,null,function*(){let e=this.rows_$().filter(n=>n.query.trim()&&n.tables.length);if(!e.length){this.notify.newErrorMessage("Adj meg legal\xE1bb egy query-t (t\xE1bla + phrase).");return}this.searching_$.set(!0);let t=yield this.api.read({queries:e.map(n=>({tables:n.tables,query:n.query,topK:this.topK,minScore:this.minScore,tagFilter:this.tagFilter?this.parseCsv(this.tagFilter):void 0,kindFilter:this.kindFilter||void 0})),includeContent:!0});if(this.searching_$.set(!1),t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`),this.results_$.set([]);return}this.results_$.set(t.data?.results??[])})}toggleExpand(e){let t=new Set(this.expanded_$());t.has(e)?t.delete(e):t.add(e),this.expanded_$.set(t)}isExpanded(e){return this.expanded_$().has(e)}applySuggestion(e){let t=e.toLowerCase(),n=e.match(/tag[:=]\s*([\w-]+)/i),r=e.match(/kind[:=]\s*([\w-]+)/i);n?this.tagFilter=this.tagFilter?`${this.tagFilter},${n[1]}`:n[1]:r?this.kindFilter=r[1]:t.includes("mincore")||t.includes("minscore")?this.minScore=Math.min(this.minScore+.1,1):t.includes("topk")&&(this.topK=Math.max(this.topK-1,1)),this.search()}hitSource(e){return e.sourceFilePath?e.sourceFilePath:e.source?.type??"manual"}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-search"]],standalone:!0,features:[B],decls:27,vars:7,consts:[["data-testid","ma-search",1,"mx-auto","max-w-5xl","p-6"],[1,"mb-4","block"],[1,"mb-4"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],["data-testid","ma-search-queries",1,"mb-4","flex","flex-col","gap-3"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3"],["data-testid","ma-search-add-query",1,"self-start","rounded","border","border-neutral-700","px-3","py-1","text-sm","hover:bg-neutral-800",3,"click"],[1,"mb-4","flex","flex-wrap","items-center","gap-3","text-sm"],[1,"flex","items-center","gap-1"],["type","number","data-testid","ma-search-topk",1,"w-20","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["type","number","step","0.05","data-testid","ma-search-minscore",1,"w-24","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","tag filter (vessz\u0151vel)","data-testid","ma-search-tagfilter",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","kind filter","data-testid","ma-search-kindfilter",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["data-testid","ma-search-submit",1,"rounded","bg-blue-700","px-4","py-1","hover:bg-blue-600",3,"click"],["data-testid","ma-search-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-search-results",1,"flex","flex-col","gap-6"],[1,"rounded","border","border-neutral-800"],[1,"mb-2","flex","flex-wrap","gap-1"],["type","button",1,"rounded","px-2","py-1","text-xs",3,"bg-blue-700","bg-neutral-800"],[1,"flex","items-center","gap-2"],["placeholder","query phrase",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],[1,"rounded","px-2","py-1","text-sm","text-red-400","hover:bg-neutral-800",3,"click"],["type","button",1,"rounded","px-2","py-1","text-xs",3,"click"],[1,"border-b","border-neutral-800","bg-neutral-900","px-3","py-2","text-sm"],[1,"font-medium"],[1,"opacity-50"],[1,"border-b","border-yellow-700","bg-yellow-950","px-3","py-2","text-sm","text-yellow-200"],[1,"border-b","border-amber-700/60","bg-neutral-900","px-3","py-2","text-xs","text-amber-300"],[1,"flex","flex-col","gap-2","p-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"py-4","text-center","opacity-50"],[1,"font-semibold"],[1,"mt-1"],[1,"mt-2","flex","flex-wrap","gap-2"],["type","button",1,"rounded","bg-yellow-800","px-2","py-1","text-xs","hover:bg-yellow-700"],["type","button",1,"rounded","bg-yellow-800","px-2","py-1","text-xs","hover:bg-yellow-700",3,"click"],[1,"flex","items-start","justify-between","gap-3"],[1,"flex-1"],[1,"line-clamp-2","opacity-90"],[1,"mt-1","flex","flex-wrap","gap-2","text-xs","opacity-60"],[1,"rounded","bg-purple-900","px-1.5","py-0.5"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"whitespace-pre-wrap","opacity-90"],[1,"mt-1","text-xs","opacity-50"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"a",3),s(4,"\u2190 Maintenance"),a(),o(5,"h1",4),s(6,"Search (val\xF3di read-teszt)"),a()(),o(7,"div",5),E(8,Ot,8,2,"div",6,xe),o(10,"button",7),u("click",function(){return n.addRow()}),s(11,"+ add query"),a()(),o(12,"div",8)(13,"label",9),s(14,"topK "),o(15,"input",10),S("ngModelChange",function(p){return w(n.topK,p)||(n.topK=p),p}),a()(),o(16,"label",9),s(17,"minScore "),o(18,"input",11),S("ngModelChange",function(p){return w(n.minScore,p)||(n.minScore=p),p}),a()(),o(19,"input",12),S("ngModelChange",function(p){return w(n.tagFilter,p)||(n.tagFilter=p),p}),a(),o(20,"input",13),S("ngModelChange",function(p){return w(n.kindFilter,p)||(n.kindFilter=p),p}),a(),o(21,"button",14),u("click",function(){return n.search()}),s(22,"Search"),a()(),C(23,qt,2,0,"div",15),o(24,"div",16),E(25,on,12,6,"div",17,At),a()()),t&2&&(l(3),k("routerLink",I(6,zt)),l(5),$(n.rows_$()),l(7),v("ngModel",n.topK),l(3),v("ngModel",n.minScore),l(),v("ngModel",n.tagFilter),l(),v("ngModel",n.kindFilter),l(3),x(n.searching_$()?23:-1),l(2),$(n.results_$()))},dependencies:[L,Ce,X,Z,Ie,K,H,P,q,G],encapsulation:2})}return i})();var rn=(i,d)=>d.key,ln=()=>["/maintenance"];function sn(i,d){if(i&1&&(o(0,"option",7),s(1),a()),i&2){let e=d.$implicit,t=c();k("value",e),l(),f("",t.tableLabel(e)," (table-override)")}}function dn(i,d){i&1&&(o(0,"div",15),s(1,"Loading\u2026"),a())}function cn(i,d){if(i&1){let e=T();o(0,"input",25),u("ngModelChange",function(n){m(e);let r=c().$implicit,p=c(2);return _(p.onValueChange(r.key,n))}),a()}if(i&2){let e=c().$implicit;k("ngModel",e.value),M("data-testid","ma-config-value-"+e.key)}}function pn(i,d){if(i&1){let e=T();o(0,"input",26),u("ngModelChange",function(n){m(e);let r=c().$implicit,p=c(2);return _(p.onValueChange(r.key,n))}),a()}if(i&2){let e=c().$implicit;k("ngModel",e.value),M("data-testid","ma-config-value-"+e.key)}}function mn(i,d){if(i&1){let e=T();o(0,"div",17)(1,"div",19),s(2),a(),o(3,"div",20),C(4,cn,1,2,"input",21)(5,pn,1,2,"input",22),a(),o(6,"span",23),s(7),a(),o(8,"button",24),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.saveRow(n))}),s(9,"Save"),a()()}if(i&2){let e=d.$implicit,t=c(2);M("data-testid","ma-config-row-"+e.key),l(2),V(e.key),l(2),x(t.isBoolean(e.value)?4:5),l(2),N("bg-neutral-700",e.resolvedFrom==="builtin"||e.resolvedFrom==="global")("bg-blue-800",e.resolvedFrom==="table")("bg-purple-800",e.resolvedFrom==="scope"),M("data-testid","ma-config-source-"+e.key),l(),f(" ",t.sourceLabel(e.resolvedFrom)," "),l(),M("data-testid","ma-config-save-"+e.key)}}function _n(i,d){i&1&&(o(0,"div",18),s(1,"Nincs config-kulcs (a szerver nem el\xE9rhet\u0151?)."),a())}function un(i,d){if(i&1&&(o(0,"div",16),E(1,mn,10,12,"div",17,rn,!1,_n,2,0,"div",18),a()),i&2){let e=c();l(),$(e.rows_$())}}var je=(()=>{class i{api=F(A);notify=F(J);mainTables=te;tableScope="";rows_$=y([]);loading_$=y(!0);ngOnInit(){return b(this,null,function*(){yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getConfig(this.tableScope||void 0);if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}let t=e.data?.effective??{},n=Object.keys(t).sort().map(r=>({key:r,value:t[r].value,resolvedFrom:t[r].resolvedFrom}));this.rows_$.set(n),this.loading_$.set(!1)})}tableLabel(e){return U[e]}sourceLabel(e){switch(e){case"builtin":return"builtin default";case"global":return"\xF6r\xF6kl\xF6tt global default";case"table":return"table-override";case"scope":return"scope-override";default:return e}}isBoolean(e){return typeof e=="boolean"}onValueChange(e,t){let n=this.rows_$().map(r=>r.key===e?Q(R({},r),{value:t}):r);this.rows_$.set(n)}saveRow(e){return b(this,null,function*(){let t=yield this.api.setConfig({key:e.key,value:e.value,table:this.tableScope||void 0});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`${e.key} mentve.`),yield this.load()})}applyOpenAiPreset(){return b(this,null,function*(){yield this.applyPreset("openai")})}applyLmStudioPreset(){return b(this,null,function*(){yield this.applyPreset("lmstudio")})}applyPreset(e){return b(this,null,function*(){let t=yield this.api.invokeCapability("apply_preset",{preset:e,table:this.tableScope||void 0});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`${e} preset alkalmazva.`),yield this.load()})}testMongo(){this.runTest("test_mongodb_connection","MongoDB")}testEmbedding(){this.runTest("test_embedding_provider","Embedding-provider")}testVectorSearch(){this.runTest("test_vector_search","Vector search")}runTest(e,t){return b(this,null,function*(){let n=yield this.api.invokeCapability(e);if(n.error){this.notify.newErrorMessage(`${t} teszt: ${n.error.errorCode} \u2014 ${n.error.message}`);return}let r=n.data??{};r.ok===!1?this.notify.newErrorMessage(`${t} teszt sikertelen: ${r.message??"ismeretlen ok"}`):this.notify.newSuccessMessage(`${t} teszt OK${r.message?" \u2014 "+r.message:""}.`)})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-settings"]],standalone:!0,features:[B],decls:28,vars:4,consts:[["data-testid","ma-settings",1,"mx-auto","max-w-4xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],["data-testid","ma-settings-scope",1,"rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["data-testid","ma-settings-actions",1,"mb-4","flex","flex-wrap","gap-2","text-sm"],["data-testid","ma-preset-openai",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-preset-lmstudio",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],[1,"mx-1","opacity-30"],["data-testid","ma-test-mongo",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-test-embedding",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-test-vector",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-settings-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-settings-rows",1,"flex","flex-col","gap-2"],[1,"flex","flex-wrap","items-center","gap-3","rounded","border","border-neutral-800","bg-neutral-900","p-2","text-sm"],[1,"py-6","text-center","opacity-50"],[1,"w-56","font-mono","text-xs"],[1,"flex-1"],["type","checkbox",3,"ngModel"],[1,"w-full","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1",3,"ngModel"],[1,"rounded","px-2","py-0.5","text-xs"],[1,"rounded","bg-emerald-700","px-3","py-1","text-xs","hover:bg-emerald-600",3,"click"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"w-full","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1",3,"ngModelChange","ngModel"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"a",3),s(5,"\u2190 Maintenance"),a(),o(6,"h1",4),s(7,"Settings"),a()(),o(8,"select",5),S("ngModelChange",function(p){return w(n.tableScope,p)||(n.tableScope=p),p}),u("ngModelChange",function(){return n.load()}),o(9,"option",6),s(10,"global"),a(),E(11,sn,2,2,"option",7,Y),a()(),o(13,"div",8)(14,"button",9),u("click",function(){return n.applyOpenAiPreset()}),s(15,"Apply OpenAI preset"),a(),o(16,"button",10),u("click",function(){return n.applyLmStudioPreset()}),s(17,"Apply LM Studio preset"),a(),o(18,"span",11),s(19,"|"),a(),o(20,"button",12),u("click",function(){return n.testMongo()}),s(21,"Test MongoDB"),a(),o(22,"button",13),u("click",function(){return n.testEmbedding()}),s(23,"Test embedding"),a(),o(24,"button",14),u("click",function(){return n.testVectorSearch()}),s(25,"Test vector search"),a()(),C(26,dn,2,0,"div",15)(27,un,4,1,"div",16),a()),t&2&&(l(4),k("routerLink",I(3,ln)),l(4),v("ngModel",n.tableScope),l(3),$(n.mainTables),l(15),x(n.loading_$()?26:27))},dependencies:[L,X,Se,Me,Z,ve,we,K,H,P,q,G],encapsulation:2})}return i})();var ce=function(i){return i.create="create",i.update="update",i.delete="delete",i.scanFile="scan-file",i.scanFolder="scan-folder",i.scanProject="scan-project",i.reEmbed="re-embed",i.import="import",i}(ce||{});function gn(i,d){if(i&1&&(o(0,"div",7),s(1),o(2,"span",8),s(3),j(4,"number"),a()()),i&2){let e=c(),t=e.$implicit,n=e.$index;M("data-testid","ma-scope-preview-"+n),l(),f(" \u2192 ",t.resolvedPreview.canonicalName," "),l(2),f("(konfidencia: ",O(4,3,t.resolvedPreview.confidence,"1.2-2"),")")}}function fn(i,d){if(i&1){let e=T();o(0,"div",2)(1,"input",4),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.onLayerChange(r,n))}),a(),o(2,"input",5),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.onRawNameChange(r,n))}),a(),o(3,"button",6),u("click",function(){let n=m(e).$index,r=c();return _(r.removeLayer(n))}),s(4," remove "),a(),C(5,gn,5,6,"div",7),a()}if(i&2){let e=d.$implicit,t=d.$index;l(),k("ngModel",e.layer),M("data-testid","ma-scope-layer-"+t),l(),k("ngModel",e.rawName),M("data-testid","ma-scope-rawname-"+t),l(),M("data-testid","ma-scope-remove-"+t),l(2),x(e.resolvedPreview?5:-1)}}var Oe=(()=>{class i{api=F(A);value=[];valueChange=new Ee;rows_$=y([]);ngOnInit(){let e=(this.value??[]).map(t=>({layer:t.layer,rawName:t.rawName,resolvedPreview:void 0}));this.rows_$.set(e.length?e:[{layer:"project",rawName:"",resolvedPreview:void 0}])}addLayer(){this.rows_$.set([...this.rows_$(),{layer:"",rawName:"",resolvedPreview:void 0}])}removeLayer(e){this.rows_$.set(this.rows_$().filter((t,n)=>n!==e)),this.emit()}onLayerChange(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{layer:t}),this.rows_$.set(n),this.emit()}onRawNameChange(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{rawName:t}),this.rows_$.set(n),this.emit(),this.loadPreview(e)}loadPreview(e){return b(this,null,function*(){let t=this.rows_$()[e];if(!t?.rawName)return;let n=yield this.api.invokeCapability("trace_reference_expansion",{layer:t.layer,rawName:t.rawName});if(n.error)return;let r=n.data??{};if(r.canonicalName){let p=[...this.rows_$()];p[e]=Q(R({},p[e]),{resolvedPreview:{canonicalName:r.canonicalName,confidence:r.confidence??0}}),this.rows_$.set(p)}})}emit(){let e=this.rows_$().filter(t=>t.layer&&t.rawName).map(t=>({layer:t.layer,rawName:t.rawName}));this.value=e,this.valueChange.emit(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-scope-picker"]],inputs:{value:"value"},outputs:{valueChange:"valueChange"},standalone:!0,features:[B],decls:7,vars:0,consts:[["data-testid","ma-scope-picker",1,"flex","flex-col","gap-2"],[1,"text-xs","uppercase","tracking-wide","opacity-60"],[1,"flex","flex-wrap","items-center","gap-2"],["type","button","data-testid","ma-scope-add-layer",1,"self-start","rounded","border","border-neutral-700","px-3","py-1","text-sm","hover:bg-neutral-800",3,"click"],["type","text","placeholder","layer (pl. project)",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["type","text","placeholder","n\xE9v (pl. Adventor)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["type","button",1,"rounded","px-2","py-1","text-sm","text-red-400","hover:bg-neutral-800",3,"click"],[1,"basis-full","pl-2","text-xs","text-emerald-400"],[1,"opacity-70"]],template:function(t,n){t&1&&(o(0,"div",0)(1,"div",1),s(2,"Scope (root \u2192 leaf, k\xF6telez\u0151)"),a(),E(3,fn,6,6,"div",2,xe),o(5,"button",3),u("click",function(){return n.addLayer()}),s(6," + add layer "),a()()),t&2&&(l(3),$(n.rows_$()))},dependencies:[L,Ce,X,Z,K,H],encapsulation:2})}return i})();var qe=(i,d)=>d._id,xn=(i,d)=>d.runId,bn=(i,d)=>d.scopeId,hn=()=>["/maintenance"],Ke=i=>({$implicit:i});function Cn(i,d){if(i&1&&(o(0,"div",11)(1,"div")(2,"span",25),s(3,"count:"),a(),s(4),a(),o(5,"div")(6,"span",25),s(7,"pending:"),a(),s(8),a(),o(9,"div")(10,"span",25),s(11,"completed:"),a(),s(12),a(),o(13,"div")(14,"span",25),s(15,"error:"),a(),s(16),a()()),i&2){let e,t,n,r=d;l(4),f(" ",r.count,""),l(4),f(" ",(e=r.embeddingStatus==null?null:r.embeddingStatus.pending)!==null&&e!==void 0?e:0,""),l(4),f(" ",(t=r.embeddingStatus==null?null:r.embeddingStatus.completed)!==null&&t!==void 0?t:0,""),l(4),f(" ",(n=r.embeddingStatus==null?null:r.embeddingStatus.error)!==null&&n!==void 0?n:0,"")}}function yn(i,d){if(i&1){let e=T();o(0,"textarea",35),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.addCode,n)||(r.addCode=n),_(n)}),a()}if(i&2){let e=c(2);v("ngModel",e.addCode)}}function vn(i,d){if(i&1&&(o(0,"div",32),s(1),a()),i&2){let e=c(2);l(),f("aj\xE1nlott tag-ek: ",e.recommendedTags.join(", "),"")}}function wn(i,d){if(i&1){let e=T();o(0,"div",12)(1,"h3",26),s(2,"Manual add"),a(),o(3,"textarea",27),S("ngModelChange",function(n){m(e);let r=c();return w(r.addContent,n)||(r.addContent=n),_(n)}),a(),C(4,yn,1,1,"textarea",28),o(5,"div",29)(6,"input",30),S("ngModelChange",function(n){m(e);let r=c();return w(r.addKind,n)||(r.addKind=n),_(n)}),a(),o(7,"input",31),S("ngModelChange",function(n){m(e);let r=c();return w(r.addTags,n)||(r.addTags=n),_(n)}),a()(),C(8,vn,2,1,"div",32),o(9,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.addScope,n)||(r.addScope=n),_(n)}),a(),o(10,"button",34),u("click",function(){m(e);let n=c();return _(n.submitAdd())}),s(11,"Create"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.addContent),l(),x(e.isCodingPatterns?4:-1),l(2),v("ngModel",e.addKind),l(),v("ngModel",e.addTags),l(),x(e.recommendedTags.length?8:-1),l(),v("value",e.addScope)}}function Sn(i,d){if(i&1){let e=T();o(0,"div",13)(1,"h3",26),s(2,"Bulk paste (\xFCres sor v\xE1lasztja el a blokkokat)"),a(),o(3,"textarea",36),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkText,n)||(r.bulkText=n),_(n)}),a(),o(4,"div",29)(5,"input",37),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkKind,n)||(r.bulkKind=n),_(n)}),a(),o(6,"input",38),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkTags,n)||(r.bulkTags=n),_(n)}),a()(),o(7,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.bulkScope,n)||(r.bulkScope=n),_(n)}),a(),o(8,"button",39),u("click",function(){m(e);let n=c();return _(n.submitBulk())}),s(9,"Import all"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.bulkText),l(2),v("ngModel",e.bulkKind),l(),v("ngModel",e.bulkTags),l(),v("value",e.bulkScope)}}function Mn(i,d){if(i&1){let e=T();o(0,"div",14)(1,"h3",26),s(2,"Run scan / system-sync"),a(),o(3,"input",40),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanPath,n)||(r.scanPath=n),_(n)}),a(),o(4,"div",29)(5,"input",41),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanInclude,n)||(r.scanInclude=n),_(n)}),a(),o(6,"input",42),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanExclude,n)||(r.scanExclude=n),_(n)}),a()(),o(7,"label",43)(8,"input",44),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanDryRun,n)||(r.scanDryRun=n),_(n)}),a(),s(9," dry-run (csak felder\xEDt\xE9s) "),a(),o(10,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.scanScope,n)||(r.scanScope=n),_(n)}),a(),o(11,"button",45),u("click",function(){m(e);let n=c();return _(n.submitScan())}),s(12,"Run"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.scanPath),l(2),v("ngModel",e.scanInclude),l(),v("ngModel",e.scanExclude),l(2),v("ngModel",e.scanDryRun),l(2),v("value",e.scanScope)}}function kn(i,d){i&1&&(o(0,"div",23),s(1,"Loading\u2026"),a())}function Tn(i,d){if(i&1&&oe(0,52),i&2){let e=d.$implicit;c(3);let t=re(34);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ke,e))}}function En(i,d){i&1&&(o(0,"div",53),s(1,"Nincs bejegyz\xE9s."),a())}function $n(i,d){if(i&1&&(o(0,"div",46),E(1,Tn,1,4,"ng-container",52,qe,!1,En,2,0,"div",53),a()),i&2){let e=c(2);l(),$(e.items_$())}}function Fn(i,d){if(i&1&&oe(0,52),i&2){let e=d.$implicit;c(4);let t=re(34);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ke,e))}}function Vn(i,d){if(i&1){let e=T();o(0,"div",54)(1,"div",55)(2,"span",56),s(3),a(),o(4,"button",57),u("click",function(){let n=m(e).$implicit,r=c(3);return _(r.deleteRunGroup(n.runId))}),s(5,"Delete run"),a()(),o(6,"div",58),E(7,Fn,1,4,"ng-container",52,qe),a()()}if(i&2){let e=d.$implicit;l(3),z("run: ",e.runId," (",e.items.length," chunk)"),l(4),$(e.items)}}function In(i,d){if(i&1&&(o(0,"div",47),E(1,Vn,9,2,"div",54,xn),a()),i&2){let e=c(2);l(),$(e.groupedByRun())}}function Ln(i,d){if(i&1){let e=T();C(0,$n,4,1,"div",46)(1,In,3,0,"div",47),o(2,"div",24)(3,"span",48),s(4),a(),o(5,"div",49)(6,"button",50),u("click",function(){m(e);let n=c();return _(n.prevPage())}),s(7,"Prev"),a(),o(8,"button",51),u("click",function(){m(e);let n=c();return _(n.nextPage())}),s(9,"Next"),a()()()}if(i&2){let e=c();x(e.groupByRun?1:0),l(4),ee("\xF6sszesen: ",e.total_$()," \xB7 oldal ",e.page_$()," \xB7 oldalm\xE9ret ",e.pageSize_$(),"")}}function Pn(i,d){if(i&1&&(o(0,"span",64),s(1),a()),i&2){let e=c().$implicit;l(),V(e.kind)}}function Dn(i,d){if(i&1&&(o(0,"span",65),s(1),a()),i&2){let e=d.$implicit;l(),V(e)}}function Bn(i,d){if(i&1){let e=T();o(0,"button",68),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.openScope(n.scopeId))}),s(1),a()}if(i&2){let e=d.$implicit;l(),z("",e.layer,":",e.canonicalName,"")}}function An(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;ee(" \xB7 ",e.sourceFilePath," (",e.chunkIndex,"/",e.chunkTotal,") ")}}function Rn(i,d){if(i&1){let e=T();o(0,"div",59)(1,"div",60)(2,"div",61)(3,"div",62),s(4),a(),o(5,"div",63),C(6,Pn,2,1,"span",64),E(7,Dn,2,1,"span",65,Y),E(9,Bn,2,2,"button",66,bn),a(),o(11,"div",67),s(12),j(13,"date"),C(14,An,1,3),a()(),o(15,"button",57),u("click",function(){let n=m(e).$implicit,r=c();return _(r.deleteEntry(n))}),s(16,"Delete"),a()()()}if(i&2){let e,t=d.$implicit;M("data-testid","ma-entry-"+t._id),l(4),V(t.content),l(2),x(t.kind?6:-1),l(),$(t.tags),l(2),$(t.scopePath),l(3),ee(" weight ",(e=t.weight)!==null&&e!==void 0?e:1," \xB7 ",(e=t.addedBy)!==null&&e!==void 0?e:"\u2014"," \xB7 ",t.__lastModified?O(13,8,t.__lastModified,"short"):"\u2014"," "),l(2),x(t.sourceFilePath?14:-1),l(),M("data-testid","ma-entry-delete-"+t._id)}}var Nn=50,Wn=500,He=(()=>{class i{api=F(A);route=F(ye);router=F(se);notify=F(J);popup=F(de);table_$=y(h.rules);items_$=y([]);total_$=y(0);page_$=y(1);pageSize_$=y(Nn);loading_$=y(!1);tagFilter="";kindFilter="";textFilter="";ingestRunFilter="";groupByRun=!1;stats_$=y(null);addContent="";addCode="";addKind="";addTags="";addScope=[];addFormOpen_$=y(!1);bulkText="";bulkKind="";bulkTags="";bulkScope=[];bulkOpen_$=y(!1);scanPath="";scanInclude="";scanExclude="";scanDryRun=!0;scanScope=[];scanOpen_$=y(!1);get isCodingPatterns(){return this.table_$()===h.codingPatterns}get tableLabel(){return U[this.table_$()]}get recommendedTags(){return Pe[this.table_$()]??[]}ngOnInit(){this.route.paramMap.subscribe(e=>{let t=e.get("table"),n=Object.values(h).find(r=>r===t);if(!n||n===h.reference){this.router.navigate(["/maintenance"]);return}this.table_$.set(n),this.page_$.set(1),this.reload()})}reload(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getItems(this.table_$(),{page:this.page_$(),pageSize:this.pageSize_$(),tag:this.tagFilter||void 0,kind:this.kindFilter||void 0,ingestRunId:this.ingestRunFilter||void 0});if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}let t=e.data?.items??[];if(this.textFilter){let r=this.textFilter.toLowerCase();t=t.filter(p=>(p.content??"").toLowerCase().includes(r))}this.items_$.set(t),this.total_$.set(e.data?.total??t.length);let n=yield this.api.getTableStats(this.table_$());n.data&&this.stats_$.set(n.data),this.loading_$.set(!1)})}applyFilters(){this.page_$.set(1),this.reload()}nextPage(){this.page_$()*this.pageSize_$()<this.total_$()&&(this.page_$.set(this.page_$()+1),this.reload())}prevPage(){this.page_$()>1&&(this.page_$.set(this.page_$()-1),this.reload())}setPageSize(e){this.pageSize_$.set(Math.min(Math.max(e,1),Wn)),this.page_$.set(1),this.reload()}submitAdd(){return b(this,null,function*(){if(!this.addContent.trim()){this.notify.newErrorMessage("A content k\xF6telez\u0151.");return}if(!this.addScope.length){this.notify.newErrorMessage("A scope k\xF6telez\u0151 (legal\xE1bb egy layer).");return}let e=this.parseCsv(this.addTags),t={};this.isCodingPatterns&&this.addCode&&(t.code=this.addCode);let n=yield this.api.write({table:this.table_$(),operation:ce.create,scopePath:this.addScope,content:this.addContent,tags:e,kind:this.addKind||void 0,fields:Object.keys(t).length?t:void 0});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Bejegyz\xE9s l\xE9trehozva."),this.resetAddForm(),this.addFormOpen_$.set(!1),yield this.reload()})}resetAddForm(){this.addContent="",this.addCode="",this.addKind="",this.addTags="",this.addScope=[]}submitBulk(){return b(this,null,function*(){if(!this.bulkScope.length){this.notify.newErrorMessage("A bulk-paste-hez scope k\xF6telez\u0151.");return}let e=this.bulkText.split(/\n\s*\n/).map(p=>p.trim()).filter(p=>p.length);if(!e.length){this.notify.newErrorMessage("Nincs feldolgozhat\xF3 blokk (\xFCres sor v\xE1lasztja el).");return}let t=this.parseCsv(this.bulkTags),n=0,r=[];for(let p of e){let g=yield this.api.write({table:this.table_$(),operation:ce.create,scopePath:this.bulkScope,content:p,tags:t,kind:this.bulkKind||void 0});g.error?r.push(`${g.error.errorCode}: ${p.slice(0,40)}\u2026`):n++}r.length?this.notify.newErrorMessage(`${n} l\xE9trehozva, ${r.length} hiba: ${r[0]}`):(this.notify.newSuccessMessage(`${n} bejegyz\xE9s l\xE9trehozva.`),this.bulkText="",this.bulkOpen_$.set(!1)),yield this.reload()})}deleteEntry(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Soft-delete",message:"Biztosan t\xF6rl\xF6d ezt a bejegyz\xE9st? (soft-delete, vissza\xE1ll\xEDthat\xF3)",confirmBtn:"Delete"})))return;let n=yield this.api.write({table:this.table_$(),operation:ce.delete,target:{by:"id",value:e._id??""}});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("T\xF6r\xF6lve (soft-delete)."),yield this.reload()})}deleteRunGroup(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Csoportos soft-delete",message:`A(z) ${e} ingest-run minden chunkja t\xF6rl\xE9sre ker\xFCl (soft-delete). Folytatod?`,confirmBtn:"Delete run"})))return;let n=yield this.api.invokeCapability("delete_ingest_run",{ingestRunId:e});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Run t\xF6r\xF6lve (soft-delete)."),yield this.reload()})}reembedTable(){return b(this,null,function*(){let t=this.stats_$()?.count??0;if(!(yield this.popup.newConfirm({title:"Re-embed t\xE1r",message:`${t} elem \xFAjra-embeddel\xE9se \u2014 ez embedding-k\xF6lts\xE9get okozhat. Folytatod?`,confirmBtn:"Re-embed"})))return;let r=yield this.api.invokeCapability("reembed_table",{table:this.table_$()});if(r.error){this.notify.newErrorMessage(`${r.error.errorCode}: ${r.error.message}`);return}this.notify.newSuccessMessage("Re-embed elind\xEDtva."),yield this.reload()})}submitScan(){return b(this,null,function*(){if(!this.scanPath.trim()){this.notify.newErrorMessage("A scan path k\xF6telez\u0151.");return}if(!this.scanScope.length){this.notify.newErrorMessage("A scan-hez scope k\xF6telez\u0151.");return}let e=yield this.api.write({table:this.table_$(),operation:ce.scanFolder,scopePath:this.scanScope,scan:{path:this.scanPath,include:this.parseCsv(this.scanInclude),exclude:this.parseCsv(this.scanExclude),dryRun:this.scanDryRun}});if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`);return}this.notify.newSuccessMessage(this.scanDryRun?"Dry-run scan k\xE9sz (l\xE1sd ingest id\u0151vonal).":"Scan k\xE9sz."),this.scanOpen_$.set(!1),yield this.reload()})}openScope(e){this.router.navigate(["/maintenance/scopes"],{queryParams:{focus:e}})}groupedByRun(){let e={};for(let t of this.items_$()){let n=t.ingestRunId??"(manual / no run)";(e[n]??=[]).push(t)}return Object.keys(e).map(t=>({runId:t,items:e[t]}))}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-table-detail"]],standalone:!0,features:[B],decls:35,vars:13,consts:[["entryRow",""],["data-testid","ma-table-detail",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","gap-2","text-sm"],["data-testid","ma-detail-add-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-bulk-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-scan-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-reembed",1,"rounded","border","border-amber-700","px-3","py-1","text-amber-300","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-stats",1,"mb-4","grid","grid-cols-2","gap-2","rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm","sm:grid-cols-4"],["data-testid","ma-entry-add-form",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-bulk-paste",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-scan-dialog",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-detail-filters",1,"mb-3","flex","flex-wrap","items-center","gap-2","text-sm"],["placeholder","tag",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","kind",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","text (substring)",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","ingestRunId",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],[1,"flex","items-center","gap-1"],["type","checkbox","data-testid","ma-detail-groupby",3,"ngModelChange","ngModel"],["data-testid","ma-detail-apply-filters",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-detail-pagination",1,"mt-4","flex","items-center","justify-between","text-sm"],[1,"opacity-50"],[1,"mb-3","font-medium"],["rows","4","placeholder","content","data-testid","ma-add-content",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","3","placeholder","code (NEM ker\xFCl a vektorba)","data-testid","ma-add-code",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModel"],[1,"mb-2","flex","gap-2"],["placeholder","kind","data-testid","ma-add-kind",1,"w-40","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","tags (vessz\u0151vel)","data-testid","ma-add-tags",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","text-xs","opacity-50"],[1,"mb-3","block",3,"valueChange","value"],["data-testid","ma-add-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["rows","3","placeholder","code (NEM ker\xFCl a vektorba)","data-testid","ma-add-code",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","6","placeholder","t\xF6bb blokk\u2026","data-testid","ma-bulk-text",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","k\xF6z\xF6s kind",1,"w-40","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","k\xF6z\xF6s tags (vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["data-testid","ma-bulk-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["placeholder","path (folder / project)","data-testid","ma-scan-path",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","include (glob, vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","exclude (glob, vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","flex","items-center","gap-2","text-sm"],["type","checkbox","data-testid","ma-scan-dryrun",3,"ngModelChange","ngModel"],["data-testid","ma-scan-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["data-testid","ma-detail-list",1,"flex","flex-col","gap-2"],["data-testid","ma-detail-grouped",1,"flex","flex-col","gap-4"],[1,"opacity-60"],[1,"flex","gap-2"],["data-testid","ma-detail-prev",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-next",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"py-6","text-center","opacity-50"],[1,"rounded","border","border-neutral-800"],[1,"flex","items-center","justify-between","border-b","border-neutral-800","bg-neutral-900","px-3","py-2","text-sm"],[1,"font-medium"],[1,"rounded","px-2","py-1","text-xs","text-red-400","hover:bg-neutral-800",3,"click"],[1,"flex","flex-col","gap-2","p-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"flex","items-start","justify-between","gap-3"],[1,"flex-1"],[1,"line-clamp-2","opacity-90"],[1,"mt-1","flex","flex-wrap","items-center","gap-1","text-xs","opacity-60"],[1,"rounded","bg-neutral-800","px-1.5","py-0.5"],[1,"rounded","bg-blue-900","px-1.5","py-0.5"],[1,"rounded","bg-purple-900","px-1.5","py-0.5","hover:bg-purple-800"],[1,"mt-1","text-xs","opacity-40"],[1,"rounded","bg-purple-900","px-1.5","py-0.5","hover:bg-purple-800",3,"click"]],template:function(t,n){if(t&1){let r=T();o(0,"div",1),W(1,"ma-banner-host",2),o(2,"div",3)(3,"div")(4,"a",4),s(5,"\u2190 Maintenance"),a(),o(6,"h1",5),s(7),a()(),o(8,"div",6)(9,"button",7),u("click",function(){return m(r),_(n.addFormOpen_$.set(!n.addFormOpen_$()))}),s(10,"Add entry"),a(),o(11,"button",8),u("click",function(){return m(r),_(n.bulkOpen_$.set(!n.bulkOpen_$()))}),s(12,"Bulk paste"),a(),o(13,"button",9),u("click",function(){return m(r),_(n.scanOpen_$.set(!n.scanOpen_$()))}),s(14,"Run scan"),a(),o(15,"button",10),u("click",function(){return m(r),_(n.reembedTable())}),s(16,"Re-embed"),a()()(),C(17,Cn,17,4,"div",11)(18,wn,12,6,"div",12)(19,Sn,10,4,"div",13)(20,Mn,13,5,"div",14),o(21,"div",15)(22,"input",16),S("ngModelChange",function(g){return m(r),w(n.tagFilter,g)||(n.tagFilter=g),_(g)}),a(),o(23,"input",17),S("ngModelChange",function(g){return m(r),w(n.kindFilter,g)||(n.kindFilter=g),_(g)}),a(),o(24,"input",18),S("ngModelChange",function(g){return m(r),w(n.textFilter,g)||(n.textFilter=g),_(g)}),a(),o(25,"input",19),S("ngModelChange",function(g){return m(r),w(n.ingestRunFilter,g)||(n.ingestRunFilter=g),_(g)}),a(),o(26,"label",20)(27,"input",21),S("ngModelChange",function(g){return m(r),w(n.groupByRun,g)||(n.groupByRun=g),_(g)}),a(),s(28," group by run"),a(),o(29,"button",22),u("click",function(){return m(r),_(n.applyFilters())}),s(30,"Apply"),a()(),C(31,kn,2,0,"div",23)(32,Ln,10,4,"div",24),a(),C(33,Rn,17,11,"ng-template",null,0,be)}if(t&2){let r;l(4),k("routerLink",I(12,hn)),l(3),V(n.tableLabel),l(10),x((r=n.stats_$())?17:-1,r),l(),x(n.addFormOpen_$()?18:-1),l(),x(n.bulkOpen_$()?19:-1),l(),x(n.scanOpen_$()?20:-1),l(2),v("ngModel",n.tagFilter),l(),v("ngModel",n.kindFilter),l(),v("ngModel",n.textFilter),l(),v("ngModel",n.ingestRunFilter),l(2),v("ngModel",n.groupByRun),l(4),x(n.loading_$()?31:32)}},dependencies:[L,he,le,X,Z,ve,K,H,P,q,G,Oe],encapsulation:2})}return i})();var pe=function(i){return i.maintenance="maintenance",i.search="search",i.scopes="scopes",i.ingest="ingest",i.settings="settings",i.errors="errors",i}(pe||{});var zn=[{path:"",component:Re},{path:pe.search,component:ze},{path:pe.scopes,component:We},{path:pe.ingest,component:Be},{path:pe.settings,component:je},{path:":table",component:He}];var Xe=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=fe({type:i});static \u0275inj=ge({imports:[P.forChild(zn),P]})}return i})();var Fa=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=fe({type:i});static \u0275inj=ge({imports:[L,Xe]})}return i})();export{Fa as Maintenance_Module};
|
|
1
|
+
import{$ as Ve,A as Y,B as E,C as $,D as o,E as a,Ea as J,F as W,G as oe,Ga as de,H as T,I as u,Ia as A,J as c,Ja as Le,K as re,Ka as G,L as s,M as V,N as f,O as z,P as ee,Q as ke,R as v,S as w,T as S,U as B,V as I,W as ae,X as Fe,Y as j,Z as O,_ as be,a as R,aa as he,b as Q,ba as le,ca as Ce,d as b,da as L,h as ge,j as F,k as D,l as fe,la as ye,m,n as _,na as se,o as Ee,oa as q,pa as P,qa as ve,r as l,ra as Z,s as y,sa as K,t as C,ta as H,u as M,ua as Ie,v as k,va as we,w as $e,wa as Se,x as N,xa as Me,y as x,ya as X,z as xe}from"./chunk-YXHWCJ5O.js";var h=function(i){return i.rules="rules",i.documents="documents",i.codebase="codebase",i.knowledge="knowledge",i.codingPatterns="coding_patterns",i.memory="memory",i.reference="reference",i}(h||{});var U={[h.rules]:"Rules",[h.documents]:"Documents",[h.codebase]:"Codebase",[h.knowledge]:"Knowledge",[h.codingPatterns]:"Coding Patterns",[h.memory]:"Memory",[h.reference]:"Reference"},Te={[h.rules]:"glob\xE1lis / projekt-bound",[h.documents]:"projekt-bound",[h.codebase]:"projekt-bound",[h.knowledge]:"glob\xE1lis / domain",[h.codingPatterns]:"glob\xE1lis",[h.memory]:"session / projekt-bound",[h.reference]:"helper (alias \u2192 canonical)"},te=[h.rules,h.documents,h.codebase,h.knowledge,h.codingPatterns,h.memory],Pe={[h.rules]:["coding","architecture","naming","behavior","security","project"],[h.documents]:["spec","feature_request","bug_report","architecture_doc","dev_note","meeting_note","research_note"],[h.codebase]:["source_file","symbol","function","class","interface","config","dataflow","runflow","module_summary"],[h.knowledge]:["fact","concept","definition","relationship","domain_knowledge","company_knowledge","user_knowledge","decision_rationale"],[h.codingPatterns]:["pattern","anti_pattern","recipe","example","template","migration_pattern","debugging_pattern"],[h.memory]:["session_history","development_history","decision_history","incident","lesson_learned","important_note","user_preference","project_event","temporary_context","resolved_issue"]};var De=(i,d)=>d._id,Ge=()=>["/maintenance"];function Ue(i,d){if(i&1&&(o(0,"option",8),s(1),a()),i&2){let e=d.$implicit,t=c();k("value",e),l(),V(t.tableLabel(e))}}function Qe(i,d){i&1&&(o(0,"div",9),s(1,"Loading\u2026"),a())}function Ze(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;ke(" \xB7 new ",e.verdicts.new," / mod ",e.verdicts.modified," / eq ",e.verdicts.equal," / del ",e.verdicts.deleted," ")}}function Je(i,d){if(i&1){let e=T();o(0,"button",25),u("click",function(){m(e);let n=c().$implicit,r=c(2);return _(r.viewRunErrors(n))}),s(1,"errors"),a()}}function Ye(i,d){if(i&1&&(o(0,"div",26),s(1),a()),i&2){let e,t=d.$implicit;l(),ke(" ",(e=t.sourceFilePath)!==null&&e!==void 0?e:"(no path)"," [",t.chunkIndex,"/",t.chunkTotal,"] \u2014 ",t.content==null?null:t.content.slice(0,80),"\u2026 ")}}function et(i,d){i&1&&(o(0,"div",27),s(1,"Nincs chunk ehhez a run-hoz."),a())}function tt(i,d){if(i&1&&(o(0,"div",24),E(1,Ye,2,4,"div",26,De,!1,et,2,0,"div",27),a()),i&2){let e,t=c().$implicit,n=c(2);M("data-testid","ma-ingest-chunks-"+t._id),l(),$(n.chunksFor((e=t._id)!==null&&e!==void 0?e:""))}}function nt(i,d){if(i&1){let e=T();o(0,"div",13)(1,"div",14)(2,"div",15)(3,"span",16),s(4),a(),o(5,"span",17),s(6),j(7,"date"),a(),o(8,"div",18),s(9),C(10,Ze,1,4),s(11),a()(),o(12,"div",19)(13,"span",20),s(14),a(),C(15,Je,2,0,"button",21),o(16,"button",22),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleRun(n))}),s(17),a(),o(18,"button",23),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.deleteRun(n))}),s(19,"delete"),a()()(),C(20,tt,4,2,"div",24),a()}if(i&2){let e,t,n,r,p,g=d.$implicit,ie=c(2);N("border-red-700",ie.isFailed(g))("border-neutral-800",!ie.isFailed(g)),M("data-testid","ma-ingest-run-"+g._id),l(4),V((e=g.trigger)!==null&&e!==void 0?e:"\u2014"),l(2),z(" \xB7 ",ie.tableLabel(g.table)," \xB7 ",g.__created?O(7,23,g.__created,"short"):"\u2014",""),l(3),ee(" files ",(t=g.filesProcessed)!==null&&t!==void 0?t:0," (skip ",(t=g.filesSkipped)!==null&&t!==void 0?t:0,") \xB7 chunks ",(t=g.chunkCount)!==null&&t!==void 0?t:0," "),l(),x(g.verdicts?10:-1),l(),f(" \xB7 cost ",g.embedTokenCost!==void 0?g.embedTokenCost:"n/a"," "),l(2),N("bg-emerald-700",g.status==="ok")("bg-red-700",ie.isFailed(g)),M("data-testid","ma-ingest-status-"+g._id),l(),f(" ",(n=g.status)!==null&&n!==void 0?n:"ok"," "),l(),x(ie.isFailed(g)?15:-1),l(),M("data-testid","ma-ingest-expand-"+g._id),l(),f(" ",ie.isExpanded((r=g._id)!==null&&r!==void 0?r:"")?"collapse":"expand"," "),l(3),x(ie.isExpanded((p=g._id)!==null&&p!==void 0?p:"")?20:-1)}}function it(i,d){i&1&&(o(0,"div",12),s(1,"Nincs ingest-run."),a())}function at(i,d){if(i&1&&(o(0,"div",10),E(1,nt,21,26,"div",11,De,!1,it,2,0,"div",12),a()),i&2){let e=c();l(),$(e.runs_$())}}var Be=(()=>{class i{api=F(A);router=F(se);notify=F(J);popup=F(de);mainTables=te;runs_$=y([]);loading_$=y(!0);tableFilter="";expanded_$=y(new Set);runChunks_$=y({});ngOnInit(){return b(this,null,function*(){yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getIngestRuns(this.tableFilter||void 0);if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}this.runs_$.set(e.data?.runs??[]),this.loading_$.set(!1)})}tableLabel(e){return e?Array.isArray(e)?e.map(t=>U[t]).join(", "):U[e]:"\u2014"}isExpanded(e){return this.expanded_$().has(e)}toggleRun(e){return b(this,null,function*(){let t=e._id??"",n=new Set(this.expanded_$());if(n.has(t)){n.delete(t),this.expanded_$.set(n);return}n.add(t),this.expanded_$.set(n);let r=Array.isArray(e.table)?e.table[0]:e.table;if(!r)return;let p=yield this.api.getItems(r,{ingestRunId:t,pageSize:200});p.data&&this.runChunks_$.set(Q(R({},this.runChunks_$()),{[t]:p.data.items}))})}chunksFor(e){return this.runChunks_$()[e]??[]}isFailed(e){return e.status==="failed"||e.status==="partial-failed"}deleteRun(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Run csoportos soft-delete",message:`A(z) ${e._id} run minden chunkja t\xF6rl\xE9sre ker\xFCl (soft-delete). Folytatod?`,confirmBtn:"Delete run"})))return;let n=yield this.api.invokeCapability("delete_ingest_run",{ingestRunId:e._id});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Run t\xF6r\xF6lve (soft-delete)."),yield this.load()})}viewRunErrors(e){this.router.navigate(["/errors"],{queryParams:{ingestRunId:e._id}})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-ingest-timeline"]],standalone:!0,features:[B],decls:16,vars:4,consts:[["data-testid","ma-ingest-timeline",1,"mx-auto","max-w-5xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","items-center","gap-2","text-sm"],["data-testid","ma-ingest-table-filter",1,"rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["data-testid","ma-ingest-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-ingest-list",1,"flex","flex-col","gap-2"],[1,"rounded","border","bg-neutral-900",3,"border-red-700","border-neutral-800"],[1,"py-6","text-center","opacity-50"],[1,"rounded","border","bg-neutral-900"],[1,"flex","items-center","justify-between","px-3","py-2","text-sm"],[1,"flex-1"],[1,"font-medium"],[1,"opacity-50"],[1,"mt-1","text-xs","opacity-60"],[1,"flex","items-center","gap-2"],[1,"rounded","px-2","py-0.5","text-xs"],[1,"rounded","px-2","py-1","text-xs","text-red-300","hover:bg-neutral-800"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"rounded","px-2","py-1","text-xs","text-red-400","hover:bg-neutral-800",3,"click"],[1,"border-t","border-neutral-800","p-2"],[1,"rounded","px-2","py-1","text-xs","text-red-300","hover:bg-neutral-800",3,"click"],[1,"rounded","px-2","py-1","text-xs","opacity-80"],[1,"py-2","text-center","text-xs","opacity-40"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"a",3),s(5,"\u2190 Maintenance"),a(),o(6,"h1",4),s(7,"Ingest timeline"),a()(),o(8,"div",5)(9,"select",6),S("ngModelChange",function(p){return w(n.tableFilter,p)||(n.tableFilter=p),p}),u("ngModelChange",function(){return n.load()}),o(10,"option",7),s(11,"\xF6sszes t\xE1r"),a(),E(12,Ue,2,2,"option",8,Y),a()()(),C(14,Qe,2,0,"div",9)(15,at,4,1,"div",10),a()),t&2&&(l(4),k("routerLink",I(3,Ge)),l(5),v("ngModel",n.tableFilter),l(3),$(n.mainTables),l(2),x(n.loading_$()?14:15))},dependencies:[L,le,X,Se,Me,we,K,H,P,q,G],encapsulation:2})}return i})();var ot=(i,d)=>d.table,rt=()=>["/maintenance/search"],Ae=()=>["/maintenance/scopes"],lt=()=>["/maintenance/ingest"],st=()=>["/maintenance/settings"],dt=()=>["/errors"],ct=i=>["/maintenance",i];function pt(i,d){i&1&&(o(0,"div",7),s(1," A FAM szerver nem el\xE9rhet\u0151 (port 39185). Ind\xEDtsd el a szervert, majd friss\xEDts. "),a())}function mt(i,d){i&1&&(o(0,"div",8),s(1,"Loading\u2026"),a())}function _t(i,d){i&1&&(o(0,"div",19)(1,"span",21),s(2,"Add first entry"),a(),o(3,"span",21),s(4,"Run scan"),a()())}function ut(i,d){i&1&&(o(0,"div",20),s(1,"Configure embedding \u2192 Settings"),a())}function gt(i,d){if(i&1&&(o(0,"a",10)(1,"div",12)(2,"span",13),s(3),a(),o(4,"span",14),s(5),a()(),o(6,"div",15),s(7),a(),o(8,"div",16),s(9),j(10,"date"),a(),o(11,"div",17),s(12),a(),o(13,"div",18),s(14),a(),C(15,_t,5,0,"div",19)(16,ut,2,0,"div",20),a()),i&2){let e=d.$implicit;k("routerLink",ae(20,ct,e.table)),M("data-testid","ma-table-card-"+e.table),l(3),V(e.label),l(),N("bg-neutral-700",e.status==="empty")("bg-red-700",e.status==="bootstrap-skip"||e.status==="config-error")("bg-emerald-700",e.status==="ok"),M("data-testid","ma-table-status-"+e.table),l(),f(" ",e.status," "),l(2),f("",e.count," bejegyz\xE9s"),l(2),f(" utols\xF3 ingest: ",e.lastIngest?O(10,17,e.lastIngest,"short"):"\u2014"," "),l(3),f("embedding: ",e.embeddingState,""),l(2),f("scope: ",e.scopeHint,""),l(),x(e.status==="empty"?15:-1),l(),x(e.status==="bootstrap-skip"?16:-1)}}function ft(i,d){if(i&1&&(o(0,"div",11)(1,"h2",22),s(2,"Helper (nem kereshet\u0151 t\xE1r)"),a(),o(3,"a",23)(4,"div",12)(5,"span",13),s(6),a(),o(7,"span",24),s(8,"helper"),a()(),o(9,"div",15),s(10),a(),o(11,"div",25),s(12,"alias \u2192 canonical felold\xE1s \xB7 scope-fa kezel\xE9s"),a()()()),i&2){let e=d;l(3),k("routerLink",I(3,Ae)),l(3),V(e.label),l(4),f("",e.count," reference-bejegyz\xE9s")}}function xt(i,d){if(i&1&&(o(0,"div",9),E(1,gt,17,22,"a",10,ot),a(),C(3,ft,13,4,"div",11)),i&2){let e,t=c();l(),$(t.cards_$()),l(2),x((e=t.referenceCard_$())?3:-1,e)}}var Re=(()=>{class i{api=F(A);adminState=F(Le);loading_$=y(!0);cards_$=y([]);referenceCard_$=y(null);get serverUnreachable_$(){return this.adminState.serverUnreachable_$}totalEntries_$=Ve(()=>this.cards_$().reduce((e,t)=>e+t.count,0));ngOnInit(){return b(this,null,function*(){this.adminState.startPolling(),yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getStats();if(e.error){this.adminState.pushBanner({key:"landing-stats-error",color:"red",title:"T\xE1r-statisztika nem el\xE9rhet\u0151",message:`${e.error.errorCode}: ${e.error.message}`,errorsLink:!0}),this.loading_$.set(!1);return}let t={};for(let r of e.data?.tables??[])t[r.table]=r;let n=[];for(let r of te)n.push(yield this.buildCard(r,t[r]));this.cards_$.set(n),this.referenceCard_$.set(yield this.buildReferenceCard()),this.loading_$.set(!1)})}buildCard(e,t){return b(this,null,function*(){let n=t?.count??0,r=yield this.resolveEmbeddingState(e),p=this.deriveStatus(n,r);return{table:e,label:U[e],scopeHint:Te[e],count:n,lastIngest:t?.lastModified??null,status:p,embeddingState:r}})}buildReferenceCard(){return b(this,null,function*(){let t=(yield this.api.invokeCapability("get_reference_stats")).data??{},n=t.count??t.total??0;return{table:h.reference,label:U[h.reference],scopeHint:Te[h.reference],count:n,lastIngest:null,status:n?"ok":"empty",embeddingState:"helper (alias-resolve)"}})}resolveEmbeddingState(e){return b(this,null,function*(){let t=yield this.api.getConfig(e);if(t.error||!t.data)return"nincs (config nem el\xE9rhet\u0151)";let n=t.data,r=n.effective["embedding.provider"],p=n.effective["embedding.model"];if(!r||r.value===null||r.value==="")return"nincs konfigur\xE1lva";let g=r.resolvedFrom==="builtin"||r.resolvedFrom==="global"?"global default":r.resolvedFrom;return`${r.value}${p?.value?" / "+p.value:""} (${g})`})}deriveStatus(e,t){return t.startsWith("nincs")?"bootstrap-skip":e?"ok":"empty"}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-landing"]],standalone:!0,features:[B],decls:22,vars:13,consts:[["data-testid","ma-landing",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-6","flex","items-end","justify-between"],[1,"text-2xl","font-semibold"],[1,"text-sm","opacity-60"],[1,"flex","gap-2","text-sm"],[1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"routerLink"],["data-testid","ma-landing-unreachable",1,"mb-4","rounded","border","border-red-600","bg-red-950","px-4","py-3","text-sm","text-red-200"],["data-testid","ma-landing-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-landing-cards",1,"grid","grid-cols-1","gap-4","sm:grid-cols-2","lg:grid-cols-3"],[1,"block","rounded-lg","border","border-neutral-800","bg-neutral-900","p-4","transition","hover:border-neutral-600",3,"routerLink"],[1,"mt-8"],[1,"flex","items-center","justify-between"],[1,"text-lg","font-medium"],[1,"rounded-full","px-2","py-0.5","text-xs"],[1,"mt-2","text-sm","opacity-70"],[1,"text-xs","opacity-50"],[1,"mt-2","text-xs","opacity-60"],[1,"text-xs","opacity-40"],[1,"mt-3","flex","gap-2","text-xs"],[1,"mt-3","text-xs","text-red-300"],[1,"rounded","border","border-neutral-700","px-2","py-1"],[1,"mb-2","text-sm","uppercase","tracking-wide","opacity-50"],["data-testid","ma-reference-card",1,"block","max-w-sm","rounded-lg","border","border-dashed","border-amber-700/60","bg-neutral-900","p-4","hover:border-amber-500",3,"routerLink"],[1,"rounded-full","bg-amber-800","px-2","py-0.5","text-xs"],[1,"mt-1","text-xs","opacity-50"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"h1",3),s(5,"FDP Agent Memory \u2014 Maintenance"),a(),o(6,"p",4),s(7),a()(),o(8,"div",5)(9,"a",6),s(10,"Search"),a(),o(11,"a",6),s(12,"Scopes"),a(),o(13,"a",6),s(14,"Ingest"),a(),o(15,"a",6),s(16,"Settings"),a(),o(17,"a",6),s(18,"Errors"),a()()(),C(19,pt,2,0,"div",7)(20,mt,2,0,"div",8)(21,xt,4,1),a()),t&2&&(l(7),f("6 f\u0151 RAG-t\xE1r + reference helper \xB7 ",n.totalEntries_$()," bejegyz\xE9s"),l(2),k("routerLink",I(8,rt)),l(2),k("routerLink",I(9,Ae)),l(2),k("routerLink",I(10,lt)),l(2),k("routerLink",I(11,st)),l(2),k("routerLink",I(12,dt)),l(2),x(n.serverUnreachable_$()?19:-1),l(),x(n.loading_$()?20:21))},dependencies:[L,le,P,q,G],encapsulation:2})}return i})();var Ne=(i,d)=>d.scopeId,bt=(i,d)=>d._id,ht=()=>["/maintenance"],Ct=i=>({$implicit:i,depth:0}),yt=()=>[],vt=(i,d)=>({$implicit:i,depth:d});function wt(i,d){i&1&&(o(0,"div",9),s(1,"Loading\u2026"),a())}function St(i,d){if(i&1&&oe(0,13),i&2){let e=d.$implicit;c(2);let t=re(16);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ct,e))}}function Mt(i,d){i&1&&(o(0,"div",14),s(1,"Nincs scope (a write/scan auto-regisztr\xE1lja)."),a())}function kt(i,d){if(i&1&&(o(0,"div",22),s(1),a()),i&2){let e=c();l(),f("aliases: ",e.aliases==null?null:e.aliases.join(", "),"")}}function Tt(i,d){if(i&1){let e=T();o(0,"div",15)(1,"div",20),s(2),a(),o(3,"div",21),s(4),a(),C(5,kt,2,1,"div",22),o(6,"button",23),u("click",function(){let n=m(e),r=c(2);return _(r.viewEntries(n))}),s(7,"View entries"),a()()}if(i&2){let e,t=d;l(2),V(t.canonicalName),l(2),z("layer: ",t.layer," \xB7 ",(e=t.entryCount)!==null&&e!==void 0?e:0," entry"),l(),x(t.aliases!=null&&t.aliases.length?5:-1)}}function Et(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" category: ",e.category," \xB7 ")}}function $t(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" layer: ",e.scopeLayer," \xB7 ")}}function Ft(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;f(" t\xE1rak: ",e.ragScopes==null?null:e.ragScopes.join(", ")," ")}}function Vt(i,d){if(i&1){let e=T();o(0,"div",17)(1,"div",24)(2,"div",25)(3,"div",20)(4,"span",26),s(5),a(),s(6),a(),o(7,"div",27),C(8,Et,1,1)(9,$t,1,1)(10,Ft,1,1),a()(),o(11,"div",28)(12,"button",29),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.openEditForm(n))}),s(13,"edit"),a(),o(14,"button",29),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleActive(n))}),s(15),a()()()()}if(i&2){let e,t=d.$implicit;M("data-testid","ma-reference-"+t._id),l(3),N("opacity-40",!t.isActive),l(2),V(((e=t.aliasTerms)!==null&&e!==void 0?e:I(14,yt)).join(" / ")),l(),f(" \u2192 ",t.canonicalTerm," "),l(2),x(t.category?8:-1),l(),x(t.scopeLayer?9:-1),l(),x(t.ragScopes!=null&&t.ragScopes.length?10:-1),l(4),N("text-emerald-400",!t.isActive)("text-amber-400",t.isActive),M("data-testid","ma-reference-toggle-"+t._id),l(),f(" ",t.isActive?"deactivate":"activate"," ")}}function It(i,d){i&1&&(o(0,"div",18),s(1,"Nincs reference-bejegyz\xE9s."),a())}function Lt(i,d){if(i&1){let e=T();o(0,"div",19)(1,"h3",30),s(2),a(),o(3,"input",31),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formCanonical,n)||(r.formCanonical=n),_(n)}),a(),o(4,"input",32),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formAliases,n)||(r.formAliases=n),_(n)}),a(),o(5,"textarea",33),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formDescription,n)||(r.formDescription=n),_(n)}),a(),o(6,"div",34)(7,"input",35),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formCategory,n)||(r.formCategory=n),_(n)}),a(),o(8,"input",36),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formScopeLayer,n)||(r.formScopeLayer=n),_(n)}),a()(),o(9,"input",37),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.formRagScopes,n)||(r.formRagScopes=n),_(n)}),a(),o(10,"div",38)(11,"button",39),u("click",function(){m(e);let n=c(2);return _(n.submitForm())}),s(12,"Save"),a(),o(13,"button",40),u("click",function(){m(e);let n=c(2);return _(n.formOpen_$.set(!1))}),s(14,"Cancel"),a()()()}if(i&2){let e=c(2);l(2),V(e.editId?"Edit reference":"New reference"),l(),v("ngModel",e.formCanonical),l(),v("ngModel",e.formAliases),l(),v("ngModel",e.formDescription),l(2),v("ngModel",e.formCategory),l(),v("ngModel",e.formScopeLayer),l(),v("ngModel",e.formRagScopes)}}function Pt(i,d){if(i&1&&(o(0,"div",10)(1,"div")(2,"h2",11),s(3,"Scope tree"),a(),o(4,"div",12),E(5,St,1,4,"ng-container",13,Ne,!1,Mt,2,0,"div",14),a(),C(8,Tt,8,4,"div",15),a(),o(9,"div")(10,"h2",11),s(11,"Reference (alias \u2192 canonical)"),a(),o(12,"div",16),E(13,Vt,16,15,"div",17,bt,!1,It,2,0,"div",18),a()()(),C(16,Lt,15,7,"div",19)),i&2){let e,t=c();l(5),$(t.scopeTree_$()),l(3),x((e=t.selectedNode_$())?8:-1,e),l(5),$(t.references_$()),l(3),x(t.formOpen_$()?16:-1)}}function Dt(i,d){if(i&1&&oe(0,13),i&2){let e=d.$implicit,t=c().depth;c();let n=re(16);k("ngTemplateOutlet",n)("ngTemplateOutletContext",Fe(2,vt,e,t+1))}}function Bt(i,d){if(i&1){let e=T();o(0,"div")(1,"button",41),u("click",function(){let n=m(e).$implicit,r=c();return _(r.selectNode(n))}),o(2,"span",42),s(3),a(),s(4),o(5,"span",43),s(6),a()(),E(7,Dt,1,5,"ng-container",13,Ne),a()}if(i&2){let e,t=d.$implicit,n=d.depth;l(),$e("padding-left",8+n*16,"px"),M("data-testid","ma-scope-node-"+t.scopeId),l(2),f("",t.layer,":"),l(),f(" ",t.canonicalName," "),l(2),f("(",(e=t.entryCount)!==null&&e!==void 0?e:0,")"),l(),$(t.children)}}var We=(()=>{class i{api=F(A);route=F(ye);router=F(se);notify=F(J);popup=F(de);scopeTree_$=y([]);selectedNode_$=y(null);references_$=y([]);loading_$=y(!0);formOpen_$=y(!1);editId=null;formCanonical="";formAliases="";formDescription="";formCategory="";formScopeLayer="";formRagScopes="";focusScopeId=null;ngOnInit(){return b(this,null,function*(){this.focusScopeId=this.route.snapshot.queryParamMap.get("focus"),yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0),yield Promise.all([this.loadScopeTree(),this.loadReferences()]),this.loading_$.set(!1),this.focusScopeId&&this.focusNode(this.focusScopeId)})}loadScopeTree(){return b(this,null,function*(){let e=yield this.api.invokeCapability("get_scope_tree");if(e.error)return;let t=e.data??{};this.scopeTree_$.set(t.tree??t.nodes??[])})}loadReferences(){return b(this,null,function*(){let e=yield this.api.invokeCapability("get_reference_stats");if(e.error)return;let t=e.data??{};this.references_$.set(t.references??t.items??[])})}selectNode(e){this.selectedNode_$.set(e)}focusNode(e){let t=this.findNode(this.scopeTree_$(),e);t&&this.selectedNode_$.set(t)}findNode(e,t){for(let n of e){if(n.scopeId===t)return n;let r=this.findNode(n.children??[],t);if(r)return r}return null}viewEntries(e){this.router.navigate(["/maintenance"],{queryParams:{scope:e.scopeId}})}openNewForm(){this.editId=null,this.formCanonical="",this.formAliases="",this.formDescription="",this.formCategory="",this.formScopeLayer="",this.formRagScopes="",this.formOpen_$.set(!0)}openEditForm(e){this.editId=e._id??null,this.formCanonical=e.canonicalTerm,this.formAliases=(e.aliasTerms??[]).join(", "),this.formDescription=e.description??"",this.formCategory=e.category??"",this.formScopeLayer=e.scopeLayer??"",this.formRagScopes=(e.ragScopes??[]).join(", "),this.formOpen_$.set(!0)}submitForm(){return b(this,null,function*(){if(!this.formCanonical.trim()){this.notify.newErrorMessage("A canonical term k\xF6telez\u0151.");return}let e={canonicalTerm:this.formCanonical,aliasTerms:this.parseCsv(this.formAliases),description:this.formDescription||void 0,category:this.formCategory||void 0,scopeLayer:this.formScopeLayer||void 0,ragScopes:this.parseCsv(this.formRagScopes)},t=yield this.api.invokeCapability(this.editId?"update_reference":"create_reference",R({id:this.editId??void 0},e));if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(this.editId?"Reference friss\xEDtve.":"Reference l\xE9trehozva."),this.formOpen_$.set(!1),yield this.loadReferences(),yield this.suggestRebuild()})}toggleActive(e){return b(this,null,function*(){let t=yield this.api.invokeCapability("toggle_reference",{id:e._id,isActive:!e.isActive});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`Reference ${e.isActive?"inaktiv\xE1lva":"aktiv\xE1lva"}.`),yield this.loadReferences(),yield this.suggestRebuild()})}rebuildIndex(){return b(this,null,function*(){let e=yield this.api.invokeCapability("rebuild_reference_index");if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`);return}this.notify.newSuccessMessage("Reference-index \xFAjra\xE9p\xEDtve.")})}suggestRebuild(){return b(this,null,function*(){(yield this.popup.newConfirm({title:"Reference-index rebuild",message:"A reference-cache TTL-es (60s). Most \xFAjra\xE9p\xEDtsem az indexet, hogy a v\xE1ltoz\xE1s azonnal hasson?",confirmBtn:"Rebuild now"}))&&(yield this.rebuildIndex())})}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-scopes"]],standalone:!0,features:[B],decls:17,vars:3,consts:[["scopeNode",""],["data-testid","ma-scopes",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","gap-2","text-sm"],["data-testid","ma-scopes-new-ref",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-scopes-rebuild",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-scopes-loading",1,"py-10","text-center","opacity-60"],[1,"grid","grid-cols-1","gap-6","lg:grid-cols-2"],[1,"mb-2","text-sm","uppercase","tracking-wide","opacity-50"],["data-testid","ma-scope-tree",1,"rounded","border","border-neutral-800","bg-neutral-900","p-3"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"py-4","text-center","text-sm","opacity-50"],["data-testid","ma-scope-detail",1,"mt-3","rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],["data-testid","ma-reference-list",1,"flex","flex-col","gap-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"py-4","text-center","opacity-50"],["data-testid","ma-reference-form",1,"mt-6","rounded","border","border-neutral-800","bg-neutral-900","p-4"],[1,"font-medium"],[1,"text-xs","opacity-60"],[1,"mt-1","text-xs","opacity-60"],["data-testid","ma-scope-view-entries",1,"mt-2","rounded","border","border-neutral-700","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"flex","items-start","justify-between"],[1,"flex-1"],[1,"opacity-60"],[1,"mt-1","text-xs","opacity-50"],[1,"flex","gap-1"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"mb-3","font-medium"],["placeholder","canonical term","data-testid","ma-ref-canonical",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","aliases (typo / fonetikus / STT, vessz\u0151vel)","data-testid","ma-ref-aliases",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","2","placeholder","description",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","flex","gap-2"],["placeholder","category",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","scope-layer (opc.)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","ragScopes \u2014 mely t\xE1rakra (vessz\u0151vel, \xFCres = mind)",1,"mb-3","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"flex","gap-2"],["data-testid","ma-ref-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],[1,"rounded","border","border-neutral-700","px-4","py-1","text-sm","hover:bg-neutral-800",3,"click"],["type","button",1,"block","w-full","rounded","px-2","py-1","text-left","text-sm","hover:bg-neutral-800",3,"click"],[1,"opacity-50"],[1,"opacity-40"]],template:function(t,n){if(t&1){let r=T();o(0,"div",1),W(1,"ma-banner-host",2),o(2,"div",3)(3,"div")(4,"a",4),s(5,"\u2190 Maintenance"),a(),o(6,"h1",5),s(7,"Scopes & Reference"),a()(),o(8,"div",6)(9,"button",7),u("click",function(){return m(r),_(n.openNewForm())}),s(10,"New reference"),a(),o(11,"button",8),u("click",function(){return m(r),_(n.rebuildIndex())}),s(12,"Rebuild index"),a()()(),C(13,wt,2,0,"div",9)(14,Pt,17,4),a(),C(15,Bt,9,6,"ng-template",null,0,be)}t&2&&(l(4),k("routerLink",I(2,ht)),l(9),x(n.loading_$()?13:14))},dependencies:[L,he,X,Z,K,H,P,q,G],encapsulation:2})}return i})();var At=(i,d)=>d.query,Rt=(i,d)=>d.id,Nt=(i,d)=>d.rawToken,Wt=(i,d)=>d.scopeId,zt=()=>["/maintenance"];function jt(i,d){if(i&1){let e=T();o(0,"button",23),u("click",function(){let n=m(e),r=n.$implicit,p=n.$index,g=c(2);return _(g.toggleTable(p,r))}),s(1),a()}if(i&2){let e=d.$implicit,t=d.$index,n=c(2);N("bg-blue-700",n.isTableSelected(t,e))("bg-neutral-800",!n.isTableSelected(t,e)),M("data-testid","ma-search-table-"+t+"-"+e),l(),f(" ",n.tableLabel(e)," ")}}function Ot(i,d){if(i&1){let e=T();o(0,"div",6)(1,"div",18),E(2,jt,2,6,"button",19,Y),a(),o(4,"div",20)(5,"input",21),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.setQuery(r,n))}),a(),o(6,"button",22),u("click",function(){let n=m(e).$index,r=c();return _(r.removeRow(n))}),s(7,"remove"),a()()()}if(i&2){let e=d.$implicit,t=d.$index,n=c();l(2),$(n.mainTables),l(3),k("ngModel",e.query),M("data-testid","ma-search-query-"+t)}}function qt(i,d){i&1&&(o(0,"div",15),s(1,"Searching\u2026"),a())}function Kt(i,d){i&1&&(s(0," \xB7 "),o(1,"span",25),s(2,"relev\xE1ns elemek lemaradtak (truncated)"),a())}function Ht(i,d){if(i&1){let e=T();o(0,"button",36),u("click",function(){let n=m(e).$implicit,r=c(4);return _(r.applySuggestion(n))}),s(1),a()}if(i&2){let e=d.$implicit;M("data-testid","ma-search-suggestion"),l(),f(" ",e," ")}}function Xt(i,d){if(i&1&&(o(0,"div",34),E(1,Ht,2,2,"button",35,Y),a()),i&2){let e=c(2).$implicit;l(),$(e.suggestions)}}function Gt(i,d){if(i&1&&(o(0,"div",27)(1,"div",32),s(2,"S\u0171r\u0171 eredm\xE9ny \u2014 a query t\xFAl t\xE1g lehet"),a(),o(3,"div",33),s(4),C(5,Kt,3,0,"span",25),a(),C(6,Xt,3,0,"div",34),a()),i&2){let e=c().$implicit;M("data-testid","ma-search-dense-"+e.query),l(4),f(" ",e.totalRelevant," relev\xE1ns elem a minScore felett (topK el\u0151tt) "),l(),x(e.truncated?5:-1),l(),x(e.suggestions.length?6:-1)}}function Ut(i,d){if(i&1&&(o(0,"div"),s(1),j(2,"number"),a()),i&2){let e=d.$implicit;l(),ee('"',e.rawToken,'" \u2192 ',e.resolvedTo," (konfidencia: ",O(2,3,e.confidence,"1.2-2"),")")}}function Qt(i,d){if(i&1&&(o(0,"div",28),E(1,Ut,3,6,"div",null,Nt),a()),i&2){let e=c().$implicit;M("data-testid","ma-search-uncertainty"),l(),$(e.uncertaintyNotes)}}function Zt(i,d){if(i&1&&s(0),i&2){let e=c(2).$implicit;f(" path: ",e.headingPath==null?null:e.headingPath.join(" > ")," \xB7 ")}}function Jt(i,d){if(i&1&&s(0),i&2){let e=c(2).$implicit;z(" chars ",e.position.charStart,"\u2013",e.position.charEnd," \xB7 ")}}function Yt(i,d){if(i&1&&(o(0,"div",43),s(1),a(),o(2,"div",44),C(3,Zt,1,1)(4,Jt,1,2),s(5),a()),i&2){let e,t=c().$implicit;l(),V(t.content),l(2),x(t.headingPath!=null&&t.headingPath.length?3:-1),l(),x(t.position?4:-1),l(),z(" kind: ",(e=t.kind)!==null&&e!==void 0?e:"\u2014"," \xB7 tags: ",t.tags.join(", ")," ")}}function en(i,d){if(i&1&&(o(0,"div",39),s(1),a()),i&2){let e=c().$implicit;l(),V(e.content)}}function tn(i,d){if(i&1&&(o(0,"span",41),s(1),a()),i&2){let e=d.$implicit;l(),z("",e.layer,":",e.canonicalName,"")}}function nn(i,d){if(i&1){let e=T();o(0,"div",30)(1,"div",37)(2,"div",38),C(3,Yt,6,5)(4,en,2,1,"div",39),o(5,"div",40)(6,"span"),s(7),j(8,"number"),a(),o(9,"span"),s(10),a(),o(11,"span"),s(12),j(13,"number"),a(),o(14,"span"),s(15),a(),o(16,"span"),s(17),a(),E(18,tn,2,2,"span",41,Wt),a()(),o(20,"button",42),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.toggleExpand(n.id))}),s(21),a()()()}if(i&2){let e=d.$implicit,t=c(2);M("data-testid","ma-search-hit-"+e.id),l(3),x(t.isExpanded(e.id)?3:4),l(4),f("score ",O(8,9,e.score,"1.3-3"),""),l(3),f("weight ",e.weight,""),l(2),f("final ",O(13,12,e.finalScore,"1.3-3"),""),l(3),V(t.tableLabel(e.table)),l(2),f("src: ",t.hitSource(e),""),l(),$(e.scopePath),l(2),M("data-testid","ma-search-expand-"+e.id),l(),f(" ",t.isExpanded(e.id)?"collapse":"expand"," ")}}function an(i,d){i&1&&(o(0,"div",31),s(1,"Nincs tal\xE1lat erre a query-re."),a())}function on(i,d){if(i&1&&(o(0,"div",17)(1,"div",24)(2,"span",25),s(3),a(),o(4,"span",26),s(5),a()(),C(6,Gt,7,4,"div",27)(7,Qt,3,1,"div",28),o(8,"div",29),E(9,nn,22,15,"div",30,Rt,!1,an,2,0,"div",31),a()()),i&2){let e=d.$implicit;l(3),f('"',e.query,'"'),l(2),z(" \xB7 ",e.hits.length," hit \xB7 ",e.totalRelevant," relev\xE1ns"),l(),x(e.denseResults?6:-1),l(),x(e.uncertaintyNotes.length?7:-1),l(2),$(e.hits)}}var ze=(()=>{class i{api=F(A);notify=F(J);mainTables=te;rows_$=y([{tables:[h.memory],query:""}]);topK=5;minScore=0;tagFilter="";kindFilter="";results_$=y([]);searching_$=y(!1);expanded_$=y(new Set);ngOnInit(){return b(this,null,function*(){yield this.loadDefaults()})}loadDefaults(){return b(this,null,function*(){let e=yield this.api.getConfig();if(e.data?.effective){let t=e.data.effective["read.topK"],n=e.data.effective["read.minScore"];typeof t?.value=="number"&&(this.topK=t.value),typeof n?.value=="number"&&(this.minScore=n.value)}})}addRow(){this.rows_$.set([...this.rows_$(),{tables:[h.knowledge],query:""}])}removeRow(e){this.rows_$.set(this.rows_$().filter((t,n)=>n!==e))}toggleTable(e,t){let n=[...this.rows_$()],r=n[e].tables.includes(t)?n[e].tables.filter(p=>p!==t):[...n[e].tables,t];n[e]=Q(R({},n[e]),{tables:r}),this.rows_$.set(n)}isTableSelected(e,t){return this.rows_$()[e].tables.includes(t)}setQuery(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{query:t}),this.rows_$.set(n)}tableLabel(e){return U[e]}search(){return b(this,null,function*(){let e=this.rows_$().filter(n=>n.query.trim()&&n.tables.length);if(!e.length){this.notify.newErrorMessage("Adj meg legal\xE1bb egy query-t (t\xE1bla + phrase).");return}this.searching_$.set(!0);let t=yield this.api.read({queries:e.map(n=>({tables:n.tables,query:n.query,topK:this.topK,minScore:this.minScore,tagFilter:this.tagFilter?this.parseCsv(this.tagFilter):void 0,kindFilter:this.kindFilter||void 0})),includeContent:!0});if(this.searching_$.set(!1),t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`),this.results_$.set([]);return}this.results_$.set(t.data?.results??[])})}toggleExpand(e){let t=new Set(this.expanded_$());t.has(e)?t.delete(e):t.add(e),this.expanded_$.set(t)}isExpanded(e){return this.expanded_$().has(e)}applySuggestion(e){let t=e.toLowerCase(),n=e.match(/tag[:=]\s*([\w-]+)/i),r=e.match(/kind[:=]\s*([\w-]+)/i);n?this.tagFilter=this.tagFilter?`${this.tagFilter},${n[1]}`:n[1]:r?this.kindFilter=r[1]:t.includes("mincore")||t.includes("minscore")?this.minScore=Math.min(this.minScore+.1,1):t.includes("topk")&&(this.topK=Math.max(this.topK-1,1)),this.search()}hitSource(e){return e.sourceFilePath?e.sourceFilePath:e.source?.type??"manual"}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-search"]],standalone:!0,features:[B],decls:27,vars:7,consts:[["data-testid","ma-search",1,"mx-auto","max-w-5xl","p-6"],[1,"mb-4","block"],[1,"mb-4"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],["data-testid","ma-search-queries",1,"mb-4","flex","flex-col","gap-3"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3"],["data-testid","ma-search-add-query",1,"self-start","rounded","border","border-neutral-700","px-3","py-1","text-sm","hover:bg-neutral-800",3,"click"],[1,"mb-4","flex","flex-wrap","items-center","gap-3","text-sm"],[1,"flex","items-center","gap-1"],["type","number","data-testid","ma-search-topk",1,"w-20","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["type","number","step","0.05","data-testid","ma-search-minscore",1,"w-24","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","tag filter (vessz\u0151vel)","data-testid","ma-search-tagfilter",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","kind filter","data-testid","ma-search-kindfilter",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["data-testid","ma-search-submit",1,"rounded","bg-blue-700","px-4","py-1","hover:bg-blue-600",3,"click"],["data-testid","ma-search-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-search-results",1,"flex","flex-col","gap-6"],[1,"rounded","border","border-neutral-800"],[1,"mb-2","flex","flex-wrap","gap-1"],["type","button",1,"rounded","px-2","py-1","text-xs",3,"bg-blue-700","bg-neutral-800"],[1,"flex","items-center","gap-2"],["placeholder","query phrase",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],[1,"rounded","px-2","py-1","text-sm","text-red-400","hover:bg-neutral-800",3,"click"],["type","button",1,"rounded","px-2","py-1","text-xs",3,"click"],[1,"border-b","border-neutral-800","bg-neutral-900","px-3","py-2","text-sm"],[1,"font-medium"],[1,"opacity-50"],[1,"border-b","border-yellow-700","bg-yellow-950","px-3","py-2","text-sm","text-yellow-200"],[1,"border-b","border-amber-700/60","bg-neutral-900","px-3","py-2","text-xs","text-amber-300"],[1,"flex","flex-col","gap-2","p-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"py-4","text-center","opacity-50"],[1,"font-semibold"],[1,"mt-1"],[1,"mt-2","flex","flex-wrap","gap-2"],["type","button",1,"rounded","bg-yellow-800","px-2","py-1","text-xs","hover:bg-yellow-700"],["type","button",1,"rounded","bg-yellow-800","px-2","py-1","text-xs","hover:bg-yellow-700",3,"click"],[1,"flex","items-start","justify-between","gap-3"],[1,"flex-1"],[1,"line-clamp-2","opacity-90"],[1,"mt-1","flex","flex-wrap","gap-2","text-xs","opacity-60"],[1,"rounded","bg-purple-900","px-1.5","py-0.5"],[1,"rounded","px-2","py-1","text-xs","hover:bg-neutral-800",3,"click"],[1,"whitespace-pre-wrap","opacity-90"],[1,"mt-1","text-xs","opacity-50"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"a",3),s(4,"\u2190 Maintenance"),a(),o(5,"h1",4),s(6,"Search (val\xF3di read-teszt)"),a()(),o(7,"div",5),E(8,Ot,8,2,"div",6,xe),o(10,"button",7),u("click",function(){return n.addRow()}),s(11,"+ add query"),a()(),o(12,"div",8)(13,"label",9),s(14,"topK "),o(15,"input",10),S("ngModelChange",function(p){return w(n.topK,p)||(n.topK=p),p}),a()(),o(16,"label",9),s(17,"minScore "),o(18,"input",11),S("ngModelChange",function(p){return w(n.minScore,p)||(n.minScore=p),p}),a()(),o(19,"input",12),S("ngModelChange",function(p){return w(n.tagFilter,p)||(n.tagFilter=p),p}),a(),o(20,"input",13),S("ngModelChange",function(p){return w(n.kindFilter,p)||(n.kindFilter=p),p}),a(),o(21,"button",14),u("click",function(){return n.search()}),s(22,"Search"),a()(),C(23,qt,2,0,"div",15),o(24,"div",16),E(25,on,12,6,"div",17,At),a()()),t&2&&(l(3),k("routerLink",I(6,zt)),l(5),$(n.rows_$()),l(7),v("ngModel",n.topK),l(3),v("ngModel",n.minScore),l(),v("ngModel",n.tagFilter),l(),v("ngModel",n.kindFilter),l(3),x(n.searching_$()?23:-1),l(2),$(n.results_$()))},dependencies:[L,Ce,X,Z,Ie,K,H,P,q,G],encapsulation:2})}return i})();var rn=(i,d)=>d.key,ln=()=>["/maintenance"];function sn(i,d){if(i&1&&(o(0,"option",7),s(1),a()),i&2){let e=d.$implicit,t=c();k("value",e),l(),f("",t.tableLabel(e)," (table-override)")}}function dn(i,d){i&1&&(o(0,"div",15),s(1,"Loading\u2026"),a())}function cn(i,d){if(i&1){let e=T();o(0,"input",25),u("ngModelChange",function(n){m(e);let r=c().$implicit,p=c(2);return _(p.onValueChange(r.key,n))}),a()}if(i&2){let e=c().$implicit;k("ngModel",e.value),M("data-testid","ma-config-value-"+e.key)}}function pn(i,d){if(i&1){let e=T();o(0,"input",26),u("ngModelChange",function(n){m(e);let r=c().$implicit,p=c(2);return _(p.onValueChange(r.key,n))}),a()}if(i&2){let e=c().$implicit;k("ngModel",e.value),M("data-testid","ma-config-value-"+e.key)}}function mn(i,d){if(i&1){let e=T();o(0,"div",17)(1,"div",19),s(2),a(),o(3,"div",20),C(4,cn,1,2,"input",21)(5,pn,1,2,"input",22),a(),o(6,"span",23),s(7),a(),o(8,"button",24),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.saveRow(n))}),s(9,"Save"),a()()}if(i&2){let e=d.$implicit,t=c(2);M("data-testid","ma-config-row-"+e.key),l(2),V(e.key),l(2),x(t.isBoolean(e.value)?4:5),l(2),N("bg-neutral-700",e.resolvedFrom==="builtin"||e.resolvedFrom==="global")("bg-blue-800",e.resolvedFrom==="table")("bg-purple-800",e.resolvedFrom==="scope"),M("data-testid","ma-config-source-"+e.key),l(),f(" ",t.sourceLabel(e.resolvedFrom)," "),l(),M("data-testid","ma-config-save-"+e.key)}}function _n(i,d){i&1&&(o(0,"div",18),s(1,"Nincs config-kulcs (a szerver nem el\xE9rhet\u0151?)."),a())}function un(i,d){if(i&1&&(o(0,"div",16),E(1,mn,10,12,"div",17,rn,!1,_n,2,0,"div",18),a()),i&2){let e=c();l(),$(e.rows_$())}}var je=(()=>{class i{api=F(A);notify=F(J);mainTables=te;tableScope="";rows_$=y([]);loading_$=y(!0);ngOnInit(){return b(this,null,function*(){yield this.load()})}load(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getConfig(this.tableScope||void 0);if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}let t=e.data?.effective??{},n=Object.keys(t).sort().map(r=>({key:r,value:t[r].value,resolvedFrom:t[r].resolvedFrom}));this.rows_$.set(n),this.loading_$.set(!1)})}tableLabel(e){return U[e]}sourceLabel(e){switch(e){case"builtin":return"builtin default";case"global":return"\xF6r\xF6kl\xF6tt global default";case"table":return"table-override";case"scope":return"scope-override";default:return e}}isBoolean(e){return typeof e=="boolean"}onValueChange(e,t){let n=this.rows_$().map(r=>r.key===e?Q(R({},r),{value:t}):r);this.rows_$.set(n)}saveRow(e){return b(this,null,function*(){let t=yield this.api.setConfig({key:e.key,value:e.value,table:this.tableScope||void 0});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`${e.key} mentve.`),yield this.load()})}applyOpenAiPreset(){return b(this,null,function*(){yield this.applyPreset("openai")})}applyLmStudioPreset(){return b(this,null,function*(){yield this.applyPreset("lmstudio")})}applyPreset(e){return b(this,null,function*(){let t=yield this.api.invokeCapability("apply_preset",{preset:e,table:this.tableScope||void 0});if(t.error){this.notify.newErrorMessage(`${t.error.errorCode}: ${t.error.message}`);return}this.notify.newSuccessMessage(`${e} preset alkalmazva.`),yield this.load()})}testMongo(){this.runTest("test_mongodb_connection","MongoDB")}testEmbedding(){this.runTest("test_embedding_provider","Embedding-provider")}testVectorSearch(){this.runTest("test_vector_search","Vector search")}runTest(e,t){return b(this,null,function*(){let n=yield this.api.invokeCapability(e);if(n.error){this.notify.newErrorMessage(`${t} teszt: ${n.error.errorCode} \u2014 ${n.error.message}`);return}let r=n.data??{};r.ok===!1?this.notify.newErrorMessage(`${t} teszt sikertelen: ${r.message??"ismeretlen ok"}`):this.notify.newSuccessMessage(`${t} teszt OK${r.message?" \u2014 "+r.message:""}.`)})}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-settings"]],standalone:!0,features:[B],decls:28,vars:4,consts:[["data-testid","ma-settings",1,"mx-auto","max-w-4xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],["data-testid","ma-settings-scope",1,"rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["data-testid","ma-settings-actions",1,"mb-4","flex","flex-wrap","gap-2","text-sm"],["data-testid","ma-preset-openai",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-preset-lmstudio",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],[1,"mx-1","opacity-30"],["data-testid","ma-test-mongo",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-test-embedding",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-test-vector",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-settings-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-settings-rows",1,"flex","flex-col","gap-2"],[1,"flex","flex-wrap","items-center","gap-3","rounded","border","border-neutral-800","bg-neutral-900","p-2","text-sm"],[1,"py-6","text-center","opacity-50"],[1,"w-56","font-mono","text-xs"],[1,"flex-1"],["type","checkbox",3,"ngModel"],[1,"w-full","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1",3,"ngModel"],[1,"rounded","px-2","py-0.5","text-xs"],[1,"rounded","bg-emerald-700","px-3","py-1","text-xs","hover:bg-emerald-600",3,"click"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"w-full","rounded","border","border-neutral-700","bg-neutral-950","px-2","py-1",3,"ngModelChange","ngModel"]],template:function(t,n){t&1&&(o(0,"div",0),W(1,"ma-banner-host",1),o(2,"div",2)(3,"div")(4,"a",3),s(5,"\u2190 Maintenance"),a(),o(6,"h1",4),s(7,"Settings"),a()(),o(8,"select",5),S("ngModelChange",function(p){return w(n.tableScope,p)||(n.tableScope=p),p}),u("ngModelChange",function(){return n.load()}),o(9,"option",6),s(10,"global"),a(),E(11,sn,2,2,"option",7,Y),a()(),o(13,"div",8)(14,"button",9),u("click",function(){return n.applyOpenAiPreset()}),s(15,"Apply OpenAI preset"),a(),o(16,"button",10),u("click",function(){return n.applyLmStudioPreset()}),s(17,"Apply LM Studio preset"),a(),o(18,"span",11),s(19,"|"),a(),o(20,"button",12),u("click",function(){return n.testMongo()}),s(21,"Test MongoDB"),a(),o(22,"button",13),u("click",function(){return n.testEmbedding()}),s(23,"Test embedding"),a(),o(24,"button",14),u("click",function(){return n.testVectorSearch()}),s(25,"Test vector search"),a()(),C(26,dn,2,0,"div",15)(27,un,4,1,"div",16),a()),t&2&&(l(4),k("routerLink",I(3,ln)),l(4),v("ngModel",n.tableScope),l(3),$(n.mainTables),l(15),x(n.loading_$()?26:27))},dependencies:[L,X,Se,Me,Z,ve,we,K,H,P,q,G],encapsulation:2})}return i})();var ce=function(i){return i.create="create",i.update="update",i.delete="delete",i.scanFile="scan-file",i.scanFolder="scan-folder",i.scanProject="scan-project",i.reEmbed="re-embed",i.import="import",i}(ce||{});function gn(i,d){if(i&1&&(o(0,"div",7),s(1),o(2,"span",8),s(3),j(4,"number"),a()()),i&2){let e=c(),t=e.$implicit,n=e.$index;M("data-testid","ma-scope-preview-"+n),l(),f(" \u2192 ",t.resolvedPreview.canonicalName," "),l(2),f("(konfidencia: ",O(4,3,t.resolvedPreview.confidence,"1.2-2"),")")}}function fn(i,d){if(i&1){let e=T();o(0,"div",2)(1,"input",4),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.onLayerChange(r,n))}),a(),o(2,"input",5),u("ngModelChange",function(n){let r=m(e).$index,p=c();return _(p.onRawNameChange(r,n))}),a(),o(3,"button",6),u("click",function(){let n=m(e).$index,r=c();return _(r.removeLayer(n))}),s(4," remove "),a(),C(5,gn,5,6,"div",7),a()}if(i&2){let e=d.$implicit,t=d.$index;l(),k("ngModel",e.layer),M("data-testid","ma-scope-layer-"+t),l(),k("ngModel",e.rawName),M("data-testid","ma-scope-rawname-"+t),l(),M("data-testid","ma-scope-remove-"+t),l(2),x(e.resolvedPreview?5:-1)}}var Oe=(()=>{class i{api=F(A);value=[];valueChange=new Ee;rows_$=y([]);ngOnInit(){let e=(this.value??[]).map(t=>({layer:t.layer,rawName:t.rawName,resolvedPreview:void 0}));this.rows_$.set(e.length?e:[{layer:"project",rawName:"",resolvedPreview:void 0}])}addLayer(){this.rows_$.set([...this.rows_$(),{layer:"",rawName:"",resolvedPreview:void 0}])}removeLayer(e){this.rows_$.set(this.rows_$().filter((t,n)=>n!==e)),this.emit()}onLayerChange(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{layer:t}),this.rows_$.set(n),this.emit()}onRawNameChange(e,t){let n=[...this.rows_$()];n[e]=Q(R({},n[e]),{rawName:t}),this.rows_$.set(n),this.emit(),this.loadPreview(e)}loadPreview(e){return b(this,null,function*(){let t=this.rows_$()[e];if(!t?.rawName)return;let n=yield this.api.invokeCapability("trace_reference_expansion",{layer:t.layer,rawName:t.rawName});if(n.error)return;let r=n.data??{};if(r.canonicalName){let p=[...this.rows_$()];p[e]=Q(R({},p[e]),{resolvedPreview:{canonicalName:r.canonicalName,confidence:r.confidence??0}}),this.rows_$.set(p)}})}emit(){let e=this.rows_$().filter(t=>t.layer&&t.rawName).map(t=>({layer:t.layer,rawName:t.rawName}));this.value=e,this.valueChange.emit(e)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-scope-picker"]],inputs:{value:"value"},outputs:{valueChange:"valueChange"},standalone:!0,features:[B],decls:7,vars:0,consts:[["data-testid","ma-scope-picker",1,"flex","flex-col","gap-2"],[1,"text-xs","uppercase","tracking-wide","opacity-60"],[1,"flex","flex-wrap","items-center","gap-2"],["type","button","data-testid","ma-scope-add-layer",1,"self-start","rounded","border","border-neutral-700","px-3","py-1","text-sm","hover:bg-neutral-800",3,"click"],["type","text","placeholder","layer (pl. project)",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["type","text","placeholder","n\xE9v (pl. Adventor)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1","text-sm",3,"ngModelChange","ngModel"],["type","button",1,"rounded","px-2","py-1","text-sm","text-red-400","hover:bg-neutral-800",3,"click"],[1,"basis-full","pl-2","text-xs","text-emerald-400"],[1,"opacity-70"]],template:function(t,n){t&1&&(o(0,"div",0)(1,"div",1),s(2,"Scope (root \u2192 leaf, k\xF6telez\u0151)"),a(),E(3,fn,6,6,"div",2,xe),o(5,"button",3),u("click",function(){return n.addLayer()}),s(6," + add layer "),a()()),t&2&&(l(3),$(n.rows_$()))},dependencies:[L,Ce,X,Z,K,H],encapsulation:2})}return i})();var qe=(i,d)=>d._id,xn=(i,d)=>d.runId,bn=(i,d)=>d.scopeId,hn=()=>["/maintenance"],Ke=i=>({$implicit:i});function Cn(i,d){if(i&1&&(o(0,"div",11)(1,"div")(2,"span",25),s(3,"count:"),a(),s(4),a(),o(5,"div")(6,"span",25),s(7,"pending:"),a(),s(8),a(),o(9,"div")(10,"span",25),s(11,"completed:"),a(),s(12),a(),o(13,"div")(14,"span",25),s(15,"error:"),a(),s(16),a()()),i&2){let e,t,n,r=d;l(4),f(" ",r.count,""),l(4),f(" ",(e=r.embeddingStatus==null?null:r.embeddingStatus.pending)!==null&&e!==void 0?e:0,""),l(4),f(" ",(t=r.embeddingStatus==null?null:r.embeddingStatus.completed)!==null&&t!==void 0?t:0,""),l(4),f(" ",(n=r.embeddingStatus==null?null:r.embeddingStatus.error)!==null&&n!==void 0?n:0,"")}}function yn(i,d){if(i&1){let e=T();o(0,"textarea",35),S("ngModelChange",function(n){m(e);let r=c(2);return w(r.addCode,n)||(r.addCode=n),_(n)}),a()}if(i&2){let e=c(2);v("ngModel",e.addCode)}}function vn(i,d){if(i&1&&(o(0,"div",32),s(1),a()),i&2){let e=c(2);l(),f("aj\xE1nlott tag-ek: ",e.recommendedTags.join(", "),"")}}function wn(i,d){if(i&1){let e=T();o(0,"div",12)(1,"h3",26),s(2,"Manual add"),a(),o(3,"textarea",27),S("ngModelChange",function(n){m(e);let r=c();return w(r.addContent,n)||(r.addContent=n),_(n)}),a(),C(4,yn,1,1,"textarea",28),o(5,"div",29)(6,"input",30),S("ngModelChange",function(n){m(e);let r=c();return w(r.addKind,n)||(r.addKind=n),_(n)}),a(),o(7,"input",31),S("ngModelChange",function(n){m(e);let r=c();return w(r.addTags,n)||(r.addTags=n),_(n)}),a()(),C(8,vn,2,1,"div",32),o(9,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.addScope,n)||(r.addScope=n),_(n)}),a(),o(10,"button",34),u("click",function(){m(e);let n=c();return _(n.submitAdd())}),s(11,"Create"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.addContent),l(),x(e.isCodingPatterns?4:-1),l(2),v("ngModel",e.addKind),l(),v("ngModel",e.addTags),l(),x(e.recommendedTags.length?8:-1),l(),v("value",e.addScope)}}function Sn(i,d){if(i&1){let e=T();o(0,"div",13)(1,"h3",26),s(2,"Bulk paste (\xFCres sor v\xE1lasztja el a blokkokat)"),a(),o(3,"textarea",36),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkText,n)||(r.bulkText=n),_(n)}),a(),o(4,"div",29)(5,"input",37),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkKind,n)||(r.bulkKind=n),_(n)}),a(),o(6,"input",38),S("ngModelChange",function(n){m(e);let r=c();return w(r.bulkTags,n)||(r.bulkTags=n),_(n)}),a()(),o(7,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.bulkScope,n)||(r.bulkScope=n),_(n)}),a(),o(8,"button",39),u("click",function(){m(e);let n=c();return _(n.submitBulk())}),s(9,"Import all"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.bulkText),l(2),v("ngModel",e.bulkKind),l(),v("ngModel",e.bulkTags),l(),v("value",e.bulkScope)}}function Mn(i,d){if(i&1){let e=T();o(0,"div",14)(1,"h3",26),s(2,"Run scan / system-sync"),a(),o(3,"input",40),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanPath,n)||(r.scanPath=n),_(n)}),a(),o(4,"div",29)(5,"input",41),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanInclude,n)||(r.scanInclude=n),_(n)}),a(),o(6,"input",42),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanExclude,n)||(r.scanExclude=n),_(n)}),a()(),o(7,"label",43)(8,"input",44),S("ngModelChange",function(n){m(e);let r=c();return w(r.scanDryRun,n)||(r.scanDryRun=n),_(n)}),a(),s(9," dry-run (csak felder\xEDt\xE9s) "),a(),o(10,"ma-scope-picker",33),S("valueChange",function(n){m(e);let r=c();return w(r.scanScope,n)||(r.scanScope=n),_(n)}),a(),o(11,"button",45),u("click",function(){m(e);let n=c();return _(n.submitScan())}),s(12,"Run"),a()()}if(i&2){let e=c();l(3),v("ngModel",e.scanPath),l(2),v("ngModel",e.scanInclude),l(),v("ngModel",e.scanExclude),l(2),v("ngModel",e.scanDryRun),l(2),v("value",e.scanScope)}}function kn(i,d){i&1&&(o(0,"div",23),s(1,"Loading\u2026"),a())}function Tn(i,d){if(i&1&&oe(0,52),i&2){let e=d.$implicit;c(3);let t=re(34);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ke,e))}}function En(i,d){i&1&&(o(0,"div",53),s(1,"Nincs bejegyz\xE9s."),a())}function $n(i,d){if(i&1&&(o(0,"div",46),E(1,Tn,1,4,"ng-container",52,qe,!1,En,2,0,"div",53),a()),i&2){let e=c(2);l(),$(e.items_$())}}function Fn(i,d){if(i&1&&oe(0,52),i&2){let e=d.$implicit;c(4);let t=re(34);k("ngTemplateOutlet",t)("ngTemplateOutletContext",ae(2,Ke,e))}}function Vn(i,d){if(i&1){let e=T();o(0,"div",54)(1,"div",55)(2,"span",56),s(3),a(),o(4,"button",57),u("click",function(){let n=m(e).$implicit,r=c(3);return _(r.deleteRunGroup(n.runId))}),s(5,"Delete run"),a()(),o(6,"div",58),E(7,Fn,1,4,"ng-container",52,qe),a()()}if(i&2){let e=d.$implicit;l(3),z("run: ",e.runId," (",e.items.length," chunk)"),l(4),$(e.items)}}function In(i,d){if(i&1&&(o(0,"div",47),E(1,Vn,9,2,"div",54,xn),a()),i&2){let e=c(2);l(),$(e.groupedByRun())}}function Ln(i,d){if(i&1){let e=T();C(0,$n,4,1,"div",46)(1,In,3,0,"div",47),o(2,"div",24)(3,"span",48),s(4),a(),o(5,"div",49)(6,"button",50),u("click",function(){m(e);let n=c();return _(n.prevPage())}),s(7,"Prev"),a(),o(8,"button",51),u("click",function(){m(e);let n=c();return _(n.nextPage())}),s(9,"Next"),a()()()}if(i&2){let e=c();x(e.groupByRun?1:0),l(4),ee("\xF6sszesen: ",e.total_$()," \xB7 oldal ",e.page_$()," \xB7 oldalm\xE9ret ",e.pageSize_$(),"")}}function Pn(i,d){if(i&1&&(o(0,"span",64),s(1),a()),i&2){let e=c().$implicit;l(),V(e.kind)}}function Dn(i,d){if(i&1&&(o(0,"span",65),s(1),a()),i&2){let e=d.$implicit;l(),V(e)}}function Bn(i,d){if(i&1){let e=T();o(0,"button",68),u("click",function(){let n=m(e).$implicit,r=c(2);return _(r.openScope(n.scopeId))}),s(1),a()}if(i&2){let e=d.$implicit;l(),z("",e.layer,":",e.canonicalName,"")}}function An(i,d){if(i&1&&s(0),i&2){let e=c().$implicit;ee(" \xB7 ",e.sourceFilePath," (",e.chunkIndex,"/",e.chunkTotal,") ")}}function Rn(i,d){if(i&1){let e=T();o(0,"div",59)(1,"div",60)(2,"div",61)(3,"div",62),s(4),a(),o(5,"div",63),C(6,Pn,2,1,"span",64),E(7,Dn,2,1,"span",65,Y),E(9,Bn,2,2,"button",66,bn),a(),o(11,"div",67),s(12),j(13,"date"),C(14,An,1,3),a()(),o(15,"button",57),u("click",function(){let n=m(e).$implicit,r=c();return _(r.deleteEntry(n))}),s(16,"Delete"),a()()()}if(i&2){let e,t=d.$implicit;M("data-testid","ma-entry-"+t._id),l(4),V(t.content),l(2),x(t.kind?6:-1),l(),$(t.tags),l(2),$(t.scopePath),l(3),ee(" weight ",(e=t.weight)!==null&&e!==void 0?e:1," \xB7 ",(e=t.addedBy)!==null&&e!==void 0?e:"\u2014"," \xB7 ",t.__lastModified?O(13,8,t.__lastModified,"short"):"\u2014"," "),l(2),x(t.sourceFilePath?14:-1),l(),M("data-testid","ma-entry-delete-"+t._id)}}var Nn=50,Wn=500,He=(()=>{class i{api=F(A);route=F(ye);router=F(se);notify=F(J);popup=F(de);table_$=y(h.rules);items_$=y([]);total_$=y(0);page_$=y(1);pageSize_$=y(Nn);loading_$=y(!1);tagFilter="";kindFilter="";textFilter="";ingestRunFilter="";groupByRun=!1;stats_$=y(null);addContent="";addCode="";addKind="";addTags="";addScope=[];addFormOpen_$=y(!1);bulkText="";bulkKind="";bulkTags="";bulkScope=[];bulkOpen_$=y(!1);scanPath="";scanInclude="";scanExclude="";scanDryRun=!0;scanScope=[];scanOpen_$=y(!1);get isCodingPatterns(){return this.table_$()===h.codingPatterns}get tableLabel(){return U[this.table_$()]}get recommendedTags(){return Pe[this.table_$()]??[]}ngOnInit(){this.route.paramMap.subscribe(e=>{let t=e.get("table"),n=Object.values(h).find(r=>r===t);if(!n||n===h.reference){this.router.navigate(["/maintenance"]);return}this.table_$.set(n),this.page_$.set(1),this.reload()})}reload(){return b(this,null,function*(){this.loading_$.set(!0);let e=yield this.api.getItems(this.table_$(),{page:this.page_$(),pageSize:this.pageSize_$(),tag:this.tagFilter||void 0,kind:this.kindFilter||void 0,ingestRunId:this.ingestRunFilter||void 0});if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`),this.loading_$.set(!1);return}let t=e.data?.items??[];if(this.textFilter){let r=this.textFilter.toLowerCase();t=t.filter(p=>(p.content??"").toLowerCase().includes(r))}this.items_$.set(t),this.total_$.set(e.data?.total??t.length);let n=yield this.api.getTableStats(this.table_$());n.data&&this.stats_$.set(n.data),this.loading_$.set(!1)})}applyFilters(){this.page_$.set(1),this.reload()}nextPage(){this.page_$()*this.pageSize_$()<this.total_$()&&(this.page_$.set(this.page_$()+1),this.reload())}prevPage(){this.page_$()>1&&(this.page_$.set(this.page_$()-1),this.reload())}setPageSize(e){this.pageSize_$.set(Math.min(Math.max(e,1),Wn)),this.page_$.set(1),this.reload()}submitAdd(){return b(this,null,function*(){if(!this.addContent.trim()){this.notify.newErrorMessage("A content k\xF6telez\u0151.");return}if(!this.addScope.length){this.notify.newErrorMessage("A scope k\xF6telez\u0151 (legal\xE1bb egy layer).");return}let e=this.parseCsv(this.addTags),t={};this.isCodingPatterns&&this.addCode&&(t.code=this.addCode);let n=yield this.api.write({table:this.table_$(),operation:ce.create,scopePath:this.addScope,content:this.addContent,tags:e,kind:this.addKind||void 0,fields:Object.keys(t).length?t:void 0});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Bejegyz\xE9s l\xE9trehozva."),this.resetAddForm(),this.addFormOpen_$.set(!1),yield this.reload()})}resetAddForm(){this.addContent="",this.addCode="",this.addKind="",this.addTags="",this.addScope=[]}submitBulk(){return b(this,null,function*(){if(!this.bulkScope.length){this.notify.newErrorMessage("A bulk-paste-hez scope k\xF6telez\u0151.");return}let e=this.bulkText.split(/\n\s*\n/).map(p=>p.trim()).filter(p=>p.length);if(!e.length){this.notify.newErrorMessage("Nincs feldolgozhat\xF3 blokk (\xFCres sor v\xE1lasztja el).");return}let t=this.parseCsv(this.bulkTags),n=0,r=[];for(let p of e){let g=yield this.api.write({table:this.table_$(),operation:ce.create,scopePath:this.bulkScope,content:p,tags:t,kind:this.bulkKind||void 0});g.error?r.push(`${g.error.errorCode}: ${p.slice(0,40)}\u2026`):n++}r.length?this.notify.newErrorMessage(`${n} l\xE9trehozva, ${r.length} hiba: ${r[0]}`):(this.notify.newSuccessMessage(`${n} bejegyz\xE9s l\xE9trehozva.`),this.bulkText="",this.bulkOpen_$.set(!1)),yield this.reload()})}deleteEntry(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Soft-delete",message:"Biztosan t\xF6rl\xF6d ezt a bejegyz\xE9st? (soft-delete, vissza\xE1ll\xEDthat\xF3)",confirmBtn:"Delete"})))return;let n=yield this.api.write({table:this.table_$(),operation:ce.delete,target:{by:"id",value:e._id??""}});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("T\xF6r\xF6lve (soft-delete)."),yield this.reload()})}deleteRunGroup(e){return b(this,null,function*(){if(!(yield this.popup.newConfirm({title:"Csoportos soft-delete",message:`A(z) ${e} ingest-run minden chunkja t\xF6rl\xE9sre ker\xFCl (soft-delete). Folytatod?`,confirmBtn:"Delete run"})))return;let n=yield this.api.invokeCapability("delete_ingest_run",{ingestRunId:e});if(n.error){this.notify.newErrorMessage(`${n.error.errorCode}: ${n.error.message}`);return}this.notify.newSuccessMessage("Run t\xF6r\xF6lve (soft-delete)."),yield this.reload()})}reembedTable(){return b(this,null,function*(){let t=this.stats_$()?.count??0;if(!(yield this.popup.newConfirm({title:"Re-embed t\xE1r",message:`${t} elem \xFAjra-embeddel\xE9se \u2014 ez embedding-k\xF6lts\xE9get okozhat. Folytatod?`,confirmBtn:"Re-embed"})))return;let r=yield this.api.invokeCapability("reembed_table",{table:this.table_$()});if(r.error){this.notify.newErrorMessage(`${r.error.errorCode}: ${r.error.message}`);return}this.notify.newSuccessMessage("Re-embed elind\xEDtva."),yield this.reload()})}submitScan(){return b(this,null,function*(){if(!this.scanPath.trim()){this.notify.newErrorMessage("A scan path k\xF6telez\u0151.");return}if(!this.scanScope.length){this.notify.newErrorMessage("A scan-hez scope k\xF6telez\u0151.");return}let e=yield this.api.write({table:this.table_$(),operation:ce.scanFolder,scopePath:this.scanScope,scan:{path:this.scanPath,include:this.parseCsv(this.scanInclude),exclude:this.parseCsv(this.scanExclude),dryRun:this.scanDryRun}});if(e.error){this.notify.newErrorMessage(`${e.error.errorCode}: ${e.error.message}`);return}this.notify.newSuccessMessage(this.scanDryRun?"Dry-run scan k\xE9sz (l\xE1sd ingest id\u0151vonal).":"Scan k\xE9sz."),this.scanOpen_$.set(!1),yield this.reload()})}openScope(e){this.router.navigate(["/maintenance/scopes"],{queryParams:{focus:e}})}groupedByRun(){let e={};for(let t of this.items_$()){let n=t.ingestRunId??"(manual / no run)";(e[n]??=[]).push(t)}return Object.keys(e).map(t=>({runId:t,items:e[t]}))}parseCsv(e){return(e??"").split(",").map(t=>t.trim()).filter(t=>t.length)}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=D({type:i,selectors:[["ma-table-detail"]],standalone:!0,features:[B],decls:35,vars:13,consts:[["entryRow",""],["data-testid","ma-table-detail",1,"mx-auto","max-w-6xl","p-6"],[1,"mb-4","block"],[1,"mb-4","flex","items-center","justify-between"],[1,"text-sm","opacity-60","hover:underline",3,"routerLink"],[1,"text-2xl","font-semibold"],[1,"flex","gap-2","text-sm"],["data-testid","ma-detail-add-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-bulk-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-scan-toggle",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-reembed",1,"rounded","border","border-amber-700","px-3","py-1","text-amber-300","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-stats",1,"mb-4","grid","grid-cols-2","gap-2","rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm","sm:grid-cols-4"],["data-testid","ma-entry-add-form",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-bulk-paste",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-scan-dialog",1,"mb-4","rounded","border","border-neutral-800","bg-neutral-900","p-4"],["data-testid","ma-detail-filters",1,"mb-3","flex","flex-wrap","items-center","gap-2","text-sm"],["placeholder","tag",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","kind",1,"w-32","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","text (substring)",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],["placeholder","ingestRunId",1,"w-40","rounded","border","border-neutral-700","bg-neutral-900","px-2","py-1",3,"ngModelChange","ngModel"],[1,"flex","items-center","gap-1"],["type","checkbox","data-testid","ma-detail-groupby",3,"ngModelChange","ngModel"],["data-testid","ma-detail-apply-filters",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-loading",1,"py-10","text-center","opacity-60"],["data-testid","ma-detail-pagination",1,"mt-4","flex","items-center","justify-between","text-sm"],[1,"opacity-50"],[1,"mb-3","font-medium"],["rows","4","placeholder","content","data-testid","ma-add-content",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","3","placeholder","code (NEM ker\xFCl a vektorba)","data-testid","ma-add-code",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModel"],[1,"mb-2","flex","gap-2"],["placeholder","kind","data-testid","ma-add-kind",1,"w-40","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","tags (vessz\u0151vel)","data-testid","ma-add-tags",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","text-xs","opacity-50"],[1,"mb-3","block",3,"valueChange","value"],["data-testid","ma-add-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["rows","3","placeholder","code (NEM ker\xFCl a vektorba)","data-testid","ma-add-code",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["rows","6","placeholder","t\xF6bb blokk\u2026","data-testid","ma-bulk-text",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","k\xF6z\xF6s kind",1,"w-40","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","k\xF6z\xF6s tags (vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["data-testid","ma-bulk-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["placeholder","path (folder / project)","data-testid","ma-scan-path",1,"mb-2","w-full","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","include (glob, vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],["placeholder","exclude (glob, vessz\u0151vel)",1,"flex-1","rounded","border","border-neutral-700","bg-neutral-950","p-2","text-sm",3,"ngModelChange","ngModel"],[1,"mb-2","flex","items-center","gap-2","text-sm"],["type","checkbox","data-testid","ma-scan-dryrun",3,"ngModelChange","ngModel"],["data-testid","ma-scan-submit",1,"rounded","bg-emerald-700","px-4","py-1","text-sm","hover:bg-emerald-600",3,"click"],["data-testid","ma-detail-list",1,"flex","flex-col","gap-2"],["data-testid","ma-detail-grouped",1,"flex","flex-col","gap-4"],[1,"opacity-60"],[1,"flex","gap-2"],["data-testid","ma-detail-prev",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],["data-testid","ma-detail-next",1,"rounded","border","border-neutral-700","px-3","py-1","hover:bg-neutral-800",3,"click"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"py-6","text-center","opacity-50"],[1,"rounded","border","border-neutral-800"],[1,"flex","items-center","justify-between","border-b","border-neutral-800","bg-neutral-900","px-3","py-2","text-sm"],[1,"font-medium"],[1,"rounded","px-2","py-1","text-xs","text-red-400","hover:bg-neutral-800",3,"click"],[1,"flex","flex-col","gap-2","p-2"],[1,"rounded","border","border-neutral-800","bg-neutral-900","p-3","text-sm"],[1,"flex","items-start","justify-between","gap-3"],[1,"flex-1"],[1,"line-clamp-2","opacity-90"],[1,"mt-1","flex","flex-wrap","items-center","gap-1","text-xs","opacity-60"],[1,"rounded","bg-neutral-800","px-1.5","py-0.5"],[1,"rounded","bg-blue-900","px-1.5","py-0.5"],[1,"rounded","bg-purple-900","px-1.5","py-0.5","hover:bg-purple-800"],[1,"mt-1","text-xs","opacity-40"],[1,"rounded","bg-purple-900","px-1.5","py-0.5","hover:bg-purple-800",3,"click"]],template:function(t,n){if(t&1){let r=T();o(0,"div",1),W(1,"ma-banner-host",2),o(2,"div",3)(3,"div")(4,"a",4),s(5,"\u2190 Maintenance"),a(),o(6,"h1",5),s(7),a()(),o(8,"div",6)(9,"button",7),u("click",function(){return m(r),_(n.addFormOpen_$.set(!n.addFormOpen_$()))}),s(10,"Add entry"),a(),o(11,"button",8),u("click",function(){return m(r),_(n.bulkOpen_$.set(!n.bulkOpen_$()))}),s(12,"Bulk paste"),a(),o(13,"button",9),u("click",function(){return m(r),_(n.scanOpen_$.set(!n.scanOpen_$()))}),s(14,"Run scan"),a(),o(15,"button",10),u("click",function(){return m(r),_(n.reembedTable())}),s(16,"Re-embed"),a()()(),C(17,Cn,17,4,"div",11)(18,wn,12,6,"div",12)(19,Sn,10,4,"div",13)(20,Mn,13,5,"div",14),o(21,"div",15)(22,"input",16),S("ngModelChange",function(g){return m(r),w(n.tagFilter,g)||(n.tagFilter=g),_(g)}),a(),o(23,"input",17),S("ngModelChange",function(g){return m(r),w(n.kindFilter,g)||(n.kindFilter=g),_(g)}),a(),o(24,"input",18),S("ngModelChange",function(g){return m(r),w(n.textFilter,g)||(n.textFilter=g),_(g)}),a(),o(25,"input",19),S("ngModelChange",function(g){return m(r),w(n.ingestRunFilter,g)||(n.ingestRunFilter=g),_(g)}),a(),o(26,"label",20)(27,"input",21),S("ngModelChange",function(g){return m(r),w(n.groupByRun,g)||(n.groupByRun=g),_(g)}),a(),s(28," group by run"),a(),o(29,"button",22),u("click",function(){return m(r),_(n.applyFilters())}),s(30,"Apply"),a()(),C(31,kn,2,0,"div",23)(32,Ln,10,4,"div",24),a(),C(33,Rn,17,11,"ng-template",null,0,be)}if(t&2){let r;l(4),k("routerLink",I(12,hn)),l(3),V(n.tableLabel),l(10),x((r=n.stats_$())?17:-1,r),l(),x(n.addFormOpen_$()?18:-1),l(),x(n.bulkOpen_$()?19:-1),l(),x(n.scanOpen_$()?20:-1),l(2),v("ngModel",n.tagFilter),l(),v("ngModel",n.kindFilter),l(),v("ngModel",n.textFilter),l(),v("ngModel",n.ingestRunFilter),l(2),v("ngModel",n.groupByRun),l(4),x(n.loading_$()?31:32)}},dependencies:[L,he,le,X,Z,ve,K,H,P,q,G,Oe],encapsulation:2})}return i})();var pe=function(i){return i.maintenance="maintenance",i.search="search",i.scopes="scopes",i.ingest="ingest",i.settings="settings",i.errors="errors",i}(pe||{});var zn=[{path:"",component:Re},{path:pe.search,component:ze},{path:pe.scopes,component:We},{path:pe.ingest,component:Be},{path:pe.settings,component:je},{path:":table",component:He}];var Xe=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=fe({type:i});static \u0275inj=ge({imports:[P.forChild(zn),P]})}return i})();var Fa=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=fe({type:i});static \u0275inj=ge({imports:[L,Xe]})}return i})();export{Fa as Maintenance_Module};
|