@anmol-srv/sigil 0.10.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +18 -12
- package/README.md +90 -82
- package/dist/cli.js +758 -507
- package/dist/daemon.js +724 -0
- package/dist/hooks/post-tool-use.js +20 -22
- package/dist/hooks/session-end.js +63 -61
- package/dist/hooks/stop.js +76 -74
- package/dist/hooks/user-prompt-submit.js +55 -47
- package/dist/server.js +45 -554
- package/integrations/hermes/README.md +4 -4
- package/integrations/hermes/plugin/README.md +8 -8
- package/knexfile.js +29 -8
- package/package.json +11 -5
- package/src/db/migrations/20260601000000_create-device-table.cjs +34 -0
- package/src/db/migrations/20260601000001_create-pairing-code-table.cjs +27 -0
- package/src/db/migrations/20260601000002_add-fact-provenance.cjs +31 -0
- package/src/db/migrations/20260601000003_add-device-revoked-reason.cjs +19 -0
- package/src/db/migrations/20260601000004_create-trace-event-table.cjs +35 -0
- package/src/db/migrations/20260601000005_add-fact-agent-provenance.cjs +25 -0
- package/src/gui/web/api.js +37 -0
- package/src/gui/web/app.css +947 -0
- package/src/gui/web/app.js +1230 -0
- package/src/gui/web/components.js +90 -0
- package/src/gui/web/design/colors_and_type.css +178 -0
- package/src/gui/web/design/sigil-mark-mono.svg +8 -0
- package/src/gui/web/design/sigil-mark.svg +26 -0
- package/src/gui/web/index.html +536 -0
- package/src/gui/web/sigil.svg +31 -0
- package/src/gui/web/toast.js +62 -0
|
@@ -1,63 +1,65 @@
|
|
|
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 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.
|
|
3
4
|
PGlite was deprecated; existing PGlite data at ~/.sigil/db is preserved but unreachable from this version.
|
|
4
5
|
Set SIGIL_DB_TYPE=postgres in ~/.sigil/.env and configure SIGIL_DB_HOST / PORT / NAME / USER / PASSWORD.
|
|
5
|
-
Run \`sigil init\` for an interactive setup.`);
|
|
6
|
+
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(`
|
|
6
7
|
INSERT INTO pod (uid, pod_type, name, namespace, attrs, entity_id, connection_id, external_id, started_at, created_at, updated_at)
|
|
7
8
|
VALUES (?, ?, ?, ?, ?::jsonb, ?, ?, ?, ?, NOW(), NOW())
|
|
8
9
|
ON CONFLICT (pod_type, external_id, namespace) WHERE external_id IS NOT NULL DO UPDATE SET
|
|
9
10
|
attrs = pod.attrs || EXCLUDED.attrs,
|
|
10
11
|
updated_at = NOW()
|
|
11
12
|
RETURNING *, (xmax = 0) AS "isNew"
|
|
12
|
-
`,[u,t,r,f,JSON.stringify(n),a,i,e,s]);return{pod:l,isNew:l.isNew}}async function
|
|
13
|
+
`,[u,t,r,f,JSON.stringify(n),a,i,e,s]);return{pod:l,isNew:l.isNew}}async function It(t){return m("pod").where({uid:t}).first()||null}async function Rl(t){return m("pod").where({id:t}).first()||null}async function Ot({podType:t,externalId:e,namespace:r}){return m("pod").where({podType:t,externalId:e,namespace:r||p.defaults.namespace}).first()||null}async function Pn(t){return m("pod").where({entityId:t}).first()||null}async function Dl({podType:t,namespace:e,status:r="active",limit:o=20}={}){let n=m("pod").where({status:r}).orderBy("updatedAt","desc").limit(o);return t&&n.where({podType:t}),e&&n.where({namespace:e}),n}async function Ll(t){await m("pod").where({id:t}).update({status:"archived",updatedAt:m.fn.now()})}async function Pl(t){await m("pod").where({id:t}).del()}async function ie(t,e){await m.raw("UPDATE pod SET attrs = attrs || ?::jsonb, updated_at = NOW() WHERE id = ?",[JSON.stringify(e),t])}async function Pr(t,e=new Date){await m("pod").where({id:t}).update({endedAt:e,updatedAt:m.fn.now()})}async function Ml(t,e){await m("pod").where({entityId:t}).update({entityId:e,updatedAt:m.fn.now()})}async function vt(t,{docs:e=0,facts:r=0}){!e&&!r||await m.raw(`UPDATE pod
|
|
13
14
|
SET member_doc_count = member_doc_count + ?,
|
|
14
15
|
member_fact_count = member_fact_count + ?,
|
|
15
16
|
updated_at = NOW()
|
|
16
|
-
WHERE id = ?`,[e,r,t])}var
|
|
17
|
-
`)[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
|
|
18
|
-
`,"utf8")}catch{}}async function
|
|
19
|
-
`).filter(Boolean),o=[];for(let n of r.slice(-t))try{o.push(JSON.parse(n))}catch{}return o}async function
|
|
20
|
-
`))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
|
|
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
|
+
`,"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
|
+
`).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={};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)
|
|
21
22
|
VALUES (?, ?, ?, ?)
|
|
22
|
-
ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await
|
|
23
|
+
ON CONFLICT (pod_id, member_type, member_id) DO NOTHING`,[t,e,r,o]);return n>0&&(e==="fact"?await 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.
|
|
23
24
|
You will pick an embedding provider in the next step \u2014 "openrouter" is an option,
|
|
24
|
-
or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var
|
|
25
|
+
or you can use a direct provider (Ollama / OpenAI / Voyage) for embeddings.`,"OpenRouter scope"),{env:r}}var 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:
|
|
25
26
|
- Set LLM_PROVIDER (openai, anthropic, openrouter, ollama, claude-cli)
|
|
26
27
|
- Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY
|
|
27
28
|
- Start Ollama locally
|
|
28
|
-
- Install the Claude CLI (claude)`)}async function
|
|
29
|
+
- Install the Claude CLI (claude)`)}async function wa(){if(U)return U;if(p.embedding.provider)return U=p.embedding.provider,U;if(p.embedding.voyageApiKey)return U="voyage",U;if(await ga())return U="ollama",U;if(p.embedding.openaiApiKey)return U="openai",U;if(p.embedding.openrouterApiKey)return U="openrouter",U;throw new Error(`No embedding provider available. Either:
|
|
29
30
|
- Set EMBEDDING_PROVIDER (voyage, ollama, openai, openrouter)
|
|
30
31
|
- Set VOYAGE_API_KEY (recommended \u2014 best quality)
|
|
31
32
|
- Start Ollama locally
|
|
32
33
|
- Set OPENAI_API_KEY
|
|
33
|
-
- Set OPENROUTER_API_KEY (and EMBEDDING_MODEL like "openai/text-embedding-3-large")`)}var
|
|
34
|
+
- 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(`
|
|
34
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(`
|
|
35
37
|
`).trim()}),o=u[2].trim(),n=[]):n.push(s)}n.length&&r.push({heading:o||"Content",text:n.join(`
|
|
36
38
|
`).trim()});let a=r.map(s=>s.text).join(`
|
|
37
39
|
|
|
38
|
-
`),i=
|
|
40
|
+
`),i=Dd(e)||null;return{text:a,sections:r,metadata:{title:i}}}function Dd(t){for(let e of t){let r=e.match(/^#\s+(.+)/);if(r)return r[1].trim()}return null}var Ga=c(()=>{});function uo(t){let e=t.split(/\n{2,}/).map(o=>o.trim()).filter(Boolean),r=e.length>1?e.map((o,n)=>({heading:`Section ${n+1}`,text:o})):[{heading:"Content",text:t.trim()}];return{text:t.trim(),sections:r,metadata:{}}}var Ka=c(()=>{});function Wa(t){let e=Ld(t),r=t.replace(/<script[\s\S]*?<\/script>/gi,"");return r=r.replace(/<style[\s\S]*?<\/style>/gi,""),r=r.replace(/<\/(p|div|h[1-6]|li|tr|br|hr)>/gi,`
|
|
39
41
|
`),r=r.replace(/<br\s*\/?>/gi,`
|
|
40
42
|
`),r=r.replace(/<[^>]+>/g,""),r=r.replace(/&/g,"&"),r=r.replace(/</g,"<"),r=r.replace(/>/g,">"),r=r.replace(/"/g,'"'),r=r.replace(/'/g,"'"),r=r.replace(/ /g," "),r=r.replace(/[ \t]+/g," "),r=r.replace(/\n{3,}/g,`
|
|
41
43
|
|
|
42
|
-
`),r=r.trim(),{text:r,sections:[{heading:"Content",text:r}],metadata:{title:e}}}function
|
|
43
|
-
`),o=[],n="Header",a=[],i=!1,s=0;for(let u of r){let f=
|
|
44
|
+
`),r=r.trim(),{text:r,sections:[{heading:"Content",text:r}],metadata:{title:e}}}function Ld(t){let e=t.match(/<title[^>]*>([\s\S]*?)<\/title>/i);return e?e[1].trim():null}var Ya=c(()=>{});function qa(t,{language:e}={}){let r=e||Bd(t),o=Pd(t,r);return{text:t.trim(),sections:o,metadata:{language:r}}}function Pd(t,e){let r=t.split(`
|
|
45
|
+
`),o=[],n="Header",a=[],i=!1,s=0;for(let u of r){let f=Md(u,e);f&&s===0?(a.length&&o.push({heading:n,text:a.join(`
|
|
44
46
|
`).trim()}),n=f,a=[u],i=!0):a.push(u);for(let l of u)l==="{"&&s++,l==="}"&&(s=Math.max(0,s-1))}return a.length&&o.push({heading:n,text:a.join(`
|
|
45
|
-
`).trim()}),o.length<=1?
|
|
46
|
-
${
|
|
47
|
+
`).trim()}),o.length<=1?kd(t):o.filter(u=>u.text)}function Md(t,e){let r=t.trim(),o=[/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s*)?\(/,/^(?:export\s+)?class\s+(\w+)/,/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*\{/,/^(?:export\s+default\s+)/],n=[/^(?:async\s+)?def\s+(\w+)/,/^class\s+(\w+)/],a=[/^func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/,/^type\s+(\w+)/],i=[...o,...n,...a];for(let s of i){let u=r.match(s);if(u)return u[1]||u[0].slice(0,40)}return null}function kd(t){return t.split(/\n{2,}/).map((r,o)=>({heading:`Block ${o+1}`,text:r.trim()})).filter(r=>r.text)}function Bd(t){return t.includes("import ")&&(t.includes("from ")||t.includes("require("))?"javascript":t.match(/^def\s/m)||t.match(/^class\s.*:/m)?"python":t.match(/^func\s/m)||t.includes("package ")?"go":t.match(/^fn\s/m)||t.includes("use ")?"rust":"unknown"}var Ja=c(()=>{});function Va(t){let e;try{e=typeof t=="string"?JSON.parse(t):t}catch{return{text:t,sections:[{heading:"Content",text:t}],metadata:{}}}let r=fo(e);return{text:r,sections:[{heading:"Content",text:r}],metadata:{}}}function fo(t,e=0){if(t==null)return"";if(Array.isArray(t))return t.map((r,o)=>typeof r=="object"&&r!==null?`Item ${o+1}:
|
|
48
|
+
${fo(r,e+1)}`:`- ${r}`).join(`
|
|
47
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}:
|
|
48
|
-
${
|
|
49
|
-
`)}return String(t)}var
|
|
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 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(`
|
|
50
52
|
INSERT INTO embedding_cache (key, provider, model, embedding, hits, created_at, last_used_at)
|
|
51
53
|
VALUES (?, ?, ?, ?, 0, NOW(), NOW())
|
|
52
54
|
ON CONFLICT (key) DO UPDATE
|
|
53
55
|
SET last_used_at = NOW(),
|
|
54
56
|
hits = embedding_cache.hits + 1
|
|
55
|
-
`,[o,e,r
|
|
57
|
+
`,[o,e,r,F(n)]);await em()}}async function em(){let t=Date.now();if(t-oi<tm)return;oi=t;let[{count:e}]=await m("embedding_cache").count("key as count"),r=Number(e);if(r<=ri)return;let o=Math.min(r-ri,Jd);await m.raw(`
|
|
56
58
|
DELETE FROM embedding_cache WHERE key IN (
|
|
57
59
|
SELECT key FROM embedding_cache ORDER BY last_used_at ASC LIMIT ?
|
|
58
60
|
)
|
|
59
|
-
`,[o])}async function
|
|
60
|
-
`)})}let d=s.filter(
|
|
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 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}
|
|
61
63
|
|
|
62
64
|
---
|
|
63
65
|
|
|
@@ -72,7 +74,7 @@ ${n.join(`
|
|
|
72
74
|
|
|
73
75
|
---
|
|
74
76
|
|
|
75
|
-
Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=await yt(a,{model:p.llm.extractionModel,caller:"contextualizer"}),s=Array.isArray(i)?i:i&&typeof i=="object"?Object.values(i).find(f=>Array.isArray(f))??null:null;if(!s)return console.warn("[contextualizer] LLM did not return an array \u2014 skipping"),t;let u=s;return u.length!==t.length&&console.warn(`[contextualizer] Got ${u.length} prefixes for ${t.length} chunks \u2014 using partial`),t.map((f,l)=>({...f,contextualPrefix:typeof u[l]=="string"?u[l]:null}))}catch(i){return console.error("[contextualizer] Failed:",i.message),t}}var
|
|
77
|
+
Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=await yt(a,{model:p.llm.extractionModel,caller:"contextualizer"}),s=Array.isArray(i)?i:i&&typeof i=="object"?Object.values(i).find(f=>Array.isArray(f))??null:null;if(!s)return console.warn("[contextualizer] LLM did not return an array \u2014 skipping"),t;let u=s;return u.length!==t.length&&console.warn(`[contextualizer] Got ${u.length} prefixes for ${t.length} chunks \u2014 using partial`),t.map((f,l)=>({...f,contextualPrefix:typeof u[l]=="string"?u[l]:null}))}catch(i){return console.error("[contextualizer] Failed:",i.message),t}}var nm,si=c(()=>{ot();x();X();nm=om(z,"chunk-context.md")});async function ci({sourcePath:t,sourceType:e,title:r=null,contentHash:o,namespace:n}){let a=`doc-${K(16)}`,{rows:[i]}=await m.raw(`
|
|
76
78
|
INSERT INTO document (uid, source_path, source_type, title, content_hash, namespace, last_ingested_at, created_at, updated_at)
|
|
77
79
|
VALUES (?, ?, ?, ?, ?, ?, NOW(), NOW(), NOW())
|
|
78
80
|
ON CONFLICT (source_path, namespace) DO UPDATE SET
|
|
@@ -81,12 +83,12 @@ Respond with a JSON array of ${t.length} context prefix strings.`;try{let i=awai
|
|
|
81
83
|
last_ingested_at = NOW(),
|
|
82
84
|
updated_at = NOW()
|
|
83
85
|
RETURNING *, (xmax = 0) AS "isNew", content_hash != ? AS "contentChanged"
|
|
84
|
-
`,[a,t,e,r,o,n,o]),u=i.isNew||i.contentChanged;return{doc:i,changed:u}}async function
|
|
86
|
+
`,[a,t,e,r,o,n,o]),u=i.isNew||i.contentChanged;return{doc:i,changed:u}}async function po(t,{chunkCount:e,factCount:r}){await m("document").where({id:t}).update({chunkCount:e,factCount:r})}async function ui(t){await m("document").where({id:t}).update({contentHash:null})}async function fi(t,e,r=null){if(!e&&!r)return;let o={};e&&Object.keys(e).length&&(o.sourceMetadata=JSON.stringify(e)),r&&(o.connectionId=r),Object.keys(o).length&&await m("document").where({id:t}).update(o)}var li=c(()=>{At();O()});async function pi(t,e,r){if(await m("chunk").where({documentId:t}).del(),!e.length)return[];let o=e.map((a,i)=>({documentId:t,chunkIndex:i,content:a.content,contextualPrefix:a.contextualPrefix||null,sectionHeading:a.sectionHeading||null,namespace:r,embedding:F(a.embedding)})),n=await m("chunk").insert(o).returning("*");return await m.raw(`
|
|
85
87
|
UPDATE chunk
|
|
86
88
|
SET search_vector = to_tsvector('english', COALESCE(contextual_prefix, '') || ' ' || content)
|
|
87
89
|
WHERE document_id = ?
|
|
88
|
-
`,[t]),n}var Ua=c(()=>{I();Rt()});var yd,je,oo=c(()=>{yd=typeof global=="object"&&global&&global.Object===Object&&global,je=yd});var gd,wd,C,V=c(()=>{oo();gd=typeof self=="object"&&self&&self.Object===Object&&self,wd=je||gd||Function("return this")(),C=wd});var xd,L,Mt=c(()=>{V();xd=C.Symbol,L=xd});function bd(t){var e=_d.call(t,pe),r=t[pe];try{t[pe]=void 0;var o=!0}catch{}var n=Ed.call(t);return o&&(e?t[pe]=r:delete t[pe]),n}var ja,_d,Ed,pe,Ha,Ga=c(()=>{Mt();ja=Object.prototype,_d=ja.hasOwnProperty,Ed=ja.toString,pe=L?L.toStringTag:void 0;Ha=bd});function Sd(t){return Td.call(t)}var Ad,Td,Wa,Ka=c(()=>{Ad=Object.prototype,Td=Ad.toString;Wa=Sd});function vd(t){return t==null?t===void 0?Id:Od:Ya&&Ya in Object(t)?Ha(t):Wa(t)}var Od,Id,Ya,G,kt=c(()=>{Mt();Ga();Ka();Od="[object Null]",Id="[object Undefined]",Ya=L?L.toStringTag:void 0;G=vd});function Cd(t){return t!=null&&typeof t=="object"}var W,Bt=c(()=>{W=Cd});function Nd(t){return typeof t=="symbol"||W(t)&&G(t)==Pd}var Pd,K,Ft=c(()=>{kt();Bt();Pd="[object Symbol]";K=Nd});function Dd(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 $t,no=c(()=>{$t=Dd});var Ld,A,U=c(()=>{Ld=Array.isArray,A=Ld});function Va(t){if(typeof t=="string")return t;if(A(t))return $t(t,Va)+"";if(K(t))return Ja?Ja.call(t):"";var e=t+"";return e=="0"&&1/t==-Rd?"-0":e}var Rd,qa,Ja,za,Xa=c(()=>{Mt();no();U();Ft();Rd=1/0,qa=L?L.prototype:void 0,Ja=qa?qa.toString:void 0;za=Va});function kd(t){for(var e=t.length;e--&&Md.test(t.charAt(e)););return e}var Md,Za,Qa=c(()=>{Md=/\s/;Za=kd});function Fd(t){return t&&t.slice(0,Za(t)+1).replace(Bd,"")}var Bd,ti,ei=c(()=>{Qa();Bd=/^\s+/;ti=Fd});function $d(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Y,Ut=c(()=>{Y=$d});function Wd(t){if(typeof t=="number")return t;if(K(t))return ri;if(Y(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Y(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=ti(t);var r=jd.test(t);return r||Hd.test(t)?Gd(t.slice(2),r?2:8):Ud.test(t)?ri:+t}var ri,Ud,jd,Hd,Gd,oi,ni=c(()=>{ei();Ut();Ft();ri=NaN,Ud=/^[-+]0x[0-9a-f]+$/i,jd=/^0b[01]+$/i,Hd=/^0o[0-7]+$/i,Gd=parseInt;oi=Wd});function Yd(t){if(!t)return t===0?t:0;if(t=oi(t),t===ai||t===-ai){var e=t<0?-1:1;return e*Kd}return t===t?t:0}var ai,Kd,ii,si=c(()=>{ni();ai=1/0,Kd=17976931348623157e292;ii=Yd});function qd(t){var e=ii(t),r=e%1;return e===e?r?e-r:e:0}var ci,ui=c(()=>{si();ci=qd});function Jd(t){return t}var ot,de=c(()=>{ot=Jd});function Qd(t){if(!Y(t))return!1;var e=G(t);return e==zd||e==Xd||e==Vd||e==Zd}var Vd,zd,Xd,Zd,He,ao=c(()=>{kt();Ut();Vd="[object AsyncFunction]",zd="[object Function]",Xd="[object GeneratorFunction]",Zd="[object Proxy]";He=Qd});var tm,Ge,fi=c(()=>{V();tm=C["__core-js_shared__"],Ge=tm});function em(t){return!!li&&li in t}var li,pi,di=c(()=>{fi();li=(function(){var t=/[^.]+$/.exec(Ge&&Ge.keys&&Ge.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();pi=em});function nm(t){if(t!=null){try{return om.call(t)}catch{}try{return t+""}catch{}}return""}var rm,om,Q,io=c(()=>{rm=Function.prototype,om=rm.toString;Q=nm});function pm(t){if(!Y(t)||pi(t))return!1;var e=He(t)?lm:im;return e.test(Q(t))}var am,im,sm,cm,um,fm,lm,mi,hi=c(()=>{ao();di();Ut();io();am=/[\\^$.*+?()[\]{}|]/g,im=/^\[object .+?Constructor\]$/,sm=Function.prototype,cm=Object.prototype,um=sm.toString,fm=cm.hasOwnProperty,lm=RegExp("^"+um.call(fm).replace(am,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");mi=pm});function dm(t,e){return t?.[e]}var yi,gi=c(()=>{yi=dm});function mm(t,e){var r=yi(t,e);return mi(r)?r:void 0}var k,nt=c(()=>{hi();gi();k=mm});var hm,We,wi=c(()=>{nt();V();hm=k(C,"WeakMap"),We=hm});function ym(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 xi,_i=c(()=>{xi=ym});function gm(){}var Ei,bi=c(()=>{Ei=gm});function Em(t){var e=0,r=0;return function(){var o=_m(),n=xm-(o-r);if(r=o,n>0){if(++e>=wm)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var wm,xm,_m,Ai,Ti=c(()=>{wm=800,xm=16,_m=Date.now;Ai=Em});function bm(t){return function(){return t}}var Si,Oi=c(()=>{Si=bm});var Am,jt,so=c(()=>{nt();Am=(function(){try{var t=k(Object,"defineProperty");return t({},"",{}),t}catch{}})(),jt=Am});var Tm,Ii,vi=c(()=>{Oi();so();de();Tm=jt?function(t,e){return jt(t,"toString",{configurable:!0,enumerable:!1,value:Si(e),writable:!0})}:ot,Ii=Tm});var Sm,Ci,Pi=c(()=>{vi();Ti();Sm=Ai(Ii),Ci=Sm});function Om(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 Ni,Di=c(()=>{Ni=Om});function Im(t){return t!==t}var Li,Ri=c(()=>{Li=Im});function vm(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1}var Mi,ki=c(()=>{Mi=vm});function Cm(t,e,r){return e===e?Mi(t,e,r):Ni(t,Li,r)}var Bi,Fi=c(()=>{Di();Ri();ki();Bi=Cm});function Pm(t,e){var r=t==null?0:t.length;return!!r&&Bi(t,e,0)>-1}var $i,Ui=c(()=>{Fi();$i=Pm});function Lm(t,e){var r=typeof t;return e=e??Nm,!!e&&(r=="number"||r!="symbol"&&Dm.test(t))&&t>-1&&t%1==0&&t<e}var Nm,Dm,Ht,Ke=c(()=>{Nm=9007199254740991,Dm=/^(?:0|[1-9]\d*)$/;Ht=Lm});function Rm(t,e,r){e=="__proto__"&&jt?jt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var ji,Hi=c(()=>{so();ji=Rm});function Mm(t,e){return t===e||t!==t&&e!==e}var Gt,Ye=c(()=>{Gt=Mm});function km(t,e,r){return e=Gi(e===void 0?t.length-1:e,0),function(){for(var o=arguments,n=-1,a=Gi(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),xi(t,this,s)}}var Gi,Wi,Ki=c(()=>{_i();Gi=Math.max;Wi=km});function Bm(t,e){return Ci(Wi(t,e,ot),t+"")}var Yi,qi=c(()=>{de();Ki();Pi();Yi=Bm});function $m(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Fm}var Fm,Wt,qe=c(()=>{Fm=9007199254740991;Wt=$m});function Um(t){return t!=null&&Wt(t.length)&&!He(t)}var at,me=c(()=>{ao();qe();at=Um});function jm(t,e,r){if(!Y(r))return!1;var o=typeof e;return(o=="number"?at(r)&&Ht(e,r.length):o=="string"&&e in r)?Gt(r[e],t):!1}var he,co=c(()=>{Ye();me();Ke();Ut();he=jm});function Gm(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Hm;return t===r}var Hm,Ji,Vi=c(()=>{Hm=Object.prototype;Ji=Gm});function Wm(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var zi,Xi=c(()=>{zi=Wm});function Ym(t){return W(t)&&G(t)==Km}var Km,uo,Zi=c(()=>{kt();Bt();Km="[object Arguments]";uo=Ym});var Qi,qm,Jm,Vm,Kt,Je=c(()=>{Zi();Bt();Qi=Object.prototype,qm=Qi.hasOwnProperty,Jm=Qi.propertyIsEnumerable,Vm=uo((function(){return arguments})())?uo:function(t){return W(t)&&qm.call(t,"callee")&&!Jm.call(t,"callee")},Kt=Vm});function zm(){return!1}var ts,es=c(()=>{ts=zm});var ns,rs,Xm,os,Zm,Qm,ye,fo=c(()=>{V();es();ns=typeof exports=="object"&&exports&&!exports.nodeType&&exports,rs=ns&&typeof module=="object"&&module&&!module.nodeType&&module,Xm=rs&&rs.exports===ns,os=Xm?C.Buffer:void 0,Zm=os?os.isBuffer:void 0,Qm=Zm||ts,ye=Qm});function Th(t){return W(t)&&Wt(t.length)&&!!E[G(t)]}var th,eh,rh,oh,nh,ah,ih,sh,ch,uh,fh,lh,ph,dh,mh,hh,yh,gh,wh,xh,_h,Eh,bh,Ah,E,as,is=c(()=>{kt();qe();Bt();th="[object Arguments]",eh="[object Array]",rh="[object Boolean]",oh="[object Date]",nh="[object Error]",ah="[object Function]",ih="[object Map]",sh="[object Number]",ch="[object Object]",uh="[object RegExp]",fh="[object Set]",lh="[object String]",ph="[object WeakMap]",dh="[object ArrayBuffer]",mh="[object DataView]",hh="[object Float32Array]",yh="[object Float64Array]",gh="[object Int8Array]",wh="[object Int16Array]",xh="[object Int32Array]",_h="[object Uint8Array]",Eh="[object Uint8ClampedArray]",bh="[object Uint16Array]",Ah="[object Uint32Array]",E={};E[hh]=E[yh]=E[gh]=E[wh]=E[xh]=E[_h]=E[Eh]=E[bh]=E[Ah]=!0;E[th]=E[eh]=E[dh]=E[rh]=E[mh]=E[oh]=E[nh]=E[ah]=E[ih]=E[sh]=E[ch]=E[uh]=E[fh]=E[lh]=E[ph]=!1;as=Th});function Sh(t){return function(e){return t(e)}}var Ve,lo=c(()=>{Ve=Sh});var ss,ge,Oh,po,Ih,mo,cs=c(()=>{oo();ss=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ge=ss&&typeof module=="object"&&module&&!module.nodeType&&module,Oh=ge&&ge.exports===ss,po=Oh&&je.process,Ih=(function(){try{var t=ge&&ge.require&&ge.require("util").types;return t||po&&po.binding&&po.binding("util")}catch{}})(),mo=Ih});var us,vh,ze,ho=c(()=>{is();lo();cs();us=mo&&mo.isTypedArray,vh=us?Ve(us):as,ze=vh});function Nh(t,e){var r=A(t),o=!r&&Kt(t),n=!r&&!o&&ye(t),a=!r&&!o&&!n&&ze(t),i=r||o||n||a,s=i?zi(t.length,String):[],u=s.length;for(var f in t)(e||Ph.call(t,f))&&!(i&&(f=="length"||n&&(f=="offset"||f=="parent")||a&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ht(f,u)))&&s.push(f);return s}var Ch,Ph,fs,ls=c(()=>{Xi();Je();U();fo();Ke();ho();Ch=Object.prototype,Ph=Ch.hasOwnProperty;fs=Nh});function Dh(t,e){return function(r){return t(e(r))}}var ps,ds=c(()=>{ps=Dh});var Lh,ms,hs=c(()=>{ds();Lh=ps(Object.keys,Object),ms=Lh});function kh(t){if(!Ji(t))return ms(t);var e=[];for(var r in Object(t))Mh.call(t,r)&&r!="constructor"&&e.push(r);return e}var Rh,Mh,ys,gs=c(()=>{Vi();hs();Rh=Object.prototype,Mh=Rh.hasOwnProperty;ys=kh});function Bh(t){return at(t)?fs(t):ys(t)}var Yt,Xe=c(()=>{ls();gs();me();Yt=Bh});function Uh(t,e){if(A(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||K(t)?!0:$h.test(t)||!Fh.test(t)||e!=null&&t in Object(e)}var Fh,$h,qt,Ze=c(()=>{U();Ft();Fh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$h=/^\w*$/;qt=Uh});var jh,tt,we=c(()=>{nt();jh=k(Object,"create"),tt=jh});function Hh(){this.__data__=tt?tt(null):{},this.size=0}var ws,xs=c(()=>{we();ws=Hh});function Gh(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var _s,Es=c(()=>{_s=Gh});function qh(t){var e=this.__data__;if(tt){var r=e[t];return r===Wh?void 0:r}return Yh.call(e,t)?e[t]:void 0}var Wh,Kh,Yh,bs,As=c(()=>{we();Wh="__lodash_hash_undefined__",Kh=Object.prototype,Yh=Kh.hasOwnProperty;bs=qh});function zh(t){var e=this.__data__;return tt?e[t]!==void 0:Vh.call(e,t)}var Jh,Vh,Ts,Ss=c(()=>{we();Jh=Object.prototype,Vh=Jh.hasOwnProperty;Ts=zh});function Zh(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=tt&&e===void 0?Xh:e,this}var Xh,Os,Is=c(()=>{we();Xh="__lodash_hash_undefined__";Os=Zh});function Jt(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}var yo,vs=c(()=>{xs();Es();As();Ss();Is();Jt.prototype.clear=ws;Jt.prototype.delete=_s;Jt.prototype.get=bs;Jt.prototype.has=Ts;Jt.prototype.set=Os;yo=Jt});function Qh(){this.__data__=[],this.size=0}var Cs,Ps=c(()=>{Cs=Qh});function ty(t,e){for(var r=t.length;r--;)if(Gt(t[r][0],e))return r;return-1}var it,xe=c(()=>{Ye();it=ty});function oy(t){var e=this.__data__,r=it(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():ry.call(e,r,1),--this.size,!0}var ey,ry,Ns,Ds=c(()=>{xe();ey=Array.prototype,ry=ey.splice;Ns=oy});function ny(t){var e=this.__data__,r=it(e,t);return r<0?void 0:e[r][1]}var Ls,Rs=c(()=>{xe();Ls=ny});function ay(t){return it(this.__data__,t)>-1}var Ms,ks=c(()=>{xe();Ms=ay});function iy(t,e){var r=this.__data__,o=it(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var Bs,Fs=c(()=>{xe();Bs=iy});function Vt(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 st,_e=c(()=>{Ps();Ds();Rs();ks();Fs();Vt.prototype.clear=Cs;Vt.prototype.delete=Ns;Vt.prototype.get=Ls;Vt.prototype.has=Ms;Vt.prototype.set=Bs;st=Vt});var sy,ct,Qe=c(()=>{nt();V();sy=k(C,"Map"),ct=sy});function cy(){this.size=0,this.__data__={hash:new yo,map:new(ct||st),string:new yo}}var $s,Us=c(()=>{vs();_e();Qe();$s=cy});function uy(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var js,Hs=c(()=>{js=uy});function fy(t,e){var r=t.__data__;return js(e)?r[typeof e=="string"?"string":"hash"]:r.map}var ut,Ee=c(()=>{Hs();ut=fy});function ly(t){var e=ut(this,t).delete(t);return this.size-=e?1:0,e}var Gs,Ws=c(()=>{Ee();Gs=ly});function py(t){return ut(this,t).get(t)}var Ks,Ys=c(()=>{Ee();Ks=py});function dy(t){return ut(this,t).has(t)}var qs,Js=c(()=>{Ee();qs=dy});function my(t,e){var r=ut(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var Vs,zs=c(()=>{Ee();Vs=my});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 gt,tr=c(()=>{Us();Ws();Ys();Js();zs();zt.prototype.clear=$s;zt.prototype.delete=Gs;zt.prototype.get=Ks;zt.prototype.has=qs;zt.prototype.set=Vs;gt=zt});function go(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(hy);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(go.Cache||gt),r}var hy,Xs,Zs=c(()=>{tr();hy="Expected a function";go.Cache=gt;Xs=go});function gy(t){var e=Xs(t,function(o){return r.size===yy&&r.clear(),o}),r=e.cache;return e}var yy,Qs,tc=c(()=>{Zs();yy=500;Qs=gy});var wy,xy,_y,ec,rc=c(()=>{tc();wy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,xy=/\\(\\)?/g,_y=Qs(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(wy,function(r,o,n,a){e.push(n?a.replace(xy,"$1"):o||r)}),e}),ec=_y});function Ey(t){return t==null?"":za(t)}var oc,nc=c(()=>{Xa();oc=Ey});function by(t,e){return A(t)?t:qt(t,e)?[t]:ec(oc(t))}var er,wo=c(()=>{U();Ze();rc();nc();er=by});function Ty(t){if(typeof t=="string"||K(t))return t;var e=t+"";return e=="0"&&1/t==-Ay?"-0":e}var Ay,ft,be=c(()=>{Ft();Ay=1/0;ft=Ty});function Sy(t,e){e=er(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[ft(e[r++])];return r&&r==o?t:void 0}var Xt,rr=c(()=>{wo();be();Xt=Sy});function Oy(t,e,r){var o=t==null?void 0:Xt(t,e);return o===void 0?r:o}var ac,ic=c(()=>{rr();ac=Oy});function Iy(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t}var or,xo=c(()=>{or=Iy});function vy(t){return A(t)||Kt(t)||!!(sc&&t&&t[sc])}var sc,cc,uc=c(()=>{Mt();Je();U();sc=L?L.isConcatSpreadable:void 0;cc=vy});function fc(t,e,r,o,n){var a=-1,i=t.length;for(r||(r=cc),n||(n=[]);++a<i;){var s=t[a];e>0&&r(s)?e>1?fc(s,e-1,r,o,n):or(n,s):o||(n[n.length]=s)}return n}var lc,pc=c(()=>{xo();uc();lc=fc});function Cy(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 dc,mc=c(()=>{dc=Cy});function Dy(t,e,r){(r?he(t,e,r):e===void 0)?e=1:e=Ny(ci(e),0);var o=t==null?0:t.length;if(!o||e<1)return[];for(var n=0,a=0,i=Array(Py(o/e));n<o;)i[a++]=dc(t,n,n+=e);return i}var Py,Ny,_o,hc=c(()=>{mc();co();ui();Py=Math.ceil,Ny=Math.max;_o=Dy});function Ly(){this.__data__=new st,this.size=0}var yc,gc=c(()=>{_e();yc=Ly});function Ry(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var wc,xc=c(()=>{wc=Ry});function My(t){return this.__data__.get(t)}var _c,Ec=c(()=>{_c=My});function ky(t){return this.__data__.has(t)}var bc,Ac=c(()=>{bc=ky});function Fy(t,e){var r=this.__data__;if(r instanceof st){var o=r.__data__;if(!ct||o.length<By-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new gt(o)}return r.set(t,e),this.size=r.size,this}var By,Tc,Sc=c(()=>{_e();Qe();tr();By=200;Tc=Fy});function Zt(t){var e=this.__data__=new st(t);this.size=e.size}var Qt,Eo=c(()=>{_e();gc();xc();Ec();Ac();Sc();Zt.prototype.clear=yc;Zt.prototype.delete=wc;Zt.prototype.get=_c;Zt.prototype.has=bc;Zt.prototype.set=Tc;Qt=Zt});function $y(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 Oc,Ic=c(()=>{Oc=$y});function Uy(){return[]}var vc,Cc=c(()=>{vc=Uy});var jy,Hy,Pc,Gy,Nc,Dc=c(()=>{Ic();Cc();jy=Object.prototype,Hy=jy.propertyIsEnumerable,Pc=Object.getOwnPropertySymbols,Gy=Pc?function(t){return t==null?[]:(t=Object(t),Oc(Pc(t),function(e){return Hy.call(t,e)}))}:vc,Nc=Gy});function Wy(t,e,r){var o=e(t);return A(t)?o:or(o,r(t))}var Lc,Rc=c(()=>{xo();U();Lc=Wy});function Ky(t){return Lc(t,Yt,Nc)}var bo,Mc=c(()=>{Rc();Dc();Xe();bo=Ky});var Yy,nr,kc=c(()=>{nt();V();Yy=k(C,"DataView"),nr=Yy});var qy,ar,Bc=c(()=>{nt();V();qy=k(C,"Promise"),ar=qy});var Jy,lt,Ao=c(()=>{nt();V();Jy=k(C,"Set"),lt=Jy});var Fc,Vy,$c,Uc,jc,Hc,zy,Xy,Zy,Qy,tg,wt,To,Gc=c(()=>{kc();Qe();Bc();Ao();wi();kt();io();Fc="[object Map]",Vy="[object Object]",$c="[object Promise]",Uc="[object Set]",jc="[object WeakMap]",Hc="[object DataView]",zy=Q(nr),Xy=Q(ct),Zy=Q(ar),Qy=Q(lt),tg=Q(We),wt=G;(nr&&wt(new nr(new ArrayBuffer(1)))!=Hc||ct&&wt(new ct)!=Fc||ar&&wt(ar.resolve())!=$c||lt&&wt(new lt)!=Uc||We&&wt(new We)!=jc)&&(wt=function(t){var e=G(t),r=e==Vy?t.constructor:void 0,o=r?Q(r):"";if(o)switch(o){case zy:return Hc;case Xy:return Fc;case Zy:return $c;case Qy:return Uc;case tg:return jc}return e});To=wt});var eg,So,Wc=c(()=>{V();eg=C.Uint8Array,So=eg});function og(t){return this.__data__.set(t,rg),this}var rg,Kc,Yc=c(()=>{rg="__lodash_hash_undefined__";Kc=og});function ng(t){return this.__data__.has(t)}var qc,Jc=c(()=>{qc=ng});function ir(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new gt;++e<r;)this.add(t[e])}var sr,Oo=c(()=>{tr();Yc();Jc();ir.prototype.add=ir.prototype.push=Kc;ir.prototype.has=qc;sr=ir});function ag(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 Vc,zc=c(()=>{Vc=ag});function ig(t,e){return t.has(e)}var cr,Io=c(()=>{cr=ig});function ug(t,e,r,o,n,a){var i=r&sg,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,y=r&cg?new sr:void 0;for(a.set(t,e),a.set(e,t);++h<s;){var g=t[h],w=e[h];if(o)var x=i?o(w,g,h,e,t,a):o(g,w,h,t,e,a);if(x!==void 0){if(x)continue;d=!1;break}if(y){if(!Vc(e,function(S,D){if(!cr(y,D)&&(g===S||n(g,S,r,o,a)))return y.push(D)})){d=!1;break}}else if(!(g===w||n(g,w,r,o,a))){d=!1;break}}return a.delete(t),a.delete(e),d}var sg,cg,ur,vo=c(()=>{Oo();zc();Io();sg=1,cg=2;ur=ug});function fg(t){var e=-1,r=Array(t.size);return t.forEach(function(o,n){r[++e]=[n,o]}),r}var Xc,Zc=c(()=>{Xc=fg});function lg(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}var te,fr=c(()=>{te=lg});function Sg(t,e,r,o,n,a,i){switch(r){case Tg:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case Ag:return!(t.byteLength!=e.byteLength||!a(new So(t),new So(e)));case mg:case hg:case wg:return Gt(+t,+e);case yg:return t.name==e.name&&t.message==e.message;case xg:case Eg:return t==e+"";case gg:var s=Xc;case _g:var u=o&pg;if(s||(s=te),t.size!=e.size&&!u)return!1;var f=i.get(t);if(f)return f==e;o|=dg,i.set(t,e);var l=ur(s(t),s(e),o,n,a,i);return i.delete(t),l;case bg:if(Co)return Co.call(t)==Co.call(e)}return!1}var pg,dg,mg,hg,yg,gg,wg,xg,_g,Eg,bg,Ag,Tg,Qc,Co,tu,eu=c(()=>{Mt();Wc();Ye();vo();Zc();fr();pg=1,dg=2,mg="[object Boolean]",hg="[object Date]",yg="[object Error]",gg="[object Map]",wg="[object Number]",xg="[object RegExp]",_g="[object Set]",Eg="[object String]",bg="[object Symbol]",Ag="[object ArrayBuffer]",Tg="[object DataView]",Qc=L?L.prototype:void 0,Co=Qc?Qc.valueOf:void 0;tu=Sg});function Cg(t,e,r,o,n,a){var i=r&Og,s=bo(t),u=s.length,f=bo(e),l=f.length;if(u!=l&&!i)return!1;for(var h=u;h--;){var d=s[h];if(!(i?d in e:vg.call(e,d)))return!1}var y=a.get(t),g=a.get(e);if(y&&g)return y==e&&g==t;var w=!0;a.set(t,e),a.set(e,t);for(var x=i;++h<u;){d=s[h];var S=t[d],D=e[d];if(o)var v=i?o(D,S,d,e,t,a):o(S,D,d,t,e,a);if(!(v===void 0?S===D||n(S,D,r,o,a):v)){w=!1;break}x||(x=d=="constructor")}if(w&&!x){var T=t.constructor,O=e.constructor;T!=O&&"constructor"in t&&"constructor"in e&&!(typeof T=="function"&&T instanceof T&&typeof O=="function"&&O instanceof O)&&(w=!1)}return a.delete(t),a.delete(e),w}var Og,Ig,vg,ru,ou=c(()=>{Mc();Og=1,Ig=Object.prototype,vg=Ig.hasOwnProperty;ru=Cg});function Dg(t,e,r,o,n,a){var i=A(t),s=A(e),u=i?au:To(t),f=s?au:To(e);u=u==nu?lr:u,f=f==nu?lr:f;var l=u==lr,h=f==lr,d=u==f;if(d&&ye(t)){if(!ye(e))return!1;i=!0,l=!1}if(d&&!l)return a||(a=new Qt),i||ze(t)?ur(t,e,r,o,n,a):tu(t,e,u,r,o,n,a);if(!(r&Pg)){var y=l&&iu.call(t,"__wrapped__"),g=h&&iu.call(e,"__wrapped__");if(y||g){var w=y?t.value():t,x=g?e.value():e;return a||(a=new Qt),n(w,x,r,o,a)}}return d?(a||(a=new Qt),ru(t,e,r,o,n,a)):!1}var Pg,nu,au,lr,Ng,iu,su,cu=c(()=>{Eo();vo();eu();ou();Gc();U();fo();ho();Pg=1,nu="[object Arguments]",au="[object Array]",lr="[object Object]",Ng=Object.prototype,iu=Ng.hasOwnProperty;su=Dg});function uu(t,e,r,o,n){return t===e?!0:t==null||e==null||!W(t)&&!W(e)?t!==t&&e!==e:su(t,e,r,o,uu,n)}var pr,Po=c(()=>{cu();Bt();pr=uu});function Mg(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 Qt;if(o)var d=o(f,l,u,t,e,h);if(!(d===void 0?pr(l,f,Lg|Rg,o,h):d))return!1}}return!0}var Lg,Rg,fu,lu=c(()=>{Eo();Po();Lg=1,Rg=2;fu=Mg});function kg(t){return t===t&&!Y(t)}var dr,No=c(()=>{Ut();dr=kg});function Bg(t){for(var e=Yt(t),r=e.length;r--;){var o=e[r],n=t[o];e[r]=[o,n,dr(n)]}return e}var pu,du=c(()=>{No();Xe();pu=Bg});function Fg(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var mr,Do=c(()=>{mr=Fg});function $g(t){var e=pu(t);return e.length==1&&e[0][2]?mr(e[0][0],e[0][1]):function(r){return r===t||fu(r,t,e)}}var mu,hu=c(()=>{lu();du();Do();mu=$g});function Ug(t,e){return t!=null&&e in Object(t)}var yu,gu=c(()=>{yu=Ug});function jg(t,e,r){e=er(e,t);for(var o=-1,n=e.length,a=!1;++o<n;){var i=ft(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&&Wt(n)&&Ht(i,n)&&(A(t)||Kt(t)))}var wu,xu=c(()=>{wo();Je();U();Ke();qe();be();wu=jg});function Hg(t,e){return t!=null&&wu(t,e,yu)}var _u,Eu=c(()=>{gu();xu();_u=Hg});function Kg(t,e){return qt(t)&&dr(e)?mr(ft(t),e):function(r){var o=ac(r,t);return o===void 0&&o===e?_u(r,t):pr(e,o,Gg|Wg)}}var Gg,Wg,bu,Au=c(()=>{Po();ic();Eu();Ze();No();Do();be();Gg=1,Wg=2;bu=Kg});function Yg(t){return function(e){return e?.[t]}}var Tu,Su=c(()=>{Tu=Yg});function qg(t){return function(e){return Xt(e,t)}}var Ou,Iu=c(()=>{rr();Ou=qg});function Jg(t){return qt(t)?Tu(ft(t)):Ou(t)}var vu,Cu=c(()=>{Su();Iu();Ze();be();vu=Jg});function Vg(t){return typeof t=="function"?t:t==null?ot:typeof t=="object"?A(t)?bu(t[0],t[1]):mu(t):vu(t)}var pt,Ae=c(()=>{hu();Au();de();U();Cu();pt=Vg});function zg(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 Pu,Nu=c(()=>{Pu=zg});function Xg(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 Du,Lu=c(()=>{Du=Xg});var Zg,Ru,Mu=c(()=>{Lu();Zg=Du(),Ru=Zg});function Qg(t,e){return t&&Ru(t,e,Yt)}var ku,Bu=c(()=>{Mu();Xe();ku=Qg});function tw(t,e){return function(r,o){if(r==null)return r;if(!at(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 Fu,$u=c(()=>{me();Fu=tw});var ew,hr,Lo=c(()=>{Bu();$u();ew=Fu(ku),hr=ew});function rw(t,e,r,o){return hr(t,function(n,a,i){e(o,n,r(n),i)}),o}var Uu,ju=c(()=>{Lo();Uu=rw});function ow(t,e){return function(r,o){var n=A(r)?Pu:Uu,a=e?e():{};return n(r,t,pt(o,2),a)}}var Hu,Gu=c(()=>{Nu();ju();Ae();U();Hu=ow});function nw(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 Wu,Ku=c(()=>{Wu=nw});function aw(t,e){var r=-1,o=at(t)?Array(t.length):[];return hr(t,function(n,a,i){o[++r]=e(n,a,i)}),o}var Yu,qu=c(()=>{Lo();me();Yu=aw});var iw,sw,cw,Ro,Ju=c(()=>{Hi();Gu();iw=Object.prototype,sw=iw.hasOwnProperty,cw=Hu(function(t,e,r){sw.call(t,r)?t[r].push(e):ji(t,r,[e])}),Ro=cw});function uw(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 Vu,zu=c(()=>{Vu=uw});function fw(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var Xu,Zu=c(()=>{Xu=fw});function lw(t,e){if(t!==e){var r=t!==void 0,o=t===null,n=t===t,a=K(t),i=e!==void 0,s=e===null,u=e===e,f=K(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 Qu,tf=c(()=>{Ft();Qu=lw});function pw(t,e,r){for(var o=-1,n=t.criteria,a=e.criteria,i=n.length,s=r.length;++o<i;){var u=Qu(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 ef,rf=c(()=>{tf();ef=pw});function dw(t,e,r){e.length?e=$t(e,function(a){return A(a)?function(i){return Xt(i,a.length===1?a[0]:a)}:a}):e=[ot];var o=-1;e=$t(e,Ve(pt));var n=Yu(t,function(a,i,s){var u=$t(e,function(f){return f(a)});return{criteria:u,index:++o,value:a}});return Xu(n,function(a,i){return ef(a,i,r)})}var of,nf=c(()=>{no();rr();Ae();qu();Zu();lo();rf();de();U();of=dw});var mw,Mo,af=c(()=>{pc();nf();qi();co();mw=Yi(function(t,e){if(t==null)return[];var r=e.length;return r>1&&he(t,e[0],e[1])?e=[]:r>2&&he(e[0],e[1],e[2])&&(e=[e[0]]),of(t,lc(e,1),[])}),Mo=mw});function hw(t,e){return t&&t.length?Vu(t,pt(e,2)):0}var ko,sf=c(()=>{Ae();zu();ko=hw});var yw,gw,cf,uf=c(()=>{Ao();bi();fr();yw=1/0,gw=lt&&1/te(new lt([,-0]))[1]==yw?function(t){return new lt(t)}:Ei,cf=gw});function xw(t,e,r){var o=-1,n=$i,a=t.length,i=!0,s=[],u=s;if(r)i=!1,n=Wu;else if(a>=ww){var f=e?null:cf(t);if(f)return te(f);i=!1,n=cr,u=new sr}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 ww,ff,lf=c(()=>{Oo();Ui();Ku();Io();uf();fr();ww=200;ff=xw});function _w(t,e){return t&&t.length?ff(t,pt(e,2)):[]}var Bo,pf=c(()=>{Ae();lf();Bo=_w});var yr=c(()=>{hc();Ju();af();sf();pf();});import{readFile as Ew}from"node:fs/promises";function Aw(t){let e=[];return t.sectionHeading&&e.push(`[Section: ${t.sectionHeading}]`),t.contextualPrefix&&e.push(t.contextualPrefix),e.push(t.content),e.join(`
|
|
89
|
-
`)}function
|
|
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
|
+
`)}function h_(t,e,r){return`${t}
|
|
90
92
|
|
|
91
93
|
---
|
|
92
94
|
|
|
@@ -100,15 +102,15 @@ Respond with ONLY a JSON array of facts. Each fact object must have exactly thes
|
|
|
100
102
|
- "confidence" (string): one of high, medium, low
|
|
101
103
|
- "importance" (string): "vital" if essential to understanding the topic, "supplementary" if supporting detail
|
|
102
104
|
|
|
103
|
-
Output the JSON array directly, no explanation or wrapping.`}function
|
|
105
|
+
Output the JSON array directly, no explanation or wrapping.`}function g_(t,e){let r=Array.isArray(t)?t:Array.isArray(t?.facts)?t.facts:null;return r?r.filter(o=>o.content&&e.includes(o.category)&&["high","medium","low"].includes(o.confidence)).map(o=>({...o,importance:["vital","supplementary"].includes(o.importance)?o.importance:"supplementary"})):[]}async function y_(t,e,r){let o=m_(t),n=h_(e,o,r),a=await yt(n,{model:p.llm.extractionModel,caller:"extractor"});return g_(a,r).map(s=>({...s,sourceSection:t.sectionHeading||null}))}async function Ff(t,{promptPath:e,categories:r}){if(!t.length)return[];let o=await p_(e,"utf8"),n=No(t,d_),a=[];for(let i of n){let s=await Promise.all(i.map(u=>y_(u,o,r).catch(f=>(console.error(`[extractor] chunk failed: ${f.message}`),[]))));a.push(...s.flat())}return a}var d_,jf=c(()=>{Sr();ot();x();d_=5});import{readFile as w_}from"node:fs/promises";import __ from"node:path";async function Gf({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){t=Dt(t);let u=s||await Ye(t),f=await A_(u,{namespace:n}),l={skip:Hf,ambiguous:Jo};if(!f.length)return{action:"ADD",fact:await Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{topSimilarity:null,matchCount:0,decision:"no-match",thresholds:l}};let h=f[0],d={topSimilarity:Number(h.similarity),matchCount:f.length,existingId:h.id,existingContent:h.content,thresholds:l};if(h.similarity>=Hf)return{action:"SKIP",existing:h,audm:{...d,decision:"skip-duplicate"}};if(h.similarity>=Jo){let y=await E_(t,h.content);if(y==="UPDATE"){let w=await Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u});return await Kf(h.id,w.id),await Vo({targetType:"fact",targetId:h.id,event:"UPDATE",oldContent:h.content,newContent:t,triggeredBy:`audm:sim=${h.similarity.toFixed(3)}`}),{action:"UPDATE",fact:w,supersededId:h.id,audm:{...d,decision:"llm:UPDATE"}}}if(y==="CONTRADICT"){let w=await Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u});return await S_(h.id,w.id),await Vo({targetType:"fact",targetId:h.id,event:"CONTRADICT",oldContent:h.content,newContent:t,triggeredBy:`audm:sim=${h.similarity.toFixed(3)}`}),{action:"CONTRADICT",fact:w,contradictedId:h.id,audm:{...d,decision:"llm:CONTRADICT"}}}return{action:"ADD",fact:await Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{...d,decision:"llm:ADD"}}}return{action:"ADD",fact:await Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:u}),audm:{...d,decision:"below-ambiguous"}}}async function E_(t,e){let o=`${await w_(x_,"utf8")}
|
|
104
106
|
|
|
105
107
|
**EXISTING FACT:** ${e}
|
|
106
108
|
|
|
107
|
-
**NEW FACT:** ${t}`,a=(await
|
|
109
|
+
**NEW FACT:** ${t}`,a=(await gt(o,{model:p.llm.decisionModel,caller:"audm"})).trim().toUpperCase();return a.includes("UPDATE")?"UPDATE":a.includes("CONTRADICT")?"CONTRADICT":"ADD"}async function Oe({content:t,category:e,confidence:r,importance:o,namespace:n,sourceDocumentIds:a,sourceSection:i,embedding:s}){let u=`fact-${K(16)}`,f=null,l=null;try{let{currentDeviceId:d,currentAgent:g}=await Promise.resolve().then(()=>(Qr(),Sa));f=d(),l=g()}catch{}let[h]=await m("fact").insert({uid:u,content:t,category:e,confidence:r||"medium",importance:o||"supplementary",namespace:n,status:"active",sourceDocumentIds:a||[],sourceSection:i||null,embedding:F(s),validFrom:new Date,embeddingModel:p.embedding.model||null,embeddingDim:Number(p.embedding.dimensions)||null,createdByDeviceId:f,createdByAgent:l}).returning("*");return await m.raw(`
|
|
108
110
|
UPDATE fact
|
|
109
111
|
SET search_vector = to_tsvector('english', content)
|
|
110
112
|
WHERE id = ?
|
|
111
|
-
`,[
|
|
113
|
+
`,[h.id]),h}async function b_(t){return m("fact").whereRaw("? = ANY(source_document_ids)",[t]).where({status:"active"}).orderBy("createdAt","desc")}async function S_(t,e){await m("fact").where({id:t}).update({status:"contradicted",contradictedById:e,validUntil:m.fn.now()})}async function Kf(t,e){await m("fact").where({id:t}).update({status:"superseded",supersededById:e,validUntil:m.fn.now()})}async function zo(t,e=[]){let r=new Set((e||[]).filter(i=>i!=null)),o=await b_(t),n=0,a=0;for(let i of o){if(r.has(i.id))continue;(Array.isArray(i.sourceDocumentIds)?i.sourceDocumentIds:[]).length<=1?(await Kf(i.id,null),await Vo({targetType:"fact",targetId:i.id,event:"SUPERSEDE",oldContent:i.content,newContent:null,triggeredBy:`reingest:doc=${t}`}),n++):(await m("fact").where({id:i.id}).update({sourceDocumentIds:m.raw("array_remove(source_document_ids, ?)",[t])}),a++)}return{superseded:n,dissociated:a}}async function A_(t,{namespace:e,threshold:r=Jo,limit:o=5}){let n=F(t),a=`${Mt("embedding")} <=> ${kt()}`;return m.transaction(async i=>{await i.raw("SET LOCAL hnsw.ef_search = 40");let{rows:s}=await i.raw(`
|
|
112
114
|
SELECT id, uid, content, category, status,
|
|
113
115
|
1 - (${a}) as similarity
|
|
114
116
|
FROM fact
|
|
@@ -118,7 +120,7 @@ Output the JSON array directly, no explanation or wrapping.`}function Sw(t,e){le
|
|
|
118
120
|
AND 1 - (${a}) >= ?
|
|
119
121
|
ORDER BY ${a}
|
|
120
122
|
LIMIT ?
|
|
121
|
-
`,[n,e,n,r,n,o]);return s})}async function
|
|
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")}
|
|
122
124
|
|
|
123
125
|
---
|
|
124
126
|
|
|
@@ -127,13 +129,13 @@ Input: ${t}
|
|
|
127
129
|
|
|
128
130
|
---
|
|
129
131
|
|
|
130
|
-
Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts": [{"content":"...","category":"...","confidence":"high|medium|low","importance":"vital|supplementary"}], "entities": ["..."], "reasoning": "..." }`;try{let n=await yt(o,{model:p.llm.extractionModel,caller:"classifier"});if(!n||!
|
|
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(`
|
|
131
133
|
UPDATE entity
|
|
132
134
|
SET aliases = (
|
|
133
135
|
SELECT ARRAY(SELECT DISTINCT unnest(aliases || ARRAY[?]::text[]))
|
|
134
136
|
)
|
|
135
137
|
WHERE id = ?
|
|
136
|
-
`,[r,t])}async function
|
|
138
|
+
`,[r,t])}async function Qo(t,e){await m("entity").where({id:t}).update({name:e})}async function D_(t){return m("entity").where({uid:t}).first()||null}async function et(t){return m("entity").where({id:t}).first()||null}async function L_(t,{entityType:e,namespace:r,threshold:o=.85,limit:n=3}){let a=F(t),i=`${Mt("embedding")} <=> ${kt()}`,{rows:s}=await m.raw(`
|
|
137
139
|
SELECT id, uid, name, entity_type AS "entityType", description,
|
|
138
140
|
mention_count AS "mentionCount",
|
|
139
141
|
1 - (${i}) AS similarity
|
|
@@ -145,7 +147,7 @@ Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts":
|
|
|
145
147
|
AND 1 - (${i}) >= ?
|
|
146
148
|
ORDER BY ${i}
|
|
147
149
|
LIMIT ?
|
|
148
|
-
`,[a,e,r,p.defaults.namespace,a,o,a,n]);return s}async function
|
|
150
|
+
`,[a,e,r,p.defaults.namespace,a,o,a,n]);return s}async function Ce(t){await m("entity").where({id:t}).increment("mentionCount",1)}async function P_(t,e){await m("entity").where({id:t}).update({description:e})}async function M_(t,{namespace:e,limit:r=50}={}){let o=m("entity").where({entityType:t}).whereNull("mergedWith").orderBy("mentionCount","desc").limit(r);return e&&o.where({namespace:e}),o}async function k_(t){let[{count:e}]=await m("entity").where({entityType:t}).whereNull("mergedWith").count("id as count");return Number(e)}async function B_(t,{entityType:e,namespace:r,limit:o=10}={}){let n=m("entity").whereRaw("LOWER(name) LIKE ?",[`%${t.toLowerCase()}%`]).whereNull("mergedWith").orderBy("mentionCount","desc").limit(o);return e&&n.where({entityType:e}),r&&n.where({namespace:r}),n}async function xt(t,e){let r=await et(t);if(!r)return;let o;try{o=r.entityTypes?JSON.parse(r.entityTypes):[r.entityType]}catch{o=[r.entityType]}o.includes(e)||(o.push(e),await m("entity").where({id:t}).update({entityTypes:JSON.stringify(o)}))}async function Et(t){let e=await et(t);for(;e?.mergedWith;)e=await et(e.mergedWith);return e}var Ir=c(()=>{At();O();Bt();x()});async function Xf(t,e,{namespace:r,threshold:o=$_,limit:n=5}){if(!e)return[];let a=F(e),i=`${Mt("embedding")} <=> ${kt()}`,{rows:s}=await m.raw(`
|
|
149
151
|
SELECT id, name, entity_type AS "entityType", entity_types AS "entityTypes",
|
|
150
152
|
1 - (${i}) AS similarity
|
|
151
153
|
FROM entity
|
|
@@ -156,7 +158,7 @@ Respond with ONLY a JSON object: { "route": "thought|knowledge|noise", "facts":
|
|
|
156
158
|
AND 1 - (${i}) >= ?
|
|
157
159
|
ORDER BY ${i}
|
|
158
160
|
LIMIT ?
|
|
159
|
-
`,[a,r,t,a,o,a,n]);return s.map(u=>{let f;try{f=u.entityTypes?JSON.parse(u.entityTypes):[u.entityType]}catch{f=[u.entityType]}return{...u,types:f}})}async function
|
|
161
|
+
`,[a,r,t,a,o,a,n]);return s.map(u=>{let f;try{f=u.entityTypes?JSON.parse(u.entityTypes):[u.entityType]}catch{f=[u.entityType]}return{...u,types:f}})}async function tn(t,e,r,o){let n=(r.aliases||[]).filter(Boolean),a=n.length?`Existing aliases: ${n.join(", ")}`:"",i=r.similarity>0?`Name-embedding similarity: ${(r.similarity*100).toFixed(0)}%`:"Name-embedding similarity: not directly measured (LLM judging on episode text alone)",s=o?`
|
|
160
162
|
Source passage where the new mention appeared:
|
|
161
163
|
---
|
|
162
164
|
${o.slice(0,1500)}
|
|
@@ -175,19 +177,19 @@ Decision rules:
|
|
|
175
177
|
- If you cannot tell, "same" is false. Don't guess.
|
|
176
178
|
|
|
177
179
|
Respond as STRICT JSON, no markdown, no prose:
|
|
178
|
-
{"same": boolean, "rename": boolean, "current_name": "<one of A or B verbatim, or null>", "reason": "one short sentence"}`,f;try{f=await
|
|
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(`
|
|
179
181
|
INSERT INTO fact_entity (fact_id, entity_id, mention_type, mention_count, created_at, updated_at)
|
|
180
182
|
SELECT fact_id, ?, mention_type, mention_count, NOW(), NOW()
|
|
181
183
|
FROM fact_entity
|
|
182
184
|
WHERE entity_id = ?
|
|
183
185
|
ON CONFLICT (fact_id, entity_id, mention_type)
|
|
184
186
|
DO UPDATE SET mention_count = fact_entity.mention_count + EXCLUDED.mention_count
|
|
185
|
-
`,[t,e]),await i("fact_entity").where({entityId:e}).del(),await i("entity").where({id:t}).update({mentionCount:n}),await i("pod").where({entityId:t,status:"active"}).first()?await i("pod").where({entityId:e}).update({status:"archived",updatedAt:i.fn.now()}):await i("pod").where({entityId:e}).update({entityId:t,updatedAt:i.fn.now()}),await i("entity").where({id:e}).update({mergedWith:t})}),await
|
|
186
|
-
`),a=`${await
|
|
187
|
+
`,[t,e]),await i("fact_entity").where({entityId:e}).del(),await i("entity").where({id:t}).update({mentionCount:n}),await i("pod").where({entityId:t,status:"active"}).first()?await i("pod").where({entityId:e}).update({status:"archived",updatedAt:i.fn.now()}):await i("pod").where({entityId:e}).update({entityId:t,updatedAt:i.fn.now()}),await i("entity").where({id:e}).update({mergedWith:t})}),await H_(t);let a=j_(o);for(let i of a)await xt(t,i);return console.log(`[entity-merge] Merged ${e} (${o.name}) into ${t} (${r.name})`),{...r,mentionCount:n}}function j_(t){if(!t.entityTypes)return[t.entityType];try{return JSON.parse(t.entityTypes)}catch{return[t.entityType]}}async function H_(t){let e=await m("relation").where(function(){this.where({sourceId:t}).orWhere({targetId:t})}).whereNull("invalidAt"),r=Ko(e,o=>`${o.sourceId}-${o.targetId}-${o.relationType}`);for(let o of Object.values(r)){if(o.length<=1)continue;let[n,...a]=Wo(o,"id"),i=Yo(o,"mentionCount");await m("relation").where({id:n.id}).update({mentionCount:i}),await m("relation").whereIn("id",a.map(s=>s.id)).del()}}async function G_(t){let e=await et(t),r=[e?.id];for(;e?.mergedWith;)e=await et(e.mergedWith),e&&r.push(e.id);return{canonical:e,chain:r}}var tl=c(()=>{Sr();O();Ir()});import{readFile as K_}from"node:fs/promises";async function Ne({name:t,entityType:e,description:r,namespace:o,externalId:n,embedding:a,episodeText:i,episodeEntityIds:s=[]}){let u=o||p.defaults.namespace,f=await ve(t,u);if(f)return f=await Et(f.id),await Ce(f.id),f.entityType!==e&&await xt(f.id,e),f;let l=a||await Ye(`${e}: ${t}`),h=await Xf(t,l,{namespace:u,limit:3});for(let y of h){let _=await tn(t,e,y,i);if(_.same)return el(y,{newName:t,entityType:e,isRename:_.rename,currentName:_.currentName})}let d=new Set(h.map(y=>y.id)),g=s.filter(y=>y!=null&&!d.has(y));for(let y of g){let _=await Et(y);if(!_||_.namespace!==u||_.name?.toLowerCase()===t.toLowerCase())continue;let w=await tn(t,e,{..._,types:W_(_),similarity:0},i);if(w.same)return el(_,{newName:t,entityType:e,isRename:w.rename,currentName:w.currentName})}try{return await Zo({name:t,entityType:e,description:r,namespace:u,externalId:n,embedding:l})}catch(y){if(rl(y)){let _=await ve(t,u);if(_){let w=await Et(_.id);return await Ce(w.id),await xt(w.id,e),w}}throw y}}function rl(t){return t?!!(t.code==="23505"||typeof t.message=="string"&&t.message.includes("duplicate key value violates unique constraint")):!1}async function el(t,{newName:e,entityType:r,isRename:o,currentName:n}){let a=await Et(t.id);if(await Ce(a.id),await xt(a.id,r),o&&a.name&&a.name.toLowerCase()!==e.toLowerCase()){let i=e.toLowerCase(),s=a.name.toLowerCase(),u=(n||"").toLowerCase(),f,l;if(u===i?(f=e,l=a.name):u===s?(f=a.name,l=e):(f=e,l=a.name),l&&l.toLowerCase()!==f.toLowerCase()&&(await Tr(a.id,l),a.aliases=[...a.aliases||[],l.toLowerCase()]),f!==a.name)try{await Qo(a.id,f),a.name=f}catch(h){if(rl(h)){let d=await ve(f,a.namespace);if(d&&d.id!==a.id){let{mergeEntities:g}=await Promise.resolve().then(()=>(tl(),Qf));return await g(d.id,a.id),await Tr(d.id,a.name),await Et(d.id)}}throw h}}return a}function W_(t){if(t.entityTypes)try{return JSON.parse(t.entityTypes)}catch{}return[t.entityType]}async function en(t,{promptPath:e,namespace:r}){if(!t.length)return[];let o=t.map(d=>`- [${d.category}] ${d.content}`).join(`
|
|
188
|
+
`),a=`${await K_(e,"utf8")}
|
|
187
189
|
|
|
188
190
|
---
|
|
189
191
|
|
|
190
|
-
${o}`,i=await
|
|
192
|
+
${o}`,i=await gt(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=Ke(i);if(!Array.isArray(s))return[];let u=s.filter(d=>d.name);if(!u.length)return[];let f=new Array(u.length),l=[],h=[];for(let d=0;d<u.length;d++){let g=await Y_(u[d].name,r);g?(f[d]=g,l.push(g.id)):h.push(d)}for(let d of h){let g=u[d],y=await Ne({name:g.name,entityType:"topic",description:g.description||null,namespace:r,episodeText:o,episodeEntityIds:l});f[d]=y,y?.id&&l.push(y.id)}return f.filter(Boolean)}async function Y_(t,e){let{findByName:r,getCanonicalEntity:o,incrementMentionCount:n}=await Promise.resolve().then(()=>(Ir(),zf)),a=await r(t,e);if(!a)return null;let i=await o(a.id);return await n(i.id),i}var ol=c(()=>{qe();ot();x();Ir();Zf()});async function Or({sourceId:t,targetId:e,relationType:r,sourceFactId:o,validAt:n}){let{rows:[a]}=await m.raw(`
|
|
191
193
|
INSERT INTO relation (source_id, target_id, relation_type, source_fact_id, mention_count, valid_at, created_at, updated_at)
|
|
192
194
|
VALUES (?, ?, ?, ?, 1, ?, NOW(), NOW())
|
|
193
195
|
ON CONFLICT (source_id, target_id, relation_type) DO UPDATE SET
|
|
@@ -195,28 +197,28 @@ ${o}`,i=await ht(a,{model:p.llm.entityModel,caller:"entity-resolver"}),s=Be(i);i
|
|
|
195
197
|
source_fact_id = COALESCE(EXCLUDED.source_fact_id, relation.source_fact_id),
|
|
196
198
|
updated_at = NOW()
|
|
197
199
|
RETURNING *
|
|
198
|
-
`,[t,e,r,o||null,n||null]);return a}var
|
|
199
|
-
`),u=[];for(let d of t.items){let
|
|
200
|
-
`).slice(0,2e3),u=await
|
|
201
|
-
`),
|
|
202
|
-
`),
|
|
203
|
-
`),{documentId:null,title:
|
|
204
|
-
`);let
|
|
205
|
-
`),{documentId:
|
|
206
|
-
`);let
|
|
207
|
-
`);let
|
|
208
|
-
`),{documentId:
|
|
209
|
-
`),
|
|
210
|
-
`),!d&&
|
|
211
|
-
${
|
|
212
|
-
`),
|
|
213
|
-
`),await
|
|
214
|
-
`),
|
|
215
|
-
`))}catch(
|
|
216
|
-
`),{documentId:
|
|
217
|
-
`),!a.length)return{counts:{total:0,added:0,skipped:0,updated:0,contradicted:0},results:[]};let i=await
|
|
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),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
|
+
`),I=await Jf(t,{title:N}),process.stderr.write(` Route: ${I.route} \u2014 ${I.reasoning}
|
|
204
|
+
`),I.route==="noise"))return process.stderr.write(` Skipped \u2014 classified as noise.
|
|
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: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
|
+
`);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 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
|
+
`),H=Qa(Rr.sections),process.stderr.write(` ${H.length} chunks created
|
|
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
|
+
`),ae=await an({title:N,sourceType:o,metadata:i},G.results,w,f),process.stderr.write(` ${ae.entityCount} entities, ${ae.relationCount} relations
|
|
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
|
+
`),!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}
|
|
218
220
|
`)}await r({conclusion:e.summary||e.conclusion||null,summary:e.summary||null})}catch(r){process.stderr.write(`[sigil:session-end] ${r.message}
|
|
219
|
-
`);try{let{recordHookError:o}=await Promise.resolve().then(()=>(
|
|
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(`
|
|
220
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(`
|
|
221
|
-
`),
|
|
222
|
-
`)}}async function
|
|
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
|
+
`)}}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();
|