openclaw-plugin-memory-engine 4.1.0 → 4.2.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/README.md CHANGED
@@ -38,6 +38,15 @@ openclaw plugins install npm:openclaw-plugin-memory-engine
38
38
 
39
39
  Enable the plugin UI page once via **Control UI → Settings → Labs → Custom plugin UI**.
40
40
 
41
+ ## Privacy & Data
42
+
43
+ - **What is stored**: with session ingest enabled (default), OpenClaw chat messages are stored as session_msg atoms in the configured SQLite database, and a per-session digest is refreshed periodically.
44
+ - **Opt out**: set ingest.enabled false in the plugin config to stop capturing chats entirely; existing captured data stays until cleaned.
45
+ - **Automatic cleanup**: session_msg and session_digest atoms carry a TTL (default 7 days, configurable via ingest.retention_days) and are expired automatically by the periodic flush.
46
+ - **Manual cleanup**: use memory_cleanup_sessions, memory_delete_atom, memory_export_all to review or purge stored contents.
47
+ - **Embeddings**: semantic search sends atom text to the configured Ollama endpoint (OLLAMA_HOST). Disable by not using semantic tools, or point OLLAMA_HOST to a local instance.
48
+ - **Database location**: check MEMORY_DB_PATH to know exactly where your data lives.
49
+
41
50
  ## License
42
51
 
43
52
  MIT
