@anmol-srv/sigil 0.11.0 → 0.12.1
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/dist/cli.js +397 -339
- package/dist/daemon.js +198 -121
- package/dist/hooks/post-tool-use.js +18 -18
- package/dist/hooks/session-end.js +28 -28
- package/dist/hooks/stop.js +36 -36
- package/dist/hooks/user-prompt-submit.js +17 -17
- package/dist/server.js +26 -26
- package/package.json +1 -1
- package/src/gui/web/api.js +37 -0
- package/src/gui/web/app.css +114 -50
- package/src/gui/web/app.js +244 -92
- 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 +64 -42
- package/src/gui/web/toast.js +62 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __sigilCreateRequire } from 'node:module'; const require = __sigilCreateRequire(import.meta.url);
|
|
3
|
-
var yl=Object.defineProperty;var c=(t,e)=>()=>(t&&(e=t(t=0)),e);var
|
|
3
|
+
var yl=Object.defineProperty;var c=(t,e)=>()=>(t&&(e=t(t=0)),e);var S=(t,e)=>{for(var r in e)yl(t,r,{get:e[r],enumerable:!0})};import{fileURLToPath as wl}from"node:url";import{dirname as sn,join as E}from"node:path";import{existsSync as cn}from"node:fs";import{homedir as _l}from"node:os";function xl(){let t=sn(wl(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 Pe,z,mx,un,D,Me,hx,gx,fn,ln,pn,dn,yx,wx,_x,xx,Ex,bx,Sx,Ax,Tx,Ix,Ox,vx,mn,Cx,Nx,X=c(()=>{Pe=xl(),z=E(Pe,"prompts"),mx=E(Pe,"src","db","migrations"),un=_l(),D=E(un,".sigil"),Me=E(D,".env"),hx=E(D,"db"),gx=E(D,"CLAUDE.md"),fn=E(D,"schemas"),ln=E(D,".hook-errors.log"),pn=E(D,".last-clean-doctor"),dn=E(D,".active-session.json"),yx=E(D,".stop-cursor.json"),wx=E(D,".hook-dedup.json"),_x=E(D,"sock"),xx=E(D,"sigild.pid"),Ex=E(D,"sigild.log"),bx=E(D,"heartbeat.json"),Sx=E(D,"onboarding-state.json"),Ax=E(D,"gui.token"),Tx=E(Pe,"dist","gui"),Ix=E(Pe,"src","gui","web"),Ox=E(D,"iroh"),vx=E(D,"identity.key"),mn=E(un,".claude"),Cx=E(mn,"settings.json"),Nx=E(mn,"CLAUDE.md")});var wn,_n=c(()=>{wn="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"});import{webcrypto as xn}from"node:crypto";function Sl(t){if(t<0||t>1024)throw new RangeError("Wrong ID size");!mt||mt.length<t?(mt=Buffer.allocUnsafe(t*bl),xn.getRandomValues(mt),St=0):St+t>mt.length&&(xn.getRandomValues(mt),St=0),St+=t}function K(t=21){Sl(t|=0);let e="";for(let r=St-t;r<St;r++)e+=wn[mt[r]&63];return e}var bl,mt,St,At=c(()=>{_n();bl=128});var bn={};S(bn,{default:()=>p});var b,En,Al,p,x=c(()=>{b=(t,e)=>process.env[t]??e,En=b("SIGIL_DB_TYPE","postgres");if(En!=="postgres")throw new Error(`SIGIL_DB_TYPE=${En} is no longer supported. Sigil 0.10.0+ is Postgres-only.
|
|
4
4
|
PGlite was deprecated; existing PGlite data at ~/.sigil/db is preserved but unreachable from this version.
|
|
5
5
|
Set SIGIL_DB_TYPE=postgres in ~/.sigil/.env and configure SIGIL_DB_HOST / PORT / NAME / USER / PASSWORD.
|
|
6
|
-
Run \`sigil init\` for an interactive setup.`);Al={db:{type:"postgres",get url(){return
|
|
6
|
+
Run \`sigil init\` for an interactive setup.`);Al={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=Al});function Sn(t){return{host:t.db.host,port:t.db.port,database:t.db.database,user:t.db.user,password:t.db.password}}var An=c(()=>{});function In(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=Il(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 Il(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(!Tn.some(r=>r.test(t)))return Tl.some(r=>r.test(t))?{rejectUnauthorized:!0}:{rejectUnauthorized:!1}}function On(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":Tn.some(r=>r.test(e))?"local":"unknown"}catch{return"unknown"}}var Tl,Tn,vn=c(()=>{Tl=[/\.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],Tn=[/^localhost$/i,/^127\.0\.0\.1$/,/^::1$/,/\.local$/i]});function Cn(t){let e=t.db.url;return e?{kind:"url",provider:On(e),connection:In(e)}:{kind:"local",provider:"local",connection:Sn(t)}}var Nn=c(()=>{An();vn()});var Lr={};S(Lr,{default:()=>m});import Ol from"knex";function vl(t){return Array.isArray(t)?t.map(Dr):t&&typeof t=="object"?Dr(t):t}function Cl(t,e){return e(Nl(t))}function Dr(t){if(!t||typeof t!="object"||t instanceof Date)return t;if(Array.isArray(t))return t.map(Dr);let e={};for(let[r,o]of Object.entries(t))e[r.replace(/_([a-z])/g,(n,a)=>a.toUpperCase())]=o;return e}function Nl(t){return t.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`)}var Rn,Dn,m,O=c(()=>{x();Nn();Rn=Cn(p),Dn=Ol({client:"pg",connection:Rn.connection,pool:{min:2,max:10},postProcessResponse:vl,wrapIdentifier:Cl});Dn.__sigilDriver=Rn;m=Dn});var Ct={};S(Ct,{archivePod:()=>Ll,deletePod:()=>Pl,findByEntityId:()=>Pn,findByExternalId:()=>Ot,findById:()=>Rl,findByUid:()=>It,incrementCounters:()=>vt,insertPod:()=>Ln,listPods:()=>Dl,patchAttrs:()=>ie,reassignEntity:()=>Ml,setEndedAt:()=>Pr,upsertPod:()=>Tt});async function Ln({podType:t,name:e,namespace:r,attrs:o={},entityId:n=null,connectionId:a=null,externalId:i=null,startedAt:s=null,endedAt:u=null}){let f=`pod-${K(16)}`,[l]=await m("pod").insert({uid:f,podType:t,name:e,namespace:r||p.defaults.namespace,attrs:JSON.stringify(o),entityId:n,connectionId:a,externalId:i,startedAt:s,endedAt:u}).returning("*");return l}async function Tt({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-${K(16)}`,f=o||p.defaults.namespace,{rows:[l]}=await m.raw(`
|
|
7
7
|
INSERT INTO pod (uid, pod_type, name, namespace, attrs, entity_id, connection_id, external_id, started_at, created_at, updated_at)
|
|
8
8
|
VALUES (?, ?, ?, ?, ?::jsonb, ?, ?, ?, ?, NOW(), NOW())
|
|
9
9
|
ON CONFLICT (pod_type, external_id, namespace) WHERE external_id IS NOT NULL DO UPDATE SET
|
|
@@ -14,15 +14,15 @@ Run \`sigil init\` for an interactive setup.`);Al={db:{type:"postgres",get url()
|
|
|
14
14
|
SET member_doc_count = member_doc_count + ?,
|
|
15
15
|
member_fact_count = member_fact_count + ?,
|
|
16
16
|
updated_at = NOW()
|
|
17
|
-
WHERE id = ?`,[e,r,t])}var ht=c(()=>{At();O();x()});function Bn({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 $n({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 Mn,kn,Mr=c(()=>{Nt();Mn="claude_session",kn={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 kr();return t?[t]:[]}catch{return[]}}}});var Be={};
|
|
18
|
-
`)[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 Ql(t){let{provider:e,model:r}=p.embedding;if(e&&r){let o=Object.keys(jn).find(n=>jn[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:rp(e,r,o)})}if(e&&Gn[e]){let o=Gn[e];p.embedding[o]||t.push({level:"fail",code:"EMBEDDING_PROVIDER_MISSING_KEY",message:`EMBEDDING_PROVIDER=${e} but no ${Ue(o)} found.`,fix:`Set ${Ue(o)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}}function tp(t){let{provider:e}=p.llm;if(e&&Hn[e]){let r=Hn[e];p.llm[r]||t.push({level:"fail",code:"LLM_PROVIDER_MISSING_KEY",message:`LLM_PROVIDER=${e} but no ${Ue(r)} found.`,fix:`Set ${Ue(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 ep(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 Ue(t){return{openaiApiKey:"OPENAI_API_KEY",apiKey:"ANTHROPIC_API_KEY",openrouterApiKey:"OPENROUTER_API_KEY",voyageApiKey:"VOYAGE_API_KEY"}[t]||t}function rp(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 jn,Hn,Gn,Yn=c(()=>{x();jn={voyage:[/^voyage-/],openai:[/^text-embedding-/],ollama:[/^nomic-embed/,/^mxbai-embed/,/^all-minilm/,/^bge-/,/^snowflake-/,/^granite-embedding/]},Hn={openai:"openaiApiKey",anthropic:"apiKey",openrouter:"openrouterApiKey"},Gn={openai:"openaiApiKey",voyage:"voyageApiKey",openrouter:"openrouterApiKey"}});var Ur={};
|
|
17
|
+
WHERE id = ?`,[e,r,t])}var ht=c(()=>{At();O();x()});function Bn({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 $n({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 Mn,kn,Mr=c(()=>{Nt();Mn="claude_session",kn={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 kr();return t?[t]:[]}catch{return[]}}}});var Be={};S(Be,{CURSOR_PATH:()=>Rt,endActiveSession:()=>Wl,ensureActiveSession:()=>Br,getActiveCursor:()=>Kl,getActiveSessionPodUid:()=>kr});import{writeFile as Bl,readFile as $l,unlink as Ul}from"node:fs/promises";import{existsSync as Fl,mkdirSync as jl}from"node:fs";import{dirname as Un}from"node:path";async function ke(){try{let t=await $l(Rt,"utf8");return JSON.parse(t)}catch{return null}}async function Fn(t){Fl(Un(Rt))||jl(Un(Rt),{recursive:!0}),await Bl(Rt,JSON.stringify(t,null,2),"utf8")}async function Br({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 ke();if(i&&i.session_id===t&&i.namespace===a){let f=await It(i.pod_uid);if(f)return await ie(f.id,{turn_count:(Yl(f.attrs)||0)+1}),await Gl(i),f}let s=new Date,{pod:u}=await Tt({podType:Mn,externalId:t,name:$n({sessionId:t,startedAt:s}),namespace:a,attrs:Bn({sessionId:t,transcriptPath:e,cwd:r,turnCount:1,model:o}),startedAt:s});return await Fn({session_id:t,pod_uid:u.uid,namespace:a,started_at:u.startedAt??s.toISOString(),last_seen_at:new Date().toISOString()}),u}async function Gl(t){await Fn({...t,last_seen_at:new Date().toISOString()})}async function kr({allowStale:t=!1}={}){let e=await ke();return!e||!e.pod_uid||!t&&e.started_at&&Date.now()-new Date(e.started_at).getTime()>Hl?null:e.pod_uid}async function Kl(){return ke()}async function Wl({conclusion:t=null,summary:e=null}={}){let r=await ke();if(!r)return null;let o=await It(r.pod_uid);if(o){if(t||e){let n={};t&&(n.conclusion=t),e&&(n.summary=e),await ie(o.id,n)}await Pr(o.id)}try{await Ul(Rt)}catch{}return o}function Yl(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 Rt,Hl,Nt=c(()=>{ht();Mr();x();X();Rt=dn,Hl=360*60*1e3});function Dt(t){if(!t||typeof t!="string")return t;let e=t;for(let r of ql)e=e.replace(r,se);return e=e.replace(Jl,(r,o)=>`${o}=${se}`),e=e.replace(Vl,(r,o)=>`${o}${se}:${se}@`),e=e.replace(Xl,(r,o)=>`${o}=${se}`),e}var se,ql,Jl,Vl,zl,Xl,$e=c(()=>{se="***MASKED***",ql=[/\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],Jl=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,zl=["DATABASE_URL","REDIS_URL","MONGODB_URI","MONGO_URI","POSTGRES_URL","DSN","CONNECTION_STRING","ENCRYPTION_KEY","JWT_SECRET","SIGIL_ENCRYPTION_KEY","SESSION_SECRET","WEBHOOK_SECRET"],Xl=new RegExp(`\\b(${zl.join("|")})\\s*[=:]\\s*["']?([^\\s"']+)["']?`,"gi")});var Wn={};S(Wn,{validateConfig:()=>Kn,validateConfigDeep:()=>Zl});function Kn(){let t=[];return Ql(t),tp(t),ep(t),t}async function Zl(){let t=Kn();if(p.db.type==="postgres"&&!t.some(e=>e.code.startsWith("DB_")))try{await(await Promise.resolve().then(()=>(O(),Lr))).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(`
|
|
18
|
+
`)[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 Ql(t){let{provider:e,model:r}=p.embedding;if(e&&r){let o=Object.keys(jn).find(n=>jn[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:rp(e,r,o)})}if(e&&Gn[e]){let o=Gn[e];p.embedding[o]||t.push({level:"fail",code:"EMBEDDING_PROVIDER_MISSING_KEY",message:`EMBEDDING_PROVIDER=${e} but no ${Ue(o)} found.`,fix:`Set ${Ue(o)} in ~/.sigil/.env, or run 'sigil init' to reconfigure.`})}}function tp(t){let{provider:e}=p.llm;if(e&&Hn[e]){let r=Hn[e];p.llm[r]||t.push({level:"fail",code:"LLM_PROVIDER_MISSING_KEY",message:`LLM_PROVIDER=${e} but no ${Ue(r)} found.`,fix:`Set ${Ue(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 ep(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 Ue(t){return{openaiApiKey:"OPENAI_API_KEY",apiKey:"ANTHROPIC_API_KEY",openrouterApiKey:"OPENROUTER_API_KEY",voyageApiKey:"VOYAGE_API_KEY"}[t]||t}function rp(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 jn,Hn,Gn,Yn=c(()=>{x();jn={voyage:[/^voyage-/],openai:[/^text-embedding-/],ollama:[/^nomic-embed/,/^mxbai-embed/,/^all-minilm/,/^bge-/,/^snowflake-/,/^granite-embedding/]},Hn={openai:"openaiApiKey",anthropic:"apiKey",openrouter:"openrouterApiKey"},Gn={openai:"openaiApiKey",voyage:"voyageApiKey",openrouter:"openrouterApiKey"}});var Ur={};S(Ur,{HOOK_ERROR_LOG:()=>Fe,LAST_CLEAN_DOCTOR_PATH:()=>je,clearLastCleanDoctor:()=>lp,failClosedOnBadConfig:()=>sp,getUnackedErrorCount:()=>up,markDoctorClean:()=>fp,readRecentHookErrors:()=>cp,recordHookError:()=>qn});import{appendFile as op,readFile as $r,writeFile as np,unlink as ap}from"node:fs/promises";import{createHash as ip}from"node:crypto";async function qn(t,e,r=null){try{let o={ts:new Date().toISOString(),hook:t,error:Dt(e?.message||String(e)),input_hash:r?pp(r):null};await op(Fe,JSON.stringify(o)+`
|
|
19
19
|
`,"utf8")}catch{}}async function sp(t,e=null){try{let{validateConfig:r}=await Promise.resolve().then(()=>(Yn(),Wn)),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 qn(t,a,e)}return!0}catch{return!1}}async function cp(t=10){let e;try{e=await $r(Fe,"utf8")}catch{return[]}let r=e.split(`
|
|
20
20
|
`).filter(Boolean),o=[];for(let n of r.slice(-t))try{o.push(JSON.parse(n))}catch{}return o}async function up(){let t=0;try{let o=await $r(je,"utf8");t=new Date(o.trim()).getTime()}catch{}let e;try{e=await $r(Fe,"utf8")}catch{return 0}let r=0;for(let o of e.split(`
|
|
21
|
-
`))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 fp(){try{await np(je,new Date().toISOString(),"utf8")}catch{}}async function lp(){try{await ap(je)}catch{}}function pp(t){try{let e=typeof t=="string"?t:JSON.stringify(t);return ip("sha256").update(e).digest("hex").slice(0,12)}catch{return null}}var Fe,je,Fr=c(()=>{X();$e();Fe=ln,je=pn});var Lt={};
|
|
21
|
+
`))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 fp(){try{await np(je,new Date().toISOString(),"utf8")}catch{}}async function lp(){try{await ap(je)}catch{}}function pp(t){try{let e=typeof t=="string"?t:JSON.stringify(t);return ip("sha256").update(e).digest("hex").slice(0,12)}catch{return null}}var Fe,je,Fr=c(()=>{X();$e();Fe=ln,je=pn});var Lt={};S(Lt,{attach:()=>He,attachDocument:()=>jr,attachEntity:()=>dp,attachFact:()=>ce,detach:()=>mp,factIdsInPod:()=>yp,listMembers:()=>hp,listPodsForMember:()=>gp});async function He(t,e,r,o="primary"){let{rowCount:n}=await m.raw(`INSERT INTO pod_membership (pod_id, member_type, member_id, role)
|
|
22
22
|
VALUES (?, ?, ?, ?)
|
|
23
|
-
ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await vt(t,{facts:1}):e==="document"&&await vt(t,{docs:1})),{attached:n>0}}async function mp(t,e,r){let o=await m("pod_membership").where({podId:t,memberType:e,memberId:r}).del();return o>0&&(e==="fact"?await vt(t,{facts:-1}):e==="document"&&await vt(t,{docs:-1})),{detached:o>0}}async function hp(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 gp(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 yp(t){return await m("pod_membership").where({podId:t,memberType:"fact"}).pluck("memberId")}var ce,jr,dp,ue=c(()=>{O();ht();ce=(t,e,r)=>He(t,"fact",e,r),jr=(t,e,r)=>He(t,"document",e,r),dp=(t,e,r)=>He(t,"entity",e,r)});var Jn={};
|
|
23
|
+
ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await vt(t,{facts:1}):e==="document"&&await vt(t,{docs:1})),{attached:n>0}}async function mp(t,e,r){let o=await m("pod_membership").where({podId:t,memberType:e,memberId:r}).del();return o>0&&(e==="fact"?await vt(t,{facts:-1}):e==="document"&&await vt(t,{docs:-1})),{detached:o>0}}async function hp(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 gp(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 yp(t){return await m("pod_membership").where({podId:t,memberType:"fact"}).pluck("memberId")}var ce,jr,dp,ue=c(()=>{O();ht();ce=(t,e,r)=>He(t,"fact",e,r),jr=(t,e,r)=>He(t,"document",e,r),dp=(t,e,r)=>He(t,"entity",e,r)});var Jn={};S(Jn,{chat:()=>wp,meta:()=>_p,setup:()=>xp});async function wp(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 xp({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 _p,Vn=c(()=>{x();_p={id:"openai",label:"OpenAI",hint:"gpt-4o-mini"}});function W(t){return Math.ceil((t||"").length/4)}function Hr(t,e,r){let o=Ep[t];return o?(e*o.input+r*o.output)/1e6:0}function fe({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 Gr(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 Ep,le=c(()=>{O();Ep={"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 zn={};S(zn,{chat:()=>Sp,meta:()=>Ap,setup:()=>Tp});async function bp(){if(!Kr){let{default:t}=await import("@anthropic-ai/sdk");Kr=new t({apiKey:p.llm.apiKey})}return Kr}async function Sp(t,{model:e,jsonMode:r=!1}={}){let o=e||"claude-haiku-4-5-20251001",n=await bp(),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 Tp({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 Kr,Ap,Xn=c(()=>{x();le();Kr=null;Ap={id:"anthropic",label:"Anthropic",hint:"Claude Haiku \u2014 requires API key"}});var Qn={};S(Qn,{chat:()=>Op,meta:()=>vp,setup:()=>Cp});async function Op(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||Ip).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 Cp({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||Zn,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||Zn;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||Pt.extraction});if(e.isCancel(u))return null;r.LLM_EXTRACTION_MODEL=u||t.LLM_EXTRACTION_MODEL||Pt.extraction;let f=await e.text({message:"Decision model (AUDM; smart matters)",placeholder:t.LLM_DECISION_MODEL||Pt.decision});if(e.isCancel(f))return null;r.LLM_DECISION_MODEL=f||t.LLM_DECISION_MODEL||Pt.decision;let l=await e.text({message:"Synthesis model (read-time answer composition)",placeholder:t.SIGIL_SYNTH_MODEL||Pt.synthesis});if(e.isCancel(l))return null;r.SIGIL_SYNTH_MODEL=l||t.SIGIL_SYNTH_MODEL||Pt.synthesis}return e.note(`OpenRouter can drive both LLM calls and embeddings.
|
|
24
24
|
You will pick an embedding provider in the next step \u2014 "openrouter" is an option,
|
|
25
|
-
or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var Ip,vp,Zn,Pt,ta=c(()=>{x();Ip="https://openrouter.ai/api/v1";vp={id:"openrouter",label:"OpenRouter",hint:"one key, many models (Anthropic / OpenAI / Meta / ...)"},Zn="google/gemini-flash-latest",Pt={extraction:"openrouter:qwen/qwen3.5-flash",decision:"openrouter:anthropic/claude-sonnet-latest",synthesis:"openrouter:anthropic/claude-sonnet-latest"}});var ea={};
|
|
25
|
+
or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var Ip,vp,Zn,Pt,ta=c(()=>{x();Ip="https://openrouter.ai/api/v1";vp={id:"openrouter",label:"OpenRouter",hint:"one key, many models (Anthropic / OpenAI / Meta / ...)"},Zn="google/gemini-flash-latest",Pt={extraction:"openrouter:qwen/qwen3.5-flash",decision:"openrouter:anthropic/claude-sonnet-latest",synthesis:"openrouter:anthropic/claude-sonnet-latest"}});var ea={};S(ea,{chat:()=>Pp,meta:()=>Mp,setup:()=>kp});import{spawn as Np}from"node:child_process";function Lp(t,e){let r=p.llm.cliTimeout||12e4;return new Promise((o,n)=>{let a=Np("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 Pp(t,{model:e,jsonMode:r=!1}={}){let o=e||p.llm.cliModel||"haiku",n=Rp[o]||o,a=["-p","--model",n,"--output-format","json"];r&&a.push("--json-schema",Dp);let{stdout:i,stderr:s,code:u}=await Lp(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 kp(){return{env:{}}}var Rp,Dp,Mp,ra=c(()=>{x();le();Rp={"claude-haiku-4-5-20251001":"haiku","claude-sonnet-4-6":"sonnet","claude-opus-4-6":"opus"},Dp=JSON.stringify({type:"object",additionalProperties:!0});Mp={id:"claude-cli",label:"Claude Code",hint:"uses your existing subscription \u2014 no extra API key"}});var oa={};S(oa,{chat:()=>Bp,meta:()=>$p,setup:()=>Up});async function Bp(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 Up({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 $p,na=c(()=>{x();le();$p={id:"ollama",label:"Ollama",hint:"local models \u2014 no API cost"}});function Ge(t,e){if(e<1)return[];let r=[];for(let o=0;o<t.length;o+=e)r.push(t.slice(o,o+e));return r}var Wr=c(()=>{});var aa={};S(aa,{embedBatch:()=>jp});async function jp(t,{model:e,ollamaHost:r}){let o=Ge(t,Fp),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 Fp,ia=c(()=>{Wr();Fp=50});var sa={};S(sa,{embedBatch:()=>Hp});async function Hp(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 ca=c(()=>{});var ua={};S(ua,{embedBatch:()=>Kp});async function Kp(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=Ge(t,Gp),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 Gp,fa=c(()=>{Wr();Gp=50});var la={};S(la,{embedBatch:()=>Yp});async function Yp(t,{model:e,openrouterApiKey:r,openrouterBaseUrl:o,openrouterReferer:n,openrouterTitle:a,dimensions:i}={}){if(!r)throw new Error("OPENROUTER_API_KEY is not set");if(!e)throw new Error('No OpenRouter embedding model resolved. Set EMBEDDING_MODEL (e.g. "openai/text-embedding-3-large").');let s={model:e,input:t};i&&/(^|\/)text-embedding-3/.test(e)&&(s.dimensions=i);let u=(o||Wp).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 Wp,pa=c(()=>{Wp="https://openrouter.ai/api/v1"});import{spawn as qp}from"node:child_process";async function Vr(t){if(!Yr[t]){let e=Jr[t];if(!e)throw new Error(`Unknown LLM provider: "${t}". Available: ${Object.keys(Jr).join(", ")}`);let r=await e();Yr[t]=r.chat}return Yr[t]}async function ma(t){if(!qr[t]){let e=da[t];if(!e)throw new Error(`Unknown embedding provider: "${t}". Available: ${Object.keys(da).join(", ")}`);let r=await e();qr[t]=r.embedBatch}return qr[t]}function ha(t,e){if(!t)return{provider:e,model:null};let r=t.indexOf(":");return r>0&&Jr[t.slice(0,r)]?{provider:t.slice(0,r),model:t.slice(r+1)}:{provider:e,model:t}}async function ga(){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 Jp(){return new Promise(t=>{let e=qp("claude",["--version"],{stdio:"pipe"});e.on("error",()=>t(!1)),e.on("close",r=>t(r===0)),setTimeout(()=>{e.kill(),t(!1)},3e3)})}async function ya(){if(B)return B;if(p.llm.provider)return B=p.llm.provider,B;if(p.llm.openrouterApiKey)return B="openrouter",B;if(p.llm.apiKey)return B="anthropic",B;if(p.llm.openaiApiKey)return B="openai",B;if(await ga())return B="ollama",B;if(await Jp())return B="claude-cli",B;throw new Error(`No LLM provider available. Either:
|
|
26
26
|
- Set LLM_PROVIDER (openai, anthropic, openrouter, ollama, claude-cli)
|
|
27
27
|
- Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY
|
|
28
28
|
- Start Ollama locally
|
|
@@ -31,8 +31,8 @@ or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"Op
|
|
|
31
31
|
- Set VOYAGE_API_KEY (recommended \u2014 best quality)
|
|
32
32
|
- Start Ollama locally
|
|
33
33
|
- Set OPENAI_API_KEY
|
|
34
|
-
- Set OPENROUTER_API_KEY (and EMBEDDING_MODEL like "openai/text-embedding-3-large")`)}var Jr,da,Yr,qr,B,U,zr=c(()=>{x();Jr={openai:()=>Promise.resolve().then(()=>(Vn(),Jn)),anthropic:()=>Promise.resolve().then(()=>(Xn(),zn)),openrouter:()=>Promise.resolve().then(()=>(ta(),Qn)),"claude-cli":()=>Promise.resolve().then(()=>(ra(),ea)),ollama:()=>Promise.resolve().then(()=>(na(),oa))},da={ollama:()=>Promise.resolve().then(()=>(ia(),aa)),openai:()=>Promise.resolve().then(()=>(ca(),sa)),voyage:()=>Promise.resolve().then(()=>(fa(),ua)),openrouter:()=>Promise.resolve().then(()=>(pa(),la))},Yr={},qr={};B=null,U=null});var xa={};
|
|
35
|
-
`),gd(r.name,o)}return e}function gd(t,e){Promise.resolve().then(()=>(Ia(),Ta)).then(({recordTrace:r})=>r({kind:"lifecycle",summary:`pod-resolution failed for kind "${t}"`,detail:{kind:t,error:e.message}})).catch(()=>{})}function yd(t,e={}){if(!t||!t.attrsSchema)return{valid:!0};let r=[];for(let[o,n]of Object.entries(t.attrsSchema)){let a=e[o];if(a==null)continue;let i=Array.isArray(a)?"array":typeof a;n!==i&&r.push(`attr "${o}" expected ${n}, got ${i}`)}return r.length?{valid:!1,errors:r}:{valid:!0}}async function wd(t){if(!t)return null;let e=va(fn,`${t.name}.md`);try{return await Oa(e,"utf8")}catch{}if(!t.schemaDocPath)return null;let r=sd(id(import.meta.url)),o=va(r,t.schemaDocPath);try{return await Oa(o,"utf8")}catch{return null}}function _d(){pe.clear()}var cd,ud,fd,ld,pe,eo=c(()=>{X();cd=["name"],ud=new Set(["private","shared","public"]),fd=new Set(["singleton-live","multi-active","rolling-window","always"]),ld=new Set(["origin-only","shared-allowlist","open"]),pe=new Map});var xd,Na,ro=c(()=>{O();x();xd=1440*60*1e3,Na={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()-xd);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[]}}}});var co={};
|
|
34
|
+
- Set OPENROUTER_API_KEY (and EMBEDDING_MODEL like "openai/text-embedding-3-large")`)}var Jr,da,Yr,qr,B,U,zr=c(()=>{x();Jr={openai:()=>Promise.resolve().then(()=>(Vn(),Jn)),anthropic:()=>Promise.resolve().then(()=>(Xn(),zn)),openrouter:()=>Promise.resolve().then(()=>(ta(),Qn)),"claude-cli":()=>Promise.resolve().then(()=>(ra(),ea)),ollama:()=>Promise.resolve().then(()=>(na(),oa))},da={ollama:()=>Promise.resolve().then(()=>(ia(),aa)),openai:()=>Promise.resolve().then(()=>(ca(),sa)),voyage:()=>Promise.resolve().then(()=>(fa(),ua)),openrouter:()=>Promise.resolve().then(()=>(pa(),la))},Yr={},qr={};B=null,U=null});var xa={};S(xa,{parseJson:()=>Ke,prompt:()=>gt,promptJson:()=>yt});async function _a(t){let e=await ya();return ha(t,e)}async function gt(t,{model:e,caller:r}={}){let{provider:o,model:n}=await _a(e),a=await Vr(o),i=Date.now();try{let s=await Gr(()=>a(t,{model:n,jsonMode:!1}),p.llm.maxRetries),u=s.cost||Hr(s.model,s.inputTokens,s.outputTokens);return fe({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 fe({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 _a(e),a=await Vr(o),i=Date.now();try{let s=await Gr(()=>a(t,{model:n,jsonMode:!0}),p.llm.maxRetries),u=s.cost||Hr(s.model,s.inputTokens,s.outputTokens);return fe({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"}),Ke(s.text)}catch(s){throw fe({provider:o,model:n,caller:r,input:t,response:null,inputTokens:0,outputTokens:0,cost:0,durationMs:Date.now()-i,status:"error",error:s.message}),s}}function Ke(t){try{return JSON.parse(t.trim())}catch{}let e=t.match(/```(?:json)?\s*([\s\S]*?)```/);if(e)try{return JSON.parse(e[1].trim())}catch{}let r=t.match(/[\[{][\s\S]*[\]}]/);if(r)try{return JSON.parse(r[0])}catch{}return null}var ot=c(()=>{x();zr();le()});var Xr,Vp,Ea,ba=c(()=>{Xr=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}},Vp=new Xr,Ea=Vp});var Sa={};S(Sa,{currentAgent:()=>Qp,currentDeviceId:()=>Zp,currentRequestContext:()=>Zr,runWithRequestContext:()=>Xp});import{AsyncLocalStorage as zp}from"node:async_hooks";function Xp(t,e){return We.run(t,e)}function Zr(){return We.getStore()||null}function Zp(){return We.getStore()?.device?.id??null}function Qp(){return We.getStore()?.agent??process.env.SIGIL_AGENT??null}var We,Qr=c(()=>{We=new zp});var Ta={};S(Ta,{clearTraces:()=>ad,getTrace:()=>nd,listTraces:()=>od,recordTrace:()=>rd});function ed(){let t=Zr();return{deviceId:t?.device?.id??null,transport:t?.transport??null}}async function rd({kind:t,summary:e,detail:r={},namespace:o=null,durationMs:n=null}){let a=`trace-${K(16)}`,i=new Date().toISOString(),{deviceId:s,transport:u}=ed(),f=r;try{JSON.stringify(r).length>td&&(f={truncated:!0,note:"trace detail exceeded size cap",summary:e})}catch{f={error:"detail not serializable"}}try{Ea.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 od({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"?Aa(i.detail):i.detail}))}async function nd(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"?Aa(e.detail):e.detail}:null}async function ad(){return{cleared:await m("trace_event").del()}}function Aa(t){try{return JSON.parse(t)}catch{return{}}}var td,Ia=c(()=>{At();O();ba();Qr();td=256*1024});var Ca={};S(Ca,{_reset:()=>_d,activeKinds:()=>hd,get:()=>dd,getSchemaDoc:()=>wd,list:()=>md,register:()=>to,validateAttrs:()=>yd});import{readFile as Oa}from"node:fs/promises";import{fileURLToPath as id}from"node:url";import{dirname as sd,join as va}from"node:path";function to(t){for(let e of cd)if(!t[e])throw new Error(`Pod kind missing required field: ${e}`);if(t.visibility&&!ud.has(t.visibility))throw new Error(`Pod kind ${t.name}: invalid visibility ${t.visibility}`);if(t.activeMode&&!fd.has(t.activeMode))throw new Error(`Pod kind ${t.name}: invalid activeMode ${t.activeMode}`);if(t.writePolicy&&!ld.has(t.writePolicy))throw new Error(`Pod kind ${t.name}: invalid writePolicy ${t.writePolicy}`);pe.set(t.name,pd(t))}function pd(t){return{visibility:"private",activeMode:"multi-active",hotContextBudget:0,retrievalWeights:{recency:1,relevance:1},importanceDefault:2,ttlDays:null,writePolicy:"origin-only",lifecycle:{},...t}}function dd(t){return pe.get(t)||null}function md(){return Array.from(pe.values())}async function hd(t={}){let e=[];for(let r of pe.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}
|
|
35
|
+
`),gd(r.name,o)}return e}function gd(t,e){Promise.resolve().then(()=>(Ia(),Ta)).then(({recordTrace:r})=>r({kind:"lifecycle",summary:`pod-resolution failed for kind "${t}"`,detail:{kind:t,error:e.message}})).catch(()=>{})}function yd(t,e={}){if(!t||!t.attrsSchema)return{valid:!0};let r=[];for(let[o,n]of Object.entries(t.attrsSchema)){let a=e[o];if(a==null)continue;let i=Array.isArray(a)?"array":typeof a;n!==i&&r.push(`attr "${o}" expected ${n}, got ${i}`)}return r.length?{valid:!1,errors:r}:{valid:!0}}async function wd(t){if(!t)return null;let e=va(fn,`${t.name}.md`);try{return await Oa(e,"utf8")}catch{}if(!t.schemaDocPath)return null;let r=sd(id(import.meta.url)),o=va(r,t.schemaDocPath);try{return await Oa(o,"utf8")}catch{return null}}function _d(){pe.clear()}var cd,ud,fd,ld,pe,eo=c(()=>{X();cd=["name"],ud=new Set(["private","shared","public"]),fd=new Set(["singleton-live","multi-active","rolling-window","always"]),ld=new Set(["origin-only","shared-allowlist","open"]),pe=new Map});var xd,Na,ro=c(()=>{O();x();xd=1440*60*1e3,Na={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()-xd);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[]}}}});var co={};S(co,{POD_TYPE:()=>no,deriveProjectRoot:()=>so,ensureProjectPod:()=>io,formatForDisplay:()=>Ad,membership:()=>Lt,projectKind:()=>ao});import{execFileSync as bd}from"node:child_process";import{basename as Ra}from"node:path";async function io({cwd:t,namespace:e=null}){if(!t)return null;let r=so(t),o=e||p.defaults.namespace,a=(r!==t?!1:oo(t)===t)?r:oo(t),{pod:i}=await Tt({podType:no,externalId:r,name:Ra(r)||r,namespace:o,attrs:{root_path:r,git_root:a||null,display_name:Ra(r)||r,discovered_at:new Date().toISOString()},startedAt:new Date});return i}function so(t){return oo(t)||t}function oo(t){try{return bd("git",["rev-parse","--show-toplevel"],{cwd:t,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}async function Sd(){try{let{getActiveCursor:t}=await Promise.resolve().then(()=>(Nt(),Be));return(await t())?.cwd||null}catch{return null}}function Ad(t){let e=Td(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 Td(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var no,ao,de=c(()=>{ht();ue();x();no="project",ao={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 Sd();if(!e)return[];let r=t.namespace||p.defaults.namespace,o=so(e),n=await Ot({podType:no,externalId:o,namespace:r});return n?[n.uid]:[]}}});async function Od(t){if(t.project)return t.project;if(!t.cwd)try{let{getActiveCursor:e}=await Promise.resolve().then(()=>(Nt(),Be)),r=await e();t={...t,cwd:r?.cwd}}catch{return null}if(!t.cwd)return null;try{let{deriveProjectRoot:e}=await Promise.resolve().then(()=>(de(),co)),r=e(t.cwd);return r?r.split("/").pop():null}catch{return null}}function vd(t){if(!t)return{};if(typeof t=="object")return t;try{return JSON.parse(t)}catch{return{}}}var Id,Da,La=c(()=>{O();x();Id="playbook",Da={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 Od(t);try{let n=await m("pod").where({podType:Id,namespace:e,status:"active"}).select("uid","attrs");return r?n.filter(i=>{let s=vd(i.attrs);return!s.project||s.project===r}).map(i=>i.uid):n.map(i=>i.uid)}catch{return[]}}}});var Cd,Pa,Ma=c(()=>{O();x();Cd=["__virtual:vital__"],Pa={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()=>Cd,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")}}});var $a={};S($a,{registerBuiltins:()=>Ba});function Ba(){if(!ka){for(let t of Nd)to(t);ka=!0}}var Nd,ka,Ua=c(()=>{eo();Mr();ro();de();La();Ma();Nd=[kn,ao,Na,Da,Pa],ka=!1;Ba()});var Fa={};S(Fa,{ensureActivePodsForHook:()=>Rd});async function Rd({sessionId:t,cwd:e=null,transcriptPath:r=null,model:o=null,namespace:n=null}){let a=null;if(t)try{a=await Br({sessionId:t,transcriptPath:r,cwd:e,model:o,namespace:n})}catch{a=null}let i=null;if(e)try{i=await io({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 ja=c(()=>{Nt();de()});function Ha(t){let e=t.split(`
|
|
36
36
|
`),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(`
|
|
37
37
|
`).trim()}),o=u[2].trim(),n=[]):n.push(s)}n.length&&r.push({heading:o||"Content",text:n.join(`
|
|
38
38
|
`).trim()});let a=r.map(s=>s.text).join(`
|
|
@@ -48,7 +48,7 @@ or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"Op
|
|
|
48
48
|
${fo(r,e+1)}`:`- ${r}`).join(`
|
|
49
49
|
`);if(typeof t=="object"){let r=" ".repeat(e);return Object.entries(t).filter(([,o])=>o!=null).map(([o,n])=>typeof n=="object"?`${r}${o}:
|
|
50
50
|
${fo(n,e+1)}`:`${r}${o}: ${n}`).join(`
|
|
51
|
-
`)}return String(t)}var za=c(()=>{});function Xa(t,{format:e,filePath:r,contentType:o}={}){let n=e||jd(o)||Hd(r)||Gd(t);return(Fd[n]||uo)(t)}function jd(t){if(!t)return null;let e=t.split(";")[0].trim();return Ud[e]||null}function Hd(t){if(!t)return null;let e=t.match(/\.[^.]+$/)?.[0]?.toLowerCase();return e&&$d[e]||null}function Gd(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 $d,Ud,Fd,Za=c(()=>{Ga();Ka();Ya();Ja();za();$d={".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"},Ud={"text/markdown":"markdown","text/html":"html","text/plain":"text","application/json":"json","text/javascript":"code","application/javascript":"code","text/x-python":"code"},Fd={markdown:Ha,text:uo,html:Wa,code:qa,json:Va}});function Kd(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=Wd(t),i=[],s="",u="";for(let f of a){if(f.length>o){s.trim()&&(i.push({content:s.trim(),index:i.length}),u=lo(s,n),s="");let l=Yd(f,o,n);for(let h of l)i.push({content:h.trim(),index:i.length});u=lo(i[i.length-1].content,n);continue}(s+f).length>o?(i.push({content:s.trim(),index:i.length}),u=lo(s,n),s=u+f):s+=f}return s.trim()&&i.push({content:s.trim(),index:i.length}),i}function Qa(t,e={}){let r=[];for(let{heading:o,text:n}of t){if(!n?.trim())continue;let a=Kd(n,e);for(let i of a)r.push({content:i.content,index:r.length,sectionHeading:o})}return r}function Wd(t){return t.split(/(?<=[.!?])\s+|(?<=\n)\s*/).filter(r=>r.trim())}function Yd(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 lo(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
|
|
51
|
+
`)}return String(t)}var za=c(()=>{});function Xa(t,{format:e,filePath:r,contentType:o}={}){let n=e||jd(o)||Hd(r)||Gd(t);return(Fd[n]||uo)(t)}function jd(t){if(!t)return null;let e=t.split(";")[0].trim();return Ud[e]||null}function Hd(t){if(!t)return null;let e=t.match(/\.[^.]+$/)?.[0]?.toLowerCase();return e&&$d[e]||null}function Gd(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 $d,Ud,Fd,Za=c(()=>{Ga();Ka();Ya();Ja();za();$d={".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"},Ud={"text/markdown":"markdown","text/html":"html","text/plain":"text","application/json":"json","text/javascript":"code","application/javascript":"code","text/x-python":"code"},Fd={markdown:Ha,text:uo,html:Wa,code:qa,json:Va}});function Kd(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=Wd(t),i=[],s="",u="";for(let f of a){if(f.length>o){s.trim()&&(i.push({content:s.trim(),index:i.length}),u=lo(s,n),s="");let l=Yd(f,o,n);for(let h of l)i.push({content:h.trim(),index:i.length});u=lo(i[i.length-1].content,n);continue}(s+f).length>o?(i.push({content:s.trim(),index:i.length}),u=lo(s,n),s=u+f):s+=f}return s.trim()&&i.push({content:s.trim(),index:i.length}),i}function Qa(t,e={}){let r=[];for(let{heading:o,text:n}of t){if(!n?.trim())continue;let a=Kd(n,e);for(let i of a)r.push({content:i.content,index:r.length,sectionHeading:o})}return r}function Wd(t){return t.split(/(?<=[.!?])\s+|(?<=\n)\s*/).filter(r=>r.trim())}function Yd(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 lo(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 wb,ti=c(()=>{wb=Object.freeze({version:3,size:512,overlap:50,contextualPrefix:!0})});function F(t){return t?`[${t.join(",")}]`:null}function ei(){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 Mt(t="embedding"){return`(${t}::halfvec(${ei()}))`}function kt(){return`?::halfvec(${ei()})`}var Bt=c(()=>{x()});import{createHash as qd}from"node:crypto";function Vd(t,e,r,o="document"){let n=qd("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 zd(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,Xd(r.embedding)]))}function Xd(t){return Array.isArray(t)||typeof t!="string"?t:(t.startsWith("[")?t.slice(1,-1):t).split(",").map(Number)}async function Zd(t){t.length&&await m("embedding_cache").whereIn("key",t).update({hits:m.raw("hits + 1"),lastUsedAt:m.fn.now()})}async function Qd(t,e,r){if(t.length){for(let{key:o,embedding:n}of t)await m.raw(`
|
|
52
52
|
INSERT INTO embedding_cache (key, provider, model, embedding, hits, created_at, last_used_at)
|
|
53
53
|
VALUES (?, ?, ?, ?, 0, NOW(), NOW())
|
|
54
54
|
ON CONFLICT (key) DO UPDATE
|
|
@@ -59,7 +59,7 @@ ${fo(n,e+1)}`:`${r}${o}: ${n}`).join(`
|
|
|
59
59
|
SELECT key FROM embedding_cache ORDER BY last_used_at ASC LIMIT ?
|
|
60
60
|
)
|
|
61
61
|
`,[o])}async function ni(t,e,r,o,n,a={}){if(!t.length)return[];let i=a.inputType||n?.inputType||"document",s=t.map(g=>Vd(e,r,g,i)),u=await zd(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[_]})}Qd(y,e,r).catch(_=>{process.stderr.write(`[embedding-cache] store failed: ${_.message}
|
|
62
|
-
`)})}let d=s.filter(g=>u.has(g));return d.length&&Zd(d).catch(()=>{}),h}var ri,Jd,oi,tm,ai=c(()=>{Bt();O();ri=1e4,Jd=500;oi=0,tm=6e4});async function Ye(t,e={}){let[r]=await me([t],e);return r}async function me(t,{inputType:e="document"}={}){if(!t.length)return[];let r=await wa(),o=await ma(r),n=p.embedding.model,a={...p.embedding,inputType:e};return ni(t,r,n,o,a,{inputType:e})}var
|
|
62
|
+
`)})}let d=s.filter(g=>u.has(g));return d.length&&Zd(d).catch(()=>{}),h}var ri,Jd,oi,tm,ai=c(()=>{Bt();O();ri=1e4,Jd=500;oi=0,tm=6e4});async function Ye(t,e={}){let[r]=await me([t],e);return r}async function me(t,{inputType:e="document"}={}){if(!t.length)return[];let r=await wa(),o=await ma(r),n=p.embedding.model,a={...p.embedding,inputType:e};return ni(t,r,n,o,a,{inputType:e})}var Cb,qe=c(()=>{x();zr();ai();({dimensions:Cb}=p.embedding)});import{readFile as rm}from"node:fs/promises";import{join as om}from"node:path";async function ii(t,e,{title:r}){if(!t.length)return t;let o=await rm(nm,"utf8"),n=t.map((i,s)=>`Chunk ${s+1}: ${i.content.slice(0,200)}`),a=`${o}
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -87,7 +87,7 @@ Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=awai
|
|
|
87
87
|
UPDATE chunk
|
|
88
88
|
SET search_vector = to_tsvector('english', COALESCE(contextual_prefix, '') || ' ' || content)
|
|
89
89
|
WHERE document_id = ?
|
|
90
|
-
`,[t]),n}var di=c(()=>{O();Bt()});var sm,Je,mo=c(()=>{sm=typeof global=="object"&&global&&global.Object===Object&&global,Je=sm});var cm,um,R,Z=c(()=>{mo();cm=typeof self=="object"&&self&&self.Object===Object&&self,um=Je||cm||Function("return this")(),R=um});var fm,k,$t=c(()=>{Z();fm=R.Symbol,k=fm});function dm(t){var e=lm.call(t,he),r=t[he];try{t[he]=void 0;var o=!0}catch{}var n=pm.call(t);return o&&(e?t[he]=r:delete t[he]),n}var mi,lm,pm,he,hi,gi=c(()=>{$t();mi=Object.prototype,lm=mi.hasOwnProperty,pm=mi.toString,he=k?k.toStringTag:void 0;hi=dm});function gm(t){return hm.call(t)}var mm,hm,yi,wi=c(()=>{mm=Object.prototype,hm=mm.toString;yi=gm});function _m(t){return t==null?t===void 0?wm:ym:_i&&_i in Object(t)?hi(t):yi(t)}var ym,wm,_i,Y,Ut=c(()=>{$t();gi();wi();ym="[object Null]",wm="[object Undefined]",_i=k?k.toStringTag:void 0;Y=_m});function xm(t){return t!=null&&typeof t=="object"}var q,Ft=c(()=>{q=xm});function bm(t){return typeof t=="symbol"||q(t)&&Y(t)==Em}var Em,J,jt=c(()=>{Ut();Ft();Em="[object Symbol]";J=bm});function Sm(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 Ht,ho=c(()=>{Ht=Sm});var Am,T,j=c(()=>{Am=Array.isArray,T=Am});function bi(t){if(typeof t=="string")return t;if(T(t))return Ht(t,bi)+"";if(J(t))return Ei?Ei.call(t):"";var e=t+"";return e=="0"&&1/t==-Tm?"-0":e}var Tm,xi,Ei,Si,Ai=c(()=>{$t();ho();j();jt();Tm=1/0,xi=k?k.prototype:void 0,Ei=xi?xi.toString:void 0;Si=bi});function Om(t){for(var e=t.length;e--&&Im.test(t.charAt(e)););return e}var Im,Ti,Ii=c(()=>{Im=/\s/;Ti=Om});function Cm(t){return t&&t.slice(0,Ti(t)+1).replace(vm,"")}var vm,Oi,vi=c(()=>{Ii();vm=/^\s+/;Oi=Cm});function Nm(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var V,Gt=c(()=>{V=Nm});function Mm(t){if(typeof t=="number")return t;if(J(t))return Ci;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=Oi(t);var r=Dm.test(t);return r||Lm.test(t)?Pm(t.slice(2),r?2:8):Rm.test(t)?Ci:+t}var Ci,Rm,Dm,Lm,Pm,Ni,Ri=c(()=>{vi();Gt();jt();Ci=NaN,Rm=/^[-+]0x[0-9a-f]+$/i,Dm=/^0b[01]+$/i,Lm=/^0o[0-7]+$/i,Pm=parseInt;Ni=Mm});function Bm(t){if(!t)return t===0?t:0;if(t=Ni(t),t===Di||t===-Di){var e=t<0?-1:1;return e*km}return t===t?t:0}var Di,km,Li,Pi=c(()=>{Ri();Di=1/0,km=17976931348623157e292;Li=Bm});function $m(t){var e=Li(t),r=e%1;return e===e?r?e-r:e:0}var Mi,ki=c(()=>{Pi();Mi=$m});function Um(t){return t}var nt,ge=c(()=>{nt=Um});function Km(t){if(!V(t))return!1;var e=Y(t);return e==jm||e==Hm||e==Fm||e==Gm}var Fm,jm,Hm,Gm,Ve,go=c(()=>{Ut();Gt();Fm="[object AsyncFunction]",jm="[object Function]",Hm="[object GeneratorFunction]",Gm="[object Proxy]";Ve=Km});var Wm,ze,Bi=c(()=>{Z();Wm=R["__core-js_shared__"],ze=Wm});function Ym(t){return!!$i&&$i in t}var $i,Ui,Fi=c(()=>{Bi();$i=(function(){var t=/[^.]+$/.exec(ze&&ze.keys&&ze.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();Ui=Ym});function Vm(t){if(t!=null){try{return Jm.call(t)}catch{}try{return t+""}catch{}}return""}var qm,Jm,Q,yo=c(()=>{qm=Function.prototype,Jm=qm.toString;Q=Vm});function oh(t){if(!V(t)||Ui(t))return!1;var e=Ve(t)?rh:Xm;return e.test(Q(t))}var zm,Xm,Zm,Qm,th,eh,rh,ji,Hi=c(()=>{go();Fi();Gt();yo();zm=/[\\^$.*+?()[\]{}|]/g,Xm=/^\[object .+?Constructor\]$/,Zm=Function.prototype,Qm=Object.prototype,th=Zm.toString,eh=Qm.hasOwnProperty,rh=RegExp("^"+th.call(eh).replace(zm,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");ji=oh});function nh(t,e){return t?.[e]}var Gi,Ki=c(()=>{Gi=nh});function ah(t,e){var r=Gi(t,e);return ji(r)?r:void 0}var $,at=c(()=>{Hi();Ki();$=ah});var ih,Xe,Wi=c(()=>{at();Z();ih=$(R,"WeakMap"),Xe=ih});function sh(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 Yi,qi=c(()=>{Yi=sh});function ch(){}var Ji,Vi=c(()=>{Ji=ch});function ph(t){var e=0,r=0;return function(){var o=lh(),n=fh-(o-r);if(r=o,n>0){if(++e>=uh)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var uh,fh,lh,zi,Xi=c(()=>{uh=800,fh=16,lh=Date.now;zi=ph});function dh(t){return function(){return t}}var Zi,Qi=c(()=>{Zi=dh});var mh,Kt,wo=c(()=>{at();mh=(function(){try{var t=$(Object,"defineProperty");return t({},"",{}),t}catch{}})(),Kt=mh});var hh,ts,es=c(()=>{Qi();wo();ge();hh=Kt?function(t,e){return Kt(t,"toString",{configurable:!0,enumerable:!1,value:Zi(e),writable:!0})}:nt,ts=hh});var gh,rs,os=c(()=>{es();Xi();gh=zi(ts),rs=gh});function yh(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 ns,as=c(()=>{ns=yh});function wh(t){return t!==t}var is,ss=c(()=>{is=wh});function _h(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1}var cs,us=c(()=>{cs=_h});function xh(t,e,r){return e===e?cs(t,e,r):ns(t,is,r)}var fs,ls=c(()=>{as();ss();us();fs=xh});function Eh(t,e){var r=t==null?0:t.length;return!!r&&fs(t,e,0)>-1}var ps,ds=c(()=>{ls();ps=Eh});function Ah(t,e){var r=typeof t;return e=e??bh,!!e&&(r=="number"||r!="symbol"&&Sh.test(t))&&t>-1&&t%1==0&&t<e}var bh,Sh,Wt,Ze=c(()=>{bh=9007199254740991,Sh=/^(?:0|[1-9]\d*)$/;Wt=Ah});function Th(t,e,r){e=="__proto__"&&Kt?Kt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var ms,hs=c(()=>{wo();ms=Th});function Ih(t,e){return t===e||t!==t&&e!==e}var Yt,Qe=c(()=>{Yt=Ih});function Oh(t,e,r){return e=gs(e===void 0?t.length-1:e,0),function(){for(var o=arguments,n=-1,a=gs(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),Yi(t,this,s)}}var gs,ys,ws=c(()=>{qi();gs=Math.max;ys=Oh});function vh(t,e){return rs(ys(t,e,nt),t+"")}var _s,xs=c(()=>{ge();ws();os();_s=vh});function Nh(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Ch}var Ch,qt,tr=c(()=>{Ch=9007199254740991;qt=Nh});function Rh(t){return t!=null&&qt(t.length)&&!Ve(t)}var it,ye=c(()=>{go();tr();it=Rh});function Dh(t,e,r){if(!V(r))return!1;var o=typeof e;return(o=="number"?it(r)&&Wt(e,r.length):o=="string"&&e in r)?Yt(r[e],t):!1}var we,_o=c(()=>{Qe();ye();Ze();Gt();we=Dh});function Ph(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Lh;return t===r}var Lh,Es,bs=c(()=>{Lh=Object.prototype;Es=Ph});function Mh(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var Ss,As=c(()=>{Ss=Mh});function Bh(t){return q(t)&&Y(t)==kh}var kh,xo,Ts=c(()=>{Ut();Ft();kh="[object Arguments]";xo=Bh});var Is,$h,Uh,Fh,Jt,er=c(()=>{Ts();Ft();Is=Object.prototype,$h=Is.hasOwnProperty,Uh=Is.propertyIsEnumerable,Fh=xo((function(){return arguments})())?xo:function(t){return q(t)&&$h.call(t,"callee")&&!Uh.call(t,"callee")},Jt=Fh});function jh(){return!1}var Os,vs=c(()=>{Os=jh});var Rs,Cs,Hh,Ns,Gh,Kh,_e,Eo=c(()=>{Z();vs();Rs=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cs=Rs&&typeof module=="object"&&module&&!module.nodeType&&module,Hh=Cs&&Cs.exports===Rs,Ns=Hh?R.Buffer:void 0,Gh=Ns?Ns.isBuffer:void 0,Kh=Gh||Os,_e=Kh});function hg(t){return q(t)&&qt(t.length)&&!!A[Y(t)]}var Wh,Yh,qh,Jh,Vh,zh,Xh,Zh,Qh,tg,eg,rg,og,ng,ag,ig,sg,cg,ug,fg,lg,pg,dg,mg,A,Ds,Ls=c(()=>{Ut();tr();Ft();Wh="[object Arguments]",Yh="[object Array]",qh="[object Boolean]",Jh="[object Date]",Vh="[object Error]",zh="[object Function]",Xh="[object Map]",Zh="[object Number]",Qh="[object Object]",tg="[object RegExp]",eg="[object Set]",rg="[object String]",og="[object WeakMap]",ng="[object ArrayBuffer]",ag="[object DataView]",ig="[object Float32Array]",sg="[object Float64Array]",cg="[object Int8Array]",ug="[object Int16Array]",fg="[object Int32Array]",lg="[object Uint8Array]",pg="[object Uint8ClampedArray]",dg="[object Uint16Array]",mg="[object Uint32Array]",A={};A[ig]=A[sg]=A[cg]=A[ug]=A[fg]=A[lg]=A[pg]=A[dg]=A[mg]=!0;A[Wh]=A[Yh]=A[ng]=A[qh]=A[ag]=A[Jh]=A[Vh]=A[zh]=A[Xh]=A[Zh]=A[Qh]=A[tg]=A[eg]=A[rg]=A[og]=!1;Ds=hg});function gg(t){return function(e){return t(e)}}var rr,bo=c(()=>{rr=gg});var Ps,xe,yg,So,wg,Ao,Ms=c(()=>{mo();Ps=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xe=Ps&&typeof module=="object"&&module&&!module.nodeType&&module,yg=xe&&xe.exports===Ps,So=yg&&Je.process,wg=(function(){try{var t=xe&&xe.require&&xe.require("util").types;return t||So&&So.binding&&So.binding("util")}catch{}})(),Ao=wg});var ks,_g,or,To=c(()=>{Ls();bo();Ms();ks=Ao&&Ao.isTypedArray,_g=ks?rr(ks):Ds,or=_g});function bg(t,e){var r=T(t),o=!r&&Jt(t),n=!r&&!o&&_e(t),a=!r&&!o&&!n&&or(t),i=r||o||n||a,s=i?Ss(t.length,String):[],u=s.length;for(var f in t)(e||Eg.call(t,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Wt(f,u)))&&s.push(f);return s}var xg,Eg,Bs,$s=c(()=>{As();er();j();Eo();Ze();To();xg=Object.prototype,Eg=xg.hasOwnProperty;Bs=bg});function Sg(t,e){return function(r){return t(e(r))}}var Us,Fs=c(()=>{Us=Sg});var Ag,js,Hs=c(()=>{Fs();Ag=Us(Object.keys,Object),js=Ag});function Og(t){if(!Es(t))return js(t);var e=[];for(var r in Object(t))Ig.call(t,r)&&r!="constructor"&&e.push(r);return e}var Tg,Ig,Gs,Ks=c(()=>{bs();Hs();Tg=Object.prototype,Ig=Tg.hasOwnProperty;Gs=Og});function vg(t){return it(t)?Bs(t):Gs(t)}var Vt,nr=c(()=>{$s();Ks();ye();Vt=vg});function Rg(t,e){if(T(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||J(t)?!0:Ng.test(t)||!Cg.test(t)||e!=null&&t in Object(e)}var Cg,Ng,zt,ar=c(()=>{j();jt();Cg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ng=/^\w*$/;zt=Rg});var Dg,tt,Ee=c(()=>{at();Dg=$(Object,"create"),tt=Dg});function Lg(){this.__data__=tt?tt(null):{},this.size=0}var Ws,Ys=c(()=>{Ee();Ws=Lg});function Pg(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var qs,Js=c(()=>{qs=Pg});function $g(t){var e=this.__data__;if(tt){var r=e[t];return r===Mg?void 0:r}return Bg.call(e,t)?e[t]:void 0}var Mg,kg,Bg,Vs,zs=c(()=>{Ee();Mg="__lodash_hash_undefined__",kg=Object.prototype,Bg=kg.hasOwnProperty;Vs=$g});function jg(t){var e=this.__data__;return tt?e[t]!==void 0:Fg.call(e,t)}var Ug,Fg,Xs,Zs=c(()=>{Ee();Ug=Object.prototype,Fg=Ug.hasOwnProperty;Xs=jg});function Gg(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=tt&&e===void 0?Hg:e,this}var Hg,Qs,tc=c(()=>{Ee();Hg="__lodash_hash_undefined__";Qs=Gg});function Xt(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 Io,ec=c(()=>{Ys();Js();zs();Zs();tc();Xt.prototype.clear=Ws;Xt.prototype.delete=qs;Xt.prototype.get=Vs;Xt.prototype.has=Xs;Xt.prototype.set=Qs;Io=Xt});function Kg(){this.__data__=[],this.size=0}var rc,oc=c(()=>{rc=Kg});function Wg(t,e){for(var r=t.length;r--;)if(Yt(t[r][0],e))return r;return-1}var st,be=c(()=>{Qe();st=Wg});function Jg(t){var e=this.__data__,r=st(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():qg.call(e,r,1),--this.size,!0}var Yg,qg,nc,ac=c(()=>{be();Yg=Array.prototype,qg=Yg.splice;nc=Jg});function Vg(t){var e=this.__data__,r=st(e,t);return r<0?void 0:e[r][1]}var ic,sc=c(()=>{be();ic=Vg});function zg(t){return st(this.__data__,t)>-1}var cc,uc=c(()=>{be();cc=zg});function Xg(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 fc,lc=c(()=>{be();fc=Xg});function Zt(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,Se=c(()=>{oc();ac();sc();uc();lc();Zt.prototype.clear=rc;Zt.prototype.delete=nc;Zt.prototype.get=ic;Zt.prototype.has=cc;Zt.prototype.set=fc;ct=Zt});var Zg,ut,ir=c(()=>{at();Z();Zg=$(R,"Map"),ut=Zg});function Qg(){this.size=0,this.__data__={hash:new Io,map:new(ut||ct),string:new Io}}var pc,dc=c(()=>{ec();Se();ir();pc=Qg});function ty(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var mc,hc=c(()=>{mc=ty});function ey(t,e){var r=t.__data__;return mc(e)?r[typeof e=="string"?"string":"hash"]:r.map}var ft,Ae=c(()=>{hc();ft=ey});function ry(t){var e=ft(this,t).delete(t);return this.size-=e?1:0,e}var gc,yc=c(()=>{Ae();gc=ry});function oy(t){return ft(this,t).get(t)}var wc,_c=c(()=>{Ae();wc=oy});function ny(t){return ft(this,t).has(t)}var xc,Ec=c(()=>{Ae();xc=ny});function ay(t,e){var r=ft(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var bc,Sc=c(()=>{Ae();bc=ay});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,sr=c(()=>{dc();yc();_c();Ec();Sc();Qt.prototype.clear=pc;Qt.prototype.delete=gc;Qt.prototype.get=wc;Qt.prototype.has=xc;Qt.prototype.set=bc;wt=Qt});function Oo(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(iy);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(Oo.Cache||wt),r}var iy,Ac,Tc=c(()=>{sr();iy="Expected a function";Oo.Cache=wt;Ac=Oo});function cy(t){var e=Ac(t,function(o){return r.size===sy&&r.clear(),o}),r=e.cache;return e}var sy,Ic,Oc=c(()=>{Tc();sy=500;Ic=cy});var uy,fy,ly,vc,Cc=c(()=>{Oc();uy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fy=/\\(\\)?/g,ly=Ic(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(uy,function(r,o,n,a){e.push(n?a.replace(fy,"$1"):o||r)}),e}),vc=ly});function py(t){return t==null?"":Si(t)}var Nc,Rc=c(()=>{Ai();Nc=py});function dy(t,e){return T(t)?t:zt(t,e)?[t]:vc(Nc(t))}var cr,vo=c(()=>{j();ar();Cc();Rc();cr=dy});function hy(t){if(typeof t=="string"||J(t))return t;var e=t+"";return e=="0"&&1/t==-my?"-0":e}var my,lt,Te=c(()=>{jt();my=1/0;lt=hy});function gy(t,e){e=cr(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 te,ur=c(()=>{vo();Te();te=gy});function yy(t,e,r){var o=t==null?void 0:te(t,e);return o===void 0?r:o}var Dc,Lc=c(()=>{ur();Dc=yy});function wy(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t}var fr,Co=c(()=>{fr=wy});function _y(t){return T(t)||Jt(t)||!!(Pc&&t&&t[Pc])}var Pc,Mc,kc=c(()=>{$t();er();j();Pc=k?k.isConcatSpreadable:void 0;Mc=_y});function Bc(t,e,r,o,n){var a=-1,i=t.length;for(r||(r=Mc),n||(n=[]);++a<i;){var s=t[a];e>0&&r(s)?e>1?Bc(s,e-1,r,o,n):fr(n,s):o||(n[n.length]=s)}return n}var $c,Uc=c(()=>{Co();kc();$c=Bc});function xy(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 Fc,jc=c(()=>{Fc=xy});function Sy(t,e,r){(r?we(t,e,r):e===void 0)?e=1:e=by(Mi(e),0);var o=t==null?0:t.length;if(!o||e<1)return[];for(var n=0,a=0,i=Array(Ey(o/e));n<o;)i[a++]=Fc(t,n,n+=e);return i}var Ey,by,No,Hc=c(()=>{jc();_o();ki();Ey=Math.ceil,by=Math.max;No=Sy});function Ay(){this.__data__=new ct,this.size=0}var Gc,Kc=c(()=>{Se();Gc=Ay});function Ty(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var Wc,Yc=c(()=>{Wc=Ty});function Iy(t){return this.__data__.get(t)}var qc,Jc=c(()=>{qc=Iy});function Oy(t){return this.__data__.has(t)}var Vc,zc=c(()=>{Vc=Oy});function Cy(t,e){var r=this.__data__;if(r instanceof ct){var o=r.__data__;if(!ut||o.length<vy-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 vy,Xc,Zc=c(()=>{Se();ir();sr();vy=200;Xc=Cy});function ee(t){var e=this.__data__=new ct(t);this.size=e.size}var re,Ro=c(()=>{Se();Kc();Yc();Jc();zc();Zc();ee.prototype.clear=Gc;ee.prototype.delete=Wc;ee.prototype.get=qc;ee.prototype.has=Vc;ee.prototype.set=Xc;re=ee});function Ny(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 Qc,tu=c(()=>{Qc=Ny});function Ry(){return[]}var eu,ru=c(()=>{eu=Ry});var Dy,Ly,ou,Py,nu,au=c(()=>{tu();ru();Dy=Object.prototype,Ly=Dy.propertyIsEnumerable,ou=Object.getOwnPropertySymbols,Py=ou?function(t){return t==null?[]:(t=Object(t),Qc(ou(t),function(e){return Ly.call(t,e)}))}:eu,nu=Py});function My(t,e,r){var o=e(t);return T(t)?o:fr(o,r(t))}var iu,su=c(()=>{Co();j();iu=My});function ky(t){return iu(t,Vt,nu)}var Do,cu=c(()=>{su();au();nr();Do=ky});var By,lr,uu=c(()=>{at();Z();By=$(R,"DataView"),lr=By});var $y,pr,fu=c(()=>{at();Z();$y=$(R,"Promise"),pr=$y});var Uy,pt,Lo=c(()=>{at();Z();Uy=$(R,"Set"),pt=Uy});var lu,Fy,pu,du,mu,hu,jy,Hy,Gy,Ky,Wy,_t,Po,gu=c(()=>{uu();ir();fu();Lo();Wi();Ut();yo();lu="[object Map]",Fy="[object Object]",pu="[object Promise]",du="[object Set]",mu="[object WeakMap]",hu="[object DataView]",jy=Q(lr),Hy=Q(ut),Gy=Q(pr),Ky=Q(pt),Wy=Q(Xe),_t=Y;(lr&&_t(new lr(new ArrayBuffer(1)))!=hu||ut&&_t(new ut)!=lu||pr&&_t(pr.resolve())!=pu||pt&&_t(new pt)!=du||Xe&&_t(new Xe)!=mu)&&(_t=function(t){var e=Y(t),r=e==Fy?t.constructor:void 0,o=r?Q(r):"";if(o)switch(o){case jy:return hu;case Hy:return lu;case Gy:return pu;case Ky:return du;case Wy:return mu}return e});Po=_t});var Yy,Mo,yu=c(()=>{Z();Yy=R.Uint8Array,Mo=Yy});function Jy(t){return this.__data__.set(t,qy),this}var qy,wu,_u=c(()=>{qy="__lodash_hash_undefined__";wu=Jy});function Vy(t){return this.__data__.has(t)}var xu,Eu=c(()=>{xu=Vy});function dr(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wt;++e<r;)this.add(t[e])}var mr,ko=c(()=>{sr();_u();Eu();dr.prototype.add=dr.prototype.push=wu;dr.prototype.has=xu;mr=dr});function zy(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 bu,Su=c(()=>{bu=zy});function Xy(t,e){return t.has(e)}var hr,Bo=c(()=>{hr=Xy});function tw(t,e,r,o,n,a){var i=r&Zy,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&Qy?new mr: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(!bu(e,function(v,D){if(!hr(g,D)&&(y===v||n(y,v,r,o,a)))return g.push(D)})){d=!1;break}}else if(!(y===_||n(y,_,r,o,a))){d=!1;break}}return a.delete(t),a.delete(e),d}var Zy,Qy,gr,$o=c(()=>{ko();Su();Bo();Zy=1,Qy=2;gr=tw});function ew(t){var e=-1,r=Array(t.size);return t.forEach(function(o,n){r[++e]=[n,o]}),r}var Au,Tu=c(()=>{Au=ew});function rw(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}var oe,yr=c(()=>{oe=rw});function gw(t,e,r,o,n,a,i){switch(r){case hw:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case mw:return!(t.byteLength!=e.byteLength||!a(new Mo(t),new Mo(e)));case aw:case iw:case uw:return Yt(+t,+e);case sw:return t.name==e.name&&t.message==e.message;case fw:case pw:return t==e+"";case cw:var s=Au;case lw:var u=o&ow;if(s||(s=oe),t.size!=e.size&&!u)return!1;var f=i.get(t);if(f)return f==e;o|=nw,i.set(t,e);var l=gr(s(t),s(e),o,n,a,i);return i.delete(t),l;case dw:if(Uo)return Uo.call(t)==Uo.call(e)}return!1}var ow,nw,aw,iw,sw,cw,uw,fw,lw,pw,dw,mw,hw,Iu,Uo,Ou,vu=c(()=>{$t();yu();Qe();$o();Tu();yr();ow=1,nw=2,aw="[object Boolean]",iw="[object Date]",sw="[object Error]",cw="[object Map]",uw="[object Number]",fw="[object RegExp]",lw="[object Set]",pw="[object String]",dw="[object Symbol]",mw="[object ArrayBuffer]",hw="[object DataView]",Iu=k?k.prototype:void 0,Uo=Iu?Iu.valueOf:void 0;Ou=gw});function xw(t,e,r,o,n,a){var i=r&yw,s=Do(t),u=s.length,f=Do(e),l=f.length;if(u!=l&&!i)return!1;for(var h=u;h--;){var d=s[h];if(!(i?d in e:_w.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 v=t[d],D=e[d];if(o)var N=i?o(D,v,d,e,t,a):o(v,D,d,t,e,a);if(!(N===void 0?v===D||n(v,D,r,o,a):N)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var I=t.constructor,C=e.constructor;I!=C&&"constructor"in t&&"constructor"in e&&!(typeof I=="function"&&I instanceof I&&typeof C=="function"&&C instanceof C)&&(_=!1)}return a.delete(t),a.delete(e),_}var yw,ww,_w,Cu,Nu=c(()=>{cu();yw=1,ww=Object.prototype,_w=ww.hasOwnProperty;Cu=xw});function Sw(t,e,r,o,n,a){var i=T(t),s=T(e),u=i?Du:Po(t),f=s?Du:Po(e);u=u==Ru?wr:u,f=f==Ru?wr:f;var l=u==wr,h=f==wr,d=u==f;if(d&&_e(t)){if(!_e(e))return!1;i=!0,l=!1}if(d&&!l)return a||(a=new re),i||or(t)?gr(t,e,r,o,n,a):Ou(t,e,u,r,o,n,a);if(!(r&Ew)){var g=l&&Lu.call(t,"__wrapped__"),y=h&&Lu.call(e,"__wrapped__");if(g||y){var _=g?t.value():t,w=y?e.value():e;return a||(a=new re),n(_,w,r,o,a)}}return d?(a||(a=new re),Cu(t,e,r,o,n,a)):!1}var Ew,Ru,Du,wr,bw,Lu,Pu,Mu=c(()=>{Ro();$o();vu();Nu();gu();j();Eo();To();Ew=1,Ru="[object Arguments]",Du="[object Array]",wr="[object Object]",bw=Object.prototype,Lu=bw.hasOwnProperty;Pu=Sw});function ku(t,e,r,o,n){return t===e?!0:t==null||e==null||!q(t)&&!q(e)?t!==t&&e!==e:Pu(t,e,r,o,ku,n)}var _r,Fo=c(()=>{Mu();Ft();_r=ku});function Iw(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 re;if(o)var d=o(f,l,u,t,e,h);if(!(d===void 0?_r(l,f,Aw|Tw,o,h):d))return!1}}return!0}var Aw,Tw,Bu,$u=c(()=>{Ro();Fo();Aw=1,Tw=2;Bu=Iw});function Ow(t){return t===t&&!V(t)}var xr,jo=c(()=>{Gt();xr=Ow});function vw(t){for(var e=Vt(t),r=e.length;r--;){var o=e[r],n=t[o];e[r]=[o,n,xr(n)]}return e}var Uu,Fu=c(()=>{jo();nr();Uu=vw});function Cw(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Er,Ho=c(()=>{Er=Cw});function Nw(t){var e=Uu(t);return e.length==1&&e[0][2]?Er(e[0][0],e[0][1]):function(r){return r===t||Bu(r,t,e)}}var ju,Hu=c(()=>{$u();Fu();Ho();ju=Nw});function Rw(t,e){return t!=null&&e in Object(t)}var Gu,Ku=c(()=>{Gu=Rw});function Dw(t,e,r){e=cr(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&&qt(n)&&Wt(i,n)&&(T(t)||Jt(t)))}var Wu,Yu=c(()=>{vo();er();j();Ze();tr();Te();Wu=Dw});function Lw(t,e){return t!=null&&Wu(t,e,Gu)}var qu,Ju=c(()=>{Ku();Yu();qu=Lw});function kw(t,e){return zt(t)&&xr(e)?Er(lt(t),e):function(r){var o=Dc(r,t);return o===void 0&&o===e?qu(r,t):_r(e,o,Pw|Mw)}}var Pw,Mw,Vu,zu=c(()=>{Fo();Lc();Ju();ar();jo();Ho();Te();Pw=1,Mw=2;Vu=kw});function Bw(t){return function(e){return e?.[t]}}var Xu,Zu=c(()=>{Xu=Bw});function $w(t){return function(e){return te(e,t)}}var Qu,tf=c(()=>{ur();Qu=$w});function Uw(t){return zt(t)?Xu(lt(t)):Qu(t)}var ef,rf=c(()=>{Zu();tf();ar();Te();ef=Uw});function Fw(t){return typeof t=="function"?t:t==null?nt:typeof t=="object"?T(t)?Vu(t[0],t[1]):ju(t):ef(t)}var dt,Ie=c(()=>{Hu();zu();ge();j();rf();dt=Fw});function jw(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 of,nf=c(()=>{of=jw});function Hw(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 af,sf=c(()=>{af=Hw});var Gw,cf,uf=c(()=>{sf();Gw=af(),cf=Gw});function Kw(t,e){return t&&cf(t,e,Vt)}var ff,lf=c(()=>{uf();nr();ff=Kw});function Ww(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 pf,df=c(()=>{ye();pf=Ww});var Yw,br,Go=c(()=>{lf();df();Yw=pf(ff),br=Yw});function qw(t,e,r,o){return br(t,function(n,a,i){e(o,n,r(n),i)}),o}var mf,hf=c(()=>{Go();mf=qw});function Jw(t,e){return function(r,o){var n=T(r)?of:mf,a=e?e():{};return n(r,t,dt(o,2),a)}}var gf,yf=c(()=>{nf();hf();Ie();j();gf=Jw});function Vw(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 wf,_f=c(()=>{wf=Vw});function zw(t,e){var r=-1,o=it(t)?Array(t.length):[];return br(t,function(n,a,i){o[++r]=e(n,a,i)}),o}var xf,Ef=c(()=>{Go();ye();xf=zw});var Xw,Zw,Qw,Ko,bf=c(()=>{hs();yf();Xw=Object.prototype,Zw=Xw.hasOwnProperty,Qw=gf(function(t,e,r){Zw.call(t,r)?t[r].push(e):ms(t,r,[e])}),Ko=Qw});function t_(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 Sf,Af=c(()=>{Sf=t_});function e_(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var Tf,If=c(()=>{Tf=e_});function r_(t,e){if(t!==e){var r=t!==void 0,o=t===null,n=t===t,a=J(t),i=e!==void 0,s=e===null,u=e===e,f=J(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 Of,vf=c(()=>{jt();Of=r_});function o_(t,e,r){for(var o=-1,n=t.criteria,a=e.criteria,i=n.length,s=r.length;++o<i;){var u=Of(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 Cf,Nf=c(()=>{vf();Cf=o_});function n_(t,e,r){e.length?e=Ht(e,function(a){return T(a)?function(i){return te(i,a.length===1?a[0]:a)}:a}):e=[nt];var o=-1;e=Ht(e,rr(dt));var n=xf(t,function(a,i,s){var u=Ht(e,function(f){return f(a)});return{criteria:u,index:++o,value:a}});return Tf(n,function(a,i){return Cf(a,i,r)})}var Rf,Df=c(()=>{ho();ur();Ie();Ef();If();bo();Nf();ge();j();Rf=n_});var a_,Wo,Lf=c(()=>{Uc();Df();xs();_o();a_=_s(function(t,e){if(t==null)return[];var r=e.length;return r>1&&we(t,e[0],e[1])?e=[]:r>2&&we(e[0],e[1],e[2])&&(e=[e[0]]),Rf(t,$c(e,1),[])}),Wo=a_});function i_(t,e){return t&&t.length?Sf(t,dt(e,2)):0}var Yo,Pf=c(()=>{Ie();Af();Yo=i_});var s_,c_,Mf,kf=c(()=>{Lo();Vi();yr();s_=1/0,c_=pt&&1/oe(new pt([,-0]))[1]==s_?function(t){return new pt(t)}:Ji,Mf=c_});function f_(t,e,r){var o=-1,n=ps,a=t.length,i=!0,s=[],u=s;if(r)i=!1,n=wf;else if(a>=u_){var f=e?null:Mf(t);if(f)return oe(f);i=!1,n=hr,u=new mr}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 u_,Bf,$f=c(()=>{ko();ds();_f();Bo();kf();yr();u_=200;Bf=f_});function l_(t,e){return t&&t.length?Bf(t,dt(e,2)):[]}var qo,Uf=c(()=>{Ie();$f();qo=l_});var Sr=c(()=>{Hc();bf();Lf();Pf();Uf();});import{readFile as p_}from"node:fs/promises";function m_(t){let e=[];return t.sectionHeading&&e.push(`[Section: ${t.sectionHeading}]`),t.contextualPrefix&&e.push(t.contextualPrefix),e.push(t.content),e.join(`
|
|
90
|
+
`,[t]),n}var di=c(()=>{O();Bt()});var sm,Je,mo=c(()=>{sm=typeof global=="object"&&global&&global.Object===Object&&global,Je=sm});var cm,um,R,Z=c(()=>{mo();cm=typeof self=="object"&&self&&self.Object===Object&&self,um=Je||cm||Function("return this")(),R=um});var fm,k,$t=c(()=>{Z();fm=R.Symbol,k=fm});function dm(t){var e=lm.call(t,he),r=t[he];try{t[he]=void 0;var o=!0}catch{}var n=pm.call(t);return o&&(e?t[he]=r:delete t[he]),n}var mi,lm,pm,he,hi,gi=c(()=>{$t();mi=Object.prototype,lm=mi.hasOwnProperty,pm=mi.toString,he=k?k.toStringTag:void 0;hi=dm});function gm(t){return hm.call(t)}var mm,hm,yi,wi=c(()=>{mm=Object.prototype,hm=mm.toString;yi=gm});function _m(t){return t==null?t===void 0?wm:ym:_i&&_i in Object(t)?hi(t):yi(t)}var ym,wm,_i,Y,Ut=c(()=>{$t();gi();wi();ym="[object Null]",wm="[object Undefined]",_i=k?k.toStringTag:void 0;Y=_m});function xm(t){return t!=null&&typeof t=="object"}var q,Ft=c(()=>{q=xm});function bm(t){return typeof t=="symbol"||q(t)&&Y(t)==Em}var Em,J,jt=c(()=>{Ut();Ft();Em="[object Symbol]";J=bm});function Sm(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 Ht,ho=c(()=>{Ht=Sm});var Am,T,j=c(()=>{Am=Array.isArray,T=Am});function bi(t){if(typeof t=="string")return t;if(T(t))return Ht(t,bi)+"";if(J(t))return Ei?Ei.call(t):"";var e=t+"";return e=="0"&&1/t==-Tm?"-0":e}var Tm,xi,Ei,Si,Ai=c(()=>{$t();ho();j();jt();Tm=1/0,xi=k?k.prototype:void 0,Ei=xi?xi.toString:void 0;Si=bi});function Om(t){for(var e=t.length;e--&&Im.test(t.charAt(e)););return e}var Im,Ti,Ii=c(()=>{Im=/\s/;Ti=Om});function Cm(t){return t&&t.slice(0,Ti(t)+1).replace(vm,"")}var vm,Oi,vi=c(()=>{Ii();vm=/^\s+/;Oi=Cm});function Nm(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var V,Gt=c(()=>{V=Nm});function Mm(t){if(typeof t=="number")return t;if(J(t))return Ci;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=Oi(t);var r=Dm.test(t);return r||Lm.test(t)?Pm(t.slice(2),r?2:8):Rm.test(t)?Ci:+t}var Ci,Rm,Dm,Lm,Pm,Ni,Ri=c(()=>{vi();Gt();jt();Ci=NaN,Rm=/^[-+]0x[0-9a-f]+$/i,Dm=/^0b[01]+$/i,Lm=/^0o[0-7]+$/i,Pm=parseInt;Ni=Mm});function Bm(t){if(!t)return t===0?t:0;if(t=Ni(t),t===Di||t===-Di){var e=t<0?-1:1;return e*km}return t===t?t:0}var Di,km,Li,Pi=c(()=>{Ri();Di=1/0,km=17976931348623157e292;Li=Bm});function $m(t){var e=Li(t),r=e%1;return e===e?r?e-r:e:0}var Mi,ki=c(()=>{Pi();Mi=$m});function Um(t){return t}var nt,ge=c(()=>{nt=Um});function Km(t){if(!V(t))return!1;var e=Y(t);return e==jm||e==Hm||e==Fm||e==Gm}var Fm,jm,Hm,Gm,Ve,go=c(()=>{Ut();Gt();Fm="[object AsyncFunction]",jm="[object Function]",Hm="[object GeneratorFunction]",Gm="[object Proxy]";Ve=Km});var Wm,ze,Bi=c(()=>{Z();Wm=R["__core-js_shared__"],ze=Wm});function Ym(t){return!!$i&&$i in t}var $i,Ui,Fi=c(()=>{Bi();$i=(function(){var t=/[^.]+$/.exec(ze&&ze.keys&&ze.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();Ui=Ym});function Vm(t){if(t!=null){try{return Jm.call(t)}catch{}try{return t+""}catch{}}return""}var qm,Jm,Q,yo=c(()=>{qm=Function.prototype,Jm=qm.toString;Q=Vm});function oh(t){if(!V(t)||Ui(t))return!1;var e=Ve(t)?rh:Xm;return e.test(Q(t))}var zm,Xm,Zm,Qm,th,eh,rh,ji,Hi=c(()=>{go();Fi();Gt();yo();zm=/[\\^$.*+?()[\]{}|]/g,Xm=/^\[object .+?Constructor\]$/,Zm=Function.prototype,Qm=Object.prototype,th=Zm.toString,eh=Qm.hasOwnProperty,rh=RegExp("^"+th.call(eh).replace(zm,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");ji=oh});function nh(t,e){return t?.[e]}var Gi,Ki=c(()=>{Gi=nh});function ah(t,e){var r=Gi(t,e);return ji(r)?r:void 0}var $,at=c(()=>{Hi();Ki();$=ah});var ih,Xe,Wi=c(()=>{at();Z();ih=$(R,"WeakMap"),Xe=ih});function sh(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 Yi,qi=c(()=>{Yi=sh});function ch(){}var Ji,Vi=c(()=>{Ji=ch});function ph(t){var e=0,r=0;return function(){var o=lh(),n=fh-(o-r);if(r=o,n>0){if(++e>=uh)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var uh,fh,lh,zi,Xi=c(()=>{uh=800,fh=16,lh=Date.now;zi=ph});function dh(t){return function(){return t}}var Zi,Qi=c(()=>{Zi=dh});var mh,Kt,wo=c(()=>{at();mh=(function(){try{var t=$(Object,"defineProperty");return t({},"",{}),t}catch{}})(),Kt=mh});var hh,ts,es=c(()=>{Qi();wo();ge();hh=Kt?function(t,e){return Kt(t,"toString",{configurable:!0,enumerable:!1,value:Zi(e),writable:!0})}:nt,ts=hh});var gh,rs,os=c(()=>{es();Xi();gh=zi(ts),rs=gh});function yh(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 ns,as=c(()=>{ns=yh});function wh(t){return t!==t}var is,ss=c(()=>{is=wh});function _h(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1}var cs,us=c(()=>{cs=_h});function xh(t,e,r){return e===e?cs(t,e,r):ns(t,is,r)}var fs,ls=c(()=>{as();ss();us();fs=xh});function Eh(t,e){var r=t==null?0:t.length;return!!r&&fs(t,e,0)>-1}var ps,ds=c(()=>{ls();ps=Eh});function Ah(t,e){var r=typeof t;return e=e??bh,!!e&&(r=="number"||r!="symbol"&&Sh.test(t))&&t>-1&&t%1==0&&t<e}var bh,Sh,Wt,Ze=c(()=>{bh=9007199254740991,Sh=/^(?:0|[1-9]\d*)$/;Wt=Ah});function Th(t,e,r){e=="__proto__"&&Kt?Kt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var ms,hs=c(()=>{wo();ms=Th});function Ih(t,e){return t===e||t!==t&&e!==e}var Yt,Qe=c(()=>{Yt=Ih});function Oh(t,e,r){return e=gs(e===void 0?t.length-1:e,0),function(){for(var o=arguments,n=-1,a=gs(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),Yi(t,this,s)}}var gs,ys,ws=c(()=>{qi();gs=Math.max;ys=Oh});function vh(t,e){return rs(ys(t,e,nt),t+"")}var _s,xs=c(()=>{ge();ws();os();_s=vh});function Nh(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Ch}var Ch,qt,tr=c(()=>{Ch=9007199254740991;qt=Nh});function Rh(t){return t!=null&&qt(t.length)&&!Ve(t)}var it,ye=c(()=>{go();tr();it=Rh});function Dh(t,e,r){if(!V(r))return!1;var o=typeof e;return(o=="number"?it(r)&&Wt(e,r.length):o=="string"&&e in r)?Yt(r[e],t):!1}var we,_o=c(()=>{Qe();ye();Ze();Gt();we=Dh});function Ph(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Lh;return t===r}var Lh,Es,bs=c(()=>{Lh=Object.prototype;Es=Ph});function Mh(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var Ss,As=c(()=>{Ss=Mh});function Bh(t){return q(t)&&Y(t)==kh}var kh,xo,Ts=c(()=>{Ut();Ft();kh="[object Arguments]";xo=Bh});var Is,$h,Uh,Fh,Jt,er=c(()=>{Ts();Ft();Is=Object.prototype,$h=Is.hasOwnProperty,Uh=Is.propertyIsEnumerable,Fh=xo((function(){return arguments})())?xo:function(t){return q(t)&&$h.call(t,"callee")&&!Uh.call(t,"callee")},Jt=Fh});function jh(){return!1}var Os,vs=c(()=>{Os=jh});var Rs,Cs,Hh,Ns,Gh,Kh,_e,Eo=c(()=>{Z();vs();Rs=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cs=Rs&&typeof module=="object"&&module&&!module.nodeType&&module,Hh=Cs&&Cs.exports===Rs,Ns=Hh?R.Buffer:void 0,Gh=Ns?Ns.isBuffer:void 0,Kh=Gh||Os,_e=Kh});function hg(t){return q(t)&&qt(t.length)&&!!A[Y(t)]}var Wh,Yh,qh,Jh,Vh,zh,Xh,Zh,Qh,tg,eg,rg,og,ng,ag,ig,sg,cg,ug,fg,lg,pg,dg,mg,A,Ds,Ls=c(()=>{Ut();tr();Ft();Wh="[object Arguments]",Yh="[object Array]",qh="[object Boolean]",Jh="[object Date]",Vh="[object Error]",zh="[object Function]",Xh="[object Map]",Zh="[object Number]",Qh="[object Object]",tg="[object RegExp]",eg="[object Set]",rg="[object String]",og="[object WeakMap]",ng="[object ArrayBuffer]",ag="[object DataView]",ig="[object Float32Array]",sg="[object Float64Array]",cg="[object Int8Array]",ug="[object Int16Array]",fg="[object Int32Array]",lg="[object Uint8Array]",pg="[object Uint8ClampedArray]",dg="[object Uint16Array]",mg="[object Uint32Array]",A={};A[ig]=A[sg]=A[cg]=A[ug]=A[fg]=A[lg]=A[pg]=A[dg]=A[mg]=!0;A[Wh]=A[Yh]=A[ng]=A[qh]=A[ag]=A[Jh]=A[Vh]=A[zh]=A[Xh]=A[Zh]=A[Qh]=A[tg]=A[eg]=A[rg]=A[og]=!1;Ds=hg});function gg(t){return function(e){return t(e)}}var rr,bo=c(()=>{rr=gg});var Ps,xe,yg,So,wg,Ao,Ms=c(()=>{mo();Ps=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xe=Ps&&typeof module=="object"&&module&&!module.nodeType&&module,yg=xe&&xe.exports===Ps,So=yg&&Je.process,wg=(function(){try{var t=xe&&xe.require&&xe.require("util").types;return t||So&&So.binding&&So.binding("util")}catch{}})(),Ao=wg});var ks,_g,or,To=c(()=>{Ls();bo();Ms();ks=Ao&&Ao.isTypedArray,_g=ks?rr(ks):Ds,or=_g});function bg(t,e){var r=T(t),o=!r&&Jt(t),n=!r&&!o&&_e(t),a=!r&&!o&&!n&&or(t),i=r||o||n||a,s=i?Ss(t.length,String):[],u=s.length;for(var f in t)(e||Eg.call(t,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Wt(f,u)))&&s.push(f);return s}var xg,Eg,Bs,$s=c(()=>{As();er();j();Eo();Ze();To();xg=Object.prototype,Eg=xg.hasOwnProperty;Bs=bg});function Sg(t,e){return function(r){return t(e(r))}}var Us,Fs=c(()=>{Us=Sg});var Ag,js,Hs=c(()=>{Fs();Ag=Us(Object.keys,Object),js=Ag});function Og(t){if(!Es(t))return js(t);var e=[];for(var r in Object(t))Ig.call(t,r)&&r!="constructor"&&e.push(r);return e}var Tg,Ig,Gs,Ks=c(()=>{bs();Hs();Tg=Object.prototype,Ig=Tg.hasOwnProperty;Gs=Og});function vg(t){return it(t)?Bs(t):Gs(t)}var Vt,nr=c(()=>{$s();Ks();ye();Vt=vg});function Rg(t,e){if(T(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||J(t)?!0:Ng.test(t)||!Cg.test(t)||e!=null&&t in Object(e)}var Cg,Ng,zt,ar=c(()=>{j();jt();Cg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ng=/^\w*$/;zt=Rg});var Dg,tt,Ee=c(()=>{at();Dg=$(Object,"create"),tt=Dg});function Lg(){this.__data__=tt?tt(null):{},this.size=0}var Ws,Ys=c(()=>{Ee();Ws=Lg});function Pg(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var qs,Js=c(()=>{qs=Pg});function $g(t){var e=this.__data__;if(tt){var r=e[t];return r===Mg?void 0:r}return Bg.call(e,t)?e[t]:void 0}var Mg,kg,Bg,Vs,zs=c(()=>{Ee();Mg="__lodash_hash_undefined__",kg=Object.prototype,Bg=kg.hasOwnProperty;Vs=$g});function jg(t){var e=this.__data__;return tt?e[t]!==void 0:Fg.call(e,t)}var Ug,Fg,Xs,Zs=c(()=>{Ee();Ug=Object.prototype,Fg=Ug.hasOwnProperty;Xs=jg});function Gg(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=tt&&e===void 0?Hg:e,this}var Hg,Qs,tc=c(()=>{Ee();Hg="__lodash_hash_undefined__";Qs=Gg});function Xt(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 Io,ec=c(()=>{Ys();Js();zs();Zs();tc();Xt.prototype.clear=Ws;Xt.prototype.delete=qs;Xt.prototype.get=Vs;Xt.prototype.has=Xs;Xt.prototype.set=Qs;Io=Xt});function Kg(){this.__data__=[],this.size=0}var rc,oc=c(()=>{rc=Kg});function Wg(t,e){for(var r=t.length;r--;)if(Yt(t[r][0],e))return r;return-1}var st,be=c(()=>{Qe();st=Wg});function Jg(t){var e=this.__data__,r=st(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():qg.call(e,r,1),--this.size,!0}var Yg,qg,nc,ac=c(()=>{be();Yg=Array.prototype,qg=Yg.splice;nc=Jg});function Vg(t){var e=this.__data__,r=st(e,t);return r<0?void 0:e[r][1]}var ic,sc=c(()=>{be();ic=Vg});function zg(t){return st(this.__data__,t)>-1}var cc,uc=c(()=>{be();cc=zg});function Xg(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 fc,lc=c(()=>{be();fc=Xg});function Zt(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,Se=c(()=>{oc();ac();sc();uc();lc();Zt.prototype.clear=rc;Zt.prototype.delete=nc;Zt.prototype.get=ic;Zt.prototype.has=cc;Zt.prototype.set=fc;ct=Zt});var Zg,ut,ir=c(()=>{at();Z();Zg=$(R,"Map"),ut=Zg});function Qg(){this.size=0,this.__data__={hash:new Io,map:new(ut||ct),string:new Io}}var pc,dc=c(()=>{ec();Se();ir();pc=Qg});function ty(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var mc,hc=c(()=>{mc=ty});function ey(t,e){var r=t.__data__;return mc(e)?r[typeof e=="string"?"string":"hash"]:r.map}var ft,Ae=c(()=>{hc();ft=ey});function ry(t){var e=ft(this,t).delete(t);return this.size-=e?1:0,e}var gc,yc=c(()=>{Ae();gc=ry});function oy(t){return ft(this,t).get(t)}var wc,_c=c(()=>{Ae();wc=oy});function ny(t){return ft(this,t).has(t)}var xc,Ec=c(()=>{Ae();xc=ny});function ay(t,e){var r=ft(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var bc,Sc=c(()=>{Ae();bc=ay});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,sr=c(()=>{dc();yc();_c();Ec();Sc();Qt.prototype.clear=pc;Qt.prototype.delete=gc;Qt.prototype.get=wc;Qt.prototype.has=xc;Qt.prototype.set=bc;wt=Qt});function Oo(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(iy);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(Oo.Cache||wt),r}var iy,Ac,Tc=c(()=>{sr();iy="Expected a function";Oo.Cache=wt;Ac=Oo});function cy(t){var e=Ac(t,function(o){return r.size===sy&&r.clear(),o}),r=e.cache;return e}var sy,Ic,Oc=c(()=>{Tc();sy=500;Ic=cy});var uy,fy,ly,vc,Cc=c(()=>{Oc();uy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fy=/\\(\\)?/g,ly=Ic(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(uy,function(r,o,n,a){e.push(n?a.replace(fy,"$1"):o||r)}),e}),vc=ly});function py(t){return t==null?"":Si(t)}var Nc,Rc=c(()=>{Ai();Nc=py});function dy(t,e){return T(t)?t:zt(t,e)?[t]:vc(Nc(t))}var cr,vo=c(()=>{j();ar();Cc();Rc();cr=dy});function hy(t){if(typeof t=="string"||J(t))return t;var e=t+"";return e=="0"&&1/t==-my?"-0":e}var my,lt,Te=c(()=>{jt();my=1/0;lt=hy});function gy(t,e){e=cr(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 te,ur=c(()=>{vo();Te();te=gy});function yy(t,e,r){var o=t==null?void 0:te(t,e);return o===void 0?r:o}var Dc,Lc=c(()=>{ur();Dc=yy});function wy(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t}var fr,Co=c(()=>{fr=wy});function _y(t){return T(t)||Jt(t)||!!(Pc&&t&&t[Pc])}var Pc,Mc,kc=c(()=>{$t();er();j();Pc=k?k.isConcatSpreadable:void 0;Mc=_y});function Bc(t,e,r,o,n){var a=-1,i=t.length;for(r||(r=Mc),n||(n=[]);++a<i;){var s=t[a];e>0&&r(s)?e>1?Bc(s,e-1,r,o,n):fr(n,s):o||(n[n.length]=s)}return n}var $c,Uc=c(()=>{Co();kc();$c=Bc});function xy(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 Fc,jc=c(()=>{Fc=xy});function Sy(t,e,r){(r?we(t,e,r):e===void 0)?e=1:e=by(Mi(e),0);var o=t==null?0:t.length;if(!o||e<1)return[];for(var n=0,a=0,i=Array(Ey(o/e));n<o;)i[a++]=Fc(t,n,n+=e);return i}var Ey,by,No,Hc=c(()=>{jc();_o();ki();Ey=Math.ceil,by=Math.max;No=Sy});function Ay(){this.__data__=new ct,this.size=0}var Gc,Kc=c(()=>{Se();Gc=Ay});function Ty(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var Wc,Yc=c(()=>{Wc=Ty});function Iy(t){return this.__data__.get(t)}var qc,Jc=c(()=>{qc=Iy});function Oy(t){return this.__data__.has(t)}var Vc,zc=c(()=>{Vc=Oy});function Cy(t,e){var r=this.__data__;if(r instanceof ct){var o=r.__data__;if(!ut||o.length<vy-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 vy,Xc,Zc=c(()=>{Se();ir();sr();vy=200;Xc=Cy});function ee(t){var e=this.__data__=new ct(t);this.size=e.size}var re,Ro=c(()=>{Se();Kc();Yc();Jc();zc();Zc();ee.prototype.clear=Gc;ee.prototype.delete=Wc;ee.prototype.get=qc;ee.prototype.has=Vc;ee.prototype.set=Xc;re=ee});function Ny(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 Qc,tu=c(()=>{Qc=Ny});function Ry(){return[]}var eu,ru=c(()=>{eu=Ry});var Dy,Ly,ou,Py,nu,au=c(()=>{tu();ru();Dy=Object.prototype,Ly=Dy.propertyIsEnumerable,ou=Object.getOwnPropertySymbols,Py=ou?function(t){return t==null?[]:(t=Object(t),Qc(ou(t),function(e){return Ly.call(t,e)}))}:eu,nu=Py});function My(t,e,r){var o=e(t);return T(t)?o:fr(o,r(t))}var iu,su=c(()=>{Co();j();iu=My});function ky(t){return iu(t,Vt,nu)}var Do,cu=c(()=>{su();au();nr();Do=ky});var By,lr,uu=c(()=>{at();Z();By=$(R,"DataView"),lr=By});var $y,pr,fu=c(()=>{at();Z();$y=$(R,"Promise"),pr=$y});var Uy,pt,Lo=c(()=>{at();Z();Uy=$(R,"Set"),pt=Uy});var lu,Fy,pu,du,mu,hu,jy,Hy,Gy,Ky,Wy,_t,Po,gu=c(()=>{uu();ir();fu();Lo();Wi();Ut();yo();lu="[object Map]",Fy="[object Object]",pu="[object Promise]",du="[object Set]",mu="[object WeakMap]",hu="[object DataView]",jy=Q(lr),Hy=Q(ut),Gy=Q(pr),Ky=Q(pt),Wy=Q(Xe),_t=Y;(lr&&_t(new lr(new ArrayBuffer(1)))!=hu||ut&&_t(new ut)!=lu||pr&&_t(pr.resolve())!=pu||pt&&_t(new pt)!=du||Xe&&_t(new Xe)!=mu)&&(_t=function(t){var e=Y(t),r=e==Fy?t.constructor:void 0,o=r?Q(r):"";if(o)switch(o){case jy:return hu;case Hy:return lu;case Gy:return pu;case Ky:return du;case Wy:return mu}return e});Po=_t});var Yy,Mo,yu=c(()=>{Z();Yy=R.Uint8Array,Mo=Yy});function Jy(t){return this.__data__.set(t,qy),this}var qy,wu,_u=c(()=>{qy="__lodash_hash_undefined__";wu=Jy});function Vy(t){return this.__data__.has(t)}var xu,Eu=c(()=>{xu=Vy});function dr(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wt;++e<r;)this.add(t[e])}var mr,ko=c(()=>{sr();_u();Eu();dr.prototype.add=dr.prototype.push=wu;dr.prototype.has=xu;mr=dr});function zy(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 bu,Su=c(()=>{bu=zy});function Xy(t,e){return t.has(e)}var hr,Bo=c(()=>{hr=Xy});function tw(t,e,r,o,n,a){var i=r&Zy,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&Qy?new mr: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(!bu(e,function(v,L){if(!hr(g,L)&&(y===v||n(y,v,r,o,a)))return g.push(L)})){d=!1;break}}else if(!(y===_||n(y,_,r,o,a))){d=!1;break}}return a.delete(t),a.delete(e),d}var Zy,Qy,gr,$o=c(()=>{ko();Su();Bo();Zy=1,Qy=2;gr=tw});function ew(t){var e=-1,r=Array(t.size);return t.forEach(function(o,n){r[++e]=[n,o]}),r}var Au,Tu=c(()=>{Au=ew});function rw(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}var oe,yr=c(()=>{oe=rw});function gw(t,e,r,o,n,a,i){switch(r){case hw:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case mw:return!(t.byteLength!=e.byteLength||!a(new Mo(t),new Mo(e)));case aw:case iw:case uw:return Yt(+t,+e);case sw:return t.name==e.name&&t.message==e.message;case fw:case pw:return t==e+"";case cw:var s=Au;case lw:var u=o&ow;if(s||(s=oe),t.size!=e.size&&!u)return!1;var f=i.get(t);if(f)return f==e;o|=nw,i.set(t,e);var l=gr(s(t),s(e),o,n,a,i);return i.delete(t),l;case dw:if(Uo)return Uo.call(t)==Uo.call(e)}return!1}var ow,nw,aw,iw,sw,cw,uw,fw,lw,pw,dw,mw,hw,Iu,Uo,Ou,vu=c(()=>{$t();yu();Qe();$o();Tu();yr();ow=1,nw=2,aw="[object Boolean]",iw="[object Date]",sw="[object Error]",cw="[object Map]",uw="[object Number]",fw="[object RegExp]",lw="[object Set]",pw="[object String]",dw="[object Symbol]",mw="[object ArrayBuffer]",hw="[object DataView]",Iu=k?k.prototype:void 0,Uo=Iu?Iu.valueOf:void 0;Ou=gw});function xw(t,e,r,o,n,a){var i=r&yw,s=Do(t),u=s.length,f=Do(e),l=f.length;if(u!=l&&!i)return!1;for(var h=u;h--;){var d=s[h];if(!(i?d in e:_w.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 v=t[d],L=e[d];if(o)var N=i?o(L,v,d,e,t,a):o(v,L,d,t,e,a);if(!(N===void 0?v===L||n(v,L,r,o,a):N)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var I=t.constructor,C=e.constructor;I!=C&&"constructor"in t&&"constructor"in e&&!(typeof I=="function"&&I instanceof I&&typeof C=="function"&&C instanceof C)&&(_=!1)}return a.delete(t),a.delete(e),_}var yw,ww,_w,Cu,Nu=c(()=>{cu();yw=1,ww=Object.prototype,_w=ww.hasOwnProperty;Cu=xw});function Sw(t,e,r,o,n,a){var i=T(t),s=T(e),u=i?Du:Po(t),f=s?Du:Po(e);u=u==Ru?wr:u,f=f==Ru?wr:f;var l=u==wr,h=f==wr,d=u==f;if(d&&_e(t)){if(!_e(e))return!1;i=!0,l=!1}if(d&&!l)return a||(a=new re),i||or(t)?gr(t,e,r,o,n,a):Ou(t,e,u,r,o,n,a);if(!(r&Ew)){var g=l&&Lu.call(t,"__wrapped__"),y=h&&Lu.call(e,"__wrapped__");if(g||y){var _=g?t.value():t,w=y?e.value():e;return a||(a=new re),n(_,w,r,o,a)}}return d?(a||(a=new re),Cu(t,e,r,o,n,a)):!1}var Ew,Ru,Du,wr,bw,Lu,Pu,Mu=c(()=>{Ro();$o();vu();Nu();gu();j();Eo();To();Ew=1,Ru="[object Arguments]",Du="[object Array]",wr="[object Object]",bw=Object.prototype,Lu=bw.hasOwnProperty;Pu=Sw});function ku(t,e,r,o,n){return t===e?!0:t==null||e==null||!q(t)&&!q(e)?t!==t&&e!==e:Pu(t,e,r,o,ku,n)}var _r,Fo=c(()=>{Mu();Ft();_r=ku});function Iw(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 re;if(o)var d=o(f,l,u,t,e,h);if(!(d===void 0?_r(l,f,Aw|Tw,o,h):d))return!1}}return!0}var Aw,Tw,Bu,$u=c(()=>{Ro();Fo();Aw=1,Tw=2;Bu=Iw});function Ow(t){return t===t&&!V(t)}var xr,jo=c(()=>{Gt();xr=Ow});function vw(t){for(var e=Vt(t),r=e.length;r--;){var o=e[r],n=t[o];e[r]=[o,n,xr(n)]}return e}var Uu,Fu=c(()=>{jo();nr();Uu=vw});function Cw(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Er,Ho=c(()=>{Er=Cw});function Nw(t){var e=Uu(t);return e.length==1&&e[0][2]?Er(e[0][0],e[0][1]):function(r){return r===t||Bu(r,t,e)}}var ju,Hu=c(()=>{$u();Fu();Ho();ju=Nw});function Rw(t,e){return t!=null&&e in Object(t)}var Gu,Ku=c(()=>{Gu=Rw});function Dw(t,e,r){e=cr(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&&qt(n)&&Wt(i,n)&&(T(t)||Jt(t)))}var Wu,Yu=c(()=>{vo();er();j();Ze();tr();Te();Wu=Dw});function Lw(t,e){return t!=null&&Wu(t,e,Gu)}var qu,Ju=c(()=>{Ku();Yu();qu=Lw});function kw(t,e){return zt(t)&&xr(e)?Er(lt(t),e):function(r){var o=Dc(r,t);return o===void 0&&o===e?qu(r,t):_r(e,o,Pw|Mw)}}var Pw,Mw,Vu,zu=c(()=>{Fo();Lc();Ju();ar();jo();Ho();Te();Pw=1,Mw=2;Vu=kw});function Bw(t){return function(e){return e?.[t]}}var Xu,Zu=c(()=>{Xu=Bw});function $w(t){return function(e){return te(e,t)}}var Qu,tf=c(()=>{ur();Qu=$w});function Uw(t){return zt(t)?Xu(lt(t)):Qu(t)}var ef,rf=c(()=>{Zu();tf();ar();Te();ef=Uw});function Fw(t){return typeof t=="function"?t:t==null?nt:typeof t=="object"?T(t)?Vu(t[0],t[1]):ju(t):ef(t)}var dt,Ie=c(()=>{Hu();zu();ge();j();rf();dt=Fw});function jw(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 of,nf=c(()=>{of=jw});function Hw(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 af,sf=c(()=>{af=Hw});var Gw,cf,uf=c(()=>{sf();Gw=af(),cf=Gw});function Kw(t,e){return t&&cf(t,e,Vt)}var ff,lf=c(()=>{uf();nr();ff=Kw});function Ww(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 pf,df=c(()=>{ye();pf=Ww});var Yw,br,Go=c(()=>{lf();df();Yw=pf(ff),br=Yw});function qw(t,e,r,o){return br(t,function(n,a,i){e(o,n,r(n),i)}),o}var mf,hf=c(()=>{Go();mf=qw});function Jw(t,e){return function(r,o){var n=T(r)?of:mf,a=e?e():{};return n(r,t,dt(o,2),a)}}var gf,yf=c(()=>{nf();hf();Ie();j();gf=Jw});function Vw(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 wf,_f=c(()=>{wf=Vw});function zw(t,e){var r=-1,o=it(t)?Array(t.length):[];return br(t,function(n,a,i){o[++r]=e(n,a,i)}),o}var xf,Ef=c(()=>{Go();ye();xf=zw});var Xw,Zw,Qw,Ko,bf=c(()=>{hs();yf();Xw=Object.prototype,Zw=Xw.hasOwnProperty,Qw=gf(function(t,e,r){Zw.call(t,r)?t[r].push(e):ms(t,r,[e])}),Ko=Qw});function t_(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 Sf,Af=c(()=>{Sf=t_});function e_(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var Tf,If=c(()=>{Tf=e_});function r_(t,e){if(t!==e){var r=t!==void 0,o=t===null,n=t===t,a=J(t),i=e!==void 0,s=e===null,u=e===e,f=J(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 Of,vf=c(()=>{jt();Of=r_});function o_(t,e,r){for(var o=-1,n=t.criteria,a=e.criteria,i=n.length,s=r.length;++o<i;){var u=Of(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 Cf,Nf=c(()=>{vf();Cf=o_});function n_(t,e,r){e.length?e=Ht(e,function(a){return T(a)?function(i){return te(i,a.length===1?a[0]:a)}:a}):e=[nt];var o=-1;e=Ht(e,rr(dt));var n=xf(t,function(a,i,s){var u=Ht(e,function(f){return f(a)});return{criteria:u,index:++o,value:a}});return Tf(n,function(a,i){return Cf(a,i,r)})}var Rf,Df=c(()=>{ho();ur();Ie();Ef();If();bo();Nf();ge();j();Rf=n_});var a_,Wo,Lf=c(()=>{Uc();Df();xs();_o();a_=_s(function(t,e){if(t==null)return[];var r=e.length;return r>1&&we(t,e[0],e[1])?e=[]:r>2&&we(e[0],e[1],e[2])&&(e=[e[0]]),Rf(t,$c(e,1),[])}),Wo=a_});function i_(t,e){return t&&t.length?Sf(t,dt(e,2)):0}var Yo,Pf=c(()=>{Ie();Af();Yo=i_});var s_,c_,Mf,kf=c(()=>{Lo();Vi();yr();s_=1/0,c_=pt&&1/oe(new pt([,-0]))[1]==s_?function(t){return new pt(t)}:Ji,Mf=c_});function f_(t,e,r){var o=-1,n=ps,a=t.length,i=!0,s=[],u=s;if(r)i=!1,n=wf;else if(a>=u_){var f=e?null:Mf(t);if(f)return oe(f);i=!1,n=hr,u=new mr}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 u_,Bf,$f=c(()=>{ko();ds();_f();Bo();kf();yr();u_=200;Bf=f_});function l_(t,e){return t&&t.length?Bf(t,dt(e,2)):[]}var qo,Uf=c(()=>{Ie();$f();qo=l_});var Sr=c(()=>{Hc();bf();Lf();Pf();Uf();});import{readFile as p_}from"node:fs/promises";function m_(t){let e=[];return t.sectionHeading&&e.push(`[Section: ${t.sectionHeading}]`),t.contextualPrefix&&e.push(t.contextualPrefix),e.push(t.content),e.join(`
|
|
91
91
|
`)}function h_(t,e,r){return`${t}
|
|
92
92
|
|
|
93
93
|
---
|
|
@@ -120,7 +120,7 @@ Output the JSON array directly, no explanation or wrapping.`}function g_(t,e){le
|
|
|
120
120
|
AND 1 - (${a}) >= ?
|
|
121
121
|
ORDER BY ${a}
|
|
122
122
|
LIMIT ?
|
|
123
|
-
`,[n,e,n,r,n,o]);return s})}async function Vo({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 x_,Hf,Jo,Wf=c(()=>{At();O();qe();ot();Bt();$e();x();X();x_=__.join(z,"audm-decision.md"),Hf=p.memory.skipThreshold,Jo=p.memory.ambiguousThreshold});var Ar,T_,
|
|
123
|
+
`,[n,e,n,r,n,o]);return s})}async function Vo({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 x_,Hf,Jo,Wf=c(()=>{At();O();qe();ot();Bt();$e();x();X();x_=__.join(z,"audm-decision.md"),Hf=p.memory.skipThreshold,Jo=p.memory.ambiguousThreshold});var Ar,T_,tR,Yf,Xo=c(()=>{Ar={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"},T_=["preference","opinion","personal","experience"],tR=Object.keys(Ar).filter(t=>!T_.includes(t)),Yf=Ar});import{readFile as I_}from"node:fs/promises";import{join as O_}from"node:path";async function Jf(t,{title:e}={}){if(!t?.trim()||t.trim().length<C_)return{route:"noise",facts:[],entities:[],reasoning:"Empty or too short"};if(t.length>N_)return{route:"knowledge",facts:[],entities:[],reasoning:"Long content \u2014 auto-routed to full pipeline"};let o=`${await I_(v_,"utf8")}
|
|
124
124
|
|
|
125
125
|
---
|
|
126
126
|
|
|
@@ -129,7 +129,7 @@ Input: ${t}
|
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
132
|
-
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 qf("Invalid classification result");let a=Object.keys(Yf),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),qf(n.message)}}function qf(t){return{route:"knowledge",facts:[],entities:[],reasoning:`Fallback \u2014 ${t}`}}var v_,C_,N_,R_,Vf=c(()=>{ot();x();Xo();X();v_=O_(z,"input-classifier.md"),C_=3,N_=2e3,R_=["thought","knowledge","noise"]});var zf={};
|
|
132
|
+
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 qf("Invalid classification result");let a=Object.keys(Yf),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),qf(n.message)}}function qf(t){return{route:"knowledge",facts:[],entities:[],reasoning:`Fallback \u2014 ${t}`}}var v_,C_,N_,R_,Vf=c(()=>{ot();x();Xo();X();v_=O_(z,"input-classifier.md"),C_=3,N_=2e3,R_=["thought","knowledge","noise"]});var zf={};S(zf,{findById:()=>et,findByName:()=>ve,findByUid:()=>D_,findSimilar:()=>L_,getCanonicalEntity:()=>Et,getEntityCount:()=>k_,incrementMentionCount:()=>Ce,insertEntity:()=>Zo,listByType:()=>M_,pushAlias:()=>Tr,searchByName:()=>B_,updateDescription:()=>P_,updateEntityTypes:()=>xt,updateName:()=>Qo});async function Zo({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a}){let i=`ent-${K(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:F(a)}).returning("*");return s}async function ve(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 Tr(t,e){if(!e)return;let r=e.toLowerCase();await m.raw(`
|
|
133
133
|
UPDATE entity
|
|
134
134
|
SET aliases = (
|
|
135
135
|
SELECT ARRAY(SELECT DISTINCT unnest(aliases || ARRAY[?]::text[]))
|
|
@@ -177,7 +177,7 @@ Decision rules:
|
|
|
177
177
|
- If you cannot tell, "same" is false. Don't guess.
|
|
178
178
|
|
|
179
179
|
Respond as STRICT JSON, no markdown, no prose:
|
|
180
|
-
{"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=U_(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 U_(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 $_,Zf=c(()=>{O();ot();Bt();x();$_=.85});var Qf={};
|
|
180
|
+
{"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=U_(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 U_(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 $_,Zf=c(()=>{O();ot();Bt();x();$_=.85});var Qf={};S(Qf,{followMergeChain:()=>G_,mergeEntities:()=>F_});async function F_(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(`
|
|
181
181
|
INSERT INTO fact_entity (fact_id, entity_id, mention_type, mention_count, created_at, updated_at)
|
|
182
182
|
SELECT fact_id, ?, mention_type, mention_count, NOW(), NOW()
|
|
183
183
|
FROM fact_entity
|
|
@@ -198,27 +198,27 @@ ${o}`,i=await gt(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=Ke(i);i
|
|
|
198
198
|
updated_at = NOW()
|
|
199
199
|
RETURNING *
|
|
200
200
|
`,[t,e,r,o||null,n||null]);return a}var nl=c(()=>{O()});async function vr(t,e){if(!e.length)return;let r=qo(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 q_(t,r)}async function q_(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 ce(n,t,"mention")}var al=c(()=>{Sr();O();ue()});import J_ from"node:path";async function an(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?V_({entityDefs:o,factObjects:u,firstFactId:l,namespace:r,today:h}):z_({title:n,sourceType:a,metadata:i,factObjects:u,firstFactId:l,namespace:r,today:h})}async function V_({entityDefs:t,factObjects:e,firstFactId:r,namespace:o,today:n}){let a={},i=0,s=e.map(d=>d.content).filter(Boolean).join(`
|
|
201
|
-
`),u=[];for(let d of t.items){let g=await Ne({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 _=rn(e,d.source)||rn(e,d.target);await Or({sourceId:g.id,targetId:y.id,relationType:d.type,sourceFactId:_?.id||r,validAt:n}),i++}let f=await nn(e,o),l=on(Object.values(a),f),h=0;for(let d of e){let g=l.filter(y=>Cr(d.content,y));g.length&&(await vr(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 z_({title:t,sourceType:e,metadata:r,factObjects:o,firstFactId:n,namespace:a,today:i}){if(!t){let w=o.length?await en(o,{promptPath:il,namespace:a}):[],v=await nn(o,a),
|
|
202
|
-
`).slice(0,2e3),u=await Ne({name:t,entityType:"document",description:`${e} document: ${t}`,namespace:a,episodeText:s}),f=null;r.author&&(f=await Ne({name:r.author,entityType:"person",namespace:a,episodeText:s,episodeEntityIds:u?.id?[u.id]:[]}));let l=o.length?await en(o,{promptPath:il,namespace:a}):[],h=0;f&&(await Or({sourceId:u.id,targetId:f.id,relationType:"AUTHORED_BY",sourceFactId:n,validAt:i}),h++);for(let w of l){let v=rn(o,w.name);await Or({sourceId:u.id,targetId:w.id,relationType:"COVERS",sourceFactId:v?.id||n,validAt:i}),h++}let d=[u,f,...l].filter(Boolean),g=await nn(o,a),y=on(d,g),_=0;for(let w of o){let v=y.filter(
|
|
201
|
+
`),u=[];for(let d of t.items){let g=await Ne({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 _=rn(e,d.source)||rn(e,d.target);await Or({sourceId:g.id,targetId:y.id,relationType:d.type,sourceFactId:_?.id||r,validAt:n}),i++}let f=await nn(e,o),l=on(Object.values(a),f),h=0;for(let d of e){let g=l.filter(y=>Cr(d.content,y));g.length&&(await vr(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 z_({title:t,sourceType:e,metadata:r,factObjects:o,firstFactId:n,namespace:a,today:i}){if(!t){let w=o.length?await en(o,{promptPath:il,namespace:a}):[],v=await nn(o,a),L=on(w,v),N=0;for(let I of o){let C=L.filter(ne=>Cr(I.content,ne));C.length&&(await vr(I.id,C),N+=C.length)}return{entityCount:L.length,relationCount:0,factEntityLinks:N,topics:w.map(I=>I.name)}}let s=o.map(w=>w.content).filter(Boolean).join(`
|
|
202
|
+
`).slice(0,2e3),u=await Ne({name:t,entityType:"document",description:`${e} document: ${t}`,namespace:a,episodeText:s}),f=null;r.author&&(f=await Ne({name:r.author,entityType:"person",namespace:a,episodeText:s,episodeEntityIds:u?.id?[u.id]:[]}));let l=o.length?await en(o,{promptPath:il,namespace:a}):[],h=0;f&&(await Or({sourceId:u.id,targetId:f.id,relationType:"AUTHORED_BY",sourceFactId:n,validAt:i}),h++);for(let w of l){let v=rn(o,w.name);await Or({sourceId:u.id,targetId:w.id,relationType:"COVERS",sourceFactId:v?.id||n,validAt:i}),h++}let d=[u,f,...l].filter(Boolean),g=await nn(o,a),y=on(d,g),_=0;for(let w of o){let v=y.filter(L=>Cr(w.content,L));v.length&&(await vr(w.id,v),_+=v.length)}return{entityCount:y.length,relationCount:h,factEntityLinks:_,topics:l.map(w=>w.name)}}function rn(t,e){if(!e)return null;let r=e.toLowerCase();return t.find(o=>o.content?.toLowerCase().includes(r))||null}function Cr(t,e){if(!t||!e?.name)return!1;let r=t.toLowerCase();return[e.name.toLowerCase(),...e.aliases||[]].some(n=>n?new RegExp(`\\b${X_(n)}\\b`).test(r):!1)}function X_(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function on(...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 nn(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=>Cr(n.content,o))):[]}var il,sl=c(()=>{ol();nl();al();X();O();il=J_.join(z,"entity-extraction.md")});async function cl(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 Ot({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 Ot({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(()=>(de(),co)),i=await a({cwd:n,namespace:o});i&&r.push({podId:i.id,role:"primary"})}catch{}return r}var ul=c(()=>{ht();ro();x()});var dl={};S(dl,{ingestDocument:()=>ex});import{createHash as Z_}from"node:crypto";import{join as Q_}from"node:path";async function ex({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=Dt(t);let w=a||p.defaults.namespace,v=u||Object.keys(Ar),L=s||tx,N=e||r,I=null;if(g&&(process.stderr.write(`[0/6] Classifying input...
|
|
203
203
|
`),I=await Jf(t,{title:N}),process.stderr.write(` Route: ${I.route} \u2014 ${I.reasoning}
|
|
204
204
|
`),I.route==="noise"))return process.stderr.write(` Skipped \u2014 classified as noise.
|
|
205
205
|
`),{documentId:null,title:N,skipped:!0,route:"noise"};process.stderr.write(`[1/6] Checking for changes...
|
|
206
|
-
`);let C=Z_("sha256").update(t).digest("hex"),ne=r||`thought:${C}`,{doc:
|
|
207
|
-
`),{documentId:
|
|
206
|
+
`);let C=Z_("sha256").update(t).digest("hex"),ne=r||`thought:${C}`,{doc:M,changed:gl}=await ci({sourcePath:ne,sourceType:o,title:N,contentHash:C,namespace:w});if(!gl)return process.stderr.write(` Skipped \u2014 content unchanged.
|
|
207
|
+
`),{documentId:M.id,title:N,skipped:!0};i&&(Object.keys(i).length||i.connection_id)&&await fi(M.id,i,i.connection_id??null);let Nr=await nx({podUids:y,resolvePodsFrom:_,metadata:i,namespace:w});for(let{podId:P,role:bt}of Nr)await jr(P,M.id,bt);process.stderr.write(`[2/6] Parsing content...
|
|
208
208
|
`);let Rr=Xa(t,{format:i.format,filePath:r,contentType:n});if(N=e||Rr.metadata?.title||r,I?.route==="thought"&&I.facts.length){process.stderr.write(`[thought] Storing ${I.facts.length} facts directly...
|
|
209
|
-
`);let
|
|
210
|
-
`),{documentId:
|
|
209
|
+
`);let P=await rx(I.facts,{documentId:M.id,namespace:w}),bt={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};return!h&&P.results.length&&(bt=await an({title:N,sourceType:o,metadata:i},P.results,w,f)),await po(M.id,{chunkCount:0,factCount:P.counts.added}),await ll(P.results,Nr),await zo(M.id,P.results.map(De=>De.fact?.id??De.existing?.id).filter(Boolean)),process.stderr.write(`Done. Route: thought, ${P.counts.total} facts (${P.counts.added} new)
|
|
210
|
+
`),{documentId:M.id,documentUid:M.uid,title:N,skipped:!1,route:"thought",chunkCount:0,facts:{...P.counts,verdicts:fl(P.results)},entities:bt}}let H=[],G={counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]},ae={entityCount:0,relationCount:0,factEntityLinks:0,topics:[]};try{process.stderr.write(`[3/6] Chunking and embedding...
|
|
211
211
|
`),H=Qa(Rr.sections),process.stderr.write(` ${H.length} chunks created
|
|
212
|
-
`),!d&&H.length&&(H=await ii(H,Rr.text,{title:N}));let
|
|
213
|
-
${rt.content}`:rt.content}),bt=await me(
|
|
214
|
-
`),G=await ox(H,{documentId:
|
|
215
|
-
`),await po(
|
|
212
|
+
`),!d&&H.length&&(H=await ii(H,Rr.text,{title:N}));let P=H.map(rt=>{let Le=rt.contextualPrefix;return Le?`${Le}
|
|
213
|
+
${rt.content}`:rt.content}),bt=await me(P),De=H.map((rt,Le)=>({...rt,embedding:bt[Le]}));await pi(M.id,De,w),!l&&p.ingest.eagerExtract?(process.stderr.write(`[4/6] Extracting facts...
|
|
214
|
+
`),G=await ox(H,{documentId:M.id,namespace:w,promptPath:L,categories:v})):p.ingest.eagerExtract||process.stderr.write(`[4/6] Skipping fact extraction (SIGIL_EAGER_EXTRACT=false)
|
|
215
|
+
`),await po(M.id,{chunkCount:H.length,factCount:G.counts.added+G.counts.updated+G.counts.contradicted}),await ll(G.results,Nr),await zo(M.id,G.results.map(rt=>rt.fact?.id??rt.existing?.id).filter(Boolean)),!h&&G.results.length&&(process.stderr.write(`[5/6] Linking entities...
|
|
216
216
|
`),ae=await an({title:N,sourceType:o,metadata:i},G.results,w,f),process.stderr.write(` ${ae.entityCount} entities, ${ae.relationCount} relations
|
|
217
|
-
`))}catch(
|
|
218
|
-
`),{documentId:
|
|
217
|
+
`))}catch(P){throw console.error(`[pipeline] Failed after document upsert: ${P.message}`),await ui(M.id).catch(()=>{}),P}return process.stderr.write(`Done. ${H.length} chunks, ${G.counts.total} facts, ${ae.entityCount} entities
|
|
218
|
+
`),{documentId:M.id,documentUid:M.uid,title:N,skipped:!1,route:I?.route??null,chunkCount:H.length,facts:{...G.counts,verdicts:fl(G.results)},entities:ae}}function fl(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 pl(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 Gf({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 rx(t,{documentId:e,namespace:r}){let o=await me(t.map(n=>n.content));return pl(t,{documentId:e,namespace:r,embeddings:o,defaultConfidence:"high",defaultImportance:"vital"})}async function ox(t,{documentId:e,namespace:r,promptPath:o,categories:n}){let a=await Ff(t,{promptPath:o,categories:n});if(process.stderr.write(` ${a.length} facts extracted from ${t.length} chunks
|
|
219
219
|
`),!a.length)return{counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]};let i=await me(a.map(s=>s.content));return pl(a,{documentId:e,namespace:r,embeddings:i})}async function nx({podUids:t,resolvePodsFrom:e,metadata:r,namespace:o}){let n=[];for(let i of t){let s=await It(i);s&&n.push({podId:s.id,role:"primary"})}if(e==="metadata"){let i=await cl(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 ll(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 ce(a,o,n)}}var tx,ml=c(()=>{Za();ti();qe();si();li();di();jf();Wf();Xo();Vf();sl();ht();ue();ul();$e();x();X();tx=Q_(z,"default-extraction.md")});X();import{resolve as El}from"node:path";import{existsSync as hn}from"node:fs";import{config as gn}from"dotenv";function yn(){let t=El(process.cwd(),".env");hn(t)&&gn({path:t,quiet:!0}),hn(Me)&&Me!==t&&gn({path:Me,quiet:!0}),process.env.SIGIL_AGENT||(process.env.SIGIL_AGENT="claude-code")}yn();var hl=3,ax=40;async function ix(){let t=await cx();if(!t)return Re();let e;try{e=JSON.parse(t)}catch{return Re()}try{if(!e.session_id)return Re();let{endActiveSession:r,getActiveCursor:o}=await Promise.resolve().then(()=>(Nt(),Be)),n=await o();if(!n||n.session_id!==e.session_id)return Re();try{let{failClosedOnBadConfig:a}=await Promise.resolve().then(()=>(Fr(),Ur));await a("session-end",t)||await sx({sessionPodUid:n.pod_uid,cwd:e.cwd||n.cwd||null,sessionId:e.session_id,transcriptPath:e.transcript_path||n.transcript_path||null})}catch(a){process.stderr.write(`[sigil:session-end] synthesis failed: ${a.message}
|
|
220
220
|
`)}await r({conclusion:e.summary||e.conclusion||null,summary:e.summary||null})}catch(r){process.stderr.write(`[sigil:session-end] ${r.message}
|
|
221
221
|
`);try{let{recordHookError:o}=await Promise.resolve().then(()=>(Fr(),Ur));await o("session-end",r,e)}catch{}}finally{try{await(await Promise.resolve().then(()=>(O(),Lr))).default.destroy()}catch{}}return Re()}async function sx({sessionPodUid:t,cwd:e,sessionId:r,transcriptPath:o}){if(!t)return;let n=await Promise.resolve().then(()=>(ht(),Ct)),a=await Promise.resolve().then(()=>(ue(),Lt)),i=await n.findByUid(t);if(!i)return;let s=await a.listMembers(i.id,{memberType:"fact",limit:ax});if(s.length<hl)return;let u=s.map(C=>C.content||C.fact_content||C.factContent).filter(Boolean);if(u.length<hl)return;let{promptJson:f}=await Promise.resolve().then(()=>(ot(),xa)),{get:l,getSchemaDoc:h}=await Promise.resolve().then(()=>(eo(),Ca));await Promise.resolve().then(()=>(Ua(),$a));let d=l("claude_session"),y=["You are writing the durable end-of-session summary for a Claude Code session.","","Schema guide (how to write facts for the claude_session kind):",(await h(d)||"").slice(0,2e3),"","Session facts gathered during this session:",u.map((C,ne)=>` ${ne+1}. ${C}`).join(`
|
|
222
222
|
`),"","Write ONE summary fact (60-220 chars) that captures the single most useful thing a future session in the same project would want to know about this one. Past tense. Specific. No filler. Do not repeat individual facts verbatim \u2014 synthesize the essence.","",'Return JSON: { "summary": "<one-line summary fact>", "topics": ["...", "..."] }'].join(`
|
|
223
|
-
`),_;try{_=await f(y,{caller:"session-end-synth"})}catch{return}let w=typeof _?.summary=="string"?_.summary.trim():null;if(!w||w.length<30)return;let{ensureActivePodsForHook:v}=await Promise.resolve().then(()=>(ja(),Fa)),{podUids:
|
|
223
|
+
`),_;try{_=await f(y,{caller:"session-end-synth"})}catch{return}let w=typeof _?.summary=="string"?_.summary.trim():null;if(!w||w.length<30)return;let{ensureActivePodsForHook:v}=await Promise.resolve().then(()=>(ja(),Fa)),{podUids:L}=await v({sessionId:r,cwd:e,transcriptPath:o}),{ingestDocument:N}=await Promise.resolve().then(()=>(ml(),dl)),I=(await Promise.resolve().then(()=>(x(),bn))).default;try{await N({content:w,namespace:I.defaults.namespace,classify:!1,podUids:L})}catch(C){process.stderr.write(`[sigil:session-end] save summary failed: ${C.message}
|
|
224
224
|
`)}}async function cx(){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 Re(){process.stdout.write("{}")}ix();
|