@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.
- package/LICENSE +18 -12
- package/README.md +90 -82
- package/dist/cli.js +758 -507
- package/dist/daemon.js +724 -0
- package/dist/hooks/post-tool-use.js +20 -22
- package/dist/hooks/session-end.js +63 -61
- package/dist/hooks/stop.js +76 -74
- package/dist/hooks/user-prompt-submit.js +55 -47
- package/dist/server.js +45 -554
- package/integrations/hermes/README.md +4 -4
- package/integrations/hermes/plugin/README.md +8 -8
- package/knexfile.js +29 -8
- package/package.json +11 -5
- package/src/db/migrations/20260601000000_create-device-table.cjs +34 -0
- package/src/db/migrations/20260601000001_create-pairing-code-table.cjs +27 -0
- package/src/db/migrations/20260601000002_add-fact-provenance.cjs +31 -0
- package/src/db/migrations/20260601000003_add-device-revoked-reason.cjs +19 -0
- package/src/db/migrations/20260601000004_create-trace-event-table.cjs +35 -0
- package/src/db/migrations/20260601000005_add-fact-agent-provenance.cjs +25 -0
- package/src/gui/web/api.js +37 -0
- package/src/gui/web/app.css +947 -0
- package/src/gui/web/app.js +1230 -0
- package/src/gui/web/components.js +90 -0
- package/src/gui/web/design/colors_and_type.css +178 -0
- package/src/gui/web/design/sigil-mark-mono.svg +8 -0
- package/src/gui/web/design/sigil-mark.svg +26 -0
- package/src/gui/web/index.html +536 -0
- package/src/gui/web/sigil.svg +31 -0
- package/src/gui/web/toast.js +62 -0
package/dist/hooks/stop.js
CHANGED
|
@@ -1,63 +1,64 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
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.`);
|
|
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
|
|
7
|
-
`,"utf8")}catch{}}async function
|
|
8
|
-
`).filter(Boolean),o=[];for(let n of r.slice(-t))try{o.push(JSON.parse(n))}catch{}return o}async function
|
|
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
|
|
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
|
-
`,[
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
34
|
-
`),r=[],o=null,n=[];for(let s of e){let
|
|
35
|
-
`).trim()}),o=
|
|
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=
|
|
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(/&/g,"&"),r=r.replace(/</g,"<"),r=r.replace(/>/g,">"),r=r.replace(/"/g,'"'),r=r.replace(/'/g,"'"),r=r.replace(/ /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
|
|
43
|
-
`),o=[],n="Header",a=[],i=!1,s=0;for(let
|
|
44
|
-
`).trim()}),n=
|
|
45
|
-
`).trim()}),o.length<=1?
|
|
46
|
-
${
|
|
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
|
-
${
|
|
49
|
-
`)}return String(t)}var
|
|
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
|
|
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
|
|
60
|
-
`)})}let d=s.filter(
|
|
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(
|
|
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]),
|
|
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
|
|
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
|
|
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
|
|
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
|
-
`,[
|
|
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
|
|
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||!
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
`:"",
|
|
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"}`,
|
|
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
|
|
186
|
-
`),a=`${await
|
|
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
|
|
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
|
|
199
|
-
`),
|
|
200
|
-
`).slice(0,2e3),
|
|
201
|
-
`),
|
|
202
|
-
`),
|
|
203
|
-
`),{documentId:null,title:
|
|
204
|
-
`);let H=
|
|
205
|
-
`),{documentId:
|
|
206
|
-
`);let
|
|
207
|
-
`);let
|
|
208
|
-
`),{documentId:
|
|
209
|
-
`),
|
|
210
|
-
`),!d&&
|
|
211
|
-
${
|
|
212
|
-
`),
|
|
213
|
-
`),await
|
|
214
|
-
`),
|
|
215
|
-
`))}catch(
|
|
216
|
-
`),{documentId:
|
|
217
|
-
`),!a.length)return{counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]};let i=await
|
|
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
|
|
221
|
-
`),
|
|
222
|
-
`),
|
|
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
|
-
`:"")+
|
|
225
|
-
`;return await
|
|
226
|
-
`)}await
|
|
227
|
-
`);try{let{recordHookError:i}=await Promise.resolve().then(()=>(
|
|
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=
|
|
229
|
-
`).trim():""}function
|
|
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
|
|
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
|
|
259
|
-
`)}try{let{updateContextSnapshot:n}=await Promise.resolve().then(()=>(
|
|
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();
|