@@ -0,0 +1,7 @@
1
+ var ll=Object.defineProperty;var wt=(e,t)=>{for(var n in t)ll(e,n,{get:t[n],enumerable:!0})};function va(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function No(e){if(!e.pluginId.trim()||Object.keys(e.operations).length>64||Object.keys(e.events).length>64)throw new Error("Feature contracts require a plugin id and at most 64 operations and events");for(let t of Object.keys(e.operations))if(!/^[a-z][a-z0-9._-]{0,127}$/u.test(t))throw new Error(`Invalid feature operation id: ${t}`);for(let t of Object.keys(e.events))if(!/^[a-z][a-z0-9_-]{0,127}$/u.test(t))throw new Error(`Invalid feature event id: ${t}`);return e}function Uo(e,t){if(t.pluginId!==e.pluginId)throw new Error("Feature contract must belong to the active browser plugin");let n=async(m,p,d={})=>{t.signal.throwIfAborted();let l=await t.request("plugins.sessionAction",{pluginId:e.pluginId,actionId:m,payload:p,...d});if(t.signal.throwIfAborted(),!va(l)||l.ok!==!0)throw new Error(va(l)&&typeof l.error=="string"?l.error:"Feature operation returned an invalid response");return l.result},r=(m,p)=>t.onEvent(`plugin.${e.pluginId}.${m}`,d=>p(d));return{invoke:n,on:r,watch:(m,p,d)=>{if(e.operations[m]?.kind!=="query")throw new Error("Only feature queries can be watched");let l=!1,C=0,v=!1,B=t.connection.connected,pe=()=>{C+=1,!(l||!t.connection.connected||v)&&(v=!0,queueMicrotask(()=>{if(v=!1,l||!t.connection.connected)return;let Ge=C;n(m,p,{sessionKey:d.sessionKey,agentId:d.agentId}).then(Le=>{!l&&Ge===C&&t.connection.connected&&d.onChange(Le)},Le=>{!l&&Ge===C&&t.connection.connected&&d.onError(Le instanceof Error?Le:new Error(String(Le)))})}))},at=d.events.map(Ge=>r(Ge,pe));at.push(t.subscribe(()=>{B!==t.connection.connected&&(B=t.connection.connected,pe())}));let ve=()=>{l=!0,C+=1;for(let Ge of at)Ge();t.signal.removeEventListener("abort",ve)};return t.signal.addEventListener("abort",ve,{once:!0}),t.signal.aborted?ve():pe(),ve}}}var u={};wt(u,{Assign:()=>ff,Clone:()=>Pn,Create:()=>Of,Discard:()=>vf,Metrics:()=>Ae,Update:()=>Pf});var Ae={assign:0,create:0,clone:0,discard:0,update:0};var De={};wt(De,{Get:()=>lf,Reset:()=>cf,Set:()=>df});var i={};wt(i,{CodePointCount:()=>Cl,Counted:()=>Ll,Entries:()=>Dl,EntriesRegExp:()=>Fl,Every:()=>wl,EveryAll:()=>Sl,GraphemeCount:()=>Pl,HasPropertyKey:()=>Al,IsArray:()=>On,IsBigInt:()=>kn,IsBoolean:()=>Ho,IsClassInstance:()=>vl,IsConstructor:()=>bl,IsDeepEqual:()=>Ra,IsEqual:()=>j,IsFunction:()=>Vo,IsGreaterEqualThan:()=>Jo,IsGreaterThan:()=>El,IsInteger:()=>Pa,IsLessEqualThan:()=>Zo,IsLessThan:()=>kl,IsMaxLength:()=>Rl,IsMinLength:()=>Ml,IsMultipleOf:()=>Ol,IsNull:()=>dr,IsNumber:()=>lr,IsObject:()=>vn,IsObjectNotArray:()=>Tl,IsString:()=>fr,IsSymbol:()=>hl,IsUndefined:()=>Ca,IsUnsafePropertyKey:()=>Yo,IsValueLike:()=>Qo,Keys:()=>cr,ShiftLeft:()=>xr,Some:()=>jl,SomeAll:()=>ql,Symbols:()=>Kl,Values:()=>Nl});function Qt(e,t,n){return e>=t&&e<=n}function fl(e){return e===8205}function Go(e){return Qt(e,127462,127487)}function xl(e){return Qt(e,65024,65039)}function Il(e){return Qt(e,768,879)||Qt(e,6832,6911)||Qt(e,7616,7679)||Qt(e,65056,65071)}function pr(e){return e>65535?2:1}function zo(e,t){for(;t<e.length;){let n=e.codePointAt(t);if(Il(n)||xl(n))t+=pr(n);else break}return t}function yl(e,t){let n=e.codePointAt(t),r=t+pr(n);for(r=zo(e,r);r<e.length-1&&fl(e.codePointAt(r));){let o=e.codePointAt(r+1);r+=1+pr(o),r=zo(e,r)}return Go(n)&&r<e.length&&Go(e.codePointAt(r))&&(r+=pr(e.codePointAt(r))),r}function _o(e){let t=0,n=0;for(;n<e.length;)n=yl(e,n),t++;return t}function ur(e){let t=0,n=0,r=0;for(;n<e.length;){let o=e.charCodeAt(n++)>>10;t+=+((r<<8|o)!==13879),r=o}return t}function Bo(e,t){return e.length<=t||e.length<=t<<1&&ur(e)<=t}function Wo(e,t){return e.length>=t<<1||e.length>=t&&ur(e)>=t}function On(e){return Array.isArray(e)}function kn(e){return j(typeof e,"bigint")}function Ho(e){return j(typeof e,"boolean")}function bl(e){if(Ca(e)||!Vo(e))return!1;let t=Function.prototype.toString.call(e);return!!(/^class\s/.test(t)||/\[native code\]/.test(t))}function Vo(e){return j(typeof e,"function")}function Pa(e){return Number.isInteger(e)}function dr(e){return j(e,null)}function lr(e){return Number.isFinite(e)}function Tl(e){return vn(e)&&!On(e)}function vn(e){return j(typeof e,"object")&&!dr(e)}function fr(e){return j(typeof e,"string")}function hl(e){return j(typeof e,"symbol")}function Ca(e){return j(e,void 0)}function j(e,t){return e===t}function El(e,t){return e>t}function kl(e,t){return e<t}function Zo(e,t){return e<=t}function Jo(e,t){return e>=t}function Ol(e,t){if(kn(e)||kn(t))return BigInt(e)%BigInt(t)===0n;let n=1e-10;if(!lr(e)||Pa(e)&&1/t%1===0)return!0;let r=e%t;return Math.min(Math.abs(r),Math.abs(r-t),Math.abs(r+t))<n}function vl(e){if(!vn(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return dr(t)?!1:j(typeof t.constructor,"function")&&!(j(t.constructor,globalThis.Object)||j(t.constructor.name,"Object"))}function Qo(e){return kn(e)||Ho(e)||dr(e)||lr(e)||fr(e)||Ca(e)}function Pl(e){return _o(e)}function Cl(e){return ur(e)}function Rl(e,t){return Bo(e,t)}function Ml(e,t){return Wo(e,t)}function wl(e,t,n){return e.every((r,o)=>o<t||n(r,o))}function Sl(e,t,n){let r=!0;return e.forEach((o,m)=>{m>=t&&!n(o,m)&&(r=!1)}),r}function jl(e,t){return e.some((n,r)=>t(n,r))}function ql(e,t){let n=!1;return e.forEach((r,o)=>{t(r,o)&&(n=!0)}),n}function Ll(e,t){return e.reduce((n,r,o)=>t(r,o)?++n:n,0)}function xr(e,t,n){return j(e.length,0)?n():t(e[0],e.slice(1))}function Yo(e){return j(e,"__proto__")||j(e,"constructor")||j(e,"prototype")}function Al(e,t){return Yo(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function Fl(e){return cr(e).map(t=>[new RegExp(`^${t}$`),e[t]])}function Dl(e){return Object.entries(e)}function cr(e){return Object.getOwnPropertyNames(e)}function Kl(e){return Object.getOwnPropertySymbols(e)}function Nl(e){return Object.values(e)}function Ul(e,t){if(!vn(t))return!1;let n=cr(e);return j(n.length,cr(t).length)&&n.every(r=>Ra(e[r],t[r]))}function Gl(e,t){return On(t)&&j(e.length,t.length)&&e.every((n,r)=>Ra(e[r],t[r]))}function Ra(e,t){return On(e)?Gl(e,t):vn(e)?Ul(e,t):j(e,t)}var xt={};wt(xt,{IsBigInt64Array:()=>rf,IsBigUint64Array:()=>af,IsBoolean:()=>_l,IsDate:()=>sf,IsFloat32Array:()=>tf,IsFloat64Array:()=>nf,IsInt16Array:()=>Ql,IsInt32Array:()=>Xl,IsInt8Array:()=>Vl,IsMap:()=>pf,IsNumber:()=>Bl,IsRegExp:()=>of,IsSet:()=>mf,IsString:()=>Wl,IsTypeArray:()=>Hl,IsUint16Array:()=>Yl,IsUint32Array:()=>ef,IsUint8Array:()=>Zl,IsUint8ClampedArray:()=>Jl});function _l(e){return e instanceof Boolean}function Bl(e){return e instanceof Number}function Wl(e){return e instanceof String}function Hl(e){return globalThis.ArrayBuffer.isView(e)}function Vl(e){return e instanceof globalThis.Int8Array}function Zl(e){return e instanceof globalThis.Uint8Array}function Jl(e){return e instanceof globalThis.Uint8ClampedArray}function Ql(e){return e instanceof globalThis.Int16Array}function Yl(e){return e instanceof globalThis.Uint16Array}function Xl(e){return e instanceof globalThis.Int32Array}function ef(e){return e instanceof globalThis.Uint32Array}function tf(e){return e instanceof globalThis.Float32Array}function nf(e){return e instanceof globalThis.Float64Array}function rf(e){return e instanceof globalThis.BigInt64Array}function af(e){return e instanceof globalThis.BigUint64Array}function of(e){return e instanceof globalThis.RegExp}function sf(e){return e instanceof globalThis.Date}function mf(e){return e instanceof globalThis.Set}function pf(e){return e instanceof globalThis.Map}var Fe={immutableTypes:!1,maxErrors:8,maxParseErrors:1,maxInstantiationCount:128,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1,unionPrioritySort:!0};function cf(){Fe.immutableTypes=!1,Fe.maxErrors=8,Fe.maxParseErrors=1,Fe.maxInstantiationCount=128,Fe.useAcceleration=!0,Fe.exactOptionalPropertyTypes=!1,Fe.enumerableKind=!1,Fe.correctiveParse=!1,Fe.unionPrioritySort=!0}function df(e){for(let t of i.Keys(e)){let n=e[t];n!==void 0&&Object.defineProperty(Fe,t,{value:n})}}function lf(){return Fe}function It(e){return De.Get().immutableTypes?Object.freeze(e):e}function ff(e,t){return Ae.assign+=1,It({...e,...t})}function xf(e){return i.HasPropertyKey(e,"~kind")||i.HasPropertyKey(e,"~unsafe")}function If(e){let t={};for(let n of i.Keys(e)){if(i.IsUnsafePropertyKey(n))continue;let r=Object.getOwnPropertyDescriptor(e,n);r.value=St(r.value),i.IsEqual(r.enumerable,!0)?t[n]=r.value:Object.defineProperty(t,n,r)}return t}function yf(e){let t={};for(let n of i.Keys(e))i.IsUnsafePropertyKey(n)||(t[n]=St(e[n]));for(let n of i.Symbols(e))t[n]=St(e[n]);return t}function gf(e){return i.IsClassInstance(e)?e:xf(e)?If(e):yf(e)}function $f(e){return e.map(t=>St(t))}function bf(e){return e.slice()}function Tf(e){return new RegExp(e.source,e.flags)}function hf(e){return new Map(St([...e.entries()]))}function Ef(e){return new Set(St([...e.values()]))}function St(e){return xt.IsTypeArray(e)?bf(e):xt.IsRegExp(e)?Tf(e):xt.IsMap(e)?hf(e):xt.IsSet(e)?Ef(e):i.IsArray(e)?$f(e):i.IsObject(e)?gf(e):e}function Pn(e){return Ae.clone+=1,St(e)}function kf(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function Xo(e,t){return{...e,...t}}function Of(e,t,n={}){Ae.create+=1;let r=Xo(t,n),o=De.Get().enumerableKind?Xo(r,e):kf(r,e);return It(o)}function vf(e,t){Ae.discard+=1;let n={};for(let r of i.Keys(e)){if(t.includes(r))continue;let o=Object.getOwnPropertyDescriptor(e,r);o.value=Pn(o.value),Object.defineProperty(n,r,o)}return It(n)}function Pf(e,t,n){Ae.update+=1;let r=De.Get(),o=Pn(e);for(let m of Object.keys(t))Object.defineProperty(o,m,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[m]});for(let m of Object.keys(n))Object.defineProperty(o,m,{configurable:!0,enumerable:!0,writable:!0,value:n[m]});return It(o)}function y(e,t){return i.IsObject(e)&&i.HasPropertyKey(e,"~kind")&&i.IsEqual(e["~kind"],t)}function ne(e){return i.IsObject(e)}function $(e,t,n){return u.Create({"~kind":"Deferred"},{type:"deferred",action:e,parameters:t,options:n},{})}function yt(e){return y(e,"Deferred")}function Cf(e){return u.Update(e,{"~readonly":!0},{})}function Cn(e,t){return u.Update(Cf(e),{},t)}function ei(e,t,n,r){let o=f(e,t,n);return Cn(o,r)}function Rf(e){return u.Update(e,{"~optional":!0},{})}function Rn(e,t){return u.Update(Rf(e),{},t)}function ti(e,t,n,r){let o=f(e,t,n);return Rn(o,r)}function Pe(e,t){return u.Create({"~kind":"Array"},{type:"array",items:e},t)}function z(e){return y(e,"Array")}function Ir(e){return u.Discard(e,["~kind","type","items"])}function Be(e,t,n={}){return u.Create({"~kind":"Constructor"},{type:"constructor",parameters:e,instanceType:t},n)}function ae(e){return y(e,"Constructor")}function ni(e){return u.Discard(e,["~kind","type","parameters","instanceType"])}function We(e,t,n={}){return u.Create({"~kind":"Function"},{type:"function",parameters:e,returnType:t},n)}function oe(e){return y(e,"Function")}function ri(e){return u.Discard(e,["~kind","type","parameters","returnType"])}function st(e,t){return u.Create({"~kind":"Ref"},{$ref:e},t)}function ie(e){return y(e,"Ref")}function gt(e,t){return u.Create({"~kind":"Generic"},{type:"generic",parameters:e,expression:t})}function Yt(e){return y(e,"Generic")}function Xt(e){return u.Create({"~kind":"Any"},{},e)}function W(e){return y(e,"Any")}var ai="(?!)";function K(e){return u.Create({"~kind":"Never"},{not:{}},e)}function Ke(e){return y(e,"Never")}function He(e,t={}){return $("AddOptional",[e],t)}function jt(e,t={}){return Rn(e,t)}function oi(e){return jt(e)}function xe(e){return ne(e)&&i.HasPropertyKey(e,"~optional")}function ii(e){return i.Keys(e).filter(t=>!xe(e[t]))}function yr(e){return i.Keys(e)}function gr(e){return i.Values(e)}function h(e,t={}){let n=ii(e),r=n.length>0?{required:n}:{};return u.Create({"~kind":"Object"},{type:"object",...r,properties:e},t)}function A(e){return y(e,"Object")}function si(e){return u.Discard(e,["~kind","type","properties","required"])}function se(e){return u.Create({"~kind":"Unknown"},{},e)}function Y(e){return y(e,"Unknown")}function Ve(e,t,n){let r=i.Keys(e).reduce((o,m)=>({...o,[m]:u.Update(e[m],{},{$id:m})}),{});return u.Create({"~kind":"Cyclic"},{$defs:r,$ref:t},n)}function ce(e){return y(e,"Cyclic")}function mi(e){return u.Update(e,{"~unsafe":null},{})}function $r(e){return i.IsObjectNotArray(e)&&i.HasPropertyKey(e,"~unsafe")&&i.IsNull(e["~unsafe"])}var Ze={};wt(Ze,{Match:()=>Mf});function Mf(e,t){return t[e.length]?.(...e)??(()=>{throw Error("Invalid Arguments")})()}function Mn(...e){let[t,n]=Ze.Match(e,{2:(r,o)=>[r,o,o],1:r=>[r,se(),se()]});return u.Create({"~kind":"Infer"},{type:"infer",name:t,extends:n},{})}function X(e){return y(e,"Infer")}function qt(e,t,n,r={}){return u.Create({"~kind":"Dependent"},{if:e,then:t,else:n},r)}function V(e){return y(e,"Dependent")}function pi(e){return u.Discard(e,["~kind","if","then","else"])}function ui(e){return i.IsObjectNotArray(e)}function ci(e){return i.Keys(e).filter(n=>isNaN(n)).reduce((n,r)=>[...n,e[r]],[])}function di(e){return i.IsString(e)||i.IsNumber(e)}function li(e,t){let n=ui(e)?ci(e):e;return u.Create({"~kind":"Enum"},{enum:n},t)}function de(e){return y(e,"Enum")}function Te(e,t={}){return u.Create({"~kind":"Intersect"},{allOf:e},t)}function M(e){return y(e,"Intersect")}function fi(e){return u.Discard(e,["~kind","allOf"])}function re(){throw new Error("Unreachable")}var xi;(function(e){e[e.Array=0]="Array",e[e.BigInt=1]="BigInt",e[e.Boolean=2]="Boolean",e[e.Date=3]="Date",e[e.Constructor=4]="Constructor",e[e.Function=5]="Function",e[e.Null=6]="Null",e[e.Number=7]="Number",e[e.Object=8]="Object",e[e.RegExp=9]="RegExp",e[e.String=10]="String",e[e.Symbol=11]="Symbol",e[e.TypeArray=12]="TypeArray",e[e.Undefined=13]="Undefined"})(xi||(xi={}));var Dh=BigInt("14695981039346656037"),[Kh,Nh]=[BigInt("1099511628211"),BigInt("18446744073709551616")],Uh=Array.from({length:256}).map((e,t)=>BigInt(t)),Ii=new Float64Array(1),Gh=new DataView(Ii.buffer),zh=new Uint8Array(Ii.buffer);var _h=new TextEncoder;var wn=class{constructor(t,n){this.type=t,this.decode=n}Encode(t){let n=this.type,r=br(n)?p=>this.decode(n["~codec"].decode(p)):this.decode,o=br(n)?p=>n["~codec"].encode(t(p)):t,m={decode:r,encode:o};return u.Update(this.type,{"~codec":m},{})}},Sn=class{constructor(t){this.type=t}Decode(t){return new wn(this.type,t)}};function Tr(e){return new Sn(e)}function gi(e,t){return Tr(e).Decode(t).Encode(()=>{throw Error("Encode not implemented")})}function $i(e,t){return Tr(e).Decode(()=>{throw Error("Decode not implemented")}).Encode(t)}function br(e){return ne(e)&&i.HasPropertyKey(e,"~codec")&&i.IsObject(e["~codec"])&&i.HasPropertyKey(e["~codec"],"encode")&&i.HasPropertyKey(e["~codec"],"decode")}function bi(e){return en(e)}function Lt(e){return ne(e)&&i.HasPropertyKey(e,"~immutable")}function Je(e,t={}){return $("AddReadonly",[e],t)}function At(e,t={}){return Cn(e,t)}function Ti(e){return At(e)}function Ft(e){return ne(e)&&i.HasPropertyKey(e,"~readonly")}function qf(e,t){let n=Ma(e)?[...e["~refine"],t]:[t];return u.Update(e,{"~refine":n},{})}function hi(...e){let[t,n,r]=Ze.Match(e,{3:(o,m,p)=>[o,m,p],2:(o,m)=>[o,m,()=>"Refine Error"]});return qf(t,{check:n,error:r})}function Lf(e){return i.IsObjectNotArray(e)&&i.HasPropertyKey(e,"check")&&i.HasPropertyKey(e,"error")&&i.IsFunction(e.check)&&i.IsFunction(e.error)}function Ma(e){return ne(e)&&i.HasPropertyKey(e,"~refine")&&i.IsArray(e["~refine"])&&i.Every(e["~refine"],0,t=>Lf(t))}var Ei="-?(?:0|[1-9][0-9]*)n";function jn(e){return u.Create({"~kind":"BigInt"},{type:"bigint"},e)}function Qe(e){return y(e,"BigInt")}function hr(e){return u.Create({"~kind":"Boolean"},{type:"boolean"},e)}function we(e){return y(e,"Boolean")}function qn(e){return u.Create({"~kind":"Identifier"},{name:e})}function ki(e){return y(e,"Identifier")}var Er="-?(?:0|[1-9][0-9]*)";function Dt(e){return u.Create({"~kind":"Integer"},{type:"integer"},e)}function ye(e){return y(e,"Integer")}var wa=class extends Error{constructor(t){super("Invalid Literal value"),Object.defineProperty(this,"cause",{value:{value:t},writable:!1,configurable:!1,enumerable:!1})}};function Af(e){return i.IsBigInt(e)?"bigint":i.IsBoolean(e)?"boolean":i.IsNumber(e)?"number":i.IsString(e)?"string":(()=>{throw new wa(e)})()}function w(e,t){return u.Create({"~kind":"Literal"},{type:Af(e),const:e},t)}function kr(e){return i.IsBigInt(e)||i.IsBoolean(e)||i.IsNumber(e)||i.IsString(e)}function Oi(e){return F(e)&&i.IsNumber(e.const)}function vi(e){return F(e)&&i.IsString(e.const)}function F(e){return y(e,"Literal")}function tn(e){return u.Create({"~kind":"Null"},{type:"null"},e)}function nn(e){return y(e,"Null")}var Or="-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?";function ke(e){return u.Create({"~kind":"Number"},{type:"number"},e)}function ee(e){return y(e,"Number")}function rn(e){return u.Create({"~kind":"Symbol"},{type:"symbol"},e)}function $t(e){return y(e,"Symbol")}function Kt(...e){let[t,n,r]=Ze.Match(e,{3:(o,m,p)=>[o,m,p],2:(o,m)=>[o,m,m],1:o=>[o,se(),se()]});return u.Create({"~kind":"Parameter"},{name:t,extends:n,equals:r},{})}function Pi(e){return y(e,"Parameter")}var vr=".*";function Se(e){return u.Create({"~kind":"String"},{type:"string"},e)}function ge(e){return y(e,"String")}function P(e,t={}){return u.Create({"~kind":"Union"},{anyOf:e},t)}function g(e){return y(e,"Union")}function Ci(e){return u.Discard(e,["~kind","anyOf"])}function Ln(e){let t=Ri(e);return i.IsEqual(t.length,2)?t[0]:[]}function Ff(e){return!0}function Mi(e){return i.ShiftLeft(e,(t,n)=>Df(t)?Mi(n):!1,()=>!0)}function wi(e){return i.IsEqual(e.length,0)?!1:Mi(e)}function Df(e){return g(e)?wi(e.anyOf):F(e)?Ff(e.const):!1}function Pr(e){return wi(e)}function Cr(e){return u.Create({"~kind":"TemplateLiteral"},{type:"string",pattern:e},{})}function Si(e,t,n=[]){return i.ShiftLeft(e,(r,o)=>Si(o,t,[...n,`${r}${t}`]),()=>n)}function Kf(e,t){return i.IsEqual(e.length,0)?[`${t}`]:Si(e,t)}function ji(e,t,n=[]){return i.ShiftLeft(t,(r,o)=>ji(e,o,[...n,...qi(e,r)]),()=>n)}function qi(e,t){return g(t)?ji(e,t.anyOf):F(t)?Kf(e,t.const):re()}function Li(e,t){return i.ShiftLeft(t,(n,r)=>Li(qi(e,n),r),()=>e)}function Nf(e){return e.map(t=>w(t))}function Uf(e){let t=Li([],e),n=Nf(t);return P(n)}function Gf(e){return i.IsEqual(e.length,0)?re():i.IsEqual(e.length,1)&&F(e[0])?e[0]:Uf(e)}function Sa(e){let t=Ln(e);return i.IsEqual(t.length,0)?Se():Pr(t)?Gf(t):Cr(e)}function Ai(e){let t=Sa(e);return Z(t)?Se():t}function he(e,t){let n="object",r={[e]:t};return u.Create({"~kind":"Record"},{type:n,patternProperties:r})}function Fi(e){return he(Ne,e)}function Di(e){return h({true:e,false:e})}function te(e,t={}){let[n,r,o]=[e,e.length,!1];return u.Create({"~kind":"Tuple"},{type:"array",additionalItems:o,items:n,minItems:r},t)}function N(e){return y(e,"Tuple")}function Ki(e){return u.Discard(e,["~kind","type","items","minItems","additionalItems"])}function zf(e){return u.Discard(e,["~readonly"])}function ja(e,t){return u.Update(zf(e),{},t)}function Ni(e,t,n,r){let o=f(e,t,n);return ja(o,r)}function Ui(e,t={}){return $("RemoveReadonly",[e],t)}function Gi(e,t={}){return ja(e,t)}function _f(e){return u.Discard(e,["~optional"])}function qa(e,t){return u.Update(_f(e),{},t)}function zi(e,t,n,r){let o=f(e,t,n);return qa(o,r)}function _i(e,t={}){return $("RemoveOptional",[e],t)}function Rr(e,t={}){return qa(e,t)}function La(e){return e.reduceRight((n,r,o)=>({[o]:r,...n}),{})}function Bi(e){let t=La(e.items);return h(t)}function Aa(e){return A(e)||N(e)}function Bf(e,t){return Ft(e)?!!Ft(t):!1}function Wf(e,t){return xe(e)?!!xe(t):!1}function Hf(e,t){let n=Bf(e,t),r=Wf(e,t),o=_([e,t]),m=Gi(Rr(o));return n&&r?At(jt(m)):n&&!r?At(m):!n&&r?jt(m):m}function Vf(e,t,n){return n in e?n in t?Hf(e[n],t[n]):e[n]:n in t?t[n]:K()}function Zf(e,t){return[...new Set([...i.Keys(e),...i.Keys(t)])].reduce((o,m)=>({...o,[m]:Vf(e,t,m)}),{})}function Wi(e){return A(e)?e.properties:N(e)?La(e.items):{}}function Hi(e,t){let n=Wi(e),r=Wi(t),o=Zf(n,r);return h(o)}function Jf(e,t){let n=Dn(e,t);return i.IsEqual(n,Fn)?e:i.IsEqual(n,Mr)||i.IsEqual(n,An)?t:K()}function Qf(e,t){let n=Aa(e),r=Aa(t);return n&&r?Hi(e,t):n&&!r?e:!n&&r?t:Jf(e,t)}function Vi(e,t){return Ke(e)||W(e)?e:Y(e)||Ke(t)||W(t)?t:Y(t)?e:Qf(e,t)}function Yf(e,t){return g(e)||g(t)}function Xf(e,t){let n=je(e),r=je(t);return Yf(n,r)?_([n,r]):Vi(n,r)}function Zi(e,t,n=[]){return i.ShiftLeft(t,(r,o)=>Zi(e,o,[...n,Xf(r,e)]),()=>i.IsEqual(n.length,0)?[e]:n)}function Ji(e,t,n=[]){return i.ShiftLeft(e,(r,o)=>Ji(o,t,[...n,...Kn([r],t)]),()=>n)}function Kn(e,t=[]){return i.ShiftLeft(e,(n,r)=>g(n)?Kn(r,Ji(n.anyOf,t)):Kn(r,Zi(n,t)),()=>t)}function ex(e,t){let n=le({},e,t);return E.IsExtendsTrueLike(n)?[]:[e]}function Qi(e,t,n=[]){return i.ShiftLeft(e,(r,o)=>Qi(o,t,[...n,...ex(r,t)]),()=>n)}function wr(e,t){let n=je(e),r=g(n)?n.anyOf:[n],o=Qi(r,t);return Ee(o)}function Ue(e,t,n){let r=_([e,t]),o=wr(n,e);return Ee([r,o])}function $e(e,t=[]){return i.ShiftLeft(e,(n,r)=>$e(r,[...t,w(n)]),()=>Ee(t))}function _(e){let t=Kn(e),n=Fa(t);return Ee(n)}function Ie(e){let t=Ai(e);return je(t)}function Ee(e){let t=Fa(e);return bt(t)}function je(e){return V(e)?Ue(e.if,e.then,e.else):de(e)?$e(e.enum):M(e)?_(e.allOf):Z(e)?Ie(e.pattern):g(e)?Ee(e.anyOf):e}function bt(e){return i.IsEqual(e.length,1)?e[0]:i.IsEqual(e.length,0)?K():P(e)}function Yi(e,t){let n=$e(e);return Tt(n,t)}function Xi(e,t){return he(ht,t)}function es(e,t){let n=_(e);return Tt(n,t)}function ts(e,t){return i.IsString(e)||i.IsNumber(e)?h({[e]:t}):i.IsEqual(e,!1)?h({false:t}):i.IsEqual(e,!0)?h({true:t}):h({})}function ns(e,t){return he(an,t)}function rs(e,t){return i.HasPropertyKey(e,"pattern")&&(i.IsString(e.pattern)||e.pattern instanceof RegExp)?he(e.pattern.toString(),t):he(Ne,t)}function as(e,t){let n=Ln(e);return Pr(n)?Tt(Ie(e),t):he(e,t)}function tx(e){return g(e)?on(e.anyOf):[e]}function on(e,t=[]){return i.ShiftLeft(e,(n,r)=>on(r,[...t,...tx(n)]),()=>t)}function nx(e){return e.some(t=>ge(t)||ee(t)||ye(t))}function rx(e,t){return i.IsEqual(nx(e),!0)?he(Ne,t):void 0}function ax(e,t){return e.reduce((n,r)=>F(r)&&(i.IsString(r.const)||i.IsNumber(r.const))?{...n,[r.const]:t}:n,{})}function ox(e,t){let n=ax(e,t);return h(n)}function os(e,t){let n=on(e),r=rx(n,t);return ne(r)?r:ox(n,t)}function Tt(e,t){return W(e)?Fi(t):we(e)?Di(t):de(e)?Yi(e.enum,t):ye(e)?Xi(e,t):M(e)?es(e.allOf,t):F(e)?ts(e.const,t):ee(e)?ns(e,t):g(e)?os(e.anyOf,t):ge(e)?rs(e,t):Z(e)?as(e.pattern,t):h({})}function Da(e,t,n){return O([e])?u.Update(Tt(e,t),{},n):Sr(e,t,n)}function is(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return Da(m,p,o)}var ht=`^${Er}$`,an=`^${Or}$`,Ne=`^${vr}$`;function Sr(e,t,n={}){return $("Record",[e,t],n)}function jr(e,t,n={}){return Da(e,t,n)}function ss(e,t){return he(e,t)}function qr(e){return i.IsEqual(e,Ne)?Se():i.IsEqual(e,ht)?Dt():i.IsEqual(e,an)?ke():Sa(e)}function qe(e){return i.Keys(e.patternProperties)[0]}function sn(e){let t=qe(e);return qr(t)}function be(e){return e.patternProperties[qe(e)]}function fe(e){return y(e,"Record")}function Nt(e){return u.Create({"~kind":"Rest"},{type:"rest",items:e},{})}function Et(e){return y(e,"Rest")}function Lr(e){return u.Create({"~kind":"This"},{$ref:"#"},e)}function Ar(e){return y(e,"This")}function mn(e){return u.Create({"~kind":"Undefined"},{type:"undefined"},e)}function pn(e){return y(e,"Undefined")}function Fr(e){return u.Create({"~kind":"Void"},{type:"void"},e)}function Ye(e){return y(e,"Void")}function sx(e,t){return i.IsEqual(e,"Array")?Pe(t[0]):i.IsEqual(e,"Capitalize")?Kr(t[0]):i.IsEqual(e,"ConstructorParameters")?_r(t[0]):i.IsEqual(e,"Evaluate")?mp(t[0]):i.IsEqual(e,"Exclude")?Br(t[0],t[1]):i.IsEqual(e,"Extract")?Wr(t[0],t[1]):i.IsEqual(e,"Index")?zn(t[0],t[1]):i.IsEqual(e,"InstanceType")?Hr(t[0]):i.IsEqual(e,"Lowercase")?Nr(t[0]):i.IsEqual(e,"NonNullable")?Vr(t[0]):i.IsEqual(e,"Omit")?Zr(t[0],t[1]):i.IsEqual(e,"Parameters")?Jr(t[0]):i.IsEqual(e,"Partial")?Qr(t[0]):i.IsEqual(e,"Pick")?Yr(t[0],t[1]):i.IsEqual(e,"Readonly")?Xr(t[0]):i.IsEqual(e,"KeyOf")?_n(t[0]):i.IsEqual(e,"Record")?Sr(t[0],t[1]):i.IsEqual(e,"Required")?ea(t[0]):i.IsEqual(e,"ReturnType")?ta(t[0]):i.IsEqual(e,"Uncapitalize")?Ur(t[0]):i.IsEqual(e,"Uppercase")?Gr(t[0]):Gn(st(e),t)}function Ut(){throw Error("Unreachable")}function ds(e,t=[]){return i.ShiftLeft(e,(n,r)=>ds(r,[...t,n[1]]),()=>t)}function mt(e){return i.IsEqual(e.length,3)?[e[0],...ds(e[1])]:[]}function ls(e){return Kt(e[0],e[2],e[4])}function fs(e){return Kt(e[0],e[2],e[2])}function xs(e){return Kt(e[0],se(),e[2])}function Is(e){return Kt(e,se(),se())}function ys(e){return mt(e)}function gs(e){return e[1]}function $s(e){return mt(e)}function bs(e){return e[1]}function Ts(e){return sx(e[0],e[1])}function hs(e){return null}function Es(e){return Se()}function ks(e){return ke()}function Os(e){return hr()}function vs(e){return mn()}function Ps(e){return tn()}function Cs(e){return Dt()}function Rs(e){return jn()}function Ms(e){return se()}function ws(e){return Xt()}function Ss(e){return h({})}function js(e){return K()}function qs(e){return rn()}function Ls(e){return Fr()}function As(e){return Lr()}function Fs(e){return w(BigInt(e))}function Ds(e){return w(i.IsEqual(e,"true"))}function Ks(e){return w(parseFloat(e))}function Ns(e){return w(e)}function Us(e){return e[1]}function Gs(e){return w(e)}function zs(e){return i.IsEqual(e.length,3)?[e[0],e[1],...e[2]]:[e[0]]}function _s(e){return e[1]}function Bs(e){return Dr(e)}function Ws(e){return i.IsEqual(e.length,6)?qt(e[1],e[3],e[5]):qt(e[1],e[3],se())}function Hs(e){return e.length>0}function Vs(e){return e.reduce((t,n)=>i.IsEqual(n.length,3)?[...t,[n[1]]]:[...t,[]],[])}function Zs(e){return i.IsEqual(e.length,6)?[e[1],e[3],e[5]]:[]}function Js(e){return i.IsArray(e)&&i.IsEqual(e.length,3)?e[1]:e}function Qs(e){return i.IsEqual(e.length,2)?e[1]:[]}function ms(e,t){return t.reduce((n,r)=>{let o=r;return i.IsEqual(o.length,1)?zn(n,o[0]):i.IsEqual(o.length,0)?Pe(n):Ut()},e)}function ps(e,t){return i.IsEqual(t.length,3)?zr(e,t[0],t[1],t[2]):e}function mx(e,t){return i.IsArray(t)&&i.IsEqual(t.length,0)?e:na(e,t)}function Ys(e){let[t,n,r,o,m]=e;return mx(ps(t?_n(ms(n,r)):ms(n,r),o),m)}function Ka(e,t){return i.IsEqual(t.length,3)?(()=>{let[n,r,o]=t,m=Ka(r,o);if(i.IsEqual(n,"&"))return M(m)?Te([e,...m.allOf]):Te([e,m]);if(i.IsEqual(n,"|"))return g(m)?P([e,...m.anyOf]):P([e,m]);Ut()})():e}function Xs(e){let[t,n]=e;return Ka(t,n)}function em(e){let[t,n]=e;return Ka(t,n)}function tm(e){return sp(e[1])}function nm(e){return e[1]}function rm(e){return gt(e[0],e[2])}function am(e){return i.IsEqual(e.length,4)?Mn(e[1],e[3]):i.IsEqual(e.length,2)?Mn(e[1],se()):Ut()}function om(e){return`${e}`}function im(e){return ye(e[3])?ht:ee(e[3])?an:$t(e[3])?Ne:ge(e[3])?Ne:Ut()}function sm(e){return e.length>0}function mm(e){return e.length>0}function pm(e){let[t,n,r,o,m]=e;return{[n]:t&&r?Je(He(m)):t&&!r?Je(m):!t&&r?He(m):m}}function um(e){return mt(e)}function cm(e){return e.reduce((t,n)=>i.HasPropertyKey(n,ht)||i.HasPropertyKey(n,an)||i.HasPropertyKey(n,Ne)?[t[0],u.Assign(t[1],n)]:[u.Assign(t[0],n),t[1]],[{},{}])}function dm(e){return cm(e[1])}function lm(e){let[t,n]=e,r=i.IsEqual(i.Keys(n).length,0)?{}:{patternProperties:n};return h(t,r)}function fm(e){return i.IsEqual(e.length,5)?Je(He(e[4])):i.IsEqual(e.length,3)?e[2]:i.IsEqual(e.length,4)?i.IsEqual(e[2],"readonly")?Je(e[3]):He(e[3]):Ut()}function xm(e){if(!i.IsArray(e)||!i.IsEqual(e.length,3))return e;let[t,n,r]=e;return t&&r?Je(He(n)):t&&!r?Je(n):!t&&r?He(n):n}function Im(e){return i.IsEqual(e.length,2)?Nt(e[1]):i.IsEqual(e.length,1)?e[0]:Ut()}function ym(e){return mt(e)}function gm(e){return te(e[1])}function $m(e){return Je(He(e[4]))}function bm(e){return Je(e[3])}function Tm(e){return He(e[3])}function hm(e){return e[2]}function Em(e){return i.IsEqual(e.length,2)?Nt(e[1]):i.IsEqual(e.length,1)?e[0]:Ut()}function km(e){return mt(e)}function Om(e){return We(e[1],e[4])}function vm(e){return Be(e[2],e[5])}function us(e,t){return i.IsEqual(e,"remove")?Ui(t):i.IsEqual(e,"add")?Je(t):t}function Pm(e){return i.IsEqual(e.length,2)&&i.IsEqual(e[0],"-")?"remove":i.IsEqual(e.length,2)&&i.IsEqual(e[0],"+")||i.IsEqual(e.length,1)?"add":"none"}function cs(e,t){return i.IsEqual(e,"remove")?_i(t):i.IsEqual(e,"add")?He(t):t}function Cm(e){return i.IsEqual(e.length,2)&&i.IsEqual(e[0],"-")?"remove":i.IsEqual(e.length,2)&&i.IsEqual(e[0],"+")||i.IsEqual(e.length,1)?"add":"none"}function Rm(e){return i.IsEqual(e.length,2)?[e[1]]:[]}function Mm(e){return i.IsArray(e[6])&&i.IsEqual(e[6].length,1)?Nn(qn(e[3]),e[5],e[6][0],us(e[1],cs(e[8],e[10]))):Nn(qn(e[3]),e[5],st(e[3]),us(e[1],cs(e[8],e[10])))}function wm(e){return st(e)}function Sm(e){return BigInt(e)}function jm(e){return parseFloat(e)}function qm(e){return i.IsEqual(e,"true")}function Lm(e){return null}function Am(e){return{[e[0]]:e[2]}}function Fm(e){return mt(e)}function px(e){return e.reduce((t,n)=>u.Assign(t,n),{})}function Dm(e){return px(e[1])}function Km(e){return mt(e)}function Nm(e){return e[1]}function Um(e){return jn()}function Gm(e){return Se()}function zm(e){return ke()}function _m(e){return Dt()}function Bm(e){return K()}function Wm(e){return w(e)}function Hm(e){return P(e[1])}function Vm(e){return e.length===3?[...e[0],...e[2]]:e.length===1?[...e[0]]:[]}function Zm(e){return[e[0],...e[1]]}function Jm(e){return e[1]}function Qm(e){return mt(e)}function Ym(e){return i.IsEqual(e.length,2)?e[1]:[]}function Xm(e){let t=e[2],n=e[3],[r,o]=e[4],m=i.IsEqual(i.Keys(o).length,0)?{}:{patternProperties:o};return{[e[1]]:gt(t,Un(n,r,m))}}function ep(e){let t=e[2],[n,r]=e[3],o=i.IsEqual(i.Keys(r).length,0)?{}:{patternProperties:r};return{[e[1]]:Un(t,n,o)}}function tp(e){return{[e[1]]:gt(e[2],e[4])}}function np(e){return{[e[1]]:e[3]}}function rp(e){return null}function ap(e){return mt(e)}function op(e){return e[1]}function ip(e){let[t,n]=[e[0],e[1]];return pp(u.Assign(t,cm(n)[0]))}function Bn(e){return j(e.length,2)}function R(e,t,n){return Bn(e)?t(e[0],e[1]):n()}function dx(e,t){return j(t.indexOf(e),0)?[e,t.slice(e.length)]:[]}function H(e,t){for(let n=0;n<e.length;n++){let r=dx(e[n],t);if(Bn(r))return r}return[]}function Na(e,t){return Array.from({length:t-e+1},(n,r)=>String.fromCharCode(e+r))}var up=[...Na(97,122),...Na(65,90)],Ua="0",Ga=Na(49,57),un=[Ua,...Ga],cp=" ",cn=`
2
+ `;var kt="_",ra=".",dp="$",aa="-";var lp="//",fp="/*",fx="*/";function xp(e){let t=e.indexOf(fx);return j(t,-1)?"":e.slice(t+2)}function Ip(e){let t=e.indexOf(cn);return j(t,-1)?"":e.slice(t)}function xx(e){return e.replace(/^[ \t\r\f\v]+/,"")}function oa(e){let t=xx(e);return t.startsWith(fp)?oa(xp(t.slice(2))):t.startsWith(lp)?oa(Ip(t.slice(2))):t}function me(e){let t=e.trimStart();return t.startsWith(fp)?me(xp(t.slice(2))):t.startsWith(lp)?me(Ip(t.slice(2))):t}function ia(e,t){return R(H([e],t),(n,r)=>[n,r],()=>["",t])}function Ix(e,t){return e.includes(t)}function dn(e,t,n,r=""){return R(H(e,n),(o,m)=>Ix(t,o)?dn(e,t,m,r):dn(e,t,m,`${r}${o}`),()=>[r,n])}function yx(e){return H(Ga,e)}var gx=[...un,kt];function $x(e){return dn(gx,[kt],e)}function bx(e){return R(H([Ua],e),(t,n)=>[t,n],()=>R(yx(e),(t,n)=>R($x(n),(r,o)=>[`${t}${r}`,o],()=>[]),()=>[]))}function sa(e){return bx(me(e))}function Tx(e){return ia(aa,e)}function hx(e){return R(Tx(e),(t,n)=>R(sa(n),(r,o)=>[`${t}${r}`,o],()=>[]),()=>[])}function yp(e){return hx(me(e))}function Ex(e){return R(yp(e),(t,n)=>R(H(["n"],n),(r,o)=>[`${t}`,o],()=>[]),()=>[])}function za(e){return Ex(e)}function _a(e,t){return H([e],t)}function c(e,t){return j(e,"")?["",t]:e.startsWith(cn)?_a(e,oa(t)):e.startsWith(cp)?_a(e,t):_a(e,me(t))}var gp=[...up,kt,dp];function kx(e){return H(gp,e)}var Ox=[...gp,...un];function $p(e,t=""){return R(H(Ox,e),(n,r)=>$p(r,`${t}${n}`),()=>[t,e])}function vx(e){return R(kx(e),(t,n)=>R($p(n),(r,o)=>[`${t}${r}`,o],()=>[]),()=>[])}function J(e){return vx(me(e))}var Px=[...un,kt];function Cx(e){return Bn(H([ra],e))}function bp(e){return R(dn(Px,[kt],e),(t,n)=>j(t,"")?[]:[t,n],()=>[])}function Rx(e){return R(H([ra],e),(t,n)=>R(bp(n),(r,o)=>[`0${t}${r}`,o],()=>[]),()=>[])}function Mx(e){return R(sa(e),(t,n)=>R(H([ra],n),(r,o)=>R(bp(o),(m,p)=>[`${t}${r}${m}`,p],()=>[`${t}`,o]),()=>[`${t}`,n]),()=>[])}function wx(e){return Cx(e)?Rx(e):Mx(e)}function Tp(e){return wx(me(e))}function Sx(e){return ia(aa,e)}function jx(e){return R(Sx(e),(t,n)=>R(Tp(n),(r,o)=>[`${t}${r}`,o],()=>[]),()=>[])}function ma(e){return jx(me(e))}function qx(e){return j(e,"")?[]:[e.slice(0,1),e.slice(1)]}function hp(e,t){return xr(e,(n,r)=>t.startsWith(n)?!0:hp(r,t),()=>!1)}function Ot(e,t,n=""){return R(qx(t),(r,o)=>hp(e,t)?[n,t]:Ot(e,o,`${n}${r}`),()=>[])}function Lx(e,t,n){return R(H([e],n),(r,o)=>R(Ot([t],o),(m,p)=>R(H([t],p),(d,l)=>[`${m}`,l],()=>[]),()=>[]),()=>[])}function Ax(e,t,n){return R(H([e],n),(r,o)=>R(Ot([cn,t],o),(m,p)=>R(H([t],p),(d,l)=>[`${m}`,l],()=>[]),()=>[]),()=>[])}function Ep(e,t,n,r){return n?Lx(e,t,me(r)):Ax(e,t,me(r))}function Fx(e,t){return H(e,t)}function Dx(e,t){return Ep(e,e,!1,t)}function Kx(e,t){return R(Fx(e,t),(n,r)=>Dx(n,`${n}${r}`),()=>[])}function pa(e,t){return Kx(e,me(t))}function kp(e,t){return R(Ot(e,t),(n,r)=>j(n,"")?[]:[n,r],()=>[])}var a=(e,t,n=()=>[])=>e.length===2?t(e):n(),Ux=e=>a(a(J(e),([t,n])=>a(c("extends",n),([r,o])=>a(q(o),([m,p])=>a(c("=",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[ls(t),n]),Gx=e=>a(a(J(e),([t,n])=>a(c("extends",n),([r,o])=>a(q(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[fs(t),n]),zx=e=>a(a(J(e),([t,n])=>a(c("=",n),([r,o])=>a(q(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[xs(t),n]),_x=e=>a(J(e),([t,n])=>[Is(t),n]),Pp=e=>a(a(Ux(e),([t,n])=>[t,n],()=>a(Gx(e),([t,n])=>[t,n],()=>a(zx(e),([t,n])=>[t,n],()=>a(_x(e),([t,n])=>[t,n],()=>[])))),([t,n])=>[t,n]),Cp=(e,t=[])=>a(a(c(",",e),([n,r])=>a(Pp(r),([o,m])=>[[n,o],m])),([n,r])=>Cp(r,[...t,n]),()=>[t,e]),Bx=e=>a(a(a(Pp(e),([t,n])=>a(Cp(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[ys(t),n]),Ha=e=>a(a(c("<",e),([t,n])=>a(Bx(n),([r,o])=>a(c(">",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[gs(t),n]),Rp=(e,t=[])=>a(a(c(",",e),([n,r])=>a(q(r),([o,m])=>[[n,o],m])),([n,r])=>Rp(r,[...t,n]),()=>[t,e]),Wx=e=>a(a(a(q(e),([t,n])=>a(Rp(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[$s(t),n]),Hx=e=>a(a(c("<",e),([t,n])=>a(Wx(n),([r,o])=>a(c(">",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[bs(t),n]),Vx=e=>a(a(J(e),([t,n])=>a(Hx(n),([r,o])=>[[t,r],o])),([t,n])=>[Ts(t),n]),Mp=e=>a(a(a(c(";",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[hs(t),n]),wp=e=>a(c("string",e),([t,n])=>[Es(t),n]),Sp=e=>a(c("number",e),([t,n])=>[ks(t),n]),Zx=e=>a(c("boolean",e),([t,n])=>[Os(t),n]),Jx=e=>a(c("undefined",e),([t,n])=>[vs(t),n]),Qx=e=>a(c("null",e),([t,n])=>[Ps(t),n]),jp=e=>a(c("integer",e),([t,n])=>[Cs(t),n]),Yx=e=>a(c("bigint",e),([t,n])=>[Rs(t),n]),Xx=e=>a(c("unknown",e),([t,n])=>[Ms(t),n]),eI=e=>a(c("any",e),([t,n])=>[ws(t),n]),tI=e=>a(c("object",e),([t,n])=>[Ss(t),n]),nI=e=>a(c("never",e),([t,n])=>[js(t),n]),qp=e=>a(c("symbol",e),([t,n])=>[qs(t),n]),rI=e=>a(c("void",e),([t,n])=>[Ls(t),n]),aI=e=>a(c("this",e),([t,n])=>[As(t),n]),oI=e=>a(a(c("${",e),([t,n])=>a(q(n),([r,o])=>a(c("}",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Us(t),n]),Ba=e=>a(Ot(["${","`"],e),([t,n])=>[Gs(t),n]),Lp=e=>a(a(a(Ba(e),([t,n])=>a(oI(n),([r,o])=>a(Lp(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a(a(Ba(e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a(a(Ba(e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>[]))),([t,n])=>[zs(t),n]),Va=e=>a(a(c("`",e),([t,n])=>a(Lp(n),([r,o])=>a(c("`",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[_s(t),n]),iI=e=>a(Va(e),([t,n])=>[Bs(t),n]),sI=e=>a(a(a(c("if",e),([t,n])=>a(q(n),([r,o])=>a(c("then",o),([m,p])=>a(q(p),([d,l])=>a(c("else",l),([C,v])=>a(q(v),([B,pe])=>[[t,r,m,d,C,B],pe])))))),([t,n])=>[t,n],()=>a(a(c("if",e),([t,n])=>a(q(n),([r,o])=>a(c("then",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[t,n],()=>[])),([t,n])=>[Ws(t),n]),mI=e=>a(za(e),([t,n])=>[Fs(t),n]),pI=e=>a(a(c("true",e),([t,n])=>[t,n],()=>a(c("false",e),([t,n])=>[t,n],()=>[])),([t,n])=>[Ds(t),n]),uI=e=>a(ma(e),([t,n])=>[Ks(t),n]),cI=e=>a(pa(["'",'"'],e),([t,n])=>[Ns(t),n]),dI=e=>a(a(a(c("keyof",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Hs(t),n]),Ap=(e,t=[])=>a(a(a(c("[",e),([n,r])=>a(q(r),([o,m])=>a(c("]",m),([p,d])=>[[n,o,p],d]))),([n,r])=>[n,r],()=>a(a(c("[",e),([n,r])=>a(c("]",r),([o,m])=>[[n,o],m])),([n,r])=>[n,r],()=>[])),([n,r])=>Ap(r,[...t,n]),()=>[t,e]),lI=e=>a(Ap(e),([t,n])=>[Vs(t),n]),fI=e=>a(a(a(c("extends",e),([t,n])=>a(q(n),([r,o])=>a(c("?",o),([m,p])=>a(q(p),([d,l])=>a(c(":",l),([C,v])=>a(q(v),([B,pe])=>[[t,r,m,d,C,B],pe])))))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Zs(t),n]),xI=e=>a(a(a(c("(",e),([t,n])=>a(q(n),([r,o])=>a(c(")",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a(wp(e),([t,n])=>[t,n],()=>a(Sp(e),([t,n])=>[t,n],()=>a(Zx(e),([t,n])=>[t,n],()=>a(Jx(e),([t,n])=>[t,n],()=>a(Qx(e),([t,n])=>[t,n],()=>a(jp(e),([t,n])=>[t,n],()=>a(Yx(e),([t,n])=>[t,n],()=>a(Xx(e),([t,n])=>[t,n],()=>a(eI(e),([t,n])=>[t,n],()=>a(tI(e),([t,n])=>[t,n],()=>a(nI(e),([t,n])=>[t,n],()=>a(qp(e),([t,n])=>[t,n],()=>a(rI(e),([t,n])=>[t,n],()=>a(aI(e),([t,n])=>[t,n],()=>a(mI(e),([t,n])=>[t,n],()=>a(pI(e),([t,n])=>[t,n],()=>a(uI(e),([t,n])=>[t,n],()=>a(cI(e),([t,n])=>[t,n],()=>a(iI(e),([t,n])=>[t,n],()=>a(sI(e),([t,n])=>[t,n],()=>a(vI(e),([t,n])=>[t,n],()=>a(RI(e),([t,n])=>[t,n],()=>a(LI(e),([t,n])=>[t,n],()=>a(qI(e),([t,n])=>[t,n],()=>a(KI(e),([t,n])=>[t,n],()=>a(Vx(e),([t,n])=>[t,n],()=>a(NI(e),([t,n])=>[t,n],()=>[])))))))))))))))))))))))))))),([t,n])=>[Js(t),n]),II=e=>a(a(a(c("with",e),([t,n])=>a(Xp(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Qs(t),n]),Fp=e=>a(a(dI(e),([t,n])=>a(xI(n),([r,o])=>a(lI(o),([m,p])=>a(fI(p),([d,l])=>a(II(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[Ys(t),n]),Dp=e=>a(a(a(c("&",e),([t,n])=>a(Fp(n),([r,o])=>a(Dp(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[t,n]),Kp=e=>a(a(Fp(e),([t,n])=>a(Dp(n),([r,o])=>[[t,r],o])),([t,n])=>[Xs(t),n]),Np=e=>a(a(a(c("|",e),([t,n])=>a(Kp(n),([r,o])=>a(Np(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[t,n]),ua=e=>a(a(Kp(e),([t,n])=>a(Np(n),([r,o])=>[[t,r],o])),([t,n])=>[em(t),n]),yI=e=>a(a(c("readonly",e),([t,n])=>a(ua(n),([r,o])=>[[t,r],o])),([t,n])=>[tm(t),n]),gI=e=>a(a(c("|",e),([t,n])=>a(ua(n),([r,o])=>[[t,r],o])),([t,n])=>[nm(t),n]),$I=e=>a(a(Ha(e),([t,n])=>a(c("=",n),([r,o])=>a(q(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[rm(t),n]),bI=e=>a(a(a(c("infer",e),([t,n])=>a(J(n),([r,o])=>a(c("extends",o),([m,p])=>a(ua(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[t,n],()=>a(a(c("infer",e),([t,n])=>a(J(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>[])),([t,n])=>[am(t),n]),q=e=>a(a(bI(e),([t,n])=>[t,n],()=>a(gI(e),([t,n])=>[t,n],()=>a(yI(e),([t,n])=>[t,n],()=>a(ua(e),([t,n])=>[t,n],()=>[])))),([t,n])=>[t,n]),TI=e=>a(ma(e),([t,n])=>[om(t),n]),hI=e=>a(J(e),([t,n])=>[t,n]),EI=e=>a(pa(["'",'"'],e),([t,n])=>[t,n]),kI=e=>a(a(c("[",e),([t,n])=>a(J(n),([r,o])=>a(c(":",o),([m,p])=>a(a(jp(p),([d,l])=>[d,l],()=>a(Sp(p),([d,l])=>[d,l],()=>a(wp(p),([d,l])=>[d,l],()=>a(qp(p),([d,l])=>[d,l],()=>[])))),([d,l])=>a(c("]",l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[im(t),n]),Up=e=>a(a(TI(e),([t,n])=>[t,n],()=>a(hI(e),([t,n])=>[t,n],()=>a(EI(e),([t,n])=>[t,n],()=>a(kI(e),([t,n])=>[t,n],()=>[])))),([t,n])=>[t,n]),Gp=e=>a(a(a(c("readonly",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[sm(t),n]),zp=e=>a(a(a(c("?",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[mm(t),n]),_p=e=>a(a(Gp(e),([t,n])=>a(Up(n),([r,o])=>a(zp(o),([m,p])=>a(c(":",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[pm(t),n]),ca=e=>a(a(a(c(",",e),([t,n])=>a(c(`
3
+ `,n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c(";",e),([t,n])=>a(c(`
4
+ `,n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c(",",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a(a(c(";",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a(a(c(`
5
+ `,e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>[]))))),([t,n])=>[t,n]),Bp=(e,t=[])=>a(a(ca(e),([n,r])=>a(_p(r),([o,m])=>[[n,o],m])),([n,r])=>Bp(r,[...t,n]),()=>[t,e]),OI=e=>a(a(a(_p(e),([t,n])=>a(Bp(n),([r,o])=>a(a(ca(o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[um(t),n]),Za=e=>a(a(c("{",e),([t,n])=>a(OI(n),([r,o])=>a(c("}",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[dm(t),n]),vI=e=>a(Za(e),([t,n])=>[lm(t),n]),PI=e=>a(a(a(J(e),([t,n])=>a(c("?",n),([r,o])=>a(c(":",o),([m,p])=>a(c("readonly",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[t,n],()=>a(a(J(e),([t,n])=>a(c(":",n),([r,o])=>a(c("readonly",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[t,n],()=>a(a(J(e),([t,n])=>a(c("?",n),([r,o])=>a(c(":",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[t,n],()=>a(a(J(e),([t,n])=>a(c(":",n),([r,o])=>a(q(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>[])))),([t,n])=>[fm(t),n]),Op=e=>a(a(PI(e),([t,n])=>[t,n],()=>a(a(Gp(e),([t,n])=>a(q(n),([r,o])=>a(zp(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>[])),([t,n])=>[xm(t),n]),Wp=e=>a(a(a(c("...",e),([t,n])=>a(Op(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(Op(e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>[])),([t,n])=>[Im(t),n]),Hp=(e,t=[])=>a(a(c(",",e),([n,r])=>a(Wp(r),([o,m])=>[[n,o],m])),([n,r])=>Hp(r,[...t,n]),()=>[t,e]),CI=e=>a(a(a(Wp(e),([t,n])=>a(Hp(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[ym(t),n]),RI=e=>a(a(c("[",e),([t,n])=>a(CI(n),([r,o])=>a(c("]",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[gm(t),n]),MI=e=>a(a(J(e),([t,n])=>a(c("?",n),([r,o])=>a(c(":",o),([m,p])=>a(c("readonly",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[$m(t),n]),wI=e=>a(a(J(e),([t,n])=>a(c(":",n),([r,o])=>a(c("readonly",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[bm(t),n]),SI=e=>a(a(J(e),([t,n])=>a(c("?",n),([r,o])=>a(c(":",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[Tm(t),n]),jI=e=>a(a(J(e),([t,n])=>a(c(":",n),([r,o])=>a(q(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[hm(t),n]),vp=e=>a(a(MI(e),([t,n])=>[t,n],()=>a(wI(e),([t,n])=>[t,n],()=>a(SI(e),([t,n])=>[t,n],()=>a(jI(e),([t,n])=>[t,n],()=>[])))),([t,n])=>[t,n]),Vp=e=>a(a(a(c("...",e),([t,n])=>a(vp(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(vp(e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>[])),([t,n])=>[Em(t),n]),Zp=(e,t=[])=>a(a(c(",",e),([n,r])=>a(Vp(r),([o,m])=>[[n,o],m])),([n,r])=>Zp(r,[...t,n]),()=>[t,e]),Jp=e=>a(a(a(Vp(e),([t,n])=>a(Zp(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[km(t),n]),qI=e=>a(a(c("(",e),([t,n])=>a(Jp(n),([r,o])=>a(c(")",o),([m,p])=>a(c("=>",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[Om(t),n]),LI=e=>a(a(c("new",e),([t,n])=>a(c("(",n),([r,o])=>a(Jp(o),([m,p])=>a(c(")",p),([d,l])=>a(c("=>",l),([C,v])=>a(q(v),([B,pe])=>[[t,r,m,d,C,B],pe])))))),([t,n])=>[vm(t),n]),AI=e=>a(a(a(c("+",e),([t,n])=>a(c("readonly",n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c("-",e),([t,n])=>a(c("readonly",n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c("readonly",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])))),([t,n])=>[Pm(t),n]),FI=e=>a(a(a(c("+",e),([t,n])=>a(c("?",n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c("-",e),([t,n])=>a(c("?",n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c("?",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])))),([t,n])=>[Cm(t),n]),DI=e=>a(a(a(c("as",e),([t,n])=>a(q(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Rm(t),n]),KI=e=>a(a(c("{",e),([t,n])=>a(AI(n),([r,o])=>a(c("[",o),([m,p])=>a(J(p),([d,l])=>a(c("in",l),([C,v])=>a(q(v),([B,pe])=>a(DI(pe),([at,ve])=>a(c("]",ve),([Ge,Le])=>a(FI(Le),([ut,ct])=>a(c(":",ct),([Ct,ze])=>a(q(ze),([ot,dt])=>a(Mp(dt),([or,ha])=>a(c("}",ha),([bn,lt])=>[[t,r,m,d,C,B,at,Ge,ut,Ct,ot,or,bn],lt]))))))))))))),([t,n])=>[Mm(t),n]),NI=e=>a(J(e),([t,n])=>[wm(t),n]),UI=e=>a(za(e),([t,n])=>[Sm(t),n]),GI=e=>a(ma(e),([t,n])=>[jm(t),n]),zI=e=>a(a(c("true",e),([t,n])=>[t,n],()=>a(c("false",e),([t,n])=>[t,n],()=>[])),([t,n])=>[qm(t),n]),_I=e=>a(pa(['"',"'"],e),([t,n])=>[t,n]),BI=e=>a(c("null",e),([t,n])=>[Lm(t),n]),WI=e=>a(c("undefined",e),([t,n])=>[void 0,n]),Qp=e=>a(a(Up(e),([t,n])=>a(c(":",n),([r,o])=>a(Ja(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Am(t),n]),Yp=(e,t=[])=>a(a(ca(e),([n,r])=>a(Qp(r),([o,m])=>[[n,o],m])),([n,r])=>Yp(r,[...t,n]),()=>[t,e]),HI=e=>a(a(a(Qp(e),([t,n])=>a(Yp(n),([r,o])=>a(a(ca(o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Fm(t),n]),Xp=e=>a(a(c("{",e),([t,n])=>a(HI(n),([r,o])=>a(c("}",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Dm(t),n]),eu=(e,t=[])=>a(a(c(",",e),([n,r])=>a(Ja(r),([o,m])=>[[n,o],m])),([n,r])=>eu(r,[...t,n]),()=>[t,e]),VI=e=>a(a(a(Ja(e),([t,n])=>a(eu(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Km(t),n]),ZI=e=>a(a(c("[",e),([t,n])=>a(VI(n),([r,o])=>a(c("]",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Nm(t),n]),Ja=e=>a(a(UI(e),([t,n])=>[t,n],()=>a(GI(e),([t,n])=>[t,n],()=>a(zI(e),([t,n])=>[t,n],()=>a(_I(e),([t,n])=>[t,n],()=>a(BI(e),([t,n])=>[t,n],()=>a(WI(e),([t,n])=>[t,n],()=>a(Xp(e),([t,n])=>[t,n],()=>a(ZI(e),([t,n])=>[t,n],()=>[])))))))),([t,n])=>[t,n]),JI=e=>a(c("-?(?:0|[1-9][0-9]*)n",e),([t,n])=>[Um(t),n]),QI=e=>a(c(".*",e),([t,n])=>[Gm(t),n]),YI=e=>a(c("-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?",e),([t,n])=>[zm(t),n]),XI=e=>a(c("-?(?:0|[1-9][0-9]*)",e),([t,n])=>[_m(t),n]),ey=e=>a(c("(?!)",e),([t,n])=>[Bm(t),n]),ty=e=>a(kp(["-?(?:0|[1-9][0-9]*)n",".*","-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?","-?(?:0|[1-9][0-9]*)","(?!)","(",")","$","|"],e),([t,n])=>[Wm(t),n]),ny=e=>a(a(JI(e),([t,n])=>[t,n],()=>a(QI(e),([t,n])=>[t,n],()=>a(YI(e),([t,n])=>[t,n],()=>a(XI(e),([t,n])=>[t,n],()=>a(ey(e),([t,n])=>[t,n],()=>a(ry(e),([t,n])=>[t,n],()=>a(ty(e),([t,n])=>[t,n],()=>[]))))))),([t,n])=>[t,n]),ry=e=>a(a(c("(",e),([t,n])=>a(Qa(n),([r,o])=>a(c(")",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Hm(t),n]),tu=e=>a(a(a(Wa(e),([t,n])=>a(c("|",n),([r,o])=>a(tu(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a(a(Wa(e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[]))),([t,n])=>[Vm(t),n]),Wa=e=>a(a(ny(e),([t,n])=>a(Qa(n),([r,o])=>[[t,r],o])),([t,n])=>[Zm(t),n]),Qa=e=>a(a(tu(e),([t,n])=>[t,n],()=>a(Wa(e),([t,n])=>[t,n],()=>[])),([t,n])=>[t,n]),Ri=e=>a(a(c("^",e),([t,n])=>a(Qa(n),([r,o])=>a(c("$",o),([m,p])=>[[t,r,m],p]))),([t,n])=>[Jm(t),n]),nu=(e,t=[])=>a(a(c(",",e),([n,r])=>a(q(r),([o,m])=>[[n,o],m])),([n,r])=>nu(r,[...t,n]),()=>[t,e]),ay=e=>a(a(a(q(e),([t,n])=>a(nu(n),([r,o])=>a(a(c(",",o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Qm(t),n]),ru=e=>a(a(a(c("extends",e),([t,n])=>a(ay(n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[Ym(t),n]),oy=e=>a(a(c("interface",e),([t,n])=>a(J(n),([r,o])=>a(Ha(o),([m,p])=>a(ru(p),([d,l])=>a(Za(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[Xm(t),n]),iy=e=>a(a(c("interface",e),([t,n])=>a(J(n),([r,o])=>a(ru(o),([m,p])=>a(Za(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[ep(t),n]),sy=e=>a(a(c("type",e),([t,n])=>a(J(n),([r,o])=>a(Ha(o),([m,p])=>a(c("=",p),([d,l])=>a(q(l),([C,v])=>[[t,r,m,d,C],v]))))),([t,n])=>[tp(t),n]),my=e=>a(a(c("type",e),([t,n])=>a(J(n),([r,o])=>a(c("=",o),([m,p])=>a(q(p),([d,l])=>[[t,r,m,d],l])))),([t,n])=>[np(t),n]),py=e=>a(a(a(c("export",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[rp(t),n]),au=e=>a(a(a(c(";",e),([t,n])=>a(c(`
6
+ `,n),([r,o])=>[[t,r],o])),([t,n])=>[t,n],()=>a(a(c(";",e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>a(a(c(`
7
+ `,e),([t,n])=>[[t],n]),([t,n])=>[t,n],()=>[]))),([t,n])=>[t,n]),ou=(e,t=[])=>a(a(au(e),([n,r])=>a(Ya(r),([o,m])=>[[n,o],m])),([n,r])=>ou(r,[...t,n]),()=>[t,e]),uy=e=>a(a(a(Ya(e),([t,n])=>a(ou(n),([r,o])=>a(a(au(o),([m,p])=>[[m],p],()=>[[],o]),([m,p])=>[[t,r,m],p]))),([t,n])=>[t,n],()=>a([[],e],([t,n])=>[t,n],()=>[])),([t,n])=>[ap(t),n]),Ya=e=>a(a(py(e),([t,n])=>a(a(oy(n),([r,o])=>[r,o],()=>a(iy(n),([r,o])=>[r,o],()=>a(sy(n),([r,o])=>[r,o],()=>a(my(n),([r,o])=>[r,o],()=>[])))),([r,o])=>a(Mp(o),([m,p])=>[[t,r,m],p]))),([t,n])=>[op(t),n]),cy=e=>a(a(Ya(e),([t,n])=>a(uy(n),([r,o])=>[[t,r],o])),([t,n])=>[ip(t),n]),iu=e=>a(a(cy(e),([t,n])=>[t,n],()=>a($I(e),([t,n])=>[t,n],()=>a(q(e),([t,n])=>[t,n],()=>[]))),([t,n])=>[t,n]);function su(e){let t=Va(`\`${e}\``);return i.IsEqual(t.length,2)?t[0]:re()}function ly(e){return e.join("|")}function fy(e){return e.slice(1,e.length-1)}function xy(e,t,n){return vt(t,`${n}${e}`)}function Iy(e,t){return vt(e,`${t}${Ei}`)}function yy(e,t){return vt(e,`${t}${Er}`)}function gy(e,t){return vt(e,`${t}${Or}`)}function $y(e,t){return Wn(P([w("false"),w("true")]),e,t)}function by(e,t){return vt(e,`${t}${vr}`)}function Ty(e,t,n){return vt(t,`${n}${fy(e)}`)}function hy(e,t,n){let r=Hn(e,{});return Wn(r,t,n)}function Ey(e,t,n){let r=$e(e);return Wn(r,t,n)}function mu(e,t,n,r=[]){return i.ShiftLeft(e,(o,m)=>mu(m,t,n,[...r,Wn(o,[],"")]),()=>vt(t,`${n}(${ly(r)})`))}function Wn(e,t,n){return de(e)?Ey(e.enum,t,n):ye(e)?yy(t,n):F(e)?xy(e.const,t,n):Qe(e)?Iy(t,n):we(e)?$y(t,n):ee(e)?gy(t,n):ge(e)?by(t,n):Z(e)?Ty(e.pattern,t,n):uu(e)?hy(e.parameters[0],t,n):g(e)?mu(e.anyOf,t,n):ai}function vt(e,t){return i.ShiftLeft(e,(n,r)=>Wn(n,r,t),()=>t)}function ky(e){return`^${vt(e,"")}$`}function pu(e){let t=ky(e);return Cr(t)}function Hn(e,t){return O(e)?u.Update(pu(e),{},t):Dr(e,t)}function cu(e,t,n,r){let o=Ce(e,t,n);return Hn(o,r)}function Dr(e,t={}){return $("TemplateLiteral",[e],t)}function uu(e){return ne(e)&&i.HasPropertyKey(e,"action")&&i.IsEqual(e.action,"TemplateLiteral")}function du(e){return Hn(e,{})}function Oy(e){let t=su(e);return du(t)}function lu(e,t={}){let n=i.IsString(e)?Oy(e):du(e);return u.Update(n,{},t)}function Z(e){return y(e,"TemplateLiteral")}var E={};wt(E,{ExtendsFalse:()=>k,ExtendsTrue:()=>I,ExtendsUnion:()=>Xa,IsExtendsFalse:()=>vy,IsExtendsTrue:()=>xu,IsExtendsTrueLike:()=>Xe,IsExtendsUnion:()=>fu,Match:()=>Q});function Xa(e){return u.Create({"~kind":"ExtendsUnion"},{inferred:e})}function fu(e){return i.IsObject(e)&&i.HasPropertyKey(e,"~kind")&&i.HasPropertyKey(e,"inferred")&&i.IsEqual(e["~kind"],"ExtendsUnion")&&i.IsObject(e.inferred)}function I(e){return u.Create({"~kind":"ExtendsTrue"},{inferred:e})}function xu(e){return i.IsObject(e)&&i.HasPropertyKey(e,"~kind")&&i.HasPropertyKey(e,"inferred")&&i.IsEqual(e["~kind"],"ExtendsTrue")&&i.IsObject(e.inferred)}function k(){return u.Create({"~kind":"ExtendsFalse"},{})}function vy(e){return i.IsObject(e)&&i.HasPropertyKey(e,"~kind")&&i.IsEqual(e["~kind"],"ExtendsFalse")}function Xe(e){return fu(e)||xu(e)}function Q(e,t,n){return Xe(e)?t(e.inferred):n()}function Py(e,t,n,r){return Q(S(e,n,r),o=>I(u.Assign(u.Assign(e,o),{[t]:n})),()=>k())}function Cy(e,t){return I(e)}function Ry(e,t,n,r,o){return Q(S(e,t,n),m=>Q(S(m,t,r),p=>I(p),()=>k()),()=>Q(S(e,t,o),m=>I(m),()=>k()))}function My(e,t,n){let r=$e(n);return S(e,t,r)}function Iu(e,t,n){return i.ShiftLeft(n,(r,o)=>Q(S(e,t,r),m=>Iu(m,t,o),()=>k()),()=>I(e))}function wy(e,t,n){let r=Ie(n);return S(e,t,r)}function yu(e,t,n){return i.ShiftLeft(n,(r,o)=>Q(S(e,t,r),m=>I(m),()=>yu(e,t,o)),()=>k())}function D(e,t,n){return W(n)?Cy(e,t):V(n)?Ry(e,t,n.if,n.then,n.else):de(n)?My(e,t,n.enum):X(n)?Py(e,n.name,t,n.extends):M(n)?Iu(e,t,n.allOf):Z(n)?wy(e,t,n.pattern):g(n)?yu(e,t,n.anyOf):Y(n)?I(e):k()}function gu(e,t,n){return X(n)?D(e,t,n):W(n)?I(e):Y(n)?I(e):Xa(e)}function Sy(e,t){let n=Lt(e),r=Lt(t);return n&&r||!n&&r?!0:!(n&&!r)}function $u(e,t,n,r){return z(r)?Sy(t,r)?S(e,n,r.items):k():D(e,t,r)}function bu(e,t,n){return Qe(n)?I(e):D(e,t,n)}function Tu(e,t,n){return we(n)?I(e):D(e,t,n)}function jy(e,t,n,r,o){let m=X(r)?t:r,p=X(r)?r:t,d=xe(t),l=xe(r);return!d&&l?k():Q(S(e,m,p),C=>Vn(C,n,o),()=>k())}function qy(e,t,n,r){return i.ShiftLeft(r,(o,m)=>jy(e,t,n,o,m),()=>xe(t)?I(e):k())}function Ly(e,t,n){return i.ShiftLeft(t,(r,o)=>qy(e,r,o,n),()=>I(e))}function Vn(e,t,n){return Ly(e,t,n)}function da(e,t,n){return Ye(n)?I(e):S(e,t,n)}function hu(e,t,n,r){return W(r)?I(e):Y(r)?I(e):ae(r)?Q(Vn(e,t,r.parameters),o=>da(o,n,r.instanceType),()=>k()):k()}function Eu(e,t,n,r,o){return Q(S(e,t,o),()=>S(e,n,o),()=>S(e,r,o))}function ku(e,t,n){let r=$e(t);return S(e,r,n)}function Ou(e,t,n,r){return W(r)?I(e):Y(r)?I(e):oe(r)?Q(Vn(e,t,r.parameters),o=>da(o,n,r.returnType),()=>k()):k()}function vu(e,t,n){return ye(n)?I(e):ee(n)?I(e):D(e,t,n)}function Pu(e,t,n){let r=_(t);return S(e,r,n)}function la(e,t,n){return t===n?I(e):k()}function Ay(e,t,n){return F(n)?la(e,t,n.const):Qe(n)?I(e):D(e,w(t),n)}function Fy(e,t,n){return F(n)?la(e,t,n.const):we(n)?I(e):D(e,w(t),n)}function Dy(e,t,n){return F(n)?la(e,t,n.const):ee(n)?I(e):D(e,w(t),n)}function Ky(e,t,n){return F(n)?la(e,t,n.const):ge(n)?I(e):D(e,w(t),n)}function Cu(e,t,n){return i.IsBigInt(t.const)?Ay(e,t.const,n):i.IsBoolean(t.const)?Fy(e,t.const,n):i.IsNumber(t.const)?Dy(e,t.const,n):i.IsString(t.const)?Ky(e,t.const,n):re()}function Ru(e,t,n){return X(n)?D(e,t,n):I(e)}function Mu(e,t,n){return nn(n)?I(e):D(e,t,n)}function wu(e,t,n){return ee(n)?I(e):D(e,t,n)}function Ny(e,t,n){return xe(t)?xe(n)?I(e):k():I(e)}function Uy(e,t,n){return X(n)&&Ke(n.extends)?k():Q(S(e,t,n),r=>Ny(r,t,n),()=>k())}function Gy(e,t){return e.reduce((n,r)=>r in t?Xe(t[r])?{...n,...t[r].inferred}:re():re(),{})}function zy(e,t,n){let r={};for(let p of i.Keys(n))r[p]=p in t?Uy({},t[p],n[p]):xe(n[p])?X(n[p])?I(u.Assign(e,{[n[p].name]:n[p].extends})):I(e):k();let o=i.Values(r).every(p=>Xe(p)),m=o?Gy(i.Keys(r),r):{};return o?I(m):k()}function _y(e,t,n){let r=zy(e,t,n);return Xe(r)?I(u.Assign(e,r.inferred)):k()}function By(e,t,n){return _y(e,t,n)}function Wy(e,t){return i.Keys(t).reduce((n,r)=>({...n,[r]:i.HasPropertyKey(e,r)?g(n[r])?P([...n[r].anyOf,t[r]]):P([e[r],t[r]]):t[r]}),e)}function Su(e,t,n,r){return i.ShiftLeft(t,(o,m)=>Q(S({},e[o],n),p=>Su(e,m,n,Wy(r,p)),()=>k()),()=>I(r))}function Hy(e,t,n,r){let o=i.Keys(t);return Su(t,o,r,e)}function ju(e,t,n){return fe(n)?Hy(e,t,qe(n),be(n)):A(n)?By(e,t,n.properties):D(e,h(t),n)}function Vy(e,t){return i.IsEqual(i.Keys(t).length,0)?I(e):k()}function Zy(e,t,n,r,o){return S(e,n,o)}function qu(e,t,n,r){return fe(r)?Zy(e,qr(t),n,qr(qe(r)),be(r)):A(r)?Vy(e,r.properties):W(r)?I(e):Y(r)?I(e):k()}function Lu(e,t,n){return ge(n)?I(e):D(e,t,n)}function Au(e,t,n){return $t(n)?I(e):D(e,t,n)}function Fu(e,t,n){let r=Ie(t);return S(e,r,n)}function eo(e,t){return u.Create({"~kind":"Inferrable"},{name:e,type:t},{})}function Zn(e){return i.IsObject(e)&&i.HasPropertyKey(e,"~kind")&&i.HasPropertyKey(e,"name")&&i.HasPropertyKey(e,"type")&&i.IsEqual(e["~kind"],"Inferrable")&&i.IsString(e.name)&&i.IsObject(e.type)}function to(e){return Et(e)?X(e.items)?z(e.items.extends)?eo(e.items.name,e.items.extends.items):Y(e.items.extends)?eo(e.items.name,e.items.extends):void 0:re():void 0}function fa(e){return X(e)?eo(e.name,e.extends):void 0}function Du(e,t){let n=[];for(let r of e){if(!Xe(S({},r,t)))return;n.push(r)}return n}function Ku(e,t,n,r){let o=Du(n,r);return i.IsArray(o)?I(u.Assign(e,{[t]:te(o)})):k()}function xa(e,t,n,r){let o=Du(n,r);return i.IsArray(o)?I(u.Assign(e,{[t]:P(o)})):k()}function Jy(e){return[...e].reverse()}function no(e,t){return t?Jy(e):e}function Qy(e){let t=e.length>0?e[0]:void 0,n=ne(t)?to(t):void 0;return ne(n)}function Yy(e,t,n,r,o,m){return Q(S(e,n,o),p=>Nu(p,t,r,m),()=>k())}function Xy(e,t,n,r,o){let m=to(r);return Zn(m)?Ku(e,m.name,no(n,t),m.type):i.ShiftLeft(n,(p,d)=>Yy(e,t,p,d,r,o),()=>k())}function eg(e,t,n,r){return i.ShiftLeft(r,(o,m)=>Xy(e,t,n,o,m),()=>i.IsEqual(n.length,0)?I(e):k())}function Nu(e,t,n,r){return eg(e,t,n,r)}function tg(e,t,n){let r=Pt(e,U([],[]),n),o=Qy(r);return Nu(e,o,no(t,o),no(r,o))}function ng(e,t,n){for(let r of t){let o=S(e,r,n);if(!Xe(o))return o;e=o.inferred}return I(e)}function rg(e,t,n){let r=fa(n);return Zn(r)?xa(e,r.name,t,r.type):ng(e,t,n)}function Uu(e,t,n){let r=Pt(e,U([],[]),t);return N(n)?tg(e,r,n.items):z(n)?rg(e,r,n.items):D(e,te(r),n)}function Gu(e,t,n){return Ye(n)?I(e):pn(n)?I(e):D(e,t,n)}function zu(e,t,n){return i.ShiftLeft(n,(r,o)=>Q(S(e,t,r),m=>I(m),()=>zu(e,t,o)),()=>k())}function ro(e,t,n){return i.ShiftLeft(t,(r,o)=>Q(zu(e,r,n),m=>ro(m,o,n),()=>k()),()=>I(e))}function _u(e,t,n){let r=fa(n);return Zn(r)?xa(e,r.name,t,r.type):g(n)?ro(e,t,n.anyOf):ro(e,t,[n])}function Bu(e,t,n){return X(n)?D(e,t,n):W(n)?I(e):Y(n)?I(e):k()}function Wu(e,t,n){return Ye(n)?I(e):D(e,t,n)}function S(e,t,n){return W(t)?gu(e,t,n):z(t)?$u(e,t,t.items,n):Qe(t)?bu(e,t,n):we(t)?Tu(e,t,n):ae(t)?hu(e,t.parameters,t.instanceType,n):V(t)?Eu(e,t.if,t.then,t.else,n):de(t)?ku(e,t.enum,n):oe(t)?Ou(e,t.parameters,t.returnType,n):ye(t)?vu(e,t,n):M(t)?Pu(e,t.allOf,n):F(t)?Cu(e,t,n):Ke(t)?Ru(e,t,n):nn(t)?Mu(e,t,n):ee(t)?wu(e,t,n):A(t)?ju(e,t.properties,n):fe(t)?qu(e,qe(t),be(t),n):ge(t)?Lu(e,t,n):$t(t)?Au(e,t,n):Z(t)?Fu(e,t.pattern,n):N(t)?Uu(e,t.items,n):pn(t)?Gu(e,t,n):g(t)?_u(e,t.anyOf,n):Y(t)?Bu(e,t,n):Ye(t)?Wu(e,t,n):k()}function ag(e,t){return _([...e,h(t)])}function ao(e,t,n){return O(e)?u.Update(ag(e,t),{},n):Un(e,t,n)}function Hu(e,t,n,r,o){let m=Ce(e,t,n),p=Jn(e,t,r);return ao(m,p,o)}function Un(e,t,n={}){return $("Interface",[e,t],n)}function ln(e){return ne(e)&&i.HasPropertyKey(e,"action")&&i.IsEqual(e.action,"Interface")}function Vu(e,t,n={}){return ao(e,t,n)}function og(e,t,n){return e.includes(n)?!0:Qn([...e,n],t,t[n])}function Zu(e,t,n){let r=gr(n);return Gt(e,t,r)}function Gt(e,t,n){return i.ShiftLeft(n,(r,o)=>Qn(e,t,r)?!0:Gt(e,t,o),()=>!1)}function Qn(e,t,n){return ie(n)?og(e,t,n.$ref):z(n)?Qn(e,t,n.items):ae(n)?Gt(e,t,[...n.parameters,n.instanceType]):oe(n)?Gt(e,t,[...n.parameters,n.returnType]):ln(n)?Zu(e,t,n.parameters[1]):M(n)?Gt(e,t,n.allOf):A(n)?Zu(e,t,n.properties):g(n)?Gt(e,t,n.anyOf):N(n)?Gt(e,t,n.items):fe(n)?Qn(e,t,be(n)):!1}function Ju(e,t,n){return Qn(e,t,n)}function ig(e,t){return t.reduce((n,r)=>Ju([r],e,e[r])?[...n,r]:n,[])}function Qu(e){let t=yr(e);return ig(e,t)}function sg(e,t,n){return n.includes(t)?n:t in e?Yn(e,e[t],[...n,t]):re()}function Yu(e,t,n){let r=gr(t);return fn(e,r,n)}function fn(e,t,n){return t.reduce((r,o)=>Yn(e,o,r),n)}function Yn(e,t,n){return ie(t)?sg(e,t.$ref,n):z(t)?Yn(e,t.items,n):ae(t)?fn(e,[...t.parameters,t.instanceType],n):oe(t)?fn(e,[...t.parameters,t.returnType],n):ln(t)?Yu(e,t.parameters[1],n):M(t)?fn(e,t.allOf,n):A(t)?Yu(e,t.properties,n):g(t)?fn(e,t.anyOf,n):N(t)?fn(e,t.items,n):fe(t)?Yn(e,be(t),n):n}function Xu(e,t,n){return Yn(e,n,[t])}function mg(e){return Xt()}function pg(e){return i.Keys(e).reduce((t,n)=>({...t,[n]:zt(e[n])}),{})}function Xn(e){return e.reduce((t,n)=>[...t,zt(n)],[])}function zt(e){return ie(e)?mg(e.$ref):z(e)?Pe(zt(e.items),Ir(e)):ae(e)?Be(Xn(e.parameters),zt(e.instanceType)):oe(e)?We(Xn(e.parameters),zt(e.returnType)):M(e)?Te(Xn(e.allOf)):A(e)?h(pg(e.properties)):fe(e)?jr(sn(e),zt(be(e))):g(e)?P(Xn(e.anyOf)):N(e)?te(Xn(e.items)):e}function ug(e,t){return t in e?zt(e[t]):se()}function ec(e){return ug(e.$defs,e.$ref)}function cg(e,t,n){let r=Ce(e,U([],[]),t),o=Jn({},U([],[]),n);return _([...r,h(o)])}function dg(e,t){return i.Keys(e).filter(r=>t.includes(r)).reduce((r,o)=>{let m=e[o],p=ln(m)?cg(e,m.parameters[0],m.parameters[1]):m;return{...r,[o]:p}},{})}function tc(e,t,n){let r=Xu(e,t,n),o=dg(e,r);return Ve(o,t)}function nc(e,t){return t in e?ie(e[t])?nc(e,e[t].$ref):e[t]:K()}function et(e,t){return nc(e,t)}function rc(e){return ce(e)?ec(e):$r(e)?se():e}function le(e,t,n){let r=rc(t),o=rc(n);return S(e,r,o)}var An=0,Ia=1,Fn=2,Mr=3;function Dn(e,t){let n=[le({},e,t),le({},t,e)];return E.IsExtendsTrueLike(n[0])&&E.IsExtendsTrueLike(n[1])?An:E.IsExtendsTrueLike(n[0])&&E.IsExtendsFalse(n[1])?Fn:E.IsExtendsFalse(n[0])&&E.IsExtendsTrueLike(n[1])?Mr:Ia}function oo(e,t,n=[],r=t){return i.ShiftLeft(t,(o,m)=>{let p=Dn(e,o);return i.IsEqual(p,Fn)||i.IsEqual(p,An)?r:i.IsEqual(p,Ia)?oo(e,m,[...n,o],r):oo(e,m,n,r)},()=>[...n,e])}function lg(e,t,n){let r=je(e);return W(r)?[r]:Y(r)?[r]:Ke(r)?ya(t,n):A(r)?ya(t,[...n,r]):ya(t,oo(r,n))}function ya(e,t=[]){return i.ShiftLeft(e,(n,r)=>lg(n,r,t),()=>t)}function Fa(e){let t=ya(e);return on(t)}function io(e,t){return u.Update(je(e),{},t)}function ac(e,t,n,r){let o=f(e,t,n);return io(o,r)}function er(e,t=[]){return yt(e)&&i.IsEqual(e.action,"Conditional")?ie(e.parameters[0])?er(e.parameters[2],er(e.parameters[3],[...t,e.parameters[0].$ref])):er(e.parameters[2],er(e.parameters[3],t)):yt(e)&&i.IsEqual(e.action,"Mapped")&&yt(e.parameters[1])&&i.IsEqual(e.parameters[1].action,"KeyOf")&&ie(e.parameters[1].parameters[0])?[...t,e.parameters[1].parameters[0].$ref]:t}function fg(e,t){return e.reduce((n,r)=>[...n,t.includes(r.name)],[])}function sc(e,t,n=[]){return i.ShiftLeft(e,(r,o)=>i.ShiftLeft(t,(m,p)=>sc(o,p,[...n,[m,r]]),()=>n),()=>n)}function xg(e){return Z(e)?Ie(e.pattern):de(e)?$e(e.enum):e}function Ig(e){let t=xg(e);return g(t)?[...t.anyOf]:[t]}function yg(e,t){return e.reduce((n,r)=>[...n,[...r,t]],[])}function oc(e,t){return t.reduce((n,r)=>[...n,...yg(e,r)],[])}function ic(e){return e.reduce((t,n)=>i.IsEqual(n[0],!0)?oc(t,Ig(n[1])):oc(t,[n[1]]),[[]])}function mc(e,t,n){let r=er(n),o=fg(e,r),m=sc(t,o);return yt(n)&&i.IsEqual(n.action,"Conditional")||yt(n)&&i.IsEqual(n.action,"Mapped")?ic(m):[t]}function gg(){return["(not-resolvable)",K()]}function $g(){return["(not-generic)",K()]}function bg(e,t,n){return[e,gt(t,n)]}function Tg(e,t,n){return t in e?pc(e,t,e[t],n):gg()}function pc(e,t,n,r){return Yt(n)?bg(t,n.parameters,n.expression):ie(n)?Tg(e,n.$ref,r):$g()}function uc(e,t,n){return pc(e,"(anonymous)",t,n)}function hg(e,t,n){if(X(t)||xn(t)||E.IsExtendsTrueLike(le({},t,n)))return;let r={parameter:e,expect:n,actual:t};throw new Error(`Argument for parameter ${e} does not satisfy constraint`,{cause:r})}function cc(e,t,n,r,o){let m=f(e,t,o);return hg(n,m,r),u.Assign(e,{[n]:m})}function Eg(e,t,n,r,o){let m=f(e,t,n.extends),p=f(e,t,n.equals);return i.ShiftLeft(o,(d,l)=>so(cc(e,t,n.name,m,d),t,r,l),()=>so(cc(e,t,n.name,m,p),t,r,[]))}function so(e,t,n,r){return i.ShiftLeft(n,(o,m)=>Eg(e,t,o,m,r),()=>e)}function dc(e,t,n,r){return so(e,t,n,r)}var mo=0,po=0;function kg(){if(!i.IsLessThan(po,De.Get().maxInstantiationCount))throw Error("Type instantiation is excessively deep and possibly infinite")}function Og(){kg(),po++,mo++}function vg(){mo--,i.IsEqual(mo,0)&&(po=0)}function Pg(e){return i.IsGreaterThan(e.callstack.length,0)?e.callstack[e.callstack.length-1]:""}function Cg(e,t){return i.IsEqual(Pg(e),t)}function Rg(e,t,n,r,o,m){Og();try{let p=dc(e,t,r,m),d=f(p,U([...t.callstack,n.$ref],t.visited),o);return f(p,U([],[]),d)}finally{vg()}}function Mg(e,t,n,r,o,m){return m.reduce((p,d)=>{let l=Rg(e,t,n,r,o,d);return[...p,l]},[])}function wg(e,t,n,r,o,m){let p=mc(r,m,o),d=Mg(e,t,n,r,o,p);return i.IsEqual(d.length,1)?d[0]:Ee(d)}function ga(e,t,n,r){let o=Ce(e,t,r),m=uc(e,n,r),p=m[0],d=m[1];return Yt(d)?Cg(t,p)?Gn(st(p),o):wg(e,t,st(p),d.parameters,d.expression,o):Gn(n,o)}function Gn(e,t){return u.Create({"~kind":"Call"},{type:"call",target:e,arguments:t},{})}function lc(e,t){return ga({},U([],[]),e,t)}function xn(e){return y(e,"Call")}function Sg(e){return u.Discard(e,["~immutable"])}function fc(e,t){return u.Update(Sg(e),{},t)}function xc(e,t,n,r){let o=f(e,t,n);return fc(o,r)}function Ic(e,t){return e(t)}function yc(e,t){return i.IsString(t)?w(Ic(e,t)):w(t)}function gc(e,t){let n=Ie(t);return pt(e,n)}function $c(e,t){let n=t.map(r=>pt(e,r));return P(n)}function pt(e,t){return F(t)?yc(e,t.const):Z(t)?gc(e,t.pattern):g(t)?$c(e,t.anyOf):t}function Kr(e,t={}){return $("Capitalize",[e],t)}function bc(e,t={}){return uo(e,t)}function Nr(e,t={}){return $("Lowercase",[e],t)}function Tc(e,t={}){return co(e,t)}function Ur(e,t={}){return $("Uncapitalize",[e],t)}function hc(e,t={}){return lo(e,t)}function Gr(e,t={}){return $("Uppercase",[e],t)}function Ec(e,t={}){return fo(e,t)}var jg=e=>e[0].toUpperCase()+e.slice(1),qg=e=>e.toLowerCase(),Lg=e=>e[0].toLowerCase()+e.slice(1),Ag=e=>e.toUpperCase();function uo(e,t){return O([e])?u.Update(pt(jg,e),{},t):Kr(e,t)}function co(e,t){return O([e])?u.Update(pt(qg,e),{},t):Nr(e,t)}function lo(e,t){return O([e])?u.Update(pt(Lg,e),{},t):Ur(e,t)}function fo(e,t){return O([e])?u.Update(pt(Ag,e),{},t):Gr(e,t)}function kc(e,t,n,r){let o=f(e,t,n);return uo(o,r)}function Oc(e,t,n,r){let o=f(e,t,n);return co(o,r)}function vc(e,t,n,r){let o=f(e,t,n);return lo(o,r)}function Pc(e,t,n,r){let o=f(e,t,n);return fo(o,r)}function zr(e,t,n,r,o={}){return $("Conditional",[e,t,n,r],o)}function Cc(e,t,n,r,o={}){return xo({},U([],[]),e,t,n,r,o)}function Fg(e,t,n,r,o,m){let p=le(e,n,r);return E.IsExtendsUnion(p)?P([f(p.inferred,t,o),f(e,t,m)]):E.IsExtendsTrue(p)?f(p.inferred,t,o):f(e,t,m)}function xo(e,t,n,r,o,m,p){return O([n,r])?u.Update(Fg(e,t,n,r,o,m),{},p):zr(n,r,o,m,p)}function Rc(e,t,n,r,o,m,p){let d=f(e,t,n),l=f(e,t,r);return xo(e,t,d,l,o,m,p)}function _r(e,t={}){return $("ConstructorParameters",[e],t)}function Mc(e,t={}){return Io(e,t)}function Dg(e){let t=ae(e)?e.parameters:[],n=Pt({},U([],[]),t);return te(n)}function Io(e,t){return O([e])?u.Update(Dg(e),{},t):_r(e,t)}function wc(e,t,n,r){let o=f(e,t,n);return Io(o,r)}function Br(e,t,n={}){return $("Exclude",[e,t],n)}function Sc(e,t,n={}){return tr(e,t,n)}function tr(e,t,n){return O([e,t])?u.Update(wr(e,t),{},n):Br(e,t,n)}function jc(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return tr(m,p,o)}function Wr(e,t,n={}){return $("Extract",[e,t],n)}function qc(e,t,n={}){return yo(e,t,n)}function Kg(e,t){let n=le({},e,t);return E.IsExtendsTrueLike(n)?[e]:[]}function Lc(e,t,n=[]){return i.ShiftLeft(e,(r,o)=>Lc(o,t,[...n,...Kg(r,t)]),()=>n)}function Ac(e,t){let n=je(e),r=g(n)?n.anyOf:[n],o=Lc(r,t);return Ee(o)}function yo(e,t,n){return O([e,t])?u.Update(Ac(e,t),{},n):Wr(e,t,n)}function Fc(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return yo(m,p,o)}function Ng(e){return e.reduce((t,n)=>kr(n)?[...t,w(n)]:t,[])}function In(e){let t=Ng(e);return P(t)}function zn(e,t,n={}){return $("Index",[e,t],n)}function Dc(e,t,n={}){let r=i.IsArray(t)?In(t):t;return go(e,r,n)}function Kc(e,t){let n=et(e,t);return Re(n)}function Nc(e,t,n){let r=Ue(e,t,n);return Re(r)}function Ug(e,t){let n=i.Keys(e).filter(v=>!i.HasPropertyKey(t,v)),r=i.Keys(t).filter(v=>!i.HasPropertyKey(e,v)),o=i.Keys(e).filter(v=>i.HasPropertyKey(t,v)),m=n.reduce((v,B)=>({...v,[B]:e[B]}),{}),p=r.reduce((v,B)=>({...v,[B]:t[B]}),{}),d=o.reduce((v,B)=>({...v,[B]:_([e[B],t[B]])}),{}),l=u.Assign(m,p);return u.Assign(l,d)}function Uc(e){return e.reduce((t,n)=>Ug(t,Re(n)),{})}function Gc(e){let t=Bi(te(e));return Re(t)}function Gg(e,t){return i.Keys(e).filter(o=>o in t).reduce((o,m)=>({...o,[m]:Ee([e[m],t[m]])}),{})}function zc(e,t){return i.ShiftLeft(e,(n,r)=>zc(r,Gg(t,Re(n))),()=>t)}function _c(e){return i.ShiftLeft(e,(t,n)=>zc(n,Re(t)),()=>re())}function Re(e){return ce(e)?Kc(e.$defs,e.$ref):V(e)?Nc(e.if,e.then,e.else):M(e)?Uc(e.allOf):g(e)?_c(e.anyOf):N(e)?Gc(e.items):A(e)?e.properties:{}}function yn(e){let t=Re(e);return h(t)}var zg=new RegExp("^(?:0|[1-9][0-9]*)$");function gn(e){let t=`${e}`;return zg.test(t)?parseInt(t):e}function _g(e){return w(gn(e))}function Bc(e){return e.map(t=>Wc(t))}function Wc(e){return M(e)?Te(Bc(e.allOf)):g(e)?P(Bc(e.anyOf)):F(e)?_g(e.const):e}function Hc(e,t){let n=Wc(t),r=le({},n,ke());return E.IsExtendsTrueLike(r)?e:F(t)&&i.IsEqual(t.const,"length")?ke():K()}function Vc(e,t){let n=et(e,t);return Oe(n)}function Zc(e,t,n){let r=Ue(e,t,n);return Oe(r)}function Jc(e){let t=$e(e);return Oe(t)}function Qc(e){let t=_(e);return Oe(t)}function Yc(e){return[`${e}`]}function Xc(e){let t=Ie(e);return Oe(t)}function ed(e){return e.reduce((t,n)=>[...t,...Oe(n)],[])}function Oe(e){return ce(e)?Vc(e.$defs,e.$ref):V(e)?Zc(e.if,e.then,e.else):de(e)?Jc(e.enum):M(e)?Qc(e.allOf):F(e)?Yc(e.const):Z(e)?Xc(e.pattern):g(e)?ed(e.anyOf):[]}function $n(e){return Oe(e)}function nr(e,t){return t.map(n=>rr(e,n))}function rr(e,t){return z(t)?Pe(rr(e,t.items)):ae(t)?Be(nr(e,t.parameters),rr(e,t.instanceType)):oe(t)?We(nr(e,t.parameters),rr(e,t.returnType)):N(t)?te(nr(e,t.items)):g(t)?P(nr(e,t.anyOf)):M(t)?Te(nr(e,t.allOf)):Ar(t)?h(e):t}function td(e,t){return rr(e,t)}function Bg(e,t){let n=t in e?e[t]:K();return td(e,n)}function nd(e,t){return t.reduce((n,r)=>[...n,Bg(e,r)],[])}function Wg(e,t){let n=$n(t),r=nd(e,n);return Ee(r)}var Hg=new RegExp(ht);function Vg(e){return e.filter(n=>Hg.test(n))}function Zg(e){let t=yr(e),n=Vg(t),r=nd(e,n);return Ee(r)}function rd(e,t){return ee(t)?Zg(e):Wg(e,t)}function Jg(e){return w(gn(e))}function ad(e){return e.map(t=>$o(t))}function $o(e){return M(e)?Te(ad(e.allOf)):g(e)?P(ad(e.anyOf)):F(e)?Jg(e.const):e}function Qg(e,t){return e.reduceRight((n,r,o)=>{let m=le({},w(o),t);return E.IsExtendsTrueLike(m)?[r,...n]:n},[])}function Yg(e,t){let n=$o(t),r=Qg(e,n);return bt(r)}function Xg(e){return bt(e)}function od(e,t){return F(t)&&i.IsEqual(t.const,"length")?w(e.length):ee(t)||ye(t)?Xg(e):Yg(e,t)}function id(e,t){return z(e)?Hc(e.items,t):A(e)?rd(e.properties,t):N(e)?od(e.items,t):K()}function e$(e){return ce(e)||V(e)||M(e)||g(e)?yn(e):e}function go(e,t,n){return O([e,t])?u.Update(id(e$(e),t),{},n):zn(e,t,n)}function sd(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return go(m,p,o)}function Hr(e,t={}){return $("InstanceType",[e],t)}function md(e,t={}){return bo(e,t)}function t$(e){return ae(e)?e.instanceType:K()}function bo(e,t){return O([e])?u.Update(t$(e),{},t):Hr(e,t)}function pd(e,t,n,r={}){let o=f(e,t,n);return bo(o,r)}function _n(e,t={}){return $("KeyOf",[e],t)}function ud(e,t={}){return To(e,t)}function cd(){return P([ke(),Se(),rn()])}function dd(e){return ke()}function n$(e){return e.reduce((n,r)=>kr(r)?[...n,w(gn(r))]:re(),[])}function ld(e){let t=i.Keys(e),n=n$(t);return bt(n)}function fd(e){return sn(e)}function xd(e){let t=e.map((n,r)=>w(r));return bt(t)}function Id(e){return W(e)?cd():z(e)?dd(e.items):A(e)?ld(e.properties):fe(e)?fd(e):N(e)?xd(e.items):K()}function r$(e){return ce(e)||V(e)||M(e)||g(e)?yn(e):e}function To(e,t){return O([e])?u.Update(Id(r$(e)),{},t):_n(e,t)}function yd(e,t,n,r){let o=f(e,t,n);return To(o,r)}function Nn(e,t,n,r,o={}){return $("Mapped",[e,t,n,r],o)}function gd(e,t,n,r,o={}){return ho({},U([],[]),e,t,n,r,o)}function a$(e){let t=Ie(e);return $a(t)}function o$(e){return e.reduce((t,n)=>[...t,...$a(n)],[])}function i$(e){let t=$e(e);return $a(t)}function s$(e){return i.IsNumber(e)?[w(`${e}`)]:[w(e)]}function $a(e){return de(e)?i$(e.enum):F(e)?s$(e.const):Z(e)?a$(e.pattern):g(e)?o$(e.anyOf):[e]}function $d(e){return $a(e)}function m$(e){return Z(e)?Ie(e.pattern):e}function p$(e,t,n,r,o,m){let p=u.Assign(e,{[n.name]:r}),d=f(p,t,o),l=m$(d),C=f(p,t,m);return Oi(l)||vi(l)?{[l.const]:C}:{}}function u$(e,t,n,r,o,m){return r.reduce((p,d)=>[...p,p$(e,t,n,d,o,m)],[])}function c$(e){return e.reduce((t,n)=>[...t,h(n)],[])}function bd(e,t,n,r,o,m){let p=$d(r),d=u$(e,t,n,p,o,m),l=c$(d);return _(l)}function ho(e,t,n,r,o,m,p){return O([r])?u.Update(bd(e,t,n,r,o,m),{},p):Nn(n,r,o,m,p)}function Td(e,t,n,r,o,m,p){let d=f(e,t,r);return ho(e,t,n,d,o,m,p)}function d$(e,t,n){let r=u.Assign(e,t);return i.Keys(t).filter(m=>n.includes(m)).reduce((m,p)=>({...m,[p]:tc(r,p,t[p])}),{})}function l$(e,t,n){let r=u.Assign(e,t);return i.Keys(t).filter(m=>!n.includes(m)).reduce((m,p)=>({...m,[p]:f(r,U([],[]),t[p])}),{})}function f$(e,t,n){let r=Qu(t),o=d$(e,t,r),m=l$(e,t,r),p={...o,...m};return u.Update(p,{},n)}function ba(e,t,n,r){return f$(e,n,r)}function Vr(e,t={}){return $("NonNullable",[e],t)}function hd(e,t={}){return Eo(e,t)}function x$(e){let t=P([tn(),mn()]);return tr(e,t,{})}function Eo(e,t){return O([e])?u.Update(x$(e),{},t):Vr(e,t)}function Ed(e,t,n,r){let o=f(e,t,n);return Eo(o,r)}function Zr(e,t,n={}){return $("Omit",[e,t],n)}function kd(e,t,n={}){let r=i.IsArray(t)?In(t):t;return ko(e,r,n)}function Ta(e){let t=yn(e);return A(t)?t.properties:re()}function I$(e,t){return i.Keys(e).reduce((r,o)=>t.includes(o)?r:{...r,[o]:e[o]},{})}function Od(e,t){let n=Ta(e),r=$n(t),o=I$(n,r);return h(o)}function ko(e,t,n){return O([e,t])?u.Update(Od(e,t),{},n):Zr(e,t,n)}function vd(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return ko(m,p,o)}function Jr(e,t={}){return $("Parameters",[e],t)}function Pd(e,t={}){return Oo(e,t)}function y$(e){let t=oe(e)?e.parameters:[],n=Pt({},U([],[]),t);return te(n)}function Oo(e,t){return O([e])?u.Update(y$(e),{},t):Jr(e,t)}function Cd(e,t,n,r){let o=f(e,t,n);return Oo(o,r)}function Qr(e,t={}){return $("Partial",[e],t)}function Rd(e,t={}){return vo(e,t)}function Md(e,t){let n=et(e,t),r=tt(n);return Ve(u.Assign(e,{[t]:r}),t)}function wd(e,t,n){let r=Ue(e,t,n);return tt(r)}function Sd(e){let t=_(e);return tt(t)}function jd(e){let t=e.map(n=>tt(n));return P(t)}function qd(e){let t=i.Keys(e).reduce((r,o)=>({...r,[o]:jt(e[o])}),{});return h(t)}function tt(e){return ce(e)?Md(e.$defs,e.$ref):V(e)?wd(e.if,e.then,e.else):M(e)?Sd(e.allOf):g(e)?jd(e.anyOf):A(e)?qd(e.properties):h({})}function vo(e,t){return O([e])?u.Update(tt(e),{},t):Qr(e,t)}function Ld(e,t,n,r){let o=f(e,t,n);return vo(o,r)}function Yr(e,t,n={}){return $("Pick",[e,t],n)}function Ad(e,t,n={}){let r=i.IsArray(t)?In(t):t;return Po(e,r,n)}function g$(e,t){return i.Keys(e).reduce((r,o)=>t.includes(o)?u.Assign(r,{[o]:e[o]}):r,{})}function Fd(e,t){let n=Ta(e),r=$n(t),o=g$(n,r);return h(o)}function Po(e,t,n){return O([e,t])?u.Update(Fd(e,t),{},n):Yr(e,t,n)}function Dd(e,t,n,r,o){let m=f(e,t,n),p=f(e,t,r);return Po(m,p,o)}function Xr(e,t={}){return $("ReadonlyObject",[e],t)}function Co(e,t={}){return Ro(e,t)}var Kd=Co;function Nd(e){return en(Pe(e))}function Ud(e,t){let n=et(e,t),r=nt(n);return Ve(u.Assign(e,{[t]:r}),t)}function Gd(e,t,n){let r=Ue(e,t,n);return nt(r)}function zd(e){let t=_(e);return nt(t)}function _d(e){let t=i.Keys(e).reduce((r,o)=>({...r,[o]:At(e[o])}),{});return h(t)}function Bd(e){return en(te(e))}function Wd(e){let t=e.map(n=>nt(n));return P(t)}function nt(e){return z(e)?Nd(e.items):ce(e)?Ud(e.$defs,e.$ref):V(e)?Gd(e.if,e.then,e.else):M(e)?zd(e.allOf):A(e)?_d(e.properties):N(e)?Bd(e.items):g(e)?Wd(e.anyOf):e}function Ro(e,t){return O([e])?u.Update(nt(e),{},t):Xr(e)}function Hd(e,t,n,r){let o=f(e,t,n);return Ro(o,r)}function Vd(e,t,n,r){return t.visited.includes(r)?n:r in e?f(e,U(t.callstack,[...t.visited,r]),e[r]):n}function Zd(e,t){let n=et(e,t),r=rt(n);return Ve(u.Assign(e,{[t]:r}),t)}function Jd(e,t,n){let r=Ue(e,t,n);return rt(r)}function Qd(e){let t=_(e);return rt(t)}function Yd(e){let t=e.map(n=>rt(n));return P(t)}function Xd(e){let t=i.Keys(e).reduce((r,o)=>({...r,[o]:Rr(e[o])}),{});return h(t)}function rt(e){return ce(e)?Zd(e.$defs,e.$ref):V(e)?Jd(e.if,e.then,e.else):M(e)?Qd(e.allOf):g(e)?Yd(e.anyOf):A(e)?Xd(e.properties):h({})}function ea(e,t={}){return $("Required",[e],t)}function el(e,t={}){return Mo(e,t)}function Mo(e,t){return O([e])?u.Update(rt(e),{},t):ea(e,t)}function tl(e,t,n,r){let o=f(e,t,n);return Mo(o,r)}function ta(e,t={}){return $("ReturnType",[e],t)}function nl(e,t={}){return wo(e,t)}function $$(e){return oe(e)?e.returnType:K()}function wo(e,t){return O([e])?u.Update($$(e),{},t):ta(e,t)}function rl(e,t,n,r={}){let o=f(e,t,n);return wo(o,r)}function na(e,t){return $("With",[e,t],{})}function al(e,t){return So(e,t)}function So(e,t){return O([e])?u.Update(e,{},t):na(e,t)}function ol(e,t,n,r){let o=f(e,t,n);return So(o,r)}function b$(e){return Et(e)?N(e.items)?jo(e.items.items):X(e.items)?[e]:ie(e.items)?[e]:[K()]:[e]}function jo(e){return e.reduce((n,r)=>[...n,...b$(r)],[])}function U(e,t){return{callstack:e,visited:t}}function O(e){return i.ShiftLeft(e,(t,n)=>ie(t)?!1:O(n),()=>!0)}function Jn(e,t,n){return i.Keys(n).reduce((r,o)=>({...r,[o]:f(e,t,n[o])}),{})}function Pt(e,t,n){let r=Ce(e,t,n);return jo(r)}function Ce(e,t,n){return n.map(r=>f(e,t,r))}function T$(e,t){let n=xe(e)?Rn(t,{}):t,r=Ft(e)?Cn(n,{}):n;return Lt(e)?ar(r,{}):r}function h$(e,t,n,r,o){return i.IsEqual(n,"AddImmutable")?il(e,t,r[0],o):i.IsEqual(n,"RemoveImmutable")?xc(e,t,r[0],o):i.IsEqual(n,"AddReadonly")?ei(e,t,r[0],o):i.IsEqual(n,"RemoveReadonly")?Ni(e,t,r[0],o):i.IsEqual(n,"AddOptional")?ti(e,t,r[0],o):i.IsEqual(n,"RemoveOptional")?zi(e,t,r[0],o):i.IsEqual(n,"Capitalize")?kc(e,t,r[0],o):i.IsEqual(n,"Conditional")?Rc(e,t,r[0],r[1],r[2],r[3],o):i.IsEqual(n,"ConstructorParameters")?wc(e,t,r[0],o):i.IsEqual(n,"Evaluate")?ac(e,t,r[0],o):i.IsEqual(n,"Exclude")?jc(e,t,r[0],r[1],o):i.IsEqual(n,"Extract")?Fc(e,t,r[0],r[1],o):i.IsEqual(n,"Index")?sd(e,t,r[0],r[1],o):i.IsEqual(n,"InstanceType")?pd(e,t,r[0],o):i.IsEqual(n,"Interface")?Hu(e,t,r[0],r[1],o):i.IsEqual(n,"KeyOf")?yd(e,t,r[0],o):i.IsEqual(n,"Lowercase")?Oc(e,t,r[0],o):i.IsEqual(n,"Mapped")?Td(e,t,r[0],r[1],r[2],r[3],o):i.IsEqual(n,"Module")?ba(e,t,r[0],o):i.IsEqual(n,"NonNullable")?Ed(e,t,r[0],o):i.IsEqual(n,"Pick")?Dd(e,t,r[0],r[1],o):i.IsEqual(n,"Parameters")?Cd(e,t,r[0],o):i.IsEqual(n,"Partial")?Ld(e,t,r[0],o):i.IsEqual(n,"Omit")?vd(e,t,r[0],r[1],o):i.IsEqual(n,"ReadonlyObject")?Hd(e,t,r[0],o):i.IsEqual(n,"Record")?is(e,t,r[0],r[1],o):i.IsEqual(n,"Required")?tl(e,t,r[0],o):i.IsEqual(n,"ReturnType")?rl(e,t,r[0],o):i.IsEqual(n,"TemplateLiteral")?cu(e,t,r[0],o):i.IsEqual(n,"Uncapitalize")?vc(e,t,r[0],o):i.IsEqual(n,"Uppercase")?Pc(e,t,r[0],o):i.IsEqual(n,"With")?ol(e,t,r[0],r[1]):$(n,r,o)}function E$(e,t,n){let r=ie(n)?Vd(e,t,n,n.$ref):z(n)?Pe(f(e,t,n.items),Ir(n)):xn(n)?ga(e,t,n.target,n.arguments):ae(n)?Be(Ce(e,t,n.parameters),f(e,t,n.instanceType),ni(n)):oe(n)?We(Ce(e,t,n.parameters),f(e,t,n.returnType),ri(n)):V(n)?qt(f(e,t,n.if),f(e,t,n.then),f(e,t,n.else),pi(n)):M(n)?Te(Ce(e,t,n.allOf),fi(n)):A(n)?h(Jn(e,t,n.properties),si(n)):fe(n)?ss(qe(n),f(e,t,be(n))):Et(n)?Nt(f(e,t,n.items)):N(n)?te(Pt(e,t,n.items),Ki(n)):g(n)?P(Ce(e,t,n.anyOf),Ci(n)):n;return T$(n,r)}function f(e,t,n){return yt(n)?h$(e,t,n.action,n.parameters,n.options):E$(e,t,n)}function qo(e,t){return f(e,U([],[]),t)}function k$(e){return u.Update(e,{"~immutable":!0},{})}function ar(e,t){return u.Update(k$(e),{},t)}function il(e,t,n,r){let o=f(e,t,n);return ar(o,r)}function sp(e,t={}){return $("AddImmutable",[e],t)}function en(e,t={}){return ar(e,t)}function mp(e,t={}){return $("Evaluate",[e],t)}function sl(e,t={}){return io(e,t)}function pp(e,t={}){return $("Module",[e],t)}function ml(e,t={}){return ba({},U([],[]),e,t)}function pl(...e){let[t,n,r]=Ze.Match(e,{2:(p,d)=>i.IsString(p)?[{},p,d]:[p,d,{}],3:(p,d,l)=>[p,d,l],1:p=>[{},p,{}]}),o=iu(n),m=i.IsArray(o)&&i.IsEqual(o.length,2)?f(t,U([],[]),o[0]):K();return u.Update(m,{},r)}var b={};wt(b,{Any:()=>Xt,Array:()=>Pe,BigInt:()=>jn,Boolean:()=>hr,Call:()=>lc,Capitalize:()=>bc,Codec:()=>Tr,Conditional:()=>Cc,Constructor:()=>Be,ConstructorParameters:()=>Mc,Cyclic:()=>Ve,Decode:()=>gi,DecodeBuilder:()=>Sn,Dependent:()=>qt,Encode:()=>$i,EncodeBuilder:()=>wn,Enum:()=>li,Evaluate:()=>sl,Exclude:()=>Sc,Extends:()=>le,ExtendsResult:()=>E,Extract:()=>qc,Function:()=>We,Generic:()=>gt,Identifier:()=>qn,Immutable:()=>bi,Index:()=>Dc,Infer:()=>Mn,InstanceType:()=>md,Instantiate:()=>qo,Integer:()=>Dt,Interface:()=>Vu,Intersect:()=>Te,IsAny:()=>W,IsArray:()=>z,IsBigInt:()=>Qe,IsBoolean:()=>we,IsCall:()=>xn,IsCodec:()=>br,IsConstructor:()=>ae,IsCyclic:()=>ce,IsDependent:()=>V,IsEnum:()=>de,IsEnumValue:()=>di,IsFunction:()=>oe,IsGeneric:()=>Yt,IsIdentifier:()=>ki,IsImmutable:()=>Lt,IsInfer:()=>X,IsInteger:()=>ye,IsIntersect:()=>M,IsKind:()=>y,IsLiteral:()=>F,IsNever:()=>Ke,IsNull:()=>nn,IsNumber:()=>ee,IsObject:()=>A,IsOptional:()=>xe,IsParameter:()=>Pi,IsReadonly:()=>Ft,IsRecord:()=>fe,IsRef:()=>ie,IsRefine:()=>Ma,IsRest:()=>Et,IsSchema:()=>ne,IsString:()=>ge,IsSymbol:()=>$t,IsTemplateLiteral:()=>Z,IsThis:()=>Ar,IsTuple:()=>N,IsUndefined:()=>pn,IsUnion:()=>g,IsUnknown:()=>Y,IsUnsafe:()=>$r,IsVoid:()=>Ye,KeyOf:()=>ud,Literal:()=>w,Lowercase:()=>Tc,Mapped:()=>gd,Module:()=>ml,Never:()=>K,NonNullable:()=>hd,Null:()=>tn,Number:()=>ke,Object:()=>h,Omit:()=>kd,Optional:()=>oi,Parameter:()=>Kt,Parameters:()=>Pd,Partial:()=>Rd,Pick:()=>Ad,Readonly:()=>Ti,ReadonlyObject:()=>Co,ReadonlyType:()=>Kd,Record:()=>jr,RecordKey:()=>sn,RecordPattern:()=>qe,RecordValue:()=>be,Ref:()=>st,Refine:()=>hi,Required:()=>el,Rest:()=>Nt,ReturnType:()=>nl,Script:()=>pl,String:()=>Se,Symbol:()=>rn,TemplateLiteral:()=>lu,This:()=>Lr,Tuple:()=>te,Uncapitalize:()=>hc,Undefined:()=>mn,Union:()=>P,Unknown:()=>se,Unsafe:()=>mi,Uppercase:()=>Ec,Void:()=>Fr,With:()=>al});var Lo=No({pluginId:"memory-engine",operations:{status:{kind:"query",description:"Cognitive health metrics for the memory graph.",input:b.Object({},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},search:{kind:"query",description:"FTS search over memory atoms with optional type/domain filters.",input:b.Object({query:b.String({maxLength:500,minLength:1}),limit:b.Optional(b.Integer({maximum:100})),type:b.Optional(b.String({maxLength:40})),domain:b.Optional(b.String({maxLength:200}))},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},atom:{kind:"query",description:"Full atom detail with bonds.",input:b.Object({id:b.String({maxLength:200})},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},domains:{kind:"query",description:"List distinct domains with atom counts.",input:b.Object({},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},curator_dry:{kind:"action",description:"Run curator in dry-run mode.",input:b.Object({max_atoms:b.Optional(b.Integer({maximum:200}))},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},curator_apply:{kind:"action",description:"Run curator with auto_apply (safe actions only).",input:b.Object({max_atoms:b.Optional(b.Integer({maximum:200}))},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},backups_list:{kind:"query",description:"List available backups.",input:b.Object({},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},backup_now:{kind:"action",description:"Create a database backup now.",input:b.Object({},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},questions_list:{kind:"query",description:"List pending human questions.",input:b.Object({limit:b.Optional(b.Integer({maximum:50}))},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},question_answer:{kind:"action",description:"Answer a pending question.",input:b.Object({question_id:b.String({maxLength:200}),answer:b.String({maxLength:2e3}),action:b.Optional(b.String({maxLength:40}))},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},atom_soft_delete:{kind:"action",description:"Soft-delete an atom.",input:b.Object({id:b.String({maxLength:200})},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},atom_update_domain:{kind:"action",description:"Move an atom to a different domain.",input:b.Object({id:b.String({maxLength:200}),new_domain:b.String({maxLength:200})},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},db_stats:{kind:"query",description:"Database management stats: counts by status, db file size, retention setting.",input:b.Object({},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},set_retention:{kind:"action",description:"Set session retention days (TTL). Takes effect on new ingested atoms and cleanup.",input:b.Object({retention_days:b.Integer({minimum:1,maximum:365})},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},db_cleanup:{kind:"action",description:"Expire session atoms older than max_age_days (or retention default). dry_run optional.",input:b.Object({max_age_days:b.Optional(b.Integer({minimum:1,maximum:3650})),dry_run:b.Optional(b.Boolean())},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})},db_purge:{kind:"action",description:"Hard-delete atoms with status deleted/expired/merged. Requires confirm=true.",input:b.Object({confirm:b.Optional(b.Boolean())},{additionalProperties:!1}),output:b.Object({},{additionalProperties:!0})}},events:{}});var jZ={id:Lo.pluginId,activate(e){e.ui.registerNavigation({id:"memory-engine",label:"Memory Engine",page:{id:"memory-engine"},icon:"brain"}),e.ui.registerPage({id:"memory-engine",label:"Memory Engine",mount(t,n){let r=Uo(Lo,n.host),o=document.createElement("div");o.style.cssText="padding:16px;font-family:system-ui,sans-serif;max-width:1100px;";let m=document.createElement("h1");m.textContent="Memory Engine",m.style.margin="0 0 12px 0";let p=document.createElement("div");p.style.cssText="display:flex;gap:4px;border-bottom:1px solid rgba(127,127,127,0.3);margin-bottom:16px;";let d={},l=(x,T)=>{let L=document.createElement("button");L.textContent=T,L.dataset.tab=x,L.style.cssText="padding:8px 16px;border:none;background:transparent;color:inherit;cursor:pointer;font-size:14px;border-bottom:2px solid transparent;",L.onclick=()=>{for(let ue of Object.keys(d))d[ue].style.display=ue===x?"block":"none";for(let ue of p.querySelectorAll("button"))ue.style.borderBottomColor=ue===L?"accent":"transparent"},p.append(L);let G=document.createElement("div");G.dataset.page=x,G.style.display="none",d[x]=G,o.append(G)};l("overview","Panoramica"),l("atoms","Atomi"),l("curator","Curator"),l("backup","Backup"),l("questions","Domande"),l("database","Database");let C=x=>{let T=document.createElement("div");return T.textContent=x,T.style.opacity="0.6",T},v=d.overview,B=document.createElement("div");B.style.cssText="display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:16px;";let pe=x=>{let T=document.createElement("div");T.style.cssText="background:rgba(127,127,127,0.1);border-radius:8px;padding:10px 14px;";let L=document.createElement("div");L.textContent=x,L.style.cssText="font-size:11px;opacity:0.7;text-transform:uppercase;letter-spacing:0.5px;";let G=document.createElement("div");return G.textContent="\u2026",G.style.cssText="font-size:24px;font-weight:600;",G.dataset.stat=x,T.append(L,G),T};B.append(pe("Atomi attivi"),pe("Durevoli"),pe("Bond"),pe("Isolati"),pe("Pending"),pe("Da compattare"));let at=document.createElement("div");at.style.cssText="padding:12px;border-radius:8px;background:rgba(127,127,127,0.08);font-size:13px;";let ve=(x,T)=>{let L=B.querySelector('[data-stat="'+x+'"]');L&&(L.textContent=String(T))};v.append(B,at);let Ge=d.atoms,Le=document.createElement("div");Le.style.cssText="display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;";let ut=document.createElement("input");ut.placeholder="Cerca nella memoria\u2026",ut.setAttribute("aria-label","Cerca atomi"),ut.style.cssText="flex:1;min-width:200px;padding:8px 12px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:transparent;color:inherit;";let ct=document.createElement("select");ct.style.cssText="padding:8px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:transparent;color:inherit;";for(let x of["","fact","decision","procedure","preference","project","note","log"]){let T=document.createElement("option");T.value=x,T.textContent=x||"tutti i tipi",ct.append(T)}let Ct=document.createElement("select");Ct.style.cssText=ct.style.cssText;let ze=document.createElement("button");ze.textContent="Cerca",ze.style.cssText="padding:8px 16px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:rgba(127,127,127,0.15);color:inherit;cursor:pointer;",Le.append(ut,ct,Ct,ze);let ot=document.createElement("div");ot.style.cssText="display:flex;flex-direction:column;gap:6px;";let dt=document.createElement("div");dt.style.cssText="margin-top:12px;padding:12px;border-radius:8px;background:rgba(127,127,127,0.08);font-size:12px;overflow:auto;white-space:pre-wrap;display:none;max-height:300px;",Ge.append(Le,ot,dt);let or=async()=>{let x=ut.value.trim();if(x){ot.textContent="\u2026";try{let T={query:x};ct.value&&(T.type=ct.value),Ct.value&&(T.domain=Ct.value);let L=await r.invoke("search",T);if(ot.textContent="",!L.results?.length){ot.append(C("Nessun risultato."));return}for(let G of L.results){let ue=document.createElement("div");ue.style.cssText="display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-radius:6px;border:1px solid rgba(127,127,127,0.25);cursor:pointer;";let it=document.createElement("div");it.textContent=G.title,it.style.fontWeight="500";let _e=document.createElement("div");_e.textContent=(G.type||"")+" \xB7 "+(G.domain||""),_e.style.cssText="font-size:11px;opacity:0.6;white-space:nowrap;margin-left:12px;",ue.append(it,_e),ue.onclick=async()=>{try{let En=await r.invoke("atom",{id:G.id});dt.textContent=JSON.stringify(En,null,2),dt.style.display="block"}catch(En){dt.textContent=String(En),dt.style.display="block"}},ot.append(ue)}}catch(T){ot.textContent="errore: "+String(T)}}};ze.onclick=or,ut.onkeydown=x=>{x.key==="Enter"&&or()};let ha=d.curator,bn=document.createElement("div");bn.style.cssText="display:flex;gap:8px;margin-bottom:12px;";let lt=document.createElement("button");lt.textContent="Dry-run",lt.style.cssText=ze.style.cssText;let _t=document.createElement("button");_t.textContent="Applica",_t.style.cssText=ze.style.cssText+"font-weight:600;",bn.append(lt,_t);let Tn=document.createElement("pre");Tn.style.cssText="padding:12px;border-radius:8px;background:rgba(127,127,127,0.08);font-size:12px;white-space:pre-wrap;",ha.append(bn,Tn);let Ao=async x=>{(x?_t:lt).disabled=!0,Tn.textContent="\u2026";try{let T=await r.invoke(x?"curator_apply":"curator_dry",{});Tn.textContent=(x?"APPLICATO":"DRY-RUN")+" \u2014 compact: "+T.compact+" \xB7 bond suggeriti: "+T.bonds_suggested+(x?" \xB7 bond applicati: "+T.bonds_applied:"")+" \xB7 isolati classificati: "+T.isolated_classified+" \xB7 promotion: "+T.promotions+" \xB7 merge: "+T.merges,await mr()}catch(T){Tn.textContent=String(T)}finally{(x?_t:lt).disabled=!1}};lt.onclick=()=>Ao(!1),_t.onclick=()=>Ao(!0);let ul=d.backup,Fo=document.createElement("div"),Bt=document.createElement("button");Bt.textContent="Crea backup ora",Bt.style.cssText=ze.style.cssText;let hn=document.createElement("span");hn.style.cssText="font-size:12px;opacity:0.8;margin-left:8px;",Fo.append(Bt,hn);let Rt=document.createElement("div");Rt.style.cssText="display:flex;flex-direction:column;gap:6px;margin-top:12px;",ul.append(Fo,Rt);let Do=async()=>{Rt.textContent="\u2026";try{let x=await r.invoke("backups_list",{});if(Rt.textContent="",!x.backups?.length){Rt.append(C("Nessun backup."));return}for(let T of x.backups){let L=document.createElement("div");L.style.cssText="display:flex;justify-content:space-between;padding:8px 12px;border-radius:6px;border:1px solid rgba(127,127,127,0.25);font-size:13px;";let G=document.createElement("span");G.textContent=T.file;let ue=document.createElement("span");ue.textContent=(T.size_bytes/1048576).toFixed(1)+" MB \xB7 "+T.created.slice(0,16).replace("T"," "),ue.style.opacity="0.6",L.append(G,ue),Rt.append(L)}}catch(x){Rt.textContent=String(x)}};Bt.onclick=async()=>{Bt.disabled=!0,hn.textContent="\u2026";try{let x=await r.invoke("backup_now",{});hn.textContent=x.ok?"OK: "+(x.size_bytes/1048576).toFixed(1)+" MB":"KO: "+x.reason,await Do()}catch(x){hn.textContent=String(x)}finally{Bt.disabled=!1}};let cl=d.questions,Mt=document.createElement("div");Mt.style.cssText="display:flex;flex-direction:column;gap:8px;",cl.append(Mt);let Ko=async()=>{Mt.textContent="\u2026";try{let x=await r.invoke("questions_list",{});if(Mt.textContent="",!x.questions?.length){Mt.append(C("Nessuna domanda in attesa."));return}for(let T of x.questions){let L=document.createElement("div");L.style.cssText="padding:12px;border-radius:8px;border:1px solid rgba(127,127,127,0.25);";let G=document.createElement("div");G.textContent=T.question,G.style.cssText="font-size:14px;margin-bottom:8px;";let ue=document.createElement("div");ue.style.cssText="display:flex;gap:8px;";let it=document.createElement("input");it.placeholder="La tua risposta\u2026",it.style.cssText="flex:1;padding:6px 10px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:transparent;color:inherit;";let _e=document.createElement("button");_e.textContent="Rispondi",_e.style.cssText=ze.style.cssText,_e.onclick=async()=>{if(it.value.trim()){_e.disabled=!0;try{await r.invoke("question_answer",{question_id:T.id,answer:it.value.trim()}),await Ko()}catch(En){G.textContent+=" [errore: "+String(En)+"]",_e.disabled=!1}}},ue.append(it,_e),L.append(G,ue),Mt.append(L)}}catch(x){Mt.textContent=String(x)}},dl=d.database,ir=document.createElement("div");ir.style.cssText="display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:16px;";let Wt=x=>{let T=document.createElement("div");T.style.cssText="background:rgba(127,127,127,0.1);border-radius:8px;padding:10px 14px;";let L=document.createElement("div");L.textContent=x,L.style.cssText="font-size:11px;opacity:0.7;text-transform:uppercase;";let G=document.createElement("div");return G.textContent="\u2026",G.style.cssText="font-size:20px;font-weight:600;",G.dataset.dbstat=x,T.append(L,G),T};ir.append(Wt("Attivi"),Wt("Scaduti"),Wt("Eliminati"),Wt("Merged"),Wt("DB MB"),Wt("Retention"));let Ea=document.createElement("div");Ea.style.cssText="display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center;";let ft=document.createElement("input");ft.type="number",ft.min="1",ft.max="365",ft.setAttribute("aria-label","Retention giorni"),ft.style.cssText="width:80px;padding:8px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:transparent;color:inherit;";let ka=document.createElement("span");ka.textContent="giorni TTL",ka.style.cssText="font-size:13px;opacity:0.7;";let Ht=document.createElement("button");Ht.textContent="Salva TTL",Ht.style.cssText="padding:8px 14px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:rgba(127,127,127,0.15);color:inherit;cursor:pointer;";let Vt=document.createElement("button");Vt.textContent="Pulisci sessioni scadute",Vt.style.cssText=Ht.style.cssText;let Zt=document.createElement("button");Zt.textContent="Purga definitiva",Zt.style.cssText=Ht.style.cssText+"border-color:rgba(200,80,80,0.6);";let Me=document.createElement("span");Me.style.cssText="font-size:12px;opacity:0.8;",Ea.append(ft,ka,Ht,Vt,Zt,Me);let Oa=document.createElement("div");Oa.style.cssText="font-size:11px;opacity:0.5;",dl.append(ir,Ea,Oa);let Jt=(x,T)=>{let L=ir.querySelector('[data-dbstat="'+x+'"]');L&&(L.textContent=String(T))},sr=async()=>{try{let x=await r.invoke("db_stats",{});Jt("Attivi",x.by_status?.active??0),Jt("Scaduti",x.by_status?.expired??0),Jt("Eliminati",x.by_status?.deleted??0),Jt("Merged",x.by_status?.merged??0),Jt("DB MB",((x.db_size_bytes??0)/1048576).toFixed(1)),Jt("Retention",x.retention_days+"g"),ft.value=String(x.retention_days),Oa.textContent="DB: "+x.db_path}catch(x){Me.textContent=String(x)}};Ht.onclick=async()=>{let x=Number(ft.value);if(!x||x<1){Me.textContent="TTL non valido";return}try{let T=await r.invoke("set_retention",{retention_days:x});Me.textContent=T.ok?"TTL salvato: "+x+" giorni":"KO",await sr()}catch(T){Me.textContent=String(T)}},Vt.onclick=async()=>{Vt.disabled=!0,Me.textContent="Pulizia\u2026";try{let x=await r.invoke("db_cleanup",{dry_run:!1});Me.textContent="Scaduti "+x.purged+" atomi sessione ("+x.max_age_days+"g)",await sr(),await mr()}catch(x){Me.textContent=String(x)}finally{Vt.disabled=!1}},Zt.onclick=async()=>{if(confirm("Eliminare DEFINITIVAMENTE gli atomi con stato deleted/expired/merged? Azione irreversibile.")){Zt.disabled=!0,Me.textContent="Purga\u2026";try{let x=await r.invoke("db_purge",{confirm:!0});Me.textContent=x.ok?"Eliminati definitivamente "+x.purged+" atomi":"KO: "+x.reason,await sr(),await mr()}catch(x){Me.textContent=String(x)}finally{Zt.disabled=!1}}};let mr=async()=>{try{let x=await r.invoke("status",{});if(n.signal.aborted)return;ve("Atomi attivi",x.atoms_active),ve("Durevoli",x.durable_atoms),ve("Bond",x.bonds),ve("Isolati",x.isolated),ve("Pending",x.pending),ve("Da compattare",x.missing_compact),at.textContent="\u{1F4A1} "+(x.recommendations||[]).join(" \xB7 ")}catch(x){at.textContent=String(x)}};return p.querySelector("button")?.click(),o.prepend(m,p),t.append(o),mr(),Do(),Ko(),sr(),r.invoke("domains",{}).then(x=>{for(let T of x.domains||[]){let L=document.createElement("option");L.value=T.domain,L.textContent=T.domain+" ("+T.count+")",Ct.append(L)}}).catch(()=>{}),{dispose:()=>o.remove()}}})}};export{jZ as default};
@@ -43,6 +43,7 @@ export default defineControlUiPlugin({
43
43
  mkTab("curator", "Curator");
44
44
  mkTab("backup", "Backup");
45
45
  mkTab("questions", "Domande");
46
+ mkTab("database", "Database");
46
47
  const status = (m) => { const el = document.createElement("div"); el.textContent = m; el.style.opacity = "0.6"; return el; };
47
48
  // ── PANORAMICA ──
48
49
  const ov = pages["overview"];
@@ -275,6 +276,117 @@ export default defineControlUiPlugin({
275
276
  qsList.textContent = String(e);
276
277
  }
277
278
  };
279
+ // __ DATABASE TAB __
280
+ const dbp = pages["database"];
281
+ const dbGrid = document.createElement("div");
282
+ dbGrid.style.cssText = "display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:16px;";
283
+ const dbCard = (label) => {
284
+ const d = document.createElement("div");
285
+ d.style.cssText = "background:rgba(127,127,127,0.1);border-radius:8px;padding:10px 14px;";
286
+ const l = document.createElement("div");
287
+ l.textContent = label;
288
+ l.style.cssText = "font-size:11px;opacity:0.7;text-transform:uppercase;";
289
+ const v = document.createElement("div");
290
+ v.textContent = "…";
291
+ v.style.cssText = "font-size:20px;font-weight:600;";
292
+ v.dataset.dbstat = label;
293
+ d.append(l, v);
294
+ return d;
295
+ };
296
+ dbGrid.append(dbCard("Attivi"), dbCard("Scaduti"), dbCard("Eliminati"), dbCard("Merged"), dbCard("DB MB"), dbCard("Retention"));
297
+ const dbRow = document.createElement("div");
298
+ dbRow.style.cssText = "display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;align-items:center;";
299
+ const ttlInput = document.createElement("input");
300
+ ttlInput.type = "number";
301
+ ttlInput.min = "1";
302
+ ttlInput.max = "365";
303
+ ttlInput.setAttribute("aria-label", "Retention giorni");
304
+ ttlInput.style.cssText = "width:80px;padding:8px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:transparent;color:inherit;";
305
+ const ttlLabel = document.createElement("span");
306
+ ttlLabel.textContent = "giorni TTL";
307
+ ttlLabel.style.cssText = "font-size:13px;opacity:0.7;";
308
+ const ttlBtn = document.createElement("button");
309
+ ttlBtn.textContent = "Salva TTL";
310
+ ttlBtn.style.cssText = "padding:8px 14px;border-radius:6px;border:1px solid rgba(127,127,127,0.4);background:rgba(127,127,127,0.15);color:inherit;cursor:pointer;";
311
+ const cleanBtn = document.createElement("button");
312
+ cleanBtn.textContent = "Pulisci sessioni scadute";
313
+ cleanBtn.style.cssText = ttlBtn.style.cssText;
314
+ const purgeBtn = document.createElement("button");
315
+ purgeBtn.textContent = "Purga definitiva";
316
+ purgeBtn.style.cssText = ttlBtn.style.cssText + "border-color:rgba(200,80,80,0.6);";
317
+ const dbOut = document.createElement("span");
318
+ dbOut.style.cssText = "font-size:12px;opacity:0.8;";
319
+ dbRow.append(ttlInput, ttlLabel, ttlBtn, cleanBtn, purgeBtn, dbOut);
320
+ const dbPath = document.createElement("div");
321
+ dbPath.style.cssText = "font-size:11px;opacity:0.5;";
322
+ dbp.append(dbGrid, dbRow, dbPath);
323
+ const setDbStat = (label, value) => { const el = dbGrid.querySelector('[data-dbstat="' + label + '"]'); if (el)
324
+ el.textContent = String(value); };
325
+ const loadDbStats = async () => {
326
+ try {
327
+ const st = await feature.invoke("db_stats", {});
328
+ setDbStat("Attivi", st.by_status?.active ?? 0);
329
+ setDbStat("Scaduti", st.by_status?.expired ?? 0);
330
+ setDbStat("Eliminati", st.by_status?.deleted ?? 0);
331
+ setDbStat("Merged", st.by_status?.merged ?? 0);
332
+ setDbStat("DB MB", ((st.db_size_bytes ?? 0) / 1048576).toFixed(1));
333
+ setDbStat("Retention", st.retention_days + "g");
334
+ ttlInput.value = String(st.retention_days);
335
+ dbPath.textContent = "DB: " + st.db_path;
336
+ }
337
+ catch (e) {
338
+ dbOut.textContent = String(e);
339
+ }
340
+ };
341
+ ttlBtn.onclick = async () => {
342
+ const days = Number(ttlInput.value);
343
+ if (!days || days < 1) {
344
+ dbOut.textContent = "TTL non valido";
345
+ return;
346
+ }
347
+ try {
348
+ const r = await feature.invoke("set_retention", { retention_days: days });
349
+ dbOut.textContent = r.ok ? "TTL salvato: " + days + " giorni" : "KO";
350
+ await loadDbStats();
351
+ }
352
+ catch (e) {
353
+ dbOut.textContent = String(e);
354
+ }
355
+ };
356
+ cleanBtn.onclick = async () => {
357
+ cleanBtn.disabled = true;
358
+ dbOut.textContent = "Pulizia…";
359
+ try {
360
+ const r = await feature.invoke("db_cleanup", { dry_run: false });
361
+ dbOut.textContent = "Scaduti " + r.purged + " atomi sessione (" + r.max_age_days + "g)";
362
+ await loadDbStats();
363
+ await refreshOverview();
364
+ }
365
+ catch (e) {
366
+ dbOut.textContent = String(e);
367
+ }
368
+ finally {
369
+ cleanBtn.disabled = false;
370
+ }
371
+ };
372
+ purgeBtn.onclick = async () => {
373
+ if (!confirm("Eliminare DEFINITIVAMENTE gli atomi con stato deleted/expired/merged? Azione irreversibile."))
374
+ return;
375
+ purgeBtn.disabled = true;
376
+ dbOut.textContent = "Purga…";
377
+ try {
378
+ const r = await feature.invoke("db_purge", { confirm: true });
379
+ dbOut.textContent = r.ok ? "Eliminati definitivamente " + r.purged + " atomi" : "KO: " + r.reason;
380
+ await loadDbStats();
381
+ await refreshOverview();
382
+ }
383
+ catch (e) {
384
+ dbOut.textContent = String(e);
385
+ }
386
+ finally {
387
+ purgeBtn.disabled = false;
388
+ }
389
+ };
278
390
  const refreshOverview = async () => {
279
391
  try {
280
392
  const st = await feature.invoke("status", {});
@@ -299,6 +411,7 @@ export default defineControlUiPlugin({
299
411
  refreshOverview();
300
412
  loadBackups();
301
413
  loadQuestions();
414
+ loadDbStats();
302
415
  // domini nel filtro
303
416
  feature.invoke("domains", {}).then((r) => {
304
417
  for (const d of r.domains || []) {
package/dist/entry.js CHANGED
@@ -45,6 +45,9 @@ export default definePluginEntry({
45
45
  const dbPath = process.env.MEMORY_DB_PATH ?? "/data/memory.db";
46
46
  const me = createTools(dbPath);
47
47
  const curator = new Curator(me.__db, me.__engine, (api.config ?? {}).curator ?? {});
48
+ const ingestCfg = ((api.config ?? {}).ingest ?? {});
49
+ const ingestEnabled = ingestCfg.enabled !== false;
50
+ const retentionDays = Number(ingestCfg.retention_days ?? 7);
48
51
  const logger = api.logger ?? console;
49
52
  // ── Tools ─────────────────────────────────────────────
50
53
  const defs = [
@@ -89,6 +92,8 @@ export default definePluginEntry({
89
92
  const flushedCount = new Map(); // sid -> numero msg già scritti
90
93
  api.on("message_received", (event) => {
91
94
  try {
95
+ if (!ingestEnabled)
96
+ return;
92
97
  const sid = String(event?.sessionId ?? event?.sessionKey ?? "").replace(/[^a-zA-Z0-9_-]/g, "").slice(0, 48) || "unknown";
93
98
  const content = String(event?.body ?? event?.text ?? event?.content ?? "").slice(0, 2000);
94
99
  if (!content)
@@ -101,6 +106,8 @@ export default definePluginEntry({
101
106
  });
102
107
  api.on("agent_end", (event) => {
103
108
  try {
109
+ if (!ingestEnabled)
110
+ return;
104
111
  const sid = String(event?.sessionId ?? event?.sessionKey ?? "").replace(/[^a-zA-Z0-9_-]/g, "").slice(0, 48) || "unknown";
105
112
  const text = String(event?.reply ?? event?.finalMessage ?? event?.text ?? "").slice(0, 1000);
106
113
  if (!text)
@@ -112,6 +119,14 @@ export default definePluginEntry({
112
119
  catch { /* observe only */ }
113
120
  });
114
121
  function flushSession(sid, sidRaw) {
122
+ let retention = retentionDays;
123
+ try {
124
+ me.__db.prepare("CREATE TABLE IF NOT EXISTS plugin_settings (key TEXT PRIMARY KEY, value TEXT)").run();
125
+ const row = me.__db.prepare("SELECT value FROM plugin_settings WHERE key='retention_days'").get();
126
+ if (row && Number(row.value) > 0)
127
+ retention = Number(row.value);
128
+ }
129
+ catch { /* fallback config */ }
115
130
  const db = me.__db;
116
131
  const now = Math.floor(Date.now() / 1000);
117
132
  const msgs = buffer.get(sid) ?? [];
@@ -123,12 +138,12 @@ export default definePluginEntry({
123
138
  for (const m of fresh) {
124
139
  const hash = createHash("md5").update(sid + "|" + m.role + "|" + m.content).digest("hex").slice(0, 12);
125
140
  const atomId = "smsg_" + hash;
126
- db.prepare("INSERT OR IGNORE INTO atoms (id, type, memory_tier, domain, title, body, confidence, status, source, weight, tags, meta, created_at, updated_at, accessed_at, ttl) VALUES (?,?,?,?,?,?,?,'active','ai',1.0,'[]','{}',?,?,?,?)").run(atomId, "session_msg", "episodic", "session/" + sid, "[" + m.role + "] " + m.content.slice(0, 60), JSON.stringify({ role: m.role, content: m.content, timestamp: m.ts }), 0.7, now, now, now, now + 7 * 86400);
141
+ db.prepare("INSERT OR IGNORE INTO atoms (id, type, memory_tier, domain, title, body, confidence, status, source, weight, tags, meta, created_at, updated_at, accessed_at, ttl) VALUES (?,?,?,?,?,?,?,'active','ai',1.0,'[]','{}',?,?,?,?)").run(atomId, "session_msg", "episodic", "session/" + sid, "[" + m.role + "] " + m.content.slice(0, 60), JSON.stringify({ role: m.role, content: m.content, timestamp: m.ts }), 0.7, now, now, now, now + retention * 86400);
127
142
  }
128
143
  // digest from ingested atoms (uses session_msg domain rows)
129
144
  const draft = buildSessionDigest(db, sid, { ocSessionId: sidRaw });
130
145
  if (draft) {
131
- db.prepare("INSERT OR REPLACE INTO atoms (id, type, memory_tier, domain, title, body, confidence, status, source, weight, tags, meta, created_at, updated_at, accessed_at, ttl) VALUES (?,?,?,?,?,?,0.7,'active','ai',1.0,'[]','{}',?,?,?,?)").run(draft.id, "session_digest", "episodic", "session/" + sid, draft.title, draft.body, now, now, now, now + 7 * 86400);
146
+ db.prepare("INSERT OR REPLACE INTO atoms (id, type, memory_tier, domain, title, body, confidence, status, source, weight, tags, meta, created_at, updated_at, accessed_at, ttl) VALUES (?,?,?,?,?,?,0.7,'active','ai',1.0,'[]','{}',?,?,?,?)").run(draft.id, "session_digest", "episodic", "session/" + sid, draft.title, draft.body, now, now, now, now + retention * 86400);
132
147
  }
133
148
  flushedCount.set(sid, msgs.length);
134
149
  logger.info?.("[memory-engine] periodic flush session " + sid + " (" + fresh.length + " new msgs, digest " + (draft ? "ok" : "skip") + ")");
@@ -136,6 +151,11 @@ export default definePluginEntry({
136
151
  const FLUSH_MS = 60_000;
137
152
  const timer = setInterval(() => {
138
153
  try {
154
+ // automatic cleanup: expire session atoms whose TTL has passed
155
+ try {
156
+ me.__db.prepare("UPDATE atoms SET status='expired', updated_at=unixepoch() WHERE type IN ('session_msg','session_digest') AND status='active' AND ttl IS NOT NULL AND ttl <= unixepoch()").run();
157
+ }
158
+ catch { }
139
159
  for (const [sid, arr] of buffer) {
140
160
  if (arr.length > (flushedCount.get(sid) ?? 0))
141
161
  flushSession(sid, sid);
@@ -146,6 +166,6 @@ export default definePluginEntry({
146
166
  }
147
167
  }, FLUSH_MS);
148
168
  timer.unref?.();
149
- logger.info?.("[memory-engine] v" + VERSION + " registered: " + defs.length + " tools + periodic ingest/digest (" + (FLUSH_MS / 1000) + "s)");
169
+ logger.info?.("[memory-engine] v" + VERSION + " registered: " + defs.length + " tools + ingest " + (ingestEnabled ? "on (retention " + retentionDays + "d)" : "OFF") + " (" + (FLUSH_MS / 1000) + "s)");
150
170
  },
151
171
  });
package/dist/tools.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * Python server and are exposed as explicit pointers.
5
5
  */
6
6
  import { DatabaseSync } from "node:sqlite";
7
- export declare const VERSION = "4.1.0";
7
+ export declare const VERSION = "4.2.0";
8
8
  export declare function createTools(dbPath: string): {
9
9
  __db: DatabaseSync;
10
10
  version: () => {
package/dist/tools.js CHANGED
@@ -6,7 +6,7 @@
6
6
  import { DatabaseSync } from "node:sqlite";
7
7
  import { Engine } from "./engine.js";
8
8
  import { buildSessionDigest } from "./digest.js";
9
- export const VERSION = "4.1.0";
9
+ export const VERSION = "4.2.0";
10
10
  export function createTools(dbPath) {
11
11
  const db = new DatabaseSync(dbPath);
12
12
  const engine = new Engine(db, {});
@@ -6,16 +6,7 @@ export declare const contract: {
6
6
  readonly kind: "query";
7
7
  readonly description: "Cognitive health metrics for the memory graph.";
8
8
  readonly input: Type.TObject<{}>;
9
- readonly output: Type.TObject<{
10
- atoms_active: Type.TInteger;
11
- durable_atoms: Type.TInteger;
12
- bonds: Type.TInteger;
13
- isolated: Type.TInteger;
14
- pending: Type.TInteger;
15
- missing_compact: Type.TInteger;
16
- by_type: Type.TRecord<"^.*$", Type.TInteger>;
17
- recommendations: Type.TArray<Type.TString>;
18
- }>;
9
+ readonly output: Type.TObject<{}>;
19
10
  };
20
11
  readonly search: {
21
12
  readonly kind: "query";
@@ -26,14 +17,7 @@ export declare const contract: {
26
17
  type: Type.TOptional<Type.TString>;
27
18
  domain: Type.TOptional<Type.TString>;
28
19
  }>;
29
- readonly output: Type.TObject<{
30
- results: Type.TArray<Type.TObject<{
31
- id: Type.TString;
32
- title: Type.TString;
33
- domain: Type.TOptional<Type.TString>;
34
- type: Type.TOptional<Type.TString>;
35
- }>>;
36
- }>;
20
+ readonly output: Type.TObject<{}>;
37
21
  };
38
22
  readonly atom: {
39
23
  readonly kind: "query";
@@ -47,12 +31,7 @@ export declare const contract: {
47
31
  readonly kind: "query";
48
32
  readonly description: "List distinct domains with atom counts.";
49
33
  readonly input: Type.TObject<{}>;
50
- readonly output: Type.TObject<{
51
- domains: Type.TArray<Type.TObject<{
52
- domain: Type.TString;
53
- count: Type.TInteger;
54
- }>>;
55
- }>;
34
+ readonly output: Type.TObject<{}>;
56
35
  };
57
36
  readonly curator_dry: {
58
37
  readonly kind: "action";
@@ -74,13 +53,7 @@ export declare const contract: {
74
53
  readonly kind: "query";
75
54
  readonly description: "List available backups.";
76
55
  readonly input: Type.TObject<{}>;
77
- readonly output: Type.TObject<{
78
- backups: Type.TArray<Type.TObject<{
79
- file: Type.TString;
80
- size_bytes: Type.TInteger;
81
- created: Type.TString;
82
- }>>;
83
- }>;
56
+ readonly output: Type.TObject<{}>;
84
57
  };
85
58
  readonly backup_now: {
86
59
  readonly kind: "action";
@@ -94,18 +67,11 @@ export declare const contract: {
94
67
  readonly input: Type.TObject<{
95
68
  limit: Type.TOptional<Type.TInteger>;
96
69
  }>;
97
- readonly output: Type.TObject<{
98
- questions: Type.TArray<Type.TObject<{
99
- id: Type.TString;
100
- question: Type.TString;
101
- question_type: Type.TOptional<Type.TString>;
102
- status: Type.TString;
103
- }>>;
104
- }>;
70
+ readonly output: Type.TObject<{}>;
105
71
  };
106
72
  readonly question_answer: {
107
73
  readonly kind: "action";
108
- readonly description: "Answer a pending question (resolve, optionally archive atom).";
74
+ readonly description: "Answer a pending question.";
109
75
  readonly input: Type.TObject<{
110
76
  question_id: Type.TString;
111
77
  answer: Type.TString;
@@ -115,7 +81,7 @@ export declare const contract: {
115
81
  };
116
82
  readonly atom_soft_delete: {
117
83
  readonly kind: "action";
118
- readonly description: "Soft-delete an atom (status='deleted', reversible).";
84
+ readonly description: "Soft-delete an atom.";
119
85
  readonly input: Type.TObject<{
120
86
  id: Type.TString;
121
87
  }>;
@@ -130,6 +96,37 @@ export declare const contract: {
130
96
  }>;
131
97
  readonly output: Type.TObject<{}>;
132
98
  };
99
+ readonly db_stats: {
100
+ readonly kind: "query";
101
+ readonly description: "Database management stats: counts by status, db file size, retention setting.";
102
+ readonly input: Type.TObject<{}>;
103
+ readonly output: Type.TObject<{}>;
104
+ };
105
+ readonly set_retention: {
106
+ readonly kind: "action";
107
+ readonly description: "Set session retention days (TTL). Takes effect on new ingested atoms and cleanup.";
108
+ readonly input: Type.TObject<{
109
+ retention_days: Type.TInteger;
110
+ }>;
111
+ readonly output: Type.TObject<{}>;
112
+ };
113
+ readonly db_cleanup: {
114
+ readonly kind: "action";
115
+ readonly description: "Expire session atoms older than max_age_days (or retention default). dry_run optional.";
116
+ readonly input: Type.TObject<{
117
+ max_age_days: Type.TOptional<Type.TInteger>;
118
+ dry_run: Type.TOptional<Type.TBoolean>;
119
+ }>;
120
+ readonly output: Type.TObject<{}>;
121
+ };
122
+ readonly db_purge: {
123
+ readonly kind: "action";
124
+ readonly description: "Hard-delete atoms with status deleted/expired/merged. Requires confirm=true.";
125
+ readonly input: Type.TObject<{
126
+ confirm: Type.TOptional<Type.TBoolean>;
127
+ }>;
128
+ readonly output: Type.TObject<{}>;
129
+ };
133
130
  };
134
131
  readonly events: {};
135
132
  };
@@ -4,77 +4,85 @@ export const contract = defineFeatureContract({
4
4
  pluginId: "memory-engine",
5
5
  operations: {
6
6
  status: {
7
- kind: "query",
8
- description: "Cognitive health metrics for the memory graph.",
7
+ kind: "query", description: "Cognitive health metrics for the memory graph.",
9
8
  input: Type.Object({}, { additionalProperties: false }),
10
- output: Type.Object({ atoms_active: Type.Integer(), durable_atoms: Type.Integer(), bonds: Type.Integer(), isolated: Type.Integer(), pending: Type.Integer(), missing_compact: Type.Integer(), by_type: Type.Record(Type.String(), Type.Integer()), recommendations: Type.Array(Type.String()) }, { additionalProperties: true }),
9
+ output: Type.Object({}, { additionalProperties: true }),
11
10
  },
12
11
  search: {
13
- kind: "query",
14
- description: "FTS search over memory atoms with optional type/domain filters.",
12
+ kind: "query", description: "FTS search over memory atoms with optional type/domain filters.",
15
13
  input: Type.Object({ query: Type.String({ maxLength: 500, minLength: 1 }), limit: Type.Optional(Type.Integer({ maximum: 100 })), type: Type.Optional(Type.String({ maxLength: 40 })), domain: Type.Optional(Type.String({ maxLength: 200 })) }, { additionalProperties: false }),
16
- output: Type.Object({ results: Type.Array(Type.Object({ id: Type.String(), title: Type.String(), domain: Type.Optional(Type.String()), type: Type.Optional(Type.String()) })) }, { additionalProperties: true }),
14
+ output: Type.Object({}, { additionalProperties: true }),
17
15
  },
18
16
  atom: {
19
- kind: "query",
20
- description: "Full atom detail with bonds.",
17
+ kind: "query", description: "Full atom detail with bonds.",
21
18
  input: Type.Object({ id: Type.String({ maxLength: 200 }) }, { additionalProperties: false }),
22
19
  output: Type.Object({}, { additionalProperties: true }),
23
20
  },
24
21
  domains: {
25
- kind: "query",
26
- description: "List distinct domains with atom counts.",
22
+ kind: "query", description: "List distinct domains with atom counts.",
27
23
  input: Type.Object({}, { additionalProperties: false }),
28
- output: Type.Object({ domains: Type.Array(Type.Object({ domain: Type.String(), count: Type.Integer() })) }, { additionalProperties: true }),
24
+ output: Type.Object({}, { additionalProperties: true }),
29
25
  },
30
26
  curator_dry: {
31
- kind: "action",
32
- description: "Run curator in dry-run mode.",
27
+ kind: "action", description: "Run curator in dry-run mode.",
33
28
  input: Type.Object({ max_atoms: Type.Optional(Type.Integer({ maximum: 200 })) }, { additionalProperties: false }),
34
29
  output: Type.Object({}, { additionalProperties: true }),
35
30
  },
36
31
  curator_apply: {
37
- kind: "action",
38
- description: "Run curator with auto_apply (safe actions only).",
32
+ kind: "action", description: "Run curator with auto_apply (safe actions only).",
39
33
  input: Type.Object({ max_atoms: Type.Optional(Type.Integer({ maximum: 200 })) }, { additionalProperties: false }),
40
34
  output: Type.Object({}, { additionalProperties: true }),
41
35
  },
42
36
  backups_list: {
43
- kind: "query",
44
- description: "List available backups.",
37
+ kind: "query", description: "List available backups.",
45
38
  input: Type.Object({}, { additionalProperties: false }),
46
- output: Type.Object({ backups: Type.Array(Type.Object({ file: Type.String(), size_bytes: Type.Integer(), created: Type.String() })) }, { additionalProperties: true }),
39
+ output: Type.Object({}, { additionalProperties: true }),
47
40
  },
48
41
  backup_now: {
49
- kind: "action",
50
- description: "Create a database backup now.",
42
+ kind: "action", description: "Create a database backup now.",
51
43
  input: Type.Object({}, { additionalProperties: false }),
52
44
  output: Type.Object({}, { additionalProperties: true }),
53
45
  },
54
46
  questions_list: {
55
- kind: "query",
56
- description: "List pending human questions.",
47
+ kind: "query", description: "List pending human questions.",
57
48
  input: Type.Object({ limit: Type.Optional(Type.Integer({ maximum: 50 })) }, { additionalProperties: false }),
58
- output: Type.Object({ questions: Type.Array(Type.Object({ id: Type.String(), question: Type.String(), question_type: Type.Optional(Type.String()), status: Type.String() })) }, { additionalProperties: true }),
49
+ output: Type.Object({}, { additionalProperties: true }),
59
50
  },
60
51
  question_answer: {
61
- kind: "action",
62
- description: "Answer a pending question (resolve, optionally archive atom).",
52
+ kind: "action", description: "Answer a pending question.",
63
53
  input: Type.Object({ question_id: Type.String({ maxLength: 200 }), answer: Type.String({ maxLength: 2000 }), action: Type.Optional(Type.String({ maxLength: 40 })) }, { additionalProperties: false }),
64
54
  output: Type.Object({}, { additionalProperties: true }),
65
55
  },
66
56
  atom_soft_delete: {
67
- kind: "action",
68
- description: "Soft-delete an atom (status='deleted', reversible).",
57
+ kind: "action", description: "Soft-delete an atom.",
69
58
  input: Type.Object({ id: Type.String({ maxLength: 200 }) }, { additionalProperties: false }),
70
59
  output: Type.Object({}, { additionalProperties: true }),
71
60
  },
72
61
  atom_update_domain: {
73
- kind: "action",
74
- description: "Move an atom to a different domain.",
62
+ kind: "action", description: "Move an atom to a different domain.",
75
63
  input: Type.Object({ id: Type.String({ maxLength: 200 }), new_domain: Type.String({ maxLength: 200 }) }, { additionalProperties: false }),
76
64
  output: Type.Object({}, { additionalProperties: true }),
77
65
  },
66
+ db_stats: {
67
+ kind: "query", description: "Database management stats: counts by status, db file size, retention setting.",
68
+ input: Type.Object({}, { additionalProperties: false }),
69
+ output: Type.Object({}, { additionalProperties: true }),
70
+ },
71
+ set_retention: {
72
+ kind: "action", description: "Set session retention days (TTL). Takes effect on new ingested atoms and cleanup.",
73
+ input: Type.Object({ retention_days: Type.Integer({ minimum: 1, maximum: 365 }) }, { additionalProperties: false }),
74
+ output: Type.Object({}, { additionalProperties: true }),
75
+ },
76
+ db_cleanup: {
77
+ kind: "action", description: "Expire session atoms older than max_age_days (or retention default). dry_run optional.",
78
+ input: Type.Object({ max_age_days: Type.Optional(Type.Integer({ minimum: 1, maximum: 3650 })), dry_run: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),
79
+ output: Type.Object({}, { additionalProperties: true }),
80
+ },
81
+ db_purge: {
82
+ kind: "action", description: "Hard-delete atoms with status deleted/expired/merged. Requires confirm=true.",
83
+ input: Type.Object({ confirm: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),
84
+ output: Type.Object({}, { additionalProperties: true }),
85
+ },
78
86
  },
79
87
  events: {},
80
88
  });
@@ -76,4 +76,30 @@ export declare function createFeatureHandlers(): {
76
76
  atom_update_domain: ({ id, new_domain }: any) => {
77
77
  ok: boolean;
78
78
  };
79
+ db_stats: () => {
80
+ by_status: any;
81
+ db_path: string;
82
+ db_size_bytes: number;
83
+ retention_days: any;
84
+ ingest_enabled: boolean;
85
+ };
86
+ set_retention: ({ retention_days }: any) => {
87
+ ok: boolean;
88
+ retention_days: number;
89
+ note: string;
90
+ };
91
+ db_cleanup: ({ max_age_days, dry_run }: any) => {
92
+ purged: number;
93
+ max_age_days: any;
94
+ dry_run: boolean;
95
+ };
96
+ db_purge: ({ confirm }: any) => {
97
+ ok: boolean;
98
+ reason: string;
99
+ purged?: undefined;
100
+ } | {
101
+ reason?: undefined;
102
+ ok: boolean;
103
+ purged: number;
104
+ };
79
105
  };
@@ -11,6 +11,18 @@ export function createFeatureHandlers() {
11
11
  const q = (sql, ...p) => db.prepare(sql).all(...p);
12
12
  const q1 = (sql, ...p) => db.prepare(sql).get(...p);
13
13
  const x = (sql, ...p) => db.prepare(sql).run(...p);
14
+ function getSettings() {
15
+ try {
16
+ db.prepare("CREATE TABLE IF NOT EXISTS plugin_settings (key TEXT PRIMARY KEY, value TEXT)").run();
17
+ const rows = {};
18
+ for (const r of q("SELECT key, value FROM plugin_settings"))
19
+ rows[r.key] = r.value;
20
+ return rows;
21
+ }
22
+ catch {
23
+ return {};
24
+ }
25
+ }
14
26
  const curatorReport = (report) => ({
15
27
  compact: report.actions.filter((a) => a.kind === "compact").length,
16
28
  bonds_suggested: report.actions.find((a) => a.kind === "bond_pass")?.suggestions ?? 0,
@@ -106,5 +118,44 @@ export function createFeatureHandlers() {
106
118
  const r = x("UPDATE atoms SET domain=?, updated_at=unixepoch() WHERE id=?", new_domain, id);
107
119
  return { ok: r.changes > 0 };
108
120
  },
121
+ db_stats: () => {
122
+ const settings = getSettings();
123
+ const byStatus = {};
124
+ for (const r of q("SELECT status k, COUNT(*) n FROM atoms GROUP BY status"))
125
+ byStatus[r.k] = r.n;
126
+ let size = 0;
127
+ try {
128
+ size = fs.statSync(dbPath).size;
129
+ }
130
+ catch { }
131
+ return { by_status: byStatus, db_path: dbPath, db_size_bytes: size, retention_days: settings.retention_days ?? 7, ingest_enabled: settings.ingest_enabled !== false };
132
+ },
133
+ set_retention: ({ retention_days }) => {
134
+ db.prepare("CREATE TABLE IF NOT EXISTS plugin_settings (key TEXT PRIMARY KEY, value TEXT)").run();
135
+ db.prepare("INSERT OR REPLACE INTO plugin_settings (key, value) VALUES ('retention_days', ?)").run(String(Number(retention_days)));
136
+ return { ok: true, retention_days: Number(retention_days), note: 'Applicato a nuovi atomi e alle pulizie automatiche.' };
137
+ },
138
+ db_cleanup: ({ max_age_days, dry_run }) => {
139
+ const settings = getSettings();
140
+ const maxAge = max_age_days ?? settings.retention_days ?? 7;
141
+ const expired = q("SELECT id FROM atoms WHERE type IN ('session_msg','session_digest') AND status='active' AND unixepoch() - created_at > ?", maxAge * 86400);
142
+ if (!dry_run) {
143
+ for (const r of expired)
144
+ x("UPDATE atoms SET status='expired', updated_at=unixepoch() WHERE id=?", r.id);
145
+ }
146
+ return { purged: expired.length, max_age_days: maxAge, dry_run: !!dry_run };
147
+ },
148
+ db_purge: ({ confirm }) => {
149
+ if (!confirm)
150
+ return { ok: false, reason: 'confirm=true richiesto per eliminare definitivamente' };
151
+ const victims = q("SELECT id FROM atoms WHERE status IN ('deleted','expired','merged')");
152
+ for (const r of victims) {
153
+ x("DELETE FROM bonds WHERE from_id=? OR to_id=?", r.id, r.id);
154
+ x("DELETE FROM atom_versions WHERE atom_id=?", r.id);
155
+ x("DELETE FROM atom_embeddings WHERE atom_id=?", r.id);
156
+ x("DELETE FROM atoms WHERE id=?", r.id);
157
+ }
158
+ return { ok: true, purged: victims.length };
159
+ },
109
160
  };
110
161
  }
@@ -2,17 +2,35 @@
2
2
  "id": "memory-engine",
3
3
  "name": "Memory Engine",
4
4
  "description": "Native Memory Engine: 45 memory tools, session ingest/digest, curator and Control UI.",
5
- "version": "4.1.0",
5
+ "version": "4.2.0",
6
6
  "configSchema": {
7
7
  "type": "object",
8
- "additionalProperties": false,
9
- "properties": {}
8
+ "properties": {
9
+ "ingest": {
10
+ "type": "object",
11
+ "description": "Session ingest (chat memory capture) controls.",
12
+ "properties": {
13
+ "enabled": {
14
+ "type": "boolean",
15
+ "default": true,
16
+ "description": "Capture OpenClaw chat contents into the memory database. Set false to opt out completely."
17
+ },
18
+ "retention_days": {
19
+ "type": "number",
20
+ "default": 7,
21
+ "description": "Days before session_msg/session_digest atoms expire automatically."
22
+ }
23
+ },
24
+ "additionalProperties": false
25
+ }
26
+ },
27
+ "additionalProperties": false
10
28
  },
11
29
  "activation": {
12
30
  "onStartup": true
13
31
  },
14
32
  "controlUi": {
15
- "entry": "dist/control-ui/14e2bd207bb33b0189bdfc2712c6eee0f901d10bca0f92cb7773a4bd0f93e10b/index.js"
33
+ "entry": "dist/control-ui/557078f7f8e088dbae4fa8aa0070d8e4656b1faa9b6be463e4199f668ffd1cce/index.js"
16
34
  },
17
35
  "contracts": {
18
36
  "tools": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-plugin-memory-engine",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "tsc -p tsconfig.json && openclaw plugins build",