let omsKnowledgePromise = null;
function loadOmsKnowledge(){
  if(!omsKnowledgePromise) omsKnowledgePromise=fetch('/ui_kits/oms/agentic-knowledge.seed.json').then(r=>{if(!r.ok)throw new Error('Knowledge base tidak tersedia');return r.json();});
  return omsKnowledgePromise;
}
function kbTerms(value){return String(value||'').toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g,'').replace(/[^a-z0-9]+/g,' ').split(' ').filter(x=>x.length>2);}
function kbScore(item,terms){const hay=kbTerms(JSON.stringify(item));return terms.reduce((n,t)=>n+(hay.includes(t)?1:0),0);}
async function retrieveOmsKnowledge(query,limit=6){
  const kb=await loadOmsKnowledge(),terms=kbTerms(query),hits=[];
  [['application',kb.applications],['tool',kb.tools],['dataset',kb.datasets],['role',kb.roles],['policy',kb.policies],['playbook',kb.playbooks]].forEach(([type,rows])=>(rows||[]).forEach(item=>{const score=kbScore(item,terms);if(score)hits.push({type,score,item});}));
  return hits.sort((a,b)=>b.score-a.score).slice(0,limit);
}
async function planOmsAgent(query){
  const kb=await loadOmsKnowledge(),terms=kbTerms(query);let best=null,score=0;
  (kb.playbooks||[]).forEach(p=>{const s=kbScore(p.intents,terms);if(s>score){score=s;best=p;}});
  const hits=await retrieveOmsKnowledge(query,5);
  return {playbook:best,hits,meta:kb.meta,counts:{applications:kb.applications.length,tools:kb.tools.length,datasets:kb.datasets.length,playbooks:kb.playbooks.length}};
}
function kbNodeLabel(hit){return hit.item.name||hit.item.id;}
Object.assign(window,{loadOmsKnowledge,retrieveOmsKnowledge,planOmsAgent,kbNodeLabel});
