@anmol-srv/sigil 0.10.3 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,63 +1,64 @@
1
1
  #!/usr/bin/env node
2
- var Yu=Object.defineProperty;var c=(t,e)=>()=>(t&&(e=t(t=0)),e);var A=(t,e)=>{for(var r in e)Yu(t,r,{get:e[r],enumerable:!0})};import{fileURLToPath as Ju}from"node:url";import{dirname as Yo,join as v}from"node:path";import{existsSync as Jo}from"node:fs";import{homedir as qu}from"node:os";function Vu(){let t=Yo(Ju(import.meta.url));for(let e=0;e<10;e++){if(Jo(v(t,"package.json"))&&Jo(v(t,"prompts")))return t;let r=Yo(t);if(r===t)break;t=r}return process.cwd()}var qo,q,Lx,Vo,z,Se,Nx,Xo,Xu,zo,Zo,Qo,tn,Rx,en,Dx,Mx,B=c(()=>{qo=Vu(),q=v(qo,"prompts"),Lx=v(qo,"src","db","migrations"),Vo=qu(),z=v(Vo,".sigil"),Se=v(z,".env"),Nx=v(z,"db"),Xo=v(z,"CLAUDE.md"),Xu=v(z,"schemas"),zo=v(z,".hook-errors.log"),Zo=v(z,".last-clean-doctor"),Qo=v(z,".active-session.json"),tn=v(z,".stop-cursor.json"),Rx=v(z,".hook-dedup.json"),en=v(Vo,".claude"),Dx=v(en,"settings.json"),Mx=v(en,"CLAUDE.md")});var Or={};A(Or,{default:()=>p});var C,an,Zu,p,_=c(()=>{C=(t,e)=>process.env[t]??e,an=C("SIGIL_DB_TYPE","postgres");if(an!=="postgres")throw new Error(`SIGIL_DB_TYPE=${an} is no longer supported. Sigil 0.10.0+ is Postgres-only.
2
+ import { createRequire as __sigilCreateRequire } from 'node:module'; const require = __sigilCreateRequire(import.meta.url);
3
+ var xl=Object.defineProperty;var c=(t,e)=>()=>(t&&(e=t(t=0)),e);var A=(t,e)=>{for(var r in e)xl(t,r,{get:e[r],enumerable:!0})};import{fileURLToPath as El}from"node:url";import{dirname as sn,join as E}from"node:path";import{existsSync as cn}from"node:fs";import{homedir as bl}from"node:os";function Sl(){let t=sn(El(import.meta.url));for(let e=0;e<10;e++){if(cn(E(t,"package.json"))&&cn(E(t,"prompts")))return t;let r=sn(t);if(r===t)break;t=r}return process.cwd()}var Ce,z,bx,un,R,Re,Sx,Nr,Al,fn,ln,pn,dn,Ax,Tx,Ix,Ox,vx,Cx,Rx,Lx,Nx,Dx,Px,mn,Mx,kx,$=c(()=>{Ce=Sl(),z=E(Ce,"prompts"),bx=E(Ce,"src","db","migrations"),un=bl(),R=E(un,".sigil"),Re=E(R,".env"),Sx=E(R,"db"),Nr=E(R,"CLAUDE.md"),Al=E(R,"schemas"),fn=E(R,".hook-errors.log"),ln=E(R,".last-clean-doctor"),pn=E(R,".active-session.json"),dn=E(R,".stop-cursor.json"),Ax=E(R,".hook-dedup.json"),Tx=E(R,"sock"),Ix=E(R,"sigild.pid"),Ox=E(R,"sigild.log"),vx=E(R,"heartbeat.json"),Cx=E(R,"onboarding-state.json"),Rx=E(R,"gui.token"),Lx=E(Ce,"dist","gui"),Nx=E(Ce,"src","gui","web"),Dx=E(R,"iroh"),Px=E(R,"identity.key"),mn=E(un,".claude"),Mx=E(mn,"settings.json"),kx=E(mn,"CLAUDE.md")});function St(t){if(!t||typeof t!="string")return t;let e=t;for(let r of Il)e=e.replace(r,te);return e=e.replace(Ol,(r,o)=>`${o}=${te}`),e=e.replace(vl,(r,o)=>`${o}${te}:${te}@`),e=e.replace(Rl,(r,o)=>`${o}=${te}`),e}var te,Il,Ol,vl,Cl,Rl,Le=c(()=>{te="***MASKED***",Il=[/\b(sk-(?:proj-|ant-)?[A-Za-z0-9_\-]{20,})\b/g,/\b(ghp_[A-Za-z0-9]{36,})\b/g,/\b(github_pat_[A-Za-z0-9_]{20,})\b/g,/\b(gho_[A-Za-z0-9]{36,})\b/g,/\b(glpat-[A-Za-z0-9_\-]{20,})\b/g,/\b(xox[baprs]-[A-Za-z0-9\-]{10,})\b/g,/\b(whsec_[A-Za-z0-9]{20,})\b/g,/\b(rk_(?:live|test)_[A-Za-z0-9]{20,})\b/g,/\b(AKIA[A-Z0-9]{16})\b/g,/\b(ASIA[A-Z0-9]{16})\b/g,/\b(eyJ[A-Za-z0-9_\-]{20,}\.[A-Za-z0-9_\-]{10,}\.[A-Za-z0-9_\-]{10,})\b/g,/\b([A-Za-z0-9]{24}\.[A-Za-z0-9_\-]{6}\.[A-Za-z0-9_\-]{27})\b/g,/\b(\d{8,12}:[A-Za-z0-9_\-]{35})\b/g],Ol=new RegExp(`\\b(api[_-]?key|api[_-]?secret|secret[_-]?key|secret|token|password|passwd|pwd|auth[_-]?token|access[_-]?token|refresh[_-]?token|bearer|private[_-]?key|client[_-]?secret)\\s*[=:]\\s*["']?([^\\s"']{8,})["']?`,"gi"),vl=/(\w+:\/\/)([^:/\s]+):([^@\s]{3,})@/g,Cl=["DATABASE_URL","REDIS_URL","MONGODB_URI","MONGO_URI","POSTGRES_URL","DSN","CONNECTION_STRING","ENCRYPTION_KEY","JWT_SECRET","SIGIL_ENCRYPTION_KEY","SESSION_SECRET","WEBHOOK_SECRET"],Rl=new RegExp(`\\b(${Cl.join("|")})\\s*[=:]\\s*["']?([^\\s"']+)["']?`,"gi")});var Dr={};A(Dr,{default:()=>p});var b,wn,Ll,p,x=c(()=>{b=(t,e)=>process.env[t]??e,wn=b("SIGIL_DB_TYPE","postgres");if(wn!=="postgres")throw new Error(`SIGIL_DB_TYPE=${wn} is no longer supported. Sigil 0.10.0+ is Postgres-only.
3
4
  PGlite was deprecated; existing PGlite data at ~/.sigil/db is preserved but unreachable from this version.
4
5
  Set SIGIL_DB_TYPE=postgres in ~/.sigil/.env and configure SIGIL_DB_HOST / PORT / NAME / USER / PASSWORD.
5
- Run \`sigil init\` for an interactive setup.`);Zu={db:{type:"postgres",host:C("SIGIL_DB_HOST","localhost"),port:Number(C("SIGIL_DB_PORT",5432)),database:C("SIGIL_DB_NAME","sigil"),user:C("SIGIL_DB_USER","sigil_app"),password:C("SIGIL_DB_PASSWORD","")},embedding:{provider:process.env.EMBEDDING_PROVIDER||"",model:process.env.EMBEDDING_MODEL||"nomic-embed-text",dimensions:Number(process.env.EMBEDDING_DIMENSIONS)||768,ollamaHost:process.env.OLLAMA_HOST||"http://localhost:11434",openaiApiKey:process.env.OPENAI_API_KEY||"",voyageApiKey:process.env.VOYAGE_API_KEY||"",openrouterApiKey:process.env.OPENROUTER_API_KEY||"",openrouterBaseUrl:process.env.EMBEDDING_OPENROUTER_BASE_URL||process.env.LLM_OPENROUTER_BASE_URL||"",openrouterReferer:process.env.EMBEDDING_OPENROUTER_REFERER||process.env.LLM_OPENROUTER_REFERER||"https://github.com/Anmol-Srv/sigil",openrouterTitle:process.env.EMBEDDING_OPENROUTER_TITLE||process.env.LLM_OPENROUTER_TITLE||"Sigil"},llm:{provider:process.env.LLM_PROVIDER||"",openaiApiKey:process.env.OPENAI_API_KEY||"",openaiModel:process.env.LLM_OPENAI_MODEL||"gpt-4o-mini",ollamaHost:process.env.LLM_OLLAMA_HOST||process.env.OLLAMA_HOST||"http://localhost:11434",ollamaModel:process.env.LLM_OLLAMA_MODEL||"qwen2.5:7b",cliModel:process.env.LLM_CLI_MODEL||"haiku",apiKey:process.env.ANTHROPIC_API_KEY||"",openrouterApiKey:process.env.OPENROUTER_API_KEY||"",openrouterModel:process.env.LLM_OPENROUTER_MODEL||"google/gemini-flash-latest",openrouterBaseUrl:process.env.LLM_OPENROUTER_BASE_URL||"",openrouterReferer:process.env.LLM_OPENROUTER_REFERER||"https://github.com/Anmol-Srv/sigil",openrouterTitle:process.env.LLM_OPENROUTER_TITLE||"Sigil",extractionModel:process.env.LLM_EXTRACTION_MODEL||"",decisionModel:process.env.LLM_DECISION_MODEL||"",entityModel:process.env.LLM_ENTITY_MODEL||"",maxRetries:Number(process.env.LLM_MAX_RETRIES)||3,cliTimeout:Number(process.env.LLM_CLI_TIMEOUT)||12e4},output:{storage:process.env.OUTPUT_STORAGE||"local",dir:process.env.OUTPUT_DIR||"./output",s3:{endpoint:process.env.S3_ENDPOINT||"",bucket:process.env.S3_BUCKET||"",region:process.env.S3_REGION||"us-east-1",accessKey:process.env.S3_ACCESS_KEY||"",secretKey:process.env.S3_SECRET_KEY||"",publicUrl:process.env.S3_PUBLIC_URL||""}},server:{port:Number(process.env.PORT)||4e3,host:process.env.HOST||"0.0.0.0",logLevel:process.env.LOG_LEVEL||"info"},defaults:{namespace:process.env.DEFAULT_NAMESPACE||"default"},memory:{skipThreshold:Number(process.env.MEMORY_SKIP_THRESHOLD)||.88,ambiguousThreshold:Number(process.env.MEMORY_AMBIGUOUS_THRESHOLD)||.78,minFactSimilarity:Number(process.env.MEMORY_MIN_FACT_SIMILARITY)||.45},search:{synthesize:C("SIGIL_SYNTHESIZE","true")!=="false",synthesizeModel:C("SIGIL_SYNTH_MODEL","")},ingest:{eagerExtract:C("SIGIL_EAGER_EXTRACT","true")!=="false"},hebbian:{entity:{enabled:C("SIGIL_HEBBIAN_ENTITY_ENABLED",null,"true")!=="false",eta:Number(C("SIGIL_HEBBIAN_ENTITY_ETA",null,1)),cap:Number(C("SIGIL_HEBBIAN_ENTITY_CAP",null,50)),halfLifeDays:Number(C("SIGIL_HEBBIAN_ENTITY_HALF_LIFE_DAYS",null,30)),minEffective:Number(C("SIGIL_HEBBIAN_ENTITY_MIN_EFFECTIVE",null,.5)),rrfWeight:Number(C("SIGIL_HEBBIAN_ENTITY_RRF_WEIGHT",null,.3)),maxWriteEntities:Number(C("SIGIL_HEBBIAN_ENTITY_MAX_WRITE",null,12)),expandPerSeed:Number(C("SIGIL_HEBBIAN_ENTITY_EXPAND_PER_SEED",null,3))}}},p=Zu});var vr={};A(vr,{default:()=>m});import Qu from"knex";function el(t){return Array.isArray(t)?t.map(Ir):t&&typeof t=="object"?Ir(t):t}function rl(t,e){return e(ol(t))}function Ir(t){if(!t||typeof t!="object"||t instanceof Date)return t;if(Array.isArray(t))return t.map(Ir);let e={};for(let[r,o]of Object.entries(t))e[r.replace(/_([a-z])/g,(n,a)=>a.toUpperCase())]=o;return e}function ol(t){return t.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`)}var tl,m,S=c(()=>{_();tl=Qu({client:"pg",connection:{host:p.db.host,port:p.db.port,database:p.db.database,user:p.db.user,password:p.db.password},pool:{min:2,max:10},postProcessResponse:el,wrapIdentifier:rl});m=tl});var ln={};A(ln,{validateConfig:()=>un,validateConfigDeep:()=>nl});function un(){let t=[];return al(t),il(t),sl(t),t}async function nl(){let t=un();if(p.db.type==="postgres"&&!t.some(e=>e.code.startsWith("DB_")))try{await(await Promise.resolve().then(()=>(S(),vr))).default.raw("SELECT 1")}catch(e){t.push({level:"fail",code:"DB_UNREACHABLE",message:`Postgres at ${p.db.host}:${p.db.port}/${p.db.database} unreachable: ${e.message.split(`
6
- `)[0]}`,fix:"Start Postgres (e.g. `docker start sigil-pg` or your equivalent) and verify SIGIL_DB_HOST/PORT/NAME/USER/PASSWORD in ~/.sigil/.env"})}return t}function al(t){let{provider:e,model:r}=p.embedding;if(e&&r){let o=Object.keys(sn).find(n=>sn[n].some(a=>a.test(r)));o&&o!==e&&t.push({level:"fail",code:"EMBEDDING_PROVIDER_MODEL_MISMATCH",message:`EMBEDDING_PROVIDER=${e} but EMBEDDING_MODEL=${r} is a ${o} model.`,fix:cl(e,r,o)})}if(e&&fn[e]){let o=fn[e];p.embedding[o]||t.push({level:"fail",code:"EMBEDDING_PROVIDER_MISSING_KEY",message:`EMBEDDING_PROVIDER=${e} but no ${Te(o)} found.`,fix:`Set ${Te(o)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}}function il(t){let{provider:e}=p.llm;if(e&&cn[e]){let r=cn[e];p.llm[r]||t.push({level:"fail",code:"LLM_PROVIDER_MISSING_KEY",message:`LLM_PROVIDER=${e} but no ${Te(r)} found.`,fix:`Set ${Te(r)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}e==="openrouter"&&p.llm.openrouterModel&&(p.llm.openrouterModel.includes("/")||t.push({level:"warn",code:"OPENROUTER_MODEL_FORMAT",message:`LLM_OPENROUTER_MODEL=${p.llm.openrouterModel} doesn't look like vendor/model format.`,fix:'Use format like "anthropic/claude-haiku-4-5" or "google/gemini-2.5-flash".'}))}function sl(t){p.db.type==="postgres"&&(!p.db.host||!p.db.database||!p.db.user)&&t.push({level:"fail",code:"DB_CONFIG_INCOMPLETE",message:"SIGIL_DB_TYPE=postgres but host/database/user missing.",fix:"Set SIGIL_DB_HOST, SIGIL_DB_NAME, SIGIL_DB_USER, SIGIL_DB_PASSWORD in ~/.sigil/.env. Run `sigil init` for an interactive setup."})}function Te(t){return{openaiApiKey:"OPENAI_API_KEY",apiKey:"ANTHROPIC_API_KEY",openrouterApiKey:"OPENROUTER_API_KEY",voyageApiKey:"VOYAGE_API_KEY"}[t]||t}function cl(t,e,r){let o={voyage:"voyage-3.5, voyage-3-large, voyage-code-3.5",openai:"text-embedding-3-large, text-embedding-3-small",ollama:"nomic-embed-text, mxbai-embed-large"}[t]||"(see provider docs)";return`Either set EMBEDDING_PROVIDER=${r} (matches your current model), or change EMBEDDING_MODEL to one of: ${o}`}var sn,cn,fn,pn=c(()=>{_();sn={voyage:[/^voyage-/],openai:[/^text-embedding-/],ollama:[/^nomic-embed/,/^mxbai-embed/,/^all-minilm/,/^bge-/,/^snowflake-/,/^granite-embedding/]},cn={openai:"openaiApiKey",anthropic:"apiKey",openrouter:"openrouterApiKey"},fn={openai:"openaiApiKey",voyage:"voyageApiKey",openrouter:"openrouterApiKey"}});var Pr={};A(Pr,{HOOK_ERROR_LOG:()=>Oe,LAST_CLEAN_DOCTOR_PATH:()=>Ie,clearLastCleanDoctor:()=>gl,failClosedOnBadConfig:()=>dl,getUnackedErrorCount:()=>hl,markDoctorClean:()=>yl,readRecentHookErrors:()=>ml,recordHookError:()=>dn});import{appendFile as fl,readFile as Cr,writeFile as ul,unlink as ll}from"node:fs/promises";import{createHash as pl}from"node:crypto";async function dn(t,e,r=null){try{let o={ts:new Date().toISOString(),hook:t,error:e?.message||String(e),input_hash:r?wl(r):null};await fl(Oe,JSON.stringify(o)+`
7
- `,"utf8")}catch{}}async function dl(t,e=null){try{let{validateConfig:r}=await Promise.resolve().then(()=>(pn(),ln)),o=r().filter(n=>n.level==="fail");if(o.length===0)return!1;for(let n of o){let a=new Error(`${n.code}: ${n.message} \u2014 fix: ${n.fix}`);await dn(t,a,e)}return!0}catch{return!1}}async function ml(t=10){let e;try{e=await Cr(Oe,"utf8")}catch{return[]}let r=e.split(`
8
- `).filter(Boolean),o=[];for(let n of r.slice(-t))try{o.push(JSON.parse(n))}catch{}return o}async function hl(){let t=0;try{let o=await Cr(Ie,"utf8");t=new Date(o.trim()).getTime()}catch{}let e;try{e=await Cr(Oe,"utf8")}catch{return 0}let r=0;for(let o of e.split(`
9
- `))if(o.trim())try{let n=JSON.parse(o);(n.ts?new Date(n.ts).getTime():0)>t&&(r+=1)}catch{}return r}async function yl(){try{await ul(Ie,new Date().toISOString(),"utf8")}catch{}}async function gl(){try{await ll(Ie)}catch{}}function wl(t){try{let e=typeof t=="string"?t:JSON.stringify(t);return pl("sha256").update(e).digest("hex").slice(0,12)}catch{return null}}var Oe,Ie,Lr=c(()=>{B();Oe=zo,Ie=Zo});var mn,hn=c(()=>{mn="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"});import{webcrypto as yn}from"node:crypto";function _l(t){!mt||mt.length<t?(mt=Buffer.allocUnsafe(t*xl),yn.getRandomValues(mt),bt=0):bt+t>mt.length&&(yn.getRandomValues(mt),bt=0),bt+=t}function rt(t=21){_l(t|=0);let e="";for(let r=bt-t;r<bt;r++)e+=mn[mt[r]&63];return e}var xl,mt,bt,Zt=c(()=>{hn();xl=128});async function Qt({podType:t,externalId:e,name:r,namespace:o,attrs:n={},entityId:a=null,connectionId:i=null,startedAt:s=null}){if(!e)throw new Error("upsertPod requires externalId; use insertPod for custom pods");let f=`pod-${rt(16)}`,u=o||p.defaults.namespace,{rows:[l]}=await m.raw(`
6
+ Run \`sigil init\` for an interactive setup.`);Ll={db:{type:"postgres",get url(){return b("SIGIL_DATABASE_URL",b("DATABASE_URL",""))||null},get host(){return b("SIGIL_DB_HOST","localhost")},get port(){return Number(b("SIGIL_DB_PORT",5432))},get database(){return b("SIGIL_DB_NAME","sigil")},get user(){return b("SIGIL_DB_USER","sigil_app")},get password(){return b("SIGIL_DB_PASSWORD","")}},embedding:{get provider(){return process.env.EMBEDDING_PROVIDER||""},get model(){return process.env.EMBEDDING_MODEL||"nomic-embed-text"},get dimensions(){return Number(process.env.EMBEDDING_DIMENSIONS)||768},get ollamaHost(){return process.env.OLLAMA_HOST||"http://localhost:11434"},get openaiApiKey(){return process.env.OPENAI_API_KEY||""},get voyageApiKey(){return process.env.VOYAGE_API_KEY||""},openrouterApiKey:process.env.OPENROUTER_API_KEY||"",openrouterBaseUrl:process.env.EMBEDDING_OPENROUTER_BASE_URL||process.env.LLM_OPENROUTER_BASE_URL||"",openrouterReferer:process.env.EMBEDDING_OPENROUTER_REFERER||process.env.LLM_OPENROUTER_REFERER||"https://github.com/Anmol-Srv/sigil",openrouterTitle:process.env.EMBEDDING_OPENROUTER_TITLE||process.env.LLM_OPENROUTER_TITLE||"Sigil"},llm:{get provider(){return process.env.LLM_PROVIDER||""},get openaiApiKey(){return process.env.OPENAI_API_KEY||""},get openaiModel(){return process.env.LLM_OPENAI_MODEL||"gpt-4o-mini"},get ollamaHost(){return process.env.LLM_OLLAMA_HOST||process.env.OLLAMA_HOST||"http://localhost:11434"},get ollamaModel(){return process.env.LLM_OLLAMA_MODEL||"qwen2.5:7b"},get cliModel(){return process.env.LLM_CLI_MODEL||"haiku"},get apiKey(){return process.env.ANTHROPIC_API_KEY||""},get openrouterApiKey(){return process.env.OPENROUTER_API_KEY||""},get openrouterModel(){return process.env.LLM_OPENROUTER_MODEL||"google/gemini-flash-latest"},get openrouterBaseUrl(){return process.env.LLM_OPENROUTER_BASE_URL||""},get openrouterReferer(){return process.env.LLM_OPENROUTER_REFERER||"https://github.com/Anmol-Srv/sigil"},get openrouterTitle(){return process.env.LLM_OPENROUTER_TITLE||"Sigil"},get extractionModel(){return process.env.LLM_EXTRACTION_MODEL||""},get decisionModel(){return process.env.LLM_DECISION_MODEL||""},get entityModel(){return process.env.LLM_ENTITY_MODEL||""},get maxRetries(){return Number(process.env.LLM_MAX_RETRIES)||3},get cliTimeout(){return Number(process.env.LLM_CLI_TIMEOUT)||12e4}},output:{storage:process.env.OUTPUT_STORAGE||"local",dir:process.env.OUTPUT_DIR||"./output",s3:{endpoint:process.env.S3_ENDPOINT||"",bucket:process.env.S3_BUCKET||"",region:process.env.S3_REGION||"us-east-1",accessKey:process.env.S3_ACCESS_KEY||"",secretKey:process.env.S3_SECRET_KEY||"",publicUrl:process.env.S3_PUBLIC_URL||""}},server:{port:Number(process.env.PORT)||4e3,host:process.env.HOST||"0.0.0.0",logLevel:process.env.LOG_LEVEL||"info"},http:{enabled:b("SIGIL_HTTP_ENABLED","true")!=="false",host:b("SIGIL_HTTP_HOST","127.0.0.1"),port:Number(b("SIGIL_HTTP_PORT",7777))},network:{mode:b("SIGIL_MODE","solo"),enabled:b("SIGIL_NETWORK_ENABLED",null)===null?b("SIGIL_MODE","solo")!=="solo":b("SIGIL_NETWORK_ENABLED","false")!=="false",masterNodeId:b("SIGIL_MASTER_NODE_ID","")||null},defaults:{namespace:process.env.DEFAULT_NAMESPACE||"default"},memory:{skipThreshold:Number(process.env.MEMORY_SKIP_THRESHOLD)||.88,ambiguousThreshold:Number(process.env.MEMORY_AMBIGUOUS_THRESHOLD)||.78,minFactSimilarity:Number(process.env.MEMORY_MIN_FACT_SIMILARITY)||.45,injectionFloor:Number(process.env.MEMORY_INJECTION_FLOOR)||.6},search:{synthesize:b("SIGIL_SYNTHESIZE","true")!=="false",synthesizeModel:b("SIGIL_SYNTH_MODEL","")},ingest:{eagerExtract:b("SIGIL_EAGER_EXTRACT","true")!=="false"},hebbian:{entity:{enabled:b("SIGIL_HEBBIAN_ENTITY_ENABLED",null,"true")!=="false",eta:Number(b("SIGIL_HEBBIAN_ENTITY_ETA",null,1)),cap:Number(b("SIGIL_HEBBIAN_ENTITY_CAP",null,50)),halfLifeDays:Number(b("SIGIL_HEBBIAN_ENTITY_HALF_LIFE_DAYS",null,30)),minEffective:Number(b("SIGIL_HEBBIAN_ENTITY_MIN_EFFECTIVE",null,.5)),rrfWeight:Number(b("SIGIL_HEBBIAN_ENTITY_RRF_WEIGHT",null,.3)),maxWriteEntities:Number(b("SIGIL_HEBBIAN_ENTITY_MAX_WRITE",null,12)),expandPerSeed:Number(b("SIGIL_HEBBIAN_ENTITY_EXPAND_PER_SEED",null,3))}}},p=Ll});function _n(t){return{host:t.db.host,port:t.db.port,database:t.db.database,user:t.db.user,password:t.db.password}}var xn=c(()=>{});function bn(t){if(!t)throw new Error("url driver: SIGIL_DATABASE_URL is empty");let e;try{e=new URL(t)}catch(a){throw new Error(`url driver: invalid URL \u2014 ${a.message}`)}if(!/^postgres(ql)?:$/i.test(e.protocol))throw new Error(`url driver: expected postgres:// or postgresql:// scheme, got ${e.protocol}`);let r=e.searchParams.get("sslmode"),o=Dl(e.hostname,r),n={host:e.hostname,port:e.port?Number(e.port):5432,database:e.pathname.replace(/^\//,"")||"postgres",user:decodeURIComponent(e.username),password:decodeURIComponent(e.password)};return o!==void 0&&(n.ssl=o),e.searchParams.get("application_name")||(n.application_name="sigil"),n}function Dl(t,e){if(e==="disable")return!1;if(e==="require"||e==="verify-full"||e==="verify-ca")return{rejectUnauthorized:!0};if(e==="no-verify"||e==="prefer")return{rejectUnauthorized:!1};if(!En.some(r=>r.test(t)))return Nl.some(r=>r.test(t))?{rejectUnauthorized:!0}:{rejectUnauthorized:!1}}function Sn(t){try{let e=new URL(t).hostname;return/\.neon\.tech$/i.test(e)?"neon":/\.pooler\.supabase\.com$/i.test(e)?"supabase-pooler":/\.supabase\.co$/i.test(e)||/\.supabase\.com$/i.test(e)?"supabase":/\.rds\.amazonaws\.com$/i.test(e)?"aws-rds":/\.render\.com$/i.test(e)?"render":/\.railway\.app$/i.test(e)?"railway":/\.cockroachlabs\.cloud$/i.test(e)?"cockroachdb":En.some(r=>r.test(e))?"local":"unknown"}catch{return"unknown"}}var Nl,En,An=c(()=>{Nl=[/\.neon\.tech$/i,/\.supabase\.co$/i,/\.supabase\.com$/i,/\.pooler\.supabase\.com$/i,/\.rds\.amazonaws\.com$/i,/\.render\.com$/i,/\.railway\.app$/i,/\.cockroachlabs\.cloud$/i],En=[/^localhost$/i,/^127\.0\.0\.1$/,/^::1$/,/\.local$/i]});function Tn(t){let e=t.db.url;return e?{kind:"url",provider:Sn(e),connection:bn(e)}:{kind:"local",provider:"local",connection:_n(t)}}var In=c(()=>{xn();An()});var Mr={};A(Mr,{default:()=>m});import Pl from"knex";function Ml(t){return Array.isArray(t)?t.map(Pr):t&&typeof t=="object"?Pr(t):t}function kl(t,e){return e(Bl(t))}function Pr(t){if(!t||typeof t!="object"||t instanceof Date)return t;if(Array.isArray(t))return t.map(Pr);let e={};for(let[r,o]of Object.entries(t))e[r.replace(/_([a-z])/g,(n,a)=>a.toUpperCase())]=o;return e}function Bl(t){return t.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`)}var On,vn,m,I=c(()=>{x();In();On=Tn(p),vn=Pl({client:"pg",connection:On.connection,pool:{min:2,max:10},postProcessResponse:Ml,wrapIdentifier:kl});vn.__sigilDriver=On;m=vn});var Dn={};A(Dn,{validateConfig:()=>Nn,validateConfigDeep:()=>$l});function Nn(){let t=[];return Fl(t),Ul(t),jl(t),t}async function $l(){let t=Nn();if(p.db.type==="postgres"&&!t.some(e=>e.code.startsWith("DB_")))try{await(await Promise.resolve().then(()=>(I(),Mr))).default.raw("SELECT 1")}catch(e){t.push({level:"fail",code:"DB_UNREACHABLE",message:`Postgres at ${p.db.host}:${p.db.port}/${p.db.database} unreachable: ${e.message.split(`
7
+ `)[0]}`,fix:"Start Postgres (e.g. `docker start sigil-pg` or your equivalent) and verify SIGIL_DB_HOST/PORT/NAME/USER/PASSWORD in ~/.sigil/.env"})}return t}function Fl(t){let{provider:e,model:r}=p.embedding;if(e&&r){let o=Object.keys(Cn).find(n=>Cn[n].some(a=>a.test(r)));o&&o!==e&&t.push({level:"fail",code:"EMBEDDING_PROVIDER_MODEL_MISMATCH",message:`EMBEDDING_PROVIDER=${e} but EMBEDDING_MODEL=${r} is a ${o} model.`,fix:Hl(e,r,o)})}if(e&&Ln[e]){let o=Ln[e];p.embedding[o]||t.push({level:"fail",code:"EMBEDDING_PROVIDER_MISSING_KEY",message:`EMBEDDING_PROVIDER=${e} but no ${Ne(o)} found.`,fix:`Set ${Ne(o)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}}function Ul(t){let{provider:e}=p.llm;if(e&&Rn[e]){let r=Rn[e];p.llm[r]||t.push({level:"fail",code:"LLM_PROVIDER_MISSING_KEY",message:`LLM_PROVIDER=${e} but no ${Ne(r)} found.`,fix:`Set ${Ne(r)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}e==="openrouter"&&p.llm.openrouterModel&&(p.llm.openrouterModel.includes("/")||t.push({level:"warn",code:"OPENROUTER_MODEL_FORMAT",message:`LLM_OPENROUTER_MODEL=${p.llm.openrouterModel} doesn't look like vendor/model format.`,fix:'Use format like "anthropic/claude-haiku-4-5" or "google/gemini-2.5-flash".'}))}function jl(t){p.db.type==="postgres"&&(!p.db.host||!p.db.database||!p.db.user)&&t.push({level:"fail",code:"DB_CONFIG_INCOMPLETE",message:"SIGIL_DB_TYPE=postgres but host/database/user missing.",fix:"Set SIGIL_DB_HOST, SIGIL_DB_NAME, SIGIL_DB_USER, SIGIL_DB_PASSWORD in ~/.sigil/.env. Run `sigil init` for an interactive setup."})}function Ne(t){return{openaiApiKey:"OPENAI_API_KEY",apiKey:"ANTHROPIC_API_KEY",openrouterApiKey:"OPENROUTER_API_KEY",voyageApiKey:"VOYAGE_API_KEY"}[t]||t}function Hl(t,e,r){let o={voyage:"voyage-3.5, voyage-3-large, voyage-code-3.5",openai:"text-embedding-3-large, text-embedding-3-small",ollama:"nomic-embed-text, mxbai-embed-large"}[t]||"(see provider docs)";return`Either set EMBEDDING_PROVIDER=${r} (matches your current model), or change EMBEDDING_MODEL to one of: ${o}`}var Cn,Rn,Ln,Pn=c(()=>{x();Cn={voyage:[/^voyage-/],openai:[/^text-embedding-/],ollama:[/^nomic-embed/,/^mxbai-embed/,/^all-minilm/,/^bge-/,/^snowflake-/,/^granite-embedding/]},Rn={openai:"openaiApiKey",anthropic:"apiKey",openrouter:"openrouterApiKey"},Ln={openai:"openaiApiKey",voyage:"voyageApiKey",openrouter:"openrouterApiKey"}});var Br={};A(Br,{HOOK_ERROR_LOG:()=>De,LAST_CLEAN_DOCTOR_PATH:()=>Pe,clearLastCleanDoctor:()=>Xl,failClosedOnBadConfig:()=>Jl,getUnackedErrorCount:()=>Vl,markDoctorClean:()=>zl,readRecentHookErrors:()=>ql,recordHookError:()=>Mn});import{appendFile as Gl,readFile as kr,writeFile as Kl,unlink as Wl}from"node:fs/promises";import{createHash as Yl}from"node:crypto";async function Mn(t,e,r=null){try{let o={ts:new Date().toISOString(),hook:t,error:St(e?.message||String(e)),input_hash:r?Zl(r):null};await Gl(De,JSON.stringify(o)+`
8
+ `,"utf8")}catch{}}async function Jl(t,e=null){try{let{validateConfig:r}=await Promise.resolve().then(()=>(Pn(),Dn)),o=r().filter(n=>n.level==="fail");if(o.length===0)return!1;for(let n of o){let a=new Error(`${n.code}: ${n.message} \u2014 fix: ${n.fix}`);await Mn(t,a,e)}return!0}catch{return!1}}async function ql(t=10){let e;try{e=await kr(De,"utf8")}catch{return[]}let r=e.split(`
9
+ `).filter(Boolean),o=[];for(let n of r.slice(-t))try{o.push(JSON.parse(n))}catch{}return o}async function Vl(){let t=0;try{let o=await kr(Pe,"utf8");t=new Date(o.trim()).getTime()}catch{}let e;try{e=await kr(De,"utf8")}catch{return 0}let r=0;for(let o of e.split(`
10
+ `))if(o.trim())try{let n=JSON.parse(o);(n.ts?new Date(n.ts).getTime():0)>t&&(r+=1)}catch{}return r}async function zl(){try{await Kl(Pe,new Date().toISOString(),"utf8")}catch{}}async function Xl(){try{await Wl(Pe)}catch{}}function Zl(t){try{let e=typeof t=="string"?t:JSON.stringify(t);return Yl("sha256").update(e).digest("hex").slice(0,12)}catch{return null}}var De,Pe,$r=c(()=>{$();Le();De=fn,Pe=ln});var kn,Bn=c(()=>{kn="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"});import{webcrypto as $n}from"node:crypto";function tp(t){if(t<0||t>1024)throw new RangeError("Wrong ID size");!ht||ht.length<t?(ht=Buffer.allocUnsafe(t*Ql),$n.getRandomValues(ht),At=0):At+t>ht.length&&($n.getRandomValues(ht),At=0),At+=t}function X(t=21){tp(t|=0);let e="";for(let r=At-t;r<At;r++)e+=kn[ht[r]&63];return e}var Ql,ht,At,Tt=c(()=>{Bn();Ql=128});async function ee({podType:t,externalId:e,name:r,namespace:o,attrs:n={},entityId:a=null,connectionId:i=null,startedAt:s=null}){if(!e)throw new Error("upsertPod requires externalId; use insertPod for custom pods");let u=`pod-${X(16)}`,f=o||p.defaults.namespace,{rows:[l]}=await m.raw(`
10
11
  INSERT INTO pod (uid, pod_type, name, namespace, attrs, entity_id, connection_id, external_id, started_at, created_at, updated_at)
11
12
  VALUES (?, ?, ?, ?, ?::jsonb, ?, ?, ?, ?, NOW(), NOW())
12
13
  ON CONFLICT (pod_type, external_id, namespace) WHERE external_id IS NOT NULL DO UPDATE SET
13
14
  attrs = pod.attrs || EXCLUDED.attrs,
14
15
  updated_at = NOW()
15
16
  RETURNING *, (xmax = 0) AS "isNew"
16
- `,[f,t,r,u,JSON.stringify(n),a,i,e,s]);return{pod:l,isNew:l.isNew}}async function te(t){return m("pod").where({uid:t}).first()||null}async function ee({podType:t,externalId:e,namespace:r}){return m("pod").where({podType:t,externalId:e,namespace:r||p.defaults.namespace}).first()||null}async function ve(t,e){await m.raw("UPDATE pod SET attrs = attrs || ?::jsonb, updated_at = NOW() WHERE id = ?",[JSON.stringify(e),t])}async function gn(t,e=new Date){await m("pod").where({id:t}).update({endedAt:e,updatedAt:m.fn.now()})}async function re(t,{docs:e=0,facts:r=0}){!e&&!r||await m.raw(`UPDATE pod
17
+ `,[u,t,r,f,JSON.stringify(n),a,i,e,s]);return{pod:l,isNew:l.isNew}}async function re(t){return m("pod").where({uid:t}).first()||null}async function oe({podType:t,externalId:e,namespace:r}){return m("pod").where({podType:t,externalId:e,namespace:r||p.defaults.namespace}).first()||null}async function Me(t,e){await m.raw("UPDATE pod SET attrs = attrs || ?::jsonb, updated_at = NOW() WHERE id = ?",[JSON.stringify(e),t])}async function Fn(t,e=new Date){await m("pod").where({id:t}).update({endedAt:e,updatedAt:m.fn.now()})}async function ne(t,{docs:e=0,facts:r=0}){!e&&!r||await m.raw(`UPDATE pod
17
18
  SET member_doc_count = member_doc_count + ?,
18
19
  member_fact_count = member_fact_count + ?,
19
20
  updated_at = NOW()
20
- WHERE id = ?`,[e,r,t])}var At=c(()=>{Zt();S();_()});function _n({sessionId:t,transcriptPath:e=null,cwd:r=null,turnCount:o=0,model:n=null,conclusion:a=null,summary:i=null}){return{session_id:t,transcript_path:e,cwd:r,turn_count:o,model:n,conclusion:a,summary:i}}function En({sessionId:t,startedAt:e=new Date}={}){let o=(e instanceof Date?e:new Date(e)).toISOString().replace("T"," ").slice(0,16),n=t?t.slice(0,8):"unknown";return`claude-session ${o} (${n})`}var wn,xn,Nr=c(()=>{St();wn="claude_session",xn={name:"claude_session",description:"Claude Code session",identityField:"session_id",attrsSchema:{session_id:"string",transcript_path:"string",cwd:"string",turn_count:"number",model:"string",conclusion:"string",summary:"string"},visibility:"private",activeMode:"singleton-live",hotContextBudget:6,retrievalWeights:{recency:1,relevance:.7},importanceDefault:2,ttlDays:90,schemaDocPath:"kinds/claude_session.schema.md",writePolicy:"origin-only",resolveActiveScope:async()=>{try{let t=await Rr();return t?[t]:[]}catch{return[]}}}});var Le={};A(Le,{CURSOR_PATH:()=>Tt,endActiveSession:()=>Pl,ensureActiveSession:()=>Dr,getActiveCursor:()=>Cl,getActiveSessionPodUid:()=>Rr});import{writeFile as bl,readFile as Al,unlink as Sl}from"node:fs/promises";import{existsSync as Tl,mkdirSync as Ol}from"node:fs";import{dirname as bn}from"node:path";async function Pe(){try{let t=await Al(Tt,"utf8");return JSON.parse(t)}catch{return null}}async function An(t){Tl(bn(Tt))||Ol(bn(Tt),{recursive:!0}),await bl(Tt,JSON.stringify(t,null,2),"utf8")}async function Dr({sessionId:t,transcriptPath:e=null,cwd:r=null,model:o=null,namespace:n=null}){if(!t)throw new Error("ensureActiveSession requires sessionId from hook stdin");let a=n||p.defaults.namespace,i=await Pe();if(i&&i.session_id===t&&i.namespace===a){let u=await te(i.pod_uid);if(u)return await ve(u.id,{turn_count:(Ll(u.attrs)||0)+1}),await vl(i),u}let s=new Date,{pod:f}=await Qt({podType:wn,externalId:t,name:En({sessionId:t,startedAt:s}),namespace:a,attrs:_n({sessionId:t,transcriptPath:e,cwd:r,turnCount:1,model:o}),startedAt:s});return await An({session_id:t,pod_uid:f.uid,namespace:a,started_at:f.startedAt??s.toISOString(),last_seen_at:new Date().toISOString()}),f}async function vl(t){await An({...t,last_seen_at:new Date().toISOString()})}async function Rr({allowStale:t=!1}={}){let e=await Pe();return!e||!e.pod_uid||!t&&e.started_at&&Date.now()-new Date(e.started_at).getTime()>Il?null:e.pod_uid}async function Cl(){return Pe()}async function Pl({conclusion:t=null,summary:e=null}={}){let r=await Pe();if(!r)return null;let o=await te(r.pod_uid);if(o){if(t||e){let n={};t&&(n.conclusion=t),e&&(n.summary=e),await ve(o.id,n)}await gn(o.id)}try{await Sl(Tt)}catch{}return o}function Ll(t){if(!t)return 0;if(typeof t=="object")return t.turn_count??0;try{return JSON.parse(t).turn_count??0}catch{return 0}}var Tt,Il,St=c(()=>{At();Nr();_();B();Tt=Qo,Il=360*60*1e3});var ne={};A(ne,{attach:()=>Ne,attachDocument:()=>Mr,attachEntity:()=>Nl,attachFact:()=>oe,detach:()=>Rl,factIdsInPod:()=>kl,listMembers:()=>Dl,listPodsForMember:()=>Ml});async function Ne(t,e,r,o="primary"){let{rowCount:n}=await m.raw(`INSERT INTO pod_membership (pod_id, member_type, member_id, role)
21
+ WHERE id = ?`,[e,r,t])}var It=c(()=>{Tt();I();x()});function Hn({sessionId:t,transcriptPath:e=null,cwd:r=null,turnCount:o=0,model:n=null,conclusion:a=null,summary:i=null}){return{session_id:t,transcript_path:e,cwd:r,turn_count:o,model:n,conclusion:a,summary:i}}function Gn({sessionId:t,startedAt:e=new Date}={}){let o=(e instanceof Date?e:new Date(e)).toISOString().replace("T"," ").slice(0,16),n=t?t.slice(0,8):"unknown";return`claude-session ${o} (${n})`}var Un,jn,Fr=c(()=>{Ot();Un="claude_session",jn={name:"claude_session",description:"Claude Code session",identityField:"session_id",attrsSchema:{session_id:"string",transcript_path:"string",cwd:"string",turn_count:"number",model:"string",conclusion:"string",summary:"string"},visibility:"private",activeMode:"singleton-live",hotContextBudget:6,retrievalWeights:{recency:1,relevance:.7},importanceDefault:2,ttlDays:90,schemaDocPath:"kinds/claude_session.schema.md",writePolicy:"origin-only",resolveActiveScope:async()=>{try{let t=await Ur();return t?[t]:[]}catch{return[]}}}});var $e={};A($e,{CURSOR_PATH:()=>vt,endActiveSession:()=>fp,ensureActiveSession:()=>jr,getActiveCursor:()=>up,getActiveSessionPodUid:()=>Ur});import{writeFile as rp,readFile as op,unlink as np}from"node:fs/promises";import{existsSync as ap,mkdirSync as ip}from"node:fs";import{dirname as Kn}from"node:path";async function Be(){try{let t=await op(vt,"utf8");return JSON.parse(t)}catch{return null}}async function Wn(t){ap(Kn(vt))||ip(Kn(vt),{recursive:!0}),await rp(vt,JSON.stringify(t,null,2),"utf8")}async function jr({sessionId:t,transcriptPath:e=null,cwd:r=null,model:o=null,namespace:n=null}){if(!t)throw new Error("ensureActiveSession requires sessionId from hook stdin");let a=n||p.defaults.namespace,i=await Be();if(i&&i.session_id===t&&i.namespace===a){let f=await re(i.pod_uid);if(f)return await Me(f.id,{turn_count:(lp(f.attrs)||0)+1}),await cp(i),f}let s=new Date,{pod:u}=await ee({podType:Un,externalId:t,name:Gn({sessionId:t,startedAt:s}),namespace:a,attrs:Hn({sessionId:t,transcriptPath:e,cwd:r,turnCount:1,model:o}),startedAt:s});return await Wn({session_id:t,pod_uid:u.uid,namespace:a,started_at:u.startedAt??s.toISOString(),last_seen_at:new Date().toISOString()}),u}async function cp(t){await Wn({...t,last_seen_at:new Date().toISOString()})}async function Ur({allowStale:t=!1}={}){let e=await Be();return!e||!e.pod_uid||!t&&e.started_at&&Date.now()-new Date(e.started_at).getTime()>sp?null:e.pod_uid}async function up(){return Be()}async function fp({conclusion:t=null,summary:e=null}={}){let r=await Be();if(!r)return null;let o=await re(r.pod_uid);if(o){if(t||e){let n={};t&&(n.conclusion=t),e&&(n.summary=e),await Me(o.id,n)}await Fn(o.id)}try{await np(vt)}catch{}return o}function lp(t){if(!t)return 0;if(typeof t=="object")return t.turn_count??0;try{return JSON.parse(t).turn_count??0}catch{return 0}}var vt,sp,Ot=c(()=>{It();Fr();x();$();vt=pn,sp=360*60*1e3});var ie={};A(ie,{attach:()=>Fe,attachDocument:()=>Hr,attachEntity:()=>pp,attachFact:()=>ae,detach:()=>dp,factIdsInPod:()=>gp,listMembers:()=>mp,listPodsForMember:()=>hp});async function Fe(t,e,r,o="primary"){let{rowCount:n}=await m.raw(`INSERT INTO pod_membership (pod_id, member_type, member_id, role)
21
22
  VALUES (?, ?, ?, ?)
22
- ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await re(t,{facts:1}):e==="document"&&await re(t,{docs:1})),{attached:n>0}}async function Rl(t,e,r){let o=await m("pod_membership").where({podId:t,memberType:e,memberId:r}).del();return o>0&&(e==="fact"?await re(t,{facts:-1}):e==="document"&&await re(t,{docs:-1})),{detached:o>0}}async function Dl(t,{memberType:e,limit:r=20}={}){if(!e)throw new Error("listMembers requires a memberType filter");return m(`${e} as t`).join("pod_membership as pm",function(){this.on("pm.member_id","=","t.id").andOnVal("pm.member_type","=",e)}).where("pm.pod_id",t).orderBy("pm.createdAt","desc").limit(r).select("t.*","pm.role as podRole","pm.createdAt as attachedAt")}async function Ml(t,e){return m("pod as p").join("pod_membership as pm","pm.pod_id","p.id").where("pm.memberType",t).where("pm.memberId",e).select("p.*","pm.role as podRole")}async function kl(t){return await m("pod_membership").where({podId:t,memberType:"fact"}).pluck("memberId")}var oe,Mr,Nl,Re=c(()=>{S();At();oe=(t,e,r)=>Ne(t,"fact",e,r),Mr=(t,e,r)=>Ne(t,"document",e,r),Nl=(t,e,r)=>Ne(t,"entity",e,r)});var Tn={};A(Tn,{POD_TYPE:()=>Br,deriveProjectRoot:()=>Ur,ensureProjectPod:()=>$r,formatForDisplay:()=>$l,membership:()=>ne,projectKind:()=>Fr});import{execFileSync as Bl}from"node:child_process";import{basename as Sn}from"node:path";async function $r({cwd:t,namespace:e=null}){if(!t)return null;let r=Ur(t),o=e||p.defaults.namespace,a=(r!==t?!1:kr(t)===t)?r:kr(t),{pod:i}=await Qt({podType:Br,externalId:r,name:Sn(r)||r,namespace:o,attrs:{root_path:r,git_root:a||null,display_name:Sn(r)||r,discovered_at:new Date().toISOString()},startedAt:new Date});return i}function Ur(t){return kr(t)||t}function kr(t){try{return Bl("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}async function Fl(){try{let{getActiveCursor:t}=await Promise.resolve().then(()=>(St(),Le));return(await t())?.cwd||null}catch{return null}}function $l(t){let e=Ul(t.attrs);return{uid:t.uid,name:t.name,rootPath:e.root_path,gitRoot:e.git_root,displayName:e.display_name,discoveredAt:e.discovered_at,memberFactCount:t.memberFactCount,memberDocCount:t.memberDocCount}}function Ul(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var Br,Fr,De=c(()=>{At();Re();_();Br="project",Fr={name:"project",description:"Code project rooted at a git repo or directory",identityField:"root_path",attrsSchema:{root_path:"string",git_root:"string",display_name:"string",discovered_at:"string"},visibility:"shared",activeMode:"multi-active",hotContextBudget:4,retrievalWeights:{recency:.6,relevance:1},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/project.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.cwd||await Fl();if(!e)return[];try{let r=t.namespace||p.defaults.namespace,o=Ur(e),n=await ee({podType:Br,externalId:o,namespace:r});return n?[n.uid]:[]}catch{return[]}}}});var On={};A(On,{ensureActivePodsForHook:()=>Hl});async function Hl({sessionId:t,cwd:e=null,transcriptPath:r=null,model:o=null,namespace:n=null}){let a=null;if(t)try{a=await Dr({sessionId:t,transcriptPath:r,cwd:e,model:o,namespace:n})}catch{a=null}let i=null;if(e)try{i=await $r({cwd:e,namespace:n})}catch{i=null}let s=[a,i].filter(Boolean).map(f=>f.uid);return{sessionPod:a,projectPod:i,podUids:s}}var In=c(()=>{St();De()});var vn={};A(vn,{chat:()=>jl,meta:()=>Gl,setup:()=>Wl});async function jl(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.openaiModel,n=[{role:"user",content:t}];r&&!t.toLowerCase().includes("json")&&n.unshift({role:"system",content:"Respond with valid JSON."});let a={model:o,messages:n};r&&(a.response_format={type:"json_object"});let i=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.llm.openaiApiKey}`},body:JSON.stringify(a)});if(!i.ok){let l=await i.text();throw new Error(`OpenAI error ${i.status}: ${l}`)}let s=await i.json(),f=s.choices[0].message.content.trim(),u=s.usage||{};return{text:f,inputTokens:u.prompt_tokens||0,outputTokens:u.completion_tokens||0,model:o}}async function Wl({existing:t,clack:e}){let r=t.OPENAI_API_KEY||"",o=await e.text({message:"OpenAI API key (paste, then Enter)",placeholder:r?"(keep existing \u2014 press Enter)":"sk-proj-...",validate:n=>{if(!n&&!r)return"API key is required";if(n&&!n.startsWith("sk-"))return'OpenAI keys start with "sk-" \u2014 check paste'}});return e.isCancel(o)?null:{env:{OPENAI_API_KEY:o||r}}}var Gl,Cn=c(()=>{_();Gl={id:"openai",label:"OpenAI",hint:"gpt-4o-mini"}});function G(t){return Math.ceil((t||"").length/4)}function Hr(t,e,r){let o=Kl[t];return o?(e*o.input+r*o.output)/1e6:0}function ae({provider:t,model:e,caller:r,input:o,response:n,inputTokens:a,outputTokens:i,cost:s,durationMs:f,status:u,error:l}){m("llm_log").insert({provider:t,model:e,caller:r,input:o?.slice(0,1e4),response:n?.slice(0,1e4),inputTokens:a,outputTokens:i,cost:s,durationMs:f,status:u,error:l?.slice(0,2e3)}).catch(h=>console.error("[llm-log] Write failed:",h.message))}async function jr(t,e=3){for(let r=1;r<=e;r++)try{return await t()}catch(o){if(r===e)throw o;let n=Math.min(1e3*2**(r-1),1e4);await new Promise(a=>setTimeout(a,n))}}var Kl,ie=c(()=>{S();Kl={"gpt-4o-mini":{input:.15,output:.6},"gpt-4o":{input:2.5,output:10},"gpt-4.1-nano":{input:.1,output:.4},"gpt-4.1-mini":{input:.4,output:1.6},"claude-haiku-4-5-20251001":{input:.8,output:4},"claude-sonnet-4-6":{input:3,output:15},"claude-opus-4-6":{input:15,output:75}}});var Pn={};A(Pn,{chat:()=>Jl,meta:()=>ql,setup:()=>Vl});async function Yl(){if(!Gr){let{default:t}=await import("@anthropic-ai/sdk");Gr=new t({apiKey:p.llm.apiKey})}return Gr}async function Jl(t,{model:e,jsonMode:r=!1}={}){let o=e||"claude-haiku-4-5-20251001",n=await Yl(),a=[{role:"user",content:t}],i=r?"Respond with valid JSON only. No explanation or wrapping.":void 0,s=await n.messages.create({model:o,max_tokens:4096,messages:a,...i&&{system:i}});return{text:s.content[0].text.trim(),inputTokens:s.usage?.input_tokens||G(t),outputTokens:s.usage?.output_tokens||G(s.content[0].text),model:o}}async function Vl({existing:t,clack:e}){let r=t.ANTHROPIC_API_KEY||"",o=await e.text({message:"Anthropic API key (paste, then Enter)",placeholder:r?"(keep existing \u2014 press Enter)":"sk-ant-...",validate:n=>{if(!n&&!r)return"API key is required";if(n&&!n.startsWith("sk-ant-"))return'Anthropic keys start with "sk-ant-" \u2014 check paste'}});return e.isCancel(o)?null:{env:{ANTHROPIC_API_KEY:o||r}}}var Gr,ql,Ln=c(()=>{_();ie();Gr=null;ql={id:"anthropic",label:"Anthropic",hint:"Claude Haiku \u2014 requires API key"}});var Rn={};A(Rn,{chat:()=>zl,meta:()=>Zl,setup:()=>Ql});async function zl(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.openrouterModel;if(!p.llm.openrouterApiKey)throw new Error("OPENROUTER_API_KEY is not set");if(!o)throw new Error("No OpenRouter model resolved. Set LLM_OPENROUTER_MODEL or pass `model`.");let n=[{role:"user",content:t}];r&&!t.toLowerCase().includes("json")&&n.unshift({role:"system",content:"Respond with valid JSON."});let a={model:o,messages:n};r&&(a.response_format={type:"json_object"});let i=(p.llm.openrouterBaseUrl||Xl).replace(/\/+$/,""),s={"Content-Type":"application/json",Authorization:`Bearer ${p.llm.openrouterApiKey}`};p.llm.openrouterReferer&&(s["HTTP-Referer"]=p.llm.openrouterReferer),p.llm.openrouterTitle&&(s["X-Title"]=p.llm.openrouterTitle);let f=await fetch(`${i}/chat/completions`,{method:"POST",headers:s,body:JSON.stringify(a)});if(!f.ok){let y=await f.text();throw new Error(`OpenRouter error ${f.status}: ${y}`)}let u=await f.json(),h=(u.choices?.[0]?.message?.content||"").trim(),d=u.usage||{};return{text:h,inputTokens:d.prompt_tokens||0,outputTokens:d.completion_tokens||0,model:u.model||o}}async function Ql({existing:t,clack:e}){let r={},o=t.OPENROUTER_API_KEY||"",n=await e.text({message:"OpenRouter API key (paste, then Enter)",placeholder:o?"(keep existing \u2014 press Enter)":"sk-or-v1-...",validate:f=>{if(!f&&!o)return"API key is required";if(f&&!f.startsWith("sk-or-"))return'OpenRouter keys start with "sk-or-" \u2014 check paste'}});if(e.isCancel(n))return null;r.OPENROUTER_API_KEY=n||o;let a=t.LLM_OPENROUTER_MODEL||"",i=await e.text({message:"OpenRouter model (vendor/model)",placeholder:a||Nn,validate:f=>{if(f&&!f.includes("/"))return'OpenRouter models are "vendor/model" \u2014 e.g. google/gemini-flash-latest'}});if(e.isCancel(i))return null;r.LLM_OPENROUTER_MODEL=i||a||Nn;let s=await e.select({message:"Configure per-task model overrides? (advanced \u2014 better quality / cost)",options:[{value:"no",label:"No, use one model everywhere",hint:"simpler \u2014 debug one model"},{value:"yes",label:"Yes, configure smart split",hint:"~5\xD7 cheaper extraction + better AUDM/synthesis"}],initialValue:"no"});if(e.isCancel(s))return null;if(s==="yes"){let f=await e.text({message:"Extraction model (high-volume; cheap matters)",placeholder:t.LLM_EXTRACTION_MODEL||Ot.extraction});if(e.isCancel(f))return null;r.LLM_EXTRACTION_MODEL=f||t.LLM_EXTRACTION_MODEL||Ot.extraction;let u=await e.text({message:"Decision model (AUDM; smart matters)",placeholder:t.LLM_DECISION_MODEL||Ot.decision});if(e.isCancel(u))return null;r.LLM_DECISION_MODEL=u||t.LLM_DECISION_MODEL||Ot.decision;let l=await e.text({message:"Synthesis model (read-time answer composition)",placeholder:t.SIGIL_SYNTH_MODEL||Ot.synthesis});if(e.isCancel(l))return null;r.SIGIL_SYNTH_MODEL=l||t.SIGIL_SYNTH_MODEL||Ot.synthesis}return e.note(`OpenRouter can drive both LLM calls and embeddings.
23
+ ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await ne(t,{facts:1}):e==="document"&&await ne(t,{docs:1})),{attached:n>0}}async function dp(t,e,r){let o=await m("pod_membership").where({podId:t,memberType:e,memberId:r}).del();return o>0&&(e==="fact"?await ne(t,{facts:-1}):e==="document"&&await ne(t,{docs:-1})),{detached:o>0}}async function mp(t,{memberType:e,limit:r=20}={}){if(!e)throw new Error("listMembers requires a memberType filter");return m(`${e} as t`).join("pod_membership as pm",function(){this.on("pm.member_id","=","t.id").andOnVal("pm.member_type","=",e)}).where("pm.pod_id",t).orderBy("pm.createdAt","desc").limit(r).select("t.*","pm.role as podRole","pm.createdAt as attachedAt")}async function hp(t,e){return m("pod as p").join("pod_membership as pm","pm.pod_id","p.id").where("pm.memberType",t).where("pm.memberId",e).select("p.*","pm.role as podRole")}async function gp(t){return await m("pod_membership").where({podId:t,memberType:"fact"}).pluck("memberId")}var ae,Hr,pp,Ue=c(()=>{I();It();ae=(t,e,r)=>Fe(t,"fact",e,r),Hr=(t,e,r)=>Fe(t,"document",e,r),pp=(t,e,r)=>Fe(t,"entity",e,r)});var qr={};A(qr,{POD_TYPE:()=>Kr,deriveProjectRoot:()=>Jr,ensureProjectPod:()=>Yr,formatForDisplay:()=>_p,membership:()=>ie,projectKind:()=>Wr});import{execFileSync as yp}from"node:child_process";import{basename as Yn}from"node:path";async function Yr({cwd:t,namespace:e=null}){if(!t)return null;let r=Jr(t),o=e||p.defaults.namespace,a=(r!==t?!1:Gr(t)===t)?r:Gr(t),{pod:i}=await ee({podType:Kr,externalId:r,name:Yn(r)||r,namespace:o,attrs:{root_path:r,git_root:a||null,display_name:Yn(r)||r,discovered_at:new Date().toISOString()},startedAt:new Date});return i}function Jr(t){return Gr(t)||t}function Gr(t){try{return yp("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}async function wp(){try{let{getActiveCursor:t}=await Promise.resolve().then(()=>(Ot(),$e));return(await t())?.cwd||null}catch{return null}}function _p(t){let e=xp(t.attrs);return{uid:t.uid,name:t.name,rootPath:e.root_path,gitRoot:e.git_root,displayName:e.display_name,discoveredAt:e.discovered_at,memberFactCount:t.memberFactCount,memberDocCount:t.memberDocCount}}function xp(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var Kr,Wr,se=c(()=>{It();Ue();x();Kr="project",Wr={name:"project",description:"Code project rooted at a git repo or directory",identityField:"root_path",attrsSchema:{root_path:"string",git_root:"string",display_name:"string",discovered_at:"string"},visibility:"shared",activeMode:"multi-active",hotContextBudget:4,retrievalWeights:{recency:.6,relevance:1},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/project.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.cwd||await wp();if(!e)return[];let r=t.namespace||p.defaults.namespace,o=Jr(e),n=await oe({podType:Kr,externalId:o,namespace:r});return n?[n.uid]:[]}}});var Jn={};A(Jn,{ensureActivePodsForHook:()=>Ep});async function Ep({sessionId:t,cwd:e=null,transcriptPath:r=null,model:o=null,namespace:n=null}){let a=null;if(t)try{a=await jr({sessionId:t,transcriptPath:r,cwd:e,model:o,namespace:n})}catch{a=null}let i=null;if(e)try{i=await Yr({cwd:e,namespace:n})}catch{i=null}let s=[a,i].filter(Boolean).map(u=>u.uid);return{sessionPod:a,projectPod:i,podUids:s}}var qn=c(()=>{Ot();se()});var Vn={};A(Vn,{chat:()=>bp,meta:()=>Sp,setup:()=>Ap});async function bp(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.openaiModel,n=[{role:"user",content:t}];r&&!t.toLowerCase().includes("json")&&n.unshift({role:"system",content:"Respond with valid JSON."});let a={model:o,messages:n};r&&(a.response_format={type:"json_object"});let i=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.llm.openaiApiKey}`},body:JSON.stringify(a)});if(!i.ok){let l=await i.text();throw new Error(`OpenAI error ${i.status}: ${l}`)}let s=await i.json(),u=s.choices[0].message.content.trim(),f=s.usage||{};return{text:u,inputTokens:f.prompt_tokens||0,outputTokens:f.completion_tokens||0,model:o}}async function Ap({existing:t,clack:e}){let r=t.OPENAI_API_KEY||"",o=await e.text({message:"OpenAI API key (paste, then Enter)",placeholder:r?"(keep existing \u2014 press Enter)":"sk-proj-...",validate:n=>{if(!n&&!r)return"API key is required";if(n&&!n.startsWith("sk-"))return'OpenAI keys start with "sk-" \u2014 check paste'}});return e.isCancel(o)?null:{env:{OPENAI_API_KEY:o||r}}}var Sp,zn=c(()=>{x();Sp={id:"openai",label:"OpenAI",hint:"gpt-4o-mini"}});function W(t){return Math.ceil((t||"").length/4)}function Vr(t,e,r){let o=Tp[t];return o?(e*o.input+r*o.output)/1e6:0}function ce({provider:t,model:e,caller:r,input:o,response:n,inputTokens:a,outputTokens:i,cost:s,durationMs:u,status:f,error:l}){m("llm_log").insert({provider:t,model:e,caller:r,input:o?.slice(0,1e4),response:n?.slice(0,1e4),inputTokens:a,outputTokens:i,cost:s,durationMs:u,status:f,error:l?.slice(0,2e3)}).catch(h=>console.error("[llm-log] Write failed:",h.message))}async function zr(t,e=3){for(let r=1;r<=e;r++)try{return await t()}catch(o){if(r===e)throw o;let n=Math.min(1e3*2**(r-1),1e4);await new Promise(a=>setTimeout(a,n))}}var Tp,ue=c(()=>{I();Tp={"gpt-4o-mini":{input:.15,output:.6},"gpt-4o":{input:2.5,output:10},"gpt-4.1-nano":{input:.1,output:.4},"gpt-4.1-mini":{input:.4,output:1.6},"claude-haiku-4-5-20251001":{input:.8,output:4},"claude-sonnet-4-6":{input:3,output:15},"claude-opus-4-6":{input:15,output:75}}});var Xn={};A(Xn,{chat:()=>Op,meta:()=>vp,setup:()=>Cp});async function Ip(){if(!Xr){let{default:t}=await import("@anthropic-ai/sdk");Xr=new t({apiKey:p.llm.apiKey})}return Xr}async function Op(t,{model:e,jsonMode:r=!1}={}){let o=e||"claude-haiku-4-5-20251001",n=await Ip(),a=[{role:"user",content:t}],i=r?"Respond with valid JSON only. No explanation or wrapping.":void 0,s=await n.messages.create({model:o,max_tokens:4096,messages:a,...i&&{system:i}});return{text:s.content[0].text.trim(),inputTokens:s.usage?.input_tokens||W(t),outputTokens:s.usage?.output_tokens||W(s.content[0].text),model:o}}async function Cp({existing:t,clack:e}){let r=t.ANTHROPIC_API_KEY||"",o=await e.text({message:"Anthropic API key (paste, then Enter)",placeholder:r?"(keep existing \u2014 press Enter)":"sk-ant-...",validate:n=>{if(!n&&!r)return"API key is required";if(n&&!n.startsWith("sk-ant-"))return'Anthropic keys start with "sk-ant-" \u2014 check paste'}});return e.isCancel(o)?null:{env:{ANTHROPIC_API_KEY:o||r}}}var Xr,vp,Zn=c(()=>{x();ue();Xr=null;vp={id:"anthropic",label:"Anthropic",hint:"Claude Haiku \u2014 requires API key"}});var ta={};A(ta,{chat:()=>Lp,meta:()=>Np,setup:()=>Dp});async function Lp(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.openrouterModel;if(!p.llm.openrouterApiKey)throw new Error("OPENROUTER_API_KEY is not set");if(!o)throw new Error("No OpenRouter model resolved. Set LLM_OPENROUTER_MODEL or pass `model`.");let n=[{role:"user",content:t}];r&&!t.toLowerCase().includes("json")&&n.unshift({role:"system",content:"Respond with valid JSON."});let a={model:o,messages:n};r&&(a.response_format={type:"json_object"});let i=(p.llm.openrouterBaseUrl||Rp).replace(/\/+$/,""),s={"Content-Type":"application/json",Authorization:`Bearer ${p.llm.openrouterApiKey}`};p.llm.openrouterReferer&&(s["HTTP-Referer"]=p.llm.openrouterReferer),p.llm.openrouterTitle&&(s["X-Title"]=p.llm.openrouterTitle);let u=await fetch(`${i}/chat/completions`,{method:"POST",headers:s,body:JSON.stringify(a)});if(!u.ok){let g=await u.text();throw new Error(`OpenRouter error ${u.status}: ${g}`)}let f=await u.json(),h=(f.choices?.[0]?.message?.content||"").trim(),d=f.usage||{};return{text:h,inputTokens:d.prompt_tokens||0,outputTokens:d.completion_tokens||0,model:f.model||o}}async function Dp({existing:t,clack:e}){let r={},o=t.OPENROUTER_API_KEY||"",n=await e.text({message:"OpenRouter API key (paste, then Enter)",placeholder:o?"(keep existing \u2014 press Enter)":"sk-or-v1-...",validate:u=>{if(!u&&!o)return"API key is required";if(u&&!u.startsWith("sk-or-"))return'OpenRouter keys start with "sk-or-" \u2014 check paste'}});if(e.isCancel(n))return null;r.OPENROUTER_API_KEY=n||o;let a=t.LLM_OPENROUTER_MODEL||"",i=await e.text({message:"OpenRouter model (vendor/model)",placeholder:a||Qn,validate:u=>{if(u&&!u.includes("/"))return'OpenRouter models are "vendor/model" \u2014 e.g. google/gemini-flash-latest'}});if(e.isCancel(i))return null;r.LLM_OPENROUTER_MODEL=i||a||Qn;let s=await e.select({message:"Configure per-task model overrides? (advanced \u2014 better quality / cost)",options:[{value:"no",label:"No, use one model everywhere",hint:"simpler \u2014 debug one model"},{value:"yes",label:"Yes, configure smart split",hint:"~5\xD7 cheaper extraction + better AUDM/synthesis"}],initialValue:"no"});if(e.isCancel(s))return null;if(s==="yes"){let u=await e.text({message:"Extraction model (high-volume; cheap matters)",placeholder:t.LLM_EXTRACTION_MODEL||Ct.extraction});if(e.isCancel(u))return null;r.LLM_EXTRACTION_MODEL=u||t.LLM_EXTRACTION_MODEL||Ct.extraction;let f=await e.text({message:"Decision model (AUDM; smart matters)",placeholder:t.LLM_DECISION_MODEL||Ct.decision});if(e.isCancel(f))return null;r.LLM_DECISION_MODEL=f||t.LLM_DECISION_MODEL||Ct.decision;let l=await e.text({message:"Synthesis model (read-time answer composition)",placeholder:t.SIGIL_SYNTH_MODEL||Ct.synthesis});if(e.isCancel(l))return null;r.SIGIL_SYNTH_MODEL=l||t.SIGIL_SYNTH_MODEL||Ct.synthesis}return e.note(`OpenRouter can drive both LLM calls and embeddings.
23
24
  You will pick an embedding provider in the next step \u2014 "openrouter" is an option,
24
- or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var Xl,Zl,Nn,Ot,Dn=c(()=>{_();Xl="https://openrouter.ai/api/v1";Zl={id:"openrouter",label:"OpenRouter",hint:"one key, many models (Anthropic / OpenAI / Meta / ...)"},Nn="google/gemini-flash-latest",Ot={extraction:"openrouter:qwen/qwen3.5-flash",decision:"openrouter:anthropic/claude-sonnet-latest",synthesis:"openrouter:anthropic/claude-sonnet-latest"}});var Mn={};A(Mn,{chat:()=>np,meta:()=>ap,setup:()=>ip});import{spawn as tp}from"node:child_process";function op(t,e){let r=p.llm.cliTimeout||12e4;return new Promise((o,n)=>{let a=tp("claude",t,{stdio:["pipe","pipe","pipe"]}),i=setTimeout(()=>{a.kill("SIGTERM"),n(new Error(`claude CLI timed out after ${r}ms`))},r),s="",f="";a.stdout.on("data",u=>{s+=u}),a.stderr.on("data",u=>{f+=u}),a.on("error",u=>{clearTimeout(i),n(new Error(`Failed to spawn claude CLI: ${u.message}`))}),a.on("close",u=>{clearTimeout(i),o({stdout:s,stderr:f,code:u})}),a.stdin.write(e),a.stdin.end()})}async function np(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.cliModel||"haiku",n=ep[o]||o,a=["-p","--model",n,"--output-format","json"];r&&a.push("--json-schema",rp);let{stdout:i,stderr:s,code:f}=await op(a,t);if(f!==0)throw new Error(`claude CLI exited ${f}: ${(s||i).slice(0,500)}`);let u;try{u=JSON.parse(i)}catch{return{text:i.trim(),inputTokens:G(t),outputTokens:G(i),model:n}}if(u.is_error)throw new Error(`claude CLI error: ${u.result||"unknown error"}`);let l=r&&u.structured_output?JSON.stringify(u.structured_output):(u.result||"").trim(),h=u.usage||{};return{text:l,inputTokens:h.input_tokens||G(t),outputTokens:h.output_tokens||G(l),model:n,cost:u.total_cost_usd||0}}async function ip(){return{env:{}}}var ep,rp,ap,kn=c(()=>{_();ie();ep={"claude-haiku-4-5-20251001":"haiku","claude-sonnet-4-6":"sonnet","claude-opus-4-6":"opus"},rp=JSON.stringify({type:"object",additionalProperties:!0});ap={id:"claude-cli",label:"Claude Code",hint:"uses your existing subscription \u2014 no extra API key"}});var Bn={};A(Bn,{chat:()=>sp,meta:()=>cp,setup:()=>fp});async function sp(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.ollamaModel,n=`${p.llm.ollamaHost}/api/chat`,a={model:o,messages:[{role:"user",content:t}],stream:!1};r&&(a.format="json");let i=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!i.ok){let f=await i.text();throw new Error(`Ollama error ${i.status}: ${f}`)}let s=await i.json();return{text:s.message.content.trim(),inputTokens:s.prompt_eval_count||G(t),outputTokens:s.eval_count||G(s.message.content),model:o}}async function fp({existing:t,clack:e}){let r=t.OLLAMA_HOST||"http://localhost:11434",o=await e.text({message:"Ollama host",placeholder:r,initialValue:r,validate:n=>{if(n&&!/^https?:\/\//.test(n))return"Must start with http:// or https://"}});return e.isCancel(o)?null:{env:{OLLAMA_HOST:o||r}}}var cp,Fn=c(()=>{_();ie();cp={id:"ollama",label:"Ollama",hint:"local models \u2014 no API cost"}});function Me(t,e){if(e<1)return[];let r=[];for(let o=0;o<t.length;o+=e)r.push(t.slice(o,o+e));return r}var Wr=c(()=>{});var $n={};A($n,{embedBatch:()=>lp});async function lp(t,{model:e,ollamaHost:r}){let o=Me(t,up),n=[];for(let a of o){let i=await fetch(`${r}/api/embed`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:e,input:a})});if(!i.ok)throw new Error(`Ollama embed failed: ${i.status} ${await i.text()}`);let s=await i.json();n.push(...s.embeddings)}return n}var up,Un=c(()=>{Wr();up=50});var Hn={};A(Hn,{embedBatch:()=>pp});async function pp(t,{model:e,openaiApiKey:r,dimensions:o}={}){let n={model:e,input:t};o&&/^text-embedding-3/.test(e)&&(n.dimensions=o);let a=await fetch("https://api.openai.com/v1/embeddings",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify(n)});if(!a.ok)throw new Error(`OpenAI embed failed: ${a.status} ${await a.text()}`);return(await a.json()).data.map(s=>s.embedding)}var jn=c(()=>{});var Gn={};A(Gn,{embedBatch:()=>mp});async function mp(t,{model:e,voyageApiKey:r,inputType:o="document",dimensions:n}={}){if(!r)throw new Error("VOYAGE_API_KEY is not set. Get one at dashboard.voyageai.com.");let a=Me(t,dp),i=[];for(let s of a){let f={input:s,model:e||"voyage-3-large",input_type:o==="query"?"query":"document"};n&&(f.output_dimension=n);let u=await fetch("https://api.voyageai.com/v1/embeddings",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify(f)});if(!u.ok){let d=await u.text();throw new Error(`Voyage embed failed: ${u.status} ${d}`)}let h=[...(await u.json()).data].sort((d,y)=>d.index-y.index);i.push(...h.map(d=>d.embedding))}return i}var dp,Wn=c(()=>{Wr();dp=50});var Kn={};A(Kn,{embedBatch:()=>yp});async function yp(t,{model:e,openrouterApiKey:r,openrouterBaseUrl:o,openrouterReferer:n,openrouterTitle:a,dimensions:i}={}){if(!r)throw new Error("OPENROUTER_API_KEY is not set");if(!e)throw new Error('No OpenRouter embedding model resolved. Set EMBEDDING_MODEL (e.g. "openai/text-embedding-3-large").');let s={model:e,input:t};i&&/(^|\/)text-embedding-3/.test(e)&&(s.dimensions=i);let f=(o||hp).replace(/\/+$/,""),u={"Content-Type":"application/json",Authorization:`Bearer ${r}`};n&&(u["HTTP-Referer"]=n),a&&(u["X-Title"]=a);let l=await fetch(`${f}/embeddings`,{method:"POST",headers:u,body:JSON.stringify(s)});if(!l.ok)throw new Error(`OpenRouter embed failed: ${l.status} ${await l.text()}`);return[...(await l.json()).data].sort((y,g)=>y.index-g.index).map(y=>y.embedding)}var hp,Yn=c(()=>{hp="https://openrouter.ai/api/v1"});import{spawn as gp}from"node:child_process";async function qr(t){if(!Kr[t]){let e=Jr[t];if(!e)throw new Error(`Unknown LLM provider: "${t}". Available: ${Object.keys(Jr).join(", ")}`);let r=await e();Kr[t]=r.chat}return Kr[t]}async function qn(t){if(!Yr[t]){let e=Jn[t];if(!e)throw new Error(`Unknown embedding provider: "${t}". Available: ${Object.keys(Jn).join(", ")}`);let r=await e();Yr[t]=r.embedBatch}return Yr[t]}function Vn(t,e){if(!t)return{provider:e,model:null};let r=t.indexOf(":");return r>0&&Jr[t.slice(0,r)]?{provider:t.slice(0,r),model:t.slice(r+1)}:{provider:e,model:t}}async function Xn(){let t=p.llm.ollamaHost||p.embedding.ollamaHost||"http://localhost:11434";try{return(await fetch(`${t}/api/tags`,{signal:AbortSignal.timeout(2e3)})).ok}catch{return!1}}function wp(){return new Promise(t=>{let e=gp("claude",["--version"],{stdio:"pipe"});e.on("error",()=>t(!1)),e.on("close",r=>t(r===0)),setTimeout(()=>{e.kill(),t(!1)},3e3)})}async function zn(){if(D)return D;if(p.llm.provider)return D=p.llm.provider,D;if(p.llm.openrouterApiKey)return D="openrouter",D;if(p.llm.apiKey)return D="anthropic",D;if(p.llm.openaiApiKey)return D="openai",D;if(await Xn())return D="ollama",D;if(await wp())return D="claude-cli",D;throw new Error(`No LLM provider available. Either:
25
+ or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var Rp,Np,Qn,Ct,ea=c(()=>{x();Rp="https://openrouter.ai/api/v1";Np={id:"openrouter",label:"OpenRouter",hint:"one key, many models (Anthropic / OpenAI / Meta / ...)"},Qn="google/gemini-flash-latest",Ct={extraction:"openrouter:qwen/qwen3.5-flash",decision:"openrouter:anthropic/claude-sonnet-latest",synthesis:"openrouter:anthropic/claude-sonnet-latest"}});var ra={};A(ra,{chat:()=>$p,meta:()=>Fp,setup:()=>Up});import{spawn as Pp}from"node:child_process";function Bp(t,e){let r=p.llm.cliTimeout||12e4;return new Promise((o,n)=>{let a=Pp("claude",t,{stdio:["pipe","pipe","pipe"]}),i=setTimeout(()=>{a.kill("SIGTERM"),n(new Error(`claude CLI timed out after ${r}ms`))},r),s="",u="";a.stdout.on("data",f=>{s+=f}),a.stderr.on("data",f=>{u+=f}),a.on("error",f=>{clearTimeout(i),n(new Error(`Failed to spawn claude CLI: ${f.message}`))}),a.on("close",f=>{clearTimeout(i),o({stdout:s,stderr:u,code:f})}),a.stdin.write(e),a.stdin.end()})}async function $p(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.cliModel||"haiku",n=Mp[o]||o,a=["-p","--model",n,"--output-format","json"];r&&a.push("--json-schema",kp);let{stdout:i,stderr:s,code:u}=await Bp(a,t);if(u!==0)throw new Error(`claude CLI exited ${u}: ${(s||i).slice(0,500)}`);let f;try{f=JSON.parse(i)}catch{return{text:i.trim(),inputTokens:W(t),outputTokens:W(i),model:n}}if(f.is_error)throw new Error(`claude CLI error: ${f.result||"unknown error"}`);let l=r&&f.structured_output?JSON.stringify(f.structured_output):(f.result||"").trim(),h=f.usage||{};return{text:l,inputTokens:h.input_tokens||W(t),outputTokens:h.output_tokens||W(l),model:n,cost:f.total_cost_usd||0}}async function Up(){return{env:{}}}var Mp,kp,Fp,oa=c(()=>{x();ue();Mp={"claude-haiku-4-5-20251001":"haiku","claude-sonnet-4-6":"sonnet","claude-opus-4-6":"opus"},kp=JSON.stringify({type:"object",additionalProperties:!0});Fp={id:"claude-cli",label:"Claude Code",hint:"uses your existing subscription \u2014 no extra API key"}});var na={};A(na,{chat:()=>jp,meta:()=>Hp,setup:()=>Gp});async function jp(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.ollamaModel,n=`${p.llm.ollamaHost}/api/chat`,a={model:o,messages:[{role:"user",content:t}],stream:!1};r&&(a.format="json");let i=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!i.ok){let u=await i.text();throw new Error(`Ollama error ${i.status}: ${u}`)}let s=await i.json();return{text:s.message.content.trim(),inputTokens:s.prompt_eval_count||W(t),outputTokens:s.eval_count||W(s.message.content),model:o}}async function Gp({existing:t,clack:e}){let r=t.OLLAMA_HOST||"http://localhost:11434",o=await e.text({message:"Ollama host",placeholder:r,initialValue:r,validate:n=>{if(n&&!/^https?:\/\//.test(n))return"Must start with http:// or https://"}});return e.isCancel(o)?null:{env:{OLLAMA_HOST:o||r}}}var Hp,aa=c(()=>{x();ue();Hp={id:"ollama",label:"Ollama",hint:"local models \u2014 no API cost"}});function je(t,e){if(e<1)return[];let r=[];for(let o=0;o<t.length;o+=e)r.push(t.slice(o,o+e));return r}var Zr=c(()=>{});var ia={};A(ia,{embedBatch:()=>Wp});async function Wp(t,{model:e,ollamaHost:r}){let o=je(t,Kp),n=[];for(let a of o){let i=await fetch(`${r}/api/embed`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:e,input:a})});if(!i.ok)throw new Error(`Ollama embed failed: ${i.status} ${await i.text()}`);let s=await i.json();n.push(...s.embeddings)}return n}var Kp,sa=c(()=>{Zr();Kp=50});var ca={};A(ca,{embedBatch:()=>Yp});async function Yp(t,{model:e,openaiApiKey:r,dimensions:o}={}){let n={model:e,input:t};o&&/^text-embedding-3/.test(e)&&(n.dimensions=o);let a=await fetch("https://api.openai.com/v1/embeddings",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify(n)});if(!a.ok)throw new Error(`OpenAI embed failed: ${a.status} ${await a.text()}`);return(await a.json()).data.map(s=>s.embedding)}var ua=c(()=>{});var fa={};A(fa,{embedBatch:()=>qp});async function qp(t,{model:e,voyageApiKey:r,inputType:o="document",dimensions:n}={}){if(!r)throw new Error("VOYAGE_API_KEY is not set. Get one at dashboard.voyageai.com.");let a=je(t,Jp),i=[];for(let s of a){let u={input:s,model:e||"voyage-3-large",input_type:o==="query"?"query":"document"};n&&(u.output_dimension=n);let f=await fetch("https://api.voyageai.com/v1/embeddings",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify(u)});if(!f.ok){let d=await f.text();throw new Error(`Voyage embed failed: ${f.status} ${d}`)}let h=[...(await f.json()).data].sort((d,g)=>d.index-g.index);i.push(...h.map(d=>d.embedding))}return i}var Jp,la=c(()=>{Zr();Jp=50});var pa={};A(pa,{embedBatch:()=>zp});async function zp(t,{model:e,openrouterApiKey:r,openrouterBaseUrl:o,openrouterReferer:n,openrouterTitle:a,dimensions:i}={}){if(!r)throw new Error("OPENROUTER_API_KEY is not set");if(!e)throw new Error('No OpenRouter embedding model resolved. Set EMBEDDING_MODEL (e.g. "openai/text-embedding-3-large").');let s={model:e,input:t};i&&/(^|\/)text-embedding-3/.test(e)&&(s.dimensions=i);let u=(o||Vp).replace(/\/+$/,""),f={"Content-Type":"application/json",Authorization:`Bearer ${r}`};n&&(f["HTTP-Referer"]=n),a&&(f["X-Title"]=a);let l=await fetch(`${u}/embeddings`,{method:"POST",headers:f,body:JSON.stringify(s)});if(!l.ok)throw new Error(`OpenRouter embed failed: ${l.status} ${await l.text()}`);return[...(await l.json()).data].sort((g,y)=>g.index-y.index).map(g=>g.embedding)}var Vp,da=c(()=>{Vp="https://openrouter.ai/api/v1"});import{spawn as Xp}from"node:child_process";async function ro(t){if(!Qr[t]){let e=eo[t];if(!e)throw new Error(`Unknown LLM provider: "${t}". Available: ${Object.keys(eo).join(", ")}`);let r=await e();Qr[t]=r.chat}return Qr[t]}async function ha(t){if(!to[t]){let e=ma[t];if(!e)throw new Error(`Unknown embedding provider: "${t}". Available: ${Object.keys(ma).join(", ")}`);let r=await e();to[t]=r.embedBatch}return to[t]}function ga(t,e){if(!t)return{provider:e,model:null};let r=t.indexOf(":");return r>0&&eo[t.slice(0,r)]?{provider:t.slice(0,r),model:t.slice(r+1)}:{provider:e,model:t}}async function ya(){let t=p.llm.ollamaHost||p.embedding.ollamaHost||"http://localhost:11434";try{return(await fetch(`${t}/api/tags`,{signal:AbortSignal.timeout(2e3)})).ok}catch{return!1}}function Zp(){return new Promise(t=>{let e=Xp("claude",["--version"],{stdio:"pipe"});e.on("error",()=>t(!1)),e.on("close",r=>t(r===0)),setTimeout(()=>{e.kill(),t(!1)},3e3)})}async function wa(){if(k)return k;if(p.llm.provider)return k=p.llm.provider,k;if(p.llm.openrouterApiKey)return k="openrouter",k;if(p.llm.apiKey)return k="anthropic",k;if(p.llm.openaiApiKey)return k="openai",k;if(await ya())return k="ollama",k;if(await Zp())return k="claude-cli",k;throw new Error(`No LLM provider available. Either:
25
26
  - Set LLM_PROVIDER (openai, anthropic, openrouter, ollama, claude-cli)
26
27
  - Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY
27
28
  - Start Ollama locally
28
- - Install the Claude CLI (claude)`)}async function Zn(){if(F)return F;if(p.embedding.provider)return F=p.embedding.provider,F;if(p.embedding.voyageApiKey)return F="voyage",F;if(await Xn())return F="ollama",F;if(p.embedding.openaiApiKey)return F="openai",F;if(p.embedding.openrouterApiKey)return F="openrouter",F;throw new Error(`No embedding provider available. Either:
29
+ - Install the Claude CLI (claude)`)}async function _a(){if(F)return F;if(p.embedding.provider)return F=p.embedding.provider,F;if(p.embedding.voyageApiKey)return F="voyage",F;if(await ya())return F="ollama",F;if(p.embedding.openaiApiKey)return F="openai",F;if(p.embedding.openrouterApiKey)return F="openrouter",F;throw new Error(`No embedding provider available. Either:
29
30
  - Set EMBEDDING_PROVIDER (voyage, ollama, openai, openrouter)
30
31
  - Set VOYAGE_API_KEY (recommended \u2014 best quality)
31
32
  - Start Ollama locally
32
33
  - Set OPENAI_API_KEY
33
- - Set OPENROUTER_API_KEY (and EMBEDDING_MODEL like "openai/text-embedding-3-large")`)}var Jr,Jn,Kr,Yr,D,F,Vr=c(()=>{_();Jr={openai:()=>Promise.resolve().then(()=>(Cn(),vn)),anthropic:()=>Promise.resolve().then(()=>(Ln(),Pn)),openrouter:()=>Promise.resolve().then(()=>(Dn(),Rn)),"claude-cli":()=>Promise.resolve().then(()=>(kn(),Mn)),ollama:()=>Promise.resolve().then(()=>(Fn(),Bn))},Jn={ollama:()=>Promise.resolve().then(()=>(Un(),$n)),openai:()=>Promise.resolve().then(()=>(jn(),Hn)),voyage:()=>Promise.resolve().then(()=>(Wn(),Gn)),openrouter:()=>Promise.resolve().then(()=>(Yn(),Kn))},Kr={},Yr={};D=null,F=null});var ta={};A(ta,{parseJson:()=>ke,prompt:()=>ht,promptJson:()=>yt});async function Qn(t){let e=await zn();return Vn(t,e)}async function ht(t,{model:e,caller:r}={}){let{provider:o,model:n}=await Qn(e),a=await qr(o),i=Date.now();try{let s=await jr(()=>a(t,{model:n,jsonMode:!1}),p.llm.maxRetries),f=s.cost||Hr(s.model,s.inputTokens,s.outputTokens);return ae({provider:o,model:s.model,caller:r,input:t,response:s.text,inputTokens:s.inputTokens,outputTokens:s.outputTokens,cost:f,durationMs:Date.now()-i,status:"success"}),s.text}catch(s){throw ae({provider:o,model:n,caller:r,input:t,response:null,inputTokens:0,outputTokens:0,cost:0,durationMs:Date.now()-i,status:"error",error:s.message}),s}}async function yt(t,{model:e,caller:r}={}){let{provider:o,model:n}=await Qn(e),a=await qr(o),i=Date.now();try{let s=await jr(()=>a(t,{model:n,jsonMode:!0}),p.llm.maxRetries),f=s.cost||Hr(s.model,s.inputTokens,s.outputTokens);return ae({provider:o,model:s.model,caller:r,input:t,response:s.text,inputTokens:s.inputTokens,outputTokens:s.outputTokens,cost:f,durationMs:Date.now()-i,status:"success"}),ke(s.text)}catch(s){throw ae({provider:o,model:n,caller:r,input:t,response:null,inputTokens:0,outputTokens:0,cost:0,durationMs:Date.now()-i,status:"error",error:s.message}),s}}function ke(t){try{return JSON.parse(t.trim())}catch{}let e=t.match(/```(?:json)?\s*([\s\S]*?)```/);if(e)try{return JSON.parse(e[1].trim())}catch{}let r=t.match(/[\[{][\s\S]*[\]}]/);if(r)try{return JSON.parse(r[0])}catch{}return null}var ot=c(()=>{_();Vr();ie()});function ea(t){let e=t.split(`
34
- `),r=[],o=null,n=[];for(let s of e){let f=s.match(/^(#{1,6})\s+(.+)/);f?(n.length&&r.push({heading:o||"Introduction",text:n.join(`
35
- `).trim()}),o=f[2].trim(),n=[]):n.push(s)}n.length&&r.push({heading:o||"Content",text:n.join(`
34
+ - Set OPENROUTER_API_KEY (and EMBEDDING_MODEL like "openai/text-embedding-3-large")`)}var eo,ma,Qr,to,k,F,oo=c(()=>{x();eo={openai:()=>Promise.resolve().then(()=>(zn(),Vn)),anthropic:()=>Promise.resolve().then(()=>(Zn(),Xn)),openrouter:()=>Promise.resolve().then(()=>(ea(),ta)),"claude-cli":()=>Promise.resolve().then(()=>(oa(),ra)),ollama:()=>Promise.resolve().then(()=>(aa(),na))},ma={ollama:()=>Promise.resolve().then(()=>(sa(),ia)),openai:()=>Promise.resolve().then(()=>(ua(),ca)),voyage:()=>Promise.resolve().then(()=>(la(),fa)),openrouter:()=>Promise.resolve().then(()=>(da(),pa))},Qr={},to={};k=null,F=null});var Ea={};A(Ea,{parseJson:()=>He,prompt:()=>gt,promptJson:()=>yt});async function xa(t){let e=await wa();return ga(t,e)}async function gt(t,{model:e,caller:r}={}){let{provider:o,model:n}=await xa(e),a=await ro(o),i=Date.now();try{let s=await zr(()=>a(t,{model:n,jsonMode:!1}),p.llm.maxRetries),u=s.cost||Vr(s.model,s.inputTokens,s.outputTokens);return ce({provider:o,model:s.model,caller:r,input:t,response:s.text,inputTokens:s.inputTokens,outputTokens:s.outputTokens,cost:u,durationMs:Date.now()-i,status:"success"}),s.text}catch(s){throw ce({provider:o,model:n,caller:r,input:t,response:null,inputTokens:0,outputTokens:0,cost:0,durationMs:Date.now()-i,status:"error",error:s.message}),s}}async function yt(t,{model:e,caller:r}={}){let{provider:o,model:n}=await xa(e),a=await ro(o),i=Date.now();try{let s=await zr(()=>a(t,{model:n,jsonMode:!0}),p.llm.maxRetries),u=s.cost||Vr(s.model,s.inputTokens,s.outputTokens);return ce({provider:o,model:s.model,caller:r,input:t,response:s.text,inputTokens:s.inputTokens,outputTokens:s.outputTokens,cost:u,durationMs:Date.now()-i,status:"success"}),He(s.text)}catch(s){throw ce({provider:o,model:n,caller:r,input:t,response:null,inputTokens:0,outputTokens:0,cost:0,durationMs:Date.now()-i,status:"error",error:s.message}),s}}function He(t){try{return JSON.parse(t.trim())}catch{}let e=t.match(/```(?:json)?\s*([\s\S]*?)```/);if(e)try{return JSON.parse(e[1].trim())}catch{}let r=t.match(/[\[{][\s\S]*[\]}]/);if(r)try{return JSON.parse(r[0])}catch{}return null}var nt=c(()=>{x();oo();ue()});function ba(t){let e=t.split(`
35
+ `),r=[],o=null,n=[];for(let s of e){let u=s.match(/^(#{1,6})\s+(.+)/);u?(n.length&&r.push({heading:o||"Introduction",text:n.join(`
36
+ `).trim()}),o=u[2].trim(),n=[]):n.push(s)}n.length&&r.push({heading:o||"Content",text:n.join(`
36
37
  `).trim()});let a=r.map(s=>s.text).join(`
37
38
 
38
- `),i=xp(e)||null;return{text:a,sections:r,metadata:{title:i}}}function xp(t){for(let e of t){let r=e.match(/^#\s+(.+)/);if(r)return r[1].trim()}return null}var ra=c(()=>{});function Xr(t){let e=t.split(/\n{2,}/).map(o=>o.trim()).filter(Boolean),r=e.length>1?e.map((o,n)=>({heading:`Section ${n+1}`,text:o})):[{heading:"Content",text:t.trim()}];return{text:t.trim(),sections:r,metadata:{}}}var oa=c(()=>{});function na(t){let e=_p(t),r=t.replace(/<script[\s\S]*?<\/script>/gi,"");return r=r.replace(/<style[\s\S]*?<\/style>/gi,""),r=r.replace(/<\/(p|div|h[1-6]|li|tr|br|hr)>/gi,`
39
+ `),i=Qp(e)||null;return{text:a,sections:r,metadata:{title:i}}}function Qp(t){for(let e of t){let r=e.match(/^#\s+(.+)/);if(r)return r[1].trim()}return null}var Sa=c(()=>{});function no(t){let e=t.split(/\n{2,}/).map(o=>o.trim()).filter(Boolean),r=e.length>1?e.map((o,n)=>({heading:`Section ${n+1}`,text:o})):[{heading:"Content",text:t.trim()}];return{text:t.trim(),sections:r,metadata:{}}}var Aa=c(()=>{});function Ta(t){let e=td(t),r=t.replace(/<script[\s\S]*?<\/script>/gi,"");return r=r.replace(/<style[\s\S]*?<\/style>/gi,""),r=r.replace(/<\/(p|div|h[1-6]|li|tr|br|hr)>/gi,`
39
40
  `),r=r.replace(/<br\s*\/?>/gi,`
40
41
  `),r=r.replace(/<[^>]+>/g,""),r=r.replace(/&amp;/g,"&"),r=r.replace(/&lt;/g,"<"),r=r.replace(/&gt;/g,">"),r=r.replace(/&quot;/g,'"'),r=r.replace(/&#39;/g,"'"),r=r.replace(/&nbsp;/g," "),r=r.replace(/[ \t]+/g," "),r=r.replace(/\n{3,}/g,`
41
42
 
42
- `),r=r.trim(),{text:r,sections:[{heading:"Content",text:r}],metadata:{title:e}}}function _p(t){let e=t.match(/<title[^>]*>([\s\S]*?)<\/title>/i);return e?e[1].trim():null}var aa=c(()=>{});function ia(t,{language:e}={}){let r=e||Sp(t),o=Ep(t,r);return{text:t.trim(),sections:o,metadata:{language:r}}}function Ep(t,e){let r=t.split(`
43
- `),o=[],n="Header",a=[],i=!1,s=0;for(let f of r){let u=bp(f,e);u&&s===0?(a.length&&o.push({heading:n,text:a.join(`
44
- `).trim()}),n=u,a=[f],i=!0):a.push(f);for(let l of f)l==="{"&&s++,l==="}"&&(s=Math.max(0,s-1))}return a.length&&o.push({heading:n,text:a.join(`
45
- `).trim()}),o.length<=1?Ap(t):o.filter(f=>f.text)}function bp(t,e){let r=t.trim(),o=[/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\(/,/^(?:export\s+)?class\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*\{/,/^(?:export\s+default\s+)/],n=[/^(?:async\s+)?def\s+(\w+)/,/^class\s+(\w+)/],a=[/^func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/,/^type\s+(\w+)/],i=[...o,...n,...a];for(let s of i){let f=r.match(s);if(f)return f[1]||f[0].slice(0,40)}return null}function Ap(t){return t.split(/\n{2,}/).map((r,o)=>({heading:`Block ${o+1}`,text:r.trim()})).filter(r=>r.text)}function Sp(t){return t.includes("import ")&&(t.includes("from ")||t.includes("require("))?"javascript":t.match(/^def\s/m)||t.match(/^class\s.*:/m)?"python":t.match(/^func\s/m)||t.includes("package ")?"go":t.match(/^fn\s/m)||t.includes("use ")?"rust":"unknown"}var sa=c(()=>{});function ca(t){let e;try{e=typeof t=="string"?JSON.parse(t):t}catch{return{text:t,sections:[{heading:"Content",text:t}],metadata:{}}}let r=zr(e);return{text:r,sections:[{heading:"Content",text:r}],metadata:{}}}function zr(t,e=0){if(t==null)return"";if(Array.isArray(t))return t.map((r,o)=>typeof r=="object"&&r!==null?`Item ${o+1}:
46
- ${zr(r,e+1)}`:`- ${r}`).join(`
43
+ `),r=r.trim(),{text:r,sections:[{heading:"Content",text:r}],metadata:{title:e}}}function td(t){let e=t.match(/<title[^>]*>([\s\S]*?)<\/title>/i);return e?e[1].trim():null}var Ia=c(()=>{});function Oa(t,{language:e}={}){let r=e||nd(t),o=ed(t,r);return{text:t.trim(),sections:o,metadata:{language:r}}}function ed(t,e){let r=t.split(`
44
+ `),o=[],n="Header",a=[],i=!1,s=0;for(let u of r){let f=rd(u,e);f&&s===0?(a.length&&o.push({heading:n,text:a.join(`
45
+ `).trim()}),n=f,a=[u],i=!0):a.push(u);for(let l of u)l==="{"&&s++,l==="}"&&(s=Math.max(0,s-1))}return a.length&&o.push({heading:n,text:a.join(`
46
+ `).trim()}),o.length<=1?od(t):o.filter(u=>u.text)}function rd(t,e){let r=t.trim(),o=[/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\(/,/^(?:export\s+)?class\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*\{/,/^(?:export\s+default\s+)/],n=[/^(?:async\s+)?def\s+(\w+)/,/^class\s+(\w+)/],a=[/^func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/,/^type\s+(\w+)/],i=[...o,...n,...a];for(let s of i){let u=r.match(s);if(u)return u[1]||u[0].slice(0,40)}return null}function od(t){return t.split(/\n{2,}/).map((r,o)=>({heading:`Block ${o+1}`,text:r.trim()})).filter(r=>r.text)}function nd(t){return t.includes("import ")&&(t.includes("from ")||t.includes("require("))?"javascript":t.match(/^def\s/m)||t.match(/^class\s.*:/m)?"python":t.match(/^func\s/m)||t.includes("package ")?"go":t.match(/^fn\s/m)||t.includes("use ")?"rust":"unknown"}var va=c(()=>{});function Ca(t){let e;try{e=typeof t=="string"?JSON.parse(t):t}catch{return{text:t,sections:[{heading:"Content",text:t}],metadata:{}}}let r=ao(e);return{text:r,sections:[{heading:"Content",text:r}],metadata:{}}}function ao(t,e=0){if(t==null)return"";if(Array.isArray(t))return t.map((r,o)=>typeof r=="object"&&r!==null?`Item ${o+1}:
47
+ ${ao(r,e+1)}`:`- ${r}`).join(`
47
48
  `);if(typeof t=="object"){let r=" ".repeat(e);return Object.entries(t).filter(([,o])=>o!=null).map(([o,n])=>typeof n=="object"?`${r}${o}:
48
- ${zr(n,e+1)}`:`${r}${o}: ${n}`).join(`
49
- `)}return String(t)}var fa=c(()=>{});function ua(t,{format:e,filePath:r,contentType:o}={}){let n=e||vp(o)||Cp(r)||Pp(t);return(Ip[n]||Xr)(t)}function vp(t){if(!t)return null;let e=t.split(";")[0].trim();return Op[e]||null}function Cp(t){if(!t)return null;let e=t.match(/\.[^.]+$/)?.[0]?.toLowerCase();return e&&Tp[e]||null}function Pp(t){if(!t)return"text";let e=t.trim();return e.startsWith("{")||e.startsWith("[")?"json":e.startsWith("<!DOCTYPE")||e.startsWith("<html")?"html":e.match(/^#{1,6}\s/m)?"markdown":e.match(/^(import|export|function|class|const|let|var|def|func|package)\s/m)?"code":"text"}var Tp,Op,Ip,la=c(()=>{ra();oa();aa();sa();fa();Tp={".md":"markdown",".mdx":"markdown",".txt":"text",".html":"html",".htm":"html",".json":"json",".js":"code",".ts":"code",".jsx":"code",".tsx":"code",".py":"code",".go":"code",".rs":"code",".java":"code",".rb":"code",".php":"code",".c":"code",".cpp":"code",".h":"code",".cs":"code",".swift":"code",".kt":"code",".yaml":"text",".yml":"text",".toml":"text",".ini":"text",".cfg":"text",".env":"text",".csv":"text",".sql":"code",".sh":"code",".bash":"code",".zsh":"code"},Op={"text/markdown":"markdown","text/html":"html","text/plain":"text","application/json":"json","text/javascript":"code","application/javascript":"code","text/x-python":"code"},Ip={markdown:ea,text:Xr,html:na,code:ia,json:ca}});function Lp(t,{maxTokens:e=512,overlapTokens:r=50}={}){if(!t?.trim())return[];let o=e*4,n=r*4;if(t.length<=o)return[{content:t.trim(),index:0}];let a=Np(t),i=[],s="",f="";for(let u of a){if(u.length>o){s.trim()&&(i.push({content:s.trim(),index:i.length}),f=Zr(s,n),s="");let l=Rp(u,o,n);for(let h of l)i.push({content:h.trim(),index:i.length});f=Zr(i[i.length-1].content,n);continue}(s+u).length>o?(i.push({content:s.trim(),index:i.length}),f=Zr(s,n),s=f+u):s+=u}return s.trim()&&i.push({content:s.trim(),index:i.length}),i}function pa(t,e={}){let r=[];for(let{heading:o,text:n}of t){if(!n?.trim())continue;let a=Lp(n,e);for(let i of a)r.push({content:i.content,index:r.length,sectionHeading:o})}return r}function Np(t){return t.split(/(?<=[.!?])\s+|(?<=\n)\s*/).filter(r=>r.trim())}function Rp(t,e,r){let o=[],n=0;for(;n<t.length;){let a=Math.min(n+e,t.length);if(o.push(t.slice(n,a)),n=a-r,n>=t.length)break}return o}function Zr(t,e){if(t.length<=e)return t;let r=t.slice(-e),o=r.search(/[.!?]\s+/);return o!==-1?r.slice(o+1).trimStart():r}var da=c(()=>{});function $(t){return t?`[${t.join(",")}]`:null}function ma(){let t=Number(p.embedding.dimensions)||768;if(!Number.isInteger(t)||t<=0)throw new Error(`Invalid EMBEDDING_DIMENSIONS: ${p.embedding.dimensions}`);return t}function It(t="embedding"){return`(${t}::halfvec(${ma()}))`}function vt(){return`?::halfvec(${ma()})`}var Ct=c(()=>{_()});import{createHash as Dp}from"node:crypto";function kp(t,e,r,o="document"){let n=Dp("sha256");return n.update(t),n.update("\0"),n.update(e),n.update("\0"),n.update(o),n.update("\0"),n.update(r),n.digest("hex")}async function Bp(t){if(!t.length)return new Map;let e=await m("embedding_cache").whereIn("key",t).select("key","embedding");return new Map(e.map(r=>[r.key,Fp(r.embedding)]))}function Fp(t){return Array.isArray(t)||typeof t!="string"?t:(t.startsWith("[")?t.slice(1,-1):t).split(",").map(Number)}async function $p(t){t.length&&await m("embedding_cache").whereIn("key",t).update({hits:m.raw("hits + 1"),lastUsedAt:m.fn.now()})}async function Up(t,e,r){if(t.length){for(let{key:o,embedding:n}of t)await m.raw(`
49
+ ${ao(n,e+1)}`:`${r}${o}: ${n}`).join(`
50
+ `)}return String(t)}var Ra=c(()=>{});function La(t,{format:e,filePath:r,contentType:o}={}){let n=e||cd(o)||ud(r)||fd(t);return(sd[n]||no)(t)}function cd(t){if(!t)return null;let e=t.split(";")[0].trim();return id[e]||null}function ud(t){if(!t)return null;let e=t.match(/\.[^.]+$/)?.[0]?.toLowerCase();return e&&ad[e]||null}function fd(t){if(!t)return"text";let e=t.trim();return e.startsWith("{")||e.startsWith("[")?"json":e.startsWith("<!DOCTYPE")||e.startsWith("<html")?"html":e.match(/^#{1,6}\s/m)?"markdown":e.match(/^(import|export|function|class|const|let|var|def|func|package)\s/m)?"code":"text"}var ad,id,sd,Na=c(()=>{Sa();Aa();Ia();va();Ra();ad={".md":"markdown",".mdx":"markdown",".txt":"text",".html":"html",".htm":"html",".json":"json",".js":"code",".ts":"code",".jsx":"code",".tsx":"code",".py":"code",".go":"code",".rs":"code",".java":"code",".rb":"code",".php":"code",".c":"code",".cpp":"code",".h":"code",".cs":"code",".swift":"code",".kt":"code",".yaml":"text",".yml":"text",".toml":"text",".ini":"text",".cfg":"text",".env":"text",".csv":"text",".sql":"code",".sh":"code",".bash":"code",".zsh":"code"},id={"text/markdown":"markdown","text/html":"html","text/plain":"text","application/json":"json","text/javascript":"code","application/javascript":"code","text/x-python":"code"},sd={markdown:ba,text:no,html:Ta,code:Oa,json:Ca}});function ld(t,{maxTokens:e=512,overlapTokens:r=50}={}){if(!t?.trim())return[];let o=e*4,n=r*4;if(t.length<=o)return[{content:t.trim(),index:0}];let a=pd(t),i=[],s="",u="";for(let f of a){if(f.length>o){s.trim()&&(i.push({content:s.trim(),index:i.length}),u=io(s,n),s="");let l=dd(f,o,n);for(let h of l)i.push({content:h.trim(),index:i.length});u=io(i[i.length-1].content,n);continue}(s+f).length>o?(i.push({content:s.trim(),index:i.length}),u=io(s,n),s=u+f):s+=f}return s.trim()&&i.push({content:s.trim(),index:i.length}),i}function Da(t,e={}){let r=[];for(let{heading:o,text:n}of t){if(!n?.trim())continue;let a=ld(n,e);for(let i of a)r.push({content:i.content,index:r.length,sectionHeading:o})}return r}function pd(t){return t.split(/(?<=[.!?])\s+|(?<=\n)\s*/).filter(r=>r.trim())}function dd(t,e,r){let o=[],n=0;for(;n<t.length;){let a=Math.min(n+e,t.length);if(o.push(t.slice(n,a)),n=a-r,n>=t.length)break}return o}function io(t,e){if(t.length<=e)return t;let r=t.slice(-e),o=r.search(/[.!?]\s+/);return o!==-1?r.slice(o+1).trimStart():r}var tb,Pa=c(()=>{tb=Object.freeze({version:3,size:512,overlap:50,contextualPrefix:!0})});function U(t){return t?`[${t.join(",")}]`:null}function Ma(){let t=Number(p.embedding.dimensions)||768;if(!Number.isInteger(t)||t<=0)throw new Error(`Invalid EMBEDDING_DIMENSIONS: ${p.embedding.dimensions}`);return t}function Rt(t="embedding"){return`(${t}::halfvec(${Ma()}))`}function Lt(){return`?::halfvec(${Ma()})`}var Nt=c(()=>{x()});import{createHash as md}from"node:crypto";function gd(t,e,r,o="document"){let n=md("sha256");return n.update(t),n.update("\0"),n.update(e),n.update("\0"),n.update(o),n.update("\0"),n.update(r),n.digest("hex")}async function yd(t){if(!t.length)return new Map;let e=await m("embedding_cache").whereIn("key",t).select("key","embedding");return new Map(e.map(r=>[r.key,wd(r.embedding)]))}function wd(t){return Array.isArray(t)||typeof t!="string"?t:(t.startsWith("[")?t.slice(1,-1):t).split(",").map(Number)}async function _d(t){t.length&&await m("embedding_cache").whereIn("key",t).update({hits:m.raw("hits + 1"),lastUsedAt:m.fn.now()})}async function xd(t,e,r){if(t.length){for(let{key:o,embedding:n}of t)await m.raw(`
50
51
  INSERT INTO embedding_cache (key, provider, model, embedding, hits, created_at, last_used_at)
51
52
  VALUES (?, ?, ?, ?, 0, NOW(), NOW())
52
53
  ON CONFLICT (key) DO UPDATE
53
54
  SET last_used_at = NOW(),
54
55
  hits = embedding_cache.hits + 1
55
- `,[o,e,r,$(n)]);await jp()}}async function jp(){let t=Date.now();if(t-ya<Hp)return;ya=t;let[{count:e}]=await m("embedding_cache").count("key as count"),r=Number(e);if(r<=ha)return;let o=Math.min(r-ha,Mp);await m.raw(`
56
+ `,[o,e,r,U(n)]);await bd()}}async function bd(){let t=Date.now();if(t-Ba<Ed)return;Ba=t;let[{count:e}]=await m("embedding_cache").count("key as count"),r=Number(e);if(r<=ka)return;let o=Math.min(r-ka,hd);await m.raw(`
56
57
  DELETE FROM embedding_cache WHERE key IN (
57
58
  SELECT key FROM embedding_cache ORDER BY last_used_at ASC LIMIT ?
58
59
  )
59
- `,[o])}async function ga(t,e,r,o,n,a={}){if(!t.length)return[];let i=a.inputType||n?.inputType||"document",s=t.map(y=>kp(e,r,y,i)),f=await Bp(s),u=[],l=[],h=new Array(t.length);for(let y=0;y<t.length;y++){let g=f.get(s[y]);g?h[y]=g:(u.push(t[y]),l.push(y))}if(u.length){let y=await o(u,n),g=[];for(let w=0;w<u.length;w++){let x=l[w];h[x]=y[w],g.push({key:s[x],embedding:y[w]})}Up(g,e,r).catch(w=>{process.stderr.write(`[embedding-cache] store failed: ${w.message}
60
- `)})}let d=s.filter(y=>f.has(y));return d.length&&$p(d).catch(()=>{}),h}var ha,Mp,ya,Hp,wa=c(()=>{Ct();S();ha=1e4,Mp=500;ya=0,Hp=6e4});async function Be(t,e={}){let[r]=await se([t],e);return r}async function se(t,{inputType:e="document"}={}){if(!t.length)return[];let r=await Zn(),o=await qn(r),n=p.embedding.model,a={...p.embedding,inputType:e};return ga(t,r,n,o,a,{inputType:e})}var eE,Fe=c(()=>{_();Vr();wa();({dimensions:eE}=p.embedding)});import{readFile as Gp}from"node:fs/promises";import{join as Wp}from"node:path";async function xa(t,e,{title:r}){if(!t.length)return t;let o=await Gp(Kp,"utf8"),n=t.map((i,s)=>`Chunk ${s+1}: ${i.content.slice(0,200)}`),a=`${o}
60
+ `,[o])}async function $a(t,e,r,o,n,a={}){if(!t.length)return[];let i=a.inputType||n?.inputType||"document",s=t.map(g=>gd(e,r,g,i)),u=await yd(s),f=[],l=[],h=new Array(t.length);for(let g=0;g<t.length;g++){let y=u.get(s[g]);y?h[g]=y:(f.push(t[g]),l.push(g))}if(f.length){let g=await o(f,n),y=[];for(let _=0;_<f.length;_++){let w=l[_];h[w]=g[_],y.push({key:s[w],embedding:g[_]})}xd(y,e,r).catch(_=>{process.stderr.write(`[embedding-cache] store failed: ${_.message}
61
+ `)})}let d=s.filter(g=>u.has(g));return d.length&&_d(d).catch(()=>{}),h}var ka,hd,Ba,Ed,Fa=c(()=>{Nt();I();ka=1e4,hd=500;Ba=0,Ed=6e4});async function Ge(t,e={}){let[r]=await fe([t],e);return r}async function fe(t,{inputType:e="document"}={}){if(!t.length)return[];let r=await _a(),o=await ha(r),n=p.embedding.model,a={...p.embedding,inputType:e};return $a(t,r,n,o,a,{inputType:e})}var lb,Ke=c(()=>{x();oo();Fa();({dimensions:lb}=p.embedding)});import{readFile as Sd}from"node:fs/promises";import{join as Ad}from"node:path";async function Ua(t,e,{title:r}){if(!t.length)return t;let o=await Sd(Td,"utf8"),n=t.map((i,s)=>`Chunk ${s+1}: ${i.content.slice(0,200)}`),a=`${o}
61
62
 
62
63
  ---
63
64
 
@@ -72,7 +73,7 @@ ${n.join(`
72
73
 
73
74
  ---
74
75
 
75
- Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=await yt(a,{model:p.llm.extractionModel,caller:"contextualizer"}),s=Array.isArray(i)?i:i&&typeof i=="object"?Object.values(i).find(u=>Array.isArray(u))??null:null;if(!s)return console.warn("[contextualizer] LLM did not return an array \u2014 skipping"),t;let f=s;return f.length!==t.length&&console.warn(`[contextualizer] Got ${f.length} prefixes for ${t.length} chunks \u2014 using partial`),t.map((u,l)=>({...u,contextualPrefix:typeof f[l]=="string"?f[l]:null}))}catch(i){return console.error("[contextualizer] Failed:",i.message),t}}var Kp,_a=c(()=>{ot();_();B();Kp=Wp(q,"chunk-context.md")});async function Ea({sourcePath:t,sourceType:e,title:r=null,contentHash:o,namespace:n}){let a=`doc-${rt(16)}`,{rows:[i]}=await m.raw(`
76
+ Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=await yt(a,{model:p.llm.extractionModel,caller:"contextualizer"}),s=Array.isArray(i)?i:i&&typeof i=="object"?Object.values(i).find(f=>Array.isArray(f))??null:null;if(!s)return console.warn("[contextualizer] LLM did not return an array \u2014 skipping"),t;let u=s;return u.length!==t.length&&console.warn(`[contextualizer] Got ${u.length} prefixes for ${t.length} chunks \u2014 using partial`),t.map((f,l)=>({...f,contextualPrefix:typeof u[l]=="string"?u[l]:null}))}catch(i){return console.error("[contextualizer] Failed:",i.message),t}}var Td,ja=c(()=>{nt();x();$();Td=Ad(z,"chunk-context.md")});async function Ha({sourcePath:t,sourceType:e,title:r=null,contentHash:o,namespace:n}){let a=`doc-${X(16)}`,{rows:[i]}=await m.raw(`
76
77
  INSERT INTO document (uid, source_path, source_type, title, content_hash, namespace, last_ingested_at, created_at, updated_at)
77
78
  VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW(), NOW())
78
79
  ON CONFLICT (source_path, namespace) DO UPDATE SET
@@ -81,12 +82,12 @@ Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=awai
81
82
  last_ingested_at = NOW(),
82
83
  updated_at = NOW()
83
84
  RETURNING *, (xmax = 0) AS "isNew", content_hash != ? AS "contentChanged"
84
- `,[a,t,e,r,o,n,o]),f=i.isNew||i.contentChanged;return{doc:i,changed:f}}async function Qr(t,{chunkCount:e,factCount:r}){await m("document").where({id:t}).update({chunkCount:e,factCount:r})}async function ba(t){await m("document").where({id:t}).update({contentHash:null})}async function Aa(t,e,r=null){if(!e&&!r)return;let o={};e&&Object.keys(e).length&&(o.sourceMetadata=JSON.stringify(e)),r&&(o.connectionId=r),Object.keys(o).length&&await m("document").where({id:t}).update(o)}var Sa=c(()=>{Zt();S()});async function Ta(t,e,r){if(await m("chunk").where({documentId:t}).del(),!e.length)return[];let o=e.map((a,i)=>({documentId:t,chunkIndex:i,content:a.content,contextualPrefix:a.contextualPrefix||null,sectionHeading:a.sectionHeading||null,namespace:r,embedding:$(a.embedding)})),n=await m("chunk").insert(o).returning("*");return await m.raw(`
85
+ `,[a,t,e,r,o,n,o]),u=i.isNew||i.contentChanged;return{doc:i,changed:u}}async function so(t,{chunkCount:e,factCount:r}){await m("document").where({id:t}).update({chunkCount:e,factCount:r})}async function Ga(t){await m("document").where({id:t}).update({contentHash:null})}async function Ka(t,e,r=null){if(!e&&!r)return;let o={};e&&Object.keys(e).length&&(o.sourceMetadata=JSON.stringify(e)),r&&(o.connectionId=r),Object.keys(o).length&&await m("document").where({id:t}).update(o)}var Wa=c(()=>{Tt();I()});async function Ya(t,e,r){if(await m("chunk").where({documentId:t}).del(),!e.length)return[];let o=e.map((a,i)=>({documentId:t,chunkIndex:i,content:a.content,contextualPrefix:a.contextualPrefix||null,sectionHeading:a.sectionHeading||null,namespace:r,embedding:U(a.embedding)})),n=await m("chunk").insert(o).returning("*");return await m.raw(`
85
86
  UPDATE chunk
86
87
  SET search_vector = to_tsvector('english', COALESCE(contextual_prefix, '') || ' ' || content)
87
88
  WHERE document_id = ?
88
- `,[t]),n}var Oa=c(()=>{S();Ct()});var qp,$e,to=c(()=>{qp=typeof global=="object"&&global&&global.Object===Object&&global,$e=qp});var Vp,Xp,O,V=c(()=>{to();Vp=typeof self=="object"&&self&&self.Object===Object&&self,Xp=$e||Vp||Function("return this")(),O=Xp});var zp,L,Pt=c(()=>{V();zp=O.Symbol,L=zp});function td(t){var e=Zp.call(t,ce),r=t[ce];try{t[ce]=void 0;var o=!0}catch{}var n=Qp.call(t);return o&&(e?t[ce]=r:delete t[ce]),n}var Ia,Zp,Qp,ce,va,Ca=c(()=>{Pt();Ia=Object.prototype,Zp=Ia.hasOwnProperty,Qp=Ia.toString,ce=L?L.toStringTag:void 0;va=td});function od(t){return rd.call(t)}var ed,rd,Pa,La=c(()=>{ed=Object.prototype,rd=ed.toString;Pa=od});function id(t){return t==null?t===void 0?ad:nd:Na&&Na in Object(t)?va(t):Pa(t)}var nd,ad,Na,W,Lt=c(()=>{Pt();Ca();La();nd="[object Null]",ad="[object Undefined]",Na=L?L.toStringTag:void 0;W=id});function sd(t){return t!=null&&typeof t=="object"}var K,Nt=c(()=>{K=sd});function fd(t){return typeof t=="symbol"||K(t)&&W(t)==cd}var cd,Y,Rt=c(()=>{Lt();Nt();cd="[object Symbol]";Y=fd});function ud(t,e){for(var r=-1,o=t==null?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n}var Dt,eo=c(()=>{Dt=ud});var ld,b,U=c(()=>{ld=Array.isArray,b=ld});function Ma(t){if(typeof t=="string")return t;if(b(t))return Dt(t,Ma)+"";if(Y(t))return Da?Da.call(t):"";var e=t+"";return e=="0"&&1/t==-pd?"-0":e}var pd,Ra,Da,ka,Ba=c(()=>{Pt();eo();U();Rt();pd=1/0,Ra=L?L.prototype:void 0,Da=Ra?Ra.toString:void 0;ka=Ma});function md(t){for(var e=t.length;e--&&dd.test(t.charAt(e)););return e}var dd,Fa,$a=c(()=>{dd=/\s/;Fa=md});function yd(t){return t&&t.slice(0,Fa(t)+1).replace(hd,"")}var hd,Ua,Ha=c(()=>{$a();hd=/^\s+/;Ua=yd});function gd(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var J,Mt=c(()=>{J=gd});function bd(t){if(typeof t=="number")return t;if(Y(t))return ja;if(J(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=J(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Ua(t);var r=xd.test(t);return r||_d.test(t)?Ed(t.slice(2),r?2:8):wd.test(t)?ja:+t}var ja,wd,xd,_d,Ed,Ga,Wa=c(()=>{Ha();Mt();Rt();ja=NaN,wd=/^[-+]0x[0-9a-f]+$/i,xd=/^0b[01]+$/i,_d=/^0o[0-7]+$/i,Ed=parseInt;Ga=bd});function Sd(t){if(!t)return t===0?t:0;if(t=Ga(t),t===Ka||t===-Ka){var e=t<0?-1:1;return e*Ad}return t===t?t:0}var Ka,Ad,Ya,Ja=c(()=>{Wa();Ka=1/0,Ad=17976931348623157e292;Ya=Sd});function Td(t){var e=Ya(t),r=e%1;return e===e?r?e-r:e:0}var qa,Va=c(()=>{Ja();qa=Td});function Od(t){return t}var nt,fe=c(()=>{nt=Od});function Ld(t){if(!J(t))return!1;var e=W(t);return e==vd||e==Cd||e==Id||e==Pd}var Id,vd,Cd,Pd,Ue,ro=c(()=>{Lt();Mt();Id="[object AsyncFunction]",vd="[object Function]",Cd="[object GeneratorFunction]",Pd="[object Proxy]";Ue=Ld});var Nd,He,Xa=c(()=>{V();Nd=O["__core-js_shared__"],He=Nd});function Rd(t){return!!za&&za in t}var za,Za,Qa=c(()=>{Xa();za=(function(){var t=/[^.]+$/.exec(He&&He.keys&&He.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();Za=Rd});function kd(t){if(t!=null){try{return Md.call(t)}catch{}try{return t+""}catch{}}return""}var Dd,Md,Z,oo=c(()=>{Dd=Function.prototype,Md=Dd.toString;Z=kd});function Wd(t){if(!J(t)||Za(t))return!1;var e=Ue(t)?Gd:Fd;return e.test(Z(t))}var Bd,Fd,$d,Ud,Hd,jd,Gd,ti,ei=c(()=>{ro();Qa();Mt();oo();Bd=/[\\^$.*+?()[\]{}|]/g,Fd=/^\[object .+?Constructor\]$/,$d=Function.prototype,Ud=Object.prototype,Hd=$d.toString,jd=Ud.hasOwnProperty,Gd=RegExp("^"+Hd.call(jd).replace(Bd,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");ti=Wd});function Kd(t,e){return t?.[e]}var ri,oi=c(()=>{ri=Kd});function Yd(t,e){var r=ri(t,e);return ti(r)?r:void 0}var M,at=c(()=>{ei();oi();M=Yd});var Jd,je,ni=c(()=>{at();V();Jd=M(O,"WeakMap"),je=Jd});function qd(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var ai,ii=c(()=>{ai=qd});function Vd(){}var si,ci=c(()=>{si=Vd});function Qd(t){var e=0,r=0;return function(){var o=Zd(),n=zd-(o-r);if(r=o,n>0){if(++e>=Xd)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var Xd,zd,Zd,fi,ui=c(()=>{Xd=800,zd=16,Zd=Date.now;fi=Qd});function tm(t){return function(){return t}}var li,pi=c(()=>{li=tm});var em,kt,no=c(()=>{at();em=(function(){try{var t=M(Object,"defineProperty");return t({},"",{}),t}catch{}})(),kt=em});var rm,di,mi=c(()=>{pi();no();fe();rm=kt?function(t,e){return kt(t,"toString",{configurable:!0,enumerable:!1,value:li(e),writable:!0})}:nt,di=rm});var om,hi,yi=c(()=>{mi();ui();om=fi(di),hi=om});function nm(t,e,r,o){for(var n=t.length,a=r+(o?1:-1);o?a--:++a<n;)if(e(t[a],a,t))return a;return-1}var gi,wi=c(()=>{gi=nm});function am(t){return t!==t}var xi,_i=c(()=>{xi=am});function im(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1}var Ei,bi=c(()=>{Ei=im});function sm(t,e,r){return e===e?Ei(t,e,r):gi(t,xi,r)}var Ai,Si=c(()=>{wi();_i();bi();Ai=sm});function cm(t,e){var r=t==null?0:t.length;return!!r&&Ai(t,e,0)>-1}var Ti,Oi=c(()=>{Si();Ti=cm});function lm(t,e){var r=typeof t;return e=e??fm,!!e&&(r=="number"||r!="symbol"&&um.test(t))&&t>-1&&t%1==0&&t<e}var fm,um,Bt,Ge=c(()=>{fm=9007199254740991,um=/^(?:0|[1-9]\d*)$/;Bt=lm});function pm(t,e,r){e=="__proto__"&&kt?kt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var Ii,vi=c(()=>{no();Ii=pm});function dm(t,e){return t===e||t!==t&&e!==e}var Ft,We=c(()=>{Ft=dm});function mm(t,e,r){return e=Ci(e===void 0?t.length-1:e,0),function(){for(var o=arguments,n=-1,a=Ci(o.length-e,0),i=Array(a);++n<a;)i[n]=o[e+n];n=-1;for(var s=Array(e+1);++n<e;)s[n]=o[n];return s[e]=r(i),ai(t,this,s)}}var Ci,Pi,Li=c(()=>{ii();Ci=Math.max;Pi=mm});function hm(t,e){return hi(Pi(t,e,nt),t+"")}var Ni,Ri=c(()=>{fe();Li();yi();Ni=hm});function gm(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=ym}var ym,$t,Ke=c(()=>{ym=9007199254740991;$t=gm});function wm(t){return t!=null&&$t(t.length)&&!Ue(t)}var it,ue=c(()=>{ro();Ke();it=wm});function xm(t,e,r){if(!J(r))return!1;var o=typeof e;return(o=="number"?it(r)&&Bt(e,r.length):o=="string"&&e in r)?Ft(r[e],t):!1}var le,ao=c(()=>{We();ue();Ge();Mt();le=xm});function Em(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||_m;return t===r}var _m,Di,Mi=c(()=>{_m=Object.prototype;Di=Em});function bm(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var ki,Bi=c(()=>{ki=bm});function Sm(t){return K(t)&&W(t)==Am}var Am,io,Fi=c(()=>{Lt();Nt();Am="[object Arguments]";io=Sm});var $i,Tm,Om,Im,Ut,Ye=c(()=>{Fi();Nt();$i=Object.prototype,Tm=$i.hasOwnProperty,Om=$i.propertyIsEnumerable,Im=io((function(){return arguments})())?io:function(t){return K(t)&&Tm.call(t,"callee")&&!Om.call(t,"callee")},Ut=Im});function vm(){return!1}var Ui,Hi=c(()=>{Ui=vm});var Wi,ji,Cm,Gi,Pm,Lm,pe,so=c(()=>{V();Hi();Wi=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ji=Wi&&typeof module=="object"&&module&&!module.nodeType&&module,Cm=ji&&ji.exports===Wi,Gi=Cm?O.Buffer:void 0,Pm=Gi?Gi.isBuffer:void 0,Lm=Pm||Ui,pe=Lm});function rh(t){return K(t)&&$t(t.length)&&!!E[W(t)]}var Nm,Rm,Dm,Mm,km,Bm,Fm,$m,Um,Hm,jm,Gm,Wm,Km,Ym,Jm,qm,Vm,Xm,zm,Zm,Qm,th,eh,E,Ki,Yi=c(()=>{Lt();Ke();Nt();Nm="[object Arguments]",Rm="[object Array]",Dm="[object Boolean]",Mm="[object Date]",km="[object Error]",Bm="[object Function]",Fm="[object Map]",$m="[object Number]",Um="[object Object]",Hm="[object RegExp]",jm="[object Set]",Gm="[object String]",Wm="[object WeakMap]",Km="[object ArrayBuffer]",Ym="[object DataView]",Jm="[object Float32Array]",qm="[object Float64Array]",Vm="[object Int8Array]",Xm="[object Int16Array]",zm="[object Int32Array]",Zm="[object Uint8Array]",Qm="[object Uint8ClampedArray]",th="[object Uint16Array]",eh="[object Uint32Array]",E={};E[Jm]=E[qm]=E[Vm]=E[Xm]=E[zm]=E[Zm]=E[Qm]=E[th]=E[eh]=!0;E[Nm]=E[Rm]=E[Km]=E[Dm]=E[Ym]=E[Mm]=E[km]=E[Bm]=E[Fm]=E[$m]=E[Um]=E[Hm]=E[jm]=E[Gm]=E[Wm]=!1;Ki=rh});function oh(t){return function(e){return t(e)}}var Je,co=c(()=>{Je=oh});var Ji,de,nh,fo,ah,uo,qi=c(()=>{to();Ji=typeof exports=="object"&&exports&&!exports.nodeType&&exports,de=Ji&&typeof module=="object"&&module&&!module.nodeType&&module,nh=de&&de.exports===Ji,fo=nh&&$e.process,ah=(function(){try{var t=de&&de.require&&de.require("util").types;return t||fo&&fo.binding&&fo.binding("util")}catch{}})(),uo=ah});var Vi,ih,qe,lo=c(()=>{Yi();co();qi();Vi=uo&&uo.isTypedArray,ih=Vi?Je(Vi):Ki,qe=ih});function fh(t,e){var r=b(t),o=!r&&Ut(t),n=!r&&!o&&pe(t),a=!r&&!o&&!n&&qe(t),i=r||o||n||a,s=i?ki(t.length,String):[],f=s.length;for(var u in t)(e||ch.call(t,u))&&!(i&&(u=="length"||n&&(u=="offset"||u=="parent")||a&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Bt(u,f)))&&s.push(u);return s}var sh,ch,Xi,zi=c(()=>{Bi();Ye();U();so();Ge();lo();sh=Object.prototype,ch=sh.hasOwnProperty;Xi=fh});function uh(t,e){return function(r){return t(e(r))}}var Zi,Qi=c(()=>{Zi=uh});var lh,ts,es=c(()=>{Qi();lh=Zi(Object.keys,Object),ts=lh});function mh(t){if(!Di(t))return ts(t);var e=[];for(var r in Object(t))dh.call(t,r)&&r!="constructor"&&e.push(r);return e}var ph,dh,rs,os=c(()=>{Mi();es();ph=Object.prototype,dh=ph.hasOwnProperty;rs=mh});function hh(t){return it(t)?Xi(t):rs(t)}var Ht,Ve=c(()=>{zi();os();ue();Ht=hh});function wh(t,e){if(b(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Y(t)?!0:gh.test(t)||!yh.test(t)||e!=null&&t in Object(e)}var yh,gh,jt,Xe=c(()=>{U();Rt();yh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,gh=/^\w*$/;jt=wh});var xh,Q,me=c(()=>{at();xh=M(Object,"create"),Q=xh});function _h(){this.__data__=Q?Q(null):{},this.size=0}var ns,as=c(()=>{me();ns=_h});function Eh(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var is,ss=c(()=>{is=Eh});function Th(t){var e=this.__data__;if(Q){var r=e[t];return r===bh?void 0:r}return Sh.call(e,t)?e[t]:void 0}var bh,Ah,Sh,cs,fs=c(()=>{me();bh="__lodash_hash_undefined__",Ah=Object.prototype,Sh=Ah.hasOwnProperty;cs=Th});function vh(t){var e=this.__data__;return Q?e[t]!==void 0:Ih.call(e,t)}var Oh,Ih,us,ls=c(()=>{me();Oh=Object.prototype,Ih=Oh.hasOwnProperty;us=vh});function Ph(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Q&&e===void 0?Ch:e,this}var Ch,ps,ds=c(()=>{me();Ch="__lodash_hash_undefined__";ps=Ph});function Gt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var po,ms=c(()=>{as();ss();fs();ls();ds();Gt.prototype.clear=ns;Gt.prototype.delete=is;Gt.prototype.get=cs;Gt.prototype.has=us;Gt.prototype.set=ps;po=Gt});function Lh(){this.__data__=[],this.size=0}var hs,ys=c(()=>{hs=Lh});function Nh(t,e){for(var r=t.length;r--;)if(Ft(t[r][0],e))return r;return-1}var st,he=c(()=>{We();st=Nh});function Mh(t){var e=this.__data__,r=st(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():Dh.call(e,r,1),--this.size,!0}var Rh,Dh,gs,ws=c(()=>{he();Rh=Array.prototype,Dh=Rh.splice;gs=Mh});function kh(t){var e=this.__data__,r=st(e,t);return r<0?void 0:e[r][1]}var xs,_s=c(()=>{he();xs=kh});function Bh(t){return st(this.__data__,t)>-1}var Es,bs=c(()=>{he();Es=Bh});function Fh(t,e){var r=this.__data__,o=st(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var As,Ss=c(()=>{he();As=Fh});function Wt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var ct,ye=c(()=>{ys();ws();_s();bs();Ss();Wt.prototype.clear=hs;Wt.prototype.delete=gs;Wt.prototype.get=xs;Wt.prototype.has=Es;Wt.prototype.set=As;ct=Wt});var $h,ft,ze=c(()=>{at();V();$h=M(O,"Map"),ft=$h});function Uh(){this.size=0,this.__data__={hash:new po,map:new(ft||ct),string:new po}}var Ts,Os=c(()=>{ms();ye();ze();Ts=Uh});function Hh(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var Is,vs=c(()=>{Is=Hh});function jh(t,e){var r=t.__data__;return Is(e)?r[typeof e=="string"?"string":"hash"]:r.map}var ut,ge=c(()=>{vs();ut=jh});function Gh(t){var e=ut(this,t).delete(t);return this.size-=e?1:0,e}var Cs,Ps=c(()=>{ge();Cs=Gh});function Wh(t){return ut(this,t).get(t)}var Ls,Ns=c(()=>{ge();Ls=Wh});function Kh(t){return ut(this,t).has(t)}var Rs,Ds=c(()=>{ge();Rs=Kh});function Yh(t,e){var r=ut(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var Ms,ks=c(()=>{ge();Ms=Yh});function Kt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var gt,Ze=c(()=>{Os();Ps();Ns();Ds();ks();Kt.prototype.clear=Ts;Kt.prototype.delete=Cs;Kt.prototype.get=Ls;Kt.prototype.has=Rs;Kt.prototype.set=Ms;gt=Kt});function mo(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Jh);var r=function(){var o=arguments,n=e?e.apply(this,o):o[0],a=r.cache;if(a.has(n))return a.get(n);var i=t.apply(this,o);return r.cache=a.set(n,i)||a,i};return r.cache=new(mo.Cache||gt),r}var Jh,Bs,Fs=c(()=>{Ze();Jh="Expected a function";mo.Cache=gt;Bs=mo});function Vh(t){var e=Bs(t,function(o){return r.size===qh&&r.clear(),o}),r=e.cache;return e}var qh,$s,Us=c(()=>{Fs();qh=500;$s=Vh});var Xh,zh,Zh,Hs,js=c(()=>{Us();Xh=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zh=/\\(\\)?/g,Zh=$s(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Xh,function(r,o,n,a){e.push(n?a.replace(zh,"$1"):o||r)}),e}),Hs=Zh});function Qh(t){return t==null?"":ka(t)}var Gs,Ws=c(()=>{Ba();Gs=Qh});function ty(t,e){return b(t)?t:jt(t,e)?[t]:Hs(Gs(t))}var Qe,ho=c(()=>{U();Xe();js();Ws();Qe=ty});function ry(t){if(typeof t=="string"||Y(t))return t;var e=t+"";return e=="0"&&1/t==-ey?"-0":e}var ey,lt,we=c(()=>{Rt();ey=1/0;lt=ry});function oy(t,e){e=Qe(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[lt(e[r++])];return r&&r==o?t:void 0}var Yt,tr=c(()=>{ho();we();Yt=oy});function ny(t,e,r){var o=t==null?void 0:Yt(t,e);return o===void 0?r:o}var Ks,Ys=c(()=>{tr();Ks=ny});function ay(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t}var er,yo=c(()=>{er=ay});function iy(t){return b(t)||Ut(t)||!!(Js&&t&&t[Js])}var Js,qs,Vs=c(()=>{Pt();Ye();U();Js=L?L.isConcatSpreadable:void 0;qs=iy});function Xs(t,e,r,o,n){var a=-1,i=t.length;for(r||(r=qs),n||(n=[]);++a<i;){var s=t[a];e>0&&r(s)?e>1?Xs(s,e-1,r,o,n):er(n,s):o||(n[n.length]=s)}return n}var zs,Zs=c(()=>{yo();Vs();zs=Xs});function sy(t,e,r){var o=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(n);++o<n;)a[o]=t[o+e];return a}var Qs,tc=c(()=>{Qs=sy});function uy(t,e,r){(r?le(t,e,r):e===void 0)?e=1:e=fy(qa(e),0);var o=t==null?0:t.length;if(!o||e<1)return[];for(var n=0,a=0,i=Array(cy(o/e));n<o;)i[a++]=Qs(t,n,n+=e);return i}var cy,fy,go,ec=c(()=>{tc();ao();Va();cy=Math.ceil,fy=Math.max;go=uy});function ly(){this.__data__=new ct,this.size=0}var rc,oc=c(()=>{ye();rc=ly});function py(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var nc,ac=c(()=>{nc=py});function dy(t){return this.__data__.get(t)}var ic,sc=c(()=>{ic=dy});function my(t){return this.__data__.has(t)}var cc,fc=c(()=>{cc=my});function yy(t,e){var r=this.__data__;if(r instanceof ct){var o=r.__data__;if(!ft||o.length<hy-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new gt(o)}return r.set(t,e),this.size=r.size,this}var hy,uc,lc=c(()=>{ye();ze();Ze();hy=200;uc=yy});function Jt(t){var e=this.__data__=new ct(t);this.size=e.size}var qt,wo=c(()=>{ye();oc();ac();sc();fc();lc();Jt.prototype.clear=rc;Jt.prototype.delete=nc;Jt.prototype.get=ic;Jt.prototype.has=cc;Jt.prototype.set=uc;qt=Jt});function gy(t,e){for(var r=-1,o=t==null?0:t.length,n=0,a=[];++r<o;){var i=t[r];e(i,r,t)&&(a[n++]=i)}return a}var pc,dc=c(()=>{pc=gy});function wy(){return[]}var mc,hc=c(()=>{mc=wy});var xy,_y,yc,Ey,gc,wc=c(()=>{dc();hc();xy=Object.prototype,_y=xy.propertyIsEnumerable,yc=Object.getOwnPropertySymbols,Ey=yc?function(t){return t==null?[]:(t=Object(t),pc(yc(t),function(e){return _y.call(t,e)}))}:mc,gc=Ey});function by(t,e,r){var o=e(t);return b(t)?o:er(o,r(t))}var xc,_c=c(()=>{yo();U();xc=by});function Ay(t){return xc(t,Ht,gc)}var xo,Ec=c(()=>{_c();wc();Ve();xo=Ay});var Sy,rr,bc=c(()=>{at();V();Sy=M(O,"DataView"),rr=Sy});var Ty,or,Ac=c(()=>{at();V();Ty=M(O,"Promise"),or=Ty});var Oy,pt,_o=c(()=>{at();V();Oy=M(O,"Set"),pt=Oy});var Sc,Iy,Tc,Oc,Ic,vc,vy,Cy,Py,Ly,Ny,wt,Eo,Cc=c(()=>{bc();ze();Ac();_o();ni();Lt();oo();Sc="[object Map]",Iy="[object Object]",Tc="[object Promise]",Oc="[object Set]",Ic="[object WeakMap]",vc="[object DataView]",vy=Z(rr),Cy=Z(ft),Py=Z(or),Ly=Z(pt),Ny=Z(je),wt=W;(rr&&wt(new rr(new ArrayBuffer(1)))!=vc||ft&&wt(new ft)!=Sc||or&&wt(or.resolve())!=Tc||pt&&wt(new pt)!=Oc||je&&wt(new je)!=Ic)&&(wt=function(t){var e=W(t),r=e==Iy?t.constructor:void 0,o=r?Z(r):"";if(o)switch(o){case vy:return vc;case Cy:return Sc;case Py:return Tc;case Ly:return Oc;case Ny:return Ic}return e});Eo=wt});var Ry,bo,Pc=c(()=>{V();Ry=O.Uint8Array,bo=Ry});function My(t){return this.__data__.set(t,Dy),this}var Dy,Lc,Nc=c(()=>{Dy="__lodash_hash_undefined__";Lc=My});function ky(t){return this.__data__.has(t)}var Rc,Dc=c(()=>{Rc=ky});function nr(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new gt;++e<r;)this.add(t[e])}var ar,Ao=c(()=>{Ze();Nc();Dc();nr.prototype.add=nr.prototype.push=Lc;nr.prototype.has=Rc;ar=nr});function By(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}var Mc,kc=c(()=>{Mc=By});function Fy(t,e){return t.has(e)}var ir,So=c(()=>{ir=Fy});function Hy(t,e,r,o,n,a){var i=r&$y,s=t.length,f=e.length;if(s!=f&&!(i&&f>s))return!1;var u=a.get(t),l=a.get(e);if(u&&l)return u==e&&l==t;var h=-1,d=!0,y=r&Uy?new ar:void 0;for(a.set(t,e),a.set(e,t);++h<s;){var g=t[h],w=e[h];if(o)var x=i?o(w,g,h,e,t,a):o(g,w,h,t,e,a);if(x!==void 0){if(x)continue;d=!1;break}if(y){if(!Mc(e,function(I,N){if(!ir(y,N)&&(g===I||n(g,I,r,o,a)))return y.push(N)})){d=!1;break}}else if(!(g===w||n(g,w,r,o,a))){d=!1;break}}return a.delete(t),a.delete(e),d}var $y,Uy,sr,To=c(()=>{Ao();kc();So();$y=1,Uy=2;sr=Hy});function jy(t){var e=-1,r=Array(t.size);return t.forEach(function(o,n){r[++e]=[n,o]}),r}var Bc,Fc=c(()=>{Bc=jy});function Gy(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}var Vt,cr=c(()=>{Vt=Gy});function og(t,e,r,o,n,a,i){switch(r){case rg:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case eg:return!(t.byteLength!=e.byteLength||!a(new bo(t),new bo(e)));case Yy:case Jy:case Xy:return Ft(+t,+e);case qy:return t.name==e.name&&t.message==e.message;case zy:case Qy:return t==e+"";case Vy:var s=Bc;case Zy:var f=o&Wy;if(s||(s=Vt),t.size!=e.size&&!f)return!1;var u=i.get(t);if(u)return u==e;o|=Ky,i.set(t,e);var l=sr(s(t),s(e),o,n,a,i);return i.delete(t),l;case tg:if(Oo)return Oo.call(t)==Oo.call(e)}return!1}var Wy,Ky,Yy,Jy,qy,Vy,Xy,zy,Zy,Qy,tg,eg,rg,$c,Oo,Uc,Hc=c(()=>{Pt();Pc();We();To();Fc();cr();Wy=1,Ky=2,Yy="[object Boolean]",Jy="[object Date]",qy="[object Error]",Vy="[object Map]",Xy="[object Number]",zy="[object RegExp]",Zy="[object Set]",Qy="[object String]",tg="[object Symbol]",eg="[object ArrayBuffer]",rg="[object DataView]",$c=L?L.prototype:void 0,Oo=$c?$c.valueOf:void 0;Uc=og});function sg(t,e,r,o,n,a){var i=r&ng,s=xo(t),f=s.length,u=xo(e),l=u.length;if(f!=l&&!i)return!1;for(var h=f;h--;){var d=s[h];if(!(i?d in e:ig.call(e,d)))return!1}var y=a.get(t),g=a.get(e);if(y&&g)return y==e&&g==t;var w=!0;a.set(t,e),a.set(e,t);for(var x=i;++h<f;){d=s[h];var I=t[d],N=e[d];if(o)var P=i?o(N,I,d,e,t,a):o(I,N,d,t,e,a);if(!(P===void 0?I===N||n(I,N,r,o,a):P)){w=!1;break}x||(x=d=="constructor")}if(w&&!x){var T=t.constructor,H=e.constructor;T!=H&&"constructor"in t&&"constructor"in e&&!(typeof T=="function"&&T instanceof T&&typeof H=="function"&&H instanceof H)&&(w=!1)}return a.delete(t),a.delete(e),w}var ng,ag,ig,jc,Gc=c(()=>{Ec();ng=1,ag=Object.prototype,ig=ag.hasOwnProperty;jc=sg});function ug(t,e,r,o,n,a){var i=b(t),s=b(e),f=i?Kc:Eo(t),u=s?Kc:Eo(e);f=f==Wc?fr:f,u=u==Wc?fr:u;var l=f==fr,h=u==fr,d=f==u;if(d&&pe(t)){if(!pe(e))return!1;i=!0,l=!1}if(d&&!l)return a||(a=new qt),i||qe(t)?sr(t,e,r,o,n,a):Uc(t,e,f,r,o,n,a);if(!(r&cg)){var y=l&&Yc.call(t,"__wrapped__"),g=h&&Yc.call(e,"__wrapped__");if(y||g){var w=y?t.value():t,x=g?e.value():e;return a||(a=new qt),n(w,x,r,o,a)}}return d?(a||(a=new qt),jc(t,e,r,o,n,a)):!1}var cg,Wc,Kc,fr,fg,Yc,Jc,qc=c(()=>{wo();To();Hc();Gc();Cc();U();so();lo();cg=1,Wc="[object Arguments]",Kc="[object Array]",fr="[object Object]",fg=Object.prototype,Yc=fg.hasOwnProperty;Jc=ug});function Vc(t,e,r,o,n){return t===e?!0:t==null||e==null||!K(t)&&!K(e)?t!==t&&e!==e:Jc(t,e,r,o,Vc,n)}var ur,Io=c(()=>{qc();Nt();ur=Vc});function dg(t,e,r,o){var n=r.length,a=n,i=!o;if(t==null)return!a;for(t=Object(t);n--;){var s=r[n];if(i&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++n<a;){s=r[n];var f=s[0],u=t[f],l=s[1];if(i&&s[2]){if(u===void 0&&!(f in t))return!1}else{var h=new qt;if(o)var d=o(u,l,f,t,e,h);if(!(d===void 0?ur(l,u,lg|pg,o,h):d))return!1}}return!0}var lg,pg,Xc,zc=c(()=>{wo();Io();lg=1,pg=2;Xc=dg});function mg(t){return t===t&&!J(t)}var lr,vo=c(()=>{Mt();lr=mg});function hg(t){for(var e=Ht(t),r=e.length;r--;){var o=e[r],n=t[o];e[r]=[o,n,lr(n)]}return e}var Zc,Qc=c(()=>{vo();Ve();Zc=hg});function yg(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var pr,Co=c(()=>{pr=yg});function gg(t){var e=Zc(t);return e.length==1&&e[0][2]?pr(e[0][0],e[0][1]):function(r){return r===t||Xc(r,t,e)}}var tf,ef=c(()=>{zc();Qc();Co();tf=gg});function wg(t,e){return t!=null&&e in Object(t)}var rf,of=c(()=>{rf=wg});function xg(t,e,r){e=Qe(e,t);for(var o=-1,n=e.length,a=!1;++o<n;){var i=lt(e[o]);if(!(a=t!=null&&r(t,i)))break;t=t[i]}return a||++o!=n?a:(n=t==null?0:t.length,!!n&&$t(n)&&Bt(i,n)&&(b(t)||Ut(t)))}var nf,af=c(()=>{ho();Ye();U();Ge();Ke();we();nf=xg});function _g(t,e){return t!=null&&nf(t,e,rf)}var sf,cf=c(()=>{of();af();sf=_g});function Ag(t,e){return jt(t)&&lr(e)?pr(lt(t),e):function(r){var o=Ks(r,t);return o===void 0&&o===e?sf(r,t):ur(e,o,Eg|bg)}}var Eg,bg,ff,uf=c(()=>{Io();Ys();cf();Xe();vo();Co();we();Eg=1,bg=2;ff=Ag});function Sg(t){return function(e){return e?.[t]}}var lf,pf=c(()=>{lf=Sg});function Tg(t){return function(e){return Yt(e,t)}}var df,mf=c(()=>{tr();df=Tg});function Og(t){return jt(t)?lf(lt(t)):df(t)}var hf,yf=c(()=>{pf();mf();Xe();we();hf=Og});function Ig(t){return typeof t=="function"?t:t==null?nt:typeof t=="object"?b(t)?ff(t[0],t[1]):tf(t):hf(t)}var dt,xe=c(()=>{ef();uf();fe();U();yf();dt=Ig});function vg(t,e,r,o){for(var n=-1,a=t==null?0:t.length;++n<a;){var i=t[n];e(o,i,r(i),t)}return o}var gf,wf=c(()=>{gf=vg});function Cg(t){return function(e,r,o){for(var n=-1,a=Object(e),i=o(e),s=i.length;s--;){var f=i[t?s:++n];if(r(a[f],f,a)===!1)break}return e}}var xf,_f=c(()=>{xf=Cg});var Pg,Ef,bf=c(()=>{_f();Pg=xf(),Ef=Pg});function Lg(t,e){return t&&Ef(t,e,Ht)}var Af,Sf=c(()=>{bf();Ve();Af=Lg});function Ng(t,e){return function(r,o){if(r==null)return r;if(!it(r))return t(r,o);for(var n=r.length,a=e?n:-1,i=Object(r);(e?a--:++a<n)&&o(i[a],a,i)!==!1;);return r}}var Tf,Of=c(()=>{ue();Tf=Ng});var Rg,dr,Po=c(()=>{Sf();Of();Rg=Tf(Af),dr=Rg});function Dg(t,e,r,o){return dr(t,function(n,a,i){e(o,n,r(n),i)}),o}var If,vf=c(()=>{Po();If=Dg});function Mg(t,e){return function(r,o){var n=b(r)?gf:If,a=e?e():{};return n(r,t,dt(o,2),a)}}var Cf,Pf=c(()=>{wf();vf();xe();U();Cf=Mg});function kg(t,e,r){for(var o=-1,n=t==null?0:t.length;++o<n;)if(r(e,t[o]))return!0;return!1}var Lf,Nf=c(()=>{Lf=kg});function Bg(t,e){var r=-1,o=it(t)?Array(t.length):[];return dr(t,function(n,a,i){o[++r]=e(n,a,i)}),o}var Rf,Df=c(()=>{Po();ue();Rf=Bg});var Fg,$g,Ug,Lo,Mf=c(()=>{vi();Pf();Fg=Object.prototype,$g=Fg.hasOwnProperty,Ug=Cf(function(t,e,r){$g.call(t,r)?t[r].push(e):Ii(t,r,[e])}),Lo=Ug});function Hg(t,e){for(var r,o=-1,n=t.length;++o<n;){var a=e(t[o]);a!==void 0&&(r=r===void 0?a:r+a)}return r}var kf,Bf=c(()=>{kf=Hg});function jg(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var Ff,$f=c(()=>{Ff=jg});function Gg(t,e){if(t!==e){var r=t!==void 0,o=t===null,n=t===t,a=Y(t),i=e!==void 0,s=e===null,f=e===e,u=Y(e);if(!s&&!u&&!a&&t>e||a&&i&&f&&!s&&!u||o&&i&&f||!r&&f||!n)return 1;if(!o&&!a&&!u&&t<e||u&&r&&n&&!o&&!a||s&&r&&n||!i&&n||!f)return-1}return 0}var Uf,Hf=c(()=>{Rt();Uf=Gg});function Wg(t,e,r){for(var o=-1,n=t.criteria,a=e.criteria,i=n.length,s=r.length;++o<i;){var f=Uf(n[o],a[o]);if(f){if(o>=s)return f;var u=r[o];return f*(u=="desc"?-1:1)}}return t.index-e.index}var jf,Gf=c(()=>{Hf();jf=Wg});function Kg(t,e,r){e.length?e=Dt(e,function(a){return b(a)?function(i){return Yt(i,a.length===1?a[0]:a)}:a}):e=[nt];var o=-1;e=Dt(e,Je(dt));var n=Rf(t,function(a,i,s){var f=Dt(e,function(u){return u(a)});return{criteria:f,index:++o,value:a}});return Ff(n,function(a,i){return jf(a,i,r)})}var Wf,Kf=c(()=>{eo();tr();xe();Df();$f();co();Gf();fe();U();Wf=Kg});var Yg,No,Yf=c(()=>{Zs();Kf();Ri();ao();Yg=Ni(function(t,e){if(t==null)return[];var r=e.length;return r>1&&le(t,e[0],e[1])?e=[]:r>2&&le(e[0],e[1],e[2])&&(e=[e[0]]),Wf(t,zs(e,1),[])}),No=Yg});function Jg(t,e){return t&&t.length?kf(t,dt(e,2)):0}var Ro,Jf=c(()=>{xe();Bf();Ro=Jg});var qg,Vg,qf,Vf=c(()=>{_o();ci();cr();qg=1/0,Vg=pt&&1/Vt(new pt([,-0]))[1]==qg?function(t){return new pt(t)}:si,qf=Vg});function zg(t,e,r){var o=-1,n=Ti,a=t.length,i=!0,s=[],f=s;if(r)i=!1,n=Lf;else if(a>=Xg){var u=e?null:qf(t);if(u)return Vt(u);i=!1,n=ir,f=new ar}else f=e?[]:s;t:for(;++o<a;){var l=t[o],h=e?e(l):l;if(l=r||l!==0?l:0,i&&h===h){for(var d=f.length;d--;)if(f[d]===h)continue t;e&&f.push(h),s.push(l)}else n(f,h,r)||(f!==s&&f.push(h),s.push(l))}return s}var Xg,Xf,zf=c(()=>{Ao();Oi();Nf();So();Vf();cr();Xg=200;Xf=zg});function Zg(t,e){return t&&t.length?Xf(t,dt(e,2)):[]}var Do,Zf=c(()=>{xe();zf();Do=Zg});var mr=c(()=>{ec();Mf();Yf();Jf();Zf();});import{readFile as Qg}from"node:fs/promises";function ew(t){let e=[];return t.sectionHeading&&e.push(`[Section: ${t.sectionHeading}]`),t.contextualPrefix&&e.push(t.contextualPrefix),e.push(t.content),e.join(`
89
- `)}function rw(t,e,r){return`${t}
89
+ `,[t]),n}var Ja=c(()=>{I();Nt()});var vd,We,co=c(()=>{vd=typeof global=="object"&&global&&global.Object===Object&&global,We=vd});var Cd,Rd,v,Z=c(()=>{co();Cd=typeof self=="object"&&self&&self.Object===Object&&self,Rd=We||Cd||Function("return this")(),v=Rd});var Ld,P,Dt=c(()=>{Z();Ld=v.Symbol,P=Ld});function Pd(t){var e=Nd.call(t,le),r=t[le];try{t[le]=void 0;var o=!0}catch{}var n=Dd.call(t);return o&&(e?t[le]=r:delete t[le]),n}var qa,Nd,Dd,le,Va,za=c(()=>{Dt();qa=Object.prototype,Nd=qa.hasOwnProperty,Dd=qa.toString,le=P?P.toStringTag:void 0;Va=Pd});function Bd(t){return kd.call(t)}var Md,kd,Xa,Za=c(()=>{Md=Object.prototype,kd=Md.toString;Xa=Bd});function Ud(t){return t==null?t===void 0?Fd:$d:Qa&&Qa in Object(t)?Va(t):Xa(t)}var $d,Fd,Qa,Y,Pt=c(()=>{Dt();za();Za();$d="[object Null]",Fd="[object Undefined]",Qa=P?P.toStringTag:void 0;Y=Ud});function jd(t){return t!=null&&typeof t=="object"}var J,Mt=c(()=>{J=jd});function Gd(t){return typeof t=="symbol"||J(t)&&Y(t)==Hd}var Hd,q,kt=c(()=>{Pt();Mt();Hd="[object Symbol]";q=Gd});function Kd(t,e){for(var r=-1,o=t==null?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n}var Bt,uo=c(()=>{Bt=Kd});var Wd,T,j=c(()=>{Wd=Array.isArray,T=Wd});function ri(t){if(typeof t=="string")return t;if(T(t))return Bt(t,ri)+"";if(q(t))return ei?ei.call(t):"";var e=t+"";return e=="0"&&1/t==-Yd?"-0":e}var Yd,ti,ei,oi,ni=c(()=>{Dt();uo();j();kt();Yd=1/0,ti=P?P.prototype:void 0,ei=ti?ti.toString:void 0;oi=ri});function qd(t){for(var e=t.length;e--&&Jd.test(t.charAt(e)););return e}var Jd,ai,ii=c(()=>{Jd=/\s/;ai=qd});function zd(t){return t&&t.slice(0,ai(t)+1).replace(Vd,"")}var Vd,si,ci=c(()=>{ii();Vd=/^\s+/;si=zd});function Xd(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var V,$t=c(()=>{V=Xd});function rm(t){if(typeof t=="number")return t;if(q(t))return ui;if(V(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=V(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=si(t);var r=Qd.test(t);return r||tm.test(t)?em(t.slice(2),r?2:8):Zd.test(t)?ui:+t}var ui,Zd,Qd,tm,em,fi,li=c(()=>{ci();$t();kt();ui=NaN,Zd=/^[-+]0x[0-9a-f]+$/i,Qd=/^0b[01]+$/i,tm=/^0o[0-7]+$/i,em=parseInt;fi=rm});function nm(t){if(!t)return t===0?t:0;if(t=fi(t),t===pi||t===-pi){var e=t<0?-1:1;return e*om}return t===t?t:0}var pi,om,di,mi=c(()=>{li();pi=1/0,om=17976931348623157e292;di=nm});function am(t){var e=di(t),r=e%1;return e===e?r?e-r:e:0}var hi,gi=c(()=>{mi();hi=am});function im(t){return t}var at,pe=c(()=>{at=im});function lm(t){if(!V(t))return!1;var e=Y(t);return e==cm||e==um||e==sm||e==fm}var sm,cm,um,fm,Ye,fo=c(()=>{Pt();$t();sm="[object AsyncFunction]",cm="[object Function]",um="[object GeneratorFunction]",fm="[object Proxy]";Ye=lm});var pm,Je,yi=c(()=>{Z();pm=v["__core-js_shared__"],Je=pm});function dm(t){return!!wi&&wi in t}var wi,_i,xi=c(()=>{yi();wi=(function(){var t=/[^.]+$/.exec(Je&&Je.keys&&Je.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();_i=dm});function gm(t){if(t!=null){try{return hm.call(t)}catch{}try{return t+""}catch{}}return""}var mm,hm,Q,lo=c(()=>{mm=Function.prototype,hm=mm.toString;Q=gm});function Am(t){if(!V(t)||_i(t))return!1;var e=Ye(t)?Sm:wm;return e.test(Q(t))}var ym,wm,_m,xm,Em,bm,Sm,Ei,bi=c(()=>{fo();xi();$t();lo();ym=/[\\^$.*+?()[\]{}|]/g,wm=/^\[object .+?Constructor\]$/,_m=Function.prototype,xm=Object.prototype,Em=_m.toString,bm=xm.hasOwnProperty,Sm=RegExp("^"+Em.call(bm).replace(ym,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");Ei=Am});function Tm(t,e){return t?.[e]}var Si,Ai=c(()=>{Si=Tm});function Im(t,e){var r=Si(t,e);return Ei(r)?r:void 0}var B,it=c(()=>{bi();Ai();B=Im});var Om,qe,Ti=c(()=>{it();Z();Om=B(v,"WeakMap"),qe=Om});function vm(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var Ii,Oi=c(()=>{Ii=vm});function Cm(){}var vi,Ci=c(()=>{vi=Cm});function Dm(t){var e=0,r=0;return function(){var o=Nm(),n=Lm-(o-r);if(r=o,n>0){if(++e>=Rm)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var Rm,Lm,Nm,Ri,Li=c(()=>{Rm=800,Lm=16,Nm=Date.now;Ri=Dm});function Pm(t){return function(){return t}}var Ni,Di=c(()=>{Ni=Pm});var Mm,Ft,po=c(()=>{it();Mm=(function(){try{var t=B(Object,"defineProperty");return t({},"",{}),t}catch{}})(),Ft=Mm});var km,Pi,Mi=c(()=>{Di();po();pe();km=Ft?function(t,e){return Ft(t,"toString",{configurable:!0,enumerable:!1,value:Ni(e),writable:!0})}:at,Pi=km});var Bm,ki,Bi=c(()=>{Mi();Li();Bm=Ri(Pi),ki=Bm});function $m(t,e,r,o){for(var n=t.length,a=r+(o?1:-1);o?a--:++a<n;)if(e(t[a],a,t))return a;return-1}var $i,Fi=c(()=>{$i=$m});function Fm(t){return t!==t}var Ui,ji=c(()=>{Ui=Fm});function Um(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1}var Hi,Gi=c(()=>{Hi=Um});function jm(t,e,r){return e===e?Hi(t,e,r):$i(t,Ui,r)}var Ki,Wi=c(()=>{Fi();ji();Gi();Ki=jm});function Hm(t,e){var r=t==null?0:t.length;return!!r&&Ki(t,e,0)>-1}var Yi,Ji=c(()=>{Wi();Yi=Hm});function Wm(t,e){var r=typeof t;return e=e??Gm,!!e&&(r=="number"||r!="symbol"&&Km.test(t))&&t>-1&&t%1==0&&t<e}var Gm,Km,Ut,Ve=c(()=>{Gm=9007199254740991,Km=/^(?:0|[1-9]\d*)$/;Ut=Wm});function Ym(t,e,r){e=="__proto__"&&Ft?Ft(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var qi,Vi=c(()=>{po();qi=Ym});function Jm(t,e){return t===e||t!==t&&e!==e}var jt,ze=c(()=>{jt=Jm});function qm(t,e,r){return e=zi(e===void 0?t.length-1:e,0),function(){for(var o=arguments,n=-1,a=zi(o.length-e,0),i=Array(a);++n<a;)i[n]=o[e+n];n=-1;for(var s=Array(e+1);++n<e;)s[n]=o[n];return s[e]=r(i),Ii(t,this,s)}}var zi,Xi,Zi=c(()=>{Oi();zi=Math.max;Xi=qm});function Vm(t,e){return ki(Xi(t,e,at),t+"")}var Qi,ts=c(()=>{pe();Zi();Bi();Qi=Vm});function Xm(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=zm}var zm,Ht,Xe=c(()=>{zm=9007199254740991;Ht=Xm});function Zm(t){return t!=null&&Ht(t.length)&&!Ye(t)}var st,de=c(()=>{fo();Xe();st=Zm});function Qm(t,e,r){if(!V(r))return!1;var o=typeof e;return(o=="number"?st(r)&&Ut(e,r.length):o=="string"&&e in r)?jt(r[e],t):!1}var me,mo=c(()=>{ze();de();Ve();$t();me=Qm});function eh(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||th;return t===r}var th,es,rs=c(()=>{th=Object.prototype;es=eh});function rh(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var os,ns=c(()=>{os=rh});function nh(t){return J(t)&&Y(t)==oh}var oh,ho,as=c(()=>{Pt();Mt();oh="[object Arguments]";ho=nh});var is,ah,ih,sh,Gt,Ze=c(()=>{as();Mt();is=Object.prototype,ah=is.hasOwnProperty,ih=is.propertyIsEnumerable,sh=ho((function(){return arguments})())?ho:function(t){return J(t)&&ah.call(t,"callee")&&!ih.call(t,"callee")},Gt=sh});function ch(){return!1}var ss,cs=c(()=>{ss=ch});var ls,us,uh,fs,fh,lh,he,go=c(()=>{Z();cs();ls=typeof exports=="object"&&exports&&!exports.nodeType&&exports,us=ls&&typeof module=="object"&&module&&!module.nodeType&&module,uh=us&&us.exports===ls,fs=uh?v.Buffer:void 0,fh=fs?fs.isBuffer:void 0,lh=fh||ss,he=lh});function kh(t){return J(t)&&Ht(t.length)&&!!S[Y(t)]}var ph,dh,mh,hh,gh,yh,wh,_h,xh,Eh,bh,Sh,Ah,Th,Ih,Oh,vh,Ch,Rh,Lh,Nh,Dh,Ph,Mh,S,ps,ds=c(()=>{Pt();Xe();Mt();ph="[object Arguments]",dh="[object Array]",mh="[object Boolean]",hh="[object Date]",gh="[object Error]",yh="[object Function]",wh="[object Map]",_h="[object Number]",xh="[object Object]",Eh="[object RegExp]",bh="[object Set]",Sh="[object String]",Ah="[object WeakMap]",Th="[object ArrayBuffer]",Ih="[object DataView]",Oh="[object Float32Array]",vh="[object Float64Array]",Ch="[object Int8Array]",Rh="[object Int16Array]",Lh="[object Int32Array]",Nh="[object Uint8Array]",Dh="[object Uint8ClampedArray]",Ph="[object Uint16Array]",Mh="[object Uint32Array]",S={};S[Oh]=S[vh]=S[Ch]=S[Rh]=S[Lh]=S[Nh]=S[Dh]=S[Ph]=S[Mh]=!0;S[ph]=S[dh]=S[Th]=S[mh]=S[Ih]=S[hh]=S[gh]=S[yh]=S[wh]=S[_h]=S[xh]=S[Eh]=S[bh]=S[Sh]=S[Ah]=!1;ps=kh});function Bh(t){return function(e){return t(e)}}var Qe,yo=c(()=>{Qe=Bh});var ms,ge,$h,wo,Fh,_o,hs=c(()=>{co();ms=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ms&&typeof module=="object"&&module&&!module.nodeType&&module,$h=ge&&ge.exports===ms,wo=$h&&We.process,Fh=(function(){try{var t=ge&&ge.require&&ge.require("util").types;return t||wo&&wo.binding&&wo.binding("util")}catch{}})(),_o=Fh});var gs,Uh,tr,xo=c(()=>{ds();yo();hs();gs=_o&&_o.isTypedArray,Uh=gs?Qe(gs):ps,tr=Uh});function Gh(t,e){var r=T(t),o=!r&&Gt(t),n=!r&&!o&&he(t),a=!r&&!o&&!n&&tr(t),i=r||o||n||a,s=i?os(t.length,String):[],u=s.length;for(var f in t)(e||Hh.call(t,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ut(f,u)))&&s.push(f);return s}var jh,Hh,ys,ws=c(()=>{ns();Ze();j();go();Ve();xo();jh=Object.prototype,Hh=jh.hasOwnProperty;ys=Gh});function Kh(t,e){return function(r){return t(e(r))}}var _s,xs=c(()=>{_s=Kh});var Wh,Es,bs=c(()=>{xs();Wh=_s(Object.keys,Object),Es=Wh});function qh(t){if(!es(t))return Es(t);var e=[];for(var r in Object(t))Jh.call(t,r)&&r!="constructor"&&e.push(r);return e}var Yh,Jh,Ss,As=c(()=>{rs();bs();Yh=Object.prototype,Jh=Yh.hasOwnProperty;Ss=qh});function Vh(t){return st(t)?ys(t):Ss(t)}var Kt,er=c(()=>{ws();As();de();Kt=Vh});function Zh(t,e){if(T(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||q(t)?!0:Xh.test(t)||!zh.test(t)||e!=null&&t in Object(e)}var zh,Xh,Wt,rr=c(()=>{j();kt();zh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Xh=/^\w*$/;Wt=Zh});var Qh,tt,ye=c(()=>{it();Qh=B(Object,"create"),tt=Qh});function tg(){this.__data__=tt?tt(null):{},this.size=0}var Ts,Is=c(()=>{ye();Ts=tg});function eg(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var Os,vs=c(()=>{Os=eg});function ag(t){var e=this.__data__;if(tt){var r=e[t];return r===rg?void 0:r}return ng.call(e,t)?e[t]:void 0}var rg,og,ng,Cs,Rs=c(()=>{ye();rg="__lodash_hash_undefined__",og=Object.prototype,ng=og.hasOwnProperty;Cs=ag});function cg(t){var e=this.__data__;return tt?e[t]!==void 0:sg.call(e,t)}var ig,sg,Ls,Ns=c(()=>{ye();ig=Object.prototype,sg=ig.hasOwnProperty;Ls=cg});function fg(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=tt&&e===void 0?ug:e,this}var ug,Ds,Ps=c(()=>{ye();ug="__lodash_hash_undefined__";Ds=fg});function Yt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var Eo,Ms=c(()=>{Is();vs();Rs();Ns();Ps();Yt.prototype.clear=Ts;Yt.prototype.delete=Os;Yt.prototype.get=Cs;Yt.prototype.has=Ls;Yt.prototype.set=Ds;Eo=Yt});function lg(){this.__data__=[],this.size=0}var ks,Bs=c(()=>{ks=lg});function pg(t,e){for(var r=t.length;r--;)if(jt(t[r][0],e))return r;return-1}var ct,we=c(()=>{ze();ct=pg});function hg(t){var e=this.__data__,r=ct(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():mg.call(e,r,1),--this.size,!0}var dg,mg,$s,Fs=c(()=>{we();dg=Array.prototype,mg=dg.splice;$s=hg});function gg(t){var e=this.__data__,r=ct(e,t);return r<0?void 0:e[r][1]}var Us,js=c(()=>{we();Us=gg});function yg(t){return ct(this.__data__,t)>-1}var Hs,Gs=c(()=>{we();Hs=yg});function wg(t,e){var r=this.__data__,o=ct(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var Ks,Ws=c(()=>{we();Ks=wg});function Jt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var ut,_e=c(()=>{Bs();Fs();js();Gs();Ws();Jt.prototype.clear=ks;Jt.prototype.delete=$s;Jt.prototype.get=Us;Jt.prototype.has=Hs;Jt.prototype.set=Ks;ut=Jt});var _g,ft,or=c(()=>{it();Z();_g=B(v,"Map"),ft=_g});function xg(){this.size=0,this.__data__={hash:new Eo,map:new(ft||ut),string:new Eo}}var Ys,Js=c(()=>{Ms();_e();or();Ys=xg});function Eg(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var qs,Vs=c(()=>{qs=Eg});function bg(t,e){var r=t.__data__;return qs(e)?r[typeof e=="string"?"string":"hash"]:r.map}var lt,xe=c(()=>{Vs();lt=bg});function Sg(t){var e=lt(this,t).delete(t);return this.size-=e?1:0,e}var zs,Xs=c(()=>{xe();zs=Sg});function Ag(t){return lt(this,t).get(t)}var Zs,Qs=c(()=>{xe();Zs=Ag});function Tg(t){return lt(this,t).has(t)}var tc,ec=c(()=>{xe();tc=Tg});function Ig(t,e){var r=lt(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var rc,oc=c(()=>{xe();rc=Ig});function qt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var wt,nr=c(()=>{Js();Xs();Qs();ec();oc();qt.prototype.clear=Ys;qt.prototype.delete=zs;qt.prototype.get=Zs;qt.prototype.has=tc;qt.prototype.set=rc;wt=qt});function bo(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Og);var r=function(){var o=arguments,n=e?e.apply(this,o):o[0],a=r.cache;if(a.has(n))return a.get(n);var i=t.apply(this,o);return r.cache=a.set(n,i)||a,i};return r.cache=new(bo.Cache||wt),r}var Og,nc,ac=c(()=>{nr();Og="Expected a function";bo.Cache=wt;nc=bo});function Cg(t){var e=nc(t,function(o){return r.size===vg&&r.clear(),o}),r=e.cache;return e}var vg,ic,sc=c(()=>{ac();vg=500;ic=Cg});var Rg,Lg,Ng,cc,uc=c(()=>{sc();Rg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Lg=/\\(\\)?/g,Ng=ic(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Rg,function(r,o,n,a){e.push(n?a.replace(Lg,"$1"):o||r)}),e}),cc=Ng});function Dg(t){return t==null?"":oi(t)}var fc,lc=c(()=>{ni();fc=Dg});function Pg(t,e){return T(t)?t:Wt(t,e)?[t]:cc(fc(t))}var ar,So=c(()=>{j();rr();uc();lc();ar=Pg});function kg(t){if(typeof t=="string"||q(t))return t;var e=t+"";return e=="0"&&1/t==-Mg?"-0":e}var Mg,pt,Ee=c(()=>{kt();Mg=1/0;pt=kg});function Bg(t,e){e=ar(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[pt(e[r++])];return r&&r==o?t:void 0}var Vt,ir=c(()=>{So();Ee();Vt=Bg});function $g(t,e,r){var o=t==null?void 0:Vt(t,e);return o===void 0?r:o}var pc,dc=c(()=>{ir();pc=$g});function Fg(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t}var sr,Ao=c(()=>{sr=Fg});function Ug(t){return T(t)||Gt(t)||!!(mc&&t&&t[mc])}var mc,hc,gc=c(()=>{Dt();Ze();j();mc=P?P.isConcatSpreadable:void 0;hc=Ug});function yc(t,e,r,o,n){var a=-1,i=t.length;for(r||(r=hc),n||(n=[]);++a<i;){var s=t[a];e>0&&r(s)?e>1?yc(s,e-1,r,o,n):sr(n,s):o||(n[n.length]=s)}return n}var wc,_c=c(()=>{Ao();gc();wc=yc});function jg(t,e,r){var o=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(n);++o<n;)a[o]=t[o+e];return a}var xc,Ec=c(()=>{xc=jg});function Kg(t,e,r){(r?me(t,e,r):e===void 0)?e=1:e=Gg(hi(e),0);var o=t==null?0:t.length;if(!o||e<1)return[];for(var n=0,a=0,i=Array(Hg(o/e));n<o;)i[a++]=xc(t,n,n+=e);return i}var Hg,Gg,To,bc=c(()=>{Ec();mo();gi();Hg=Math.ceil,Gg=Math.max;To=Kg});function Wg(){this.__data__=new ut,this.size=0}var Sc,Ac=c(()=>{_e();Sc=Wg});function Yg(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var Tc,Ic=c(()=>{Tc=Yg});function Jg(t){return this.__data__.get(t)}var Oc,vc=c(()=>{Oc=Jg});function qg(t){return this.__data__.has(t)}var Cc,Rc=c(()=>{Cc=qg});function zg(t,e){var r=this.__data__;if(r instanceof ut){var o=r.__data__;if(!ft||o.length<Vg-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new wt(o)}return r.set(t,e),this.size=r.size,this}var Vg,Lc,Nc=c(()=>{_e();or();nr();Vg=200;Lc=zg});function zt(t){var e=this.__data__=new ut(t);this.size=e.size}var Xt,Io=c(()=>{_e();Ac();Ic();vc();Rc();Nc();zt.prototype.clear=Sc;zt.prototype.delete=Tc;zt.prototype.get=Oc;zt.prototype.has=Cc;zt.prototype.set=Lc;Xt=zt});function Xg(t,e){for(var r=-1,o=t==null?0:t.length,n=0,a=[];++r<o;){var i=t[r];e(i,r,t)&&(a[n++]=i)}return a}var Dc,Pc=c(()=>{Dc=Xg});function Zg(){return[]}var Mc,kc=c(()=>{Mc=Zg});var Qg,ty,Bc,ey,$c,Fc=c(()=>{Pc();kc();Qg=Object.prototype,ty=Qg.propertyIsEnumerable,Bc=Object.getOwnPropertySymbols,ey=Bc?function(t){return t==null?[]:(t=Object(t),Dc(Bc(t),function(e){return ty.call(t,e)}))}:Mc,$c=ey});function ry(t,e,r){var o=e(t);return T(t)?o:sr(o,r(t))}var Uc,jc=c(()=>{Ao();j();Uc=ry});function oy(t){return Uc(t,Kt,$c)}var Oo,Hc=c(()=>{jc();Fc();er();Oo=oy});var ny,cr,Gc=c(()=>{it();Z();ny=B(v,"DataView"),cr=ny});var ay,ur,Kc=c(()=>{it();Z();ay=B(v,"Promise"),ur=ay});var iy,dt,vo=c(()=>{it();Z();iy=B(v,"Set"),dt=iy});var Wc,sy,Yc,Jc,qc,Vc,cy,uy,fy,ly,py,_t,Co,zc=c(()=>{Gc();or();Kc();vo();Ti();Pt();lo();Wc="[object Map]",sy="[object Object]",Yc="[object Promise]",Jc="[object Set]",qc="[object WeakMap]",Vc="[object DataView]",cy=Q(cr),uy=Q(ft),fy=Q(ur),ly=Q(dt),py=Q(qe),_t=Y;(cr&&_t(new cr(new ArrayBuffer(1)))!=Vc||ft&&_t(new ft)!=Wc||ur&&_t(ur.resolve())!=Yc||dt&&_t(new dt)!=Jc||qe&&_t(new qe)!=qc)&&(_t=function(t){var e=Y(t),r=e==sy?t.constructor:void 0,o=r?Q(r):"";if(o)switch(o){case cy:return Vc;case uy:return Wc;case fy:return Yc;case ly:return Jc;case py:return qc}return e});Co=_t});var dy,Ro,Xc=c(()=>{Z();dy=v.Uint8Array,Ro=dy});function hy(t){return this.__data__.set(t,my),this}var my,Zc,Qc=c(()=>{my="__lodash_hash_undefined__";Zc=hy});function gy(t){return this.__data__.has(t)}var tu,eu=c(()=>{tu=gy});function fr(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wt;++e<r;)this.add(t[e])}var lr,Lo=c(()=>{nr();Qc();eu();fr.prototype.add=fr.prototype.push=Zc;fr.prototype.has=tu;lr=fr});function yy(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}var ru,ou=c(()=>{ru=yy});function wy(t,e){return t.has(e)}var pr,No=c(()=>{pr=wy});function Ey(t,e,r,o,n,a){var i=r&_y,s=t.length,u=e.length;if(s!=u&&!(i&&u>s))return!1;var f=a.get(t),l=a.get(e);if(f&&l)return f==e&&l==t;var h=-1,d=!0,g=r&xy?new lr:void 0;for(a.set(t,e),a.set(e,t);++h<s;){var y=t[h],_=e[h];if(o)var w=i?o(_,y,h,e,t,a):o(y,_,h,t,e,a);if(w!==void 0){if(w)continue;d=!1;break}if(g){if(!ru(e,function(C,M){if(!pr(g,M)&&(y===C||n(y,C,r,o,a)))return g.push(M)})){d=!1;break}}else if(!(y===_||n(y,_,r,o,a))){d=!1;break}}return a.delete(t),a.delete(e),d}var _y,xy,dr,Do=c(()=>{Lo();ou();No();_y=1,xy=2;dr=Ey});function by(t){var e=-1,r=Array(t.size);return t.forEach(function(o,n){r[++e]=[n,o]}),r}var nu,au=c(()=>{nu=by});function Sy(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}var Zt,mr=c(()=>{Zt=Sy});function By(t,e,r,o,n,a,i){switch(r){case ky:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case My:return!(t.byteLength!=e.byteLength||!a(new Ro(t),new Ro(e)));case Iy:case Oy:case Ry:return jt(+t,+e);case vy:return t.name==e.name&&t.message==e.message;case Ly:case Dy:return t==e+"";case Cy:var s=nu;case Ny:var u=o&Ay;if(s||(s=Zt),t.size!=e.size&&!u)return!1;var f=i.get(t);if(f)return f==e;o|=Ty,i.set(t,e);var l=dr(s(t),s(e),o,n,a,i);return i.delete(t),l;case Py:if(Po)return Po.call(t)==Po.call(e)}return!1}var Ay,Ty,Iy,Oy,vy,Cy,Ry,Ly,Ny,Dy,Py,My,ky,iu,Po,su,cu=c(()=>{Dt();Xc();ze();Do();au();mr();Ay=1,Ty=2,Iy="[object Boolean]",Oy="[object Date]",vy="[object Error]",Cy="[object Map]",Ry="[object Number]",Ly="[object RegExp]",Ny="[object Set]",Dy="[object String]",Py="[object Symbol]",My="[object ArrayBuffer]",ky="[object DataView]",iu=P?P.prototype:void 0,Po=iu?iu.valueOf:void 0;su=By});function jy(t,e,r,o,n,a){var i=r&$y,s=Oo(t),u=s.length,f=Oo(e),l=f.length;if(u!=l&&!i)return!1;for(var h=u;h--;){var d=s[h];if(!(i?d in e:Uy.call(e,d)))return!1}var g=a.get(t),y=a.get(e);if(g&&y)return g==e&&y==t;var _=!0;a.set(t,e),a.set(e,t);for(var w=i;++h<u;){d=s[h];var C=t[d],M=e[d];if(o)var L=i?o(M,C,d,e,t,a):o(C,M,d,t,e,a);if(!(L===void 0?C===M||n(C,M,r,o,a):L)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var O=t.constructor,H=e.constructor;O!=H&&"constructor"in t&&"constructor"in e&&!(typeof O=="function"&&O instanceof O&&typeof H=="function"&&H instanceof H)&&(_=!1)}return a.delete(t),a.delete(e),_}var $y,Fy,Uy,uu,fu=c(()=>{Hc();$y=1,Fy=Object.prototype,Uy=Fy.hasOwnProperty;uu=jy});function Ky(t,e,r,o,n,a){var i=T(t),s=T(e),u=i?pu:Co(t),f=s?pu:Co(e);u=u==lu?hr:u,f=f==lu?hr:f;var l=u==hr,h=f==hr,d=u==f;if(d&&he(t)){if(!he(e))return!1;i=!0,l=!1}if(d&&!l)return a||(a=new Xt),i||tr(t)?dr(t,e,r,o,n,a):su(t,e,u,r,o,n,a);if(!(r&Hy)){var g=l&&du.call(t,"__wrapped__"),y=h&&du.call(e,"__wrapped__");if(g||y){var _=g?t.value():t,w=y?e.value():e;return a||(a=new Xt),n(_,w,r,o,a)}}return d?(a||(a=new Xt),uu(t,e,r,o,n,a)):!1}var Hy,lu,pu,hr,Gy,du,mu,hu=c(()=>{Io();Do();cu();fu();zc();j();go();xo();Hy=1,lu="[object Arguments]",pu="[object Array]",hr="[object Object]",Gy=Object.prototype,du=Gy.hasOwnProperty;mu=Ky});function gu(t,e,r,o,n){return t===e?!0:t==null||e==null||!J(t)&&!J(e)?t!==t&&e!==e:mu(t,e,r,o,gu,n)}var gr,Mo=c(()=>{hu();Mt();gr=gu});function Jy(t,e,r,o){var n=r.length,a=n,i=!o;if(t==null)return!a;for(t=Object(t);n--;){var s=r[n];if(i&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++n<a;){s=r[n];var u=s[0],f=t[u],l=s[1];if(i&&s[2]){if(f===void 0&&!(u in t))return!1}else{var h=new Xt;if(o)var d=o(f,l,u,t,e,h);if(!(d===void 0?gr(l,f,Wy|Yy,o,h):d))return!1}}return!0}var Wy,Yy,yu,wu=c(()=>{Io();Mo();Wy=1,Yy=2;yu=Jy});function qy(t){return t===t&&!V(t)}var yr,ko=c(()=>{$t();yr=qy});function Vy(t){for(var e=Kt(t),r=e.length;r--;){var o=e[r],n=t[o];e[r]=[o,n,yr(n)]}return e}var _u,xu=c(()=>{ko();er();_u=Vy});function zy(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var wr,Bo=c(()=>{wr=zy});function Xy(t){var e=_u(t);return e.length==1&&e[0][2]?wr(e[0][0],e[0][1]):function(r){return r===t||yu(r,t,e)}}var Eu,bu=c(()=>{wu();xu();Bo();Eu=Xy});function Zy(t,e){return t!=null&&e in Object(t)}var Su,Au=c(()=>{Su=Zy});function Qy(t,e,r){e=ar(e,t);for(var o=-1,n=e.length,a=!1;++o<n;){var i=pt(e[o]);if(!(a=t!=null&&r(t,i)))break;t=t[i]}return a||++o!=n?a:(n=t==null?0:t.length,!!n&&Ht(n)&&Ut(i,n)&&(T(t)||Gt(t)))}var Tu,Iu=c(()=>{So();Ze();j();Ve();Xe();Ee();Tu=Qy});function tw(t,e){return t!=null&&Tu(t,e,Su)}var Ou,vu=c(()=>{Au();Iu();Ou=tw});function ow(t,e){return Wt(t)&&yr(e)?wr(pt(t),e):function(r){var o=pc(r,t);return o===void 0&&o===e?Ou(r,t):gr(e,o,ew|rw)}}var ew,rw,Cu,Ru=c(()=>{Mo();dc();vu();rr();ko();Bo();Ee();ew=1,rw=2;Cu=ow});function nw(t){return function(e){return e?.[t]}}var Lu,Nu=c(()=>{Lu=nw});function aw(t){return function(e){return Vt(e,t)}}var Du,Pu=c(()=>{ir();Du=aw});function iw(t){return Wt(t)?Lu(pt(t)):Du(t)}var Mu,ku=c(()=>{Nu();Pu();rr();Ee();Mu=iw});function sw(t){return typeof t=="function"?t:t==null?at:typeof t=="object"?T(t)?Cu(t[0],t[1]):Eu(t):Mu(t)}var mt,be=c(()=>{bu();Ru();pe();j();ku();mt=sw});function cw(t,e,r,o){for(var n=-1,a=t==null?0:t.length;++n<a;){var i=t[n];e(o,i,r(i),t)}return o}var Bu,$u=c(()=>{Bu=cw});function uw(t){return function(e,r,o){for(var n=-1,a=Object(e),i=o(e),s=i.length;s--;){var u=i[t?s:++n];if(r(a[u],u,a)===!1)break}return e}}var Fu,Uu=c(()=>{Fu=uw});var fw,ju,Hu=c(()=>{Uu();fw=Fu(),ju=fw});function lw(t,e){return t&&ju(t,e,Kt)}var Gu,Ku=c(()=>{Hu();er();Gu=lw});function pw(t,e){return function(r,o){if(r==null)return r;if(!st(r))return t(r,o);for(var n=r.length,a=e?n:-1,i=Object(r);(e?a--:++a<n)&&o(i[a],a,i)!==!1;);return r}}var Wu,Yu=c(()=>{de();Wu=pw});var dw,_r,$o=c(()=>{Ku();Yu();dw=Wu(Gu),_r=dw});function mw(t,e,r,o){return _r(t,function(n,a,i){e(o,n,r(n),i)}),o}var Ju,qu=c(()=>{$o();Ju=mw});function hw(t,e){return function(r,o){var n=T(r)?Bu:Ju,a=e?e():{};return n(r,t,mt(o,2),a)}}var Vu,zu=c(()=>{$u();qu();be();j();Vu=hw});function gw(t,e,r){for(var o=-1,n=t==null?0:t.length;++o<n;)if(r(e,t[o]))return!0;return!1}var Xu,Zu=c(()=>{Xu=gw});function yw(t,e){var r=-1,o=st(t)?Array(t.length):[];return _r(t,function(n,a,i){o[++r]=e(n,a,i)}),o}var Qu,tf=c(()=>{$o();de();Qu=yw});var ww,_w,xw,Fo,ef=c(()=>{Vi();zu();ww=Object.prototype,_w=ww.hasOwnProperty,xw=Vu(function(t,e,r){_w.call(t,r)?t[r].push(e):qi(t,r,[e])}),Fo=xw});function Ew(t,e){for(var r,o=-1,n=t.length;++o<n;){var a=e(t[o]);a!==void 0&&(r=r===void 0?a:r+a)}return r}var rf,of=c(()=>{rf=Ew});function bw(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var nf,af=c(()=>{nf=bw});function Sw(t,e){if(t!==e){var r=t!==void 0,o=t===null,n=t===t,a=q(t),i=e!==void 0,s=e===null,u=e===e,f=q(e);if(!s&&!f&&!a&&t>e||a&&i&&u&&!s&&!f||o&&i&&u||!r&&u||!n)return 1;if(!o&&!a&&!f&&t<e||f&&r&&n&&!o&&!a||s&&r&&n||!i&&n||!u)return-1}return 0}var sf,cf=c(()=>{kt();sf=Sw});function Aw(t,e,r){for(var o=-1,n=t.criteria,a=e.criteria,i=n.length,s=r.length;++o<i;){var u=sf(n[o],a[o]);if(u){if(o>=s)return u;var f=r[o];return u*(f=="desc"?-1:1)}}return t.index-e.index}var uf,ff=c(()=>{cf();uf=Aw});function Tw(t,e,r){e.length?e=Bt(e,function(a){return T(a)?function(i){return Vt(i,a.length===1?a[0]:a)}:a}):e=[at];var o=-1;e=Bt(e,Qe(mt));var n=Qu(t,function(a,i,s){var u=Bt(e,function(f){return f(a)});return{criteria:u,index:++o,value:a}});return nf(n,function(a,i){return uf(a,i,r)})}var lf,pf=c(()=>{uo();ir();be();tf();af();yo();ff();pe();j();lf=Tw});var Iw,Uo,df=c(()=>{_c();pf();ts();mo();Iw=Qi(function(t,e){if(t==null)return[];var r=e.length;return r>1&&me(t,e[0],e[1])?e=[]:r>2&&me(e[0],e[1],e[2])&&(e=[e[0]]),lf(t,wc(e,1),[])}),Uo=Iw});function Ow(t,e){return t&&t.length?rf(t,mt(e,2)):0}var jo,mf=c(()=>{be();of();jo=Ow});var vw,Cw,hf,gf=c(()=>{vo();Ci();mr();vw=1/0,Cw=dt&&1/Zt(new dt([,-0]))[1]==vw?function(t){return new dt(t)}:vi,hf=Cw});function Lw(t,e,r){var o=-1,n=Yi,a=t.length,i=!0,s=[],u=s;if(r)i=!1,n=Xu;else if(a>=Rw){var f=e?null:hf(t);if(f)return Zt(f);i=!1,n=pr,u=new lr}else u=e?[]:s;t:for(;++o<a;){var l=t[o],h=e?e(l):l;if(l=r||l!==0?l:0,i&&h===h){for(var d=u.length;d--;)if(u[d]===h)continue t;e&&u.push(h),s.push(l)}else n(u,h,r)||(u!==s&&u.push(h),s.push(l))}return s}var Rw,yf,wf=c(()=>{Lo();Ji();Zu();No();gf();mr();Rw=200;yf=Lw});function Nw(t,e){return t&&t.length?yf(t,mt(e,2)):[]}var Ho,_f=c(()=>{be();wf();Ho=Nw});var xr=c(()=>{bc();ef();df();mf();_f();});import{readFile as Dw}from"node:fs/promises";function Mw(t){let e=[];return t.sectionHeading&&e.push(`[Section: ${t.sectionHeading}]`),t.contextualPrefix&&e.push(t.contextualPrefix),e.push(t.content),e.join(`
90
+ `)}function kw(t,e,r){return`${t}
90
91
 
91
92
  ---
92
93
 
@@ -100,15 +101,15 @@ Respond with ONLY a JSON array of facts. Each fact object must have exactly thes
100
101
  - "confidence" (string): one of high, medium, low
101
102
  - "importance" (string): "vital" if essential to understanding the topic, "supplementary" if supporting detail
102
103
 
103
- Output the JSON array directly, no explanation or wrapping.`}function ow(t,e){let r=Array.isArray(t)?t:Array.isArray(t?.facts)?t.facts:null;return r?r.filter(o=>o.content&&e.includes(o.category)&&["high","medium","low"].includes(o.confidence)).map(o=>({...o,importance:["vital","supplementary"].includes(o.importance)?o.importance:"supplementary"})):[]}async function nw(t,e,r){let o=ew(t),n=rw(e,o,r),a=await yt(n,{model:p.llm.extractionModel,caller:"extractor"});return ow(a,r).map(s=>({...s,sourceSection:t.sectionHeading||null}))}async function Qf(t,{promptPath:e,categories:r}){if(!t.length)return[];let o=await Qg(e,"utf8"),n=go(t,tw),a=[];for(let i of n){let s=await Promise.all(i.map(f=>nw(f,o,r).catch(u=>(console.error(`[extractor] chunk failed: ${u.message}`),[]))));a.push(...s.flat())}return a}var tw,tu=c(()=>{mr();ot();_();tw=5});import{readFile as aw}from"node:fs/promises";import iw from"node:path";async function ou({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){let f=s||await Be(t),u=await pw(f,{namespace:n});if(!u.length)return{action:"ADD",fact:await hr({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:f})};let l=u[0];if(l.similarity>=cw)return{action:"SKIP",existing:l};if(l.similarity>=ru){let d=await fw(t,l.content);if(d==="UPDATE"){let y=await hr({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:f});return await lw(l.id,y.id),await eu({targetType:"fact",targetId:l.id,event:"UPDATE",oldContent:l.content,newContent:t,triggeredBy:`audm:sim=${l.similarity.toFixed(3)}`}),{action:"UPDATE",fact:y,supersededId:l.id}}if(d==="CONTRADICT"){let y=await hr({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:f});return await uw(l.id,y.id),await eu({targetType:"fact",targetId:l.id,event:"CONTRADICT",oldContent:l.content,newContent:t,triggeredBy:`audm:sim=${l.similarity.toFixed(3)}`}),{action:"CONTRADICT",fact:y,contradictedId:l.id}}}return{action:"ADD",fact:await hr({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:f})}}async function fw(t,e){let o=`${await aw(sw,"utf8")}
104
+ Output the JSON array directly, no explanation or wrapping.`}function Bw(t,e){let r=Array.isArray(t)?t:Array.isArray(t?.facts)?t.facts:null;return r?r.filter(o=>o.content&&e.includes(o.category)&&["high","medium","low"].includes(o.confidence)).map(o=>({...o,importance:["vital","supplementary"].includes(o.importance)?o.importance:"supplementary"})):[]}async function $w(t,e,r){let o=Mw(t),n=kw(e,o,r),a=await yt(n,{model:p.llm.extractionModel,caller:"extractor"});return Bw(a,r).map(s=>({...s,sourceSection:t.sectionHeading||null}))}async function xf(t,{promptPath:e,categories:r}){if(!t.length)return[];let o=await Dw(e,"utf8"),n=To(t,Pw),a=[];for(let i of n){let s=await Promise.all(i.map(u=>$w(u,o,r).catch(f=>(console.error(`[extractor] chunk failed: ${f.message}`),[]))));a.push(...s.flat())}return a}var Pw,Ef=c(()=>{xr();nt();x();Pw=5});var bf={};A(bf,{currentAgent:()=>Hw,currentDeviceId:()=>jw,currentRequestContext:()=>Go,runWithRequestContext:()=>Uw});import{AsyncLocalStorage as Fw}from"node:async_hooks";function Uw(t,e){return Er.run(t,e)}function Go(){return Er.getStore()||null}function jw(){return Er.getStore()?.device?.id??null}function Hw(){return Er.getStore()?.agent??process.env.SIGIL_AGENT??null}var Er,Ko=c(()=>{Er=new Fw});import{readFile as Gw}from"node:fs/promises";import Kw from"node:path";async function Af({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){t=St(t);let u=s||await Ge(t),f=await Vw(u,{namespace:n}),l={skip:Sf,ambiguous:Wo};if(!f.length)return{action:"ADD",fact:await Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{topSimilarity:null,matchCount:0,decision:"no-match",thresholds:l}};let h=f[0],d={topSimilarity:Number(h.similarity),matchCount:f.length,existingId:h.id,existingContent:h.content,thresholds:l};if(h.similarity>=Sf)return{action:"SKIP",existing:h,audm:{...d,decision:"skip-duplicate"}};if(h.similarity>=Wo){let y=await Yw(t,h.content);if(y==="UPDATE"){let w=await Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u});return await Tf(h.id,w.id),await Yo({targetType:"fact",targetId:h.id,event:"UPDATE",oldContent:h.content,newContent:t,triggeredBy:`audm:sim=${h.similarity.toFixed(3)}`}),{action:"UPDATE",fact:w,supersededId:h.id,audm:{...d,decision:"llm:UPDATE"}}}if(y==="CONTRADICT"){let w=await Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u});return await qw(h.id,w.id),await Yo({targetType:"fact",targetId:h.id,event:"CONTRADICT",oldContent:h.content,newContent:t,triggeredBy:`audm:sim=${h.similarity.toFixed(3)}`}),{action:"CONTRADICT",fact:w,contradictedId:h.id,audm:{...d,decision:"llm:CONTRADICT"}}}return{action:"ADD",fact:await Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{...d,decision:"llm:ADD"}}}return{action:"ADD",fact:await Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{...d,decision:"below-ambiguous"}}}async function Yw(t,e){let o=`${await Gw(Ww,"utf8")}
104
105
 
105
106
  **EXISTING FACT:** ${e}
106
107
 
107
- **NEW FACT:** ${t}`,a=(await ht(o,{model:p.llm.decisionModel,caller:"audm"})).trim().toUpperCase();return a.includes("UPDATE")?"UPDATE":a.includes("CONTRADICT")?"CONTRADICT":"ADD"}async function hr({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){let f=`fact-${rt(16)}`,[u]=await m("fact").insert({uid:f,content:t,category:e,confidence:r||"medium",importance:o||"supplementary",namespace:n,status:"active",sourceDocumentIds:a||[],sourceSection:i||null,embedding:$(s),validFrom:new Date}).returning("*");return await m.raw(`
108
+ **NEW FACT:** ${t}`,a=(await gt(o,{model:p.llm.decisionModel,caller:"audm"})).trim().toUpperCase();return a.includes("UPDATE")?"UPDATE":a.includes("CONTRADICT")?"CONTRADICT":"ADD"}async function Se({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){let u=`fact-${X(16)}`,f=null,l=null;try{let{currentDeviceId:d,currentAgent:g}=await Promise.resolve().then(()=>(Ko(),bf));f=d(),l=g()}catch{}let[h]=await m("fact").insert({uid:u,content:t,category:e,confidence:r||"medium",importance:o||"supplementary",namespace:n,status:"active",sourceDocumentIds:a||[],sourceSection:i||null,embedding:U(s),validFrom:new Date,embeddingModel:p.embedding.model||null,embeddingDim:Number(p.embedding.dimensions)||null,createdByDeviceId:f,createdByAgent:l}).returning("*");return await m.raw(`
108
109
  UPDATE fact
109
110
  SET search_vector = to_tsvector('english', content)
110
111
  WHERE id = ?
111
- `,[u.id]),u}async function uw(t,e){await m("fact").where({id:t}).update({status:"contradicted",contradictedById:e,validUntil:m.fn.now()})}async function lw(t,e){await m("fact").where({id:t}).update({status:"superseded",supersededById:e,validUntil:m.fn.now()})}async function pw(t,{namespace:e,threshold:r=ru,limit:o=5}){let n=$(t),a=`${It("embedding")} <=> ${vt()}`;return m.transaction(async i=>{await i.raw("SET LOCAL hnsw.ef_search = 40");let{rows:s}=await i.raw(`
112
+ `,[h.id]),h}async function Jw(t){return m("fact").whereRaw("? = ANY(source_document_ids)",[t]).where({status:"active"}).orderBy("createdAt","desc")}async function qw(t,e){await m("fact").where({id:t}).update({status:"contradicted",contradictedById:e,validUntil:m.fn.now()})}async function Tf(t,e){await m("fact").where({id:t}).update({status:"superseded",supersededById:e,validUntil:m.fn.now()})}async function Jo(t,e=[]){let r=new Set((e||[]).filter(i=>i!=null)),o=await Jw(t),n=0,a=0;for(let i of o){if(r.has(i.id))continue;(Array.isArray(i.sourceDocumentIds)?i.sourceDocumentIds:[]).length<=1?(await Tf(i.id,null),await Yo({targetType:"fact",targetId:i.id,event:"SUPERSEDE",oldContent:i.content,newContent:null,triggeredBy:`reingest:doc=${t}`}),n++):(await m("fact").where({id:i.id}).update({sourceDocumentIds:m.raw("array_remove(source_document_ids, ?)",[t])}),a++)}return{superseded:n,dissociated:a}}async function Vw(t,{namespace:e,threshold:r=Wo,limit:o=5}){let n=U(t),a=`${Rt("embedding")} <=> ${Lt()}`;return m.transaction(async i=>{await i.raw("SET LOCAL hnsw.ef_search = 40");let{rows:s}=await i.raw(`
112
113
  SELECT id, uid, content, category, status,
113
114
  1 - (${a}) as similarity
114
115
  FROM fact
@@ -118,7 +119,7 @@ Output the JSON array directly, no explanation or wrapping.`}function ow(t,e){le
118
119
  AND 1 - (${a}) >= ?
119
120
  ORDER BY ${a}
120
121
  LIMIT ?
121
- `,[n,e,n,r,n,o]);return s})}async function eu({targetType:t,targetId:e,event:r,oldContent:o,newContent:n,triggeredBy:a}){await m("history").insert({targetType:t,targetId:e,event:r,oldContent:o||null,newContent:n||null,triggeredBy:a||null})}var sw,cw,ru,nu=c(()=>{Zt();S();Fe();ot();Ct();_();B();sw=iw.join(q,"audm-decision.md"),cw=p.memory.skipThreshold,ru=p.memory.ambiguousThreshold});var yr,dw,TC,au,Mo=c(()=>{yr={preference:"Personal likes, dislikes, favorites, preferred tools/foods/methods",opinion:"Personal views, assessments, evaluations of tools/concepts/approaches",personal:"Personal facts \u2014 birthday, workplace, location, biographical details",experience:"Personal experiences \u2014 projects built, tools used, skills acquired",business_rule:"Organizational rules, policies, constraints",workflow:"Process flows, state transitions, procedures",architecture:"System design, service interactions, infrastructure",convention:"Coding patterns, naming rules, team standards",decision:"Why choices were made, tradeoffs considered",domain_knowledge:"Domain-specific terminology and concepts",key_insight:"Important takeaways, notable explanations",metric:"Quantitative data, measurements, statistics",issue:"Known problems, bugs, limitations, risks",action_item:"Tasks, follow-ups, assignments, deadlines"},dw=["preference","opinion","personal","experience"],TC=Object.keys(yr).filter(t=>!dw.includes(t)),au=yr});import{readFile as mw}from"node:fs/promises";import{join as hw}from"node:path";async function su(t,{title:e}={}){if(!t?.trim()||t.trim().length<gw)return{route:"noise",facts:[],entities:[],reasoning:"Empty or too short"};if(t.length>ww)return{route:"knowledge",facts:[],entities:[],reasoning:"Long content \u2014 auto-routed to full pipeline"};let o=`${await mw(yw,"utf8")}
122
+ `,[n,e,n,r,n,o]);return s})}async function Yo({targetType:t,targetId:e,event:r,oldContent:o,newContent:n,triggeredBy:a}){await m("history").insert({targetType:t,targetId:e,event:r,oldContent:o||null,newContent:n||null,triggeredBy:a||null})}var Ww,Sf,Wo,If=c(()=>{Tt();I();Ke();nt();Nt();Le();x();$();Ww=Kw.join(z,"audm-decision.md"),Sf=p.memory.skipThreshold,Wo=p.memory.ambiguousThreshold});var br,zw,BR,Of,qo=c(()=>{br={preference:"Personal likes, dislikes, favorites, preferred tools/foods/methods",opinion:"Personal views, assessments, evaluations of tools/concepts/approaches",personal:"Personal facts \u2014 birthday, workplace, location, biographical details",experience:"Personal experiences \u2014 projects built, tools used, skills acquired",business_rule:"Organizational rules, policies, constraints",workflow:"Process flows, state transitions, procedures",architecture:"System design, service interactions, infrastructure",convention:"Coding patterns, naming rules, team standards",decision:"Why choices were made, tradeoffs considered",domain_knowledge:"Domain-specific terminology and concepts",key_insight:"Important takeaways, notable explanations",metric:"Quantitative data, measurements, statistics",issue:"Known problems, bugs, limitations, risks",action_item:"Tasks, follow-ups, assignments, deadlines"},zw=["preference","opinion","personal","experience"],BR=Object.keys(br).filter(t=>!zw.includes(t)),Of=br});import{readFile as Xw}from"node:fs/promises";import{join as Zw}from"node:path";async function Cf(t,{title:e}={}){if(!t?.trim()||t.trim().length<t_)return{route:"noise",facts:[],entities:[],reasoning:"Empty or too short"};if(t.length>e_)return{route:"knowledge",facts:[],entities:[],reasoning:"Long content \u2014 auto-routed to full pipeline"};let o=`${await Xw(Qw,"utf8")}
122
123
 
123
124
  ---
124
125
 
@@ -127,13 +128,13 @@ Input: ${t}
127
128
 
128
129
  ---
129
130
 
130
- Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts": [{"content":"...","category":"...","confidence":"high|medium|low","importance":"vital|supplementary"}], "entities": ["..."], "reasoning": "..." }`;try{let n=await yt(o,{model:p.llm.extractionModel,caller:"classifier"});if(!n||!xw.includes(n.route))return iu("Invalid classification result");let a=Object.keys(au),i=n.route==="thought"&&Array.isArray(n.facts)?n.facts.filter(s=>s.content&&a.includes(s.category)).map(s=>({...s,confidence:["high","medium","low"].includes(s.confidence)?s.confidence:"high",importance:["vital","supplementary"].includes(s.importance)?s.importance:"vital"})):[];return{route:n.route,facts:i,entities:Array.isArray(n.entities)?n.entities:[],reasoning:n.reasoning||""}}catch(n){return console.error("[input-classifier] Failed:",n.message),iu(n.message)}}function iu(t){return{route:"knowledge",facts:[],entities:[],reasoning:`Fallback \u2014 ${t}`}}var yw,gw,ww,xw,cu=c(()=>{ot();_();Mo();B();yw=hw(q,"input-classifier.md"),gw=3,ww=2e3,xw=["thought","knowledge","noise"]});var fu={};A(fu,{findById:()=>tt,findByName:()=>_e,findByUid:()=>_w,findSimilar:()=>Ew,getCanonicalEntity:()=>_t,getEntityCount:()=>Sw,incrementMentionCount:()=>Ee,insertEntity:()=>ko,listByType:()=>Aw,pushAlias:()=>gr,searchByName:()=>Tw,updateDescription:()=>bw,updateEntityTypes:()=>xt,updateName:()=>Bo});async function ko({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a}){let i=`ent-${rt(16)}`,[s]=await m("entity").insert({uid:i,name:t,entityType:e,description:r||null,namespace:o||p.defaults.namespace,externalId:n||null,mentionCount:1,embedding:$(a)}).returning("*");return s}async function _e(t,e){let r=e||p.defaults.namespace,o=t.toLowerCase();return m("entity").where({namespace:r}).whereNull("mergedWith").where(function(){this.whereRaw("LOWER(name) = ?",[o]).orWhereRaw("aliases @> ARRAY[?]::text[]",[o])}).first()||null}async function gr(t,e){if(!e)return;let r=e.toLowerCase();await m.raw(`
131
+ Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts": [{"content":"...","category":"...","confidence":"high|medium|low","importance":"vital|supplementary"}], "entities": ["..."], "reasoning": "..." }`;try{let n=await yt(o,{model:p.llm.extractionModel,caller:"classifier"});if(!n||!r_.includes(n.route))return vf("Invalid classification result");let a=Object.keys(Of),i=n.route==="thought"&&Array.isArray(n.facts)?n.facts.filter(s=>s.content&&a.includes(s.category)).map(s=>({...s,confidence:["high","medium","low"].includes(s.confidence)?s.confidence:"high",importance:["vital","supplementary"].includes(s.importance)?s.importance:"vital"})):[];return{route:n.route,facts:i,entities:Array.isArray(n.entities)?n.entities:[],reasoning:n.reasoning||""}}catch(n){return console.error("[input-classifier] Failed:",n.message),vf(n.message)}}function vf(t){return{route:"knowledge",facts:[],entities:[],reasoning:`Fallback \u2014 ${t}`}}var Qw,t_,e_,r_,Rf=c(()=>{nt();x();qo();$();Qw=Zw(z,"input-classifier.md"),t_=3,e_=2e3,r_=["thought","knowledge","noise"]});var Lf={};A(Lf,{findById:()=>et,findByName:()=>Ae,findByUid:()=>o_,findSimilar:()=>n_,getCanonicalEntity:()=>Et,getEntityCount:()=>s_,incrementMentionCount:()=>Te,insertEntity:()=>Vo,listByType:()=>i_,pushAlias:()=>Sr,searchByName:()=>c_,updateDescription:()=>a_,updateEntityTypes:()=>xt,updateName:()=>zo});async function Vo({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a}){let i=`ent-${X(16)}`,[s]=await m("entity").insert({uid:i,name:t,entityType:e,description:r||null,namespace:o||p.defaults.namespace,externalId:n||null,mentionCount:1,embedding:U(a)}).returning("*");return s}async function Ae(t,e){let r=e||p.defaults.namespace,o=t.toLowerCase();return m("entity").where({namespace:r}).whereNull("mergedWith").where(function(){this.whereRaw("LOWER(name) = ?",[o]).orWhereRaw("aliases @> ARRAY[?]::text[]",[o])}).first()||null}async function Sr(t,e){if(!e)return;let r=e.toLowerCase();await m.raw(`
131
132
  UPDATE entity
132
133
  SET aliases = (
133
134
  SELECT ARRAY(SELECT DISTINCT unnest(aliases || ARRAY[?]::text[]))
134
135
  )
135
136
  WHERE id = ?
136
- `,[r,t])}async function Bo(t,e){await m("entity").where({id:t}).update({name:e})}async function _w(t){return m("entity").where({uid:t}).first()||null}async function tt(t){return m("entity").where({id:t}).first()||null}async function Ew(t,{entityType:e,namespace:r,threshold:o=.85,limit:n=3}){let a=$(t),i=`${It("embedding")} <=> ${vt()}`,{rows:s}=await m.raw(`
137
+ `,[r,t])}async function zo(t,e){await m("entity").where({id:t}).update({name:e})}async function o_(t){return m("entity").where({uid:t}).first()||null}async function et(t){return m("entity").where({id:t}).first()||null}async function n_(t,{entityType:e,namespace:r,threshold:o=.85,limit:n=3}){let a=U(t),i=`${Rt("embedding")} <=> ${Lt()}`,{rows:s}=await m.raw(`
137
138
  SELECT id, uid, name, entity_type AS "entityType", description,
138
139
  mention_count AS "mentionCount",
139
140
  1 - (${i}) AS similarity
@@ -145,7 +146,7 @@ Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts":
145
146
  AND 1 - (${i}) >= ?
146
147
  ORDER BY ${i}
147
148
  LIMIT ?
148
- `,[a,e,r,p.defaults.namespace,a,o,a,n]);return s}async function Ee(t){await m("entity").where({id:t}).increment("mentionCount",1)}async function bw(t,e){await m("entity").where({id:t}).update({description:e})}async function Aw(t,{namespace:e,limit:r=50}={}){let o=m("entity").where({entityType:t}).whereNull("mergedWith").orderBy("mentionCount","desc").limit(r);return e&&o.where({namespace:e}),o}async function Sw(t){let[{count:e}]=await m("entity").where({entityType:t}).whereNull("mergedWith").count("id as count");return Number(e)}async function Tw(t,{entityType:e,namespace:r,limit:o=10}={}){let n=m("entity").whereRaw("LOWER(name) LIKE ?",[`%${t.toLowerCase()}%`]).whereNull("mergedWith").orderBy("mentionCount","desc").limit(o);return e&&n.where({entityType:e}),r&&n.where({namespace:r}),n}async function xt(t,e){let r=await tt(t);if(!r)return;let o;try{o=r.entityTypes?JSON.parse(r.entityTypes):[r.entityType]}catch{o=[r.entityType]}o.includes(e)||(o.push(e),await m("entity").where({id:t}).update({entityTypes:JSON.stringify(o)}))}async function _t(t){let e=await tt(t);for(;e?.mergedWith;)e=await tt(e.mergedWith);return e}var wr=c(()=>{Zt();S();Ct();_()});async function uu(t,e,{namespace:r,threshold:o=Ow,limit:n=5}){if(!e)return[];let a=$(e),i=`${It("embedding")} <=> ${vt()}`,{rows:s}=await m.raw(`
149
+ `,[a,e,r,p.defaults.namespace,a,o,a,n]);return s}async function Te(t){await m("entity").where({id:t}).increment("mentionCount",1)}async function a_(t,e){await m("entity").where({id:t}).update({description:e})}async function i_(t,{namespace:e,limit:r=50}={}){let o=m("entity").where({entityType:t}).whereNull("mergedWith").orderBy("mentionCount","desc").limit(r);return e&&o.where({namespace:e}),o}async function s_(t){let[{count:e}]=await m("entity").where({entityType:t}).whereNull("mergedWith").count("id as count");return Number(e)}async function c_(t,{entityType:e,namespace:r,limit:o=10}={}){let n=m("entity").whereRaw("LOWER(name) LIKE ?",[`%${t.toLowerCase()}%`]).whereNull("mergedWith").orderBy("mentionCount","desc").limit(o);return e&&n.where({entityType:e}),r&&n.where({namespace:r}),n}async function xt(t,e){let r=await et(t);if(!r)return;let o;try{o=r.entityTypes?JSON.parse(r.entityTypes):[r.entityType]}catch{o=[r.entityType]}o.includes(e)||(o.push(e),await m("entity").where({id:t}).update({entityTypes:JSON.stringify(o)}))}async function Et(t){let e=await et(t);for(;e?.mergedWith;)e=await et(e.mergedWith);return e}var Ar=c(()=>{Tt();I();Nt();x()});async function Nf(t,e,{namespace:r,threshold:o=u_,limit:n=5}){if(!e)return[];let a=U(e),i=`${Rt("embedding")} <=> ${Lt()}`,{rows:s}=await m.raw(`
149
150
  SELECT id, name, entity_type AS "entityType", entity_types AS "entityTypes",
150
151
  1 - (${i}) AS similarity
151
152
  FROM entity
@@ -156,12 +157,12 @@ Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts":
156
157
  AND 1 - (${i}) >= ?
157
158
  ORDER BY ${i}
158
159
  LIMIT ?
159
- `,[a,r,t,a,o,a,n]);return s.map(f=>{let u;try{u=f.entityTypes?JSON.parse(f.entityTypes):[f.entityType]}catch{u=[f.entityType]}return{...f,types:u}})}async function Fo(t,e,r,o){let n=(r.aliases||[]).filter(Boolean),a=n.length?`Existing aliases: ${n.join(", ")}`:"",i=r.similarity>0?`Name-embedding similarity: ${(r.similarity*100).toFixed(0)}%`:"Name-embedding similarity: not directly measured (LLM judging on episode text alone)",s=o?`
160
+ `,[a,r,t,a,o,a,n]);return s.map(u=>{let f;try{f=u.entityTypes?JSON.parse(u.entityTypes):[u.entityType]}catch{f=[u.entityType]}return{...u,types:f}})}async function Xo(t,e,r,o){let n=(r.aliases||[]).filter(Boolean),a=n.length?`Existing aliases: ${n.join(", ")}`:"",i=r.similarity>0?`Name-embedding similarity: ${(r.similarity*100).toFixed(0)}%`:"Name-embedding similarity: not directly measured (LLM judging on episode text alone)",s=o?`
160
161
  Source passage where the new mention appeared:
161
162
  ---
162
163
  ${o.slice(0,1500)}
163
164
  ---
164
- `:"",f=`You're deciding whether two entity mentions refer to the same real-world thing, and whether the source passage indicates a RENAME.
165
+ `:"",u=`You're deciding whether two entity mentions refer to the same real-world thing, and whether the source passage indicates a RENAME.
165
166
 
166
167
  Mention A (new): "${t}" (type: ${e})
167
168
  Mention B (existing): "${r.name}" (types: ${(r.types||[r.entityType]).join(", ")})
@@ -175,19 +176,19 @@ Decision rules:
175
176
  - If you cannot tell, "same" is false. Don't guess.
176
177
 
177
178
  Respond as STRICT JSON, no markdown, no prose:
178
- {"same": boolean, "rename": boolean, "current_name": "<one of A or B verbatim, or null>", "reason": "one short sentence"}`,u;try{u=await ht(f,{model:p.llm.entityModel,caller:"entity-matcher"})}catch{return{same:!1,rename:!1,reason:"llm-error"}}let l=Iw(u);return l&&typeof l.same=="boolean"?{same:l.same===!0,rename:l.rename===!0&&l.same===!0,currentName:typeof l.current_name=="string"?l.current_name:null,reason:typeof l.reason=="string"?l.reason:""}:{same:/^\s*(yes|true)\b/i.test(u),rename:!1,currentName:null,reason:"fallback-text-match"}}function Iw(t){if(typeof t!="string")return null;try{return JSON.parse(t.trim())}catch{}let e=t.match(/\{[\s\S]*\}/);if(e)try{return JSON.parse(e[0])}catch{}return null}var Ow,lu=c(()=>{S();ot();Ct();_();Ow=.85});var pu={};A(pu,{followMergeChain:()=>Lw,mergeEntities:()=>vw});async function vw(t,e){let[r,o]=await Promise.all([tt(t),tt(e)]);if(!r||!o)throw new Error(`Entity ${t} or ${e} not found`);if(t===e)return r;let n=(r.mentionCount||0)+(o.mentionCount||0);await m.transaction(async i=>{await i("relation").where({sourceId:e}).update({sourceId:t}),await i("relation").where({targetId:e}).update({targetId:t}),await i("relation").whereRaw("source_id = target_id").del(),await i.raw(`
179
+ {"same": boolean, "rename": boolean, "current_name": "<one of A or B verbatim, or null>", "reason": "one short sentence"}`,f;try{f=await gt(u,{model:p.llm.entityModel,caller:"entity-matcher"})}catch{return{same:!1,rename:!1,reason:"llm-error"}}let l=f_(f);return l&&typeof l.same=="boolean"?{same:l.same===!0,rename:l.rename===!0&&l.same===!0,currentName:typeof l.current_name=="string"?l.current_name:null,reason:typeof l.reason=="string"?l.reason:""}:{same:/^\s*(yes|true)\b/i.test(f),rename:!1,currentName:null,reason:"fallback-text-match"}}function f_(t){if(typeof t!="string")return null;try{return JSON.parse(t.trim())}catch{}let e=t.match(/\{[\s\S]*\}/);if(e)try{return JSON.parse(e[0])}catch{}return null}var u_,Df=c(()=>{I();nt();Nt();x();u_=.85});var Pf={};A(Pf,{followMergeChain:()=>m_,mergeEntities:()=>l_});async function l_(t,e){let[r,o]=await Promise.all([et(t),et(e)]);if(!r||!o)throw new Error(`Entity ${t} or ${e} not found`);if(t===e)return r;let n=(r.mentionCount||0)+(o.mentionCount||0);await m.transaction(async i=>{await i("relation").where({sourceId:e}).update({sourceId:t}),await i("relation").where({targetId:e}).update({targetId:t}),await i("relation").whereRaw("source_id = target_id").del(),await i.raw(`
179
180
  INSERT INTO fact_entity (fact_id, entity_id, mention_type, mention_count, created_at, updated_at)
180
181
  SELECT fact_id, ?, mention_type, mention_count, NOW(), NOW()
181
182
  FROM fact_entity
182
183
  WHERE entity_id = ?
183
184
  ON CONFLICT (fact_id, entity_id, mention_type)
184
185
  DO UPDATE SET mention_count = fact_entity.mention_count + EXCLUDED.mention_count
185
- `,[t,e]),await i("fact_entity").where({entityId:e}).del(),await i("entity").where({id:t}).update({mentionCount:n}),await i("pod").where({entityId:t,status:"active"}).first()?await i("pod").where({entityId:e}).update({status:"archived",updatedAt:i.fn.now()}):await i("pod").where({entityId:e}).update({entityId:t,updatedAt:i.fn.now()}),await i("entity").where({id:e}).update({mergedWith:t})}),await Pw(t);let a=Cw(o);for(let i of a)await xt(t,i);return console.log(`[entity-merge] Merged ${e} (${o.name}) into ${t} (${r.name})`),{...r,mentionCount:n}}function Cw(t){if(!t.entityTypes)return[t.entityType];try{return JSON.parse(t.entityTypes)}catch{return[t.entityType]}}async function Pw(t){let e=await m("relation").where(function(){this.where({sourceId:t}).orWhere({targetId:t})}).whereNull("invalidAt"),r=Lo(e,o=>`${o.sourceId}-${o.targetId}-${o.relationType}`);for(let o of Object.values(r)){if(o.length<=1)continue;let[n,...a]=No(o,"id"),i=Ro(o,"mentionCount");await m("relation").where({id:n.id}).update({mentionCount:i}),await m("relation").whereIn("id",a.map(s=>s.id)).del()}}async function Lw(t){let e=await tt(t),r=[e?.id];for(;e?.mergedWith;)e=await tt(e.mergedWith),e&&r.push(e.id);return{canonical:e,chain:r}}var du=c(()=>{mr();S();wr()});import{readFile as Nw}from"node:fs/promises";async function be({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a,episodeText:i,episodeEntityIds:s=[]}){let f=o||p.defaults.namespace,u=await _e(t,f);if(u)return u=await _t(u.id),await Ee(u.id),u.entityType!==e&&await xt(u.id,e),u;let l=a||await Be(`${e}: ${t}`),h=await uu(t,l,{namespace:f,limit:3});for(let g of h){let w=await Fo(t,e,g,i);if(w.same)return mu(g,{newName:t,entityType:e,isRename:w.rename,currentName:w.currentName})}let d=new Set(h.map(g=>g.id)),y=s.filter(g=>g!=null&&!d.has(g));for(let g of y){let w=await _t(g);if(!w||w.namespace!==f||w.name?.toLowerCase()===t.toLowerCase())continue;let x=await Fo(t,e,{...w,types:Rw(w),similarity:0},i);if(x.same)return mu(w,{newName:t,entityType:e,isRename:x.rename,currentName:x.currentName})}try{return await ko({name:t,entityType:e,description:r,namespace:f,externalId:n,embedding:l})}catch(g){if(hu(g)){let w=await _e(t,f);if(w){let x=await _t(w.id);return await Ee(x.id),await xt(x.id,e),x}}throw g}}function hu(t){return t?!!(t.code==="23505"||typeof t.message=="string"&&t.message.includes("duplicate key value violates unique constraint")):!1}async function mu(t,{newName:e,entityType:r,isRename:o,currentName:n}){let a=await _t(t.id);if(await Ee(a.id),await xt(a.id,r),o&&a.name&&a.name.toLowerCase()!==e.toLowerCase()){let i=e.toLowerCase(),s=a.name.toLowerCase(),f=(n||"").toLowerCase(),u,l;if(f===i?(u=e,l=a.name):f===s?(u=a.name,l=e):(u=e,l=a.name),l&&l.toLowerCase()!==u.toLowerCase()&&(await gr(a.id,l),a.aliases=[...a.aliases||[],l.toLowerCase()]),u!==a.name)try{await Bo(a.id,u),a.name=u}catch(h){if(hu(h)){let d=await _e(u,a.namespace);if(d&&d.id!==a.id){let{mergeEntities:y}=await Promise.resolve().then(()=>(du(),pu));return await y(d.id,a.id),await gr(d.id,a.name),await _t(d.id)}}throw h}}return a}function Rw(t){if(t.entityTypes)try{return JSON.parse(t.entityTypes)}catch{}return[t.entityType]}async function $o(t,{promptPath:e,namespace:r}){if(!t.length)return[];let o=t.map(d=>`- [${d.category}] ${d.content}`).join(`
186
- `),a=`${await Nw(e,"utf8")}
186
+ `,[t,e]),await i("fact_entity").where({entityId:e}).del(),await i("entity").where({id:t}).update({mentionCount:n}),await i("pod").where({entityId:t,status:"active"}).first()?await i("pod").where({entityId:e}).update({status:"archived",updatedAt:i.fn.now()}):await i("pod").where({entityId:e}).update({entityId:t,updatedAt:i.fn.now()}),await i("entity").where({id:e}).update({mergedWith:t})}),await d_(t);let a=p_(o);for(let i of a)await xt(t,i);return console.log(`[entity-merge] Merged ${e} (${o.name}) into ${t} (${r.name})`),{...r,mentionCount:n}}function p_(t){if(!t.entityTypes)return[t.entityType];try{return JSON.parse(t.entityTypes)}catch{return[t.entityType]}}async function d_(t){let e=await m("relation").where(function(){this.where({sourceId:t}).orWhere({targetId:t})}).whereNull("invalidAt"),r=Fo(e,o=>`${o.sourceId}-${o.targetId}-${o.relationType}`);for(let o of Object.values(r)){if(o.length<=1)continue;let[n,...a]=Uo(o,"id"),i=jo(o,"mentionCount");await m("relation").where({id:n.id}).update({mentionCount:i}),await m("relation").whereIn("id",a.map(s=>s.id)).del()}}async function m_(t){let e=await et(t),r=[e?.id];for(;e?.mergedWith;)e=await et(e.mergedWith),e&&r.push(e.id);return{canonical:e,chain:r}}var Mf=c(()=>{xr();I();Ar()});import{readFile as h_}from"node:fs/promises";async function Ie({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a,episodeText:i,episodeEntityIds:s=[]}){let u=o||p.defaults.namespace,f=await Ae(t,u);if(f)return f=await Et(f.id),await Te(f.id),f.entityType!==e&&await xt(f.id,e),f;let l=a||await Ge(`${e}: ${t}`),h=await Nf(t,l,{namespace:u,limit:3});for(let y of h){let _=await Xo(t,e,y,i);if(_.same)return kf(y,{newName:t,entityType:e,isRename:_.rename,currentName:_.currentName})}let d=new Set(h.map(y=>y.id)),g=s.filter(y=>y!=null&&!d.has(y));for(let y of g){let _=await Et(y);if(!_||_.namespace!==u||_.name?.toLowerCase()===t.toLowerCase())continue;let w=await Xo(t,e,{..._,types:g_(_),similarity:0},i);if(w.same)return kf(_,{newName:t,entityType:e,isRename:w.rename,currentName:w.currentName})}try{return await Vo({name:t,entityType:e,description:r,namespace:u,externalId:n,embedding:l})}catch(y){if(Bf(y)){let _=await Ae(t,u);if(_){let w=await Et(_.id);return await Te(w.id),await xt(w.id,e),w}}throw y}}function Bf(t){return t?!!(t.code==="23505"||typeof t.message=="string"&&t.message.includes("duplicate key value violates unique constraint")):!1}async function kf(t,{newName:e,entityType:r,isRename:o,currentName:n}){let a=await Et(t.id);if(await Te(a.id),await xt(a.id,r),o&&a.name&&a.name.toLowerCase()!==e.toLowerCase()){let i=e.toLowerCase(),s=a.name.toLowerCase(),u=(n||"").toLowerCase(),f,l;if(u===i?(f=e,l=a.name):u===s?(f=a.name,l=e):(f=e,l=a.name),l&&l.toLowerCase()!==f.toLowerCase()&&(await Sr(a.id,l),a.aliases=[...a.aliases||[],l.toLowerCase()]),f!==a.name)try{await zo(a.id,f),a.name=f}catch(h){if(Bf(h)){let d=await Ae(f,a.namespace);if(d&&d.id!==a.id){let{mergeEntities:g}=await Promise.resolve().then(()=>(Mf(),Pf));return await g(d.id,a.id),await Sr(d.id,a.name),await Et(d.id)}}throw h}}return a}function g_(t){if(t.entityTypes)try{return JSON.parse(t.entityTypes)}catch{}return[t.entityType]}async function Zo(t,{promptPath:e,namespace:r}){if(!t.length)return[];let o=t.map(d=>`- [${d.category}] ${d.content}`).join(`
187
+ `),a=`${await h_(e,"utf8")}
187
188
 
188
189
  ---
189
190
 
190
- ${o}`,i=await ht(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=ke(i);if(!Array.isArray(s))return[];let f=s.filter(d=>d.name);if(!f.length)return[];let u=new Array(f.length),l=[],h=[];for(let d=0;d<f.length;d++){let y=await Dw(f[d].name,r);y?(u[d]=y,l.push(y.id)):h.push(d)}for(let d of h){let y=f[d],g=await be({name:y.name,entityType:"topic",description:y.description||null,namespace:r,episodeText:o,episodeEntityIds:l});u[d]=g,g?.id&&l.push(g.id)}return u.filter(Boolean)}async function Dw(t,e){let{findByName:r,getCanonicalEntity:o,incrementMentionCount:n}=await Promise.resolve().then(()=>(wr(),fu)),a=await r(t,e);if(!a)return null;let i=await o(a.id);return await n(i.id),i}var yu=c(()=>{Fe();ot();_();wr();lu()});async function xr({sourceId:t,targetId:e,relationType:r,sourceFactId:o,validAt:n}){let{rows:[a]}=await m.raw(`
191
+ ${o}`,i=await gt(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=He(i);if(!Array.isArray(s))return[];let u=s.filter(d=>d.name);if(!u.length)return[];let f=new Array(u.length),l=[],h=[];for(let d=0;d<u.length;d++){let g=await y_(u[d].name,r);g?(f[d]=g,l.push(g.id)):h.push(d)}for(let d of h){let g=u[d],y=await Ie({name:g.name,entityType:"topic",description:g.description||null,namespace:r,episodeText:o,episodeEntityIds:l});f[d]=y,y?.id&&l.push(y.id)}return f.filter(Boolean)}async function y_(t,e){let{findByName:r,getCanonicalEntity:o,incrementMentionCount:n}=await Promise.resolve().then(()=>(Ar(),Lf)),a=await r(t,e);if(!a)return null;let i=await o(a.id);return await n(i.id),i}var $f=c(()=>{Ke();nt();x();Ar();Df()});async function Tr({sourceId:t,targetId:e,relationType:r,sourceFactId:o,validAt:n}){let{rows:[a]}=await m.raw(`
191
192
  INSERT INTO relation (source_id, target_id, relation_type, source_fact_id, mention_count, valid_at, created_at, updated_at)
192
193
  VALUES (?, ?, ?, ?, 1, ?, NOW(), NOW())
193
194
  ON CONFLICT (source_id, target_id, relation_type) DO UPDATE SET
@@ -195,38 +196,39 @@ ${o}`,i=await ht(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=ke(i);i
195
196
  source_fact_id = COALESCE(EXCLUDED.source_fact_id, relation.source_fact_id),
196
197
  updated_at = NOW()
197
198
  RETURNING *
198
- `,[t,e,r,o||null,n||null]);return a}var gu=c(()=>{S()});async function _r(t,e){if(!e.length)return;let r=Do(e,"id"),o=r.map(n=>({factId:t,entityId:n.id,mentionType:"content",mentionCount:1}));await m("fact_entity").insert(o).onConflict(m.raw("(fact_id, entity_id, mention_type)")).merge({mentionCount:m.raw("fact_entity.mention_count + 1")}),await Mw(t,r)}async function Mw(t,e){let r=e.map(n=>n.id).filter(Boolean);if(!r.length)return;let o=await m("pod").whereIn("entityId",r).where({status:"active"}).select("id");for(let{id:n}of o)await oe(n,t,"mention")}var wu=c(()=>{mr();S();Re()});import kw from"node:path";async function Go(t,e,r,o){let{title:n,sourceType:a,metadata:i={}}=t,s=e.filter(d=>d.action==="ADD"||d.action==="UPDATE"),f=s.map(d=>d.fact||d.existing).filter(Boolean),l=s.find(d=>d.fact)?.fact?.id||null,h=new Date().toISOString().split("T")[0];return o?.items?.length?Bw({entityDefs:o,factObjects:f,firstFactId:l,namespace:r,today:h}):Fw({title:n,sourceType:a,metadata:i,factObjects:f,firstFactId:l,namespace:r,today:h})}async function Bw({entityDefs:t,factObjects:e,firstFactId:r,namespace:o,today:n}){let a={},i=0,s=e.map(d=>d.content).filter(Boolean).join(`
199
- `),f=[];for(let d of t.items){let y=await be({name:d.name,entityType:d.type,description:d.description,namespace:o,episodeText:s,episodeEntityIds:f});a[d.name]=y,y?.id&&f.push(y.id)}for(let d of t.relations||[]){let y=a[d.source],g=a[d.target];if(!y||!g)continue;let w=Uo(e,d.source)||Uo(e,d.target);await xr({sourceId:y.id,targetId:g.id,relationType:d.type,sourceFactId:w?.id||r,validAt:n}),i++}let u=await jo(e,o),l=Ho(Object.values(a),u),h=0;for(let d of e){let y=l.filter(g=>Er(d.content,g));y.length&&(await _r(d.id,y),h+=y.length)}return{entityCount:l.length,relationCount:i,factEntityLinks:h,topics:l.filter(d=>d.entityType==="topic").map(d=>d.name)}}async function Fw({title:t,sourceType:e,metadata:r,factObjects:o,firstFactId:n,namespace:a,today:i}){if(!t){let x=o.length?await $o(o,{promptPath:xu,namespace:a}):[],I=await jo(o,a),N=Ho(x,I),P=0;for(let T of o){let H=N.filter(Ar=>Er(T.content,Ar));H.length&&(await _r(T.id,H),P+=H.length)}return{entityCount:N.length,relationCount:0,factEntityLinks:P,topics:x.map(T=>T.name)}}let s=o.map(x=>x.content).filter(Boolean).join(`
200
- `).slice(0,2e3),f=await be({name:t,entityType:"document",description:`${e} document: ${t}`,namespace:a,episodeText:s}),u=null;r.author&&(u=await be({name:r.author,entityType:"person",namespace:a,episodeText:s,episodeEntityIds:f?.id?[f.id]:[]}));let l=o.length?await $o(o,{promptPath:xu,namespace:a}):[],h=0;u&&(await xr({sourceId:f.id,targetId:u.id,relationType:"AUTHORED_BY",sourceFactId:n,validAt:i}),h++);for(let x of l){let I=Uo(o,x.name);await xr({sourceId:f.id,targetId:x.id,relationType:"COVERS",sourceFactId:I?.id||n,validAt:i}),h++}let d=[f,u,...l].filter(Boolean),y=await jo(o,a),g=Ho(d,y),w=0;for(let x of o){let I=g.filter(N=>Er(x.content,N));I.length&&(await _r(x.id,I),w+=I.length)}return{entityCount:g.length,relationCount:h,factEntityLinks:w,topics:l.map(x=>x.name)}}function Uo(t,e){if(!e)return null;let r=e.toLowerCase();return t.find(o=>o.content?.toLowerCase().includes(r))||null}function Er(t,e){if(!t||!e?.name)return!1;let r=t.toLowerCase();return[e.name.toLowerCase(),...e.aliases||[]].some(n=>n?new RegExp(`\\b${$w(n)}\\b`).test(r):!1)}function $w(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ho(...t){let e=new Set,r=[];for(let o of t)for(let n of o)!n||e.has(n.id)||(e.add(n.id),r.push(n));return r}async function jo(t,e){if(!t?.length)return[];let r=await m("entity as e").join("pod as p","p.entity_id","e.id").where("p.status","active").where("e.namespace",e).whereNull("e.mergedWith").select("e.id","e.uid","e.name","e.entityType","e.aliases");return r.length?r.filter(o=>t.some(n=>Er(n.content,o))):[]}var xu,_u=c(()=>{yu();gu();wu();B();S();xu=kw.join(q,"entity-extraction.md")});var Uw,Eu,Wo=c(()=>{S();_();Uw=1440*60*1e3,Eu={name:"person",description:"A person you have a working relationship with",identityField:"primary_handle",attrsSchema:{platforms:"object",role:"string",relationship:"string",notes:"string"},visibility:"private",activeMode:"rolling-window",hotContextBudget:4,retrievalWeights:{recency:1,relevance:.8},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/person.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.namespace||p.defaults.namespace;try{let r=new Date(Date.now()-Uw);return(await m("pod as p").join("pod_membership as pm","pm.pod_id","p.id").join("fact_lifecycle as fl","fl.fact_id","pm.member_id").where("pm.memberType","fact").where("p.podType","person").where("p.namespace",e).where("p.status","active").where("fl.lastAccessedAt",">=",r).distinct("p.uid")).map(n=>n.uid)}catch{return[]}}}});async function bu(t,e){if(!t||typeof t!="object")return[];let r=[],o=e||p.defaults.namespace;if(t.slack?.team_id&&t.connection_id){let n=await ee({podType:"connector_workspace",externalId:`slack:${t.slack.team_id}`,namespace:o});n&&r.push({podId:n.id,role:"primary"})}if(t.github?.org&&t.connection_id){let n=await ee({podType:"connector_workspace",externalId:`github:${t.github.org}`,namespace:o});n&&r.push({podId:n.id,role:"primary"})}return r}var Au=c(()=>{At();Wo();_()});var Ou={};A(Ou,{ingestDocument:()=>Kw});import{createHash as jw}from"node:crypto";import{join as Gw}from"node:path";async function Kw({content:t,title:e,sourcePath:r,sourceType:o="raw",contentType:n,namespace:a,metadata:i={},promptPath:s,categories:f,entities:u,skipFacts:l=!1,skipEntities:h=!1,skipContextualization:d=!1,classify:y=!0,podUids:g=[],resolvePodsFrom:w=null}){let x=a||p.defaults.namespace,I=f||Object.keys(yr),N=s||Ww,P=e||r,T=null;if(y&&(process.stderr.write(`[0/6] Classifying input...
201
- `),T=await su(t,{title:P}),process.stderr.write(` Route: ${T.route} \u2014 ${T.reasoning}
202
- `),T.route==="noise"))return process.stderr.write(` Skipped \u2014 classified as noise.
203
- `),{documentId:null,title:P,skipped:!0,route:"noise"};process.stderr.write(`[1/6] Checking for changes...
204
- `);let H=jw("sha256").update(t).digest("hex"),Ar=r||`thought:${H}`,{doc:k,changed:Wu}=await Ea({sourcePath:Ar,sourceType:o,title:P,contentHash:H,namespace:x});if(!Wu)return process.stderr.write(` Skipped \u2014 content unchanged.
205
- `),{documentId:k.id,title:P,skipped:!0};i&&(Object.keys(i).length||i.connection_id)&&await Aa(k.id,i,i.connection_id??null);let Sr=await qw({podUids:g,resolvePodsFrom:w,metadata:i,namespace:x});for(let{podId:R,role:Et}of Sr)await Mr(R,k.id,Et);process.stderr.write(`[2/6] Parsing content...
206
- `);let Tr=ua(t,{format:i.format,filePath:r,contentType:n});if(P=e||Tr.metadata?.title||r,T?.route==="thought"&&T.facts.length){process.stderr.write(`[thought] Storing ${T.facts.length} facts directly...
207
- `);let R=await Yw(T.facts,{documentId:k.id,namespace:x}),Et={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};return!h&&R.results.length&&(Et=await Go({title:P,sourceType:o,metadata:i},R.results,x,u)),await Qr(k.id,{chunkCount:0,factCount:R.counts.added}),await Su(R.results,Sr),process.stderr.write(`Done. Route: thought, ${R.counts.total} facts (${R.counts.added} new)
208
- `),{documentId:k.id,documentUid:k.uid,title:P,skipped:!1,route:"thought",chunkCount:0,facts:R.counts,entities:Et}}let j=[],X={counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]},Xt={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};try{process.stderr.write(`[3/6] Chunking and embedding...
209
- `),j=pa(Tr.sections),process.stderr.write(` ${j.length} chunks created
210
- `),!d&&j.length&&(j=await xa(j,Tr.text,{title:P}));let R=j.map(zt=>{let Ae=zt.contextualPrefix;return Ae?`${Ae}
211
- ${zt.content}`:zt.content}),Et=await se(R),Ku=j.map((zt,Ae)=>({...zt,embedding:Et[Ae]}));await Ta(k.id,Ku,x),!l&&p.ingest.eagerExtract?(process.stderr.write(`[4/6] Extracting facts...
212
- `),X=await Jw(j,{documentId:k.id,namespace:x,promptPath:N,categories:I})):p.ingest.eagerExtract||process.stderr.write(`[4/6] Skipping fact extraction (SIGIL_EAGER_EXTRACT=false)
213
- `),await Qr(k.id,{chunkCount:j.length,factCount:X.counts.added+X.counts.updated+X.counts.contradicted}),await Su(X.results,Sr),!h&&X.results.length&&(process.stderr.write(`[5/6] Linking entities...
214
- `),Xt=await Go({title:P,sourceType:o,metadata:i},X.results,x,u),process.stderr.write(` ${Xt.entityCount} entities, ${Xt.relationCount} relations
215
- `))}catch(R){throw console.error(`[pipeline] Failed after document upsert: ${R.message}`),await ba(k.id).catch(()=>{}),R}return process.stderr.write(`Done. ${j.length} chunks, ${X.counts.total} facts, ${Xt.entityCount} entities
216
- `),{documentId:k.id,documentUid:k.uid,title:P,skipped:!1,chunkCount:j.length,facts:X.counts,entities:Xt}}async function Tu(t,{documentId:e,namespace:r,embeddings:o,defaultConfidence:n="medium",defaultImportance:a="supplementary"}){let i={total:t.length,added:0,skipped:0,updated:0,contradicted:0},s=[];for(let f=0;f<t.length;f++){let u=t[f],l=await ou({content:u.content,category:u.category,confidence:u.confidence||n,importance:u.importance||a,namespace:r,sourceDocumentIds:e?[e]:[],sourceSection:u.sourceSection||u.category,embedding:o[f]});s.push(l);let h=l.action.toLowerCase();h==="add"?i.added++:h==="skip"?i.skipped++:h==="update"?i.updated++:h==="contradict"&&i.contradicted++}return{counts:i,results:s}}async function Yw(t,{documentId:e,namespace:r}){let o=await se(t.map(n=>n.content));return Tu(t,{documentId:e,namespace:r,embeddings:o,defaultConfidence:"high",defaultImportance:"vital"})}async function Jw(t,{documentId:e,namespace:r,promptPath:o,categories:n}){let a=await Qf(t,{promptPath:o,categories:n});if(process.stderr.write(` ${a.length} facts extracted from ${t.length} chunks
217
- `),!a.length)return{counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]};let i=await se(a.map(s=>s.content));return Tu(a,{documentId:e,namespace:r,embeddings:i})}async function qw({podUids:t,resolvePodsFrom:e,metadata:r,namespace:o}){let n=[];for(let i of t){let s=await te(i);s&&n.push({podId:s.id,role:"primary"})}if(e==="metadata"){let i=await bu(r,o);for(let s of i)n.push(s)}let a=new Map;for(let i of n){let s=a.get(i.podId);(!s||i.role==="primary"&&s.role!=="primary")&&a.set(i.podId,i)}return[...a.values()]}async function Su(t,e){if(!(!e.length||!t.length))for(let r of t){let o=r?.fact?.id??r?.existing?.id;if(!o)continue;let n=r?.action==="SKIP"?"mention":"primary";for(let{podId:a}of e)await oe(a,o,n)}}var Ww,Iu=c(()=>{la();da();Fe();_a();Sa();Oa();tu();nu();Mo();cu();_u();At();Re();Au();_();B();Ww=Gw(q,"default-extraction.md")});function Cu(t){for(let e of Vw)if(!t[e])throw new Error(`Pod kind missing required field: ${e}`);if(t.visibility&&!Xw.has(t.visibility))throw new Error(`Pod kind ${t.name}: invalid visibility ${t.visibility}`);if(t.activeMode&&!zw.has(t.activeMode))throw new Error(`Pod kind ${t.name}: invalid activeMode ${t.activeMode}`);if(t.writePolicy&&!Zw.has(t.writePolicy))throw new Error(`Pod kind ${t.name}: invalid writePolicy ${t.writePolicy}`);vu.set(t.name,Qw(t))}function Qw(t){return{visibility:"private",activeMode:"multi-active",hotContextBudget:0,retrievalWeights:{recency:1,relevance:1},importanceDefault:2,ttlDays:null,writePolicy:"origin-only",lifecycle:{},...t}}async function Pu(t={}){let e=[];for(let r of vu.values())if(typeof r.resolveActiveScope=="function")try{let o=await r.resolveActiveScope(t);Array.isArray(o)&&o.length>0&&e.push({kind:r,scope:o})}catch{}return e}var Vw,Xw,zw,Zw,vu,Ko=c(()=>{B();Vw=["name"],Xw=new Set(["private","shared","public"]),zw=new Set(["singleton-live","multi-active","rolling-window","always"]),Zw=new Set(["origin-only","shared-allowlist","open"]),vu=new Map});async function ex(t){if(t.project)return t.project;if(!t.cwd)try{let{getActiveCursor:e}=await Promise.resolve().then(()=>(St(),Le)),r=await e();t={...t,cwd:r?.cwd}}catch{return null}if(!t.cwd)return null;try{let{deriveProjectRoot:e}=await Promise.resolve().then(()=>(De(),Tn)),r=e(t.cwd);return r?r.split("/").pop():null}catch{return null}}function rx(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var tx,Lu,Nu=c(()=>{S();_();tx="playbook",Lu={name:"playbook",description:"A reusable workflow or debug recipe (procedural memory)",identityField:"slug",attrsSchema:{slug:"string",project:"string",description:"string",tags:"array"},visibility:"shared",activeMode:"always",hotContextBudget:3,retrievalWeights:{recency:.3,relevance:1},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/playbook.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.namespace||p.defaults.namespace,r=await ex(t);try{let n=await m("pod").where({podType:tx,namespace:e,status:"active"}).select("uid","attrs");return r?n.filter(i=>{let s=rx(i.attrs);return!s.project||s.project===r}).map(i=>i.uid):n.map(i=>i.uid)}catch{return[]}}}});var ox,Ru,Du=c(()=>{S();_();ox=["__virtual:vital__"],Ru={name:"vital",description:"Facts marked importance=5 (vital), surfaced globally",identityField:null,attrsSchema:{},visibility:"public",activeMode:"always",hotContextBudget:6,retrievalWeights:{recency:.5,relevance:1},importanceDefault:5,ttlDays:null,schemaDocPath:"kinds/vital.schema.md",writePolicy:"open",resolveActiveScope:async()=>ox,fetchFacts:async(t={},{slots:e=8,namespace:r}={})=>{let o=r||t.namespace||p.defaults.namespace;return m("fact as f").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").where({"f.status":"active","f.namespace":o}).where(n=>{n.where("f.importance","vital").orWhere("f.importance_score",5)}).orderByRaw("COALESCE(fl.access_count, 0) DESC, f.created_at DESC").limit(e).pluck("f.content")}}});function ax(){if(!Mu){for(let t of nx)Cu(t);Mu=!0}}var nx,Mu,ku=c(()=>{Ko();Nr();Wo();De();Nu();Du();nx=[xn,Fr,Eu,Lu,Ru],Mu=!1;ax()});var $u={};A($u,{factsInPodsByRecency:()=>Fu,getHotFacts:()=>Bu,updateContextSnapshot:()=>cx});async function Bu({namespace:t,limit:e=ix,ctx:r={}}={}){let o=t||p.defaults.namespace,n={...r,namespace:o};n.cwd||(n.cwd=await sx());let a=await Pu(n),i=await Promise.all(a.map(async({kind:u,scope:l})=>{try{return typeof u.fetchFacts=="function"?await u.fetchFacts(n,{slots:u.hotContextBudget,namespace:o}):await Fu(l,o,u.hotContextBudget)}catch{return[]}})),s=new Set,f=[];for(let u of i)for(let l of u)if(!(!l||s.has(l))&&(s.add(l),f.push(l),f.length>=e))return f;if(f.length<e){let u=await m("fact as f").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").where({"f.status":"active","f.namespace":o}).orderByRaw("COALESCE(fl.last_accessed_at, f.created_at) DESC").limit(e).pluck("f.content");for(let l of u)if(!(!l||s.has(l))&&(s.add(l),f.push(l),f.length>=e))break}return f.slice(0,e)}async function Fu(t,e,r){if(!Array.isArray(t)||t.length===0)return[];let o=t.filter(n=>typeof n=="string"&&!n.startsWith("__virtual:"));return o.length===0?[]:m("fact as f").join("pod_membership as pm",function(){this.on("pm.member_id","=","f.id").andOnVal("pm.member_type","=","fact")}).join("pod as p","p.id","pm.pod_id").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").whereIn("p.uid",o).where({"f.status":"active","f.namespace":e}).orderByRaw(`
199
+ `,[t,e,r,o||null,n||null]);return a}var Ff=c(()=>{I()});async function Ir(t,e){if(!e.length)return;let r=Ho(e,"id"),o=r.map(n=>({factId:t,entityId:n.id,mentionType:"content",mentionCount:1}));await m("fact_entity").insert(o).onConflict(m.raw("(fact_id, entity_id, mention_type)")).merge({mentionCount:m.raw("fact_entity.mention_count + 1")}),await w_(t,r)}async function w_(t,e){let r=e.map(n=>n.id).filter(Boolean);if(!r.length)return;let o=await m("pod").whereIn("entityId",r).where({status:"active"}).select("id");for(let{id:n}of o)await ae(n,t,"mention")}var Uf=c(()=>{xr();I();Ue()});import __ from"node:path";async function rn(t,e,r,o){let{title:n,sourceType:a,metadata:i={}}=t,s=e.filter(d=>d.action==="ADD"||d.action==="UPDATE"),u=s.map(d=>d.fact||d.existing).filter(Boolean),l=s.find(d=>d.fact)?.fact?.id||null,h=new Date().toISOString().split("T")[0];return o?.items?.length?x_({entityDefs:o,factObjects:u,firstFactId:l,namespace:r,today:h}):E_({title:n,sourceType:a,metadata:i,factObjects:u,firstFactId:l,namespace:r,today:h})}async function x_({entityDefs:t,factObjects:e,firstFactId:r,namespace:o,today:n}){let a={},i=0,s=e.map(d=>d.content).filter(Boolean).join(`
200
+ `),u=[];for(let d of t.items){let g=await Ie({name:d.name,entityType:d.type,description:d.description,namespace:o,episodeText:s,episodeEntityIds:u});a[d.name]=g,g?.id&&u.push(g.id)}for(let d of t.relations||[]){let g=a[d.source],y=a[d.target];if(!g||!y)continue;let _=Qo(e,d.source)||Qo(e,d.target);await Tr({sourceId:g.id,targetId:y.id,relationType:d.type,sourceFactId:_?.id||r,validAt:n}),i++}let f=await en(e,o),l=tn(Object.values(a),f),h=0;for(let d of e){let g=l.filter(y=>Or(d.content,y));g.length&&(await Ir(d.id,g),h+=g.length)}return{entityCount:l.length,relationCount:i,factEntityLinks:h,topics:l.filter(d=>d.entityType==="topic").map(d=>d.name)}}async function E_({title:t,sourceType:e,metadata:r,factObjects:o,firstFactId:n,namespace:a,today:i}){if(!t){let w=o.length?await Zo(o,{promptPath:jf,namespace:a}):[],C=await en(o,a),M=tn(w,C),L=0;for(let O of o){let H=M.filter(Cr=>Or(O.content,Cr));H.length&&(await Ir(O.id,H),L+=H.length)}return{entityCount:M.length,relationCount:0,factEntityLinks:L,topics:w.map(O=>O.name)}}let s=o.map(w=>w.content).filter(Boolean).join(`
201
+ `).slice(0,2e3),u=await Ie({name:t,entityType:"document",description:`${e} document: ${t}`,namespace:a,episodeText:s}),f=null;r.author&&(f=await Ie({name:r.author,entityType:"person",namespace:a,episodeText:s,episodeEntityIds:u?.id?[u.id]:[]}));let l=o.length?await Zo(o,{promptPath:jf,namespace:a}):[],h=0;f&&(await Tr({sourceId:u.id,targetId:f.id,relationType:"AUTHORED_BY",sourceFactId:n,validAt:i}),h++);for(let w of l){let C=Qo(o,w.name);await Tr({sourceId:u.id,targetId:w.id,relationType:"COVERS",sourceFactId:C?.id||n,validAt:i}),h++}let d=[u,f,...l].filter(Boolean),g=await en(o,a),y=tn(d,g),_=0;for(let w of o){let C=y.filter(M=>Or(w.content,M));C.length&&(await Ir(w.id,C),_+=C.length)}return{entityCount:y.length,relationCount:h,factEntityLinks:_,topics:l.map(w=>w.name)}}function Qo(t,e){if(!e)return null;let r=e.toLowerCase();return t.find(o=>o.content?.toLowerCase().includes(r))||null}function Or(t,e){if(!t||!e?.name)return!1;let r=t.toLowerCase();return[e.name.toLowerCase(),...e.aliases||[]].some(n=>n?new RegExp(`\\b${b_(n)}\\b`).test(r):!1)}function b_(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function tn(...t){let e=new Set,r=[];for(let o of t)for(let n of o)!n||e.has(n.id)||(e.add(n.id),r.push(n));return r}async function en(t,e){if(!t?.length)return[];let r=await m("entity as e").join("pod as p","p.entity_id","e.id").where("p.status","active").where("e.namespace",e).whereNull("e.mergedWith").select("e.id","e.uid","e.name","e.entityType","e.aliases");return r.length?r.filter(o=>t.some(n=>Or(n.content,o))):[]}var jf,Hf=c(()=>{$f();Ff();Uf();$();I();jf=__.join(z,"entity-extraction.md")});var S_,Gf,on=c(()=>{I();x();S_=1440*60*1e3,Gf={name:"person",description:"A person you have a working relationship with",identityField:"primary_handle",attrsSchema:{platforms:"object",role:"string",relationship:"string",notes:"string"},visibility:"private",activeMode:"rolling-window",hotContextBudget:4,retrievalWeights:{recency:1,relevance:.8},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/person.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.namespace||p.defaults.namespace;try{let r=new Date(Date.now()-S_);return(await m("pod as p").join("pod_membership as pm","pm.pod_id","p.id").join("fact_lifecycle as fl","fl.fact_id","pm.member_id").where("pm.memberType","fact").where("p.podType","person").where("p.namespace",e).where("p.status","active").where("fl.lastAccessedAt",">=",r).distinct("p.uid")).map(n=>n.uid)}catch{return[]}}}});async function Kf(t,e){if(!t||typeof t!="object")return[];let r=[],o=e||p.defaults.namespace;if(t.slack?.team_id&&t.connection_id){let a=await oe({podType:"connector_workspace",externalId:`slack:${t.slack.team_id}`,namespace:o});a&&r.push({podId:a.id,role:"primary"})}if(t.github?.org&&t.connection_id){let a=await oe({podType:"connector_workspace",externalId:`github:${t.github.org}`,namespace:o});a&&r.push({podId:a.id,role:"primary"})}let n=t.project_root||t.source_root;if(n)try{let{ensureProjectPod:a}=await Promise.resolve().then(()=>(se(),qr)),i=await a({cwd:n,namespace:o});i&&r.push({podId:i.id,role:"primary"})}catch{}return r}var Wf=c(()=>{It();on();x()});var Vf={};A(Vf,{ingestDocument:()=>v_});import{createHash as T_}from"node:crypto";import{join as I_}from"node:path";async function v_({content:t,title:e,sourcePath:r,sourceType:o="raw",contentType:n,namespace:a,metadata:i={},promptPath:s,categories:u,entities:f,skipFacts:l=!1,skipEntities:h=!1,skipContextualization:d=!1,classify:g=!0,podUids:y=[],resolvePodsFrom:_=null}){t=St(t);let w=a||p.defaults.namespace,C=u||Object.keys(br),M=s||O_,L=e||r,O=null;if(g&&(process.stderr.write(`[0/6] Classifying input...
202
+ `),O=await Cf(t,{title:L}),process.stderr.write(` Route: ${O.route} \u2014 ${O.reasoning}
203
+ `),O.route==="noise"))return process.stderr.write(` Skipped \u2014 classified as noise.
204
+ `),{documentId:null,title:L,skipped:!0,route:"noise"};process.stderr.write(`[1/6] Checking for changes...
205
+ `);let H=T_("sha256").update(t).digest("hex"),Cr=r||`thought:${H}`,{doc:D,changed:_l}=await Ha({sourcePath:Cr,sourceType:o,title:L,contentHash:H,namespace:w});if(!_l)return process.stderr.write(` Skipped \u2014 content unchanged.
206
+ `),{documentId:D.id,title:L,skipped:!0};i&&(Object.keys(i).length||i.connection_id)&&await Ka(D.id,i,i.connection_id??null);let Rr=await L_({podUids:y,resolvePodsFrom:_,metadata:i,namespace:w});for(let{podId:N,role:bt}of Rr)await Hr(N,D.id,bt);process.stderr.write(`[2/6] Parsing content...
207
+ `);let Lr=La(t,{format:i.format,filePath:r,contentType:n});if(L=e||Lr.metadata?.title||r,O?.route==="thought"&&O.facts.length){process.stderr.write(`[thought] Storing ${O.facts.length} facts directly...
208
+ `);let N=await C_(O.facts,{documentId:D.id,namespace:w}),bt={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};return!h&&N.results.length&&(bt=await rn({title:L,sourceType:o,metadata:i},N.results,w,f)),await so(D.id,{chunkCount:0,factCount:N.counts.added}),await Jf(N.results,Rr),await Jo(D.id,N.results.map(Oe=>Oe.fact?.id??Oe.existing?.id).filter(Boolean)),process.stderr.write(`Done. Route: thought, ${N.counts.total} facts (${N.counts.added} new)
209
+ `),{documentId:D.id,documentUid:D.uid,title:L,skipped:!1,route:"thought",chunkCount:0,facts:{...N.counts,verdicts:Yf(N.results)},entities:bt}}let G=[],K={counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]},Qt={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};try{process.stderr.write(`[3/6] Chunking and embedding...
210
+ `),G=Da(Lr.sections),process.stderr.write(` ${G.length} chunks created
211
+ `),!d&&G.length&&(G=await Ua(G,Lr.text,{title:L}));let N=G.map(ot=>{let ve=ot.contextualPrefix;return ve?`${ve}
212
+ ${ot.content}`:ot.content}),bt=await fe(N),Oe=G.map((ot,ve)=>({...ot,embedding:bt[ve]}));await Ya(D.id,Oe,w),!l&&p.ingest.eagerExtract?(process.stderr.write(`[4/6] Extracting facts...
213
+ `),K=await R_(G,{documentId:D.id,namespace:w,promptPath:M,categories:C})):p.ingest.eagerExtract||process.stderr.write(`[4/6] Skipping fact extraction (SIGIL_EAGER_EXTRACT=false)
214
+ `),await so(D.id,{chunkCount:G.length,factCount:K.counts.added+K.counts.updated+K.counts.contradicted}),await Jf(K.results,Rr),await Jo(D.id,K.results.map(ot=>ot.fact?.id??ot.existing?.id).filter(Boolean)),!h&&K.results.length&&(process.stderr.write(`[5/6] Linking entities...
215
+ `),Qt=await rn({title:L,sourceType:o,metadata:i},K.results,w,f),process.stderr.write(` ${Qt.entityCount} entities, ${Qt.relationCount} relations
216
+ `))}catch(N){throw console.error(`[pipeline] Failed after document upsert: ${N.message}`),await Ga(D.id).catch(()=>{}),N}return process.stderr.write(`Done. ${G.length} chunks, ${K.counts.total} facts, ${Qt.entityCount} entities
217
+ `),{documentId:D.id,documentUid:D.uid,title:L,skipped:!1,route:O?.route??null,chunkCount:G.length,facts:{...K.counts,verdicts:Yf(K.results)},entities:Qt}}function Yf(t){return(t||[]).map(e=>({action:e.action,factId:e.fact?.id??e.existing?.id??null,content:String(e.fact?.content||e.existing?.content||"").slice(0,240),audm:e.audm||null,supersededId:e.supersededId??null,contradictedId:e.contradictedId??null}))}async function qf(t,{documentId:e,namespace:r,embeddings:o,defaultConfidence:n="medium",defaultImportance:a="supplementary"}){let i={total:t.length,added:0,skipped:0,updated:0,contradicted:0},s=[];for(let u=0;u<t.length;u++){let f=t[u],l=await Af({content:f.content,category:f.category,confidence:f.confidence||n,importance:f.importance||a,namespace:r,sourceDocumentIds:e?[e]:[],sourceSection:f.sourceSection||f.category,embedding:o[u]});s.push(l);let h=l.action.toLowerCase();h==="add"?i.added++:h==="skip"?i.skipped++:h==="update"?i.updated++:h==="contradict"&&i.contradicted++}return{counts:i,results:s}}async function C_(t,{documentId:e,namespace:r}){let o=await fe(t.map(n=>n.content));return qf(t,{documentId:e,namespace:r,embeddings:o,defaultConfidence:"high",defaultImportance:"vital"})}async function R_(t,{documentId:e,namespace:r,promptPath:o,categories:n}){let a=await xf(t,{promptPath:o,categories:n});if(process.stderr.write(` ${a.length} facts extracted from ${t.length} chunks
218
+ `),!a.length)return{counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]};let i=await fe(a.map(s=>s.content));return qf(a,{documentId:e,namespace:r,embeddings:i})}async function L_({podUids:t,resolvePodsFrom:e,metadata:r,namespace:o}){let n=[];for(let i of t){let s=await re(i);s&&n.push({podId:s.id,role:"primary"})}if(e==="metadata"){let i=await Kf(r,o);for(let s of i)n.push(s)}let a=new Map;for(let i of n){let s=a.get(i.podId);(!s||i.role==="primary"&&s.role!=="primary")&&a.set(i.podId,i)}return[...a.values()]}async function Jf(t,e){if(!(!e.length||!t.length))for(let r of t){let o=r?.fact?.id??r?.existing?.id;if(!o)continue;let n=r?.action==="SKIP"?"mention":"primary";for(let{podId:a}of e)await ae(a,o,n)}}var O_,zf=c(()=>{Na();Pa();Ke();ja();Wa();Ja();Ef();If();qo();Rf();Hf();It();Ue();Wf();Le();x();$();O_=I_(z,"default-extraction.md")});var nn,N_,Xf,Zf=c(()=>{nn=class{constructor(){this.buffer=[],this.subs=new Set}emit(e,r={}){let o={type:e,ts:new Date().toISOString(),...r};this.buffer.push(o),this.buffer.length>200&&this.buffer.shift();for(let n of this.subs)try{n(o)}catch{}return o}subscribe(e){return this.subs.add(e),()=>this.subs.delete(e)}recent(e=50){return e>=this.buffer.length?[...this.buffer]:this.buffer.slice(-e)}subscriberCount(){return this.subs.size}},N_=new nn,Xf=N_});var tl={};A(tl,{clearTraces:()=>$_,getTrace:()=>B_,listTraces:()=>k_,recordTrace:()=>M_});function P_(){let t=Go();return{deviceId:t?.device?.id??null,transport:t?.transport??null}}async function M_({kind:t,summary:e,detail:r={},namespace:o=null,durationMs:n=null}){let a=`trace-${X(16)}`,i=new Date().toISOString(),{deviceId:s,transport:u}=P_(),f=r;try{JSON.stringify(r).length>D_&&(f={truncated:!0,note:"trace detail exceeded size cap",summary:e})}catch{f={error:"detail not serializable"}}try{Xf.emit("trace",{uid:a,kind:t,summary:e,namespace:o,durationMs:n,deviceId:s,transport:u,detail:f})}catch{}try{return await m("trace_event").insert({uid:a,kind:t,ts:i,duration_ms:n,namespace:o,summary:e,device_id:s,transport:u,detail:JSON.stringify(f)}),a}catch(l){return console.error("[trace-store] persist failed:",l.message),null}}async function k_({kind:t=null,namespace:e=null,before:r=null,limit:o=50}={}){let n=m("trace_event").select("uid","kind","ts","duration_ms as durationMs","namespace","summary","device_id as deviceId","transport","detail").orderBy("ts","desc").limit(Math.min(Number(o)||50,200));return t&&(n=n.where({kind:t})),e&&(n=n.where({namespace:e})),r&&(n=n.where("ts","<",r)),(await n).map(i=>({...i,detail:typeof i.detail=="string"?Qf(i.detail):i.detail}))}async function B_(t){let e=await m("trace_event").select("uid","kind","ts","duration_ms as durationMs","namespace","summary","device_id as deviceId","transport","detail").where({uid:t}).first();return e?{...e,detail:typeof e.detail=="string"?Qf(e.detail):e.detail}:null}async function $_(){return{cleared:await m("trace_event").del()}}function Qf(t){try{return JSON.parse(t)}catch{return{}}}var D_,el=c(()=>{Tt();I();Zf();Ko();D_=256*1024});function ol(t){for(let e of F_)if(!t[e])throw new Error(`Pod kind missing required field: ${e}`);if(t.visibility&&!U_.has(t.visibility))throw new Error(`Pod kind ${t.name}: invalid visibility ${t.visibility}`);if(t.activeMode&&!j_.has(t.activeMode))throw new Error(`Pod kind ${t.name}: invalid activeMode ${t.activeMode}`);if(t.writePolicy&&!H_.has(t.writePolicy))throw new Error(`Pod kind ${t.name}: invalid writePolicy ${t.writePolicy}`);rl.set(t.name,G_(t))}function G_(t){return{visibility:"private",activeMode:"multi-active",hotContextBudget:0,retrievalWeights:{recency:1,relevance:1},importanceDefault:2,ttlDays:null,writePolicy:"origin-only",lifecycle:{},...t}}async function nl(t={}){let e=[];for(let r of rl.values())if(typeof r.resolveActiveScope=="function")try{let o=await r.resolveActiveScope(t);Array.isArray(o)&&o.length>0&&e.push({kind:r,scope:o})}catch(o){process.stderr.write(`[sigil:pods] resolveActiveScope failed for kind "${r.name}": ${o.message}
219
+ `),K_(r.name,o)}return e}function K_(t,e){Promise.resolve().then(()=>(el(),tl)).then(({recordTrace:r})=>r({kind:"lifecycle",summary:`pod-resolution failed for kind "${t}"`,detail:{kind:t,error:e.message}})).catch(()=>{})}var F_,U_,j_,H_,rl,an=c(()=>{$();F_=["name"],U_=new Set(["private","shared","public"]),j_=new Set(["singleton-live","multi-active","rolling-window","always"]),H_=new Set(["origin-only","shared-allowlist","open"]),rl=new Map});async function Y_(t){if(t.project)return t.project;if(!t.cwd)try{let{getActiveCursor:e}=await Promise.resolve().then(()=>(Ot(),$e)),r=await e();t={...t,cwd:r?.cwd}}catch{return null}if(!t.cwd)return null;try{let{deriveProjectRoot:e}=await Promise.resolve().then(()=>(se(),qr)),r=e(t.cwd);return r?r.split("/").pop():null}catch{return null}}function J_(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var W_,al,il=c(()=>{I();x();W_="playbook",al={name:"playbook",description:"A reusable workflow or debug recipe (procedural memory)",identityField:"slug",attrsSchema:{slug:"string",project:"string",description:"string",tags:"array"},visibility:"shared",activeMode:"always",hotContextBudget:3,retrievalWeights:{recency:.3,relevance:1},importanceDefault:3,ttlDays:null,schemaDocPath:"kinds/playbook.schema.md",writePolicy:"origin-only",resolveActiveScope:async(t={})=>{let e=t.namespace||p.defaults.namespace,r=await Y_(t);try{let n=await m("pod").where({podType:W_,namespace:e,status:"active"}).select("uid","attrs");return r?n.filter(i=>{let s=J_(i.attrs);return!s.project||s.project===r}).map(i=>i.uid):n.map(i=>i.uid)}catch{return[]}}}});var q_,sl,cl=c(()=>{I();x();q_=["__virtual:vital__"],sl={name:"vital",description:"Facts marked importance=5 (vital), surfaced globally",identityField:null,attrsSchema:{},visibility:"public",activeMode:"always",hotContextBudget:6,retrievalWeights:{recency:.5,relevance:1},importanceDefault:5,ttlDays:null,schemaDocPath:"kinds/vital.schema.md",writePolicy:"open",resolveActiveScope:async()=>q_,fetchFacts:async(t={},{slots:e=8,namespace:r}={})=>{let o=r||t.namespace||p.defaults.namespace;return m("fact as f").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").where({"f.status":"active","f.namespace":o}).where(n=>{n.where("f.importance","vital").orWhere("f.importance_score",5)}).orderByRaw("COALESCE(fl.access_count, 0) DESC, f.created_at DESC").limit(e).pluck("f.content")}}});function z_(){if(!ul){for(let t of V_)ol(t);ul=!0}}var V_,ul,fl=c(()=>{an();Fr();on();se();il();cl();V_=[jn,Wr,Gf,al,sl],ul=!1;z_()});var ml={};A(ml,{factsInPodsByRecency:()=>pl,getHotFacts:()=>ll,updateContextSnapshot:()=>Q_,writeSnapshotToFile:()=>dl});async function ll({namespace:t,limit:e=X_,ctx:r={}}={}){let o=t||p.defaults.namespace,n={...r,namespace:o};n.cwd||(n.cwd=await Z_());let a=await nl(n),i=await Promise.all(a.map(async({kind:f,scope:l})=>{try{return typeof f.fetchFacts=="function"?await f.fetchFacts(n,{slots:f.hotContextBudget,namespace:o}):await pl(l,o,f.hotContextBudget)}catch{return[]}})),s=new Set,u=[];for(let f of i)for(let l of f)if(!(!l||s.has(l))&&(s.add(l),u.push(l),u.length>=e))return u;if(u.length===0){let f=await m("fact as f").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").where({"f.status":"active","f.namespace":o}).orderByRaw("COALESCE(fl.last_accessed_at, f.created_at) DESC").limit(e).pluck("f.content");for(let l of f)if(!(!l||s.has(l))&&(s.add(l),u.push(l),u.length>=e))break}return u.slice(0,e)}async function pl(t,e,r){if(!Array.isArray(t)||t.length===0)return[];let o=t.filter(n=>typeof n=="string"&&!n.startsWith("__virtual:"));return o.length===0?[]:m("fact as f").join("pod_membership as pm",function(){this.on("pm.member_id","=","f.id").andOnVal("pm.member_type","=","fact")}).join("pod as p","p.id","pm.pod_id").leftJoin("fact_lifecycle as fl","fl.fact_id","f.id").whereIn("p.uid",o).where({"f.status":"active","f.namespace":e}).orderByRaw(`
218
220
  COALESCE(f.importance_score, 2) DESC,
219
221
  COALESCE(fl.last_accessed_at, f.created_at) DESC
220
- `).limit(r).pluck("f.content")}async function sx(){try{let{getActiveCursor:t}=await Promise.resolve().then(()=>(St(),Le));return(await t())?.cwd||null}catch{return null}}async function cx({namespace:t,limit:e,ctx:r}={}){let o=await import("node:fs/promises"),n=Xo,a=await Bu({namespace:t,limit:e,ctx:r}),i="<!-- sigil-context -->";if(!a.length)return 0;let s=new Date().toISOString().slice(0,16).replace("T"," "),f=[i,`## Active Context *(${a.length} facts \xB7 refreshed ${s})*`,"",a.map(h=>`- ${h}`).join(`
221
- `),i].join(`
222
- `),u="";try{u=await o.readFile(n,"utf8")}catch{}let l=u.includes(i)?u.replace(new RegExp(`${i}[\\s\\S]*?${i}`),f):u+(u.trim()?`
222
+ `).limit(r).pluck("f.content")}async function Z_(){try{let{getActiveCursor:t}=await Promise.resolve().then(()=>(Ot(),$e));return(await t())?.cwd||null}catch{return null}}async function dl({facts:t,namespace:e}){let r=await import("node:fs/promises");if(!t||!t.length)return 0;let o="<!-- sigil-context -->",n=new Date().toISOString().slice(0,16).replace("T"," "),a=[o,`## Active Context *(${t.length} facts \xB7 refreshed ${n}${e?` \xB7 ns=${e}`:""})*`,"",t.map(u=>`- ${u}`).join(`
223
+ `),o].join(`
224
+ `),i="";try{i=await r.readFile(Nr,"utf8")}catch{}let s=i.includes(o)?i.replace(new RegExp(`${o}[\\s\\S]*?${o}`),a):i+(i.trim()?`
223
225
 
224
- `:"")+f+`
225
- `;return await o.writeFile(n,l,"utf8"),a.length}var ix,Uu=c(()=>{S();_();B();ku();Ko();ix=20});import{dirname as fx}from"node:path";import{existsSync as Hu,readFileSync as ju,writeFileSync as ux,mkdirSync as lx}from"node:fs";import{createHash as px}from"node:crypto";B();import{resolve as zu}from"node:path";import{existsSync as rn}from"node:fs";import{config as on}from"dotenv";function nn(){let t=zu(process.cwd(),".env");rn(t)&&on({path:t,quiet:!0}),rn(Se)&&Se!==t&&on({path:Se,quiet:!0})}B();nn();var dx=15,mx=8e3,br=tn;async function hx(){let t=await yx();if(!t)return et();let e;try{e=JSON.parse(t)}catch{return et()}let r=await gx(e);if(!r||r.length<dx||r.length>mx)return et();let o=bx(r);if(_x(o))return et();let{failClosedOnBadConfig:n}=await Promise.resolve().then(()=>(Lr(),Pr));if(await n("stop",t))return et();try{let a=await Sx(r);if(Ex(o),!a.length)return et();let i=[];try{let{ensureActivePodsForHook:s}=await Promise.resolve().then(()=>(In(),On));i=(await s({sessionId:e.session_id,cwd:e.cwd||null,transcriptPath:e.transcript_path||null})).podUids}catch(s){process.stderr.write(`[sigil:stop] pod dispatch failed: ${s.message}
226
- `)}await Tx(a,{podUids:i})}catch(a){process.stderr.write(`[sigil:stop] ${a.message}
227
- `);try{let{recordHookError:i}=await Promise.resolve().then(()=>(Lr(),Pr));await i("stop",a,e)}catch{}}finally{try{await(await Promise.resolve().then(()=>(S(),vr))).default.destroy()}catch{}}return et()}async function yx(){if(process.stdin.isTTY)return"";let t=[];for await(let e of process.stdin)t.push(e);return Buffer.concat(t).toString("utf8").trim()}function et(){process.stdout.write("{}")}async function gx(t){if(t.transcript_path&&Hu(t.transcript_path)){let e=wx(t.transcript_path);if(e)return e}if(Array.isArray(t.messages))for(let e=t.messages.length-1;e>=0;e--){let r=t.messages[e];if((r.role==="user"||r.message?.role==="user")&&r.content)return Gu(r.content)}return typeof t.last_user_message=="string"?t.last_user_message:typeof t.user_message=="string"?t.user_message:typeof t.prompt=="string"?t.prompt:null}function wx(t){let e;try{e=ju(t,"utf8").split(`
228
- `).filter(Boolean)}catch{return null}for(let r=e.length-1;r>=0;r--){let o;try{o=JSON.parse(e[r])}catch{continue}if((o.role||o.message?.role||o.type)!=="user")continue;let a=o.content??o.message?.content,i=Gu(a);if(i&&!xx(i))return i}return null}function Gu(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>typeof e=="string"?e:e?.type==="text"&&typeof e.text=="string"?e.text:"").filter(Boolean).join(`
229
- `).trim():""}function xx(t){return/^<tool_use_result|^<bash_output|^<file_contents|^Tool execution result/.test(t)}function _x(t){if(!Hu(br))return!1;try{return JSON.parse(ju(br,"utf8")).lastHash===t}catch{return!1}}function Ex(t){try{lx(fx(br),{recursive:!0}),ux(br,JSON.stringify({lastHash:t,ts:Date.now()}),"utf8")}catch{}}function bx(t){return px("sha256").update(t).digest("hex").slice(0,16)}var Ax=`You decide whether a user's message contains durable, memorable content for a long-term AI memory system, and extract the facts if so.
226
+ `:"")+a+`
227
+ `;return await r.writeFile(Nr,s,"utf8"),t.length}async function Q_({namespace:t,limit:e,ctx:r}={}){let o=await ll({namespace:t,limit:e,ctx:r});return dl({facts:o,namespace:t})}var X_,hl=c(()=>{I();x();$();fl();an();X_=20});import{dirname as tx}from"node:path";import{existsSync as gl,readFileSync as yl,writeFileSync as ex,mkdirSync as rx}from"node:fs";import{createHash as ox}from"node:crypto";$();import{resolve as Tl}from"node:path";import{existsSync as hn}from"node:fs";import{config as gn}from"dotenv";function yn(){let t=Tl(process.cwd(),".env");hn(t)&&gn({path:t,quiet:!0}),hn(Re)&&Re!==t&&gn({path:Re,quiet:!0}),process.env.SIGIL_AGENT||(process.env.SIGIL_AGENT="claude-code")}$();yn();var nx=15,ax=8e3,vr=dn;async function ix(){let t=await sx();if(!t)return rt();let e;try{e=JSON.parse(t)}catch{return rt()}let r=await cx(e);if(!r||r.length<nx||r.length>ax)return rt();let o=dx(r);if(lx(o))return rt();let{failClosedOnBadConfig:n}=await Promise.resolve().then(()=>($r(),Br));if(await n("stop",t))return rt();try{let a=await hx(r);if(px(o),!a.length)return rt();let i=[];try{let{ensureActivePodsForHook:s}=await Promise.resolve().then(()=>(qn(),Jn));i=(await s({sessionId:e.session_id,cwd:e.cwd||null,transcriptPath:e.transcript_path||null})).podUids}catch(s){process.stderr.write(`[sigil:stop] pod dispatch failed: ${s.message}
228
+ `)}await gx(a,{podUids:i})}catch(a){process.stderr.write(`[sigil:stop] ${a.message}
229
+ `);try{let{recordHookError:i}=await Promise.resolve().then(()=>($r(),Br));await i("stop",a,e)}catch{}}finally{try{await(await Promise.resolve().then(()=>(I(),Mr))).default.destroy()}catch{}}return rt()}async function sx(){if(process.stdin.isTTY)return"";let t=[];for await(let e of process.stdin)t.push(e);return Buffer.concat(t).toString("utf8").trim()}function rt(){process.stdout.write("{}")}async function cx(t){if(t.transcript_path&&gl(t.transcript_path)){let e=ux(t.transcript_path);if(e)return e}if(Array.isArray(t.messages))for(let e=t.messages.length-1;e>=0;e--){let r=t.messages[e];if((r.role==="user"||r.message?.role==="user")&&r.content)return wl(r.content)}return typeof t.last_user_message=="string"?t.last_user_message:typeof t.user_message=="string"?t.user_message:typeof t.prompt=="string"?t.prompt:null}function ux(t){let e;try{e=yl(t,"utf8").split(`
230
+ `).filter(Boolean)}catch{return null}for(let r=e.length-1;r>=0;r--){let o;try{o=JSON.parse(e[r])}catch{continue}if((o.role||o.message?.role||o.type)!=="user")continue;let a=o.content??o.message?.content,i=wl(a);if(i&&!fx(i))return i}return null}function wl(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>typeof e=="string"?e:e?.type==="text"&&typeof e.text=="string"?e.text:"").filter(Boolean).join(`
231
+ `).trim():""}function fx(t){return/^<tool_use_result|^<bash_output|^<file_contents|^Tool execution result/.test(t)}function lx(t){if(!gl(vr))return!1;try{return JSON.parse(yl(vr,"utf8")).lastHash===t}catch{return!1}}function px(t){try{rx(tx(vr),{recursive:!0}),ex(vr,JSON.stringify({lastHash:t,ts:Date.now()}),"utf8")}catch{}}function dx(t){return ox("sha256").update(t).digest("hex").slice(0,16)}var mx=`You decide whether a user's message contains durable, memorable content for a long-term AI memory system, and extract the facts if so.
230
232
 
231
233
  SAVE these signals:
232
234
  - Preferences ("I prefer X", "I always X", "I never X", "I like X")
@@ -251,9 +253,9 @@ Each saved fact must:
251
253
  Respond as STRICT JSON, no markdown:
252
254
  {"memorable": boolean, "facts": ["...", "..."]}
253
255
 
254
- If "memorable" is false, "facts" must be an empty array.`;async function Sx(t){let{promptJson:e}=await Promise.resolve().then(()=>(ot(),ta)),r=(await Promise.resolve().then(()=>(_(),Or))).default,o=`${Ax}
256
+ If "memorable" is false, "facts" must be an empty array.`;async function hx(t){let{promptJson:e}=await Promise.resolve().then(()=>(nt(),Ea)),r=(await Promise.resolve().then(()=>(x(),Dr))).default,o=`${mx}
255
257
 
256
258
  ---
257
259
  User message:
258
- ${t}`,n=await e(o,{model:r.llm.extractionModel,caller:"stop-hook"});return!n||n.memorable!==!0?[]:Array.isArray(n.facts)?n.facts.filter(a=>typeof a=="string").map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=200):[]}async function Tx(t,{podUids:e=[]}={}){let{ingestDocument:r}=await Promise.resolve().then(()=>(Iu(),Ou)),o=(await Promise.resolve().then(()=>(_(),Or))).default;for(let n of t)try{await r({content:n,namespace:o.defaults.namespace,classify:!1,podUids:e})}catch(a){process.stderr.write(`[sigil:stop] save failed: ${a.message}
259
- `)}try{let{updateContextSnapshot:n}=await Promise.resolve().then(()=>(Uu(),$u));await n({namespace:o.defaults.namespace})}catch{}}hx();
260
+ ${t}`,n=await e(o,{model:r.llm.extractionModel,caller:"stop-hook"});return!n||n.memorable!==!0?[]:Array.isArray(n.facts)?n.facts.filter(a=>typeof a=="string").map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=200):[]}async function gx(t,{podUids:e=[]}={}){let{ingestDocument:r}=await Promise.resolve().then(()=>(zf(),Vf)),o=(await Promise.resolve().then(()=>(x(),Dr))).default;for(let n of t)try{await r({content:n,namespace:o.defaults.namespace,classify:!1,podUids:e})}catch(a){process.stderr.write(`[sigil:stop] save failed: ${a.message}
261
+ `)}try{let{updateContextSnapshot:n}=await Promise.resolve().then(()=>(hl(),ml));await n({namespace:o.defaults.namespace})}catch{}}ix();